使用 AWS CLI 创建您的第一个 Express Mode 服务 - Amazon Elastic Container Service

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

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

先决条件

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

  • 具有适当权限的 AWS 账户

  • 已安装并配置 AWS AWS 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 回滚警报和金丝雀部署