

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# インフラストラクチャの更新を実行する
<a name="infrastructure-updates"></a>

インフラストラクチャの更新は、コンピューティング環境のインスタンスを、設定が更新された新しいインスタンスに置き換えます。この更新戦略は、スケーリング更新よりも時間がかかり、特定のサービスロールと割り当て戦略の設定が必要です。インフラストラクチャの更新は、サービスの可用性を維持しながら、基本的なコンピューティング環境設定を変更する方法を提供します。

**重要**  
インフラストラクチャの更新には、サービスにリンクされたロール *[AWSServiceRoleForBatch]* と、`BEST_FIT_PROGRESSIVE`、`SPOT_CAPACITY_OPTIMIZED`、`SPOT_PRICE_CAPACITY_OPTIMIZED` の割り当て戦略が必要です。環境がこれらの要件を満たしていない場合は、代わりにブルー/グリーン更新を使用します。

## インフラストラクチャの更新をトリガーする変更
<a name="infrastructure-updates-triggers"></a>

次のいずれかの設定を変更すると、 はインフラストラクチャの更新 AWS Batch を実行します。インフラストラクチャの更新は、スケーリング更新設定とともにこれらの設定を変更する場合にも発生します。

以下の設定により、インフラストラクチャの更新がトリガーされます。

**コンピューティング設定**
+ `allocationStrategy` – がインスタンスタイプ AWS Batch を選択する方法を決定します。
+ `instanceTypes` – 使用する EC2 インスタンスタイプを指定します。
+ `bidPercentage` – スポットインスタンスのオンデマンド料金の最大パーセンテージ。
+ `type` – コンピューティング環境タイプ (`EC2` または `SPOT`)。

**AMI と起動設定**
+ `imageId` – インスタンスに使用する特定の AMI。
+ `ec2Configuration` – `imageIdOverride` を含む EC2 設定。
+ `launchTemplate` – EC2 起動テンプレートの設定。
+ `ec2KeyPair` – インスタンスアクセス用の SSH キーペア。
+ `updateToLatestImageVersion` – AMI の自動更新設定。

