Пустой объект события с DynamoDB Stream / Lambda - PullRequest
0 голосов
/ 30 июня 2019

Я установил поток DynamoDB для запуска простой лямбда-функции, которая работает для запуска функции, но возвращает пустой объект события. Я ожидаю обычного ответа с ключами, Oldimage, Newimage и т.д ...

Событие передается правильно, когда я тестирую функцию вручную в консоли, а также когда я запускаю ее с помощью API Gateway. Моя роль «Выполнение» имеет права администратора. Я даже повторил туториал AWS Stream / 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 голосов
/ 30 июня 2019

Я не могу повторить проблему со своей стороны. Может быть, ваш лямбда-контейнер устарел. Вы пытались принудительно запустить новый лямбда-контейнер или даже удалить всю лямбду и запустить снова? См. Принудительное удаление лямбда-контейнера AWS . Я попробовал что-то вроде этого, и это сработало для меня (я использую 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)
...