AWS Batch
ユーザーガイド

AWS Batch の開始方法

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

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

重要

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

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

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

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

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

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

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

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

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

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

    注記

    ここには、[Amazon Elastic Container Service タスクロール] の信頼関係があるロールのみが表示されます。AWS Batch ジョブの IAM ロールの作成の詳細については、「タスク用の IAM ロールとポリシーの作成」 (Amazon Elastic Container Service Developer Guide) を参照してください。

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

    • 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 と、docker runCOMMAND パラメーターにマッピングされます。Docker CMD パラメーターの詳細については、https://docs.docker.com/engine/reference/builder/#cmd を参照してください。

    注記

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

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

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

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

Parameters

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

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

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

環境変数を指定するには

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

重要

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

  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 インスタンスタイプを選択します。インスタンスファミリーを指定してそのファミリー内のいずれかのインスタンスタイプ (c4p3 など) を起動できます。または、ファミリー内の特定のサイズ (c4.8xlarge など) を指定できます。また、optimal を選択して (最新の C、M、および R インスタンスファミリーから) ジョブキューの需要に見合ったインスタンスタイプをオンザフライで使用することもできます。

  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 サービスエンドポイントと通信するために外部ネットワークアクセスが必要なため、にパブリック 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 つのコンピューティング環境を関連付けることができます。

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