AWS CLI を使用して最初の Express Mode サービスを作成する
このチュートリアルでは、AWS AWS CLI を使用して Express Mode サービスアプリケーションを作成する方法を紹介します。Express Mode サービスのコア機能を示すシンプルなウェブアプリケーションをデプロイします。
前提条件
開始する前に、以下を確認してください。
適切なアクセス許可が付与されている AWS アカウント
AWS AWS CLI がインストールされ、設定されている
Amazon ECR またはプライベートレジストリに保存されたコンテナイメージ
ステップ 1: IAM ロールを作成する
Express Mode サービスには 2 つの 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 およびパブリックサブネットのインターネット向け Application Load Balancer
このサービスに一意の 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 サービスへの Create、Update、Delete 呼び出しで機能します。ただし、変更アクションとは別に、サービスのリソースをいつでもモニタリングできます。デプロイの時間は、プロビジョニングする必要があるリソースによって異なります。ステータスが 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 ロールバックアラームとカナリアデプロイ