在 CloudFormation 中,将子网 ID 存储在 Parameter Store 中
In CloudFormation, store a Subnet ID in Parameter Store
我有一个 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' 属性可以理解地给出错误
resource subnet1 does not support attribute type id in Fn::GetAtt.
我也试过“SubnetId”也没有用。查看 subnet's CF documentation 显示没有可使用 Fn::GetAtt
.
返回的子网 ID 的属性
错误B
尝试使用 Fn::Ref
获取子网 ID 也不起作用。即使文档说“Ref
returns 子网的 ID”,尝试更新 CF 堆栈时也会在尝试 create/update“subnet1Id”参数时出现此错误:
Property validation failure: [Encountered unsupported properties in {/}: [Value]]
问题是我用于参数的 AWS 资源类型。
我正在使用 AWS::SecretsManager::Secret
,但我需要 AWS::SSM::Parameter
。切换到那个并将 Type: String
添加到属性后,!Ref subnet1
起作用了。
我有一个 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' 属性可以理解地给出错误
resource subnet1 does not support attribute type id in Fn::GetAtt.
我也试过“SubnetId”也没有用。查看 subnet's CF documentation 显示没有可使用 Fn::GetAtt
.
错误B
尝试使用 Fn::Ref
获取子网 ID 也不起作用。即使文档说“Ref
returns 子网的 ID”,尝试更新 CF 堆栈时也会在尝试 create/update“subnet1Id”参数时出现此错误:
Property validation failure: [Encountered unsupported properties in {/}: [Value]]
问题是我用于参数的 AWS 资源类型。
我正在使用 AWS::SecretsManager::Secret
,但我需要 AWS::SSM::Parameter
。切换到那个并将 Type: String
添加到属性后,!Ref subnet1
起作用了。