aws cloudformation获取一个ec2实例的私有IP地址到另一个ec2实例

Sha*_*dhi 2 yaml amazon-ec2 amazon-web-services aws-cloudformation

我使用 YAML 模板在 AWS CloudFormation 中创建了两个 Amazon EC2 实例。我想将一个 EC2 实例的私有 IP 地址转移到另一个具有公共 IP 地址的 EC2 实例。根据 AWS 文档,我们可以使用!GetAtt JMeterServer1Instance.PrivateIp

  1. 我想知道应该将其添加到模板中的公共 EC2 实例的哪个部分下。(请考虑这是一个 YAML 模板。)
  2. 我如何检查我们是否已收到?

Joh*_*ein 7

看来您的要求是:

  • 在 CloudFormation 模板中创建两个实例
  • 在实例 A 的用户数据中,参考实例 B

这很简单。首先,定义 Instance-B DependsOnInstance-A,以确保 Instance-A 在 Instance-B 之前创建。

然后,在实例 B 的用户数据中,引用实例 A:

  UserData:
    "Fn::Base64":
      !Sub |
        #!/bin/bash
        echo "${InstanceA.PrivateIp}" >foo
Run Code Online (Sandbox Code Playgroud)

“更好”的方法是将 DNS 名称与Route 53 中的 VPC 的托管区域一起使用。这将为 VPC 创建一个 DNS 区域,然后定义一个可以在本地解析的 DNS 名称。将其链接到实例 B,然后实例 A 可以通过 DNS 名称而不是 IP 地址引用实例 B。这允许 DNS 名称将来在需要时指向不同的实例,并减少实例 A 和实例 B 之间的依赖关系。(但是,无可否认,需要更多设置。)