Maison > développement back-end > Golang > le corps du texte

AWS Golang SDK v2 - Comment ajouter des fonctions aux scripts Go AWS

王林
Libérer: 2024-02-09 09:27:08
avant
964 Les gens l'ont consulté

AWS Golang SDK v2 - 如何向 Go AWS 脚本添加函数

éditeur php Apple vous présente une introduction à AWS Golang SDK v2. Si vous écrivez des scripts AWS dans Go, vous souhaiterez peut-être ajouter des fonctions personnalisées à votre script pour améliorer ses fonctionnalités. Cet article vous montrera comment utiliser AWS Golang SDK v2 pour ajouter des fonctions aux scripts Go AWS afin de rendre vos scripts plus puissants et flexibles. Que vous soyez débutant ou développeur expérimenté, vous obtiendrez des conseils et des conseils utiles dans cet article. Explorons ensemble !

Contenu de la question

Essayez de diviser chaque partie du script en fonctions afin de pouvoir utiliser la sortie plus tard. Lorsque j'essaie de transmettre une instance à la fonction printvolumesinfo, je n'arrive pas à faire fonctionner cette partie.

[]instanceblockdevicemapping fait partie de la structure de l'instance, mais je ne sais pas quoi utiliser comme entrée dans la fonction.

`

package main

import (
    "context"
    "fmt"

    "github.com/aws/aws-sdk-go-v2/config"
    "github.com/aws/aws-sdk-go-v2/service/ec2"
)

var client *ec2.Client


func init() {
    cfg, err := config.LoadDefaultConfig(context.TODO())
    if err != nil {
        panic("configuration error, " + err.Error())
    }
    client = ec2.NewFromConfig(cfg)

}

func printVolumesInfo(volumes []ec2.InstanceBlockDeviceMapping) {
    for _, b := range volumes {
        fmt.Println("   " + *b.DeviceName)
        fmt.Println("   " + *b.Ebs.VolumeId)
    }
}

func main() {
    parms := &ec2.DescribeInstancesInput{}
    result, err := client.DescribeInstances(context.TODO(), parms)

    if err != nil {
        fmt.Println("Error calling ec2: ", err)
        return
    }

    for _, r := range result.Reservations {
        fmt.Println("Reservation ID: " + *r.ReservationId)
        fmt.Println("Instance IDs:")
        for _, i := range r.Instances {
            fmt.Println("   " + *i.InstanceId)
            printVolumesInfo(i.InstanceBlockDeviceMapping)
        }
    }
}
Copier après la connexion

`

Erreur reçue : ./main.go:74:37 : non défini : ec2.instanceblockdevicemapping

Essayez d'utiliser différents paramètres, notamment []instanceblockdevicemapping et blockdevicemapping. De plus, ec2 et client sont utilisés comme valeurs.

Solution

Consultez la documentation :https://www.php.cn/link/421b0ea70ab7fd681ae63a8f12695199

Ce champ est appelé BlockDeviceMappings。并且类型 InstanceBlockDeviceMapping 位于包 github.com/aws/aws-sdk-go-v2/service/ec2/types 中,而不是位于 ec2 dans le package.

  1. Ajoutez github.com/aws/aws-sdk-go-v2/service/ec2/types` à vos importations
  2. Fonction de conversion printVolumes 的参数类型更改为 volumes []ec2.InstanceBlockDeviceMapping
  3. Appelez cette fonction comme printVolumesInfo(i.BlockDeviceMappings)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!