我的 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 启用它时它起作用了。
这是我解决它时使用的相关答案:
当我将 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 启用它时它起作用了。
这是我解决它时使用的相关答案: