【发布时间】:2021-04-07 04:32:37
【问题描述】:
我有一个 CloudFormation 模板来创建 VPC 并向其添加子网和安全组。我需要将新安全组的 ID 和子网的 ID 存储在 AWS Parameter Store 中。
这适用于在 中使用Value: !GetAtt [securityGroup, GroupId] 的安全组,但我不知道如何以与 Parameter Store 一起使用的方式引用子网的 ID。
以下是 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)
错误 A
尝试获取子网的 'id' 属性会产生错误,这是可以理解的
资源子网 1 不支持 Fn::GetAtt 中的属性类型 id。
我也尝试了“SubnetId”,但无济于事。查看subnet's CF documentation 显示没有可通过Fn::GetAtt 返回的子网ID 的属性。
错误 B
尝试使用Fn::Ref 获取子网ID 也不起作用。即使文档说“Ref 返回子网的 ID”,尝试更新 CF 堆栈在尝试创建/更新“subnet1Id”参数时也会出现此错误:
属性验证失败:[Encountered unsupported properties in {/}: [Value]]
【问题讨论】:
标签: amazon-web-services amazon-cloudformation amazon-vpc aws-parameter-store