Amazon web services 使用API网关发布到SQS时,无法确定要授权的服务/操作名称

Amazon web services 使用API网关发布到SQS时,无法确定要授权的服务/操作名称,amazon-web-services,aws-api-gateway,amazon-sqs,Amazon Web Services,Aws Api Gateway,Amazon Sqs,根据公认的答案,我尝试配置一个API网关,使用POST而不是GET向SQS发送消息(我能够使GET工作)。在使用POST时,我得到以下响应: <AccessDeniedException> <Message>Unable to determine service/operation name to be authorized</Message> </AccessDeniedException> 看起来它正确地映射了身体 Wed Nov 14

根据公认的答案,我尝试配置一个API网关,使用POST而不是GET向SQS发送消息(我能够使GET工作)。在使用POST时,我得到以下响应:

<AccessDeniedException>
  <Message>Unable to determine service/operation name to be authorized</Message>
</AccessDeniedException>
看起来它正确地映射了身体

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//

我的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"
            ]
        }
    ]
}

有人知道为什么这样做不起作用吗?

SQS希望内容类型为“内容类型”到“应用程序/x-www-form-urlencoded”。在API网关设置的HTTP头中设置此选项解决了我的问题。

刚刚遇到了相同的问题。使用上述@Hari Krishnan的建议是解决方案的一部分;我需要为我的用例使用一个额外的映射模板。
为我解决了问题。

请验证在集成请求中,HTTP方法是否设置为
POST
。谢谢。我发布了我的集成请求的屏幕截图。HTTP方法设置为POST;其他一切看起来都正常吗?我不认为在集成请求中定义path参数是按照您的意图进行的,这可能会有问题,尽管我可能弄错了。还有一种可能是,由于模板前两行末尾缺少
##
,服务变得混乱。我觉得无论是什么原因导致了这种情况,都将是一些相对次要的事情,看起来/微妙/不明显。path参数被正确替换,因为我可以看到请求与预期的正文一起发送(在本例中,clientKey是'TEST',您可以从请求正文中QueueUrl参数的值中看到这一点。我想知道请求url中的双斜杠,但如果我去掉/去掉路径覆盖,请求就会失败。我注意到正文中的区域是us-east-2,而我们的队列位于us-east-1。我想我已经找到了foreh错误的原因显而易见。但在我将其更改为us-east-1后,我仍然遇到相同的问题。我添加了我的策略,以防其中有任何内容。我尝试硬编码“TEST”以及使用“*”作为资源,但都没有任何效果。
{
    "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"
            ]
        }
    ]
}