Как опубликовать тестовое событие Kinesis из Postman в локальную функцию Lambda, работающую на сервере? - PullRequest
1 голос
/ 13 апреля 2019

Извините, я не был уверен, как сделать сам вопрос достаточно кратким ...

Я могу отправлять данные из Почтальона в мою локальную функцию Lambda. Проблема в том, что при локальном запуске я использую эту строку кода ...

event = JSON.parse(event.body);

... чтобы я мог это сделать ...

event.Records.forEach(function(record)
{
   // do some stuff
}

Но при развертывании функции в AWS парсинг event.body не нужен. На самом деле это выдает ошибку.

Я предполагал, что в JSON (или в других аспектах запроса) есть что-то другое, что я отправляю из Postman в мое локальное приложение, по сравнению с тем, что фактически отправляет Kinesis. Но BLOB-объект JSON, который я публикую локально, был зарегистрирован напрямую из Lambda на AWS в Cloudwatch.

Я что-то упустил.

TBH, это имеет значение только потому, что необходимость закомментировать эту строку в качестве шага в процессе развертывания является раздражающей и подверженной ошибкам.

Вот JSON (имена были изменены, чтобы защитить невинных):

{
    "Records": [
        {
            "kinesis": {
                "kinesisSchemaVersion": "1.0",
                "partitionKey": "Thursday, 11 April 2019",
                "sequenceNumber": "49594660145138471912435706107712688932829223550684495922",
                "data": "some base 64 stuff",
                "approximateArrivalTimestamp": 1555045874.83
            },
            "eventSource": "aws:kinesis",
            "eventVersion": "1.0",
            "eventID": "shardId-000000000003:1234123412341234123412341234123412341234123412341234",
            "eventName": "aws:kinesis:record",
            "invokeIdentityArn": "arn:aws:iam::1234123412341234:role/lambda-kinesis-role",
            "awsRegion": "us-west-2",
            "eventSourceARN": "arn:aws:kinesis:us-west-2:1234123412341234:stream/front-end-requests"
        }
    ]
}
...