Amazon web services Cloudformation:如何根据用户输入配置资源

Amazon web services Cloudformation:如何根据用户输入配置资源,amazon-web-services,amazon-cloudformation,Amazon Web Services,Amazon Cloudformation,面对这种情况时,我正在为beanstalk编写Cloudformation模板。我的模板中有以下代码 SecurityGroupIngress: - IpProtocol: tcp FromPort: '80' ToPort: '80' SourceSecurityGroupId: !Ref ELBSecGroupForBeanStalk - IpProtocol: tcp FromPort: '22' ToPort:

面对这种情况时,我正在为beanstalk编写Cloudformation模板。我的模板中有以下代码

 SecurityGroupIngress:
    - IpProtocol: tcp
      FromPort: '80'
      ToPort: '80'
      SourceSecurityGroupId: !Ref ELBSecGroupForBeanStalk
    - IpProtocol: tcp
      FromPort: '22'
      ToPort: '22'
      CidrIp: !If
        - Range
        - !Ref AcessIPRange
        - !Ref 'AWS::NoValue'
    - IpProtocol: tcp
      FromPort: '22'
      ToPort: '22'
      SourceSecurityGroupId: !If
        - SecurityGroupRange
        - !Ref CustomeSecurityGroup
        - !Ref 'AWS::NoValue'
现在你可以看到我有硬编码端口22和80,但我如何使他们可配置


假设一个用户要添加4个端口或6个端口。我想使可配置,因此可以使用相同的模板。我可以使它们参数化,但无法使其可配置

不幸的是,仅仅依靠云层形成是无法实现这一目标的。这将是一个动态的资源数量,这不是CF的一部分

您最好的选择是:

  • 使用类似的工具动态生成将要使用的CloudFormation模板(因此具有动态数量的端口)
  • 在模板上使用,而不是指定
    securitygroupingres
    。Lambda函数将SecurityGroupId以及端口号作为参数。从那里,您可以调用AWSAPI(使用NodeJS、Python或任何与Lambda一起工作的工具)并添加所需的端口。不要忘了在更新模板时包含更新和删除规则的代码