Я следую руководству AWS по развертыванию сайта HA Wordpress на Elastic Beanstalk, которое включает в себя использование расширения eb-php-wordpress.Процесс требует редактирования нескольких файлов конфигурации с известными идентификаторами ресурса перед развертыванием приложения.
В частности, в инструкциях говорится, что нужно отредактировать файл efs-create.config с идентификатором VPC и идентификаторами подсети.Этот файл, помимо прочего, помогает установить свойство OptionSettings ресурса AWS :: ElasticBeanstalk :: Environment.Благодаря danimal теперь я знаю, как вставить VpcId в файл, используя Fn::GetAtt
:
option_settings:
aws:elasticbeanstalk:customoption:
EFSVolumeName: "EB-EFS-Volume"
VPCId: { "Fn::GetAtt" : [ "AWSEBSecurityGroup", "VpcId" ] }
## Subnet Options
SubnetA: "subnet-XXXXXXXX"
SubnetB: "subnet-XXXXXXXX"
SubnetC: "subnet-XXXXXXXX"
SubnetD: "subnet-XXXXXXXX"
Теперь моим препятствием является добавление идентификаторов подсети.Я попытался применить ту же, но слегка расширенную концепцию к ресурсу AWSEBV2LoadBalancer
, чтобы получить массив подсетей, но получил ошибку.
Код:
SubnetA: { "Fn::Select" : [ "0", { "Fn::GetAtt" : [ "AWSEBV2LoadBalancer", "Subnets" ] } ] }
SubnetB: { "Fn::Select" : [ "1", { "Fn::GetAtt" : [ "AWSEBV2LoadBalancer", "Subnets" ] } ] }
SubnetC: { "Fn::Select" : [ "2", { "Fn::GetAtt" : [ "AWSEBV2LoadBalancer", "Subnets" ] } ] }
SubnetD: { "Fn::Select" : [ "3", { "Fn::GetAtt" : [ "AWSEBV2LoadBalancer", "Subnets" ] } ] }
Ошибка:
Service:AmazonCloudFormation, Message:Template error: resource AWSEBV2LoadBalancer does not support attribute type Subnets in Fn::GetAtt
Я нашел это странным, поскольку сгенерированный шаблон показывает Subnets
в этом ресурсе:
"AWSEBV2LoadBalancer": {
"Properties": {
"SecurityGroups": [
{
"Ref": "AWSEBLoadBalancerSecurityGroup"
}
],
"Subnets": [
"subnet-0ec0699f08ff45e6e",
"subnet-0a4fec611d42b062f",
"subnet-09a4c28b8f330c0c3",
"subnet-0ea8d69e46ce87afc"
]
},
"Type": "AWS::ElasticLoadBalancingV2::LoadBalancer"
},
Я также попытался назначить массив с помощью Subnets: { "Fn::GetAtt" : [ "AWSEBV2LoadBalancer", "Subnets" ]
, а затем с помощью Fn::Select
и Ref
для этого: SubnetA: { "Fn::Select" : [ "0", [ "Ref" : "Subnets" ] ] }
, но это породило собственную ошибку:
Service:AmazonCloudFormation, Message:Template format error: Unresolved resource dependencies [Subnets] in the Resources block of the template
Как извлечь этот массив и назначить каждому элементу отдельный ресурс?