1

所以我有一些不同类型的 aws 资源标记为xxx/yyy/<generated_id>. 我需要使用 go-sdk 来获取它们。

这是子网的示例代码,过滤器对于其他所有资源看起来都相同。

这行不通。

var resp *ec2.DescribeSubnetsOutput
resp, err = d.ec2Client().DescribeSubnets(&ec2.DescribeSubnetsInput{
    Filters: []*ec2.Filter{
        {
            Name:   aws.String("vpc-id"),
            Values: []*string{&d.VpcId},
        },
        {
            Name:   aws.String(fmt.Sprintf(`tag:"xxx/yyy.[*]"`),
            Values: []*string{aws.String("owned")},
        },
    },
})

这样做: aws ec2 describe-subnets --filters `Name=tag:"xxx/yyy.[*]",Values=owned`

我显然做错了什么,有人可以指出什么吗?

4

2 回答 2

1

API 文档中没有任何内容表明DescribeSubnets接受过滤器名称中的正则表达式:https ://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeSubnets.html

如果它在 CLI 中工作,那可能是 CLI 在 SDK 提供的功能之上所做的事情。Go 开发工具包与任何其他 AWS 开发工具包一样;它以特定语言的方式公开 AWS API。AWS CLI 在 API 之上添加了便利功能,使其在命令行上更有用,但这并不意味着这些功能会被 API 或任何已发布的 SDK 公开。

于 2019-01-03T17:55:31.340 回答
0

我最近遇到了这个问题,我的问题是我使用的 sdk 版本;

过滤器:[ ]*ec2.Filter{

适用于 v1 sdk mod,它在我导入github.com/aws/aws-sdk-go-v2/aws时无法正常工作,而

过滤器:[]types.Filter{

适用于 v2,这个适用于我的情况。

https://aws.amazon.com/blogs/developer/aws-sdk-for-go-version-2-general-availability/

于 2021-09-28T14:08:28.183 回答