【问题标题】:How to emit timely POST requests from AWS?如何从 AWS 发出及时的 POST 请求?
【发布时间】:2018-01-08 14:17:58
【问题描述】:

每天从 AWS 发出 POST 请求(确切地说是 webhook)的最有效方法是什么?

我马上开始简单地创建一个带有事件计划 CRON 的 cloudWatch 规则,该规则将触发“每天 18 点”的 SNS 发布,然后我创建了一个 SNS 主题“AlertMyWebhook”,所有 POST 端点都作为该主题的订阅者.

但是.. SNS 要求我确认订阅每个端点...根据定义我不能,因为 https 端点不是我的(webhook = HOOK 到其他人的 WEBapp)。

所以现在我开始想一些疯狂的东西,比如拥有一个 dynamoDB 表来存储所有 webhook 端点 URL,再加上一个 lambda 函数来读取表,获取每个 https 端点,并向它们发送一个 POST 请求...

坦率地说:这对我来说没有任何意义。

有什么方法可以避免 SNS 确认? 如果没有,您将如何在不创建类似单体架构的情况下“每天 18 点触发 POST”?

【问题讨论】:

  • 从概念上讲,您想要this 之类的东西?这是从 SNS 到 Lambda 到 POST。它消除了确认订阅的需要。稍微难一点,但很接近。
  • 感谢您的回复。你提供的链接没有解释 SNS > LAMBDA > POST 恐怕:) 所以我真的不明白你的意思。

标签: amazon-web-services aws-lambda webhooks amazon-sns amazon-cloudwatch


【解决方案1】:

AWS SNS 和 Lambda 函数相互集成,因此您可以为您的主题订阅 Lambda 函数。当消息发布到该主题时,订阅的 Lambda 函数将使用 Payload(发布的消息)调用。

使用此有效负载作为 Lambda 函数的输入触发端点的 POST 请求。一个好的方法是将所有 HTTPS POST 端点作为 Lambda 中的环境变量。因此,每当需要将新的 POST 端点添加为订阅端点时,Lambda 函数中都不会发生代码更改。有关如何集成 AWS SNS 和 Lambda 的更多信息,请查看此处。

Invoking Lambda functions using Amazon SNS notifications

调用 POST 请求的示例 NodeJS 代码

AWS Lambda HTTP POST Request

【讨论】:

  • 感谢您的回复。非常感激。我不知道有效载荷,我只是根据您的见解发现了它,谢谢。但是,我不太明白这一点:“将所有 HTTPS POST 端点作为 Lambda 中的环境变量”?它如何与 SNS 有效负载交互?这让我很困惑。
  • @JonaRodrigues 不是在 Lambda 代码中硬编码订阅者端点,而是使用它的 env 变量来添加/删除订阅者。
猜你喜欢
  • 2021-04-11
  • 2012-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-30
  • 1970-01-01
  • 2019-03-19
相关资源
最近更新 更多