#amazon-web-services #aws-cdk
Вопрос:
Я развертываю свое приложение в учетной записи, у которой есть транзитный шлюз, совместно используемый из другой учетной записи AWS через Диспетчер доступа к ресурсам.
Транзитный шлюз не создается CDK. Он не существует в другом стеке или приложении.
Я хочу создать вложение VPC Транзитного шлюза к этому Транзитному шлюзу.
Чтобы создать объект вложения VPC Транзитного шлюза, мне нужно указать идентификатор транзитного шлюза. https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-ec2.CfnTransitGatewayVpcAttachment.html#class-cfntransitgatewayvpcattachment-construct
Я не могу найти способ с помощью CDK получить идентификатор транзитного шлюза из существующего транзитного шлюза. Какой метод я бы использовал для получения идентификатора Транзитного шлюза?
Ответ №1:
Используйте свой SDK, чтобы найти его.
Во время развертывания стека используйте пакет SDK для языков (например, boto3 для python), чтобы получить доступ к командам API AWS, чтобы просмотреть информацию и получить ее. Я регулярно делаю это со слоями, которые идентичны в нескольких стеках, но вам нужен номер версии для импорта слоя (я не хочу создавать несколько версий одного и того же слоя) — я использую boto3, чтобы получить самую последнюю версию слоя, а команда from_attributes импортирует его в стек.
Вы можете сделать что-то подобное с любой реализацией SDK для выбранных вами языков, которая повторяет эту команду CLI: https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-transit-gateways.html
Комментарии:
1. На сегодняшний день это выглядит как лучшее решение. Без функции поиска мне придется прибегнуть к использованию AWS SDK, чтобы найти идентификатор транзитного шлюза. Я создал запрос функций в проекте AWS CDK Github для метода поиска. github.com/aws/aws-cdk/issues/16873
2. Учитывая, что CDK написан на тех же языках, что и SDK, ожидается, что эта методология будет использоваться. Тот факт, что Транзитный шлюз является функцией Cfn, означает, что он не был полностью помещен в CDK — функции cfn являются временными оболочками вокруг очень базового преобразования в шаблоны cloudformation (следовательно, cfn). У них нет большинства крючков, которые есть у других конструкций CDK. Так что, возможно, он будет у него, когда они начнут перемещать его в надлежащую конструкцию. В любом случае, инфраструктура как код означает, что использование SDK идеально подходит для многих ситуаций и, по сути, поощряется.
Ответ №2:
Я не вижу способа «поиска» существующего транзитного шлюза в https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-ec2.CfnTransitGateway.html
Я предполагаю, что вы могли бы либо
- Экспортируйте идентификатор транзитного шлюза в виде выходных данных CloudFormation в стеке, в котором он создан?
- Самостоятельно найдите идентификатор транзитного шлюза и введите его в исходный код CDK?
В одном из проектов я выбрал 2-й вариант, и позже у меня не возникло никаких проблем.
Комментарии:
1. В этом случае Транзитный шлюз вообще не создается CDK. Он не существует в другом стеке или приложении. Я не могу экспортировать его в виде выходных данных CloudFormation, а также хранить значение в хранилище параметров SSM.