【发布时间】:2022-12-17 03:16:56
【问题描述】:
我有一个连接到我的 DynamoDB 流的 Lambda。它被配置为在满足两个条件时触发:
- 事件名称 = "修改"
- 状态 > 10
我的过滤器如下所示:
{"eventName": ["MODIFY"], "dynamodb": {"NewImage": {"status": [{"numeric": [">", 10]}]}}}
如果过滤器配置为仅在事件名称为 MODIFY 时触发,它会起作用,但是比这更复杂的任何事情都不会触发我的 Lambda。该事件如下所示:
{
"eventID": "ba1cff0bb53fbd7605b7773fdb4320a8",
"eventName": "MODIFY",
"eventVersion": "1.1",
"eventSource": "aws:dynamodb",
"awsRegion": "us-east-1",
"dynamodb":
{
"ApproximateCreationDateTime": 1643637766,
"Keys":
{
"org":
{
"S": "test"
},
"id":
{
"S": "61f7ebff17afad170f98e046"
}
},
"NewImage":
{
"status":
{
"N": "20"
}
}
}
}
使用 test_event_pattern 端点时,它确认过滤器有效:
filter = {
"eventName": ["MODIFY"],
"dynamodb": {
"NewImage": {
"status": [ { "numeric": [ ">", 10 ] } ]
}
}
}
response = client.test_event_pattern(
EventPattern=json.dumps(filter),
Event="{\"id\": \"e00c66cb-fe7a-4fcc-81ad-58eb60f5d96b\", \"eventName\": \"MODIFY\", \"dynamodb\": {\"NewImage\":{\"status\": 20}}, \"detail-type\": \"myDetailType\", \"source\": \"com.mycompany.myapp\", \"account\": \"123456789012\", \"time\": \"2016-01-10T01:29:23Z\", \"region\": \"us-east-1\"}"
)
print(response) >> {'Result': True, 'ResponseMetadata': {'RequestId':...}
有什么我忽略的吗? DynamoDB 过滤器是否不适用于实际的新图像?
【问题讨论】:
-
你找到解决办法了吗?我面临着同样的问题。
标签: aws-lambda amazon-dynamodb amazon-dynamodb-streams