Maison  >  Article  >  développement back-end  >  AWS Golang SDK v2 - Comment ajouter des fonctions aux scripts Go AWS

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

王林
王林avant
2024-02-09 09:27:08964parcourir

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)
        }
    }
}

`

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer