仮想マシン(VM)インスタンスが停止または再起動する直前にコマンドを実行するシャットダウン スクリプトを作成して実行します。これは、自動スクリプトを使用してインスタンスの起動とシャットダウンを実行し、インスタンスでクリーンアップまたはタスク(ログのエクスポートや他のシステムとの同期など)を実行する時間を確保できるようにする場合に便利です。
シャットダウン スクリプトは、VM がマネージド インスタンス グループに属し、オートスケーラーが使用されている場合に特に役立ちます。オートスケーラーによってグループ内の VM がシャットダウンされる場合、VM が停止する前にシャットダウン スクリプトが実行され、定義したアクションがシャットダウン スクリプトによって実行されます。スクリプトは、VM が停止する前の限られたシャットダウン期間中に実行されます。たとえば、シャットダウン スクリプトによって、処理済みのデータが Cloud Storage にコピーされることや、ログがバックアップされることがあります。
シャットダウン スクリプトは起動スクリプトとほぼ同様に機能します。起動スクリプトに関するドキュメントの多くは、シャットダウン スクリプトにも適用されます。
シャットダウン タスクと再起動タスクでは、VM が常に次のようにシャットダウン スクリプトを実行します。
- Linux VM の場合は、
root
ユーザーを使用します。 - Windows VM の場合は、
System
アカウントを使用します。
始める前に
- スタートアップ スクリプトについて学習します。
- メタデータ サーバーとは何かを理解します。
-
まだ設定していない場合は、認証を設定します。認証とは、 Trusted Cloud by S3NS サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。
Select the tab for how you plan to use the samples on this page:
Console
When you use the Trusted Cloud console to access Trusted Cloud by S3NS services and APIs, you don't need to set up authentication.
gcloud
-
After installing the Google Cloud CLI, configure the gcloud CLI to use your federated identity and then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Install the Google Cloud CLI.
-
Configure the gcloud CLI to use your federated identity.
For more information, see Browser-based sign-in with the gcloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create local authentication credentials for your user account:
gcloud auth application-default login
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
- インスタンスの作成に必要なすべての権限
- インスタンスの
compute.instances.setMetadata
- Compute Engine は、ベストエフォート方式でのみシャットダウン スクリプトを実行します。まれに、Compute Engine ではシャットダウン スクリプトの完了を保証できないことがあります。
- Windows では、ローカル グループ ポリシーを使用してシャットダウン スクリプトを起動します。
- インストール パッケージでは、システムのシャットダウン時にスクリプトを起動するように、ローカル グループ ポリシー
Computer Configuration/Windows Setting/Scripts (Startup/Shutdown)
設定を構成します。
- インストール パッケージでは、システムのシャットダウン時にスクリプトを起動するように、ローカル グループ ポリシー
次のことを行います。
Compute Engine が、プログラムされた停止オペレーションまたは削除オペレーションの一部としてインスタンスを停止します。
Compute Engine によって Spot VM またはプリエンプティブル インスタンスがプリエンプション プロセスの一部として停止されるとき。
- インスタンス内のローカル ファイルにスクリプトをコピーします。
- スクリプトを実行可能にするために、ファイルの権限を設定します。
- インスタンスのシャットダウン時にファイルを実行します。
[インスタンスの作成] ページに移動します。
VM の詳細を指定します。
[詳細オプション] セクションを開きます。
[管理] を開いて、次の操作を行います。
- [メタデータ] セクションで [項目を追加] をクリックします。
- [キー] フィールドに、メタデータキーとして「
shutdown-script
」と入力します。 - [値] フィールドに、シャットダウン スクリプトの内容を追加します。
VM 作成プロセスを続行します。
shutdown-script
: このキーで、シャットダウン スクリプトの内容を直接指定します。Google Cloud CLI を使用すると、--metadata-from-file
フラグとshutdown-script
メタデータキーを使用してシャットダウン スクリプト ファイルへのパスを指定できます。shutdown-script-url
: このキーで、Cloud Storage のシャットダウン スクリプト ファイルの URL を指定します。インスタンスに接続し、次のコマンドを実行します。
sudo journalctl -u google-shutdown-scripts.service
Trusted Cloud コンソールでシリアルポート 1 を介して出力を表示し、
google_metadata_script_runner
イベントを確認します。Windows ワークステーションの IAP Desktop。詳細については、GitHub の GoogleCloudPlatform/iap-desktop リポジトリをご覧ください。
Trusted Cloud コンソールのシリアルポート 1。詳細については、シリアルポート出力の表示をご覧ください。
Windows イベント ビューアのアプリケーション ログ。
Windows ワークステーションの IAP Desktop。詳細については、GitHub の GoogleCloudPlatform/iap-desktop リポジトリをご覧ください。
Terraform
ローカル開発環境でこのページの Terraform サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
詳細については Set up authentication for a local development environment をご覧ください。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
After installing the Google Cloud CLI, configure the gcloud CLI to use your federated identity and then initialize it by running the following command:
gcloud init
詳細については、 Trusted Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。
このタスクに必要な権限
このタスクを行うには、次の権限が必要です。
仕様
以降のセクションでは、シャットダウン スクリプトの仕様について説明します。
制限事項
シャットダウン スクリプトを使用する場合には注意すべき制限がいくつかあります。
シャットダウン スクリプトの呼び出し
シャットダウン スクリプトは、次のいずれかのイベントが発生した後にインスタンスがシャットダウンされたときにトリガーされます。
シャットダウン スクリプトは任意のファイル形式にできます。インスタンスにシャットダウン スクリプトがある場合、Compute Engine は次の処理を行います。
たとえば、bash スクリプトの代わりに Python スクリプトを使用できます。スクリプトは種類に関係なくそのまま実行されることに注意してください。
bash 以外のスクリプトを実行するには、オペレーティング システムがどのインタープリターを使用すべきか把握できるよう、ファイルの先頭にシバン行を追加します。たとえば、Python スクリプトを使用する場合は次のようなシバン行を追加します。
#!/usr/bin/python
シャットダウン スクリプトの実行時間
シャットダウン スクリプトは、Compute Engine がインスタンスの状態を
STOPPING
に設定すると実行を開始します。インスタンスが完全に停止する前にスクリプトを完了する必要があります。このとき、インスタンスの状態はTERMINATED
に変わります。インスタンスがTERMINATED
状態に達するまでの時間は、インスタンスのタイプによって異なります。スクリプトの実行時間がインスタンスの停止時間よりも長くなると、Compute Engine はスクリプトを強制的に停止します。これにより、データ損失やタスクの不完全な実行につながる可能性があります。これを回避するには、ゲスト OS 内からインスタンスを停止します。この方法では、シャットダウン スクリプトの実行が完了するまで、インスタンスの状態は
STOPPING
のままになります。ローカル シャットダウン スクリプトの使用
ローカル シャットダウン スクリプトは、ローカル コンピュータ上に存在するスクリプトです。ローカル シャットダウン スクリプトは、Compute Engine に対してファイルとして渡すか内容を直接渡します。
シャットダウン スクリプトでは必要な数だけアクションを実行できますが、ローカルでファイルを渡す場合は、スクリプトをメタデータ値の長さの上限である 256 KB よりも長くすることはできません。この長さの上限を超えるスクリプトを使用するには、ファイルを Cloud Storage に保存してください。詳細については、Cloud Storage からシャットダウン スクリプトを使用するをご覧ください。
シャットダウン スクリプト ファイルを渡す
ローカル シャットダウン スクリプト ファイルは、
gcloud
コマンドライン ツールを介してのみ渡すことができます。gcloud
ローカル シャットダウン スクリプト ファイルを渡すには、
--metadata-from-file
フラグと、その後にメタデータキーのペア、shutdown-script=PATH/TO/FILE
(ここでPATH/TO/FILE
はシャットダウン スクリプトへの相対パス)を指定します。次に例を示します。gcloud compute instances create example-instance \ --metadata-from-file shutdown-script=examples/scripts/install.sh
Terraform
シャットダウン スクリプトを直接指定するには、メタデータでシャットダウン スクリプトのパスを指定して
google_compute_instance
リソースを使用します。シャットダウン スクリプトの内容を直接渡す
シャットダウン スクリプトの内容を直接渡すこともできます。
コンソール
Trusted Cloud コンソールでは、
shutdown-script
メタデータキーを使用してシャットダウン スクリプトを直接指定します。gcloud
Google Cloud CLI を使用して
--metadata
フラグを指定し、シャットダウン スクリプトの内容を指定します。その後にshutdown-script=CONTENTS
鍵ペアを指定します。ここでCONTENTS
はシャットダウン スクリプトの内容です。gcloud compute instances create example-instance --metadata shutdown-script="#! /bin/bash > # Shuts down Apache server > /etc/init.d/apache2 stop"
Terraform
シャットダウン スクリプトを直接指定するには、メタデータでシャットダウン スクリプトを指定して
google_compute_instance
リソースを使用します。REST
API では、インスタンスを作成するときにリクエストのメタデータ プロパティの一部としてシャットダウン スクリプトを渡します。メタデータキーとして
shutdown-script
を使用します。POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances {... "metadata": { "items": [ { "key": "shutdown-script", "value": "#! /bin/bash\n\n# Shuts down Apache server\n/etc/init.d/apache2 stop" } ] }... }
Windows インスタンスでシャットダウン スクリプトを渡す
以下の Windows 固有のメタデータキーを使用して、Windows インスタンスでシャットダウン スクリプトを実行します。以下に示す特殊なキーのいずれかを選択します。実行するスクリプトの種類に対応するキーを選択する必要があります。
複数のキーをインスタンスに渡すことで複数のシャットダウン スクリプトを指定できますが、各キーは仮想マシンごとに 1 回のみ指定できます。
ローカル シャットダウン スクリプトで使用できるキーは次のとおりです。手順は上と同じです。
cmd
シャットダウン スクリプトbat
シャットダウン スクリプトps1
シャットダウン スクリプトwindows-shutdown-script-cmd
windows-shutdown-script-bat
windows-shutdown-script-ps1
Cloud Storage からのシャットダウン スクリプトの使用
Cloud Storage にシャットダウン スクリプトを保存し、そこから使用できます。それには起動スクリプトのドキュメントに記載されている手順に従いますが、
startup-script-url
はshutdown-script-url
に置き換えてください。Windows インスタンスの場合は、
windows-startup-script-url
をwindows-shutdown-script-url
に置き換えます。実行中のインスタンスに対するシャットダウン スクリプトの適用
実行中のインスタンスにシャットダウン スクリプトを追加する方法については、実行中のインスタンスに対する起動スクリプトの適用の手順をご覧ください。ただし、メタデータキーは次のいずれかのキーに置き換えてください。
シャットダウン スクリプトの出力の表示
Linux
Linux シャットダウン スクリプトからの出力を確認するには、次のいずれかの操作を行います。
Windows
Windows Server シャットダウン スクリプトからの出力を確認するには、次のいずれかを使用して
GCEMetadataScripts
イベントを確認します。特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-07-03 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-07-03 UTC。"],[[["Shutdown scripts execute commands right before a virtual machine (VM) instance is stopped or restarted, allowing for tasks like exporting logs or syncing with other systems."],["These scripts are particularly useful for VMs in managed instance groups with autoscalers, ensuring actions are performed before a VM is shut down by the autoscaler."],["Shutdown scripts can be local files or their contents directly provided, and for larger scripts, they can be stored in Cloud Storage and referenced via a URL."],["Compute Engine executes shutdown scripts on a best-effort basis, with a limited time window before the instance is fully stopped, during which the script should complete its tasks."],["Shutdown scripts run as the `root` user for Linux VMs and the `System` account for Windows VMs, and can be triggered by stopping, rebooting, or deleting an instance, or by Compute Engine itself."]]],[]] -