Amazon API Gateway
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用 API Gateway 控制台配置 Lambda 授权方

创建 Lambda 函数并确认它有效后,执行下列步骤以在 API Gateway 控制台中配置 API Gateway Lambda 授权方(以前称为自定义授权方)。

使用 API Gateway 控制台配置 Lambda 授权方

  1. 登录到 API Gateway 控制台。

  2. 创建新的 API 或选择现有 API,然后选择该 API 下的授权方

  3. 选择 Create New Authorizer (创建新授权方)

  4. 对于 Create Authorizer (创建授权方),在名称输入字段中键入授权方名称。

  5. 对于类型,选择 Lambda 选项。

  6. 对于 Lambda Function (Lambda 函数),选择区域,然后选择账户中的可用 Lambda 授权方。

  7. Lambda Invoke Role (&LAM; 调用角色) 保留为空以让 API Gateway 控制台设置基于资源的策略。此策略向 API Gateway 授予调用授权方 Lambda 函数的权限。您还可选择键入 IAM 角色的名称以允许 API Gateway 调用授权方 Lambda 函数。有关此类角色的示例,请参阅创建一个可代入的 IAM 角色

    如果您选择让 API Gateway 控制台设置基于资源的策略,则将显示 Add Permission to Lambda Function (将权限添加到 Lambda 函数) 对话框。选择 OK。创建 Lambda 授权后,您可以使用适当的授权令牌值对其进行测试,以验证它是否可正常使用。

  8. 对于 Lambda Event Payload (&LAM; 事件负载),选择令牌(对于 TOKEN 授权方)或请求(对于 REQUEST 授权方)。(这与将类型属性设置为 TOKENREQUEST 的效果相同。)

  9. 根据上一步的选择,执行下列操作之一:

    1. 对于令牌选项,执行下列操作:

      • Token Source (令牌来源) 中键入标头的名称。API 客户端必须包括此标头名称才能将授权令牌发送到 Lambda 授权方。

      • (可选)在 Token Validation 输入字段中提供 RegEx 语句。API Gateway 将针对此表达式执行对输入令牌的初始验证并在成功验证后调用授权方。这有助于降低无效令牌产生费用的几率。

      • 对于 Authorization Caching (授权缓存),根据您是否要缓存授权方生成的授权策略,选择或清除 Enabled (已启用) 选项。在启用策略缓存后,您可选择修改 TTL 值。将 TTL 设置为零将禁用策略缓存。在启用策略缓存后,Token Source (令牌来源) 中指定的标头名称将成为缓存键。

        注意

        默认 TTL 值为 300 秒。最大值为 3600 秒;目前不能提高此限制。

    2. 对于 Request (请求) 选项,执行以下操作:

      • 对于 Identity Sources (身份来源),键入所选参数类型的请求参数名称。支持的参数类型为 HeaderQuery StringStage VariableContext。要添加更多身份来源,请选择 Add Identity Source (添加身份来源)

        API Gateway 将使用指定的身份来源作为请求授权方缓存键。在启用缓存后,API Gateway 将仅在成功确认所有指定的身份来源在运行时存在后才调用授权方的 Lambda 函数。如果指定的身份来源缺失、为 null 或为空,则 API Gateway 将返回 401 Unauthorized 响应,而不调用授权方 Lambda 函数。

        如果定义了多个身份来源,则它们都将用于派生授权方的缓存键。更改缓存键的任意部分将导致授权方丢弃缓存的策略文档并生成新的文档。

      • 对于 Authorization Caching (授权缓存),根据您是否要缓存授权方生成的授权策略,选择或取消选择已启用选项。在启用策略缓存后,您可选择从默认值 (300) 修改 TTL 值。设置 TTL=0 将禁用策略缓存。

        在禁用缓存后,无需指定身份来源。API Gateway 在调用授权方的 Lambda 函数之前不会执行任何验证。

    注意

    要启用缓存,授权方必须返回适用于 API 中所有方法的策略。要强制执行特定于方法的策略,您可以将 TTL 值设置为零,以禁用 API 的策略缓存。

  10. 选择创建为所选 API 创建新的 Lambda 授权方。

  11. 在为 API 创建授权方之后,您可选择先测试授权方调用,然后再针对方法配置授权方。

    对于 TOKEN 授权方,在 Identity token (身份令牌) 输入文本字段中键入有效的令牌,然后选择测试。此令牌将作为您在授权方的 Identity token source (身份令牌来源) 设置中指定的标头传递到 Lambda 函数。

    对于 REQUEST 授权方,键入对应于指定身份来源的有效请求参数,然后选择测试

    除了使用 API Gateway 控制台之外,您还可以使用 AWS CLI 或适用于 API Gateway 的 AWS 开发工具包来执行测试授权方调用。要使用 AWS CLI 执行此操作,请参阅 test-invoke-authorizer

    注意

    方法执行的测试调用和授权方的测试调用是独立的过程。

    要使用 API Gateway 控制台测试方法调用,请参阅 使用控制台测试 REST API 方法。要使用 AWS CLI 测试方法调用,请参阅 test-invoke-method

    要测试方法和配置的授权方的调用,请部署 API,然后使用 cURL 或 Postman 调用方法,从而提供所需的令牌或请求参数。

下一过程将介绍如何将 API 方法配置为使用 Lambda 授权方。

配置 API 方法以使用 Lambda 授权方

  1. 返回到 API。创建新方法或选择现有方法。如有必要,请创建新资源。

  2. Method Execution (方法执行) 中,选择 Method Request (方法请求) 链接。

  3. 设置下,展开 Authorization (授权) 下拉列表以选择您刚创建的 Lambda 授权方(例如,myTestApiAuthorizer),然后选择对勾图标以保存选择。

  4. (可选)还是在 Method Request (方法请求) 页面上,如果您还想将授权令牌传递到后端,请选择 Add header (添加标头)。在名称中,键入与您在为 API 创建 Lambda 授权方时指定的 Token Source (令牌来源) 名称匹配的标头名称。然后,选择对勾图标以保存设置。此步骤不适用于 REQUEST 授权方。

  5. 选择 Deploy API (部署 API),将 API 部署到某个阶段。记下 Invoke URL (调用 URL) 值。您将在调用 API 时需要它。对于使用阶段变量的 REQUEST 授权方,您还必须在 Stage Editor (阶段编辑器) 中定义必需的阶段变量并指定其值。