コンピューティング環境 - AWS Batch

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

コンピューティング環境

ジョブキューは、1 つ以上のコンピューティング環境にマッピングされます。コンピューティング環境には、コンテナ化されたバッチジョブを実行するための Amazon ECS コンテナインスタンスが含まれています。特定のコンピューティング環境を 1 つ以上のジョブキューにマッピングすることもできます。ジョブキュー内では、関連付けられたコンピューティング環境ごとに順番があります。スケジューラでは、この順番に従って実行準備が完了したジョブの配置先を決定します。最初のコンピュート環境のVALIDステータスが、利用可能なリソースがある場合、ジョブはそのコンピュート環境内のコンテナインスタンスにスケジューリングされる。最初のコンピュート環境のINVALIDステータスが、適切なコンピュートリソースを提供できないか、または提供できない場合、スケジューラは次のコンピュート環境でジョブを実行しようとします。

マネージド型のコンピューティング環境

マネージドコンピューティング環境を使用して、 AWS Batch 環境内のコンピュートリソースの容量とインスタンスタイプを管理できます。これは、コンピューティング環境の作成時に定義するコンピューティングリソースの仕様に基づいています。Amazon EC2 オンデマンドインスタンスと Amazon EC2 スポットインスタンスを使用するかを選択できます。または、マネージド型のコンピューティング環境で Fargate および Fargate スポット容量を使用することもできます。スポットインスタンスを使用する場合、オプションで上限価格を設定できます。こうすることで、スポット・インスタンスは、スポット・インスタンス価格がオンデマンド価格の指定されたパーセンテージを下回った場合にのみ起動する。

重要

Fargate Windows containers on AWS Fargateスポットインスタンスはではサポートされていません。Fargate Spot FargateWindows コンピューティング環境のみを使用するジョブキューにジョブが送信されると、ジョブキューはブロックされます。

マネージド・コンピュート環境は、指定したVPCとサブネットにAmazon EC2インスタンスを起動し、Amazon ECSクラスタに登録します。Amazon EC2インスタンスは、Amazon ECSサービスエンドポイントと通信するために外部ネットワークアクセスが必要です。一部のサブネットでは、Amazon EC2インスタンスにパブリックIPアドレスを提供していない。Amazon EC2インスタンスがパブリックIPアドレスを持っていない場合、このアクセスを得るためにネットワークアドレス変換(NAT)を使用する必要があります。詳細については、Amazon VPC ユーザーガイドNAT ゲートウェイを参照してください。VPC の作り方の詳細については、仮想プライベートクラウド (VPC) の作成 を参照してください。

デフォルトでは、 AWS Batch マネージド型コンピューティング環境は、承認された最新バージョンの Amazon ECS 最適化 AMI をコンピュートリソースに使用します。ただし、さまざまな理由により、マネージド型のコンピューティング環境で使用する AMI を独自に作成する場合もあります。詳細については、「コンピューティングリソースの AMI」を参照してください。

注記

AWS Batch コンピューティング環境の AMI は、作成後に自動的にアップグレードされません。例えば、Amazon ECS最適化AMIの新しいバージョンがリリースされても、コンピュート環境のAMIは更新されません。ゲストオペレーティングシステムの管理はユーザーの責任です。これには、アップデートとセキュリティパッチが含まれます。また、コンピューティングリソースにインストールするその他のアプリケーションソフトウェアやユーティリティについても責任を負うものとします。新しい AMI AWS Batch をジョブに使用する方法は 2 つあります。オリジナルの方法は、次のステップを完了することです。

  1. 新しい AMI を使用して新しいコンピューティング環境を作成します。

  2. コンピューティング環境を既存のジョブキューに追加します。

  3. 古いコンピューティング環境をジョブキューから削除します。

  4. 以前のコンピューティング環境を削除します。

