Добавить объект JSON в Тело API-шлюза к прокси-серверу Kinesis?

84
5

Я настроил API-шлюз как прокси-сервер Kinesis, как описано в Учебник Amazons для размещения записи в потоке Kinesis.


HTTP-заголовки для запроса интеграции:


    stream-name отображается на method.request.header.stream-name
    partition-key отображается на method.request.header.partition-key
    Content-Type отображается на application/x-amz-json-1.1

Шаблон отображения тела для типа контента application/json выглядит так:


{
"StreamName": "$input.params('stream-name')",
"PartitionKey": "$input.params('partition-key')",
"Data": "$util.base64Encode({"rows": "$input.json('$')", "uuid": "$input.params('uuid')"})"
}

Данные поступают как полезная информация JSON-запроса. Мы должны добавить параметр uuid в качестве ключа JSON-объекта в полезную нагрузку данных для Kinesis, но закодированные данные, отправляемые в Kinesis, не являются объектами JSON.


Требуется добавить параметр uuid в качестве ключа json-object в полезную нагрузку данных для кинези. Проблема, с которой я сталкиваюсь, заключается в том, что закодированные данные, отправленные в кинезис, не являются объектом JSON.


Данные, которые я ожидаю отправить в Kinesis, должны быть объектами JSON:


{
"rows": [{"id": 1, "name": "a"}, {"id": 2, "name": "b"}],
"uuid": "0001"
}

Но фактические данные, отправленные в Kinesis, выглядят следующим образом:


{
rows=[{"id": 1, "name": "a"}, {"id": 2, "name": "b"}],
uuid=0001
}

Как я могу отправить объект JSON из шлюза API в Kinesis? Я экспериментировал с $util.parseJson, но не смог найти решение для этого сценария.

спросил(а) 2016-06-20T06:02:00+03:00 4 года, 7 месяцев назад
1
Решение
94

Вам нужно избежать двойных кавычек в шаблонах скорости


#set($event =  "{
""rows"": ""$input.json('$')"",
""uuid"": ""$input.params('uuid')"",
}")
{
"StreamName": "$input.params('stream-name')",
"Data": "$util.base64Encode($event)",
"PartitionKey": "$input.params('partition-key')"
}

Вот аналогичный вопрос на форумах aws для отправки данных в кинезис через api gateway https://forums.aws.amazon.com/thread.jspa?threadID=233060

ответил(а) 2016-06-20T10:16:00+03:00 4 года, 7 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема