如何在 CloudFormation 模板中正确使用 Fn::Join 对象?
How do I properly use the Fn::Join object inside a CloudFormation Template?
我正在尝试使用 Fn::Join 函数创建安全组,但在构建模板时出现以下错误:
✖ Template validation failed.
An error occurred (ValidationError) when calling the ValidateTemplate operation: Template error: every Fn::Join object requires two parameters, (1) a string delimiter and (2) a list of strings to be joined or a function that returns a list of strings (such as Fn::GetAZs) to be joined.
我做错了什么?
ContainerSecurityGroup:
Type : AWS::EC2::SecurityGroup
Properties :
InstanceId: !Ref ContainerSG
GroupDescription : "ECS Containers Security Group"
VpcId :
"Fn::Join" :
- ""
- - "{{resolve:ssm:"
- /
- "ca"
- /
- "config"
- /
- "network"
- /
- "vpc_id:"
- !Sub "${ParamVersion}"
- "}}"
GroupName : !Sub ${Env}-${ServiceName}-sg
SecurityGroupIngress :
- IpProtocol : tcp
FromPort : 8080
ToPort : 8080
CidrIp : 10.49.63.0/24
- IpProtocol : tcp
FromPort : 8080
ToPort : 8080
CidrIp : 10.93.0.0/16
- IpProtocol : tcp
FromPort : 8080
ToPort : 8080
CidrIp : 10.97.0.0/16
- IpProtocol : tcp
FromPort : 8080
ToPort : 8080
CidrIp : 10.50.128.0/21
- IpProtocol : tcp
FromPort : 8080
ToPort : 8080
CidrIp : 10.50.144.0/24
- IpProtocol : tcp
FromPort : 8080
ToPort : 8080
CidrIp : 172.25.0.0/16
这是别人发给我的样本,但我不知道哪里出了问题。
需要缩进的字符串列表:
ContainerSecurityGroup:
Type : AWS::EC2::SecurityGroup
Properties :
InstanceId: !Ref ContainerSG
GroupDescription : "ECS Containers Security Group"
VpcId :
!Join :
- ""
- - "{{resolve:ssm:"
- /
- "ca"
- /
- "config"
- /
- "network"
- /
- "vpc_id:"
- !Sub "${ParamVersion}"
- "}}"
GroupName : !Sub ${Env}-${ServiceName}-sg
SecurityGroupIngress :
- IpProtocol : tcp
FromPort : 8080
ToPort : 8080
CidrIp : 10.49.63.0/24
- IpProtocol : tcp
FromPort : 8080
ToPort : 8080
CidrIp : 10.93.0.0/16
- IpProtocol : tcp
FromPort : 8080
ToPort : 8080
CidrIp : 10.97.0.0/16
- IpProtocol : tcp
FromPort : 8080
ToPort : 8080
CidrIp : 10.50.128.0/21
- IpProtocol : tcp
FromPort : 8080
ToPort : 8080
CidrIp : 10.50.144.0/24
- IpProtocol : tcp
FromPort : 8080
ToPort : 8080
CidrIp : 172.25.0.0/16
我正在尝试使用 Fn::Join 函数创建安全组,但在构建模板时出现以下错误:
✖ Template validation failed.
An error occurred (ValidationError) when calling the ValidateTemplate operation: Template error: every Fn::Join object requires two parameters, (1) a string delimiter and (2) a list of strings to be joined or a function that returns a list of strings (such as Fn::GetAZs) to be joined.
我做错了什么?
ContainerSecurityGroup:
Type : AWS::EC2::SecurityGroup
Properties :
InstanceId: !Ref ContainerSG
GroupDescription : "ECS Containers Security Group"
VpcId :
"Fn::Join" :
- ""
- - "{{resolve:ssm:"
- /
- "ca"
- /
- "config"
- /
- "network"
- /
- "vpc_id:"
- !Sub "${ParamVersion}"
- "}}"
GroupName : !Sub ${Env}-${ServiceName}-sg
SecurityGroupIngress :
- IpProtocol : tcp
FromPort : 8080
ToPort : 8080
CidrIp : 10.49.63.0/24
- IpProtocol : tcp
FromPort : 8080
ToPort : 8080
CidrIp : 10.93.0.0/16
- IpProtocol : tcp
FromPort : 8080
ToPort : 8080
CidrIp : 10.97.0.0/16
- IpProtocol : tcp
FromPort : 8080
ToPort : 8080
CidrIp : 10.50.128.0/21
- IpProtocol : tcp
FromPort : 8080
ToPort : 8080
CidrIp : 10.50.144.0/24
- IpProtocol : tcp
FromPort : 8080
ToPort : 8080
CidrIp : 172.25.0.0/16
这是别人发给我的样本,但我不知道哪里出了问题。
需要缩进的字符串列表:
ContainerSecurityGroup:
Type : AWS::EC2::SecurityGroup
Properties :
InstanceId: !Ref ContainerSG
GroupDescription : "ECS Containers Security Group"
VpcId :
!Join :
- ""
- - "{{resolve:ssm:"
- /
- "ca"
- /
- "config"
- /
- "network"
- /
- "vpc_id:"
- !Sub "${ParamVersion}"
- "}}"
GroupName : !Sub ${Env}-${ServiceName}-sg
SecurityGroupIngress :
- IpProtocol : tcp
FromPort : 8080
ToPort : 8080
CidrIp : 10.49.63.0/24
- IpProtocol : tcp
FromPort : 8080
ToPort : 8080
CidrIp : 10.93.0.0/16
- IpProtocol : tcp
FromPort : 8080
ToPort : 8080
CidrIp : 10.97.0.0/16
- IpProtocol : tcp
FromPort : 8080
ToPort : 8080
CidrIp : 10.50.128.0/21
- IpProtocol : tcp
FromPort : 8080
ToPort : 8080
CidrIp : 10.50.144.0/24
- IpProtocol : tcp
FromPort : 8080
ToPort : 8080
CidrIp : 172.25.0.0/16