У меня есть шаблон 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" : ["", [
"..."
]]}}
}
},
Если ваши UserData содержат сценарий оболочки и все, что вам нужно сделать, это указать собственный общедоступный IP-адрес экземпляра в этом сценарии, вы можете получить это значение, запросив public-ipv4
категория метаданные экземпляра с участием curl
или любая другая утилита http:
curl http://169.254.169.254/latest/meta-data/public-ipv4
Невозможно напрямую получить общедоступный IP-адрес экземпляра EC2, созданного группой Auto Scaling. Причина в том, что экземпляр EC2 не управляется шаблоном CloudFormation. Шаблон не знает об экземпляре EC2.
Однако есть несколько обходных путей.
Вариант 1. Выделите и назначьте эластичный IP-адрес.
Вместо того, чтобы определять автоматически назначаемый IP-адрес, выделите эластичный IP-адрес и назначьте его пользовательским данным вашего экземпляра EC2, а экземпляр EC2 назначит его самому себе через сценарий запуска.
Это очень просто сделать, если ваша группа Auto Scaling создает только один экземпляр EC2. Это все еще можно сделать с двумя или более экземплярами EC2, но вам нужно будет создать пул эластичных IP-адресов для извлечения.
Вариант 2. Используйте WaitCondition с настраиваемыми данными, включая IP-адрес вашего экземпляра EC2.
Создайте условие ожидания, которое будет ожидать ваш шаблон CloudFormation. В вашем экземпляре EC2 попросите его получить свой собственный общедоступный IP-адрес, а затем сигнализируйте WaitCondition, когда он будет готов. Включите IP-адрес в поле "Данные" сигнала.
Ссылки: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-waitcondition.html