本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 AWS Fargate PrivateLink、AWS 和网络负载均衡器在 Amazon ECS 上私下访问容器应用程序
Kirankumar Chandrashekar,Amazon Web Services
Summary
此模式描述了如何使用带有 AWS Fargate 启动类型的亚马逊弹性容器服务 (Amazon ECS),在网络负载均衡器后面,在亚马逊网络服务 (AWS) 云上私下托管 Docker 容器应用程序,并使用 AWS 访问该应用程序。 PrivateLinkAmazon Relational Database Service (Amazon RDS) 为在具有高可用性 (HA) 的 Amazon ECS 上运行的应用程序关系数据库提供托管。如果应用程序需要持久性存储,则您可以使用 Amazon Elastic File System (Amazon EFS)。
此模式对运行 Docker 应用程序的 Amazon ECS 服务使用 Fargate 启动类型,并在前端使用网络负载均衡器。然后可以将其与虚拟私有云 (VPC) 终端节点关联,以便通过 AWS 进行访问 PrivateLink。然后,可以使用 VPC 终端节点与其他 VPCs 人共享此 VPC 终端节点服务。
您可以将 Fargate 与 Amazon ECS 配合使用来运行容器,而无需管理服务器或亚马逊弹性计算云 (Amazon EC2) 实例的集群。你也可以使用 Amazon A EC2 uto Scaling 群组来代替 Fargate。有关更多信息,请参阅使用 AWS PrivateLink 和 Network Load Balancer 在 Amazon ECS 上私下访问容器应用程序。
先决条件和限制
先决条件
一个活跃的 AWS 账户
已在 Linux、macOS 或 Windows 上安装并配置 AWS 命令行界面(AWS CLI)版本 2
Docker
,已在 Linux、macOS 或 Windows 上安装并配置 在 Docker 上运行的应用程序
架构

技术堆栈
Amazon CloudWatch
Amazon Elastic Container Registry(Amazon ECR)
Amazon ECS
Amazon EFS
Amazon RDS
Amazon Simple Storage Service (Amazon S3)
AWS Fargate
AWS PrivateLink
AWS Secrets Manager
应用程序负载均衡器
Network Load Balancer
VPC
自动化和扩展
您可以使用 AWS 通过使用基础设施即代码 CloudFormation来创建此模式。
工具
AWS 服务
Amazon Elastic Container Registry(Amazon ECR)是一项安全、可靠且可扩展的 AWS 托管容器映像注册表服务。
Amazon Elastic Container Service(Amazon ECS)是一项高度可扩展的快速容器管理服务,可帮助轻松运行、停止和管理集群上的容器。
Amazon Elastic File System(Amazon EFS)可提供简单、可扩展、完全托管的弹性 NFS 文件系统,以便与 AWS 云服务和本地资源配合使用。
AWS Fargate是一种可以与 Amazon ECS 配合使用的技术,无需管理服务器或亚马逊 EC2 实例集群即可运行容器。
Amazon Relational Database Service(Amazon RDS)是一项 Web 服务,让用户能够在 AWS 云云中更轻松地设置、操作和扩展关系数据库。
Amazon Simple Storage Service(Amazon S3)是一种面向互联网的存储服务。该服务旨在降低开发人员进行网络规模级计算的难度。
AWS Secrets Manager 可帮助您将代码中的硬编码凭证(包括密码)替换为对 Secrets Manager 进行的 API 调用,以便以编程方式检索此密钥。
Amazon Virtual Private Cloud(Amazon VPC)可帮助您将 AWS 资源启动到您定义的虚拟网络中。
El@@ astic Load Balancing (ELB) 将传入的应用程序或网络流量分发到多个可用区域中的多个目标,例如 EC2 实例、容器和 IP 地址。
其他工具
Docker
帮助开发人员轻松地将任何应用程序作为轻量级、便携且自给自足的容器打包、运输和运行。
操作说明
| Task | 说明 | 所需技能 |
|---|---|---|
创建 VPC。 |
| 云管理员 |
| Task | 说明 | 所需技能 |
|---|---|---|
创建网络负载均衡器。 |
要获取有关此操作和其他操作的帮助,请参阅相关资源部分。 | 云管理员 |
创建应用程序负载均衡器。 |
| 云管理员 |
| Task | 说明 | 所需技能 |
|---|---|---|
创建 Amazon EFS 文件系统。 |
| 云管理员 |
子网的挂载目标。 |
| 云管理员 |
验证子网是否已挂载为目标。 |
| 云管理员 |
| Task | 说明 | 所需技能 |
|---|---|---|
创建 S3 存储桶。 | 打开 Amazon S3 控制台并创建一个 S3 存储桶,以在需要时存储应用程序的静态资产。 | 云管理员 |
| Task | 说明 | 所需技能 |
|---|---|---|
创建 AWS KMS 密钥以加密 Secrets Manager 密钥。 | 打开 AWS Key Management Service (AWS KMS)控制台并创建 KMS 密钥。 | 云管理员 |
创建 Secrets Manager 密钥以存储 Amazon RDS 密码。 |
| 云管理员 |
| Task | 说明 | 所需技能 |
|---|---|---|
创建数据库子网组。 |
| 云管理员 |
创建 Amazon RDS 实例。 | 在私有子网中创建和配置 Amazon RDS 实例。确保已启用多可用区以实现高可用性 (HA)。 | 云管理员 |
将数据载入 Amazon RDS 实例。 | 将应用程序所需关系数据加载到 Amazon RDS 实例中。此流程将根据应用程序的需求以及数据库架构的定义和设计方式而有所不同。 | 数据库管理员 |
| Task | 说明 | 所需技能 |
|---|---|---|
创建 ECS 集群。 |
| 云管理员 |
创建 Docker 映像 | 按照 AWS 文档中的说明创建 Docker 映像。 | 云管理员 |
创建 Amazon ECR 存储库。 |
| 云管理员、 DevOps 工程师 |
推送 Docker 映像至 Amazon ECR 存储库 |
| 云管理员 |
创建 Amazon ECS 任务定义。 | 需要任务定义才能在 Amazon ECS 中运行 Docker 容器。
重要有关设置任务定义的帮助,请参阅相关资源部分中的“创建任务定义”。请务必提供您推送至 Amazon ECR 的 Docker 映像。 | 云管理员 |
创建 ECS 服务,然后选择 Fargate 作为启动类型。 |
| 云管理员 |
| Task | 说明 | 所需技能 |
|---|---|---|
设置 AWS 终 PrivateLink 端节点。 |
| 云管理员 |
| Task | 说明 | 所需技能 |
|---|---|---|
创建 VPC 端点。 | 为您之前@@ 创建的 AWS 终端 PrivateLink 节点创建 VPC 终端节点。VPC 终端节点完全限定域名 (FQDN) 将指向 AWS PrivateLink 终端节点 FQDN。这会为 VPC 端点服务创建一个可供域名服务端点访问的弹性网络接口。 | 云管理员 |
| Task | 说明 | 所需技能 |
|---|---|---|
添加应用程序负载均衡器作为目标。 | 要添加应用程序负载均衡器作为网络负载均衡器的目标,请遵循 AWS 文档中的说明进行操作。 | 应用程序开发人员 |
相关资源
创建负载均衡器:
创建 Amazon EFS 文件系统:
创建 Secrets Manager 密钥:
创建 Amazon RDS 实例:
创建 Amazon ECS 组件
其他资源: