DynamoDB流/ Lambda的空事件对象

时间:2019-06-30 05:52:32

标签: amazon-web-services aws-lambda amazon-dynamodb amazon-dynamodb-streams

我已将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"
        }
    ]
}

1 个答案:

答案 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)