Фильтруйте ресурсы AWS с помощью регулярных выражений в aws-sdk-go - PullRequest
0 голосов
/ 03 января 2019

Итак, у меня есть несколько различных типов ресурсов 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`

Я, очевидно, что-то делаю не так, кто-то может указать, что?

1 Ответ

0 голосов
/ 03 января 2019

В документации API нет ничего, что указывало бы на то, что DescribeSubnets принимает регулярное выражение в именах фильтров: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeSubnets.html

Если это работает в CLI, то, скорее всего, CLI делает то, что предлагает SDK. Go SDK похож на любой другой AWS SDK; он предоставляет API AWS в зависимости от языка. CLI AWS добавляет удобные функции поверх API, чтобы сделать его более полезным в командной строке, но это не означает, что эти функции предоставляются API или любым опубликованным SDK.

...