php小編蘋果為您帶來了關於AWS Golang SDK v2的介紹。如果您正在使用Go語言編寫AWS腳本,您可能想要在腳本中添加一些自訂的函數以增強其功能。本文將向您展示如何使用AWS Golang SDK v2為Go AWS腳本中新增函數,讓您的腳本更強大、更有彈性。無論您是初學者還是有經驗的開發人員,都能從本文中獲得有用的技巧和指導。讓我們一起來探索吧!
嘗試將腳本的每個部分分成函數,以便稍後使用輸出。 嘗試將實例傳遞給 printvolumesinfo 函數時,無法使該部分運作。
[]instanceblockdevicemapping 是 instance 結構的一部分,但我不確定使用什麼作為函數的輸入。
`
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) } } }
`
收到錯誤: ./main.go:74:37:未定義:ec2.instanceblockdevicemapping
##嘗試使用不同的參數,包括[]instanceblockdevicemapping和blockdevicemapping。此外,也使用了 ec2 和客戶端作為值。
檢查文件:https://www.php.cn/link/421b0ea70ab7fd681ae63a8f12695199
#該欄位稱為 BlockDeviceMappings
。並且類型InstanceBlockDeviceMapping
位於套件github.com/aws/aws-sdk-go-v2/service/ec2/types
中,而不是位於ec2
套件中。
printVolumes
的參數類型改為 volumes []ec2.InstanceBlockDeviceMapping
printVolumesInfo(i.BlockDeviceMappings)
以上是AWS Golang SDK v2 - 如何為 Go AWS 腳本新增函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!