这个问题通常发生在Lambda函数配置的S3触发器有多个规则时。要解决这个问题,需要在S3 Bucket配置页面的'Properties”选项卡下找到'Events”一栏,然后将重叠的事件类型整合成一个规则。
例如,下面这个S3触发器的配置,当Bucket中新增或修改一个以'.txt”结尾的文件以及以'.jpg”结尾的文件,Lambda函数都会被触发,就会产生以上报错。
{
"LambdaFunctionConfigurations": [
{
"LambdaFunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:myFunction",
"Events": [
"s3:ObjectCreated:*"
],
"Filter": {
"Key": {
"FilterRules": [
{
"Name": "suffix",
"Value": ".txt"
}
]
}
}
},
{
"LambdaFunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:myFunction",
"Events": [
"s3:ObjectCreated:*"
],
"Filter": {
"Key": {
"FilterRules": [
{
"Name": "suffix",
"Value": ".jpg"
}
]
}
}
}
]
}
为了解决这个问题,我们需要将两个规则整合成一个,避免重叠。
{
"LambdaFunctionConfigurations": [
{
"LambdaFunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:myFunction",
"Events": [
"s3:ObjectCreated:*"
],
"Filter": {
"Key": {
"FilterRules": [
{
"Name": "suffix",
"Value": ".txt"
},
{
"Name": "suffix",
"Value": ".jpg"
}
]
}
}
}
]
}
这样就可以避免重叠规则导致的报错了。