我已将DynamoDB流设置为触发简单的Lambda函数,该函数可触发该函数但返回一个空的事件对象。我期待键,Oldimage,Newimage等的正常响应。
当我在控制台中手动测试该功能以及使用API Gateway触发该功能时,该事件将正确传递。我的执行角色具有管理员访问权限。我什至以同样的问题复制了aws流/ lambda教程。这应该很简单,并且让我发疯!
我的功能再简单不过了:
def get_event(event, context):
print(event)
return {
'statusCode': 200,
'body': event
}
这是我的CloudWatch Log,带有空事件:
"StatusCode": 200,
"LogResult": START RequestId: 48ec33f4-8707-4d16-9f53-4c7fcf7413d1 Version: $LATEST
{}
END RequestId: 48ec33f4-8707-4d16-9f53-4c7fcf7413d1
REPORT RequestId: 48ec33f4-8707-4d16-9f53-4c7fcf7413d1 Duration: 7.74 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 71 MB
如果有用,我的函数的事件源映射
{
"EventSourceMappings": [
{
"UUID": "ce6d850*********************",
"BatchSize": 100,
"EventSourceArn": "arn:aws:dynamodb:us-east- 1:**********:table/EventsDatabase/stream/2019-06-24T14:02:23.578",
"FunctionArn": "arn:aws:lambda:us-east-1:***********:function:email_sender",
"LastModified": 1561872060.0,
"LastProcessingResult": "OK",
"State": "Enabled",
"StateTransitionReason": "User action"
}
]
}
答案 0 :(得分:0)
我无法从自己的角度复制问题。也许您的lambda容器已过期。您是否尝试过强制启动新的lambda容器,甚至删除整个lambda并重新启动可能可行?参见Force Discard AWS Lambda Container。我尝试了类似的方法,它对我有用(我正在使用Python 3.7):
import json
def lambda_handler(event, context):
print(event)
# print("got event: " + json.dumps(event))
get_event(event, context)
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
def get_event(event, context):
print(event)