使用 Amazon CLI 创建您的第一个 Express Mode 服务 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 Amazon CLI 创建您的第一个 Express Mode 服务

本教程介绍如何使用 Amazon Amazon CLI 创建 Express Mode 服务应用程序。您将部署一个简单的 Web 应用程序来演示 Express Mode 服务的核心功能。

先决条件

在开始之前,请确保您满足以下条件:

  • 具有适当权限的 Amazon 账户

  • 已安装并配置 Amazon Amazon CLI

  • 存储在 Amazon ECR 或私有注册表中的容器映像

步骤 1:创建 IAM 角色

Express Mode 服务需要两个 IAM 角色。任务执行角色允许 Amazon ECS 代表您拉取容器映像并写入日志。请使用下面的策略来创建任务执行角色和基础设施角色:

#Create the roles with ECS trust policies aws iam create-role --role-name ecsTaskExecutionRole \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole", } ] }' aws iam create-role --role-name ecsInfrastructureRoleForExpressServices \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccessInfrastructureForECSExpressServices", "Effect": "Allow", "Principal": { "Service": "ecs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'
#Attach the AWS managed policies aws iam attach-role-policy --role-name ecsTaskExecutionRole \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy aws iam attach-role-policy --role-name ecsInfrastructureRoleForExpressServices \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSInfrastructureRoleforExpressGatewayServices

有关更多信息,请参阅 Amazon ECS 任务执行 IAM 角色

步骤 2:创建您的第一个 Express Mode 服务应用程序

使用所需的最少参数创建 Express Mode 服务应用程序:

aws ecs create-express-gateway-service \ --image "public.ecr.aws/nginx/nginx:latest" \ --execution-role-arn arn:aws:iam::123456789012:role/ecsTaskExecutionRole \ --infrastructure-role-arn arn:aws:iam::123456789012:role/ecsInfrastructureRoleForExpressServices \ --monitor-resources

此命令会创建具有以下内容的 Express Mode 服务应用程序:

  • 根据映像名称生成的唯一服务名称

  • 1 个 vCPU 和 2 GB 内存

  • 用于 HTTPS 流量的端口 80

  • 基于 CPU 利用率自动扩缩

  • 默认 VPC 和公有子网中面向互联网的应用程序负载均衡器

  • 此服务的唯一 URL,格式为 servicename.ecs.region.on.aws

该命令会在资源预置时持续监控资源并返回状态。服务部署完成后,应用程序 URL 即可接收流量。当您中断监控时,系统会返回有关已创建服务的信息,包括服务 ARN 和 URL:

{ "service": { "cluster": "arn:aws:ecs:region:123456789012:cluster/default", "serviceName": "nginx-1234", "serviceArn": "arn:aws:ecs:region:123456789012:service/default/nginx-1234", "infrastructureRoleArn": "arn:aws:iam::123456789012:role/ecsInfrastructureRoleForExpressServices", "status": { "statusCode": "ACTIVE" }, "createdAt": "UNIXTIMESTAMP" } }

步骤 3:创建具有自定义设置的 Express Mode 服务应用程序

您可以通过指定其他参数来自定义 Express Mode 服务应用程序:

aws ecs create-express-gateway-service \ --execution-role-arn arn:aws:iam::123456789012:role/ecsTaskExecutionRole \ --infrastructure-role-arn arn:aws:iam::123456789012:role/ecsInfrastructureRoleForExpressServices \ --primary-container \ ‘{“image”=“123456789012.dkr.ecr.region.amazonaws.com/my-app:latest", \ “containerPort”=8080, \ “environment”=[{“name”=“ENV”,”value”=“production”},{“name”=“DEBUG”,”value”=“false”}]}’ \ --service-name "my-web-app" \ --cpu 2 \ --memory 4 \ --health-check-path "/health" \ --scaling-target ‘{“minTaskCount”=3,”maxTaskCount”=100}’ --monitor-resources

这将创建具有以下内容的应用程序:

  • 自定义名称“my-web-app”

  • 2 个 vCPU 和 4 GB 内存

  • 用于应用程序流量的端口 8080

  • 自定义运行状况检查端点

  • 环境变量

  • 最少 3 个任务、最多 100 个任务用于自动扩缩

步骤 4:监控部署

--monitor-resources 标志适用于对 Express Mode 服务的任何创建、更新或删除调用。但此外,除了变异操作之外,您还可以随时监控服务中的资源。部署时间可能因需要预置的资源而异。一旦状态变为 ACTIVE,您的应用程序即可开始接收流量。

aws ecs monitor-express-gateway-service --service-arn arn:aws:ecs:region:123456789012:service/app-23d97h88

您还可以查看 Express Mode 服务应用程序的当前配置和状态:

aws ecs describe-express-gateway-service --service-arn arn:aws:ecs:region:123456789012:service/app-23d97h88

步骤 5:访问应用程序

当 Express Mode 服务应用程序处于活动状态时,请使用提供的 URL 访问该应用程序。URL 格式如下:

https://<service-name>.ecs.<region>.on.aws/

例如:

https://app-23d97h88.ecs.us-west-2.on.aws/

您的应用程序当前正在运行且具有以下功能:

  • 自动 SSL/TLS 终止

  • 跨多个可用区的负载均衡

  • 基于 CPU 利用率自动扩缩

  • CloudWatch 日志记录和监控

  • 针对未来更新的 5XX 回滚警报和金丝雀部署