チュートリアル: Amazon EC2 オーケストレーションの使用を開始する - AWS Batch

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

チュートリアル: Amazon EC2 オーケストレーションの使用を開始する

Amazon Elastic Compute Cloud (Amazon EC2) は、AWS クラウドでスケーラブルなコンピューティング容量を提供します。Amazon EC2 の使用により、ハードウェアに事前投資する必要がなくなり、アプリケーションをより速く開発およびデプロイできます。

Amazon EC2 を使用すると、必要な数 (またはそれ以下) の仮想サーバーの起動、セキュリティおよびネットワーキングの構成、ストレージの管理ができます。Amazon EC2 は、要件変更や需要増に応じてスケールアップまたはスケールダウンできるため、トラフィック予測の必要性を軽減できます。

コンピューティング環境の作成

Amazon EC2 オーケストレーション用のコンピューティング環境を作成するには、以下の操作を実行します。

  1. AWS Batch コンソールの初回実行ウィザード を開きます。

  2. オーケストレーションタイプを選択 で、Amazon Elastic Compute Cloud(Amazon EC2) を選択します。

  3. 次へ を選択します。

  4. コンピューティング環境設定名前 で、コンピューティング環境の一意な名前を指定します。名前の最大長は 128 文字です。大文字、小文字、数字、ハイフン (-)、アンダースコア (_) を含めることができます。

  5. インスタンスロール では、必要な IAM アクセス許可がアタッチされた既存のインスタンスプロファイルを使用することを選択します。このインスタンスプロファイルを使用すると、コンピューティング環境にある Amazon ECS コンテナインスタンスにより、必要な AWS API オペレーションを呼び出すことができます。詳細については、Amazon ECS インスタンスロールを参照してください。

  6. (オプション) タグは、リソースに割り当てられるラベルです。タグまたは Amazon EC2 タグを追加するには、タグ を展開し、タグを追加 を選択します。キーと値のペアを入力し、もう一度 タグを追加 を選択します。

    重要

    タグを追加 を選択した場合は、キーと値のペアを入力して タグを追加 をもう一度選択するか、タグを解除 を選択する必要があります。

  7. (オプション) [Amazon EC2 スポットインスタンスを使用する][インスタンス設定] セクションで、[スポットインスタンスの使用を有効化] をオンにします。

  8. (スポットのみ) オンデマンド価格の最大割合 (%)には、スポットリソースに対して支払うオンデマンド価格の最大パーセンテージを入力します。

  9. (オプション) (スポットのみ) スポットフリートロール では、既存の Amazon EC2 スポットフリートの IAM ロールを使用することを選択して、スポットコンピューティング環境に適用します。既存の Amazon EC2 スポットフリート IAM ロールが存在しない場合には、まずこのロールを作成する必要があります。詳細については、Amazon EC2 スポットフリートロールを参照してください。

    重要

    作成時にスポットインスタンスにタグを付けるには、Amazon EC2 スポットフリートの IAM ロールに、より新しい AmazonEC2SpotFleetTaggingRole 管理ポリシーを使用する必要があります。AmazonEC2SpotFleetRole 管理ポリシーには、スポットインスタンスにタグを付けるために必要なアクセス許可はありません。詳細については、作成時にタグが付けられていないスポットインスタンスおよびリソースのタグ付けを参照してください。

  10. 最小 vCPU では、ジョブキューの需要にかかわらず、コンピューティング環境で維持する EC2 vCPU の最小数を選択します。

  11. 必要な vCPU では、コンピューティング環境の起動に必要な EC2 vCPU の数を選択します。AWS Batch は、ジョブキューの需要が増えるにつれて、必要な vCPU の数を増やし、EC2 インスタンスを追加します。vCPU の数は vCPU の最大数まで増やすことができます。需要が減少するにつれて、AWS Batch は必要な vCPU の数を減らし、インスタンスを削除します。この数は vCPU の最小数まで減らすことができます。

  12. 最大 vCPU] では、ジョブキューの需要にかかわらず、コンピューティング環境でスケールアウトできる EC2 vCPU の最大数を選択します。

  13. 許可されたインスタンスタイプ] では、起動できる Amazon EC2 インスタンスタイプを選択します。インスタンスファミリーを指定してそのファミリー内のいずれかのインスタンスタイプ (c5c5np3など) を起動できます。または、ファミリー内の特定のサイズを指定することもできます (c5.8xlarge)。メタルインスタンスタイプはインスタンスファミリーに含まれていません。たとえば、c5c5.metal を含んでいません。また、(C4、M4、および R4 インスタンスファミリーから) optimal を選択して、ジョブキューの需要に見合ったインスタンスタイプを使用することもできます。

    注記

    コンピューティング環境を作成する際、そのコンピューティング環境で選択するインスタンスタイプで同じアーキテクチャを使用する必要があります。例えば、x86 と ARM インスタンスを同じコンピューティング環境で使用することはできません。

    注記

    AWS Batch は、ジョブキューに必要な容量に基づいて GPU をスケールします。GPU スケジューリングを使用するには、コンピューティング環境に p2p3p4p5g3g3sg4、または g5 ファミリーのインスタンスタイプを含める必要があります。

    注記

    現在、optimal は C4、M4、および R4 インスタンスファミリーのインスタンスタイプを使用しています。これらのインスタンスファミリーのインスタンスタイプを持たない AWS リージョン では、C5、M5、および R5 インスタンスファミリーのインスタンスタイプが使用されます。

  14. 追加設定] を展開します。

  15. (オプション) プレイスメントグループ では、プレイスメントグループ名を入力して、コンピューティング環境内のリソースをグループ化します。

  16. (オプション) EC2 キーペア で、インスタンス接続時のセキュリティ認証情報としてパブリックキーとプライベートキーのペアを選択します。Amazon EC2 キーペアの詳細については、Amazon EC2 キーペアおよび Linux インスタンスを参照してください。

  17. 配分戦略] では、許可されるインスタンスタイプのリストからインスタンスタイプを選択するときに使用する配分戦略を選択します。EC2 のオンデマンドコンピューティング環境では BEST_FIT_PROGRESSIVE を、EC2 のスポットコンピューティング環境では SPOT_CAPACITY_OPTIMIZED を選択するのが一般的です。詳細については、「AWS Batch のインスタンスタイプの配分戦略」を参照してください。

  18. (オプション) EC2 設定 で、EC2 設定を追加 を選択します。AWS Batch がコンピューティング環境のインスタンスに Amazon マシンイメージ (AMI) を選択するための情報を提供するために、イメージタイプイメージ ID のオーバーライド の値を選択します。各 イメージタイプ]イメージ ID のオーバーライド] が指定されていない場合、AWS Batch は Amazon ECS に最適化された AMI を選択します。イメージタイプ を指定しない場合、デフォルトは非 GPU、非 AWS Graviton インスタンス用の Amazon Linux 2 になります。

    重要

    カスタム AMI を使用するには、イメージタイプを選択し、イメージ ID のオーバーライド ボックスにカスタム AMI ID を入力します。

    Amazon Linux 2

    すべての AWS Graviton ベースのインスタンスファミリー (C6gM6gR6gおよびT4gなど) のデフォルトで、すべての非 GPU インスタンスタイプに使用できます。

    Amazon Linux 2 (GPU)

    すべての GPU インスタンスファミリー (P4 および G4 など) のデフォルトで、非 AWS Graviton ベースのすべてのインスタンスタイプに使用できます。

    Amazon Linux

    非 GPU、非 AWS Graviton インスタンスファミリーで使用できます。Amazon Linux AMI の標準サポートは終了しました。詳細については、Amazon Linux AMI を参照してください。

    注記

    コンピューティング環境用に選択する AMI は、そのコンピューティング環境で使用するインスタンスタイプのアーキテクチャと一致している必要があります。たとえば、コンピューティング環境で A1 インスタンスタイプを使用する場合、選択するコンピューティングリソース AMI で Arm インスタンスをサポートしている必要があります。Amazon ECS は、Amazon ECS に最適化された Amazon Linux 2 AMI の、x86 と Arm の両バージョンを提供しています。詳細については、Amazon Elastic Container Service デベロッパーガイドAmazon ECS に最適化された Amazon Linux 2 AMIを参照してください。

  19. (オプション)起動テンプレート] では、既存の Amazon EC2 起動テンプレートを選択して、コンピューティングリソースを設定します。テンプレートのデフォルトバージョンは自動的に設定されます。詳細については、で Amazon EC2 起動テンプレートを使用する AWS Batchを参照してください。

    注記

    起動テンプレートで、作成したカスタム AMI を指定できます。

  20. (オプション) 起動テンプレートのバージョン] では、$Default または $Latest を使用するか、あるいは起用するバージョン番号を指定します。

    重要

    コンピューティング環境の作成後、起動テンプレートの $Default または $Latest バージョンが更新されていても、使用する起動テンプレートのバージョンは変更されません。新しい起動テンプレートのバージョンを使用するには、まず新しいコンピューティング環境を作成し、新しいコンピューティング環境を既存のジョブキューに追加します。次に、古いコンピューティング環境をジョブキューから削除し、古いコンピューティング環境を削除します。

  21. ネットワーク設定 セクションで:

    1. 仮想プライベートクラウド (VPC) ID では、Amazon VPC を選択します。

    2. サブネット には、AWS アカウント のサブネットが一覧表示されます。サブネットのカスタムセットを作成する場合は、サブネットをクリア を選択してから、必要なサブネットを選択します。

      重要

      コンピューティングリソースは、VPC エンドポイントまたは複数のパブリック IP アドレスを介して Amazon ECS VPC エンドポイントと通信する必要があります。詳細については、Amazon ECR インターフェイス VPC エンドポイント (AWS PrivateLink)をご参照ください。インスタンスに VPC エンドポイントが設定されていない場合やパブリック IP アドレスがない場合は、ネットワークアドレス変換 (NAT) を使用できます。NAT の詳細については、NAT ゲートウェイおよび 仮想プライベートクラウドを作成する を参照してください

    3. セキュリティグループ で、インスタンスに関連付ける Amazon EC2 セキュリティグループを選択します。セキュリティグループのカスタムセットを作成する場合は、セキュリティグループをクリア を選択します。関連付けるセキュリティグループを選択します。

  22. 次へ を選択します。

