我使用 YAML 模板在 AWS CloudFormation 中创建了两个 Amazon EC2 实例。我想将一个 EC2 实例的私有(private) IP 地址转移到另一个具有公共(public) IP 地址的 EC2 实例。根据 AWS 文档,我们可以使用 !GetAtt JMeterServer1Instance.PrivateIp
- 我想知道应该将其添加到模板中的公共(public) EC2 实例的哪个部分下。 (请考虑这是一个 YAML 模板。)
- 如何检查我们是否已收到?
最佳答案
看来您的要求是:
- 在 CloudFormation 模板中创建两个实例
- 在实例 A 的用户数据中,引用实例 B
这很简单。首先,定义 Instance-B DependsOn
Instance-A,以确保在 Instance-B 之前创建 Instance-A。
然后,在实例 B 的用户数据中,引用实例 A:
UserData:
"Fn::Base64":
!Sub |
#!/bin/bash
echo "${InstanceA.PrivateIp}" >foo
“更好”的方法是将 DNS 名称与Route 53 中的 VPC 托管区域结合使用。这将为 VPC 创建一个 DNS 区域,然后定义一个可以在本地解析的 DNS 名称。将其链接到实例 B,然后实例 A 可以通过 DNS 名称而不是 IP 地址引用实例 B。这允许 DNS 名称将来在需要时指向不同的实例,并减少实例 A 和实例 B 之间的依赖关系。 (但是,无可否认,需要更多设置。)
关于amazon-web-services - aws cloudformation获取一个ec2实例的私有(private)IP地址到另一个ec2实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51499556/