

# Amazon ECS サービスを更新する
<a name="update-service-console-v2"></a>

サービスを作成した後、タスクの数など、サービスパラメータを更新する必要がある場合があります。

Amazon ECS サーキットブレーカーを使用するサービスを更新すると、Amazon ECS はサービスデプロイとサービスリビジョンを作成します。これらのリソースを使用すると、サービス履歴に関する詳細情報を表示できます。詳細については、「[Amazon ECS サービスデプロイを使用してサービス履歴を表示する](service-deployment.md)」を参照してください。

## 前提条件
<a name="update-service-prerequisites"></a>

サービスを更新する前に、デプロイタイプで変更可能なサービスパラメータを確認してください。変更可能なパラメータの詳細なリストについては、「[Amazon ECS サービスのパラメータの更新](update-service-parameters.md)」を参照してください。

## 手順
<a name="update-service-procedure"></a>

------
#### [ Console ]

1. コンソールを[https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2)で開きます。

1. **[クラスター]** ページで、クラスターを選択します。

1. クラスターの詳細ページの **[サービス]** セクションで、サービスの横にあるチェックボックスを選択し、**[更新]** を選択します。

1. サービスで新しいデプロイを開始するには、**[新しいデプロイの強制]** を選択します。

1. **[タスク定義]** の場合、タスク定義ファミリーとリビジョンを選択します。
**重要**  
コンソールは、選択したタスク定義ファミリーおよびリビジョンが、定義されたコンピューティング設定と互換性があることを確認します。警告が表示された場合は、タスク定義の互換性と、選択したコンピューティング設定の両方を確認します。

1. **[Replica]** (レプリカ) を使用した場合、**[Desired tasks]** (必要なタスク) に、サービス内で起動および維持するタスクの数を入力します。

1. **[レプリカ]** を選択した場合、Amazon ECS がアベイラビリティーゾーン間のタスクの分散をモニタリングし、不均衡が発生したときにタスクを再分散させるには、**[アベイラビリティーゾーンのサービス再調整] **で、**[アベイラビリティーゾーンのサービス再調整]** を選択します。

1. **[Min running tasks]** (実行中のタスクの最小化) の場合、デプロイ時に `RUNNING` の状態に保つ必要のあるサービス内のタスクの下限数をタスクの必要数のパーセント値 (最も近い整数に切り上げ) で入力します。詳細については、[[Deployment configuration]](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service_definition_parameters.html#sd-deploymentconfiguration) (デプロイ設定) を参照してください。

1. **[Max running tasks]** (実行中のタスクの最大化)) には、デプロイ時に `RUNNING` または `PENDING` 状態にできるサービスのタスクの上限数を必要数のタスクのパーセント値 (最も近い整数に切り下げ) で入力します。

1. サービスにタスクがデプロイされる方法を設定するには、**[デプロイオプション]** を展開してオプションを設定します。

   1. **[デプロイコントローラータイプ]** には、サービスデプロイのコントローラーを指定します。Amazon ECS コンソールは、`ECS` コントローラータイプをサポートします。

   1. **[デプロイ戦略]** には、Amazon ECS がサービスの新しいバージョンをデプロイするために使用される戦略を選択します。

   1. **[デプロイ戦略]** の選択に応じて、次の操作を行います。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/update-service-console-v2.html)

   1. ライフサイクルステージに Lambda 関数を実行するには、**[デプロイライフサイクルフック]** で一意の Lambda 関数ごとに次の操作を行います。

      1. **[Add]** (追加) を選択します。

         実行する一意の関数ごとにこの操作を繰り返します。

      1. **[Lambda 関数]** には、関数名を入力します。

      1. **[ロール]** には、ブルー/グリーンのアクセス許可を持つ前提条件で作成したロールを選択します。

         詳細については、「[Amazon ECS ブルー/グリーンデプロイの Lambda 関数に必要となるアクセス許可](blue-green-permissions.md)」を参照してください。

      1. **[ライフサイクルステージ]** には、Lambda 関数が実行されるステージを選択します。

      1.  (オプション) **[フックの詳細]** には、フックに関する情報を提供するキーおよび値のペアを入力します。

