AWS CLI を使用して最初の Express Mode サービスを作成する - Amazon Elastic Container Service

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 ロールバックアラームとカナリアデプロイ