Я пытаюсь использовать AWS CloudFormation для создания экземпляра NAT через AutoScalingGroup
, и я сталкиваюсь с проблемой при попытке связать EIP во время создания экземпляра через LaunchConfiguration
использование UserData
.
Ниже мой UserData
(отрезанный и отредактированный, шаблон CloudFormation создается через Ansible следовательно переменные стиля Jinja2),
"UserData": {
"Fn::Base64": {
"Fn::Join": [
"",
[
"#!/bin/bash\n",
"\n",
"# Associate EIP address\n",
"aws ec2 associate-address --instance-id `curl http://169.254.169.254/latest/meta-data/instance-id` --allocation-id {{ nat_eip_allocation_id }} --region {{ aws_region }}\n"
]
]
}
}
То, что действительно нечетно, является вышеупомянутыми выводами кода следование экземпляра (я передаю вывод по каналу к файлу журнала),
{
"AssociationId": "eipassoc-b33d5ad7",
"return": "true"
}
Все же, когда я вхожу в свою консоль AWS, я не могу найти эту ассоциацию нигде, EIP не выделяется, и экземпляр EC2 не имеет EIP или любого общедоступного IP в этом отношении.
Если я вручную связываю его, это хорошо работает.
Я пропускаю что-то действительно очевидное здесь? Это, потому что я имею AssociatePublicIpAddress
набор к false
в LaunchConfiguration
? Я предположил, что должен был сделать это, поскольку я не хочу автоматически присвоенный IP.
Спасибо
Похоже, установка AssociatePublicIpAddress
на false
действительно блокирует связывание EIP через CLI во время выполнения UserData
.
] Кажется расточительным получать общедоступный IP-адрес только для его замены, но решение состоит в том, чтобы установить AssociatePublicIpAddress
на true
.