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

2024-01-15

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

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

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

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

Action=SendMessage&MessageBody=$util.urlEncode($util.escapeJavaScript($input.json('$')))

我尝试保留“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

但我得到了这个错误

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

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


The SQS API 参考 https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html并没有完全清楚地说明这一点,事实上,这似乎与服务真正期望看到的内容有些不一致。在电线上,它使用.member.N.符号,和N是从 1 开始的,而不是从 0 开始的。还,MessageAttributes是复数。

预期的格式如下所示:

&MessageAttributes.member.1.Name=source_ip##
&MessageAttributes.member.1.Value.DataType=String##
&MessageAttributes.member.1.Value.StringValue=$util.urlEncode($context.identity.sourceIp)##
&MessageAttributes.member.2.Name=user_agent##
&MessageAttributes.member.2.Value.DataType=String##
&MessageAttributes.member.2.Value.StringValue=$util.urlEncode($context.identity.userAgent)##
&MessageAttributes.member.3.Name=stage##
&MessageAttributes.member.3.Value.DataType=String##
&MessageAttributes.member.3.Value.StringValue=$util.urlEncode($context.stage)##

The ##是为了可读性。构建 Web 表单时,映射模板中不能有换行符,因为它们最终会出现在表单本身中,并且##告诉 VTL 从这里到行尾的所有内容都将被忽略,包括行尾的换行符。否则嵌入的换行符会导致表单构造不正确。

另请注意,API 不允许这些值为空,因此如果有任何属性可能不存在,您将需要额外的逻辑来测试这一点并将属性替换为其他内容,因为索引号(iirc) 必须是连续的。

为什么我们使用主体映射模板来构建 API Gateway + SQS 的 Web 表单,以及有关如何配置它的更多信息,我的回答中也有更详细的解释是否可以使用 POST 正文 POST 到 SQS URL? https://stackoverflow.com/a/49566676/1695906

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AWS Api Gateway 使用消息属性连接到 SQS 的相关文章

随机推荐

  • C++/WinRT(Windows SDK 17134 的一部分)与 Visual Studio 15.8 Preview 3 不兼容

    尝试编译以下代码 include
  • 从另一个类访问静态变量

    我在同一个包中有两个类 我已经宣布了static variable在一个类中 并且想要在另一个类中访问该变量 这是我的代码 其中声明了静态变量 public class wampusGUI extends javax swing JFram
  • 重复使用黄瓜步骤

    我想重复使用一些黄瓜步骤 但似乎找不到正确的方法 我想写一个这样的步骤 Given I login with credentials type do stuff with type being one of invalid or valid
  • 了解自下而上的杆切割实施

    In 算法导论 CLRS https rads stackoverflow com amzn click com 0262033844 科门等人 下面谈谈解决切棒问题 第369页 EXTENDED BOTTOM UP CUT ROD p n
  • 如何用计算表达式替换捕获组(向捕获组添加整数值)

    我需要用这种格式转换一些字符串 B12F34 类似的事情 12号楼 34楼 但我必须向第二个捕获组添加一个值 例如 10 这样新字符串将如下所示 12号楼 楼44 我可以使用这个 postgres 句子来完成几乎所有事情 但我不知道如何将值
  • 如何抑制 Flash 迁移警告 (1090)

    在 Flash Professional CS4 中 当我使用鼠标 键盘输入处理程序名称 例如 onMouseDown onKeyUp 等 时 我会收到 迁移问题 警告 即使我已为它们添加了事件侦听器 这些名称对于函数来说是完全合法的 但由
  • 让 Ninject 管理我的交易状态,实践关注点

    我让 Ninject 管理我的ISession and ITransaction使用以下注册方法在 Fluent nHibnerate 中进行状态 我想知道它是否足以控制事务 或者我是否需要将其放在其他地方 想法是 每个ISession根据
  • 哎呀!失去与未定义的连接 - 连接建立后立即失去连接

    过去几天我一直在尝试 spring 4 websocket 但有一个问题 我正在使用 apache tomcat 8 这不是一个 Maven 项目 这是我的片段 索引 jsp
  • css - 如何拉伸和自动调整背景图像大小

    我试图让我的背景图像延伸到整个页面 但到目前为止我有这个 这是我想要在浏览器窗口中拉伸的图片 我的外部 CSS 包含以下代码 hr color sienna p margin left 20px body background image
  • 从另一个线程关闭表单

    我有这个运行的代码 exe string openEXE C Users marek Documents Visual Studio 2012 Projects tours tours bin Debug netpokl exe Proce
  • 如何扩展 MongoDB?

    我知道 MongoDB 可以垂直扩展 如果我的磁盘空间不足怎么办 我目前正在使用 EC2 和 EBS 如您所知 我必须为 EBS 分配固定大小 如果 MongoDB 的增长大于 EBS 的大小怎么办 我是否必须创建更大的 EBS 并复制并粘
  • AsyncTask 中的 ProgressDialog

    我试图在从 HTTP 服务器加载 RSS 提要时显示自定义进度对话框 我进行了艰苦的搜索 但没有任何帮助我做到这一点 我唯一知道的是该解决方案应该使用AsyncTask 但我对传递给它的参数感到困惑AsyncTask 这是我的活动 publ
  • Python中四分位距应该如何计算?

    我有一个数字列表 1 2 3 4 5 6 7 我想要一个函数来返回这个数字列表的四分位数范围 四分位数间距是上四分位数和下四分位数之间的差值 我尝试使用 NumPy 函数和 Wolfram Alpha 计算四分位数范围 我发现所有的答案 从
  • 错误:R Shiny 图的第一个参数无效

    我编写了一个 R 脚本来使用 R 来训练自己和其他人使用 Shiny 人们可以选择一个数据集并在基础图上绘制 x 和 y 变量 还有一些其他用户定义的参数 这一切都有效 但它也会引发 错误 第一个参数无效 这可以在 绘图 选项卡 在闪亮的仪
  • Python:计算 Pandas 中两列之间的 tf-idf 余弦相似度时出现 MemoryError

    我正在尝试计算 Pandas 数据框中两列之间的 tf idf 向量余弦相似度 一列包含搜索查询 另一列包含产品标题 余弦相似度值旨在成为搜索引擎 排名机器学习算法的 特征 我在 iPython 笔记本中执行此操作 不幸的是遇到了 Memo
  • 在 javascript 中替换多个
    替换为单个

    我想更换多个 br 带有单个的标签 br 在一段文字中 我的文字就像 p fhgfhgfhgfh p br br p ghgfhfgh p br br p fghfghfgh p br br p fghfghfgh p br br p fg
  • Haskell 有什么大惊小怪的? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • XPath:通过当前节点属性选择当前和下一个节点的文本

    如果这是一个重复的问题 我很抱歉 但我在 SO 或其他地方找不到另一个问题来处理我需要的内容 这是我的问题 我在用着scrapy从中获取一些信息this http www utm utoronto ca regcal WEBLISTCOUR
  • 程序下载 - IE CHROME - “不常下载,可能很危险。”

    我有一个 C 程序的安装程序 我将其上传到我的网站 但每当我尝试在 chrome 或 IE 中下载它时 我都会收到 MY FILE 不常下载 可能很危险 只有单击小箭头并从菜单中选择 保留 才能保留它 只有十分之一的用户能够获取我的程序 我
  • AWS Api Gateway 使用消息属性连接到 SQS

    我已按照本教程连接了一个 Api 网关方法来推送到 SQS 队列 https dzone com articles creating aws service proxy for amazon sqs https dzone com arti