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

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

Я явно что-то делаю не так, может кто подскажет что?


person Sufiyan Parkar    schedule 03.01.2019    source источник


Ответы (1)


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

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

person Adrian    schedule 03.01.2019
comment
Я боялся того же. Я лично просматривал документ некоторое время назад. Я надеялся, что кто-то знает альтернативу. - person Sufiyan Parkar; 03.01.2019