#amazon-web-services #request #aws-api-gateway #amazon-sqs
#amazon-веб-сервисы #запрос #aws-api-шлюз #amazon-sqs
Вопрос:
Проблема в том, что мы передаем запрос с a amp;
в теле запроса, однако мы получаем ошибку Access to the resource ${Queue Path} is denied.
. Мы даже не проводим никаких проверок запросов. Запрос должен отправить тело сообщения в очередь в SQS. Любой другой запрос без указания amp;
в теле запроса работает. Очень странно
У кого-нибудь еще была такая же проблема?
body: { ... "merchant": "Hamp;M" ... }
Правка: Я буду более ясен. Итак, вот что мы сделали
- Мы настроили
api-gateway
конечную точку для входа этих веб-крючков.
например). ( https://randomURL.com/webhookListener/
)
- Мы настраиваем конечную
/webhookListener
точку с помощью выполнения метода POST со следующими параметрами
Integration Type: AWS Service AWS Service: SQS HTTP Method: POST Path Overide: Queue URL Content Handling: Passthrough Mapping Templates Request body passthrough: When there are no templates defined(recommended) Content-Type: application/json
- Пример запроса был бы похож на этот для нашей конечной точки
{ "body": { "eventId": "12345678", "event": "WEBHOOK_RECEIVED", "eventTimestamp": "2021-11-11T11:11:11Z", "userId": "123456", "transactionId": "11111-AAAAA-11111", "transactionAmount": 1000, "transactionCurrency": "USD", "transactionTimestamp": "2021-11-11T11:11:11Z", "merchant": "Hamp;M", }, "headers": { "Accept": "application/json", "Content-Type": "application/json; charset=UTF-8", }
- Мы ожидаем, что тело сообщения будет передано непосредственно в виде сообщения в очередь сообщений. Наш работник использует сообщения в очереди и выполняет некоторые действия.
Интересно, что это работает для большинства событий. Единственный раз, когда это не удается, — это когда у нас есть amp;
сообщение в теле сообщения, показанное в примере. (т. е.: "merchant": "Hamp;M"
) Вместо того, чтобы перейти в очередь, мы получаем ошибку Access to the resource ${Queue Path} is denied.
, я полагаю, что это связано с тем, как SQS анализирует сообщение в VTL, но я не совсем уверен.
Любая помощь будет с радостью оценена. В противном случае мне, возможно, просто придется настроить Лямбда-код для вызова отправки сообщения или проверки тела запроса перед отправкой его в очередь сообщений.
Комментарии:
1. Можете ли вы предоставить пример кода, чтобы мы могли попытаться воспроизвести ситуацию?
2. Я добавил больше объяснений в ту
edit
часть вопроса. Я надеюсь, что это поможет прояснить ситуацию.3. Думаете, тело нужно закодировать —
"Hamp;amp;M"
работает ли это?4. Нет, это не работает. Это дает мне ту же ошибку.