使用AWS SDK for Go获取EC2实例类型的MemoryInfo.SizeInMiB
解决AWS SDK for Go提取EC2实例内存信息的问题
不需要自己定义冗长结构体,直接用AWS SDK返回的结构化对象就能拿到MemoryInfo.SizeInMiB,完全没必要绕JSON序列化这一步——SDK的结构体里有不少未导出字段和自定义类型,转JSON反而会引发错误。
直接遍历返回结果里的InstanceTypes切片,逐个访问字段即可,示例代码如下:
// 假设你已经获取到resp *ec2.DescribeInstanceTypesOutput for _, instanceType := range resp.InstanceTypes { if instanceType.MemoryInfo != nil && instanceType.MemoryInfo.SizeInMiB != nil { memorySize := *instanceType.MemoryInfo.SizeInMiB // 这里即可使用内存大小值,比如打印或存储 println(instanceType.InstanceType, "内存大小:", memorySize, "MiB") } }
需要注意的是,SDK返回的结构体字段多为指针类型(比如SizeInMiB是*int64),所以要先做非空判断,避免空指针panic后再解引用取值。
如果之前尝试JSON序列化失败,大概率是因为SDK结构体包含标准JSON包无法处理的类型(比如自定义时间类型、未导出字段),完全没必要走这条路,直接使用SDK提供的结构化访问方式才是正确的做法。
内容的提问来源于stack exchange,提问作者marcus
相关产品推荐
相关产品推荐