ジョブキューの作成

ジョブキューは、AWS BatchSchedulerがコンピュート環境のリソース上でジョブを実行するまで、投入されたジョブを保存します。詳細については、ジョブキューを参照してください。

Amazon EC2 オーケストレーション用のジョブキューを作成するには、以下の操作を実行します。

  1. ジョブキュー設定 セクションの 名前 で、コンピューティング環境の一意の名前を指定します。名前の最大長は 128 文字です。大文字、小文字、数字、ハイフン(-)、アンダースコア(_) を含めることができます。

  2. 優先度 では、ジョブキューの 0 から 100 までの整数を入力します。

    重要

    整数値が高いほど、AWS Batch スケジューラーにより高い優先度が割り当てられます。

  3. 次へ を選択します。

ジョブ定義の作成

AWS Batch のジョブ定義は、ジョブの実行方法を指定します。各ジョブはジョブ定義を参照しなければならないが、ジョブ定義で指定されたパラメーターの多くは実行時に上書きできます。

ジョブ定義を作成するには:

  1. 一般設定 セクションで:

    1. 一般設定 セクションの 名前 で、コンピューティング環境に固有の名前を指定します。名前の最大長は 128 文字です。名前には、大文字および小文字の ASCII 文字、数字、ハイフン (-)、アンダースコア (_) を含めることができます。

    2. (オプション) 実行タイムアウト で、未完了のジョブが終了するまでの時間 (秒単位) を入力します。

      重要

      最小タイムアウトは 60 秒です。

    3. (オプション) タグは、リソースに割り当てられるラベルです。タグを追加するには、タグ を展開し、タグを追加 を選択します。キーと値のペアを入力し、もう一度 タグを追加 を選択します。

      重要

      タグを追加 を選択した場合は、キーと値のペアを入力して タグを追加 をもう一度選択するか、タグを解除 を選択する必要があります。

    4. (オプション) タグを伝播 をオンにして、タグをAmazon Elastic Container Service タスクに伝達することができます。

  2. コンテナ設定 セクションで次の操作を行います。

    1. イメージ では、コンテナの起動に使用されるイメージの名前を入力します。デフォルトでは、Docker Hub レジストリのイメージをすべて使用できます。他のリポジトリを repository-url/image: tag の形式で指定することもできます。パラメータの最大長は 255 文字です。アルファベット (大文字、小文字)、数字、ハイフン (-)、アンダースコア (_)、コロン (:)、ピリオド (.)、スラッシュ (/)、およびシャープ (#) を含めることができます。このパラメータは、Docker Remote APIコンテナの作成 セクションにある Image にマッピングされ、IMAGE パラメータは docker run にマッピングされます。

      注記

      Docker イメージのアーキテクチャは、スケジュールされているコンピューティングリソースのプロセッサアーキテクチャと一致している必要があります。例えば、Arm ベースの Docker イメージは、Arm ベースのコンピューティングリソースでのみ実行することができます。

      • Amazon ECR Public リポジトリ内のイメージには、完全な registry/repository[:tag] または registry/repository[@digest] 命名規則が使用されます (例えば、public.ecr.aws/registry_alias/my-web-app:latest)。

      • Amazon ECR リポジトリ内のイメージには、完全な registry/repository:tag 命名規則が使用されます (例えば、aws_account_id.dkr.ecr.region.amazonaws.com /my-web-app:latest)。

      • Docker ハブの公式リポジトリのイメージでは、1 つの名前 (例: ubuntumongo) を使用します。

      • Docker ハブの他のリポジトリのイメージは、組織名で修飾されます (例: amazon/amazon-ecs-agent)。

      • 他のオンラインリポジトリのイメージは、さらにドメイン名で修飾されます (例: quay.io/assemblyline/ubuntu)。

    2. コマンド] では、コンテナに渡すコマンドを指定します。このパラメータは、Docker Remote APIコンテナの作成 セクションにある Cmd にマッピングされ、COMMAND パラメータは docker run にマッピングされます。Docker CMD パラメータの詳細については、https://docs.docker.com/engine/reference/builder/#cmd を参照してください。

      注記

      コマンドには、パラメータ置換のデフォルト値とプレースホルダーを使用できます。詳細については、パラメータを参照してください。

    3. (オプション) 実行ロール で、ユーザーに代わって AWS API コールを実行するためのアクセス許可を Amazon ECS コンテナエージェントに付与する IAM ロールを指定できます。この機能では、タスク用の Amazon ECS IAM ロールを使用します。詳細については、Amazon Elastic Container Service デベロッパーガイドのAmazon ECS タスク実行 IAM ロールを参照してください。

    4. (オプション) ジョブロール設定 で、AWS API へのアクセス権限を持つ IAM ロールを選択します。この機能では、タスク用の Amazon ECS IAM ロールを使用します。詳細については、Amazon Elastic Container Service デベロッパーガイドタスク用の IAM ロールを参照してください。

      注記

      ここには、Amazon Elastic Container Service Task Role] 信頼関係があるロールのみが表示されます。AWS Batch ジョブの IAM ロールの作成に関する詳細については、Amazon Elastic Container Service デベロッパーガイドタスク用の IAM ロールとポリシーの作成を参照してください。

    5. (オプション) パラメータをキーと値のペアとしてジョブ定義に追加して、ジョブ定義のデフォルトを上書きできます。パラメータを追加するには:

      1. パラメータ で、パラメータを追加 を選択します。キーと値のペアを入力し、もう一度 パラメータを追加 を選択します。

        重要

        パラメータを追加 を選択した場合は、少なくとも 1 つのパラメータを設定するか、パラメータの削除 を選択する必要があります。

    6. 環境設定 セクションの vCPU で、コンテナ用に予約する vCPU の数を指定します。このパラメータは、Docker Remote API コンテナの作成セクションの CpuShares にマップされ、--cpu-shares オプションは docker run にマップされます。各 vCPU は 1,024 個の CPU 配分に相当します。

    7. メモリ では、ジョブのコンテナに適用されるメモリのハード制限 (MiB 単位) を指定します。コンテナは、ここで指定したメモリを超えようとすると、停止されます。このパラメータは、Docker Remote API コンテナの作成セクションの Memory にマップされ、--memory オプションは docker run にマップされます。

    8. GPU の数 では、コンテナ用に予約する GPU の数を指定します。

    9. (オプション) 環境変数設定 では、環境変数を追加 を選択し、コンテナに渡す環境変数を追加します。このパラメータは、Docker Remote API の 「Create a container (コンテナを作成する)」セクションの Env にマップされ、--env オプションは docker run にマップされます。

    10. (オプション) [シークレット] で、[シークレットを追加] を選択して、シークレットを名前と値のペアとして追加します。これらのシークレットはコンテナに公開されます。詳細については、「LogConfiguration:secretOptions」を参照してください。

    11. (オプション) Linux 設定 セクションで:

      1. ユーザー] には、コンテナ内で使用するユーザー名を入力します。このパラメータは、Docker Remote API コンテナの作成セクションの User にマップされ、--user オプションは docker run にマップされます。

      2. 特権付与 スライダーを右にドラッグすることで、ホストインスタンスに対する昇格されたアクセス許可 (root ユーザーと同様) をジョブコンテナに付与することができます。このパラメータは、Docker Remote API の 「Create a container (コンテナを作成する)」セクションの Privileged にマップされ、--privileged オプションは docker run にマップされます。

      3. init プロセスを有効にする をオンにすると、コンテナ内で init プロセスを実行できます。このプロセスは信号を転送し、プロセスを利用します。

    12. (オプション) ファイルシステム設定 セクションで:

      1. 読み取り専用ファイルシステムを有効にする をオンにして、ボリュームへの書き込みアクセスを削除します。

      2. 共有メモリサイズ では、/dev/shm ボリュームのサイズ (MiB) を入力します。

      3. 最大スワップサイズ では、コンテナが使用できるスワップメモリの合計容量 (MiB 単位) を入力します。

      4. スワップ動作 では、コンテナのスワップ動作を示す 0 ~ 100 の値を入力します。値を指定せず、スワップが有効になっている場合、この値はデフォルトで 60 に設定されます。詳細については、「LinuxParameters:swappiness」を参照してください。

      5. (オプション) [追加設定] を展開します。

      6. Tmpfs では、tmpfs を追加 を選択して tmpfs マウントを追加します。

      7. デバイス で、デバイスを追加 を選択してデバイスを追加します。

        1. コンテナパス] では、コンテナインスタンスでのデバイスのパスを指定します。このパスは、ホストインスタンスにマッピングされたデバイスを公開するために使用されます。空白のままにすると、ホストパスがコンテナで使用されます。

        2. ホストパス] では、ホストインスタンスでのデバイスのパスを指定します。

        3. アクセス許可] では、デバイスに適用する 1 つ以上のアクセス許可を選択します。使用できる権限は、読み取り書き込みMKNOD です。

      8. (オプション) Ulimit 設定 では、ulimit を追加 を選択して、コンテナの ulimits 値を追加します。名前ソフトリミットハードリミット の値を入力し、ulimit を追加 を選択します。

  3. 次へ を選択します。

ジョブの作成

ジョブを作成するには、以下の手順を実行します。

  1. ジョブの設定 セクションの 名前 で、ジョブの一意の名前を指定します。名前の最大長は 128 文字です。大文字、小文字、数字、ハイフン (-)、アンダースコア (_) を含めることができます。

  2. 次へ を選択します。

確認と作成

レビューと作成では、設定手順を確認してください。変更する必要がある場合は、編集 を選択します。完了したら、リソースを作成 を選択します。