View a markdown version of this page

将API目的地作为亚马逊的目标 EventBridge - 亚马逊 EventBridge

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

将API目的地作为亚马逊的目标 EventBridge

EventBridge API 目标是 HTTPS 终端节点,您可以将其作为事件总线规则或管道的目标调用,类似于作为目标调用 AWS 服务或资源的方式。使用 API 目标,您可以使用 API 调用在 AWS 服务、集成软件即服务 (SaaS) 应用程序以及公共或私有应用程序之间路由事件。

当您将 API 目标指定为规则或管道目标时,会为与规则或管道中指定的事件模式匹配的任何事件 EventBridge 调用 HTTPS 端点节点,然后将事件信息随请求一起传送。使用 EventBridge,您可以使用除 CONNECT 和 TRACE 之外的任何 HTTP 方法来处理请求。最常用的 HTTP 方法是 PUT 和 POST。

您也可以使用输入转换器,将事件自定义为特定 HTTP 端点参数的参数。有关更多信息,请参阅 亚马逊 EventBridge 输入转换

API 目标使用带有授权参数的连接将事件发送到 HTTP 端点。

EventBridge API 目标使用连接来定义授权方法、凭证和网络连接, EventBridge 以便在连接到给定的 HTTPS 端点时使用。连接同时支持公有和私有 API。有关更多信息,请参阅 Connections

注意

EventBridge 当使用私有 API 时,API 目的地目前仅支持带有公共信任证书的 HTTPS 终端节点的公共域名。API 目标不支持双向 TLS(mTLS)。

重要

EventBridge 向 API 目标端点发出的请求的最大客户端执行超时时间必须为 5 秒。如果目标端点的响应时间超过 5 秒, EventBridge 则请求会超时。 EventBridge 重试会使请求超时,但不能超过重试策略中配置的最大值。

  • 对于事件总线,默认情况下,上限为 24 小时和 185 次。

  • 对于管道,重试取决于管道源类型及其配置。 EventBridge 将重试,直到事件从源端过期,或者达到配置的最大事件期限或重试尝试次数。

达到重试次数上限后,会将事件发送到死信队列(如有)。否则,该事件将被丢弃。

以下视频演示了 API 目标的用法:

Service-linked API 目的地的角色

当您为 API 目标创建连接时,服务相关角色AmazonEventBridgeApiDestinationsServiceRolePolicy会添加到您的账户。 EventBridge 使用此服务相关角色在密钥管理器中创建和存储密钥。要向服务相关角色授予必要的权限,请将AmazonEventBridgeApiDestinationsServiceRolePolicy策略 EventBridge附加到该角色。该策略授予的权限,仅限于角色与连接密钥交互所必需的权限,不包括其他权限。该角色只能与您账户中的连接进行交互,以管理密钥。

有关服务相关角色的更多信息,请参见 IAM 用户指南中的使用服务相关角色

向 API 目标发送的请求中的标头

下一节详细介绍如何 EventBridge 处理发往 API 目标的请求中的 HTTP 标头。

向 API 目标发送的请求中包含的标头

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

标头键 标头值

User-Agent

Amazon/EventBridge/ApiDestinations

Content-Type

如果未指定自定义 Content-Type 值,则将以下默认值 EventBridge 包括为 Content-Type:

application/json; 字符集 = utf-8

Range

bytes=0-1048575

Accept-Encoding

gzip,deflate

Connection

关闭

Content-Length

表示发送到接收方的实体正文的大小(以字节为单位)的实体标头。

主机

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

向 API 目标发送的请求中无法覆盖的标头

EventBridge 不允许您覆盖以下标题:

  • User-Agent

  • Range

从 API 目的地的请求中 EventBridge 移除标头

EventBridge 移除所有 API 目标请求的以下标头:

  • A-IM

  • Accept-Charset

  • Accept-Datetime

  • Accept-Encoding

  • Cache-Control

  • Connection

  • Content-Encoding

  • Content-Length

  • Content-MD5

  • 日期

  • Expect

  • Forwarded

  • From

  • 主机

  • HTTP2-Settings

  • If-Match

  • If-Modified-Since

  • If-None-Match

  • If-Range

  • If-Unmodified-Since

  • Max-Forwards

  • Origin

  • Pragma

  • Proxy-Authorization

  • Range

  • Referer

  • TE

  • Trailer

  • Transfer-Encoding

  • User-Agent

  • Upgrade

  • Via

  • Warning

API 目标错误代码

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

  • 重试与错误代码 401407409429、和 5xx 关联的事件。

  • 不重试与错误代码 1xx2xx3xx、和 4xx(上述错误代码除外)关联的事件。

EventBridge API 目的地读取标准 HTTP 响应标头Retry-After,以了解在发出后续请求之前需要等待多长时间。对于事件总线,在定义的重试策略和Retry-After标头之间 EventBridge选择更为保守的值。如果Retry-After值为负数,则 EventBridge停止重试该事件的传输。

调用率如何影响事件传送

如果将每秒调用速率设置为远低于生成的调用数量的值,则可能无法在 24 小时的重试时间内传送此事件。例如,如果您将调用速率设置为每秒 10 次调用,但每秒会生成数千个事件,则很快就会有超过 24 小时的待传送事件积压。为确保不会丢失任何事件,请设置一个死信队列,将调用失败的事件发送到该队列,以便日后可以处理这些事件。有关更多信息,请参阅 使用死信队列处理中未送达的事件 EventBridge

区域可用性

以下 AWS 区域支持公共 HTTPS 终端节点的 API 目标:

  • 美国东部(弗吉尼亚州北部)

  • 美国东部(俄亥俄州)

  • 美国西部(北加利福尼亚)

  • 美国西部(俄勒冈州)

  • 非洲(开普敦)

  • 亚太地区(香港)

  • 亚太地区(东京)

  • 亚太地区(首尔)

  • 亚太地区(大阪)

  • 亚太地区(孟买)

  • 亚太地区(海得拉巴)

  • 亚太地区(新加坡)

  • 亚太地区(悉尼)

  • 亚太地区(雅加达)

  • 加拿大(中部)

  • 中国(北京)

  • 中国(宁夏)

  • 欧洲地区(法兰克福)

  • 欧洲(苏黎世)

  • 欧洲地区(斯德哥尔摩)

  • 欧洲地区(米兰)

  • 欧洲(西班牙)

  • 欧洲地区(爱尔兰)

  • 欧洲地区(伦敦)

  • Europe (Paris)

  • 中东(阿联酋):

  • 中东(巴林)

  • 南美洲(圣保罗)