1

Как передать параметры типа List<AWS::EC2::Subnet::Id> в виде строки, разделенной запятой?CloudFormation, передавая список <AWS :: EC2 :: Subnet :: Id> как строку, разделенную запятой?

У меня есть следующий шаблон:

{ 
    "AWSTemplateFormatVersion": "2010-09-09", 

    "Parameters": { 
    "PrivateSubnets": { 
     "Description": "The private subnets in which Beanstalk EC2 instances will created", 
     "Type": "List<AWS::EC2::Subnet::Id>" 
    }, 
    "PublicSubnets": { 
     "Description": "The public subnets in which the Beanstalk ELBs will be created", 
     "Type": "List<AWS::EC2::Subnet::Id>" 
    } 
    }, 

    "Resources": { 
    "MyApp": { 
     "Type": "AWS::ElasticBeanstalk::Application", 
     "Properties": { 
     "ApplicationName": "MyApp", 
     "Description": "AWS Elastic Beanstalk Application" 
     } 
    }, 

    "ConfigTemplate": { 
     "Type": "AWS::ElasticBeanstalk::ConfigurationTemplate", 
     "Properties": { 
     "ApplicationName": { "Ref": "MyApp" }, 
     "Description": "Microsite Beanstalk config template", 
     "OptionSettings": [ 
      { "Namespace": "aws:ec2:vpc", "OptionName": "ELBSubnets", "Value": { "Ref": "PublicSubnets" } }, 
      { "Namespace": "aws:ec2:vpc", "OptionName": "Subnets", "Value": { "Ref": "PrivateSubnets"} } 
     ], 
     "SolutionStackName": "64bit Amazon Linux 2016.03 v2.1.7 running PHP 5.6" 
     } 
    } 
    } 
} 

При попытке создать стек, я получаю следующее сообщение об ошибке:

CREATE_FAILED AWS::ElasticBeanstalk::ConfigurationTemplate ConfigTemplate Value of property Value must be of type String

Попытка использовать Fn:Join написать содержание частного и публичные подсети в виде разделенных запятыми строк, например

{ "Namespace": "aws:ec2:vpc", "OptionName": "ELBSubnets", "Value": { "Fn:Join": [",", { "Ref": "PublicSubnets" }]} }, 
{ "Namespace": "aws:ec2:vpc", "OptionName": "Subnets", "Value": { "Fn:Join": [",", { "Ref": "PrivateSubnets"}]} }, 

результат в

Template validation error: Template Error: Encountered unsupported function: Fn:Join Supported functions are: [Fn::Base64, Fn::GetAtt, Fn::GetAZs, Fn::ImportValue, Fn::Join, Fn::FindInMap, Fn::Select, Ref, Fn::Equals, Fn::If, Fn::Not, Condition, Fn::And, Fn::Or, Fn::Contains, Fn::EachMemberEquals, Fn::EachMemberIn, Fn::ValueOf, Fn::ValueOfAll, Fn::RefAll, Fn::Sub]

ответ

1

Согласно http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-general.html#command-options-general-ec2vpc Вы должны предоставить запятыми список. Поэтому используйте Fn::Join (обратите внимание на два двоеточия)

+0

Спасибо. Глупая опечатка, я знаю, почему я ее не замечал, особенно при чтении сообщения об ошибке снова. – matsev