2016-07-06 17 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 AS-シンプルなカールのコマンドを使用して、実行中のEC2インスタンスのパブリックIPを取得することができます。
2.次のコマンドを実行します。
curl http://169.254.169.254/latest/meta-data/public-ipv4

関連する問題