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

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

AWS Batch でジョブを実行する前に、コンピューティング環境を作成する必要があります。マネージド型のコンピューティング環境を作成すると、環境内のインスタンスは、ユーザーの仕様に基づいて AWS Batch で管理できます。アンマネージド型のコンピューティング環境を作成すると、環境内のインスタンス設定はユーザーが処理します。

マネージド型のコンピューティング環境を作成するには

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

  2. ナビゲーションバーから、使用するリージョンを選択します。

  3. ナビゲーションペインで、[コンピューティング環境]、[環境の作成] を選択します。

  4. 環境を設定します。

    1. [コンピューティング環境タイプ] で、[マネージド型] を選択します。

    2. [コンピューティング環境名] では、コンピューティング環境の一意な名前を指定します。最大 128 文字までの英字 (大文字と小文字)、数字、ハイフン、下線を使用できます。

    3. [サービスロール] では、新しいロールを作成するか、または既存のロールを使用するかを選択します。このロールにより、ユーザーの代わりに AWS Batch サービスから必要な AWS API を呼び出すことを許可します。詳細については、「AWS Batch サービス IAM ロール」を参照してください。新しいロールを作成することを選択した場合は、必要なロール (AWSBatchServiceRole) が自動的に作成されます。

    4. インスタンスロールの場合、新しいインスタンスプロファイルを作成するか、必要な IAM アクセス許可がアタッチされた既存のプロファイルを使用するかを選択します。このインスタンスプロファイルを使用すると、コンピューティング環境用に作成した Amazon ECS コンテナインスタンスにより、必要な AWS API を呼び出すことができます。詳細については、「Amazon ECS インスタンスロール」を参照してください。新しいインスタンスプロファイルを作成することを選択した場合は、必要なロール (ecsInstanceRole) が作成されます。

    5. [EC2 キーペア] で、起動時にインスタンスに関連付ける既存の Amazon EC2 キーペアを選択します。このキーペアにより、SSH を使用してインスタンスに接続できます (セキュリティグループがポート 22 への進入を許可することを確認します)。

    6. [コンピューティング環境の有効化] が選択されていて、コンピューティング環境で AWS Batch ジョブスケジューラからのジョブを受け入れることができることを確認します。

  5. コンピューティングリソースを設定します。

    1. [プロビジョニングモデル] では、[オンデマンド] を選択して Amazon EC2 オンデマンドインスタンスを起動するか、または [スポット] を選択して Amazon EC2 スポットインスタンスを使用します。

    2. スポットインスタンスを使用することを選択した場合:

      1. (省略可能) [上限価格] で、インスタンス起動前のインスタンスタイプのオンデマンド価格と対比したスポットインスタンス価格の最大パーセンテージを選択します。たとえば、上限価格が 20% の場合、その EC2 インスタンスのスポット料金は現在のオンデマンド料金の 20% 未満になる必要があります。支払い額は常に最低 (市場料金) となり、最大パーセンテージを超えることはありません。このフィールドを空のままにした場合、デフォルト値はオンデマンド料金の 100% です。

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

        重要

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

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

      注記

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

      注記

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

    4. [Allocation strategy (配分戦略)] で、許可されるインスタンスタイプのリストからインスタンスタイプを選択するときに使用する配分戦略を選択します。詳細については、「配分戦略」を参照してください。

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

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

      重要

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

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

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

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

    10. (オプション) [ユーザー指定の AMI ID を有効にします] にチェックを入れて、独自のカスタム AMI を使用します。デフォルトでは、AWS Batch のマネージド型のコンピューティング環境では、承認されたバージョンの Amazon ECS に最適化された最新の AMI をコンピューティングリソースに使用します。コンピューティング環境で独自の AMI を作成して使用する場合は、コンピューティングリソースの AMI 仕様に従う必要があります。詳細については、「コンピューティングリソースの AMI」を参照してください。

      注記

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

      1. [AMI ID] にはカスタム AMI ID を貼り付け、[AMI の検証] を選択します。

  6. ネットワーキングを設定します。

    重要

    コンピューティングリソースは、Amazon ECS サービスエンドポイントと通信するためのアクセス権限を必要とします。この操作は、インターフェイス VPC エンドポイントを通じて、またはパブリック IP アドレスを持つコンピューティングリソースを通じて実行することができます。

    インターフェイス VPC エンドポイントの詳細については、Amazon Elastic Container Service Developer Guideの「Amazon ECS インターフェイス VPC エンドポイント (AWS PrivateLink)」を参照してください。

    インターフェイス VPC エンドポイントを設定しておらず、コンピューティングリソースにパブリック IP アドレスがない場合、ネットワークアドレス変換 (NAT) を使用してこのアクセスを提供する必要があります。詳細については、の「NAT ゲートウェイ」およびこのガイドの「Amazon VPC ユーザーガイド詳細については、「チュートリアル: コンピューティング環境のパブリックサブネットとプライベートサブネットを持つ VPC を作成する」を参照してください。

    1. [VPC ID] で、インスタンスを起動する先の VPC を選択します。

    2. [サブネット] で、選択した VPC のサブネットの中で、インスタンスをホストするサブネットを選択します。デフォルトでは、選択した VPC 内のすべてのサブネットが選択されます。

    3. [セキュリティグループ] で、インスタンスにアタッチするセキュリティグループを選択します。デフォルトでは、VPC のデフォルトのセキュリティグループが選択されます。

  7. (オプション) インスタンスにタグを付けます。たとえば、タグとして "Name": "AWS Batch Instance - C4OnDemand" を指定し、その名前をコンピューティング環境の各インスタンスに使用できます。これは、Amazon EC2 コンソールで AWS Batch インスタンスを認識するのに役立ちます。

  8. [Create ] を選択して終了します。

