Доступ к SQS запрещен с

#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" ... }  

Правка: Я буду более ясен. Итак, вот что мы сделали

  1. Мы настроили api-gateway конечную точку для входа этих веб-крючков.

например). ( https://randomURL.com/webhookListener/ )

  1. Мы настраиваем конечную /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  
  1. Пример запроса был бы похож на этот для нашей конечной точки
 { "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", }  
  1. Мы ожидаем, что тело сообщения будет передано непосредственно в виде сообщения в очередь сообщений. Наш работник использует сообщения в очереди и выполняет некоторые действия.

Интересно, что это работает для большинства событий. Единственный раз, когда это не удается, — это когда у нас есть amp; сообщение в теле сообщения, показанное в примере. (т. е.: "merchant": "Hamp;M" ) Вместо того, чтобы перейти в очередь, мы получаем ошибку Access to the resource ${Queue Path} is denied. , я полагаю, что это связано с тем, как SQS анализирует сообщение в VTL, но я не совсем уверен.

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

Комментарии:

1. Можете ли вы предоставить пример кода, чтобы мы могли попытаться воспроизвести ситуацию?

2. Я добавил больше объяснений в ту edit часть вопроса. Я надеюсь, что это поможет прояснить ситуацию.

3. Думаете, тело нужно закодировать — "Hamp;amp;M" работает ли это?

4. Нет, это не работает. Это дает мне ту же ошибку.