【问题标题】:Can cloudformation SSM dynamic reference with type StringList resolve to list?类型为 StringList 的 cloudformation SSM 动态引用能否解析为列表?
【发布时间】:2022-04-20 23:22:41
【问题描述】:

cloudformation 模板支持对 SSM 参数的动态引用

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html

文档说明你可以Use the ssm dynamic reference to include values stored in the Systems Manager Parameter Store of type String or StringList in your templates.

我们正在尝试使用语法{{resolve:ssm:parameter-name:version}} 在模板中引用StringList 类型的参数,并将其解析为模板中的字符串列表(更具体地说,是EC2 实例的SecurityGroupId 列表)。这没有奏效,并且文档没有指定如何执行此操作或是否受支持。我们尝试过使用Fn::Split,但似乎在解析动态值之前调用了它。我们无法在模板的参数部分中使用 SSM 值,该部分对此进行了记录。有谁知道是否可以将{{resolve ... 添加到字符串列表中?

【问题讨论】:

  • 你能分享你的CF模板吗?有任何错误信息吗?

标签: amazon-cloudformation amazon-systems-manager


【解决方案1】:

AWS Support 已回复我关于此问题的请求,并解释说我的问题的答案是,目前不支持。他们的回应全文如下。

目前,CFN 可以采用 StringList 类型,但此类 StringList 以逗号分隔的字符串值形式返回,从而导致一个长字符串。因此,如果我们需要它成为多个值,例如数组或字符串列表,例如 EC2 实例的 SecurityGroup Id 列表,目前不支持。

话虽如此,我进一步挖掘并发现我们内部将此作为现有功能请求,我已将您的声音添加到该请求中,以帮助获得对该功能的更多关注。我没有 ETA 可以分享,因为服务团队对他们的时间表/工作日志很谨慎。但是,如果/当该功能可用时,应在以下地方公开宣布:

【讨论】:

    【解决方案2】:

    在等待 AWS 为 {{resolve: ... 动态引用实现待处理功能请求以解析为“字符串列表”类型时,您可以使用 AWS::SSM::Parameter::Value<List<String>>SSM parameter type 当前解决此问题,默认值对应于您要引用的 SSM 参数:

    Parameters:
      SecurityGroups:
        Type: AWS::SSM::Parameter::Value<List<String>>
        Default: security-groups
    Resources:
      Type: AWS::EC2::Instance
      Properties:
        SecurityGroupIds: !Ref SecurityGroups
    

    【讨论】:

      【解决方案3】:

      如果您需要使用 CDK v2 打字稿解决此问题,则以下不幸的限制适用于您需要先验知道 StringList 的大小。

      const paramName = "/test/param";  
        
      const cfnParameter = new CfnParameter(this, "ListParam", {type: "AWS::SSM::Parameter::Value<List<String>>", default: paramName});  
      const list = cfnParameter.valueAsList;  
      const size = 3
      for (let i = 0; i < size; i++) {  
        new CfnOutput(this, `Output${i}`, {value: Fn.select(i, list)})  
      }
      

      似乎没有办法实际确定 list 的大小,因为实体是一个令牌,仅在 CDK 部署时解析,并且在此之前只有 1 的长度。

      【讨论】:

        猜你喜欢
        • 2021-03-01
        • 2022-08-18
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        • 1970-01-01
        • 2021-12-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多