1. Amazon ECS がデプロイの障害を検出して処理する方法を設定するには、**[Deployment failure detection]** (デプロイ障害検出) を展開し、オプションを選択します。

   1. タスクを開始できない場合にデプロイを停止するには、**[Use the Amazon ECS deployment circuit breaker]** (Amazon ECS デプロイサーキットブレーカーを使用する) を選択します。

      デプロイサーキットブレーカーによってデプロイが失敗状態に設定されたときに、ソフトウェアがデプロイを最後に完了したデプロイ状態に自動的にロールバックするようにするには、**[失敗時のロールバック]** を選択します。

   1. アプリケーションメトリクスに基づいてデプロイを停止するには、**[CloudWatch アラームを使用する]** を選択します。次に、**[CloudWatch アラーム名]** からアラームを選択します。新しいアラームを作成するには、CloudWatch コンソールに移動します。

      CloudWatch アラームによってデプロイが失敗状態に設定されたときに、ソフトウェアがデプロイを最後に完了したデプロイ状態に自動的にロールバックするようにするには、**[失敗時のロールバック]** を選択します。

1. 計算オプションを変更するには、**[コンピュート構成]** を展開してから以下の操作を実行します。

   1. AWS Fargate のサービスにとって、**[Platform version]** (プラットフォームのバージョン) で、新しいバージョンを選択します。

   1. キャパシティプロバイダー戦略を使用するサービスの場合、**[キャパシティプロバイダー戦略]** で、次を実行します。
      + キャパシティプロバイダーをさらに追加するには、**[さらに追加]** を選択します。その後、**[キャパシティプロバイダー]** で、キャパシティプロバイダーを選択します。
      + キャパシティプロバイダーを削除するには、キャパシティプロバイダーの右側にある **[削除]** を選択します。

      Auto Scaling グループキャパシティープロバイダーを使用するサービスは、Fargate キャパシティープロバイダーを使用するように更新することはできません。Fargate キャパシティプロバイダーを使用するサービスは、Auto Scaling グループキャパシティプロバイダーを使用するように更新できません。

1. (オプション) サービスの自動スケーリングを設定するには、**[サービスの自動スケーリング]** を展開し、次のパラメータを指定します。トラフィックフローからの過去のロードデータを調べる予測自動スケーリングを使用するには、サービスを作成した後にそれを設定します。詳細については、「[履歴パターンを使用して予測スケーリングで Amazon ECS サービスをスケールする](predictive-auto-scaling.md)」を参照してください。

   1. サービスの自動スケーリングを使用するには、**[Service auto scaling]** (サービスの自動スケーリング) を選択します。

   1. **[タスクの最小数]** に、サービスの自動スケーリングで使用するタスクの下限数を入力します。必要な数がこの数を下回ることはありません。

   1. **[タスクの最大数]** に、サービスの自動スケーリングで使用するタスクの上限数を入力します。必要な数がこの数を超えることはありません。

   1. ポリシータイプを選択します。**[スケーリングポリシータイプ]** で、次のいずれかのオプションを選択します。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/update-service-console-v2.html)

