本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用Amazon Lambda函数 URL 接收事件
注意
为了让我们的合作伙伴能够访问 Inbound Webhook,我们正在您的Amazon账户中创建一个 Open Lambda,通过验证第三方合作伙伴发送的身份验证签名,在 Lambda 应用程序级别上受到保护。请与您的安全团队一起查看此配置。有关更多信息,请参阅 Lambda 函数 URL 的安全性和身份验证模型。
您的亚马逊 EventBridge 事件总线可以使用Amazon CloudFormation模板创建的Amazon Lambda函数 URL 来接收来自支持的 SaaS 提供商的事件。使用函数 URL,事件数据将发送到 Lambda 函数。然后,该函数将这些数据转换为一个事件,该事件可以由事件总线摄取 EventBridge 并发送到事件总线进行处理。事件进入事件总线后,您可以使用规则筛选事件,应用任何已配置的输入转换,然后将其路由到正确的目标。
注意
创建 Lambda 函数 URL 会增加您的每月成本。有关更多信息,请参阅 Amazon Lambda 定价
要到的连接 EventBridge,您首先需要先依次选择 SaaS t 提供程序。然后,提供已向该提供商创建的签名密钥,然后选择要向其发送 EventBridge 事件的事件总线。最后,您可以使用Amazon CloudFormation模板并创建所需的资源来完成连接。
以下 SaaS 提供商目前可用于 EventBridge 使用 Lambda 函数 URL:
-
GitHub
-
Stripe
-
Twilio
主题
设置到的连接GitHub
步骤 1:创建堆Amazon CloudFormation栈
首先,使用 Amazon EventBridge 控制台创建 CloudFormation 堆栈:
通过 https://console.aws.amazon.com/events/
打开亚马逊 EventBridge 控制台。 -
从导航窗格中,选择 With。
-
在 “使用 Lambda FURL 的入站 Web 挂钩” 下,选择 “开始”。
-
在下方 GitHub,选择设置。
-
在步骤 1:选择事件总线下,从下拉列表中选择事件总线。此事件总线从您提供的 Lambda 函数 URL 接收数据GitHub。您也可以通过选择 “新建事件总线” 来创建事件总线。
-
在 “步骤 2:使用进行设置” 下 CloudFormation,选择 “新建GitHub webhook”。
-
选择 “我确认我创建的入站 Webhook 可以公开访问”。 然后选择 “确认”。
-
输入堆栈的名称。
-
在 “参数” 下,验证是否列出了正确的事件总线,然后为指定安全令牌GitHubWebhookSecret。有关创建安全令牌的更多信息,请参阅GitHub文档中的设置您的密钥令牌
。 -
在 “功能和转换” 下,选择以下各项:
-
我承认这Amazon CloudFormation可能会创建 IAM 资源。
-
我确认Amazon CloudFormation可使用自定义名称创建 IAM 资源。
-
我承认这Amazon CloudFormation可能需要以下能力:
CAPABILITY_AUTO_EXPAND
-
-
选择 Create stack(创建堆栈)。
步骤 2:创建一个GitHub Webhoom
接下来,在上创建 webhookGitHub。要完成此步骤,您将需要安全令牌和在步骤 2 中创建的 Lambda 函数 URL。有关更多信息,请参阅GitHub文档中的创建 Webhoo
设置与... 的连接Stripe
步骤 1:创建Stripe终端节点
要在 Stripe EventBridge 和 Stripe 之间建立连接,请先创建一个 Stripe 端点并记下端点密钥。在步骤 2 中设置堆栈时,您将使用此端点密钥。有关更多信息,请参阅Stripe文档中的交互式 webhook 端点生成器
注意
你需要一个虚拟 URL 来设置终端节点Stripe。例如,www.example.com
。
步骤 2:创建堆Amazon CloudFormation栈
通过 https://console.aws.amazon.com/events/
打开亚马逊 EventBridge 控制台。 -
在导航窗格中,选择 Qicknowledge。
-
在 “使用 Lambda FURL 的入站 Web 挂钩” 下,选择 “开始”。
-
在下方 Stripe,选择设置。
-
在 “步骤 1:选择事件总线” 下,从下拉列表中选择一个事件总线。此事件总线从您提供的 Lambda 函数 URL 接收数据Stripe。您也可以通过选择 “新建事件总线” 来创建事件总线。
-
在 “步骤 2:使用进行设置” 下 CloudFormation,选择 “新建Stripe webhook”。
-
选择 “我确认我创建的入站 Webhook 可以公开访问”。 然后选择 “确认”。
-
输入堆栈的名称。
-
在 “参数” 下,验证是否列出了正确的事件总线,然后输入您在步骤 1 中创建StripeWebhookSecret的事件总线。
-
在 “功能和转换” 下,选择以下各项:
-
我承认这Amazon CloudFormation可能会创建 IAM 资源。
-
我确认Amazon CloudFormation可使用自定义名称创建 IAM 资源。
-
我承认这Amazon CloudFormation可能需要以下能力:
CAPABILITY_AUTO_EXPAND
-
-
选择 Create stack(创建堆栈)。
步骤 3:更新Stripe终端
现在您已经创建了 Lambda 函数 URL,请更新Stripe终端节点以向 Lambda 函数 URL 发送事件。
设置与... 的连接Twilio
步骤 1:查找您的Twilio身份验证令牌
要在Twilio和之间建立连接 EventBridge,请先使用您的Twilio账户的身份验证令牌或密钥设置Twilio与的连接。有关更多信息,请参阅Twilio文档中的身份验证令牌和如何更改它们
步骤 2:创建堆Amazon CloudFormation栈
通过 https://console.aws.amazon.com/events/
打开亚马逊 EventBridge 控制台。 -
在导航窗格中,选择 Qicknowledge。
-
在 “使用 Lambda FURL 的入站 Web 挂钩” 下,选择 “开始”。
-
在下方 Twilio,选择设置。
-
在 “步骤 1:选择事件总线” 下,从下拉列表中选择一个事件总线。此事件总线从您提供的 Lambda 函数 URL 接收数据Twilio。您也可以通过选择 “新建事件总线” 来创建事件总线。
-
在 “步骤 2:使用进行设置” 下 CloudFormation,选择 “新建Twilio webhook”。
-
选择 “我确认我创建的入站 Webhook 可以公开访问”。 然后选择 “确认”。
-
输入堆栈的名称。
-
在 “参数” 下,验证是否列出了正确的事件总线,然后输入您在步骤 1 中创建TwilioWebhookSecret的事件总线。
-
在 “功能和转换” 下,选择以下各项:
-
我承认这Amazon CloudFormation可能会创建 IAM 资源。
-
我确认Amazon CloudFormation可使用自定义名称创建 IAM 资源。
-
我承认这Amazon CloudFormation可能需要以下功能:CAPABILITY_AUTO_EXPAND
-
-
选择 Create stack(创建堆栈)。
步骤 3:创建一个Twilio Webhoom
设置 Lambda 函数 URL 后,你需要将其提供给 Twilio,这样才能发送事件数据。有关更多信息,请参阅Twilio文档Twilio中的配置公共 URL
更新 webhook 密钥或身份验证令牌
更新GitHub密钥
注意
GitHub不支持同时拥有两个密钥。当Amazon CloudFormation堆栈中的GitHub密钥和密钥不同步时,您可能会遇到资源停机。 GitHub由于签名不正确,在机密不同步时发送的消息将失败。等到GitHub和 CloudFormation 密钥同步,然后重试。
-
创建一个新GitHub密钥。有关更多信息,请参阅GitHub文档中的加密密钥
。 打开 Amazon CloudFormation 控制台,地址:https://console.aws.amazon.com/cloudformation
。 -
从导航窗格中,选择 Stacks。
-
为包含要更新的密钥的堆栈。
-
选择 Update(更新)。
-
确保选择 “使用当前模板”,然后选择 “下一步”。
-
在 “使用现有值” 下方 GitHubWebhookSecret,输入您在步骤 1 中创建的新GitHub密钥,然后选择下一步。
-
选择 Next(下一步)。
-
选择 “更新堆栈”。
密钥可能最多需要一个小时。为了减少停机时间,您可以刷新 Lambda 执行上下文。
更新Stripe密钥
-
在Stripe仪表板的 Webhooks 部分中,选择 Roll secre t 并将过期延迟至少两 (2) 个小时。有关更多信息,请参阅Stripe文档中的 Roll终端节点密钥
。 打开 Amazon CloudFormation 控制台,地址:https://console.aws.amazon.com/cloudformation
。 -
从导航窗格中,选择 Stacks。
-
为包含要更新的密钥的堆栈。
-
选择 Update(更新)。
-
确保选择 “使用当前模板”,然后选择 “下一步”。
-
在 “使用现有值” 下方 StripeWebhookSecret,输入您在步骤 1 中创建的新Stripe密钥,然后选择下一步。
-
选择 Next(下一步)。
-
选择 “更新堆栈”。
Stripe将在轮换期间发送旧签名和新签名。
更新Twilio密钥
注意
Twilio不支持同时拥有两个密钥。当Amazon CloudFormation堆栈中的Twilio密钥和密钥不同步时,您可能会遇到资源停机。 Twilio由于签名不正确,在机密不同步时发送的消息将失败。等到Twilio和 CloudFormation 密钥同步,然后重试。
-
创建一个新Twilio密钥。有关更多信息,请参阅Twilio文档中的身份验证令牌和如何更改它们
。 打开 Amazon CloudFormation 控制台,地址:https://console.aws.amazon.com/cloudformation
。 -
从导航窗格中,选择 Stacks。
-
为包含要更新的密钥的堆栈。
-
选择 Update(更新)。
-
确保选择 “使用当前模板”,然后选择 “下一步”。
-
在 “使用现有值” 下方 TwilioWebhookSecret,输入您在步骤 1 中创建的新Twilio密钥,然后选择下一步。
-
选择 Next(下一步)。
-
选择 “更新堆栈”。
密钥可能最多需要一个小时。为了减少停机时间,您可以刷新 Lambda 执行上下文。
更新 Lambda 函数
CloudFormation 堆栈创建的 Lambda 函数创建了基本的 webhook。如果您想针对特定用例(例如自定义日志)自定义 Lambda 函数,请使用 CloudFormation 控制台访问该函数,然后使用 Lambda 控制台更新 Lambda 函数代码。
访问 Lambda 函数
打开 Amazon CloudFormation 控制台,地址:https://console.aws.amazon.com/cloudformation
。 -
从导航窗格中,选择 Stacks。
-
为包含要更新的Lambda 函数。
-
选择 “资源” 选项卡。
-
要在 Lambda 控制台中打开 Lambda 函数,请在物理 ID 下选择 Lambda 函数的 ID。
现在您已经访问了 Lambda 函数,请使用 Lambda 控制台更新函数代码。
更新 Lambda 函数代码
-
在 “操作” 下,选择 “导出功能”。
-
选择下载部署包并将文件保存到您的计算机。
-
解压缩部署包.zip 文件,更新
app.py
文件并压缩更新的部署包,确保包含原始.zip 文件中的所有文件。 -
在 Lambda 控制台中,选择代码选项卡。
-
在 Code source(代码源)下,选择 Upload from(上载自)。
-
选择 .zip file (.zip 文件),然后选择 Upload file (上载文件)。
在文件选择器中,选择您更新的文件,然后依次选择 Open (保存)。
-
在 “操作” 下,选择 “发布新版本”。
可用的事件类型
事件总线目前支持以下 CloudFormation 事件类型:
配额、错误代码和重试交付
配额
对 webhook 的传入请求数量由底层Amazon服务上限。下表包括相关配额。
服务 | 配额 |
---|---|
Amazon Lambda |
默认值:10 次并行执行 有关这些配额的更多信息,包括请求增加配额,请参阅 Lambda 配额。 |
Amazon Secrets Manager |
默认值:每秒 5000 个请求 有关这些配额包括请求增加配额的更多信息,请参阅Amazon Secrets Manager配额。 注意使用 Amazon Secrets ManagerPython 缓存客户端 |
亚马逊 EventBridge |
PutEvents 操作的最大条目大小为 256KB。 EventBridge 强制执行基于区域的费率配额。有关更多信息,请参阅EventBridge 配额: |
错误代码
出现错误时,每项Amazon服务都会返回特定的错误代码。下表包括相关错误代码。
服务 | 错误代码 | 描述 |
---|---|---|
Amazon Lambda |
429 “TooManyRequestsExption” |
已超过并发执行配额。 |
Amazon Secrets Manager |
500 “内部服务器错误” |
已超出每秒请求数配额。 |
亚马逊 EventBridge |
500 “内部服务器错误” |
该地区的费率配额已超过。 |
活动重新交付
发生错误时,您可以重试传送受影响的事件。每个 SaaS 提供商都有不同的重试程序。
GitHub
使用GitHub webhooks API 检查任何 webhook 调用的传送状态,并在需要时重新传送事件。有关更多信息,请参阅以下GitHub文档:
-
应用程序-重新交付应用程序 webhook 的交
付
Stripe
Stripe尝试在长达三天的时间内提供您的 webhook,但会呈指数级退缩。有关更多信息,请参阅以下Stripe文档:
Twilio
Twilio用户可以使用连接覆盖自定义事件重试选项。有关更多信息,请参阅Twilio文档中的 Webhooks(HTTP 回调):连接覆盖