AWS 对某些区域使用不同的 DNS 后缀。最值得注意的是us-east-1。对于公共 IP 地址,对于 us-east-1 区域,DNS 主机名采用 ec2-public-ipv4-address.compute-1.amazonaws.com 格式,对于其他区域,DNS 主机名采用 ec2-public-ipv4-address.region.compute.amazonaws.com 格式。
这是一个非常简单的规则,可以有条件地处理或使用映射,但我想知道 CloudFormation 是否提供了一个伪参数或其他直接返回给定区域的完整后缀应该是什么的方法。
我知道 AWS::URLSuffix 参数,对于大多数地区,它返回"amazonaws.com",但这本身还不够。
使用 Fn::GetAtt 获取公共 DNS,如此处的返回值中所述 https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#aws-properties-ec2-instance-returnvalues
{"Fn::GetAtt":["EC2LogicalResourceName","PublicDnsName"]}
希望这有帮助