Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 获取一个ec2实例到另一个ec2实例的私有IP地址_Amazon Web Services_Amazon Ec2_Yaml_Amazon Cloudformation - Fatal编程技术网

Amazon web services 获取一个ec2实例到另一个ec2实例的私有IP地址

Amazon web services 获取一个ec2实例到另一个ec2实例的私有IP地址,amazon-web-services,amazon-ec2,yaml,amazon-cloudformation,Amazon Web Services,Amazon Ec2,Yaml,Amazon Cloudformation,我使用YAML模板在AWS CloudFormation中创建了两个Amazon EC2实例。我想将一个EC2实例的私有IP地址传递给另一个具有公共IP地址的EC2实例。根据AWS文档,我们可以使用!GetAtt JMeterServer1Instance.PrivateIp 我想知道我应该在模板中的公共EC2实例的哪个部分添加它。(请考虑这是YAML模板) 如何检查我们是否已收到 这取决于你想在另一台机器上使用私有IP做什么。 如果要在另一个VM上的脚本中使用它,请在用户数据脚本中向下传递它,

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

  • 我想知道我应该在模板中的公共EC2实例的哪个部分添加它。(请考虑这是YAML模板)
  • 如何检查我们是否已收到

  • 这取决于你想在另一台机器上使用私有IP做什么。 如果要在另一个VM上的脚本中使用它,请在用户数据脚本中向下传递它,如本例所示:


    链接上的示例显示的是
    NetworkInterface
    的属性,而不是实例属性,但是
    与此相同!GetAtt JMeterServer1Instance.PrivateIp取决于您希望在另一台计算机上使用私有IP做什么。
    如果要在另一个VM上的脚本中使用它,请在用户数据脚本中向下传递它,如本例所示:


    链接上的示例显示的是
    NetworkInterface
    的属性,而不是实例属性,但是
    与此相同!如果您使用的是
    AWS::EC2::Instance
    类型,请查看
    UserData
    。更多

    样本模板

    Type: "AWS::EC2::Instance"
    Properties:
      ImageId: <ami>
      InstanceType: "t2.micro"
      KeyName: <keyname>
      UserData:
        "Fn::Base64":
          !Sub |
            #!/bin/bash
            yum install httpd php mysql php-mysql -y
            yum update -y
            chkconfig httpd on
            service httpd start
    
    类型:“AWS::EC2::实例”
    特性:
    ImageId:
    InstanceType:“t2.micro”
    关键字名称:
    用户数据:
    “Fn::Base64”:
    !潜艇|
    #!/bin/bash
    yum安装httpd-php-mysql-y
    yum更新-y
    chkconfig httpd on
    启动服务
    
    如果您使用的是
    AWS::EC2::Instance
    类型,请查看
    UserData
    。更多

    样本模板

    Type: "AWS::EC2::Instance"
    Properties:
      ImageId: <ami>
      InstanceType: "t2.micro"
      KeyName: <keyname>
      UserData:
        "Fn::Base64":
          !Sub |
            #!/bin/bash
            yum install httpd php mysql php-mysql -y
            yum update -y
            chkconfig httpd on
            service httpd start
    
    类型:“AWS::EC2::实例”
    特性:
    ImageId:
    InstanceType:“t2.micro”
    关键字名称:
    用户数据:
    “Fn::Base64”:
    !潜艇|
    #!/bin/bash
    yum安装httpd-php-mysql-y
    yum更新-y
    chkconfig httpd on
    启动服务
    
    您的要求似乎是:

    • 在CloudFormation模板中创建两个实例
    • 在实例A的用户数据中,请参阅实例B
    这很简单。首先,定义Instance-B
    DependsOn
    Instance-A,以确保在Instance-B之前创建Instance-A

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

      UserData:
        "Fn::Base64":
          !Sub |
            #!/bin/bash
            echo "${InstanceA.PrivateIp}" >foo
    

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

    您的要求似乎是:

    • 在CloudFormation模板中创建两个实例
    • 在实例A的用户数据中,请参阅实例B
    这很简单。首先,定义Instance-B
    DependsOn
    Instance-A,以确保在Instance-B之前创建Instance-A

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

      UserData:
        "Fn::Base64":
          !Sub |
            #!/bin/bash
            echo "${InstanceA.PrivateIp}" >foo
    
    “更好”的方法是在路由53中为VPC使用DNS名称和托管区域。这将为VPC创建一个DNS区域,然后定义一个可以在本地解析的DNS名称。将其链接到实例B,然后实例A可以通过DNS名称而不是IP地址引用实例B。这允许DNS名称在将来根据需要指向不同的实例,并在实例a和实例B之间创建较少的依赖关系(但必须承认,设置更多)。

    根据

    Fn::GetAtt

    我会在这里搞定的

    我的情况是:

  • 需要首先创建EC2Instance001
  • EC2Instance002需要使用EC2Instance001的IP
  • 在EC2Instance002中,使用两个特定设置创建实例:

    • “DependsOn”:[“EC2Instance001”]因为我希望首先创建EC2Instance001
    • 在Userdata(或metadata)下,使用{“Fn::GetAtt”:[“EC2Instance001”,“PrivateIp”]}获取第一个实例(EC2Instance001)的IP
    以下是我如何实现的(EC2Instance002):

    您可以看到,在元数据下,我正在变量$MASTERIP中捕获EC2Instance001实例的IP

    注意:JSON中的同一行将写为:

    "MASTERIP=",{ "Fn::GetAtt" : [ "EC2Instance001", "PrivateIp" ] }, "\n",
    
    按照

    Fn::GetAtt

    我会在这里搞定的

    我的情况是:

  • 需要首先创建EC2Instance001
  • EC2Instance002需要使用EC2Instance001的IP
  • 在EC2Instance002中,使用两个特定设置创建实例:

    • “DependsOn”:[“EC2Instance001”]因为我希望首先创建EC2Instance001
    • 在Userdata(或metadata)下,使用{“Fn::GetAtt”:[“EC2Instance001”,“PrivateIp”]}获取第一个实例(EC2Instance001)的IP
    以下是我如何实现的(EC2Instance002):

    您可以看到,在元数据下,我正在变量$MASTERIP中捕获EC2Instance001实例的IP

    注意:JSON中的同一行将写为:

    "MASTERIP=",{ "Fn::GetAtt" : [ "EC2Instance001", "PrivateIp" ] }, "\n",
    

    “将一个EC2实例的私有IP地址转移到另一个EC2实例”是什么意思?您的意思是希望能够在Instance-B的用户数据部分引用Instance-A的IP地址吗?假设我有2个ec2实例作为A和B使用aws yaml云形成模板创建。A有一个私有ip,B有一个公共ip。我在实例A上运行了一些性能测试。然后我想与实例B通信,并将实例A上的可用结果传递给实例