CloudFormation 模板:如何在短格式中同时使用 Sub 和 GetAtt?

Put*_*nik 1 amazon-web-services amazon-cloudformation yaml

我正在使用 yaml。所以,我们可以使用:

!GetAtt [ WebServer, AvailabilityZone ]
!GetAtt WebServer.AvailabilityZone
Run Code Online (Sandbox Code Playgroud)

此外,我们可以使用:

!Sub 'sometext-${AWS::StackName}'
Run Code Online (Sandbox Code Playgroud)

如何使用 GetAtt 输出而不是${AWS::StackName},最好使用 的第二种形式GetAtt?我知道如何使用,Join但我想继续使用Sub.

小智 5

只需删除 !GetAtt 并引用所需的变量。在以下代码中,EIP.AllocationId 通常通过 !GetAtt 返回。

!Sub |
#!/bin/bash
export INSTANCEID=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)
aws ec2 associate-address --instance-id $INSTANCEID --allow-reassociation --allocation-id ${EIP.AllocationId} --region ${AWS::Region}
Run Code Online (Sandbox Code Playgroud)