2016-07-06 2 views
2

ec2 인스턴스를 만들려고하는데 다음 코드에서 ec2 인스턴스 공용 DNS 이름을 포함 할 파일을 만들 수있게하려고합니다. 라인에 의한 순환 종속성 오류 :AWS 클라우드 형성 - ec2 인스턴스의 공용 IP 주소를 얻는 방법

"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" 
      } 
     } 
     } 
    } 
    }, 

답변

0
 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" 
     } 
       } 
      } 
      } 
     } 
     } 
0

당신은 EC2 인스턴스에
1. SSH 된 직후 간단한 컬 명령을 사용하여 실행중인 EC2 인스턴스의 공용 IP를 얻을 수 있습니다.
2. 다음 명령을 실행하십시오.
curl http://169.254.169.254/latest/meta-data/public-ipv4

관련 문제