必要なアクセス権を持つネットワークを指定することで、ジョブを実行する VM に対する接続を制御できます。たとえば、ジョブが必要なリソースにアクセスできるようにするネットワークや、アクセスを制限してセキュリティを強化するネットワークを指定できます。また、ネットワーキングの要件がなく、ジョブのネットワーキングを構成しない場合は、ネットワークの指定を省略し、代わりにデフォルトのネットワーキング構成を使用します。
ネットワーキングのコンセプトと、ネットワーキングを構成するタイミングについては、Batch ネットワーキングの概要をご覧ください。
始める前に
- Batch を以前に使用したことがない場合は、Batch を使ってみるを確認し、プロジェクトとユーザーの前提条件を完了して Batch を有効にします。
-
特定のネットワーク上で実行されるジョブを作成するために必要な権限を取得するには、次の IAM ロールを付与するように管理者へ依頼してください。
- プロジェクトに対する Batch ジョブ編集者 (
roles/batch.jobsEditor) - ジョブのサービス アカウントのサービス アカウント ユーザー(
roles/iam.serviceAccountUser)。これは、デフォルトでは Compute Engine のデフォルトのサービス アカウントです。 -
ネットワークとサブネットを識別するには、プロジェクトに対する Compute ネットワーク閲覧者 (
roles/compute.networkViewer)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
- プロジェクトに対する Batch ジョブ編集者 (
-
ジョブで使用するネットワークを特定します。ジョブに指定するネットワークは、次の要件を満たす必要があります。
- ネットワークは、ジョブと同じプロジェクトにある Virtual Private Cloud(VPC)ネットワークか、ジョブのプロジェクトがホストしているかプロジェクトと共有されている共有 VPC ネットワークである。
- ネットワークには、ジョブを実行するロケーションのサブネットワーク(サブネット)が含まれる。
-
ネットワークにより、ジョブに必要などのアクセスも許可される。たとえば、MPI ライブラリを使用して密結合タスク間で通信するジョブなど、VM 間の通信が必要な場合は、ネットワークにジョブの VM 間の接続を許可するファイアウォール ルールがあることを確認します。
一般的なユースケースに対応した VPC ファイアウォール ルールを構成する方法をご覧ください。
-
別のプロジェクトでホストされている共有 VPC ネットワークのサブネットでジョブを実行する場合は、プロジェクトの Batch サービス エージェントにそのサブネットを使用する権限が付与されている必要があります。
共有 VPC ネットワークのサブネットで実行されるジョブを作成するために必要な権限がプロジェクトの Batch サービス エージェントに付与されるように、共有 VPC サブネットでプロジェクトの Batch サービス エージェントに Compute ネットワーク ユーザー (
roles/compute.networkUser)IAM ロールを付与するよう管理者に依頼してください。詳細については、サービス アカウントの共有 VPC の設定に関するドキュメントをご覧ください。
特定のネットワークで動作するジョブを作成する
ジョブの作成時に、そのジョブのネットワークを指定します。具体的には、このジョブを実行する場所に配置されている VPC ネットワークとサブネットを指定する必要があります。
このジョブの作成時に VM インスタンス テンプレートを使用する場合は、VM インスタンス テンプレートでネットワークを指定する必要があります。テンプレートを使用しない場合は、gcloud CLI または Batch API を使用して、ジョブのネットワークを指定します。
gcloud
gcloud CLI を使用して特定のネットワークで動作するジョブを作成するには、次のいずれかの方法を選択します。
gcloud フラグを使用してジョブのネットワークを指定する
ジョブを作成し、gcloud フラグを使用してジョブのネットワークを指定するには、次の手順を行います。
ジョブの構成の詳細を指定する JSON ファイルを作成します。
たとえば、基本的なスクリプトのジョブを作成するには、次の内容の JSON ファイルを作成します。
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": {