У меня есть шаблон CloudFormation для создания VPC и добавления к нему подсети и группы безопасности. Мне нужно сохранить идентификатор новой группы безопасности и идентификатор подсети в AWS Parameter Store.
Это отлично работает для группы безопасности, использующей Value: !GetAtt [securityGroup, GroupId]
в, но я не могу понять, как ссылаться на идентификатор подсети способом, который работает с хранилищем параметров.
Вот соответствующие части CloudFormation:
Resources:
### Subnet resource ###
subnet1:
Type: AWS::EC2::Subnet
Properties:
AvailabilityZone: !Ref SubnetAvailabilityZone1
CidrBlock: 10.2.0.0/16
VpcId: !Ref requesterVpc
### Parameter Store resource ###
subnet1Id:
Type: AWS::SecretsManager::Secret
Properties:
Description: Lambda Subnet ID
Name: /lambda-vpc/subnet/1
Value: !GetAtt [subnet1, id] # <---------- this doesn't work (Error A below)
Value: !Ref subnet1 # <---------- this doesn't work either (Error B below)
Ошибка А
Понятно, что попытка получить атрибут 'id' подсети дает ошибку
ресурс subnet1 не поддерживает идентификатор типа атрибута в Fn :: GetAtt.
Я также пробовал SubnetId безрезультатно. Изучите документацию CF подсети показывает, что нет атрибута для идентификатора подсети, возвращаемого с помощью Fn::GetAtt
.
Ошибка B
Попытка получить идентификатор подсети с помощью Fn::Ref
также не работает. Несмотря на то, что в документации указано, что Ref
возвращает идентификатор подсети, попытка обновления стека CF дает эту ошибку при попытке создать / обновить параметр subnet1Id:
Ошибка проверки свойства: [Обнаружены неподдерживаемые свойства в {/}: [Значение]]