如何解决在 CloudFormation 中,将子网 ID 存储在 Parameter Store
我有一个 CloudFormation 模板来创建 VPC 并向其添加子网和安全组。我需要在 AWS Parameter Store 中存储新安全组的 ID 和子网的 ID。
这适用于在 中使用 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
资源子网 1 不支持 Fn::GetAtt 中的属性类型 id。
我也尝试过“subnetId”但无济于事。查看 subnet's CF documentation 显示没有可使用 Fn::GetAtt
返回的子网 ID 的属性。
错误 B
尝试使用 Fn::Ref
获取子网 ID 也不起作用。即使文档说“Ref
返回子网的 ID”,尝试更新 CF 堆栈在尝试创建/更新“subnet1Id”参数时也会出现此错误:
解决方法
问题在于我用于参数的 AWS 资源类型。
我使用的是 AWS::SecretsManager::Secret
,但我需要 AWS::SSM::Parameter
。切换到那个并将 Type: String
添加到 Properties 后,!Ref subnet1
起作用了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。