相关疑难解决方法(0)

使用 API Gateway POST 到 SQS 时无法确定要授权的服务/操作名称

按照此处接受的答案,我尝试配置 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", …
Run Code Online (Sandbox Code Playgroud)

amazon-sqs amazon-web-services aws-api-gateway

4
推荐指数
1
解决办法
4690
查看次数

AWS Api Gateway 使用消息属性连接到 SQS

我已经按照本教程连接了一个 Api 网关方法来推送到 SQS 队列。

https://dzone.com/articles/creating-aws-service-proxy-for-amazon-sqs

这一切都很好,但我想使用一些路径参数向我的消息添加一些消息属性,但我无法让它工作。

这是教程中的当前映射模板。

Action=SendMessage&MessageBody=$util.urlEncode($util.escapeJavaScript($input.json('$')))
Run Code Online (Sandbox Code Playgroud)

我试图保留“application/x-www-form-urlencoded”格式,并通过将其更改为(现在使用静态值)将 MessageAttributes 添加到此

    Action=SendMessage&MessageBody=$util.urlEncode($util.escapeJavaScript($input.json('$')))
&MessageAttribute[0][Name]=foo&MessageAttribute[0][Type]=String&MessageAttribute[0][Value]=bar
Run Code Online (Sandbox Code Playgroud)

但我得到了这个错误

{
  "Error": {
    "Code": "MalformedQueryString",
    "Message": "Keys may not contain [",
    "Type": "Sender"
  },
  "RequestId": "ea121e6e-ca37-5d14-b92b-4a2c6fedf403"
}
Run Code Online (Sandbox Code Playgroud)

我应该如何在不使用“[”的情况下对 MessageAttribues 数组进行编码

amazon-sqs amazon-web-services aws-api-gateway

3
推荐指数
2
解决办法
3667
查看次数

apigateway websocket sqs 集成

我正在尝试将 API 网关 WebSocket 路由与 SQS 集成。

我已使用以下属性配置了 SQS 集成

AWS 区域:ap-southeast-1 AWS 服务:SQS HTTP 方法:POST 路径覆盖:111111110111/my-queue

配置请求模板为

“操作=SendMessage&MessageBody=$util.urlEncode($input.body)##

设置($context.requestOverride.header.Content-Type =“application / x-www-form-urlencoded”)##“

当我尝试将数据发送到 SQS 时,它失败并出现以下错误

错误:

(VK1mEHZSyQ0FlZg=) 转换后的端点请求正文:Action=SendMessage&MessageBody=foobar (VK1mEHZSyQ0FlZg=) 正在将请求发送到https://sqs.ap-southeast-1.amazonaws.com/111111110111/my-queue (VK1mEHZSyQ0FlZg=) 已收到响应。集成延迟:16 毫秒 (VK1mEHZSyQ0FlZg=) 转换前的端点响应正文:无法确定要授权的服务/操作名称

amazon-sqs amazon-web-services websocket aws-api-gateway

3
推荐指数
1
解决办法
4101
查看次数

如何在没有访问密钥和秘密密钥的情况下写入只写SQS队列

我有一个网站,该网站将客户端的消息写入Amazon SQS队列。每个人都可以写到队列中。我们有一个服务器端进程,该进程读取队列消息并进行处理。

队列配置了对所有人的写访问权限,这是其策略:

{
  "Version": "2012-10-17",
  "Id": "arn:aws:sqs:.../SQSDefaultPolicy",
  "Statement": [{
      "Sid": "Sid1537097246229",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "SQS:SendMessage",
      "Resource": "arn:aws:sqs:..."
  }]
}
Run Code Online (Sandbox Code Playgroud)

但是,如果没有访问密钥和秘密密钥,我们似乎无法写入队列。AWS开发工具包返回错误,指出未提供凭证。我们正在使用AWS SQS文档中描述的代码。

javascript amazon-sqs amazon-web-services

2
推荐指数
1
解决办法
321
查看次数