**ネットワークとセキュリティ**
+ `subnets` – インスタンスが起動される VPC サブネット (EC2 コンピューティング環境の場合）。
+ `securityGroupIds` – インスタンスのセキュリティグループ (EC2 コンピューティング環境の場合）。
+ `placementGroup` – EC2 プレイスメントグループ設定。

**その他の設定**
+ `instanceRole` – EC2 インスタンスの IAM ロール。
+ `tags` – EC2 インスタンスに適用されるタグ。

**重要**  
インフラストラクチャの更新設定をスケーリング更新設定 (`desiredvCpus`、`maxvCpus`、`minvCpus` など) とともに変更すると、 AWS Batch はインフラストラクチャの更新を実行します。インフラストラクチャの更新には、スケーリングの更新よりもずっと時間がかかります。

## インフラストラクチャの更新中の AMI の選択
<a name="updating-compute-environments-ami"></a>

インフラストラクチャの更新中に、これら 3 つの設定のいずれかで AMI が指定されているかどうかに応じて、コンピュート環境の AMI ID が変更される場合があります。AMI は `imageId` (in `computeResources`)、`imageIdOverride` (in `ec2Configuration` )、または `launchTemplate` で指定されている起動テンプレートで指定されます。これらの設定のいずれにも AMI ID が指定されておらず、`updateToLatestImageVersion` 設定が `true` であるとします。次に、 でサポートされている最新の Amazon ECS 最適化 AMI AWS Batch が、インフラストラクチャの更新に使用されます。

これらの設定の少なくとも 1 つで AMI ID が指定されている場合、更新は、更新前に使用された AMI ID が提供された設定によって異なります。コンピュート環境を作成する場合、AMI ID を選択する際の優先順位は、最初に起動テンプレート、次に `imageId` の設定、最後に `imageIdOverride` の設定です。ただし、使用される AMI ID が起動テンプレートからのものである場合、`imageId` または `imageIdOverride` の設定を更新しても AMI ID は更新されません。起動テンプレートから選択した AMI ID を更新する唯一の方法は、起動テンプレートを更新することです。起動テンプレートのバージョンパラメータが `$Default` または `$Latest` の場合、指定された起動テンプレートのデフォルトまたは最新バージョンが評価されます。デフォルトで別の AMI ID が選択されている場合、または起動テンプレートの最新バージョンが選択されている場合、その AMI ID が更新に使用されます。

起動テンプレートを使用して AMI ID を選択しなかった場合は、`imageId` または `imageIdOverride` のパラメータで指定されている AMI ID が使用されます。両方を指定すると、`imageIdOverride` パラメータで指定された AMI ID が使用されます。

コンピュート環境が `imageId`、`imageIdOverride`、または `launchTemplate` パラメータで指定された AMI ID を使用しており、 AWS Batchでサポートされている最新の Amazon ECS 最適化 AMI を使用するとします。次に、更新により AMI ID を提供した設定を削除する必要があります。このため `imageId`、そのパラメータには空の文字列を指定する必要があります。このため `imageIdOverride`、`ec2Configuration` パラメータには空の文字列を指定する必要があります。

AMI ID が起動テンプレートから取得されている場合は、次のいずれかの方法で AWS Batch でサポートされている最新の Amazon ECS 最適化 AMI に変更できます。
+ `launchTemplateId` または `launchTemplateName` パラメータに空の文字列を指定して、起動テンプレートを削除します。これにより、AMI ID だけではなく、起動テンプレート全体が削除されます。
+ 更新バージョンの起動テンプレートで AMI ID が指定されていない場合は、`updateToLatestImageVersion` パラメータを `true` に設定する必要があります。

## 更新中のジョブ処理
<a name="infrastructure-updates-job-handling"></a>

更新ポリシーを使用してインフラストラクチャ更新時に実行されているジョブの処理方法を設定します。`terminateJobsOnUpdate=true` を設定すると、実行中のジョブはすぐに終了し、`jobExecutionTimeoutMinutes` 設定は無視され、インスタンスが置き換えられるとすぐに更新が続行されます。`terminateJobsOnUpdate=false` を設定すると、実行中のジョブは指定されたタイムアウト期間中は継続され (デフォルトのタイムアウトは 30 分)、タイムアウト期間を超えるとジョブは終了します。

**注記**  
更新中に終了したジョブを再試行するには、ジョブの再試行戦略を設定します。詳細については、「[ジョブの再試行の自動化](job_retries.md)」を参照してください。

------
#### [ Performing infrastructure updates using the AWS マネジメントコンソール ]

**注記**  
コンソールで最新の AMI バージョンに更新するには、「」を参照してください[AMI バージョンの更新](managing-ami-versions.md#updating-ami-versions)。

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

1. ナビゲーションペインで、**[環境]**、**[コンピューティング環境]** タブの順に選択します。

1. 更新するコンピューティング環境を選択します。

1. **[アクション]** を選択してから **[編集]** を選択します。

1. **[更新動作]** セクションで、実行中のジョブの処理方法を設定します。
   + **[AMI を最新バージョンに更新]** を選択すると、AMI は最新バージョンに更新されます。
   + **[更新時にジョブをすぐに終了]** を選択すると、更新プロセスの実行時にジョブを終了します。
   + **[ジョブ実行タイムアウト]** には、更新プロセスを開始する前に待機する分数を入力します。

1. [インフラストラクチャの更新が必要な設定](#infrastructure-updates-triggers)を 1 つ以上変更します。例えば、次のようになります。
   + **インスタンスロール**
   + **EC2 スポットインスタンスを使用する**
   + **許可されたインスタンスタイプ**
   + **配置グループ**
   + **EC2 キーペア**
   + **EC2 設定**
   + **起動テンプレート**
   + **サブネット**
   + **セキュリティグループ**

1. **[Save changes]** (変更の保存) をクリックします。

1. コンピューティング環境のステータスをモニタリングします。更新プロセス中に環境が `UPDATING` を示します。

------
#### [ Performing infrastructure updates using the AWS CLI ]

**update-compute-environment** コマンドを使用して、[インフラストラクチャの更新を必要とする 1 つ以上の設定](#infrastructure-updates-triggers) を変更します。次の 3 つの例は、一般的なインフラストラクチャオペレーションです。
+ この例では、インスタンスタイプを更新し、更新ポリシーを設定します。

  ```
  aws batch update-compute-environment \
      --compute-environment your-compute-environment-name \
      --compute-resources instanceTypes=default_x86_64 \
      --update-policy terminateJobsOnUpdate=false,jobExecutionTimeoutMinutes=30
  ```
+ この例では、VPC サブネットとセキュリティグループを更新します。

  ```
  aws batch update-compute-environment \
      --compute-environment your-compute-environment-name \
      --compute-resources subnets=subnet-abcd1234,subnet-efgh5678 securityGroupIds=sg-abcd1234 \
      --update-policy terminateJobsOnUpdate=true
  ```
+ この例では、最新の Amazon ECS 最適化 AMI の自動更新を有効にします。

  ```
  aws batch update-compute-environment \
      --compute-environment your-compute-environment-name \
      --compute-resources updateToLatestImageVersion=true \
      --update-policy terminateJobsOnUpdate=false,jobExecutionTimeoutMinutes=60
  ```

------

## インフラストラクチャの更新のモニタリング
<a name="infrastructure-updates-monitoring"></a>

 AWS Batch コンソールを使用してインフラストラクチャの更新をモニタリングし、コンピューティング環境のステータスが に変わるのをモニタリングし`UPDATING`、インスタンスの置き換えの進行状況をモニタリングして、失敗した更新がないか確認します。コンピューティング環境の状態が `VAILD` になると、更新は成功します。CloudWatch を使用して、インスタンスの終了イベントを追跡し、更新中にジョブの状態をモニタリングすることもできます。で AWS CLI、 **describe-compute-environments** コマンドを使用してステータスを確認し、インスタンスのライフサイクルイベントをモニタリングします。