使用 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 回滚警报和金丝雀部署