У меня возникла проблема при вызове API GET REST (Regional), который затем вызывает API-интерфейс сканирования DynamoDB для получения всех элементов таблицы с именем City-Temperature.
В качестве параметра запроса я m добавление только 'tablename', поскольку требуется вызвать DynamoDB: Scan API. Но при тестировании API, я получаю статус 400 от DynamoDB с ошибкой следующим образом:
{
"__type": "com.amazon.coral.validate#ValidationException",
"message": "1 validation error detected: Value null at 'tableName' failed to satisfy constraint: Member must not be null"
}
Для простоты таблица DynamoDB "City-Temperature" содержит пять элементов с каждым элементом 'City' ( первичный ключ - String), содержащий один атрибут (строку) «Temperature».
Мои шаги для создания прокси службы API:
- Создан новый API REST.
- Создан ресурс с именем "get-towns-temp"
- Создан дочерний ресурс с именем 'table-name' с путем {tablename}
- Создан метод GET для дочернего ресурса с:
- Тип интеграции: AWS Служба
- Регион: такой же, как регион DynamoDB
- Служба: DynamoDB
- Действие: Сканирование
- Метод HTTP : POST (поскольку все запросы к DynamoDB выполняются с использованием POST)
- Роль выполнения ARN: (Предполагается, что роль создана для API-шлюза и прикреплена политика, которая допускает только одно действие «DynamoDB: Сканирование» с указанием ресурса ARN). в таблицу DyanmoDB "Город-температура". * 10 29 *
- На панели Integration-Method я оставил «Обработка контента» в «passthrough» и добавил шаблон отображения с типом контента «application / json» для преобразования запроса с одним параметр 'tablename' должен быть совместим с DynamoDB следующим образом:
Для добавления здесь: 'Request Body Passthrough' установлен на 'Когда шаблоны не определены (рекомендуется)'
{
"tableName": "$input.params('tablename')"
}
Наконец, в разделе теста я добавляю tablename = City-Temperature в качестве строки запроса, чтобы передать имя таблицы для Scan API, и нажимаю «Test». Но в ответ выдается ошибка, как упомянуто выше.
Обновление:
В журналах после преобразования правильно выглядит тело запроса: { "tablename": "City-Temperature" }
. Но все же ошибка та же, что и выше