Cloud Run サンドボックスは、エージェント コードの実行、データ変換の実行、既存のジョブ内でのスクリプトの安全な実行を行うための、高速で安全な分離環境を提供します。 サンドボックスはレイテンシが非常に最適化されており、コンテナと同じインスタンス内で実行され、割り当てられた CPU とメモリを共有します。
このページでは、コンテナでサンドボックスを構成する方法について説明します。 CLI を使用してサンドボックスとやり取りするコードの作成の詳細については、 Cloud Run でのコード実行をご覧ください。
始める前に
- アカウントに Google Cloud ログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、 実際のシナリオでプロダクトがどのように機能するかを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイに利用できる $300 分の無料クレジットも提供されます。
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- gcloud CLI を インストールして初期化します。
- Cloud Run ジョブを作成します。
必要なロール
Cloud Run ジョブの構成に必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
- Cloud Run ジョブに対する Cloud Run デベロッパー ロール(
roles/run.developer) - サービス ID に対するサービス アカウント ユーザー ロール(
roles/iam.serviceAccountUser)
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
新しいジョブを作成する場合は、この手順をスキップします。 既存のジョブを更新する場合は、その YAML 構成をダウンロードします。
gcloud run jobs describe JOB_NAME --format export > job.yaml
コンテナ構成内で
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)
次のコマンドを使用して、ジョブを作成または更新します。
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
新しいジョブを作成する場合は、この手順をスキップします。 既存のジョブを更新する場合は、その YAML 構成をダウンロードします。
gcloud run jobs describe JOB_NAME --format export > job.yaml
コンテナ構成内の
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)
次のコマンドを使用して、ジョブを作成または更新します。
gcloud run jobs replace job.yaml
gcloud run jobs replaceコマンドは、job.yamlファイルが存在する場合はデフォルトで使用します。
サンドボックスの設定を表示する
Cloud Run ジョブの現在のサンドボックス設定を表示するには:
コンソール
Google Cloud コンソールで、Cloud Run の [**ジョブ**] ページに移動します。
ジョブをクリックして、[ジョブの詳細] ページを開きます。
[履歴] タブで、実行されたジョブの ID をリストからクリックします。
[コンテナ] タブで、[サンドボックス ランチャー] 設定を見つけて、サンドボックス化されたコンテナが有効か無効かを確認します。
gcloud
次のコマンドを使用します。
gcloud run jobs executions describe EXECUTION_NAME --format yaml
EXECUTION_NAME は、ジョブ実行の名前に置き換えます。
サンドボックス化されたコンテナが有効になっていることを確認するには、返された構成で
sandboxLauncher: true属性を見つけます。
ジョブからサンドボックスで信頼できないコードを実行するには、Cloud Run でのコード実行をご覧ください。