我的 CodePipeline 没有在 s3 事件触发器上触发

My CodePipeline is not getting triggered on s3 event trigger

当我将 code.zip 上传到 s3-bucket 或使用 aws cli (aws s3 cp) 复制 code.zip 时,我的 CodePipeline 没有被触发。

Cloudformation 事件规则片段:

Type: AWS::Events::Rule
    Properties:
      EventPattern:
        source:
          - 'aws.s3'
        detail:
          eventSource:
            - 's3.amazonaws.com'
          eventName:
            - 'CopyObject'
            - 'PutObject'
            - 'CompleteMultipartUpload'
          requestParameters:
            bucketName:
              - 's3-bucket'
            key:
              - 'code.zip'
      State: 'ENABLED'
      Targets:
        -
          Arn: <CodePipeline ARN>'
          Id: 'Target-1'
          RoleArn: <trigger role ARN>

触发角色策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codepipeline:StartPipelineExecution"
            ],
            "Resource": "*"
        }
    ]
}

事件模式:

{
  "source": [
    "aws.s3"
  ],
  "detail": {
    "eventSource": [
      "s3.amazonaws.com"
    ],
    "requestParameters": {
      "bucketName": [
        "s3-bucket"
      ],
      "key": [
        "code.zip"
      ]
    },
    "eventName": [
      "CopyObject",
      "PutObject",
      "CompleteMultipartUpload"
    ]
  }
}

这里缺少什么?或者有人对如何进一步调试有任何指示吗?

有两种方法可以进一步调试。

首先你要确保你有一个有效的事件模式。最简单的方法是获取示例代码管道事件,然后通过 https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_TestEventPattern.html.

进行测试调用

接下来,如果您有工作规则,您可以检查指标 https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-monitoring-cloudwatch-metrics.html and setup DLQ https://docs.aws.amazon.com/eventbridge/latest/userguide/rule-dlq.html。两者都提供了规则是否匹配以及是否成功传递的可见性。

问题是事件没有从 S3 中触发,当我从 CloudTrail 启用它时它起作用了。

这是我解决它时使用的相关答案: