Amazon ec2 AWS云形成-如何获取ec2实例的公共ip地址

Amazon ec2 AWS云形成-如何获取ec2实例的公共ip地址,amazon-ec2,Amazon Ec2,我正在尝试创建ec2实例,并且我希望能够创建一个包含ec2实例公共DNS名称的文件,尽管在以下代码中,我得到了由第行引起的循环依赖项错误: "server_name = \"",{ "Fn::GetAtt" : [ "ECServer", "PublicDnsName" ]},"\"\n","\n" 当我尝试创建ec2时,是否可以在实例部分获取公共DNS名称 "ECServer": { "Type": "AWS::EC2::Instance", "Metadata" : { "

我正在尝试创建ec2实例,并且我希望能够创建一个包含ec2实例公共DNS名称的文件,尽管在以下代码中,我得到了由第行引起的循环依赖项错误:

"server_name = \"",{ "Fn::GetAtt" : [ "ECServer", "PublicDnsName" ]},"\"\n","\n"
当我尝试创建ec2时,是否可以在实例部分获取公共DNS名称

"ECServer": {
  "Type": "AWS::EC2::Instance",
  "Metadata" : {
    "AWS::CloudFormation::Init" : {
      "configSets": {
        "Install": ["ECServerConfig"]
      },
      "ECConfig": {
        "files": {
          "/tmp/test.txt" : {
            "content": { "Fn::Join" : ["", [
              "server_name = \"",{ "Fn::GetAtt" : [ "ECServer", "PublicDnsName" ]},"\"\n","\n"
            ]]},
            "mode" : "000644",
            "owner": "root",
            "group": "root"
          }
        }
      }
    }
  },

您可以通过使用简单的curl命令获得运行EC2实例的公共IP-
1.SSH到该EC2实例。
2.执行以下命令-
curlhttp://169.254.169.254/latest/meta-data/public-ipv4

        You can try using this, in CFT one cannot use the refer to the properties of itself using Fn::GetAtt function 
"ECServer": {
          "Type": "AWS::EC2::Instance",
          "Metadata" : {
            "AWS::CloudFormation::Init" : {
              "configSets": {
                "Install": ["ECServerConfig"]
              },
              "ECConfig": {
                "files": {
                  "/tmp/test.txt" : {
                    "mode" : "000644",
                    "owner": "root",
                    "group": "root"
                  }
                },
                "commands" :{
                "test" : {
                  "command" : "curl -s http://169.254.169.254/latest/meta-data/public-hostname > /tmp/test.txt",
        "ignoreErrors" : "false"
        }
              }
            }
          }
        }
        }