如何使用 CommaDelimitedList 参数创建资源 ARNS 列表?

How to create list of resource ARNS using a CommaDelimitedList parameter?

我正在尝试创建一个 Cloudwatch 事件规则,它将使用多个代码管道作为源和触发器目标。

Parameters:
  SourcePipeline:
    Description: Name of Source codepipeline
    Type: CommaDelimitedList
    Default: 'test3, test4'

Resources:
  PipelineTrigger:
    Type: 'AWS::Events::Rule'
    Properties:
      EventPattern:
        source:
          - aws.codepipeline
        resources: !Split 
          - ','
          - !Sub 
            - 'arn:aws:codepipeline:${AWS::Region}:${AWS::AccountId}:${pipeline}'
            - pipeline: !Join 
                - ',arn:aws:codepipeline:${AWS::Region}:${AWS::AccountId}:'
                - !Ref SourcePipeline

预计 resources 如下:

  "resources": ["arn:aws:codepipeline:us-east-1:123:test3","arn:aws:codepipeline:us-east-1:123:test4"],

知道如何将姓名列表作为参数传递吗?

@FYI 参考我正在关注 Using Lists of ARNs

首先应该是!Ref SourcePipelines。其次,您忘记了逗号。你不能按照你想要的方式做到这一点。这是因为,要加入的第一个参数必须是文字字符串,而不是任何 CloudFormation 表达式或函数。所以你必须硬编码你的帐户 ID 和区域:

        resources: !Split
          - ','
          - !Sub
            - 'arn:aws:codepipeline:${AWS::Region}:${AWS::AccountId}:${pipeline}'
            - pipeline: !Join
                - ',arn:aws:codepipeline:us-east-1:12312321:'
                - !Ref SourcePipelines