Как обратиться к свойству подсетей AWSEBV2LoadBalancer? - PullRequest
0 голосов
/ 12 апреля 2019

Я следую руководству 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

Как извлечь этот массив и назначить каждому элементу отдельный ресурс?

1 Ответ

0 голосов
/ 21 апреля 2019

В соответствии с документацией (за день), это невозможно.Меня удивляет, как это сделали другие, потому что не могу представить, что я первый, кто попробует.

...