添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
启用 API 缓存以增强响应能力 - Amazon API Gateway

启用 API 缓存以增强响应能力

您可以在 Amazon API Gateway 中启用 API 缓存以缓存您的端点的响应。借助缓存,您可以减少向端点发起的调用数量,同时减少向 API 发出的请求的延迟。

为某个阶段启用缓存时,API Gateway 会在指定的生存时间 (TTL) 期间(以秒为单位)缓存来自端点的响应。然后,在响应请求时,API Gateway 会从缓存中查找端点响应,而不会向端点发出请求。API 缓存的默认 TTL 值为 300 秒。最大 TTL 值为 3600 秒。TTL = 0 表示缓存功能处于禁用状态。

注意

缓存是尽力而为。您可以使用 Amazon CloudWatch 中的 CacheHitCount CacheMissCount 指标,以监控 API Gateway 从 API 缓存中提供的请求。

可缓存的响应的最大大小为 1048576 字节。缓存数据加密可能会增加缓存时的响应的大小。

这是一项符合 HIPAA 要求的服务。有关AWS、《1996 年健康保险可携性与责任法》(HIPAA) 以及使用AWS服务处理、存储和传输受保护的医疗信息 (PHI) 的更多信息,请参阅 HIPAA 概述

重要

为某个阶段启用缓存时,默认情况下,仅 GET 方法已启用缓存。这有助于确保您的 API 的安全性和可用性。您可以通过 覆盖方法设置 为其他方法启用缓存。

重要

缓存功能基于您选择的缓存大小按小时计费。缓存没有资格享受 AWS 免费套餐。有关更多信息,请参阅 API Gateway 定价

启用 Amazon API Gateway 缓存

在 API Gateway 中,您可以为特定阶段启用缓存。

启用缓存时,您必须选择一个缓存容量。一般而言,容量越大,性能越高,但成本也更高。有关支持的缓存大小,请参阅《API Gateway API 参考》 中的 cacheClusterSize

API Gateway 通过创建专用的缓存实例来实现缓存功能。这一过程耗时最多 4 分钟。

API Gateway 通过删除现有缓存实例并重新创建一个具有修改后的容量的新实例来更改缓存容量。所有现有的缓存数据均将被删除。

注意

缓存容量会影响缓存实例的 CPU、内存和网络带宽。因此,缓存容量会影响缓存的性能。

API Gateway 建议您运行 10 分钟的负载测试,来验证缓存容量是否适用于您的工作负载。确保负载测试期间的流量能够反映生产流量。例如,包括流量增加、流量恒定和流量高峰。负载测试应包括缓存可提供的响应以及向缓存添加项的唯一响应。监控负载测试期间的延迟、4xx、5xx、缓存命中和缓存未命中指标。根据这些指标,按需调整缓存容量。有关负载测试的更多信息,请参阅 如何选择最佳 API Gateway 缓存容量以避免达到速率限制?

在 API Gateway 控制台中,您可以在 阶段 页面上配置缓存。您可以预调配阶段缓存,并指定默认的方法级缓存设置。如果您开启默认的方法级缓存,则会为阶段上的所有方法开启方法级缓存,除非该方法具有方法覆盖。部署到阶段的任何其它 GET 方法都将具有方法级缓存。要为阶段的特定方法配置方法级缓存设置,可以使用方法覆盖。有关方法覆盖的更多信息,请参阅 覆盖方法级缓存的 API Gateway 阶段级缓存

