AWS Cloudformation:如何在 AWS 弹性 beanstalk 配置中引用多个安全组

Posted

技术标签:

【中文标题】AWS Cloudformation:如何在 AWS 弹性 beanstalk 配置中引用多个安全组【英文标题】:AWS Cloudformation: how to refer multiple security groups in AWS elastic beanstalk configuration 【发布时间】:2018-02-09 07:35:50 【问题描述】:

我是 AWS Cloudformation 世界的新手。我正在尝试创建一个 elasticbeanstalk 配置模板。因为它是其中一种设置,我需要使用两个安全组。所以,我给它如下

  MyConfigurationTemplate:
  Type: AWS::ElasticBeanstalk::ConfigurationTemplate
  Properties:
  Properties:
  ApplicationName:  MyApplication
  Description: A default Application
  SolutionStackName: SolutionStack
  OptionSettings:
  ....
  ....
  - Namespace: aws:autoscaling:launchconfiguration
    OptionName: SecurityGroups
    Value:
      !If
        - ConditionIsTrue
        - [!Ref FirstGroup, !ImportValue SecondGroup]
        - !Ref FirstGroup
  ....
  ....

我从 AWS 文档 here 中读到,SecurityGroups 是一个列表,我们可以提供逗号分隔的列表。但这对我不起作用。 AWS 抛出以下错误

属性Value的值必须是String类型

我尝试通过以下方式为安全组赋予价值,但都没有奏效。

1) "!Ref FirstGroup, !ImportValue SecondGroup"

2) !Ref FirstGroup, !ImportValue SecondGroup

知道如何提供此安全组列表吗?

【问题讨论】:

【参考方案1】:

我自己通过反复试验得到了它。因为它接受逗号分隔的列表。我们需要使用 !join 如下。

MyConfigurationTemplate:
Type: AWS::ElasticBeanstalk::ConfigurationTemplate
Properties:
  ApplicationName:  MyApplication
  Description: A default Application
  SolutionStackName: SolutionStack
  OptionSettings:
  ....
  ....
  - Namespace: aws:autoscaling:launchconfiguration
    OptionName: SecurityGroups
    Value:
    !If
      - ConditionIsTrue
      - !Join [',', [!Ref FirstGroup, !ImportValue SecondGroup]]
      - !Ref FirstGroup
  ....
  ....

【讨论】:

以上是关于AWS Cloudformation:如何在 AWS 弹性 beanstalk 配置中引用多个安全组的主要内容,如果未能解决你的问题,请参考以下文章

AWS::CloudFormation::Init 它是如何工作的?

如何在 aws Secrets Manager 服务中管理 aws RDS(由 cloudformation 创建)的主用户凭证?

如何使用 AWS CloudFormation 在 AWS API Gateway 上应用安全策略?

如何使用 Cloudformation 在 AWS RestAPI 中创建嵌套资源路径?

如何使用 aws cloudformation 模板在 aws cognito 用户池中设置所需属性?

如何在 AWS CloudFormation YAML 模板中转义策略变量