1. (オプション) Service Connect を使用するには、**[Turn on Service Connect]** (Service Connect をオンにする) を選択し、以下を指定します。

   1. **[Service Connect configuration]** (Service Connect 設定) で、クライアントモードを指定します。
      + サービスが名前空間内の他のサービスへの接続のみを必要とするネットワーククライアントアプリケーションを実行している場合は、**[クライアント側のみ]** を選択します。
      + サービスがネットワークまたは Web サービスアプリケーションを実行していて、このサービスにエンドポイントを提供し、名前空間内の他のサービスに接続する必要がある場合は、**[Client and server]** (クライアントとサーバー) を選択します。

   1. デフォルトのクラスター名前空間ではない名前空間を使用するには、**[Namespace]** (名前空間) でサービス名前空間を選択します。この場合、AWS アカウントの同じ AWS リージョンで個別に作成された名前空間、またはAWS Resource Access Manager (AWS RAM) を使用してアカウントと共有されている同じリージョンの名前空間のいずれかを選択できます。共有 AWS Cloud Map 名前空間の詳細については、「*AWS Cloud Map デベロッパーガイド*」の「[クロスアカウント AWS Cloud Map 名前空間の共有](https://docs.aws.amazon.com/cloud-map/latest/dg/sharing-namespaces.html)」を参照してください。

   1. （オプション) ログ設定を指定します。**[ログコレクションを使用]** を選択します。デフォルトのオプションでは、コンテナログを CloudWatch Logs に送信します。その他のログドライバオプションは、AWS FireLens を使用して構成されます。詳細については、「[Amazon ECS ログを AWS サービスまたは AWS Partner に送信する](using_firelens.md)」を参照してください。

      以下では、各コンテナログの送信先について詳しく説明します。
      + **Amazon CloudWatch** — コンテナログを CloudWatch Logs に送信するようにタスクを設定します。デフォルトのログドライバーオプションが提供され、ユーザーに代わり CloudWatch ロググループを作成します。別のロググループ名を指定するには、ドライバーオプションの値を変更します。
      + **[Amazon Data Firehose]** — Firehose にコンテナログを送信するようタスクを設定します。Firehose 配信ストリームにログを送信するデフォルトのログドライバーオプションが提供されています。別の配信ストリーム名を指定するには、ドライバーオプションの値を変更します。
      + **Amazon Kinesis Data Streams** — Kinesis Data Streams にコンテナログを送信するようタスクを設定します。Kinesis Data Streams のストリームにログを送信するデフォルトのログドライバーオプションが提供されています。別のストリーム名を指定するには、ドライバーオプションの値を変更します。
      + **Amazon OpenSearch Service** — コンテナログを OpenSearch Service ドメインに送信するようタスクを設定します。ログドライバーオプションを提供する必要があります。
      + **Amazon S3** — Amazon S3 バケットにコンテナログを送信するようタスクを設定します。デフォルトのログドライバーオプションが提供されていますが、有効な Amazon S3 バケット名を指定する必要があります。

   1. アクセスログを有効にするには、次の手順に従います。

      1. **[アクセスログ設定]** を展開します。**[形式]** で、**[JSON]** または [`TEXT`] を選択します。

      1. アクセスログにクエリパラメータが含まれるようにするには、**[クエリパラメータを含める]** を選択します。
**注記**  
アクセスログを無効にするには、**[フォーマット]** で **[なし]** を選択します。

1. デプロイ時の設定と互換性のあるデータボリュームをタスクで使用する場合は、**[ボリューム]** を拡張してボリュームを設定できます。

   ボリューム名とボリュームタイプはタスク定義リビジョンを作成するときに設定され、サービスの更新時には変更できません。ボリューム名とタイプを更新するには、新しいタスク定義リビジョンを作成し、新しいリビジョンを使用してサービスを更新する必要があります。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/update-service-console-v2.html)

1. (オプション) サービスを識別しやすくするには、**[Tags]** (タグ) セクションを展開し、タグを設定します。
   + [タグの追加] **[タグの追加]** を選択して、以下を実行します。
     + [**キー**] にはキー名を入力します。
     + [**値**] にキー値を入力します。
   + [タグの削除] タグの横にある [**タグの削除**] を選択します。

1. **[更新]** を選択します。

------
#### [ AWS CLI ]
+ `update-service` を実行します。コマンドの実行の詳細ついては、「AWS Command Line Interfaceリファレンス」の「[update-service](https://docs.aws.amazon.com/cli/latest/reference/ecs/update-service.html)」を参照してください。

  次の `update-service` の例では、`my-http-service` サービスのタスクの数を 2 に更新します。

  *user-input* を独自の値に置き換えます。

  ```
  aws ecs update-service \
      --cluster MyCluster \
      --service my-http-service \
      --desired-count 2
  ```

------

## 次のステップ
<a name="update-service-next-steps"></a>

Amazon ECS サーキットブレーカーのサービスのデプロイを追跡し、サービス履歴を表示します。詳細については、「[Amazon ECS サービスデプロイを使用してサービス履歴を表示する](service-deployment.md)」を参照してください。