#amazon-web-services #amazon-elastic-beanstalk
#amazon-веб-сервисы #amazon-elastic-beanstalk
Вопрос:
Я следую руководству AWS по развертыванию сайта HA WordPress в Elastic Beanstalk, которое включает использование eb-php-wordpress
расширения. Процесс требует редактирования нескольких файлов конфигурации с известными идентификаторами ресурсов перед развертыванием приложения.
В частности, в инструкциях указано редактировать efs-create.config
файл с идентификатором VPC и идентификаторами подсети. Файл, помимо прочего, помогает установить OptionSettings
свойство AWS::ElasticBeanstalk::Environment
ресурса. По этой причине я подозреваю, что я должен просто иметь возможность ссылаться на него Ref:
. Правильно ли это, хотя, поскольку VPC будет создан другим файлом, а стек Cloudformation среды EB создается рядом со стеком VPC, а не «внутри» него? Должен ли я использовать Fn::
вызов для получения информации?
Раздел файла конфигурации, с которым я работаю, выглядит следующим образом:
option_settings:
aws:elasticbeanstalk:customoption:
EFSVolumeName: "EB-EFS-Volume"
VPCId: "vpc-XXXXXXXX"
## Subnet Options
SubnetA: "subnet-XXXXXXXX"
SubnetB: "subnet-XXXXXXXX"
SubnetC: "subnet-XXXXXXXX"
SubnetD: "subnet-XXXXXXXX"
Будет ли строка идентификатора что-то вроде
VPCId: {Ref: VPC}
Где VPC
имя ресурса VPC, который я создал? Или, проще говоря, как мне ссылаться на идентификатор VPC VPC по умолчанию, если я буду придерживаться этого?
Ответ №1:
Согласно Ref
документам, вы должны иметь возможность использовать для получения различных идентификаторов ресурсов с именем elastic beanstalk. Однако VPC не является одним из этих именованных ресурсов (то есть ресурсов с логическим идентификатором), а является свойством одного из именованных ресурсов, в данном случае логический идентификатор AWSEBSecurityGroup
равен, а свойство равно VpcId
, поэтому вы должны иметь возможность получить его с помощью GetAtt
:
{ "Fn::GetAtt" : [ "AWSEBSecurityGroup", "VpcId" ] }
из документации по функциям и документации CloudFormation
Аналогичный подход должен работать и для подсетей.
Комментарии:
1. Неплохо. Спасибо. Это будет работать, если я создам новый VPC или использую существующий, да?
2. Продолжение: ресурс AWSEBV2LoadBalancer содержит массив подсетей, а не идентифицирует каждую по отдельности. Правильно ли я полагаю, что в этом случае я бы использовал
Fn::Select
для присвоения каждого идентификатора подсети одной из строк в моем вопросе?3. Возможно, как
{ "Fn::Select" : [ "0", [ { "Fn::GetAtt" : [ "AWSEBLoadBalancer", "Subnets" ] ] }