【问题标题】:Filter AWS resources using regex in aws-sdk-go在 aws-sdk-go 中使用正则表达式过滤 AWS 资源
【发布时间】:2021-09-28 22:08:28
【问题描述】:

所以我有一些不同类型的 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`

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

【问题讨论】:

    标签: go amazon-ec2 aws-sdk-go


    【解决方案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 公开。

    【讨论】:

    • 我也害怕。不久前,我确实亲自浏览了该文件。我希望有人会知道一个替代方案。
    【解决方案2】:

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

    过滤器:[ ]*ec2.Filter{

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

    过滤器:[ ]types.Filter{

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-16
      • 2022-11-21
      • 2021-12-15
      • 2017-02-14
      • 1970-01-01
      • 2021-09-13
      相关资源
      最近更新 更多