このドキュメントでは、新規または既存の Compute Engine インスタンスで正常なシャットダウンを有効にする方法について説明します。正常なシャットダウンの詳細については、正常なシャットダウンの概要をご覧ください。
インスタンスで正常なシャットダウンを有効にすると、インスタンスを停止または削除するときに、ゲスト OS に最大 1 時間のクリーン シャットダウン時間を指定できます。これにより、データの損失やファイル システムの破損を防ぐことができます。
始める前に
-
まだ設定していない場合は、認証を設定します。認証とは、サービスと API にアクセスするために ID を確認するプロセスです。 Google Cloud ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。
Select the tab for how you plan to use the samples on this page:
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
詳細については、 Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。
-
必要なロール
コンピューティング インスタンスで正常なシャットダウンを有効にするために必要な権限を取得するには、プロジェクトに対する Compute インスタンス管理者(v1) (roles/compute.instanceAdmin.v1
)IAM ロールを付与するよう管理者に依頼します。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。
この事前定義ロールには、コンピューティング インスタンスで正常なシャットダウンを有効にするために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
コンピューティング インスタンスで正常なシャットダウンを有効にするには、次の権限が必要です。
-
インスタンスを作成するには:
- プロジェクトに対する
compute.instances.create
- カスタム イメージを使用して VM を作成する: イメージに対する
compute.images.useReadOnly
- スナップショットを使用して VM を作成する: スナップショットに対する
compute.snapshots.useReadOnly
- インスタンス テンプレートを使用して VM を作成する: インスタンス テンプレートに対する
compute.instanceTemplates.useReadOnly
- レガシー ネットワークを VM に割り当てる: プロジェクトに対する
compute.networks.use
- VM の静的 IP アドレスを指定する: プロジェクトに対する
compute.addresses.use
- レガシー ネットワークの使用時に VM に外部 IP アドレスを割り当てる: プロジェクトに対する
compute.networks.useExternalIp
- VM のサブネットを指定する: プロジェクトまたは選択したサブネットに対する
compute.subnetworks.use
- VPC ネットワークの使用時に VM に外部 IP アドレスを割り当てる: プロジェクトまたは選択したサブネットに対する
compute.subnetworks.useExternalIp
- VM の VM インスタンス メタデータを設定する: プロジェクトに対する
compute.instances.setMetadata
- VM にタグを設定する: VM に対する
compute.instances.setTags
- VM にラベルを設定する: VM に対する
compute.instances.setLabels
- VM が使用するサービス アカウントを設定する: VM に対する
compute.instances.setServiceAccount
- VM に新しいディスクを作成する: プロジェクトに対する
compute.disks.create
- 既存のディスクを読み取り専用モードまたは読み取り / 書き込みモードでアタッチする: ディスクに対する
compute.disks.use
- 既存のディスクを読み取り専用モードでアタッチする: ディスクに対する
compute.disks.useReadOnly
- プロジェクトに対する
-
インスタンス テンプレートを作成する: プロジェクトに対する
compute.instanceTemplates.create
-
既存のインスタンスで正常なシャットダウンを有効にするには、インスタンスの
compute.instances.update
を有効にします。
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
正常なシャットダウンを有効にする
コンピューティング インスタンスで正常なシャットダウンを有効にするには、次のいずれかの方法を使用します。
既存のインスタンスで正常なシャットダウンを有効にする
既存のコンピューティング インスタンスを停止または再起動せずに、正常なシャットダウンを有効にできます。デフォルトの正常なシャットダウン時間は 10 分ですが、1 秒~ 1 時間の間でカスタム シャットダウン時間を指定できます。
既存のインスタンスで正常なシャットダウンを有効にするには、次のいずれかのオプションを選択します。
Google Cloud コンソールで [VM インスタンス] ページに移動します。
[名前] 列で、正常なシャットダウンを有効にするインスタンスの名前をクリックします。
インスタンスの詳細ページが開きます。
[
編集] をクリックします。[管理] セクションで、次の操作を行います。
[VM を正常にシャットダウンする] チェックボックスをオンにします。
省略可: カスタムの正常なシャットダウン期間を指定するには、[最大時間] フィールドに時間数を指定します。
[保存] をクリックします。
既存のインスタンスで正常なシャットダウンを有効にするには、--graceful-shutdown
フラグを指定して gcloud beta compute instances update
コマンドを使用します。
gcloud beta compute instances update INSTANCE_NAME \
--graceful-shutdown \
--zone=ZONE
次のように置き換えます。
INSTANCE_NAME
: インスタンスの名前。ZONE
: インスタンスが配置されているゾーン。
必要に応じて、カスタムの正常なシャットダウン期間を指定するには、--graceful-shutdown-max-duration
フラグを含めます。
gcloud beta compute instances update INSTANCE_NAME \
--graceful-shutdown \
--graceful-shutdown-max-duration=MAX_DURATION \
--zone=ZONE
MAX_DURATION
は、シャットダウン期間の長さに置き換えます。値は、時間、分、秒として指定し、その後にそれぞれ h
、m
、s
を続ける必要があります。たとえば、1 時間の場合は 1h
を指定します。20 分 10 秒の場合は 20m10s
を指定します。
空の JSON ファイルを作成します。
既存のインスタンスの属性を表示するには、ベータ版の
instances.get
メソッドにGET
リクエストを送信します。GET https://compute.googleapis.com/compute/beta/projects/
PROJECT_ID /zones/ZONE /instances/INSTANCE_NAME 次のように置き換えます。
PROJECT_ID
: インスタンスが配置されているプロジェクトの ID。ZONE
: インスタンスが配置されているゾーン。INSTANCE_NAME
: 既存のインスタンスの名前。
前の手順で作成した空の JSON ファイルで、次の操作を行います。
GET
リクエストの出力からインスタンス構成の詳細を入力します。scheduling
フィールドに、次のようにgracefulShutdown
フィールドを追加します。{ ... "scheduling": { ... "gracefulShutdown": { "enabled": true } }, ... }
必要に応じて、カスタムの正常なシャットダウン期間を指定するには、
maxDuration
フィールドを含めます。{ ... "scheduling": { ... "gracefulShutdown": { ... "enabled": true, "maxDuration": { "seconds": "
MAX_DURATION " } } }, ... }MAX_DURATION
は、正常なシャットダウン期間の秒単位の長さに置き換えます。値は1
~3600
(3,600 秒、1 時間)の範囲で指定してください。
インスタンスを更新して再起動するには、ベータ版の
instances.update
メソッドにPUT
リクエストを送信します。リクエストで、次の操作を行います。リクエスト URL に、
RESTART
に設定されたmostDisruptiveAllowedAction
クエリ パラメータを含めます。リクエスト本文には、前の手順で作成して更新した JSON ファイルのインスタンス プロパティを含めます。
インスタンスを更新する
PUT
リクエストは次のようになります。PUT https://compute.googleapis.com/compute/beta/projects/
PROJECT_ID /zones/ZONE /instances/INSTANCE_NAME ?mostDisruptiveAllowedAction=RESTART { ... "scheduling": { ... "gracefulShutdown": { "enabled": true } }, ... }
インスタンスのプロパティの更新の詳細については、インスタンス プロパティを更新するをご覧ください。
インスタンスの作成時にグレースフル シャットダウンを有効にする
正常なシャットダウンが有効になっているコンピューティング インスタンスを作成する場合、デフォルトのシャットダウン時間は 10 分です。必要に応じて、1 秒~ 1 時間のカスタム シャットダウン期間を指定できます。
正常なシャットダウンが有効になっているインスタンスを作成するには、次のいずれかのオプションを選択します。
Google Cloud コンソールで [VM インスタンス] ページに移動します。
[インスタンスを作成] をクリックします。
[インスタンスの作成] ページが開きます。
インスタンスの名前を指定します。
インスタンスを作成する [リージョン] と [ゾーン] を指定します。
インスタンスのマシンタイプを指定します。
ナビゲーション メニューで [詳細設定] をクリックします。
[VM プロビジョニング モデルの詳細設定] セクションを開き、次の操作を行います。
[VM を正常にシャットダウンする] チェックボックスをオンにします。
省略可: カスタムの正常なシャットダウン期間を指定するには、[最大時間] フィールドに時間数を指定します。
[作成] をクリックします。
正常なシャットダウンが有効になっているインスタンスを作成するには、--graceful-shutdown
フラグを指定して gcloud beta compute instances create
コマンドを使用します。
gcloud beta compute instances create INSTANCE_NAME \
--graceful-shutdown \
--machine-type=MACHINE_TYPE \
--zone=ZONE
次のように置き換えます。
INSTANCE_NAME
: インスタンスの名前。MACHINE_TYPE
: インスタンスに使用するマシンタイプ。ZONE
: インスタンスを作成するゾーン。
必要に応じて、カスタムの正常なシャットダウン期間を指定するには、--graceful-shutdown-max-duration
フラグを含めます。
gcloud beta compute instances create INSTANCE_NAME \
--graceful-shutdown \
--graceful-shutdown-max-duration=MAX_DURATION \
--machine-type=MACHINE_TYPE \
--zone=ZONE
MAX_DURATION
は、正常なシャットダウン期間の長さに置き換えます。値は、時間、分、秒として指定し、その後にそれぞれ h
、m
、s
を続ける必要があります。たとえば、1 時間の場合は 1h
を指定します。20 分 10 秒の場合は 20m10s
を指定します。
正常なシャットダウンが有効になっているインスタンスを作成するには、beta.instances.insert
メソッドに POST
リクエストを送信します。リクエストの本文に、gracefulShutdown
フィールドを含めます。
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID /zones/ZONE /instances
{
"name": "INSTANCE_NAME ",
"machineType": "zones/ZONE /machineTypes/MACHINE_TYPE ",
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT /global/images/IMAGE "
}
}
],
"networkInterfaces": [
{
"network": "global/networks/default"
}
],
"scheduling": {
"gracefulShutdown": {
"enabled": true
}
}
}
次のように置き換えます。
PROJECT_ID
: インスタンスを作成するプロジェクトの ID。ZONE
: インスタンスを作成するゾーン。INSTANCE_NAME
: インスタンスの名前。MACHINE_TYPE
: インスタンスのマシンタイプ。IMAGE_PROJECT
: イメージを含むイメージ プロジェクト(例:debian-cloud
)。サポートされているイメージ プロジェクトの詳細については、公開イメージをご覧ください。IMAGE
: 次のいずれかを指定します。OS イメージの特定のバージョン。例:
debian-12-bookworm-v20240617
。イメージ ファミリー。
family/IMAGE_FAMILY
の形式にする必要があります。この形式では、非推奨ではない最新の OS イメージが指定されます。たとえば、family/debian-12
を指定すると、Debian 12 イメージ ファミリーの最新バージョンが使用されます。イメージ ファミリーの使用の詳細については、イメージ ファミリーのベスト プラクティスをご覧ください。
必要に応じて、カスタムの正常なシャットダウン期間を指定する場合は、リクエスト本文に maxDuration
フィールドを含めます。
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID /zones/ZONE /instances
{
"name": "INSTANCE_NAME ",
"machineType": "zones/ZONE /machineTypes/MACHINE_TYPE ",
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT /global/images/IMAGE "
}
}
],
"networkInterfaces": [
{
"network": "global/networks/default"
}
],
"scheduling": {
"gracefulShutdown": {
"enabled": true,
"maxDuration": {
"seconds": "MAX_DURATION "
}
}
}
}
MAX_DURATION
は、正常なシャットダウン期間の秒単位の長さに置き換えます。値は 1
~3600
(3,600 秒、1 時間)の範囲で指定してください。
インスタンスの作成時のその他の構成オプションについては、Compute Engine インスタンスの作成と開始をご覧ください。
インスタンスを一括作成するときに正常なシャットダウンを有効にする
正常なシャットダウンが有効になっているコンピューティング インスタンスを一括で作成する場合、デフォルトのシャットダウン時間は 10 分です。必要に応じて、1 秒~ 1 時間のカスタム シャットダウン期間を指定できます。
正常なシャットダウンが有効になっているインスタンスを一括作成するには、次のいずれかのオプションを選択します。
正常なシャットダウンを有効にしてインスタンスを一括で作成するには、--graceful-shutdown
フラグを指定して gcloud beta compute instances bulk create
コマンドを使用します。
たとえば、単一のゾーンでインスタンスを一括作成し、インスタンスの名前パターンを指定するには、次のコマンドを実行します。
gcloud beta compute instances bulk create \
--count=COUNT \
--graceful-shutdown \
--machine-type=MACHINE_TYPE \
--name-pattern="NAME_PATTERN " \
--zone=ZONE
次のように置き換えます。
COUNT
: 作成するインスタンスの数。MACHINE_TYPE
: インスタンスのマシンタイプ。NAME_PATTERN
: インスタンスの名前パターン。インスタンス名の一連の数字を置き換えるには、一連のハッシュ(#
)文字を使用します。たとえば、名前パターンにinstance-#
を使用すると、instance-1
、instance-2
で始まり、COUNT
で指定されたインスタンスの数まで続く名前のインスタンスが生成されます。ZONE
: インスタンスを一括作成するゾーン。
必要に応じて、カスタムの正常なシャットダウン期間を指定するには、--graceful-shutdown-max-duration
フラグを含めます。
gcloud beta compute instances bulk create \
--count=COUNT \
--graceful-shutdown \
--graceful-shutdown-max-duration=MAX_DURATION \
--machine-type=MACHINE_TYPE \
--name-pattern="NAME_PATTERN " \
--zone=ZONE
MAX_DURATION
は、正常なシャットダウン期間の長さに置き換えます。値は、時間、分、秒として指定し、その後にそれぞれ h
、m
、s
を続ける必要があります。たとえば、1 時間の場合は 1h
を指定します。20 分 10 秒の場合は 20m10s
を指定します。
正常なシャットダウンが有効になっているインスタンスを一括作成するには、ベータ版の instances.bulkInsert
メソッドに POST
リクエストを送信します。リクエスト本文に、gracefulShutdown
フィールドを含めます。
たとえば、単一のゾーンでインスタンスを一括作成し、インスタンスの名前パターンを指定するには、次のように POST
リクエストを送信します。
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID /zones/ZONE /instances/bulkInsert
{
"count": COUNT ,
"namePattern": "NAME_PATTERN ",
"instanceProperties": {
"machineType": "MACHINE_TYPE ",
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT /global/images/IMAGE "
}
}
],
"networkInterfaces": [
{
"network": "global/networks/default"
}
],
"scheduling": {
"gracefulShutdown": {
"enabled": true
}
}
}
}
次のように置き換えます。
PROJECT_ID
: インスタンスを一括作成するプロジェクトの ID。ZONE
: インスタンスを一括作成するゾーン。COUNT
: 作成するインスタンスの数。NAME_PATTERN
: インスタンスの名前パターン。インスタンス名の一連の数字を置き換えるには、一連のハッシュ(#
)文字を使用します。たとえば、名前パターンにinstance-#
を使用すると、instance-1
、instance-2
で始まり、COUNT
で指定されたインスタンスの数まで続く名前のインスタンスが生成されます。MACHINE_TYPE
: インスタンスのマシンタイプ。IMAGE_PROJECT
: イメージを含むイメージ プロジェクト(例:debian-cloud
)。サポートされているイメージ プロジェクトの詳細については、公開イメージをご覧ください。IMAGE
: 次のいずれかを指定します。OS イメージの特定のバージョン。例:
debian-12-bookworm-v20240617
。イメージ ファミリー。
family/IMAGE_FAMILY
の形式にする必要があります。この形式では、非推奨ではない最新の OS イメージが指定されます。たとえば、family/debian-12
を指定すると、Debian 12 イメージ ファミリーの最新バージョンが使用されます。イメージ ファミリーの使用の詳細については、イメージ ファミリーのベスト プラクティスをご覧ください。
ZONE
: インスタンスを一括作成するゾーン。
必要に応じて、カスタムの正常なシャットダウン期間を指定する場合は、リクエスト本文に maxDuration
フィールドを含めます。
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID /zones/ZONE /instances/bulkInsert
{
"count": COUNT ,
"namePattern": "NAME_PATTERN ",
"instanceProperties": {
"machineType": "MACHINE_TYPE ",
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT /global/images/IMAGE "
}
}
],
"networkInterfaces": [
{
"network": "global/networks/default"
}
],
"scheduling": {
"gracefulShutdown": {
"enabled": true,
"maxDuration": {
"seconds": "MAX_DURATION "
}
}
}
}
}
MAX_DURATION
は、正常なシャットダウン期間の秒単位の長さに置き換えます。値は 1
~3600
(3,600 秒、1 時間)の範囲で指定してください。
インスタンスを一括作成する場合のその他の構成オプションについては、VM を一括作成するをご覧ください。
インスタンス テンプレートの作成時に正常なシャットダウンを有効にする
正常なシャットダウンが有効になっているインスタンス テンプレートを作成する場合、デフォルトのシャットダウン時間は 10 分です。必要に応じて、1 秒~ 1 時間のカスタム シャットダウン期間を指定できます。
インスタンス テンプレートを使用して作成されたすべてのコンピューティング インスタンスで、正常なシャットダウンが有効になっています。
正常なシャットダウンが有効になっているインスタンス テンプレートを作成するには、次のいずれかのオプションを選択します。
Google Cloud コンソールで、[インスタンス テンプレート] ページに移動します。
[インスタンス テンプレートを作成] をクリックします。
[インスタンス テンプレートの作成] ページが開きます。
[名前] フィールドに、インスタンス テンプレートの名前を入力します。
次のように [ロケーション] を選択します。
リージョン インスタンス テンプレートを作成してリージョン間の依存関係を減らすには、次の操作を行います。
[リージョン] を選択します(まだ選択されていない場合)。
[リージョン] フィールドで、インスタンス テンプレートを作成するリージョンを選択します。
それ以外の場合は、リージョンをまたいでインスタンス テンプレートを使用するには、[グローバル] を選択します。
[マシンの構成] セクションで、マシンタイプを指定します。
[VM プロビジョニング モデルの詳細設定] セクションを開き、次の操作を行います。
[VM を正常にシャットダウンする] チェックボックスをオンにします。
省略可: カスタムの正常なシャットダウン期間を指定するには、[最大時間] フィールドに時間数を指定します。
[作成] をクリックします。
正常なシャットダウンが有効になっているインスタンス テンプレートを作成するには、--graceful-shutdown
フラグを指定して gcloud beta compute instance-templates create
コマンドを使用します。
たとえば、正常なシャットダウンが有効になっているリージョン インスタンス テンプレートを作成するには、次のコマンドを実行します。
gcloud beta compute instance-templates create INSTANCE_TEMPLATE_NAME \
--graceful-shutdown \
--instance-template-region=REGION \
--machine-type=MACHINE_TYPE
次のように置き換えます。
INSTANCE_TEMPLATE_NAME
: インスタンス テンプレートの名前。REGION
: インスタンス テンプレートを作成するリージョン。MACHINE_TYPE
: インスタンス テンプレートを使用して作成されたインスタンスのマシンタイプ。
必要に応じて、カスタムの正常なシャットダウン期間を指定するには、--graceful-shutdown-max-duration
フラグを含めます。
gcloud beta compute instance-templates create INSTANCE_TEMPLATE_NAME \
--graceful-shutdown \
--graceful-shutdown-max-duration=MAX_DURATION \
--instance-template-region=REGION \
--machine-type=MACHINE_TYPE
MAX_DURATION
は、シャットダウン期間の長さに置き換えます。値は、時間、分、秒として指定し、その後にそれぞれ h
、m
、s
を続ける必要があります。たとえば、1 時間の場合は 1h
を指定します。20 分 10 秒の場合は 20m10s
を指定します。
正常なシャットダウンが有効になっているインスタンス テンプレートを作成するには、次のいずれかのメソッドに POST
リクエストを送信します。
グローバル インスタンス テンプレートを作成するには: ベータ版の
instanceTemplates.insert
メソッド。リージョン インスタンス テンプレートを作成するには: ベータ版の
regionInstanceTemplates.insert
メソッド。
たとえば、正常なシャットダウンが有効になっているリージョン インスタンス テンプレートを作成するには、次のように POST
リクエストを送信します。
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID /regions/REGION /instanceTemplates
{
"name": "INSTANCE_TEMPLATE_NAME ",
"properties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT /global/images/IMAGE "
}
}
],
"machineType": "MACHINE_TYPE ",
"networkInterfaces": [
{
"network": "global/networks/default"
}
],
"scheduling": {
"gracefulShutdown": {
"enabled": true
}
}
}
}
次のように置き換えます。
PROJECT_ID
: インスタンス テンプレートを作成するプロジェクトの ID。REGION
: インスタンス テンプレートを作成するリージョン。INSTANCE_TEMPLATE_NAME
: インスタンス テンプレートの名前。IMAGE_PROJECT
: イメージを含むイメージ プロジェクト(例:debian-cloud
)。サポートされているイメージ プロジェクトの詳細については、公開イメージをご覧ください。IMAGE
: 次のいずれかを指定します。OS イメージの特定のバージョン。例:
debian-12-bookworm-v20240617
。イメージ ファミリー。
family/IMAGE_FAMILY
の形式にする必要があります。この形式では、非推奨ではない最新の OS イメージが指定されます。たとえば、family/debian-12
を指定すると、Debian 12 イメージ ファミリーの最新バージョンが使用されます。イメージ ファミリーの使用の詳細については、イメージ ファミリーのベスト プラクティスをご覧ください。
MACHINE_TYPE
: インスタンス テンプレートを使用して作成されたインスタンスのマシンタイプ。
必要に応じて、カスタムの正常なシャットダウン期間を指定する場合は、リクエスト本文に maxDuration
フィールドを含めます。
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID /global/instanceTemplates
{
"name": "INSTANCE_TEMPLATE_NAME ",
"properties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT /global/images/IMAGE "
}
}
],
"machineType": "MACHINE_TYPE ",
"networkInterfaces": [
{
"network": "global/networks/default"
}
],
"scheduling": {
"gracefulShutdown": {
"enabled": true,
"maxDuration": {
"seconds": "MAX_DURATION "
}
}
}
}
}
MAX_DURATION
は、シャットダウン期間の長さ(秒単位)に置き換えます。値は 1
~3600
(3,600 秒、1 時間)の範囲で指定してください。
インスタンス テンプレート作成時のその他の構成オプションについては、インスタンス テンプレートを作成するをご覧ください。