Я пытаюсь создать прокси-сервер для AWS SQS из API-шлюза, но у меня возникают трудности с шаблоном сопоставления тела.
Я получаю запрос с application/x-www-form-urlencoded
типом контента: IDLote=lote434&IDCliente=5&Status=22&Resposta=testmessage
Итак, я создал следующий шаблон (чтобы отобразить значения формы в объект JSON, чтобы затем сериализовать в тело сообщения - я не уверен, что есть лучший способ сделать это):
#set($idLote = "")
#set($idCliente = "")
#set($status = "")
#set($resposta = "")
#foreach( $token in $input.path('$').split('&') )
#set( $keyVal = $token.split('=') )
#set( $keyValSize = $keyVal.size() )
#if( $keyValSize >= 1 )
#set( $key = $util.urlDecode($keyVal[0]) )
#if( $keyValSize >= 2 )
#set( $val = $util.urlDecode($keyVal[1]) )
#else
#set( $val = '' )
#end
#if( $key == "IDLote" )
#set($idLote = $val)
#elseif( $key == "IDCliente" )
#set($idCliente = $val)
#elseif( $key == "Status" )
#set($status = $val)
#elseif( $key == "Resposta" )
#set($resposta = $val)
#end
#end
#end
#set($event = "{
""idLote"": ""1"",
""idCliente"": ""2"",
""status"": ""3"",
""resposta"": ""434""
}")
Action=SendMessage&MessageGroupId=2&MessageBody=TestMessage
После преобразования тело выглядит так: Action=SendMessage&MessageGroupId=2&MessageBody=TestMessage
как и ожидалось (поскольку я не использую созданный JSON).
Но я получаю ошибку от SQS: <?xml version="1.0"?>SenderAccessDenied
Доступ к ресурсу https://sqs.us -east-1.amazonaws.com / XXXXXXXXX / queue-events.fifo запрещен. 92f717d8-369c-58c8-abe9-4473b9fb2aab
Но если я уберу #foreach из моего шаблона и оставлю его так:
#set($event = "{
""idLote"": ""1"",
""idCliente"": ""2"",
""status"": ""3"",
""resposta"": ""434""
}")
Action=SendMessage&MessageGroupId=2&MessageBody=TestMessage
Все работает как положено.Преобразованное тело запроса такое же, как и в прошлый раз, но на этот раз оно работает.
Я предоставил полный доступ к SQS, но все еще получаю ошибку.
Я считаю, что я делаю что-то не так, но я не могу точно определить, что именно.
Может кто-нибудь помочь?Спасибо