API 目标 - Amazon EventBridge
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

API 目标

Amazon EventBridgeAPI 目标是 HTTP 终端节点,您可以作为target一个规则,类似于调用Amazon服务或资源作为目标。使用 API 目标,您可以路由事件介于Amazon服务、集成软件即服务 (SaaS) 应用程序,以及您在Amazon使用 REST API 调用。当您指定 API 目标作为规则的目标时,EventBridge 会调用与事件模式,然后随请求一起传递事件信息。使用 EventBridge,您可以使用除了连接和跟踪之外的任何 HTTP 方法来执行请求。最常用的 HTTP 方法是 PUT 和 POST。您还可以使用输入转换器将事件自定义为特定 HTTP 端点参数的参数。有关更多信息,请参阅 转变 Amazon EventBridge 梁目标输入

重要

对 API 目标终端节点的 EventBridge 请求的最大客户端执行超时时间必须为 5 秒。如果目标终端节点响应时间超过 5 秒,则 EventBridge 会超时请求。EventBridge 重试会超时请求,达到在重试策略上配置的最大值。默认情况下,最大值为 24 小时 185 次。在达到最大重试次数之后,事件将发送到死信队列(如果您有)。否则,该事件将被丢弃。

API 目标的连接

创建 API 目标时,需要指定要用于该目标的连接。A连接指定用于授权 API 目标终端节点的授权类型和参数。您可以从您的账户中选择现有连接,也可以在创建 API 目标时创建连接。EventBridge 支持基本、OAuth 和 API 密钥授权。

对于基本授权和 API 密钥授权,EventBridge 会为您填充所需的授权标头。对于 OAuth 授权,EventBridge 还为访问令牌交换您的客户端 ID 和密钥,然后安全地管理它。创建连接时,还可以包括端点授权所需的标头、正文和查询参数。如果终端节点的授权相同,您可以将同一连接用于多个 API 目标。

当您创建连接并添加授权参数时,EventBridge 在Amazon Secrets Manager。存储 Secrets Manager 密码的成本包含在使用 API 目标的费用中。要了解有关将机密用于 API 目标的最佳实践的更多信息,请参阅AWS::Events::ApiDestination中的CloudFormation 用户指南

注意

若要成功创建或更新连接,您必须使用有权使用 Secrets Manager 的帐户。所需的权限包含在Amazon EventBridge Full 访问策略。同样的权限被授予服务相关角色,这是在您的帐户中为连接创建的。

创建连接

  1. 登录Amazon使用具有 EventBridge 管理 EventBridge 并打开EventBridge 控制台

  2. 在左侧导航窗格中,选择API 目标

  3. 向下滚动到API 目标表,然后选择连接选项卡。

  4. 选择 Create connection (创建连接)

  5. 在存储库的创建连接连接页面上,输入连接名称对于连接。

  6. 输入说明对于连接。

  7. 适用于授权类型中,选择用于授权连接到为使用此连接的 API 目标指定的 HTTP 终端节点的授权类型。请执行下列操作之一:

    • 选择基本(用户名/密码),然后输入用户名密码用于授权 HTTP 终端节点。

    • 选择OAuth 客户端凭证,然后输入授权终端节点HTTP method (HTTP 方法)客户端 ID, 和客户端密钥用于授权终端节点。

      REDEOAuth HTTP 参数中,添加要包含的任何其他参数,以便授权终端节点进行授权。选择参数,然后输入密钥。要包括附加参数,请选择添加参数

      REDE调用 HTTP 参数中,添加要包含在授权请求中的任何其他参数。要添加参数,请选择参数,然后输入密钥。要包括附加参数,请选择添加参数

    • 选择API 密钥,然后输入API 密钥名称和关联用于 API 密钥授权。

      REDE调用 HTTP 参数中,添加要包含在授权请求中的任何其他参数。要添加参数,请选择参数,然后输入密钥。要包括附加参数,请选择添加参数

  8. 选择创建

编辑连接

  1. 打开API 目标页面,然后选择连接

  2. 连接表中,选择要编辑的连接。

  3. 在存储库的连接详细信息页面上,选择编辑

  4. 更新该连接的值,然后选择更新

取消授权连接

取消授权连接时,它会删除所有授权参数。删除授权参数会从连接中删除密钥,因此您可以重复使用它,而无需创建新连接。

注意

您必须更新使用取消授权连接的任何 API 目标,以使用其他连接成功向 API 目标终端节点发送请求。

取消连接授权

  1. 连接表中,选择连接。

  2. 在存储库的连接详细信息页面上,选择取消授权

  3. 取消授权连接?对话框中,输入连接的名称,然后选择取消授权