要为指定阶段配置 API 缓存,请执行以下操作:
  1. 通过以下网址登录到 Amazon API Gateway 控制台: https://console.aws.amazon.com/apigateway

  2. 选择 阶段

    在 API 的 阶段 列表中,选择阶段。

    阶段详细信息 部分中,选择 编辑

    其它设置 下,对于 缓存设置 ,开启 配置 API 缓存

    这会为您的阶段预调配一个缓存集群。

    要为阶段激活缓存,请开启 默认方法级缓存

    这将为阶段上的所有方法开启方法级缓存。您部署到此阶段的任何其它 GET 方法都将具有方法级缓存。

    注意

    如果您有方法级缓存的现有设置,则更改默认的方法级缓存设置不会影响该现有设置。

    选择 保存更改

    注意

    API Gateway 大约需要 4 分钟来完成对缓存的创建或删除。

    创建缓存后, 缓存集群 值会从 Create in progress 变为 Active 。完成缓存删除后, 缓存集群 值会从 Delete in progress 变为 Inactive

    当您为阶段上的所有方法开启方法级缓存时, 默认方法级缓存 值将变为 Active 。如果您为阶段上的所有方法关闭方法级缓存, 默认方法级缓存 值将变为 Inactive 。如果您有方法级缓存的现有设置,则更改缓存的状态不会影响该设置。

    当您在阶段的 缓存设置 中启用缓存时,仅对 GET 方法进行缓存。要确保您的 API 的安全性和可用性,我们建议您不要更改此设置。不过,您可以通过 覆盖方法设置 为其他方法启用缓存。

    如果想要验证缓存是否按预期正常运行,您有两种常规选择:

    注意

    您不应使用来自 CloudFront 响应的 X-Cache 标头来确定您的 API 是否由 API Gateway 缓存实例提供服务。

    覆盖方法级缓存的 API Gateway 阶段级缓存

    您可以通过为特定方法开启或关闭缓存来覆盖阶段级缓存设置。您还可以修改 TTL 期间,或者为缓存的响应开启或关闭加密。

    如果您在 阶段详细信息 中更改默认方法级缓存设置,则不会影响具有覆盖功能的方法级缓存设置。

    如果您预计某个进行缓存的方法将在其响应中接收敏感数据,请在 缓存设置 中选择 加密缓存数据

    要使用控制台为各个方法配置 API 缓存,请执行以下操作:
    1. 通过以下网址登录到 Amazon API Gateway 控制台: https://console.aws.amazon.com/apigateway

    2. 选择 API。

      选择 阶段

      在 API 的 阶段 列表中,展开阶段,然后在 API 中选择方法。

      方法覆盖 部分,选择 编辑

      方法设置 部分,打开或关闭 启用方法缓存 或自定义任何其他所需选项。

      注意

      在您为阶段预调配缓存集群之前,缓存不会处于活动状态。

    3. 选择 保存

    将方法或集成参数用作索引缓存响应的缓存键

    当缓存的方法或集成具有参数 (可以是自定义标头、URL 路径或查询字符串格式) 时,您可以使用部分或全部参数来构建缓存键。API Gateway 可以缓存方法的响应,具体取决于使用的参数值。

    注意

    在资源上设置缓存时需要缓存键。

    例如,假设您在以下格式中提出一个请求:

    GET /users?type=... HTTP/1.1 host: example.com

    在这个请求中, type 的值可以是 admin regular 。如果您添加 type 参数作为缓存键的组成部分,则 GET /users?type=admin 的响应将与 GET /users?type=regular 的响应分开缓存。

    当某种方法或集成请求采用多个参数时,您可以选择添加部分或全部参数来创建缓存键。例如,对于在 TTL 期内按列出的顺序提出的以下请求,您可以在缓存键中只添加 type 参数:

    GET /users?type=admin&department=A HTTP/1.1 host: example.com

    此请求的响应将被缓存,并用于服务以下请求:

    GET /users?type=admin&department=B HTTP/1.1 host: example.com

    要在 API Gateway 控制台中将一个方法或集成请求参数添加为缓存键的一部分,请在添加参数后选择 缓存

    刷新 API Gateway 中的 API 阶段缓存

    启用 API 缓存时,您可以刷新 API 阶段的整个缓存,以确保您的 API 客户端可以从集成端点获得最新响应。

    要刷新 API 阶段缓存,请选择 阶段操作 菜单,然后选择 刷新阶段缓存

    注意

    刷新缓存之后,在重新构建缓存之前,从集成端点为响应提供服务。在此期间,发送到集成端点的请求数量可能会增加。这可能会临时增加 API 的整体延迟。

    使 API Gateway 缓存条目失效

    您的 API 客户端可以使某个现有缓存条目失效,也可以从各个请求的集成端点重新加载该条目。客户端必须发送一个包含 Cache-Control: max-age=0 标头的请求。客户端将直接从集成端点 (而非缓存) 收到响应,前提是客户端获得授权执行此操作。这会将现有缓存条目替换为从集成端点获得的新响应。

    要为客户端授予权限,请将以下格式的策略附加到用户的 IAM 执行角色。

    注意

    不支持跨账户缓存无效化。

    "Version": "2012-10-17", "Statement": [ "Effect": "Allow", "Action": [ "execute-api:InvalidateCache" "Resource": [ "arn:aws:execute-api: region : account-id : api-id / stage-name /GET/ resource-path-specifier "

    此策略允许 API Gateway 执行服务让指定资源上的请求对应的缓存失效。要指定一组目标资源,请将 account-id 的 ARN 值中的 api-id Resource 和其他条目替换为通配符 (*)。有关如何为 API Gateway 执行服务设置权限的更多信息,请参阅 使用 IAM 权限控制对 API 的访问

    如果您未应用 InvalidateCache 策略(或在控制台中选中 需要授权 复选框),则任何客户端均可使 API 缓存失效。如果大部分或全部客户端都使 API 缓存失效,这会显著增加 API 的延迟。

    策略到位后,将启用缓存并需要授权。

    您可以从 API Gateway 控制台的 未经授权的请求处理 中选择相应选项,来控制对未经授权的请求的处理方式。

    忽略缓存控制标头;在响应中添加一条警告标头 :处理请求并在响应中添加一条警告标头。