本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
从亚马逊的 AWS Lambda 功能URLs中接收 SaaS 事件 EventBridge
注意
为了让我们的合作伙伴能够访问入站 Webhook,我们正在 AWS 您的账户中创建一个 Open Lambda,该开放式 Lambda 通过验证第三方合作伙伴发送的身份验证签名在 Lambda 应用程序级别进行保护。请与您的安全团队一起检查此配置。有关更多信息,请参阅 Lambda 函数URLs的安全和身份验证模型。
您的 Amazon EventBridge 事件总线可以使用 AWS CloudFormation 模板URL创建的AWS Lambda 函数来接收来自支持的 SaaS 提供商的事件。使用函数URLs,事件数据将发送到 Lambda 函数。然后,该函数将这些数据转换为事件,该事件可以由事件总线接收 EventBridge 并发送到事件总线进行处理。事件进入事件总线后,您可以使用规则来筛选事件,应用任何已配置的输入转换,然后将其路由到正确的目标。
注意
创建 Lambda 函数URLs会增加您的每月费用。有关更多信息,请参阅 AWS Lambda 定价
要设置与的连接 EventBridge,首先要选择要与之建立连接的 SaaS 提供商。然后,提供您与该提供商一起创建的签名密钥,然后选择要向其发送 EventBridge 事件的事件总线。最后,使用 AWS CloudFormation 模板并创建完成连接所需的资源。
以下 SaaS 提供商目前可用于 EventBridge 使用 Lambda 函数:URLs
-
GitHub
-
Twilio
主题
步骤 1:创建 AWS CloudFormation 堆栈
首先,使用 Amazon EventBridge 控制台创建 CloudFormation 堆栈:
打开 Amazon EventBridge 控制台,网址为https://console.aws.amazon.com/events/
。 -
从导航窗格中选择快速入门。
-
在 “使用 fURLs Lambda 的入站 Webhook” 下,选择入门。
-
在 GitHub 下,选择设置。
-
在步骤 1:选择事件总线下,从下拉列表中选择一个事件总线。此事件总线接收来自您提供的 Lambda 函数URL的数据。GitHub您也可以选择新建事件总线来创建事件总线。
-
在 “步骤 2:使用进行设置” 下 CloudFormation,选择 “新建 GitHub webhook”。
-
选择我确认我创建的入站 Webhook 可以公开访问。然后选择确认。
-
输入堆栈的名称。
-
在参数下,验证是否列出了正确的事件总线,然后为 GitHubWebhookSecret 指定安全令牌。有关创建安全令牌的更多信息,请参阅 GitHub 文档中的设置您的密钥令牌
。 -
在功能和转换下,选择以下各项:
-
我承认这 AWS CloudFormation 可能会创造IAM资源。
-
我承认这 AWS CloudFormation 可能会创建带有自定义名称的IAM资源。
-
我承认这 AWS CloudFormation 可能需要以下能力:
CAPABILITY_AUTO_EXPAND
-
-
选择创建堆栈。
步骤 2:创建 GitHub Webhook
接下来,在 GitHub 中创建 Webhook。要完成此步骤,您需要同时使用安全令牌和在步骤 2 中创建的 Lambda 函数URL。有关更多信息,请参阅 GitHub 文档中的创建 Webhook
设置 Twilio 连接
步骤 1:查找您的 Twilio 身份验证令牌
要在Twilio和之间建立连接 EventBridge,请先Twilio使用Twilio账户的身份验证令牌或密钥将连接设置为。有关更多信息,请参阅 Twilio 文档中的身份验证令牌及其更改方法
步骤 2:创建 AWS CloudFormation 堆栈
打开 Amazon EventBridge 控制台,网址为https://console.aws.amazon.com/events/
。 -
在导航窗格中选择快速入门。
-
在 “使用 fURLs Lambda 的入站 Webhook” 下,选择入门。
-
在 Twilio 下,选择设置。
-
在步骤 1:选择事件总线下,从下拉列表中选择一个事件总线。此事件总线接收来自您提供的 Lambda 函数URL的数据。Twilio您也可以选择新建事件总线来创建事件总线。
-
在 “步骤 2:使用进行设置” 下 CloudFormation,选择 “新建 Twilio webhook”。
-
选择我确认我创建的入站 Webhook 可以公开访问。然后选择确认。
-
输入堆栈的名称。
-
在参数下,验证是否列出了正确的事件总线,然后输入您在步骤 1 中创建的 TwilioWebhookSecret。
-
在功能和转换下,选择以下各项:
-
我承认这 AWS CloudFormation 可能会创造IAM资源。
-
我承认这 AWS CloudFormation 可能会创建带有自定义名称的IAM资源。
-
我承认这 AWS CloudFormation 可能需要以下能力:CAPABILITY_ AUTO _ EXPAND
-
-
选择创建堆栈。
步骤 3:创建 Twilio Webhook
设置 Lambda 函数后URL,您需要将其提供给 Twilio,以便可以发送事件数据。有关更多信息,请参阅Twilio文档Twilio中的URL使用配置您的公众
更新 Webhook 密钥或身份验证令牌
更新 GitHub 密钥
注意
GitHub 不支持同时拥有两个密钥。当 AWS CloudFormation 堆栈中的GitHub密钥和密钥不同步时,您可能会遇到资源停机情况。 GitHub由于签名不正确,在密钥不同步时发送的消息将失败。等到GitHub和 CloudFormation 密钥同步,然后再试一次。
-
新建 GitHub 密钥。有关更多信息,请参阅 GitHub 文档中加密机密
。 在 https://console.aws.amazon.com/cloudformat
ion 上打开 AWS CloudFormation 控制台。 -
从导航窗格中,选择堆栈。
-
为 Webhook 选择堆栈,其中包含要更新的密钥。
-
选择更新。
-
确保选中使用当前模板,然后选择下一步。
-
在下方 GitHubWebhookSecret,清除 “使用现有值”,输入您在步骤 1 中创建的新GitHub密钥,然后选择 “下一步”。
-
选择下一步。
-
选择更新堆栈。
密钥传播可能最多需要一个小时。为了缩短停机时间,您可以刷新 Lambda 执行上下文。
更新 Twilio 密钥
注意
Twilio 不支持同时拥有两个密钥。当 AWS CloudFormation 堆栈中的Twilio密钥和密钥不同步时,您可能会遇到资源停机情况。 Twilio由于签名不正确,在密钥不同步时发送的消息将失败。等到Twilio和 CloudFormation 密钥同步,然后再试一次。
-
新建 Twilio 密钥。有关更多信息,请参阅 Twilio 文档中的身份验证令牌及其更改方法
。 在 https://console.aws.amazon.com/cloudformat
ion 上打开 AWS CloudFormation 控制台。 -
从导航窗格中,选择堆栈。
-
为 Webhook 选择堆栈,其中包含要更新的密钥。
-
选择更新。
-
确保选中使用当前模板,然后选择下一步。
-
在下方 TwilioWebhookSecret,清除 “使用现有值”,输入您在步骤 1 中创建的新Twilio密钥,然后选择 “下一步”。
-
选择下一步。
-
选择更新堆栈。
密钥传播可能最多需要一个小时。为了缩短停机时间,您可以刷新 Lambda 执行上下文。
更新 Lambda 函数
CloudFormation 堆栈创建的 Lambda 函数创建基本的 webhook。如果您想针对特定用例(例如自定义日志)自定义 Lambda 函数,请使用 CloudFormation 控制台访问该函数,然后使用 Lambda 控制台更新 Lambda 函数代码。
访问 Lambda 函数
在 https://console.aws.amazon.com/cloudformat
ion 上打开 AWS CloudFormation 控制台。 -
从导航窗格中,选择堆栈。
-
为 Webhook 选择堆栈,其中包含要更新的 Lambda 函数。
-
选择资源选项卡。
-
要在 Lambda 控制台中打开 Lambda 函数,请在物理 ID 下选择 Lambda 函数的 ID。
现在您已获得了 Lambda 函数,请使用 Lambda 控制台更新函数代码。
更新 Lambda 函数代码
-
在操作下,选择导出函数。
-
选择下载部署包并将文件保存到您的计算机中。
-
解压缩部署包 .zip 文件,更新
app.py
文件,然后压缩更新后的部署包,确保包含原始 .zip 文件中的所有文件。 -
在 Lambda 控制台中,选择代码选项卡。
-
在 Code source(代码源)下,选择 Upload from(上载自)。
-
选择 .zip file (.zip 文件),然后选择 Upload file (上载文件)。
在文件选择器中,选择您更新的文件,然后依次选择打开和保存。
-
在操作下,选择发布新版本。
可用事件类型
事件总线目前支持以下 CloudFormation 事件类型:
-
GitHub— 支持所有事件类型
。 -
Twilio - 支持事件后 Webhook
。
配额、错误代码和传送重试
配额
Webhook 的传入请求数量受底层 AWS 服务的限制。下表包括相关的配额。
服务 | 限额 |
---|---|
AWS Lambda |
默认:10 个并发执行 有关配额的更多信息(包括如何请求增加配额),请参阅 Lambda 配额。 |
AWS Secrets Manager |
默认:每秒 5,000 个请求 有关配额的更多信息(包括如何请求增加配额),请参阅 AWS Secrets Manager 配额。 注意使用 AWS Secrets Manager Python 缓存客户端 |
Amazon EventBridge |
操作的最大条目大小为 256KB。 PutEvents EventBridge 强制执行基于区域的费率配额。有关更多信息,请参阅 EventBridge 配额。 |
错误代码
发生错误时,每项 AWS 服务都会返回特定的错误代码。下表包括相关的错误代码。
服务 | 错误代码 | 描述 |
---|---|---|
AWS Lambda |
429 “” TooManyRequestsExption |
超出并发执行配额。 |
AWS Secrets Manager |
500 “Internal Server Error” |
超出每秒请求数配额。 |
Amazon EventBridge |
500 “Internal Server Error” |
超出该区域的费率配额。 |
活动重新传送
发生错误时,您可以重试传送受影响的事件。每个 SaaS 提供商都有不同的重试步骤。
GitHub
使用 GitHub webhook 检查任何 webhook 呼叫的传送状态,并在API需要时重新传送事件。有关更多信息,请参阅 GitHub 文档:
-
组织 - 为组织 Webhook 重新传送
-
存储库 - 为存储库 Webhook 重新传送
-
应用 - 为应用 Webhook 重新传送
Twilio
Twilio 用户可以使用连接覆盖来自定义事件重试选项。有关更多信息,请参阅文档中的 Webhook(HTTP回调):连接覆盖