#amazon-cloudformation
#aws-cloudformation
Вопрос:
Я хотел бы получить атрибут PrivateIP EC2s, который я создаю с помощью LaunchConfiguration.
Мне нужен этот атрибут, чтобы я мог назначить экземпляру DNS-запись типа A для других целей.
Вот мой код:
Resources:
webLaunchConfig:
Type: 'AWS::AutoScaling::LaunchConfiguration'
Properties:
ImageId: !Ref webEc2AMI
InstanceType: !Ref ec2WebInstanceType
SecurityGroups: !Ref webEc2SG
UserData:
'Fn::Base64': !Sub >
#!/bin/bash -xe
apt update -y
dnsWebServerName:
Type: 'AWS::Route53::RecordSet'
Properties:
HostedZoneId: !Ref hostedZoneId
Comment: DNS name for my db server.
Name: !Ref dnsWebServerNamePar
Type: A
TTL: '900'
ResourceRecords:
- !GetAtt webLaunchConfig.PrivateIp
… и когда я пытаюсь запустить его, я получаю эту ошибку:
Шаблон содержит ошибки.: Ошибка шаблона: ресурс webLaunchConfig не поддерживает тип атрибута PrivateIp в Fn::GetAtt
… указывает мне, что то, что я пытаюсь сделать, не поддерживается. Хотя должен быть способ добиться этого.
Вы знаете, как это сделать? Или обходной путь для этого?
Ответ №1:
К сожалению, вы не можете этого сделать. AWS::AutoScaling::LaunchConfiguration
это только схема экземпляра, который будет запущен. Таким образом, он не предоставляет информацию об экземпляре PrivateIp
. Чтобы получить PrivateIp
, вам нужно фактически запустить экземпляр.
Для этого вам необходимо использовать AWS ::EC2::Instance. Однако AWS::EC2::Instance
не поддерживает запуск из `AWS :: AutoScaling:: LaunchConfiguration . So either you have to change your
LaunchConfiguration into
LaunchTemplate or just create instance directly using
AWS :: EC2:: Instance», а не из любых шаблонов.
Комментарии:
1. Большое спасибо, на самом деле шаблон запуска может помочь мне. Но как мне получить доступ к частному IP-адресу ec2, созданному с помощью launchtemplate? Я читаю документацию, но, похоже, не могу найти способ ее получить. Возможно, у меня просто возникли проблемы при просмотре документов aws
2. @BabaNew Вы переходите
AWS::EC2::Instance
из своего шаблона запуска, используя свойство LaunchTemplate. После создания экземпляра вы можете получить его частный IP-адрес из возвращаемых значений .