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

Amazon API Gateway 入门

借助 Amazon API Gateway,您可以为您的客户端提供一致且可扩展的编程接口来访问后端中三种类型的终端节点:调用 AWS Lambda 函数、调用其他 AWS 服务和访问 HTTP 网站或网页。为此,您需要创建一个 API Gateway API 来将每个 API 方法与后端终端节点集成。每个后端终端节点都与一种集成类型相关联。有关 API Gateway 中 API 集成类型的详细信息,请参阅 选择 API Gateway API 集成类型

要开始使用 Amazon API Gateway,请参阅我们提供的以下有关创建、部署和测试与一些常用后端集成的简单 API 的实际操作演练。演练中使用的示例 API 演示实施每种受支持的集成类型会涉及到什么。

在开始之前,请使用以下过程来设置您的开发环境。

为构建 API Gateway API 做好准备

在首次使用 Amazon API Gateway 之前,您必须具有 AWS 账户。

注册 AWS 账户

如果您没有 AWS 账户,请通过以下步骤创建一个账户。

注册 AWS

  1. 打开 http://amazonaws.cn/,然后选择 Create an AWS Account

  2. 按照屏幕上的说明进行操作。

要在 API Gateway 中创建、配置和部署 API,您必须预置适当的 AWS Identity and Access Management 策略。该策略必须具有访问权限才能操作 API Gateway 资源链接关系。此外,您还可以设置 IAM 权限以允许您的 API 客户端在 API Gateway 中调用您的 API。为此,请在您的 AWS 账户中创建 IAM 角色和策略,也可以选择创建用户或组,并在指定的 IAM 用户或组上设置 IAM 角色和策略。

在您的 AWS 账户中创建 IAM 用户、组、角色和策略

为实现更好的安全实践,您应在您的 AWS 账户中创建一个新的 AWS Identity and Access Management (IAM) 用户或使用现有的用户。然后,您使用该 IAM 用户的凭证访问 API Gateway,而不是使用您的 AWS 根账户。

要管理某个用户的访问权限,请创建一个 IAM 用户,然后授予该用户对 API Gateway 的访问权限。要创建新的 IAM 用户,请参阅创建 IAM 用户

要管理一组用户的访问权限,请创建一个 IAM 组,授予该组对 API Gateway 的访问权限,然后将一个或多个 IAM 用户添加到该组中。要创建 IAM 组,请参阅创建 IAM 组

要委派对特定用户、应用程序或服务的访问权限,请创建一个 IAM 角色,将指定用户或组添加到角色,然后授予用户或组对 API Gateway 的访问权限。要创建 IAM 角色,请参阅创建 IAM 角色

设置 API 时,请指定 IAM 角色的 ARN 来控制对 API 方法的访问。在创建 API 时,此 ARN 必须已准备好。

创建 IAM 策略来配置 API Gateway 资源和调用已部署的 API

在 AWS 中,访问权限使用 IAM 策略加以表述。AWS 为各个 AWS 服务提供了一组称为 AWS 托管策略的预配置的 IAM 策略。各个 IAM 用户可以创建称为客户托管策略的自定义的 IAM 策略。

您可以在 IAM 控制台中或通过使用 AWS CLI 或 AWS 开发工具包创建 IAM 策略、角色、用户或组。创建后,IAM 策略可通过其 ARN 加以引用。由 AWS 管理的策略的 ARN 采用 arn:aws:iam::aws:policy/PolicyName 格式。客户托管策略的 ARN 采用 arn:aws:iam::123456789012:policy/PolicyName 格式。

例如,下面是名为 AmazonAPIGatewayAdministrator (arn:aws:iam::aws:policy/AmazonAPIGatewayAdministrator) 的 AWS 托管策略。它授予在 API Gateway 中创建、配置和部署 API 的完全访问权限:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "apigateway:*" ], "Resource": "arn:aws:apigateway:*::/*" } ] }

要向用户授予权限,请将策略附加到该用户或包含该用户的组。有关更多信息,请参阅附加托管策略

通过将上述策略附加到 IAM 用户,允许 ("Effect":"Allow") 用户对与用户的 AWS 账户关联的任何 API Gateway 资源 (arn:aws:apigateway:*::/*) 执行任何 API Gateway 操作 ("Action":["apigateway:*"])。

要将 IAM 用户限制为读取和创建已创建的 API 的文档,您可以将 Action 属性值从 "Action": ["apigateway:*"] 替换为 "Action":["apigateway:GET", "apigateway:POST"],并将 Resource 属性值从 ["apigateway:*"] 替换为 ["arn:aws:apigateway::123456789012:/restapis/*/documentation/*"]。有关更多信息,请参阅 使用 IAM 许可控制对 API 的访问

要控制 API 的调用方式,以下 AWS 托管 IAM 策略 AmazonAPIGatewayInvokeFullAccess ( arn:aws:iam::aws:policy/AmazonAPIGatewayInvokeFullAccess) 提供了在 API Gateway 中调用 API 的任何部分的完全访问权限:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "execute-api:Invoke" ], "Resource": "arn:aws:execute-api:*:*:*" } ] }

要了解如何将 IAM 用户限制为调用一组指定的 API 部分,请参阅使用 IAM 许可控制对 API 的访问

要向用户授予所述的权限,请将策略附加到用户或包含该用户的组。要附加策略,请参阅附加托管策略

在本文档中,我们将尽可能使用托管策略。要创建和使用客户托管 IAM 策略,请参阅使用客户托管策略

注意

要完成上述步骤,您必须拥有创建 IAM 策略并将其附加到 IAM 用户的权限。

当 API Gateway 与 AWS Lambda 或其他 AWS 服务 (例如 Amazon Simple Storage Service 或 Amazon Kinesis) 集成时,您还必须启用 API Gateway 作为可信实体才能在后端调用 AWS 服务。为此,请创建 IAM 角色并将特定于服务的访问策略附加到该角色。在下面的调用 Lambda 函数的示例中对此进行了演示:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "*" } ] }

接下来,添加以下信任策略以允许 API Gateway 代表被分配了 IAM 角色的附加用户调用后端 Lambda 函数。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "apigateway.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

如果没有指定此信任关系,则会拒绝 API Gateway 代表用户调用后端的权限,即使用户已被授予直接访问后端的权限。

当 API Gateway API 设置为使用 IAM 角色和策略来控制客户端访问时,客户端必须使用签名版本 4 签署 API 请求。或者,您可以使用 AWS CLI 或 AWS 开发工具包之一来为您处理请求签名。有关更多信息,请参阅 调用 Amazon API Gateway 中的 API

下一步

现在您已注册 AWS 账户并创建所需的 IAM 角色和策略,接下来就可以开始使用 API Gateway 了。要在 API Gateway 控制台中通过使用示例来创建您的第一个简单 API,请参阅使用示例构建 API Gateway API