使用 LaunchConfig 时如何在 CloudFormation 模板中获取实例的公共 IP

arn*_*slu 1 amazon-ec2 amazon-cloudformation

我有一个带有LaunchConfig. 在UserData我需要引用正在创建的实例的公共 IP。我想使用Fn::GetAtt,但它需要逻辑名称,我不确定在使用时如何定义它LaunchConfig

"LaunchConfig": {
  "Type" : "AWS::AutoScaling::LaunchConfiguration",
  "Metadata" : {"..."},
  "Properties": {
    "ImageId" : "...",
    "InstanceType" : { "Ref" : "InstanceType" },
    "SecurityGroups" : [ {"Ref" : "WebServerSecurityGroup"} ],
    "KeyName" : { "Ref" : "KeyName" },
    "UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [
      "..."
    ]]}}
  }
},
Run Code Online (Sandbox Code Playgroud)

Wil*_*dan 5

如果您的 UserData 包含一个 shell 脚本并且您需要做的就是在该脚本中引用实例自己的公共 IP,您可以通过使用或任何其他 http 实用程序查询实例元数据public-ipv4类别来获取此值:curl

curl http://169.254.169.254/latest/meta-data/public-ipv4
Run Code Online (Sandbox Code Playgroud)