Amazon ECS Express Mode サービスの更新
Express Mode サービスは、ネットワーク、ロードバランシング、Application Auto Scaling の設定可能なオプションを提供し、これらのサービス全体の変更をオーケストレーションすることで、サービスの更新プロセスを簡素化します。
Express Mode サービスを更新して、コンテナイメージの変更、リソース割り当ての調整、または設定の変更を行うことができます。更新はカナリアデプロイを使用してデプロイされ、可用性を維持するためにアラームベースのロールバックアラームが使用されます。
デプロイの動作
Express Mode サービスは、デフォルトでカナリアデプロイを使用して、安全な更新と迅速なロールバックを実現します。
-
新しい環境が作成され、変更とともにタスクがデプロイされます
-
トラフィックの 5% が新しい環境に移行します
-
4xx と 5xx エラーの割合の合計が 3 分以内に 2 つのデータポイントで 1 より大きい場合、アラームベースのロールバックがトリガーされます
-
ヘルスチェックは新しいタスクが正常であることを確認します
-
ベイク時間が 3 分経過すると、トラフィックの 100% が新しい環境に移行されます
-
モニタリング用のベイク時間が 3 分経過すると、古いタスクは徐々に停止して置き換えられます
詳細については、「Amazon ECS カナリアデプロイ」を参照してください。
手順
コンソール (https://console.aws.amazon.com/ecs/v2
) を開きます。 -
ナビゲーションペインで [Clusters] (クラスター) を選択してください。
-
[クラスター] ページで、Express Mode サービスを含むクラスターの名前を選択します。
-
[クラスターの詳細] ページで、[サービス] タブを選択します。
-
Express Mode サービスを表示するようにフィルターを設定します。[リソース管理タイプを絞り込む] で、ECS を選択します。
Express Mode サービスには、名前の横に Express バッジがあります。
-
[構成] の下:
-
アプリケーションに使用するイメージを指定します。[イメージ URI] でイメージの URI を入力します。Amazon ECR イメージを参照するには、[ECR イメージを参照] を選択し、次の操作を行います。
-
[プライベートリポジトリ] で、Amazon ECR プライベートリポジトリを選択します。
[イメージ] で、イメージを選択します。
イメージを識別する方法を選択します。[イメージの選択方法] で、以下のオプションのいずれかを選択します。
-
AWS は [イメージダイジェスト] を選択することをお勧めしています。
-
タグを使用するには、[イメージタグ] を選択してからタグを選択します。
-
-
-
プライベートレジストリを使用するには、[プライベートレジストリ] を選択します。次に、[Secrets Manager ARN または名前] に前提条件で作成した Secrets Manager ARN を入力します。
-
[タスク実行ロール] で、ロールを選択するか、新しいロールを作成して更新します。アクセス許可を追加する必要がある場合は、タスク実行ロールを更新できます。
-
-
[追加設定] で、サービスをカスタマイズします。
-
[コンテナ] で以下を実行します。
-
[コンテナポート] で、アプリケーションがリッスンするポートを更新します (デフォルトは 80)。
-
[ヘルスチェックパス] で、ヘルスチェックのパス (
/healthなど) を更新します。
-
-
[環境変数] で、アプリケーションに必要な環境変数のキーと値のペアを追加します。
-
[キー] に、環境変数の名前を入力します。
-
[値タイプ] で、[環境変数] または [シークレット] を選択します。
-
[値または値の取得] には、値またはリファレンスを入力します。
-
[環境変数の追加] を選択して、必要に応じて変数を追加します。
-
-
[コマンド] に、オプションでカスタムコマンドを入力して Docker CMD 命令を上書きします。
-
[タスクロール] で、コンテナで実行されているアプリケーションにアクセス許可を付与する IAM ロールを追加します。これにより、アプリケーションは AWS サービスに対して API コールを実行できます。
-
[コンピューティング] で以下を実行します。
-
[CPU] で、タスクの vCPU 割り当てを更新します (1 vCPU など)。
-
[メモリ] で、タスクのメモリ割り当てを更新します (2 GB など)。
-
-
[自動スケーリング] で以下を実行します。
-
[ECS サービスメトリクス] で、スケールするためのメトリクス (ECS サービスの平均メモリ使用率やターゲットあたりのリクエスト数など) を選択します。
-
[ターゲット値] で、スケーリングのターゲット (60 や 1000 など) を入力します。
-
[最小タスク数] と [最大タスク数] で、スケーリング制限を更新します。
-
-
[ログ] で以下を実行します。
-
[Amazon CloudWatch ロググループ] で、アプリケーションログのロググループ名を更新します。これにより、既存のログは移動されませんが、新しいサービスリビジョンからのログの書き込みが開始されます。
-
[Amazon CloudWatch ログストリームプレフィックス] に、ログストリームの新しいプレフィックスを入力します。
-
-
-
[更新] を選択して、Express Mode サービスを更新します。
カスタムタスク定義による更新
taskDefinitionArn パラメータを指定することで、カスタムタスク定義で Express Mode サービスを更新できます。Express Mode はタスク定義をそのまま使用し、残りのインフラストラクチャの管理を継続します。
以降の更新では、以下のいずれかを選択できます。
タスク定義の新しいリビジョンを作成し、
taskDefinitionArnを更新します。Express Mode は、次のサービスデプロイに新しいリビジョンを使用します。Express Mode パラメータを直接更新します。
タスク定義に関連しないパラメータ (
healthCheckPath、networkConfiguration、scalingTargetなど) の場合、Express Mode はタスク定義を変更せずに変更を適用します。タスク定義関連のパラメータ (
primaryContainerまたはcpu/memoryを使用したイメージ、CPU、メモリなど) の場合、Express Mode は、他のタスクレベルの設定を維持しながら、変更を加えた新しいマネージドタスク定義を作成します。
カスタムタスク定義で更新するには (Amazon ECS コンソール)
Amazon ECS コンソールを開き、Express Mode サービスに移動します。
サービスの更新 の横にあるドロップダウン矢印を選択し、カスタムタスク定義で更新 を選択します。
Task definition family(タスク定義ファミリ) については、既存のタスク定義ファミリを選択してください。新しいタスク定義を作成するには、タスク定義 リンクを選択してください。
タスク定義リビジョン では、使用するリビジョンを選択するか、空白のままにして最新のリビジョンを使用します。
(オプション) 追加設定 を展開して、ヘルスチェックパス、ネットワーク、または自動スケーリングの設定を更新します。
[更新] を選択します。
次の AWS AWS CLI コマンドは、カスタムタスク定義で Express Mode サービスを更新します。
aws ecs update-express-gateway-service \ --service-arn arn:aws:ecs:us-west-2:123456789012:service/default/my-service \ --task-definition-arn arn:aws:ecs:us-west-2:123456789012:task-definition/my-td:4
注記
CloudFormation を使用し、taskDefinitionArn を初めて Express Mode サービスに追加する場合は、最初にスタックを再デプロイします。これにより、ロールバックの互換性が確保されます。