起動後スクリプトを使用する
このガイドでは、Colab Enterprise で起動後スクリプトを使用する方法について説明します。また、起動後スクリプトで使用する環境変数を設定する方法についても説明します。
概要
起動後スクリプトを使用すると、Colab Enterprise ランタイムの起動プロセスの完了後にタスクを実行できます。たとえば、起動後のスクリプトを使用して、特定のパッケージをインストールしたり、ランタイムの VM に特定の変更を加えたりできます。
Colab Enterprise で起動後スクリプトを使用するには、ランタイム テンプレートを作成するときに起動後スクリプトを指定します。そのランタイム テンプレートをベースにしてランタイムを作成すると、起動プロセスの終了時に起動後スクリプトが実行されます。
起動後スクリプトの場所
起動後スクリプトの URI は次のいずれかになります。
- Cloud Storage URI: たとえば、
gs://BUCKET_NAME/SCRIPT_FILE_NAME。起動後スクリプトが Cloud Storage に保存されている場合は、エンドユーザー認証情報が有効になっているランタイムを使用する必要があります。これは、Colab Enterprise がユーザー認証情報を使用して Cloud Storage バケットにアクセスするためです。 - HTTPS URL: たとえば、
https://example.com/FOLDER_NAME/SCRIPT_FILE_NAME。 コンソールを使用してランタイム テンプレートを作成する場合、HTTPS URL の使用はサポートされていません。 Google Cloud
起動後のスクリプトの動作
起動後スクリプトの動作を指定できます。次の表をご覧ください。
| 行動 | 説明 |
|---|---|
1 回実行(RUN_ONCE) |
デフォルト。Colab Enterprise は、ランタイムの作成時に起動後スクリプトを 1 回だけ実行します。 |
開始されるたびに実行(RUN_EVERY_START) |
開始されるたびに、Colab Enterprise は 起動後スクリプトを実行します。たとえば、アイドル状態のシャットダウンによってランタイムが停止した場合、 Colab Enterprise はランタイムが再起動されると、 起動後スクリプトを再度実行します。 |
開始されるたびにダウンロードして実行(DOWNLOAD_AND_RUN_EVERY_START) |
開始されるたびに、Colab Enterprise は 起動後スクリプトをソースから再ダウンロードして実行します。 |
環境変数
ランタイム テンプレートで環境変数を指定し、起動後スクリプトでその変数を参照できます。
たとえば、環境変数を使用して割り当てプロジェクトを設定できます。クライアント ライブラリで使用される共通変数
GOOGLE_CLOUD_QUOTA_PROJECT を使用して、割り当てプロジェクトを特定のプロジェクト ID に設定できます。 Google Cloud
環境変数で起動後スクリプトを使用するには、 起動後スクリプトと 環境変数を使用してランタイム テンプレートを作成するをご覧ください。
起動後スクリプトの変更を追跡して復元する
起動後スクリプトの変更を追跡し、特定のバージョンの起動後スクリプトを復元できるようにするには、オブジェクトのバージョニングが有効になっている Cloud Storage バケットに起動後スクリプトを保存します。オブジェクトのバージョニングでは、削除されたオブジェクトをバージョニングされた非現行バージョンのオブジェクトとして保持します。このオブジェクトは、明示的に削除されるまでバケットでアクセス可能です。
起動後スクリプトのバージョンを指定するには、ランタイム テンプレートを作成するときに、起動後スクリプトの URI に
#GENERATION_NUMBERを追加します(例:
gs://BUCKET_NAME/FOLDER_NAME/FILE_NAME.py#GENERATION_NUMBER)。
オブジェクトのバージョニングと世代番号の詳細については、
オブジェクトのバージョニングをご覧ください。
コンソールを使用してランタイム テンプレートを作成する場合、起動後スクリプトの世代番号の指定はサポートされていません。 Google Cloud
始める前に
- アカウントにログインします。 Google Cloud を初めて使用する場合は、 アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。 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.
Enable the Vertex AI, Dataform, and Compute Engine APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
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.
Enable the Vertex AI, Dataform, and Compute Engine APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
必要なロール
Colab Enterprise でランタイム テンプレートを作成するために必要な権限を取得するには、プロジェクトに対する Colab Enterprise 管理者(roles/aiplatform.colabEnterpriseAdmin)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
起動後スクリプトを使用するランタイム テンプレートを作成する
起動後スクリプトを使用するランタイム テンプレートを作成するには、 コンソール、Google Cloud CLI、または REST API を使用します。 Google Cloud
コンソール
起動後スクリプトを使用するランタイム テンプレートを作成する手順は次のとおりです。
-
コンソールで、Colab Enterprise の [Runtime templates] ページに移動します。 Google Cloud
-
[ 新しいテンプレート] をクリックします。
[ランタイム テンプレートの新規作成] ダイアログが表示されます。
-
[ランタイムの基本情報] セクションで [表示名] を入力します。
-
In the [Region] menu, select the region where you want your runtime template.
-
[環境] セクションの [起動後のスクリプト] フィールドで [参照] をクリックし、Cloud Storage にある起動後スクリプトに移動します。詳細については、 起動後スクリプトの場所をご覧ください。
-
[起動後スクリプトの URL] で、起動後スクリプトの 動作を選択します。デフォルトの動作は [1 回実行] です。詳細については、 起動後のスクリプトの動作をご覧ください。
-
[ネットワーキングとセキュリティ] セクションで、 [**エンドユーザー認証情報を有効にする**] が選択されていることを確認します。
-
ダイアログの残りの部分を入力して、[作成] をクリックします。
ランタイム テンプレートが [Runtime templates] タブのリストに表示されます。
gcloud
後述のコマンドデータを使用する前に、 次のように置き換えます。
DISPLAY_NAME: ランタイム テンプレートの表示名。PROJECT_ID: プロジェクト ID。REGION: ランタイム テンプレートを配置するリージョン。POST_STARTUP_SCRIPT_URI: 起動後スクリプトの URI。詳細については、 起動後スクリプトの場所をご覧ください。POST_STARTUP_SCRIPT_BEHAVIOR: 起動後スクリプトの動作。起動後のスクリプトの動作をご覧ください。
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud colab runtime-templates create --display-name="DISPLAY_NAME" \ --project=PROJECT_ID \ --region=REGION \ --machine-type=e2-standard-4 \ --post-startup-script-url=POST_STARTUP_SCRIPT_URI \ --post-startup-script-behavior=POST_STARTUP_SCRIPT_BEHAVIOR
Windows(PowerShell)
gcloud colab runtime-templates create --display-name="DISPLAY_NAME" ` --project=PROJECT_ID ` --region=REGION ` --machine-type=e2-standard-4 ` --post-startup-script-url=POST_STARTUP_SCRIPT_URI ` --post-startup-script-behavior=POST_STARTUP_SCRIPT_BEHAVIOR
Windows(cmd.exe)
gcloud colab runtime-templates create --display-name="DISPLAY_NAME" ^ --project=PROJECT_ID ^ --region=REGION ^ --machine-type=e2-standard-4 ^ --post-startup-script-url=POST_STARTUP_SCRIPT_URI ^ --post-startup-script-behavior=POST_STARTUP_SCRIPT_BEHAVIOR
コマンドラインからランタイム テンプレートを作成するコマンドの詳細については、gcloud CLI のドキュメントをご覧ください。
REST
リクエストのデータを使用する前に、次のように置き換えます。
REGION: ランタイム テンプレートを配置するリージョン。PROJECT_ID: 実際のプロジェクト ID。DISPLAY_NAME: ランタイム テンプレートの表示名。POST_STARTUP_SCRIPT_URI: 起動後スクリプトの URI。詳細については、 起動後スクリプトの場所をご覧ください。POST_STARTUP_SCRIPT_BEHAVIOR: 起動後スクリプトの動作。起動後のスクリプトの動作をご覧ください。
HTTP メソッドと URL:
POST https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/notebookRuntimeTemplates
リクエストの本文(JSON):
{
"displayName": "DISPLAY_NAME",
"machineSpec": {
"machineType": "e2-standard-4"
},
softwareConfig: {
postStartupScriptConfig: {
postStartupScriptUrl: "POST_STARTUP_SCRIPT_URI",
postStartupScriptBehavior: "POST_STARTUP_SCRIPT_BEHAVIOR"
},
},
"networkSpec": {
"enableInternetAccess": true
}
}
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/notebookRuntimeTemplates"
PowerShell
リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/notebookRuntimeTemplates" | Select-Object -Expand Content
詳細については、notebookRuntimeTemplates.create REST API
ドキュメントをご覧ください。
ランタイムを作成する
起動後スクリプトを使用するランタイム テンプレートを作成したら、そのランタイム テンプレートに基づいてランタイムを作成します。ランタイムが起動し、指定された動作に従って起動後スクリプトが実行されます。 ランタイムを作成するをご覧ください。
起動後スクリプトと環境変数を使用してランタイム テンプレートを作成する
起動後スクリプトと 環境変数を使用するランタイム テンプレートを作成するには、 Google Cloud コンソール、Google Cloud CLI、 または REST API を使用します。
コンソール
起動後スクリプトと 環境変数を使用するランタイム テンプレートを作成する手順は次のとおりです:
-
コンソールで、Colab Enterprise の [Runtime templates] ページに移動します。 Google Cloud
-
[ 新しいテンプレート] をクリックします。
[ランタイム テンプレートの新規作成] ダイアログが表示されます。
-
[ランタイムの基本情報] セクションで [表示名] を入力します。
-
In the [Region] menu, select the region where you want your runtime template.
-
[環境] セクションの [起動後のスクリプト] フィールドで [参照] をクリックし、Cloud Storage にある起動後スクリプトに移動します。詳細については、 起動後スクリプトの場所をご覧ください。
-
[起動後スクリプトの URL] で、起動後スクリプトの 動作を選択します。デフォルトの動作は [1 回実行] です。詳細については、 起動後のスクリプトの動作をご覧ください。
-
環境変数を追加するには、 [Add env variable]をクリックし、 **キー** と**値** のペアを入力します。 さらに環境変数を追加するには、この手順を繰り返します。
-
[ネットワーキングとセキュリティ] セクションで、 [**エンドユーザー認証情報を有効にする**] が選択されていることを確認します。
-
ダイアログの残りの部分を入力して、 [作成]をクリックします。
ランタイム テンプレートが [Runtime templates] タブのリストに表示されます。
gcloud
後述のコマンドデータを使用する前に、 次のように置き換えます。
DISPLAY_NAME: ランタイム テンプレートの表示名。PROJECT_ID: プロジェクト ID。REGION: ランタイム テンプレートを配置するリージョン。POST_STARTUP_SCRIPT_URI: 起動後スクリプトの URI。詳細については、 起動後スクリプトの場所をご覧ください。POST_STARTUP_SCRIPT_BEHAVIOR: 起動後スクリプトの動作。起動後のスクリプトの動作をご覧ください。ENV_VARIABLE_NAME: ランタイムに設定する環境変数の名前。ENV_VARIABLE_VALUE: ランタイムに設定する環境変数の値。
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud colab runtime-templates create --display-name="DISPLAY_NAME" \ --project=PROJECT_ID \ --region=REGION \ --machine-type=e2-standard-4 \ --post-startup-script-url=POST_STARTUP_SCRIPT_URI \ --post-startup-script-behavior=POST_STARTUP_SCRIPT_BEHAVIOR \ --set-env-vars=ENV_VARIABLE_NAME=ENV_VARIABLE_VALUE
Windows(PowerShell)
gcloud colab runtime-templates create --display-name="DISPLAY_NAME" ` --project=PROJECT_ID ` --region=REGION ` --machine-type=e2-standard-4 ` --post-startup-script-url=POST_STARTUP_SCRIPT_URI ` --post-startup-script-behavior=POST_STARTUP_SCRIPT_BEHAVIOR ` --set-env-vars=ENV_VARIABLE_NAME=ENV_VARIABLE_VALUE
Windows(cmd.exe)
gcloud colab runtime-templates create --display-name="DISPLAY_NAME" ^ --project=PROJECT_ID ^ --region=REGION ^ --machine-type=e2-standard-4 ^ --post-startup-script-url=POST_STARTUP_SCRIPT_URI ^ --post-startup-script-behavior=POST_STARTUP_SCRIPT_BEHAVIOR ^ --set-env-vars=ENV_VARIABLE_NAME=ENV_VARIABLE_VALUE
コマンドラインからランタイム テンプレートを作成するコマンドの詳細については、gcloud CLI のドキュメントをご覧ください。
REST
リクエストのデータを使用する前に、次のように置き換えます。
REGION: ランタイム テンプレートを配置するリージョン。PROJECT_ID: 実際のプロジェクト ID。DISPLAY_NAME: ランタイム テンプレートの表示名。POST_STARTUP_SCRIPT_URI: 起動後スクリプトの URI。詳細については、 起動後スクリプトの場所をご覧ください。POST_STARTUP_SCRIPT_BEHAVIOR: 起動後スクリプトの動作。起動後のスクリプトの動作をご覧ください。ENV_VARIABLE_NAME: ランタイムに設定する環境変数の名前。ENV_VARIABLE_VALUE: ランタイムに設定する環境変数の値。
HTTP メソッドと URL:
POST https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/notebookRuntimeTemplates
リクエストの本文(JSON):
{
"displayName": "DISPLAY_NAME",
"machineSpec": {
"machineType": "e2-standard-4"
},
softwareConfig: {
postStartupScriptConfig: {
postStartupScriptUrl: "POST_STARTUP_SCRIPT_URI",
postStartupScriptBehavior: "POST_STARTUP_SCRIPT_BEHAVIOR"
},
"env": [
{
"name": "ENV_VARIABLE_NAME",
"value": "ENV_VARIABLE_VALUE"
}
]
},
"networkSpec": {
"enableInternetAccess": true
}
}
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/notebookRuntimeTemplates"
PowerShell
リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/notebookRuntimeTemplates" | Select-Object -Expand Content
詳細については、notebookRuntimeTemplates.create REST API
ドキュメントをご覧ください。
ランタイムを作成する
起動後スクリプトを使用するランタイム テンプレートを作成したら、そのランタイム テンプレートに基づいてランタイムを作成します。ランタイムが起動し、指定された動作に従って起動後スクリプトが実行されます。 ランタイムを作成するをご覧ください。
ベスト プラクティス
Colab Enterprise で起動後スクリプトを使用する場合は、次のベスト プラクティスを考慮してください。
- ランタイム テンプレートへのアクセスを制御する: 起動後スクリプトの構成が意図せず変更されるのを防ぐため、IAM ロールと権限を使用して、ランタイム テンプレートを作成して更新できるユーザーを制御します。
- スクリプトへのアクセスを制御する: 起動後スクリプト ファイルが意図せず変更されるのを防ぐため、IAM ロールと権限を使用して、スクリプトが保存されている Cloud Storage バケットへのアクセスを制御します。
- オブジェクトのバージョニングを使用する: 起動後スクリプトの変更を追跡し、ランタイム テンプレートで特定のバージョンのスクリプトを使用するようにするには、オブジェクトのバージョニングが有効になっている Cloud Storage バケットに起動後スクリプトを保存します。次に、ランタイム テンプレートを作成するときに、スクリプト パスに世代番号を含めます。例:
gs://BUCKET_NAME/OBJECT_NAME1#GENERATION_NUMBER1。詳細については、 起動後スクリプトの変更を追跡して復元するをご覧ください。 - データの引き出しを防ぐ: 組織で必要な場合は、 VPC Service Controls を使用して データの引き出しを防ぐことができます。
制限事項
Colab Enterprise で起動後スクリプトを使用する場合は、次の制限事項を考慮してください。
- 起動後スクリプトと EUC が有効になっているランタイム テンプレートに基づいてランタイムを作成するには、そのランタイムのオーナーである必要があります。 たとえば、管理者は REST API を使用して、別のユーザーの起動後スクリプトを使用するランタイムを作成することはできません。
- 起動後スクリプトを介した環境変数の受け渡しはサポートされていません。 このガイドで説明するように、ソフトウェア構成で環境変数を指定する必要があります。
- Cloud Storage にある起動後スクリプトを使用するには、エンドユーザー認証情報が有効になっているランタイムを使用する必要があります。また、ユーザー認証情報に Cloud Storage バケットへのアクセス権が必要です。
- コンソールを使用してランタイム テンプレートを作成する場合、起動後スクリプトは Cloud Storage に配置する必要があります。 Google Cloud コンソールを使用してランタイム テンプレートを作成する場合、他の場所にある起動後スクリプトはサポートされていません。 Google Cloud
- コンソールを使用してランタイム テンプレートを作成する場合、起動後スクリプトの世代番号の指定はサポートされていません Google Cloud 。
次のステップ
- ランタイムを作成して接続する。
- ランタイムを管理するには、ランタイムを管理するをご覧ください。
- ランタイムとランタイム テンプレートの詳細を確認する。