サービスのサンドボックスを構成する

Cloud Run サンドボックスは、第 2 世代環境の既存のサービス内で信頼できないコードを実行したり、AI エージェントなどのツールを実行したりするための、高速で安全な分離された環境を提供します。サンドボックスはレイテンシが非常に最適化されており、コンテナと同じインスタンス内で実行され、割り当てられた CPU とメモリを共有します。

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

始める前に

  1. 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

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

  3. gcloud CLI を インストールして初期化します。
  4. 第 2 世代の実行環境に Cloud Run サービスをデプロイします。

必要なロール

Cloud Run サービスの構成とデプロイに必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

ソースコードからサービス または関数をデプロイする場合は、プロジェクトと Cloud Build サービス アカウントで追加のロールが付与されている必要があります。

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

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

構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に設定されます。

サンドボックスを有効にすると、Cloud Run サービスは第 2 世代の実行環境にデプロイされます。Cloud Run サービスでサンドボックスを有効にするには、Google Cloud CLI または YAML 構成を使用します。

gcloud

サービスをデプロイまたは更新するには、--sandbox-launcher フラグを指定します。

  • 新しいサービスをデプロイするには、次のコマンドを実行します。

    gcloud beta run deploy SERVICE --image IMAGE_URL --sandbox-launcher

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

    • SERVICE: Cloud Run サービスの名前。
    • IMAGE_URL: コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latest など)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL は LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG の形式です。
  • 既存のサービスを更新するには、次のコマンドを実行します。

    gcloud beta run services update SERVICE --sandbox-launcher

YAML

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

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

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      template:
        spec:
          containers:
          - name: CONTAINER
            image: IMAGE_URL
            sandboxLauncher: true
            port: 8080
    

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

    • SERVICE: Cloud Run サービスの名前。
    • CONTAINER: コンテナの名前。
    • IMAGE_URL: コンテナ イメージへの参照( us-docker.pkg.dev/cloudrun/container/hello:latest など)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL は LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG の形式です。
  3. 次のコマンドを使用して、サービスを作成または更新します。

    gcloud run services replace service.yaml

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

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

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

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

gcloud

次のコマンドを実行して、--no-sandbox-launcher フラグを使用してサービスを更新します。

gcloud beta run services update SERVICE --no-sandbox-launcher

SERVICE は、実際のサービス名に置き換えます。

YAML

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

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

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          containers:
          - name: CONTAINER
            image: IMAGE_URL
            port: 8080
    

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

    • SERVICE: Cloud Run サービスの名前。
    • CONTAINER: コンテナの名前。
    • IMAGE_URL: コンテナ イメージへの参照( us-docker.pkg.dev/cloudrun/container/hello:latest など)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL は LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG の形式です。
  3. 次のコマンドを使用して、サービスを作成または更新します。

    gcloud run services replace service.yaml

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

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

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

コンソール

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

    Cloud Run に移動

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

  3. [変更履歴] タブをクリックします。

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

gcloud

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

    gcloud beta run services describe SERVICE

    SERVICE は、実際のサービス名に置き換えます。

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

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