Featured image of post 借助亚马逊ECS Express Mode,无需基础设施复杂性即可构建生产就绪的应用程序

借助亚马逊ECS Express Mode,无需基础设施复杂性即可构建生产就绪的应用程序

亚马逊ECS Express Mode是一种新功能,它能通过单一命令自动配置负载均衡器、网络、安全组和自动扩缩策略等基础设施,帮助开发者快速部署高可用、可扩展的容器化应用,从而专注于应用开发本身。

在将容器化应用部署到生产环境时,需要配置横跨负载均衡器、自动扩缩策略、网络和安全组的数百个参数。这种开销会延迟上市时间,并分散对核心应用开发的关注。

今天,我很高兴地宣布 Amazon ECS Express Mode,这是亚马逊弹性容器服务(Amazon ECS)的一项新功能,可帮助您通过单一命令启动高可用、可扩展的容器化应用。ECS Express Mode 通过简化的 API 自动完成基础设施设置,包括域名、网络、负载均衡和自动扩缩。这意味着您可以专注于构建应用程序,同时利用亚马逊云科技(AWS)的最佳实践自信地进行部署。此外,当您的应用程序演进并需要高级功能时,您可以无缝配置并访问全部资源功能,包括 Amazon ECS。

您可以通过导航到 Amazon ECS 控制台来开始使用 Amazon ECS Express Mode。

Amazon ECS Express Mode 为 Amazon ECS 服务资源提供了一个简化的接口,并集成了创建 AWS 上常用资源的新功能。ECS Express Mode 能够从一个入口点自动预置和配置 ECS 集群、任务定义、应用程序负载均衡器、自动扩缩策略以及 Amazon Route 53 域名。

开始使用 ECS Express Mode

让我带您了解如何使用 Amazon ECS Express Mode。我将重点介绍控制台体验,它提供了部署容器化应用程序的最快捷方式。

在这个示例中,我使用一个运行在带有 Flask 框架的 Python 上的简单容器镜像应用。以下是我已推送到亚马逊弹性容器注册表(Amazon ECR)存储库的演示 Dockerfile:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 构建阶段
FROM python:3.6-slim as builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir --user -r requirements.txt gunicorn

# 运行时阶段
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"]

在 Express Mode 页面上,我选择 Create。界面非常简洁——我指定来自 Amazon ECR 的容器镜像 URI,然后选择我的任务执行角色和基础设施角色。如果您还没有这些角色,可以在下拉菜单中选择 Create new role,以便根据 AWS 身份和访问管理(IAM)托管策略为您创建一个。

如果我想自定义部署,可以展开 Additional configurations 部分来定义集群、容器端口、健康检查路径或环境变量。

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

在 Amazon CloudWatch Logs 中设置日志记录是我总会配置的,以便在需要时排查应用问题。当我满意配置后,选择 Create

在我选择 Create 后,Express Mode 会自动预置一个完整的应用程序栈,包括:

  • 具有 AWS Fargate 任务的 Amazon ECS 服务
  • 带有健康检查的应用程序负载均衡器
  • 基于 CPU 利用率的自动扩缩策略
  • 安全组和网络配置
  • 以及一个带有 AWS 提供 URL 的自定义域名

我还可以在 Resources 选项卡的 Timeline 视图中跟踪进度。

如果我需要进行编程式部署,可以通过单一的 AWS 命令行界面(AWS CLI)命令实现相同的结果:

1
2
3
4
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 服务,然后选择 Update。我可以使用界面来指定新的镜像 URI 或调整资源分配。

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

1
2
3
4
5
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 Express Mode 的其他信息:

  • 可用性 – ECS Express Mode 在发布时已在所有 AWS 区域可用。
  • 基础设施即代码支持 – 您可以使用 IaC 工具,如 AWS CloudFormation、AWS Cloud Development Kit (CDK) 或 Terraform,通过 Amazon ECS Express Mode 部署您的应用程序。
  • 定价 – 使用 Amazon ECS Express Mode 无需额外费用。您需要为启动和运行应用程序而创建的 AWS 资源付费。
  • 应用程序负载均衡器共享 – 创建的 ALB 会自动通过基于主机头的监听器规则在最多 25 个 ECS 服务之间共享。这有助于显著分摊 ALB 的成本。

通过 Amazon ECS 控制台开始使用 Amazon ECS Express Mode。在 Amazon ECS 文档页面了解更多信息。

祝您构建愉快!

— Donnie

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计