2022 年 4 月に、 AWS Batch コンピューティング環境の更新のサポートが強化されました。詳細については、「コンピューティング環境を更新します。」を参照してください。コンピューティング環境の拡張アップデートを使用して AMI を更新するには、次のルールに従います。

  • service role (serviceRole) パラメーターを設定しないか、AWSServiceRoleForBatchサービスにリンクされたロールに設定してください。

  • 割り当て戦略 (allocationStrategy) パラメータを、BEST_FIT_PROGRESSIVESPOT_CAPACITY_OPTIMIZED または SPOT_PRICE_CAPACITY_OPTIMIZEDに設定します。

  • 最新のイメージバージョンへの更新 (updateToLatestImageVersion) パラメータを true に設定します。

  • imageIdimageIdOverride(ec2Configuration) または起動テンプレート (launchTemplate) には AMI ID を指定しないでください。その場合は、 AWS Batch AWS Batch インフラストラクチャの更新が開始された時点でサポートされている最新の Amazon ECS 最適化 AMI を選択してください。または、imageIdまたはimageIdOverrideパラメータで AMI ID を指定するか、LaunchTemplateプロパティで識別されるローンチテンプレートを指定することもできます。これらのプロパティのいずれかを変更すると、インフラストラクチャの更新が開始されます。AMI ID が起動テンプレートで指定されている場合、imageId または imageIdOverride パラメータで AMI ID を指定して置き換えることはできません。別の起動テンプレートを指定することでのみ置き換えることができます。$Default または $Latest、起動テンプレートのバージョンがまたはに設定されている場合は、起動テンプレートの新しいデフォルトバージョンを設定するか(設定されている場合 $Default )、起動テンプレートに新しいバージョンを追加(ある場合 $Latest )します。

これらのルールに従うと、インフラストラクチャの更新をトリガーする更新により、AMI ID が再選択されます。起動テンプレートversionの (launchTemplate)設定が$Latestまたは$Defaultに設定されている場合、launchTemplateを更新していない場合でも、インフラストラクチャの更新時に起動テンプレートの最新バージョンまたはデフォルトバージョンが評価されます。

マルチノードの並列ジョブを作成する際の考慮事項

AWS Batch マルチノードparallel (MNP) ジョブと非MNPジョブを実行するための専用のコンピューティング環境を作成することを推奨します。これは、マネージドコンピュート環境におけるコンピューティングキャパシティの作り方によるものです。マネージドコンピューティング環境を新規作成する際、minvCpu ゼロより大きい値を指定すると、 AWS Batch MNP 以外のジョブでのみ使用するインスタンスプールが作成されます。マルチノードparallel ジョブが送信されると、マルチノードparallel AWS Batch ジョブを実行するための新しいインスタンス容量が作成されます。minvCpusmaxvCpusまたは値が設定されている同じコンピューティング環境で、単一ノードとマルチノードの両方のparallel ジョブが実行されている場合、必要なコンピュートリソースが使用できない場合は、 AWS Batch 現在のジョブが終了するのを待ってから、新しいジョブの実行に必要なコンピュートリソースを作成します。

アンマネージド型のコンピューティング環境

アンマネージド型のコンピューティング環境では、独自のコンピューティングリソースを管理します。コンピューティングリソースに使用する AMI が Amazon ECS コンテナインスタンスの AMI 仕様に合致していることを検証する必要があります。詳細については、「コンピューティングリソースの AMI 仕様」および「コンピューティングリソース AMI の作成」を参照してください。

注記

AWS Fargate リソースは、管理されていないコンピューティング環境ではサポートされていません。

アンマネージド型コンピューティング環境を作成したら、DescribeComputeEnvironmentsAPI オペレーションを使用してコンピューティング環境の詳細を表示します。環境に関連付けられている Amazon ECS クラスターを見つけ、その Amazon ECS クラスター内で手動でコンテナインスタンスを起動します。

AWS CLI 次のコマンドでは、Amazon ECS クラスター ARN も提供されます。

$ aws batch describe-compute-environments \ --compute-environments unmanagedCE \ --query "computeEnvironments[].ecsClusterArn"

詳細については、Amazon Elastic Container Service デベロッパーガイドのAmazon ECS コンテナインスタンスの起動を参照してください。コンピューティングリソースを起動する際は、以下の Amazon EC2 ユーザーデータに登録される Amazon ECS クラスターの ARN を指定します。ecsClusterArn前のコマンドで取得したクラスター ARN に置き換えます。

#!/bin/bash echo "ECS_CLUSTER=ecsClusterArn" >> /etc/ecs/ecs.config