ジョブのサンドボックスを構成する

Cloud Run サンドボックスは、エージェント コードの実行、データ変換の実行、既存のジョブ内でのスクリプトの安全な実行を行うための、高速で安全な分離環境を提供します。 サンドボックスはレイテンシが非常に最適化されており、コンテナと同じインスタンス内で実行され、割り当てられた CPU とメモリを共有します。

このページでは、コンテナでサンドボックスを構成する方法について説明します。 CLI を使用してサンドボックスとやり取りするコードの作成の詳細については、 Cloud Run でのコード実行をご覧ください。

始める前に

  1. アカウントに Google Cloud ログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、 実際のシナリオでプロダクトがどのように機能するかを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイに利用できる $300 分の無料クレジットも提供されます。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. gcloud CLI を インストールして初期化します。
  7. Cloud Run ジョブを作成します。

必要なロール

Cloud Run ジョブの構成に必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

Cloud Run に関連付けられている IAM ロールと権限のリストについては、Cloud Run IAM ロールCloud Run IAM 権限をご覧ください。Cloud Run ジョブがGoogle Cloud API(Cloud クライアント ライブラリなど)と連携している場合は、サービス ID の構成ガイドをご覧ください。ロールの付与の詳細については、 デプロイ権限アクセスの管理をご覧ください。

サンドボックスを有効にする

Cloud Run ジョブでサンドボックスを有効にするには、Google Cloud CLI または YAML 構成を使用します。

gcloud

ジョブを作成または更新するには、--sandbox-launcher フラグを指定します。

  • ジョブを作成するには、次のコマンドを実行します。

    gcloud beta run jobs create JOB --image IMAGE_URL --sandbox-launcher

    次のように置き換えます。

    • JOB: Cloud Run ジョブの名前。
    • IMAGE_URL: コンテナ イメージへの参照( 例: us-docker.pkg.dev/cloudrun/container/job:latest
  • 既存のジョブを更新するには、次のコマンドを実行します。

    gcloud beta run jobs update JOB --sandbox-launcher

YAML

  1. 新しいジョブを作成する場合は、この手順をスキップします。 既存のジョブを更新する場合は、その YAML 構成をダウンロードします。

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. コンテナ構成内で sandboxLauncher 属性を true に設定して、YAML ファイルを更新します。

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      template:
        spec:
          template:
            spec:
              containers:
              - name: CONTAINER
                image: IMAGE_URL
                sandboxLauncher: true
    

    次のように置き換えます。

    • JOB: Cloud Run ジョブの名前。
    • CONTAINER: コンテナの名前。
    • IMAGE_URL: コンテナ イメージへの参照( 例: us-docker.pkg.dev/cloudrun/container/job:latest
  3. 次のコマンドを使用して、ジョブを作成または更新します。

    gcloud run jobs replace job.yaml

    gcloud run jobs replace コマンドは、job.yaml ファイルが存在する場合はデフォルトで使用します。

サンドボックスは、ホスト コンテナに割り当てられた CPU とメモリを共有します。メイン コンテナの CPU とメモリの上限が、アプリケーションと同時に実行するアクティブなサンドボックスの両方に対応できることを確認してください。

サンドボックスを無効にする

ジョブでサンドボックスを起動する機能を無効にするには、Google Cloud CLI または YAML 構成を使用します。

gcloud

次のコマンドを実行して、--no-sandbox-launcher フラグを使用してジョブを更新します。

gcloud beta run jobs update JOB --no-sandbox-launcher

JOB は、使用するジョブの名前に置き換えます。

YAML

  1. 新しいジョブを作成する場合は、この手順をスキップします。 既存のジョブを更新する場合は、その YAML 構成をダウンロードします。

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. コンテナ構成内の sandboxLauncher 属性を削除するように YAML ファイルを更新します。

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB
    spec:
      template:
        spec:
          template:
            spec:
              containers:
              - name: CONTAINER
                image: IMAGE_URL
    

    次のように置き換えます。

    • JOB: Cloud Run ジョブの名前。
    • CONTAINER: コンテナの名前。
    • IMAGE_URL: コンテナ イメージへの参照( 例: us-docker.pkg.dev/cloudrun/container/job:latest
  3. 次のコマンドを使用して、ジョブを作成または更新します。

    gcloud run jobs replace job.yaml

    gcloud run jobs replace コマンドは、job.yaml ファイルが存在する場合はデフォルトで使用します。

サンドボックスの設定を表示する

Cloud Run ジョブの現在のサンドボックス設定を表示するには:

コンソール

  1. Google Cloud コンソールで、Cloud Run の [**ジョブ**] ページに移動します。

    Cloud Run の [ジョブ] に移動

  2. ジョブをクリックして、[ジョブの詳細] ページを開きます。

  3. [履歴] タブで、実行されたジョブの ID をリストからクリックします。

  4. [コンテナ] タブで、[サンドボックス ランチャー] 設定を見つけて、サンドボックス化されたコンテナが有効か無効かを確認します。

gcloud

  1. 次のコマンドを使用します。

    gcloud run jobs executions describe EXECUTION_NAME --format yaml

    EXECUTION_NAME は、ジョブ実行の名前に置き換えます。

  2. サンドボックス化されたコンテナが有効になっていることを確認するには、返された構成で sandboxLauncher: true 属性を見つけます。

ジョブからサンドボックスで信頼できないコードを実行するには、Cloud Run でのコード実行をご覧ください。