このページでは、ジョブが実行される仮想マシン(VM)インスタンスのオペレーティング システム(OS)イメージを指定する方法について説明します。あわせてジョブのブートディスクの他のプロパティをカスタマイズする場合は、カスタム ブートディスクを使用するジョブの作成と実行をご覧ください。
VM OS イメージと使用できる VM OS イメージの詳細については、VM OS 環境の概要をご覧ください。
準備
- Batch を以前に使用したことがない場合は、Batch を使ってみるを確認し、プロジェクトとユーザーの前提条件を完了して Batch を有効にします。
- 
  
  
  
  
  
  
  
    
    
    
    
    
    
      
      
        
        
        
        
        
      
    
      
      
        
        
        
        
        
      
    
    
    
    
    
  
  ジョブの作成に必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。 - 
  
  
    
      プロジェクトに対する Batch ジョブ編集者 (roles/batch.jobsEditor)
- 
  
  
    
      ジョブのサービス アカウントのサービス アカウント ユーザー (roles/iam.serviceAccountUser)。これは、デフォルトでは Compute Engine のデフォルトのサービス アカウントです。
 ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。 
- 
  
  
    
      プロジェクトに対する Batch ジョブ編集者 (
特定の VM OS イメージを使用するジョブを作成して実行する
ジョブを作成するときに、次のいずれかの方法で VM OS イメージを指定します。
- VM OS イメージを指定する Compute Engine インスタンス テンプレートを使用する。このジョブの作成中に VM インスタンス テンプレートを使用する場合は、VM インスタンス テンプレートで VM OS イメージを指定する必要があります。手順については、VM インスタンス テンプレートを使用してジョブリソースを定義するをご覧ください。
- [VM OS イメージ] フィールドを使用します。次の手順に示すように、gcloud CLI または Batch API を使用して - imageフィールドで VM OS イメージを指定できます。
gcloud
- ジョブの構成の詳細を指定する JSON ファイルを作成します。ジョブの VM OS イメージを指定するには、 - imageフィールドを含めます。- たとえば、特定の VM OS イメージを使用する基本的なスクリプト ジョブを作成するには、次の内容の JSON ファイルを作成します。 - { "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}." } } ] }, "taskCount": 3, "parallelism": 1 } ], "allocationPolicy": { "instances": [ { "policy": { "bootDisk": { "image": "VM_OS_IMAGE_URI" } } } ] }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }- VM_OS_IMAGE_URIは、VM OS イメージの相対リソース名に置き換えます。以下のいずれかの方法を選択します。- Batch OS 接頭辞を指定する。 特定の Batch OS の最新のイメージを使用するには、次の形式を使用します。 - BATCH_OS_PREFIX- BATCH_OS_PREFIXは、Batch VM OS イメージ接頭辞のいずれかに置き換えます。たとえば、- batch-debianは Batch Debian OS の接頭辞です。
- イメージ ファミリーを指定する。 特定のイメージ ファミリーの最新のイメージを使用するには、次の形式を使用します。 - projects/IMAGE_PROJECT_ID/global/images/family/IMAGE_FAMILY- 以下を置き換えます。 - IMAGE_PROJECT_ID: イメージを含むプロジェクトのプロジェクト ID。たとえば、すべての Batch イメージには- batch-custom-imageを指定します。
- IMAGE_FAMILY: イメージ ファミリー。1 つ以上の特定のイメージが含まれ、OS の種類とメジャー バージョンを表します。たとえば、Batch のすべての VM OS イメージ ファミリーを確認するには、VM OS イメージのリストを表示します。
 
- イメージのバージョンを指定する。 特定のバージョンの VM OS イメージを使用するには、次の形式を使用します。 - projects/IMAGE_PROJECT_ID/global/images/IMAGE_NAME- 以下を置き換えます。 - IMAGE_PROJECT_ID: イメージを含むプロジェクトのプロジェクト ID。たとえば、すべての Batch イメージには- batch-custom-imageを指定します。
- IMAGE_NAME: イメージ名。VM OS イメージの特定のバージョンを表します。たとえば、Batch のすべての VM OS イメージ バージョンを確認するには、VM OS イメージのリストを表示します。
 
 
- ジョブを作成するには、次の - gcloud batch jobs submitコマンドを実行します。- gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE- 以下を置き換えます。 - JOB_NAME: このジョブの名前。
- LOCATION: このジョブのロケーション。
- JSON_CONFIGURATION_FILE: ジョブの構成の詳細を含む JSON ファイルへのパス。
 
API
Batch API を使用してジョブを作成するには、jobs.create メソッドを使用してジョブの構成の詳細を指定します。ジョブの VM OS イメージを指定するには、image フィールドを含めます。たとえば、特定の VM OS イメージを使用する基本的なスクリプト ジョブを作成するには、次の POST リクエストを行います。
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
    "taskGroups": [
        {
            "taskSpec": {
                "runnables": [
                    {
                        "script": {
                            "text": "echo Hello world from task ${BATCH_TASK_INDEX}."
                        }
                    }
                ]
            },
            "taskCount": 3,
            "parallelism": 1
        }
    ],
    "allocationPolicy": {
      "instances": [
        {
          "policy": {
            "bootDisk": {
              "image": "VM_OS_IMAGE_URI"
            }
          }
        }
      ]
    },
    "logsPolicy": {
    "destination": "CLOUD_LOGGING"
  }
}
以下を置き換えます。
- PROJECT_ID: プロジェクトのプロジェクト ID
- LOCATION: このジョブのロケーション。
- JOB_NAME: このジョブの名前。
- VM_OS_IMAGE_URI: VM OS イメージの相対リソース名。以下のいずれかの方法を選択します。- Batch OS 接頭辞を指定する。 特定の Batch OS の最新のイメージを使用するには、次の形式を使用します。
 - BATCH_OS_PREFIX- BATCH_OS_PREFIXは、Batch VM OS イメージ接頭辞のいずれかに置き換えます。たとえば、- batch-debianは Batch Debian OS の接頭辞です。- イメージ ファミリーを指定する。 特定のイメージ ファミリーの最新のイメージを使用するには、次の形式を使用します。 - projects/IMAGE_PROJECT_ID/global/images/family/IMAGE_FAMILY- 以下を置き換えます。 - IMAGE_PROJECT_ID: イメージを含むプロジェクトのプロジェクト ID。たとえば、すべての Batch イメージには- batch-custom-imageを指定します。
- IMAGE_FAMILY: イメージ ファミリー。1 つ以上の特定のイメージが含まれ、OS の種類とメジャー バージョンを表します。たとえば、Batch のすべての VM OS イメージ ファミリーを確認するには、VM OS イメージのリストを表示します。
 
- イメージのバージョンを指定する。 特定のバージョンの VM OS イメージを使用するには、次の形式を使用します。 - projects/IMAGE_PROJECT_ID/global/images/IMAGE_NAME- 以下を置き換えます。 - IMAGE_PROJECT_ID: イメージを含むプロジェクトのプロジェクト ID。たとえば、すべての Batch イメージには- batch-custom-imageを指定します。
- IMAGE_NAME: イメージ名。VM OS イメージの特定のバージョンを表します。たとえば、Batch のすべての VM OS イメージ バージョンを確認するには、VM OS イメージのリストを表示します。
 
 
次のステップ
- ジョブの作成または実行で問題が発生した場合は、トラブルシューティングをご覧ください。
- VM OS イメージの詳細を確認する。
- ジョブの作成の詳細を確認する。
- ジョブとタスクを表示する方法を確認する。