我在 AWS 中有一个 cloudformation 脚本,它创建了一个 EC2 实例,其中包含一些防火墙规则、S3 映射和其他内容。我在 route53 中为实例的公共 IP 创建了一个 DNS 记录,这很好用。
现在我需要在主机内部 ip 的 DNS 中创建另一条记录(供内部使用,以便其他实例无需通过公共 ip 即可与该实例通信)。
我还没有找到一种方法来做到这一点。可能吗?有人有示例 cloudformation 脚本吗?
我在 AWS 中有一个 cloudformation 脚本,它创建了一个 EC2 实例,其中包含一些防火墙规则、S3 映射和其他内容。我在 route53 中为实例的公共 IP 创建了一个 DNS 记录,这很好用。
现在我需要在主机内部 ip 的 DNS 中创建另一条记录(供内部使用,以便其他实例无需通过公共 ip 即可与该实例通信)。
我还没有找到一种方法来做到这一点。可能吗?有人有示例 cloudformation 脚本吗?
这是可能的,但您需要设置一个“私有托管区域”,如本文所述使用相同域名访问网站的内部版本 | 然后Amazon AWS Support调整以下 cloudformation 以满足您的需求
在单独的 Cloudformation 脚本中创建私有托管区域并输出 Route53 区域 ID。
使用该私有区域 ID 作为 EC2 创建 Cloudformation 脚本中的参数。创建资源记录类型,以区域 ID 作为参数,并引用 EC2 实例的私有 IP 地址。
公众也可以做同样的事情,但如果你不打算使用 ELB,我会为此创建一个 ENI。
使用 CFN 创建资源记录
经过几天的询问、测试和尝试,我从 Reddit 的一个好人那里找到了一个解决方案。我的问题的完整解决方案如下:
对我来说,新的部分是从我的实例
Fn::GetAtt
中检索"PrivateIP"
,在我得到一些帮助之前我没有找到办法做到这一点。否则这与创建公共 ip 记录完全一样(并且之前已详细记录,例如此处:(我现在看到它使用 Fn::getAtt,不知道为什么我自己没有得到这个)。