亚马逊AWS官方博客

使用 Amazon ECS 快速模式构建无需复杂基础设施的生产就绪型应用程序



将容器化应用程序部署到生产环境需要处理数百个配置参数,这些参数涉及负载均衡器、自动扩缩策略、网络和安全组等多个方面。这些开销会延迟产品上市时间,并分散对核心应用程序开发的关注。

今天,我很高兴宣布推出 Amazon ECS 快速模式:这是 Amazon Elastic Container Service(Amazon ECS)的一项新功能,可帮助您通过单个命令启动高度可用、可扩展的容器化应用程序。ECS 快速模式通过简化的 API 实现基础设施的自动化配置,涵盖域、网络、负载均衡及自动扩缩。这意味着您可以专注构建应用程序,同时放心地使用 Amazon Web Services(AWS)最佳实践进行部署。此外,当您的应用程序不断发展且需要高级功能时,您可以无缝配置并访问资源的全部功能,包括 Amazon ECS。

您可以通过访问 Amazon ECS 控制台以开始使用 Amazon ECS 快速模式。

Amazon ECS 快速模式为 Amazon ECS 服务资源提供简化的界面,并新增跨 AWS 创建常用资源的集成功能。ECS 快速模式通过单一入口点自动配置和部署 ECS 集群、任务定义、应用程序负载均衡器、自动扩缩策略以及 Amazon Route 53 域。

开始使用 ECS 快速模式
我将告知您如何使用 Amazon ECS 快速模式。我将重点介绍控制台操作体验,这是部署容器化应用程序的最快捷方式。

在此示例中,我将使用简单的容器映像应用程序,该应用程序使用 Flask 框架基于 Python 运行。以下是我演示的 Dockerfile,已推送到 Amazon Elastic Container Registry(Amazon ECR)存储库:


# Build stage
FROM python:3.6-slim as builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir --user -r requirements.txt gunicorn

# Runtime stage
FROM python:3.6-slim
WORKDIR /app
COPY --from=builder /root/.local /root/.local
COPY app.py .
ENV PATH=/root/.local/bin:$PATH
EXPOSE 80
CMD ["gunicorn", "--bind", "0.0.0.0:80", "app:app"]

在“快速模式”页面上,选择创建。界面经过精简:我从 Amazon ECR 指定容器映像 URI,然后选择任务执行角色和基础设施角色。如果您尚未具备这些角色,请在下拉列表中选择创建新角色,以便从 AWS Identity and Access Management(IAM)托管策略中为您创建角色。

如果要自定义部署,可展开其他配置部分,以定义集群、容器端口、运行状况检查路径或环境变量。

在此部分,还可以调整 CPU、内存或扩缩策略。

Amazon CloudWatch Logs 中设置日志是我始终会进行的配置,以便在需要时排查应用程序故障。配置完毕后,选择创建

选择创建后,快速模式会自动预置完整的应用程序堆栈,包括带 AWS Fargate 任务的 Amazon ECS 服务,带运行状况检查的应用程序负载均衡器,基于 CPU 利用率的自动扩缩策略、安全组和网络配置,以及带 AWS 提供的 URL 的自定义域。还可以在资源选项卡上的时间轴视图中跟踪进度。

如果需要进行程序化部署,只需单个 AWS 命令行界面(AWS CLI)命令即可实现相同效果:

aws ecs create-express-gateway-service \
--image [ACCOUNT_ID].ecr.us-west-2.amazonaws.com/myapp:latest \
--execution-role-arn arn:aws:iam::[ACCOUNT_ID]:role/[IAM_ROLE] \
--infrastructure-role-arn arn:aws:iam::[ACCOUNT_ID]:role/[IAM_ROLE]

完成后,可在控制台中查看应用程序的 URL,并立即访问正在运行的应用程序。

创建应用程序后,可通过访问 ECS 服务中的指定集群(如果未指定,则为默认集群)查看详细信息,从而监控性能、查看日志和管理部署。

如果需要使用新的容器版本更新应用程序,可返回控制台,选择 Express 服务,然后选择更新。可使用该界面指定新的映像 URI 或调整资源分配。

或者,也可使用 AWS CLI 进行更新:

aws ecs update-express-gateway-service \
  --service-arn arn:aws:ecs:us-west-2:[ACCOUNT_ID]:service/[CLUSTER_NAME]/[APP_NAME] \
  --primary-container '{
    "image": "[IMAGE_URI]"
  }'

我发现整个体验在降低配置复杂度的同时,仍能让我在需要更高级配置时访问所有底层资源。

需要了解的其他事项
以下是有关 ECS 快速模式的其他信息:

  • 可用性:ECS 快速模式发布时,在所有 AWS 区域均可用。
  • 基础设施即代码支持:您可以使用 AWS CloudFormationAWS 云开发工具包(CDK)或 Terraform 等 IaC 工具,通过 Amazon ECS 快速模式部署应用程序。
  • 定价:使用 Amazon ECS 快速模式无需额外付费。您只需为创建用于启动和运行应用程序的 AWS 资源付费。
  • 应用程序负载均衡器共享:创建的应用程序负载均衡器将通过基于主机标头的侦听器规则,自动共享至最多 25 个 ECS 服务。这有助于显著分摊 ALB 的成本。

通过 Amazon ECS 控制台开始使用 Amazon ECS 快速模式。要了解更多信息,请访问 Amazon ECS 文档页面。

祝您构建顺利!
Donnie

AWS 架构师中心: 云端创新的引领者

探索 AWS 架构师中心,获取经实战验证的最佳实践与架构指南,助您高效构建安全、可靠的云上应用