aws-sdk-go - DescribeSnapshots 不支持配置中的区域过滤器
问题描述
即使在明确配置区域之后,SDK 报告的快照似乎也比 AWS 控制台中可见的要多。似乎它返回了该帐户所有区域的快照数据。
sess := session.Must(session.NewSessionWithOptions(session.Options{
Config: aws.Config{Region: aws.String("eu-central-1"),Endpoint: aws.String("ec2.eu-central-1.amazonaws.com")},
}))
svc := ec2.New(sess, &aws.Config{
Region: aws.String(endpoints.EuCentral1RegionID),
})
input := &ec2.DescribeSnapshotsInput{
Filters: []*ec2.Filter{
&ec2.Filter{
Name: aws.String("status"),
Values: []*string{aws.String("completed")},
},
},
}
result, err := svc.DescribeSnapshots(input)
if err != nil {
if aerr, ok := err.(awserr.Error); ok {
switch aerr.Code() {
default:
fmt.Println(aerr.Error())
}
} else {
fmt.Println(err.Error())
}
}
for _, snapshot := range result.Snapshots{
fmt.Println(*snapshot.SnapshotId, " : ", *snapshot.VolumeSize)
}
解决方案
遵循此处的文档并了解 DescribeSnapshots 返回三种类型的快照。a) 公共快照(公开提供给其他人创建卷) b) 显式快照(由其他人显式提供给您的 AWS 账户) c) 隐式快照(由您自己的账户创建的快照)
因此,结果比预期的要多得多。
此外,如果您将以下过滤器传递给 DescribeSnapshotsInput:
&ec2.Filter{
Name: aws.String("owner-id"),
Values:[]*string{aws.String("XXXXYYYYYZZZZ")},
},
结果进一步缩小以显示仅在您所在地区可用的快照
推荐阅读
- jupyter-notebook - 弹出窗口不会在我的 MacBook Pro 上的 jupyter notebook 中打开
- xml - DTD 在内部 DTD 上是被禁止的,即使验证器说我的 XML 和 DTD 是正确的?
- visual-studio - 转到测试 (F12) 在 Visual Studio 的测试资源管理器中不起作用
- laravel - Laravel - 从 URL 获取片段
- r - 按因子组将函数应用于列的子集
- java - 如何在弹性搜索中查询浏览次数最多的搜索结果
- ruby-on-rails - Rails:NoMethodError - 未定义的方法`record_type`
- node.js - 我们如何在 gremlin 中加入 2 个顶点并获得所需的输出
- php - 是否可以在代码接收示例中使用注释中的常量
- json - 在便携式电子角度应用程序中使用 JSON 配置文件