Eri*_*ood 4 amazon-sqs amazon-web-services aws-api-gateway
按照此处接受的答案,我尝试配置 API 网关以使用 POST 而不是 GET(我能够使 GET 工作)向 SQS 发送消息。使用 POST 时,我得到以下响应:
<AccessDeniedException>
<Message>Unable to determine service/operation name to be authorized</Message>
</AccessDeniedException>
Run Code Online (Sandbox Code Playgroud)
这是我的映射模板的配置方式
#set($clientKey = $input.params('clientkey'))
#set($url = "https://sqs.us-east-2.amazonaws.com/XXXXXXXX/SomeQueuePrefix-${clientKey}-SomeQueueEnvironment.fifo")
Action=SendMessage##
&QueueUrl=$util.urlEncode($url)##
&MessageGroupId=$input.params('messageGroupId')##
&MessageDeduplicationId=1##
&MessageBody=$util.urlEncode($input.body)
Run Code Online (Sandbox Code Playgroud)
看起来它正确地映射了身体
Wed Nov 14 20:39:44 UTC 2018 : Endpoint request body after transformations: Action=SendMessage&QueueUrl=https%3A%2F%2Fsqs.us-east-2.amazonaws.com%2FXXXXXXXXX%2FSomeQueuePrefix-TEST-SomeQueueEnvironment.fifo&MessageGroupId=3&MessageDeduplicationId=1&MessageBody=%7B%0A++++%22configurationId%22%3A+1%0A%7D
Wed Nov 14 20:39:44 UTC 2018 : Sending request to https://sqs.us-east-1.amazonaws.com//
Run Code Online (Sandbox Code Playgroud)
我的 IAM 政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Resource": [
"arn:aws:sqs:us-east-1:XXXXXXXXX:CADAUTO-*-DEV.fifo"
],
"Action": [
"sqs:SendMessage",
"sqs:ReceiveMessage",
"sqs:DeleteMessage"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
有人能明白为什么这不起作用吗?
Har*_*nan 11
SQS 期望内容类型为“Content-Type”到“application/x-www-form-urlencoded”。在 API 网关设置中的 HTTP 标头中设置它解决了我的问题。
| 归档时间: |
|
| 查看次数: |
4690 次 |
| 最近记录: |