【问题标题】:http headers from one endpoint to other via AWS SNS service通过 AWS SNS 服务从一个端点到另一个端点的 http 标头
【发布时间】:2019-04-04 11:57:43
【问题描述】:

我有一个要求,我需要通过将 api A 发布到 SNS 来发送一些入站 http 查询参数,而其他 api B 订阅了应该获取查询参数的 sns。

有什么方法可以实现吗?

注意:当我发布到 SNS 时,我有一个固定的消息结构,我无法更改,因为我有其他端点已经订阅了 SNS,依赖它。

正如迈克尔所说,我们可以使用 lambda。但我不想使用 aws 提供的其他服务。我想只使用 SNS 来达到同样的效果。我听说过 SNS 消息属性,但不确定我们是否可以使用它来实现。

谢谢。

【问题讨论】:

    标签: amazon-web-services http amazon-sns


    【解决方案1】:

    SNS 不支持自定义 HTTP 事务或以其他方式修改正在传递的消息...但 SNS 确实支持以 Lambda 函数为目标的订阅。

    这意味着您可以编写一个解析 SNS 事件负载的 Lambda 函数...然后,您的 Lambda 函数将根据需要自定义向目标端点发出 HTTPS 请求,而不是 SNS 通过 HTTPS 联系目标系统。如果 HTTPS 请求失败,或者端点返回错误,Lambda 函数应该抛出异常,以便 Lambda 知道重试。

    https://docs.aws.amazon.com/lambda/latest/dg/invoking-lambda-function.html#supported-event-source-sns

    【讨论】:

    • 嗨迈克尔,你能不能给我指出一个官方文档,上面说自定义 http 标头是不可能的,如果有的话。
    • SNS 开发人员指南documents the headers that are always provided 并没有提及自定义...除非您通过Authorization 标头(is supported)寻找基本或摘要式身份验证。
    • 感谢您提供 lambda 函数选项并指出文档。我听说过 SNS 消息属性。我们可以使用它以某种方式将这些查询参数与它一起发送到端点 api B 吗?
    • 消息属性可用于订阅过滤器,它们包含在 Lambda 订阅的event sent 中。它们似乎没有包含在直接发送到 HTTPS 订阅的消息中。
    猜你喜欢
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 2019-03-06
    • 2017-10-09
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多