Rumah  >  Artikel  >  pembangunan bahagian belakang  >  AWS Golang SDK v2 - Cara menambah fungsi pada skrip Go AWS

AWS Golang SDK v2 - Cara menambah fungsi pada skrip Go AWS

王林
王林ke hadapan
2024-02-09 09:27:08964semak imbas

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

editor php Apple membawakan anda pengenalan kepada AWS Golang SDK v2. Jika anda menulis skrip AWS dalam Go, anda mungkin mahu menambah beberapa fungsi tersuai pada skrip anda untuk meningkatkan fungsinya. Artikel ini akan menunjukkan kepada anda cara menggunakan AWS Golang SDK v2 untuk menambahkan fungsi pada skrip Go AWS untuk menjadikan skrip anda lebih berkuasa dan fleksibel. Sama ada anda seorang pemula atau pembangun berpengalaman, anda akan mendapat petua dan panduan berguna daripada artikel ini. Mari kita meneroka bersama-sama!

Kandungan soalan

Cuba bahagikan setiap bahagian skrip kepada fungsi supaya anda boleh menggunakan output kemudian. Apabila cuba menghantar contoh kepada fungsi printvolumesinfo, saya tidak boleh mendapatkan bahagian itu untuk berfungsi.

[]instanceblockdevicemapping ialah sebahagian daripada struktur tika, tetapi saya tidak pasti apa yang hendak digunakan sebagai input kepada fungsi tersebut.

`

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

`

Ralat yang diterima: ./main.go:74:37: undefined: ec2.instanceblockdevicemapping

Cuba gunakan parameter berbeza termasuk []instanceblockdevicemapping dan blockdevicemapping. Selain itu, ec2 dan klien digunakan sebagai nilai.

Penyelesaian

Semak dokumentasi:https://www.php.cn/link/421b0ea70ab7fd681ae63a8f12695199

Medan ini dipanggil BlockDeviceMappings。并且类型 InstanceBlockDeviceMapping 位于包 github.com/aws/aws-sdk-go-v2/service/ec2/types 中,而不是位于 ec2 dalam pakej.

  1. Tambah github.com/aws/aws-sdk-go-v2/service/ec2/types` pada import anda
  2. Tukar fungsi printVolumes 的参数类型更改为 volumes []ec2.InstanceBlockDeviceMapping
  3. Panggil fungsi ini sebagai printVolumesInfo(i.BlockDeviceMappings)

Atas ialah kandungan terperinci AWS Golang SDK v2 - Cara menambah fungsi pada skrip Go AWS. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam