教程:构建具有私有集成到 Amazon ECS 服务的 HTTP API - Amazon API Gateway
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

教程:构建具有私有集成到 Amazon ECS 服务的 HTTP API

在本教程中,您将创建一个无服务器 API,该 API 连接到在 Amazon VPC 中运行的 Amazon ECS 服务。Amazon VPC 之外的客户端可以使用 API 访问您的 Amazon ECS 服务。

完成本教程需要大约 1 个小时。首先,您使用 Amazon CloudFormation 模板创建 Amazon VPC 和 Amazon ECS 服务。然后,您可以使用 API Gateway 控制台创建 VPC 链接。VPC 链接允许 API 网关访问在您的 Amazon VPC 中运行的 Amazon ECS 服务。接下来,您创建一个 HTTP API,该 API 使用 VPC 链接连接到您的 Amazon ECS 服务。最后,测试您的 API。

当您调用 HTTP API 时,API Gateway 会通过 VPC 链接将请求路由到您的 Amazon ECS 服务,然后从该服务返回响应。

要完成本教程,您需要一个Amazon账户以及一位具有控制台访问权限的 Amazon Identity and Access Management 用户。有关更多信息,请参阅 开始使用 API Gateway 的先决条件

在本教程中,您将使用 Amazon Web Services Management Console。如需创建此 API 和所有相关资源的 Amazon CloudFormation 模板,请参阅 ‬template.yaml‭‬。

步骤 1:创建 Amazon ECS 服务

Amazon ECS 是一项容器管理服务,可让您轻松地在 cluster 上运行、停止和管理 Docker 容器。在本教程中,您将在 Amazon ECS 管理的无服务器基础设施上运行 cluster。

下载并解压此 Amazon CloudFormation 模板,这将为服务创建所有依赖项,包括 Amazon VPC。您可以使用模板创建使用 Application Load Balancer 的 Amazon ECS 服务。

创建 Amazon CloudFormation 堆栈

  1. 打开 Amazon CloudFormation 控制台,地址:https://console.aws.amazon.com/cloudformation

  2. 选择 Create stack (创建堆栈),然后选择 With new resources (standard) (使用新资源(标准))

  3. 对于 Specify template (指定模板),选择 Upload a template file (上传模板文件)

  4. 选择您下载的模板。

  5. 选择 Next (下一步)

  6. 对于 Stack name (堆栈名称),输入 http-api-private-integrations-tutorial,然后选择 Next (下一步)

  7. 对于配置堆栈选项,请选择下一步

  8. 对于 Capabilities (功能),请确认 Amazon CloudFormation 可以在您的账户中创建 IAM 资源。

  9. 选择创建堆栈

Amazon CloudFormation 配置 ECS 服务,这可能需要几分钟的时间。当 Amazon CloudFormation 堆栈的状态为 CREATE_COMPLETE 时,您就可以继续下一步了。

VPC 链接允许 API 网关访问 Amazon VPC 中的私有资源。您可以使用 VPC 链接允许客户端通过 HTTP API 访问您的 Amazon ECS 服务。

要创建 VPC 链接

  1. 通过以下网址登录到 Amazon API Gateway 控制台:https://console.aws.amazon.com/apigateway

  2. 选择 VPC 链接,然后选择创建

  3. 对于选择 VPC 链接版本,选择 HTTP API 的 VPC 链接

  4. 对于 Name (名称),请输入 private-integrations-tutorial

  5. 对于 VPC,选择已在步骤 1 中创建的 VPC。名称应该以 PrivateIntegrationsStack 开头。

  6. 对于子网,选择 VPC 中的两个私有子网。名字以 PrivateSubnet 结尾。

  7. 选择创建

创建 VPC 链接后,API Gateway 会配置弹性网络接口以访问您的 VPC。此过程可能耗时数分钟。同时,您可以创建 API。

步骤 3:创建 HTTP API

HTTP API 为您的 Amazon ECS 服务提供了 HTTP 终端节点。在此步骤中,您将创建空 API。在步骤 4 和 5 中,您配置路由和集成以连接 API 和 Amazon ECS 服务。

要创建 HTTP API

  1. 通过以下网址登录到 Amazon API Gateway 控制台:https://console.aws.amazon.com/apigateway

  2. 选择 Create API(创建 API),然后为 HTTP API 选择 Build(构建)。

  3. 对于 API Name (API 名称),请输入 http-private-integrations-tutorial

  4. 选择 Next (下一步)

  5. 对于 Configure routes(配置路由),选择 Next(下一步)以跳过路由创建。稍后再创建路由。

  6. 查看 API Gateway 为您创建的阶段。API Gateway 创建了启用自动部署的 $default 阶段,这是本教程的最佳选择。选择 Next (下一步)

  7. 选择创建

步骤 4:创建路由

路由是将传入的 API 请求发送到后端资源的一种方式。路由包含两部分:HTTP 方法和资源路径,例如 GET /items。对于此示例 API,我们创建了一个路由。

要创建路由

  1. 通过以下网址登录到 Amazon API Gateway 控制台:https://console.aws.amazon.com/apigateway

  2. 选择 API。

  3. 选择路由

  4. 选择创建

  5. 对于 Method(方法),选择 ANY

  6. 对于路径,请输入 /{proxy+}。路径末尾 {proxy+} 是一个贪婪型路径变量。API Gateway 将所有请求发送到您的 API 到此路由。

  7. 选择创建

步骤 5:创建集成

您可以创建集成以将路由连接到后端资源。

要创建集成

  1. 通过以下网址登录到 Amazon API Gateway 控制台:https://console.aws.amazon.com/apigateway

  2. 选择 API。

  3. 选择 Integrations(集成)。

  4. 选择 Manage integrations(管理集成),然后选择 Create(创建)。

  5. 对于将此集成附加到路由,请选择您之前创建的 ANY/{proxy+} 路由。

  6. 对于集成类型,选择私有资源

  7. 对于集成详情,请选择手动选择

  8. 对于目标服务,请选择 ALB/NLB

  9. 对于 Load balancer (负载均衡器),请选择您在步骤 1 中使用 Amazon CloudFormation 模板创建的负载均衡器。其名称应当以 http-Priva 为开头。

  10. 对于侦听器,请选择 HTTP 80

  11. 对于 VPC 链接,请选择您在步骤 2 中创建的 VPC 链接。其名称应当为 private-integrations-tutorial

  12. 选择创建

要验证您的路由和集成设置是否正确,请选择将集成附加到路由。控制台显示您拥有集成到 VPC 负载均衡器的 ANY /{proxy+} 路由。

现在您已经准备好测试 API 了。

步骤 6:测试您的 API

接下来,测试您的 API 以确保它正常工作。为简单起见,请使用 Web 浏览器调用 API。

要测试您的 API

  1. 通过以下网址登录到 Amazon API Gateway 控制台:https://console.aws.amazon.com/apigateway

  2. 选择 API。

  3. 请记下您的 API 的调用 URL。

  4. 在 Web 浏览器中,转到 API 的调用 URL。

    完整的 URL 应类似于 https://abcdef123.execute-api.us-east-2.amazonaws.com

    您的浏览器向 API 发送 GET 请求。

  5. 验证 API 的响应是欢迎消息,告诉您应用程序正在 Amazon ECS 上运行。

    如果您看到欢迎消息,则表示您成功创建了在 Amazon VPC 中运行的 Amazon ECS 服务,并使用带有 VPC 链接的 API 网关 HTTP API 访问 Amazon ECS 服务。

步骤 7:清除

为避免不必要的成本,请删除作为本教程的一部分而创建的资源。以下步骤将删除您的 VPC 链接、Amazon CloudFormation 堆栈和 HTTP API。

要删除 HTTP API

  1. 通过以下网址登录到 Amazon API Gateway 控制台:https://console.aws.amazon.com/apigateway

  2. API 页面上,选择一个 API。选择操作,选择删除,然后确认您的选择。

要删除 VPC 链接

  1. 通过以下网址登录到 Amazon API Gateway 控制台:https://console.aws.amazon.com/apigateway

  2. 选择 VPC 链接

  3. 选择您的 VPC 链接,选择删除,然后确认您的选择。

删除 Amazon CloudFormation 堆栈

  1. 打开 Amazon CloudFormation 控制台,地址:https://console.aws.amazon.com/cloudformation

  2. 选择您的 Amazon CloudFormation 堆栈。

  3. 选择删除,然后确认您的选择。

接下来的步骤:通过 实现自动化Amazon CloudFormation

您可以自动创建和清理本教程中涉及的所有Amazon资源。如需完整的示例Amazon CloudFormation模板,请参阅 template.yaml