AWS Batch の使用開始 - AWS Batch

AWS Batch の使用開始

AWS Batch を開始するには、AWS Batch コンソールでジョブ定義、コンピューティング環境、およびジョブキューを作成します。

AWS Batch 初回実行ウィザードには、コンピューティング環境とジョブキューを作成してサンプルの「hello world」ジョブを送信するオプションがあります。AWS Batch で起動する Docker イメージが既にある場合は、そのイメージでジョブ定義を作成してキューに送信することもできます。

重要

開始する前に、「AWS Batch でのセットアップ」のステップを完了したこと、および AWS ユーザーに必要なアクセス権限があることを確認します。管理者ユーザーには、権限の問題について心配する必要はありません。詳細については、IAM ユーザーガイド「最初の IAM 管理者のユーザーおよびグループの作成」を参照してください。

ステップ 1: ジョブの定義

このセクションでは、ジョブ定義を作成するか、ジョブ定義なしでコンピューティング環境とジョブキューの作成に進むかを選択します。

ジョブのオプションを設定するには

  1. https://console.aws.amazon.com/batch/home#/wizardで AWS Batch コンソールの初回実行ウィザード を開きます。

  2. AWS Batch のジョブ定義、コンピューティング環境、およびジョブキューを作成してジョブを送信するには、[Amazon EC2 の使用] を選択します。ジョブを送信せずにコンピュート環境とジョブキューのみを作成するには、[ジョブ送信がありません] を選択します。

  3. ジョブ定義を作成することを選択した場合は、初回実行ウィザードの次の 4 つのセクションを完了します。4 つのセクションは、ジョブのランタイム環境パラメータ環境変数です。続いて、[Next] を選択します。ジョブ定義を作成しない場合は、[] を選択して「ステップ 2: コンピューティング環境とジョブキューの設定」に進みます。

ジョブの実行時間を指定するには

  1. 新しいジョブ定義を作成する場合は、[ジョブ定義名] でジョブ定義の名前を指定します。

  2. (オプション) [ジョブロール] では、 AWS API を使用する権限をジョブのコンテナに付与する IAM ロールを指定できます。この機能では、タスク用の Amazon ECS IAM ロールを使用します。この機能の詳細については、「タスク用の IAM ロール」 (Amazon Elastic Container Service デベロッパーガイド内) を参照してください。

    注記

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

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

    注記

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

    • 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)。

環境のリソースを指定するには

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

    注記

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

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

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

  4. [ジョブ試行] で、ジョブが失敗した場合に再試行する最大回数を指定します。詳細については、「ジョブの再試行の自動化」を参照してください。

Parameters

(オプション)パラメータ置換のデフォルト値とプレースホルダーをコマンドに指定できます。詳細については、「Parameters」を参照してください。

  1. [キー] で、パラメータのキーを指定します。

  2. [] で、パラメータの値を指定します。

環境変数を指定するには

(オプション) ジョブのコンテナに渡す環境変数を指定できます。このパラメータは、Docker Remote API Create a container (コンテナを作成する)セクションにEnvにマップされ、--envオプションはdocker runにマップされます。

重要

認証情報データなどの機密情報にプレーンテキストの環境変数を使用することはお勧めしません。

  1. [キー] で、環境変数のキーを指定します。

  2. [] で、環境変数の値を指定します。

ステップ 2: コンピューティング環境とジョブキューの設定

コンピューティング環境は、コンピューティングリソース (Amazon EC2 インスタンス) を参照する方法であり、インスタンスを設定して自動的に起動する方法を AWS Batch に指示する設定や制約です。ジョブキューに送信したジョブは、AWS Batch スケジューラによってコンピューティング環境内のコンピューティングリソースで実行されるまで、ジョブキューに格納されます。

注記

現時点では、初回実行ウィザードで作成できるのはマネージド型のコンピューティング環境のみです。アンマネージド型のコンピューティング環境を作成するには、「コンピューティング環境の作成」を参照してください。

コンピューティング環境タイプを設定するには

  1. [コンピューティング環境名] では、コンピューティング環境の一意な名前を指定します。

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

  3. [EC2 インスタンスロール] で、新しいロールを作成するか、既存のロールを使用することを選択し、コンピューティング環境用に作成された Amazon ECS コンテナインスタンスがユーザーに代わって必要な AWS API を呼び出せるようにします。詳細については、「Amazon ECS インスタンスロール」を参照してください。新しいロールを作成することを選択した場合は、必要なロール (ecsInstanceRole) が自動的に作成されます。

インスタンスを設定するには

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

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

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

    2. [スポットフリートロール] で、新しいロールを作成するか、既存の Amazon EC2 スポットフリートの IAM ロールを使用することを選択して、スポットコンピューティング環境に適用します。新しいロールを作成することを選択した場合は、必要なロール (aws-ec2-spot-fleet-role) が自動的に作成されます。詳細については、「Amazon EC2 スポットフリートロール」を参照してください。

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

    注記

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

    注記

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

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

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

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

ネットワーキングを設定するには

コンピューティングリソースは、ここで指定した VPC およびサブネット内で起動されます。これにより、AWS Batch コンピューティングリソースのネットワーク隔離を制御できます。

重要

コンピューティングリソースには、Amazon ECS サービスエンドポイントと通信するために外部ネットワークアクセスが必要です。これは、インターフェイス VPC エンドポイントを介して、またはパブリック IP アドレスを持つコンピューティングリソースを通じて可能になります。

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

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

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

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

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

インスタンスにタグを付けるには

(オプション)コンピューティング環境で起動するインスタンスに、タグとしてキーバリューペアを適用できます。たとえば、タグとして "Name": "AWS Batch Instance - C4OnDemand" を指定し、その名前をコンピューティング環境の各インスタンスに使用できます。これは、Amazon EC2 コンソールで AWS Batch インスタンスを認識する際に役立ちます。デフォルトでは、インスタンスのタグとしてコンピューティング環境名が使用されます。

  1. [キー] で、タグのキーを指定します。

  2. [] で、タグの値を指定します。

ジョブキューを設定するには

ジョブキューに送信したジョブは、AWS Batch スケジューラによってコンピューティング環境内のコンピューティングリソースで実行されるまで、ジョブキューに格納されます。

  • [ジョブキュー名] では、ジョブキューに一意の名前を選択します。

確認して作成するには

[このジョブキューに接続されているコンピューティング環境] セクションでは、新規のコンピューティング環境が新しいジョブキューとその順序に関連付けられていることを示しています。後で、ジョブキューに別のコンピューティング環境を関連付けることができます。ジョブスケジューラでは、どのコンピューティング環境で特定のジョブを開始するかを、コンピューティング環境の順番で決めます。コンピューティング環境は、ジョブキューに関連付ける前に、VALID 状態になっていることが必要です。1 つのジョブキューには、最大 3 つのコンピューティング環境を関連付けることができます。

  • コンピューティング環境とジョブキューの設定を確認し、[作成] を選択してコンピューティング環境を作成します。