首页 > 解决方案 > 在 Cloudformation 上使用带有私有 IP 值的加入、选择和拆分

问题描述

尝试在 Cloudformation 中编写反向区域条目 dns 时遇到错误。

这是我的条目:

EC2DNSReverseZone:
Type: AWS::Route53::RecordSet
Properties:
  HostedZoneId: !Ref ReverseHostedZoneId
  Name:
    - !Join [ '', [ !Select [3, !Split [ ".", !GetAtt LinuxEC2Instance.PrivateIp ] ], .xxx.xxx.xx.in-addr.arpa  ] ]
  Type: PTR
  TTL: '86400'
  ResourceRecords:
    - xxxxxxxx

部署 Cloudformation 条目时,我收到以下错误:

Value of property Name must be of type String

我认为这与 LinuxEC2Instance.PrivateIp 是一个数字并且拆分数字无效这一事实有关。但这只是一个猜测。我有点不知所措我在这里做错了什么。LinuxEC2Instance.PrivateIp 是一个类似 10.104.209.113 的 IP 地址,我只需要最后一部分,所以我需要该数字中的 113,这就是我在这里使用 split 的原因。

我需要做什么来修复这个错误?

标签: amazon-web-servicesamazon-cloudformationamazon-route53

解决方案


我认为这与 LinuxEC2Instance.PrivateIp 是一个数字并且拆分数字无效这一事实有关。

不,这不对。这意味着你的Nameis List,正如你所说-的那样。它必须是 plain String,所以它应该是 (no -):

  Name:
    !Join [ '', [ !Select [0, !Split [ ".", !GetAtt LinuxEC2Instance.PrivateIp ] ], .xxx.xxx.xx.in-addr.arpa  ] ]

可能还有Join其他错误,但我只关注您当前的错误消息。


推荐阅读