アンマネージド型のコンピューティング環境を作成するには

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

  2. ナビゲーションバーから、使用するリージョンを選択します。

  3. ナビゲーションペインで、[コンピューティング環境]、[環境の作成] を選択します。

  4. [コンピューティング環境タイプ] で、[アンマネージド型] を選択します。

  5. [コンピューティング環境名] では、コンピューティング環境の一意な名前を指定します。最大 128 文字までの英字 (大文字と小文字)、数字、ハイフン、下線を使用できます。

  6. [サービスロール] で、新しいロールを作成するか、既存のロールを使用することを選択し、AWS Batch サービスがユーザーに代わって必要な AWS API を呼び出せるようにします。詳細については、「AWS Batch サービス IAM ロール」を参照してください。新しいロールを作成することを選択した場合は、必要なロール (AWSBatchServiceRole) が自動的に作成されます。

  7. [コンピューティング環境の有効化] が選択されていて、コンピューティング環境で AWS Batch ジョブスケジューラからのジョブを受け入れることができることを確認します。

  8. [Create ] を選択して終了します。

  9. (オプション) 関連付けられたクラスターの Amazon ECS クラスター ARN を取得します。次の AWS CLI コマンドは、コンピューティング環境の Amazon ECS クラスター ARN を提供します。

    aws batch describe-compute-environments --compute-environments unmanagedCE --query computeEnvironments[].ecsClusterArn
  10. (オプション) 関連付けられた Amazon ECS クラスター内でコンテナインスタンスを起動します。詳細については、「Amazon ECS コンテナインスタンスの起動」 (Amazon Elastic Container Service Developer Guide) を参照してください。コンピューティングリソースを起動する際は、以下の Amazon EC2 ユーザーデータに登録される Amazon ECS クラスターの ARN を指定します。ecsClusterArn を、前のコマンドで取得したクラスター ARN に置き換えます。

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

    アンマネージド型のコンピューティング環境では、コンピューティングリソースを手動で起動するまで、コンピューティングリソースは利用できません。