连接的状态将更改为取消授权直到流程完成。然后,状态更改为取消授权。现在,您可以编辑连接以添加新的授权参数。

创建 API 目标

每个 API 目标都需要连接。A连接指定用于授权 API 目标终端节点的授权类型和凭据。您可以选择现有连接,也可以在创建 API 目标的同时创建连接。

创建 API 目标

  1. 登录Amazon使用具有 EventBridge 管理 EventBridge 并打开EventBridge 控制台

  2. 在左侧导航窗格中,选择API 目标

  3. 向下滚动到API 目标表中选择,然后选择创建 API 目标

  4. 在存储库的创建 API 目标页面上,输入名称的 API 目标。最多可以使用 64 个大写或小写字母、数值、点 (.)、短划线 (-) 或下划线 (_) 字符。

    该名称必须是您在当前区域中的账户唯一的。

  5. 输入说明的 API 目标。

  6. 输入API 目标终端节点的 API 目标。这些区域有:API 目标终端节点是事件的 HTTP 调用终端节点目标。您在用于此 API 目标的连接中包含的授权信息用于对此终端节点进行授权。URL 必须使用 HTTPS。

  7. 输入HTTP method (HTTP 方法)用于连接到API 目标终端节点

  8. (可选)每秒调用速率限制字段中,输入每秒发送到 API 目标终端节点的最大调用次数。

    您设置的速率限制可能会影响 EventBridge 传递事件的方式。有关更多信息,请参阅 调用率如何影响事件传递

  9. 适用于Connection,请执行以下操作之一:

    • 选择使用现有连接,然后选择用于此 API 目标的连接。

    • 选择创建新的连接,然后输入要创建的连接的详细信息。有关更多信息,请参阅 。连接

  10. 选择创建

创建 API 目标后,您可以将其选择为规则。要使用 API 目标作为目标,您必须提供具有正确权限的 IAM 角色。有关更多信息,请参阅 。EventBridge 使用 IAM 角色访问目标所需的权限

API 目标的服务相关角色

在为 API 目标创建连接时,将使用名为的服务相关角色Amazon服务亚马逊事件桥接添加到您的账户 EventBridge 使用与服务链接的角色在 Secrets Manager 中创建和存储密钥。要向服务相关角色授予必要的权限,EventBridge 将卓越亚马逊事件桥接地图服务政策策略添加到角色。该策略将授予的权限限制为角色与连接密钥进行交互所必需的权限。不包含其他权限,并且角色只能与帐户中的连接进行交互以管理密钥。

以下是卓越亚马逊事件桥接地图服务策略。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:CreateSecret", "secretsmanager:UpdateSecret", "secretsmanager:DescribeSecret", "secretsmanager:DeleteSecret", "secretsmanager:GetSecretValue", "secretsmanager:PutSecretValue" ], "Resource": "arn:aws:secretsmanager:*:*:secret:events!connection/*" } ] }

有关服务相关角色的更多信息,请参阅使用服务相关角色在 IAM 文档中。

API 目标请求中包含的标头

除了为用于 API 目标的连接定义的授权标头外,EventBridge 还在每个请求中包含以下标头。

标头键 标头值

用户代理

亚马逊/活动桥/

Content-Type

应用程序/json; 字符集 = UTF-8

范围

字节:

Accept-Encoding

gzip,通气

Connection

Close

内容长度

指示发送到收件人的实体主体的大小(以字节为单位)的实体头。

Host

一个请求标头,它指定发送请求的服务器的主机和端口号。

API 目标错误代码

当 EventBridge 尝试将事件传递到 API 目标并发生错误时,EventBridge 会执行以下操作:

  • 重试与错误代码 429 和 5xx 相关的事件。

  • 不会重试与错误代码 1xx、2xx、3xx 和 4xx(不包括 429)相关联的事件。

EventBridge 接 API 目标读取标准 HTTP 响应标头Retry-After,了解在提出跟进请求之前等待多长时间。EventBridge 在定义的重试策略和Retry-After标头。如果Retry-After值为负,则 EventBridge 会停止重试该事件的传递。

调用率如何影响事件传递

如果将每秒调用率设置为远低于生成的调用次数的值,则事件可能无法在 24 小时重试时间内传递。例如,如果将调用率设置为每秒 10 次调用,但每秒生成数千次事件,则您将很快有超过 24 小时的积压事件。要确保没有事件丢失,请设置死信队列以将调用失败的事件发送到,以便稍后处理事件。有关更多信息,请参阅 事件重试策略和使用死信队列