このガイドでは、Compute Engine リソースのタグを作成および管理する方法について説明します。タグとは、Google Cloud Platform リソースに付加できる Key-Value ペアのことです。タグは、次のような複数の目的で使用されます。
- リソースに特定のタグがあるかどうかに基づいて、条件付きでポリシーを許可または拒否する。
- グローバル ネットワークのファイアウォール ポリシーとリージョン ネットワークのファイアウォール ポリシーのソースとターゲットを定義する。
- 論理的な方法でリソースを整理する。
タグを作成し、タグとリソースの両方に対する適切なアクセス権を付与したら、タグを Key-Value ペアとして付加できます。特定のキーのリソースに付加できる値は、1 つだけです。たとえば、environment: development
タグを付加する場合、environment: production
タグや environment: test
タグは付加できません。各リソースには、最大 50 個の Key-Value ペアを付加できます。
リソースにタグを付加するには、タグ値を Google Cloud リソースにリンクする TagBinding リソースを作成する必要があります。タグとその仕組みの詳細については、タグの概要をご覧ください。
始める前に
- Resource Manager ドキュメントのタグの概要を確認します。
- Resource Manager ドキュメントのタグの作成と管理を確認します。
-
まだ認証を設定していない場合は、ここで認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境でコードまたはサンプルを実行するには、次のいずれかのオプションを選択して 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 Engine リソースのタグを管理するには、ユーザーとサービス アカウントに tagUser
ロールを付与する必要があります。tagUser
ロールの詳細については、必要な権限をご覧ください。
サポートされているリソース
次のリソースは、リソース作成後にのみタグ付けをサポートします。
- 仮想マシン(VM)インスタンス
- ディスク
- マネージド インスタンス グループ
- 画像
- スナップショット
- ほとんどのネットワーキング リソース(ネットワーク、サブネットワーク、ファイアウォール、HealthCheck などのリソース)。
次のリソースも、リソース作成時のタグ付けをサポートしています。
- VM インスタンス
- ディスク
リソースにタグを追加する
リソースの作成後は、次の手順に沿って既存のタグを特定のリソースに付加できます。
リソースの種類によっては、正確な手順が若干異なる場合があります。たとえば、次の手順で VM にタグを付加します。
Google Cloud コンソールで [VM インスタンス] ページに移動します。
プロジェクトを選択し、[続行] をクリックします。
[名前] 列で、タグを追加する VM の名前をクリックします。
[VM インスタンスの詳細] ページで、次の手順を実施します。
- [編集] をクリックします。
- [基本] セクションで [タグを管理] をクリックし、インスタンスに必要なタグを追加します。
- [保存] をクリックします。
これらのフラグの使用方法について詳しくは、Resource Manager ドキュメントのリソースへのタグ付けをご覧ください。
たとえば、次のコマンドにより VM にタグが付加されます。
gcloud resource-manager tags bindings create \ --locationLOCATION_NAME \ --tag-value=tagValues/TAGVALUE_ID \ --parent=//compute.googleapis.com/projects/PROJECT_NUMBER /zones/ZONE /instances/VM_ID
次のように置き換えます。
- LOCATION_NAME: ターゲット リソースのリージョン(例:
us-central1
) - TAGVALUE_ID: タグ値の数値 ID
- PROJECT_NUMBER: プロジェクトの数値 ID
- ZONE: ゾーン名(例:
us-central1-a
) - VM_ID: VM インスタンスの ID
リソースにタグを付加するには、まず、タグ値の永続 ID または名前空間付きの名前と、リソースの永続 ID を含むタグ バインディングの JSON 表現を作成する必要があります。タグ バインディングの形式の詳細については、TagBinding リファレンスをご覧ください。
VM インスタンスなどのゾーンリソースにタグを付加するには、リソースが配置されているリージョン エンドポイントで tagBindings.create
メソッドを使用します。次に例を示します。
POST https://LOCATION -cloudresourcemanager.googleapis.com/v3/tagBindings
リクエストの本文は次のいずれかです。
{ "parent": "//compute.googleapis.com/projects/PROJECT_NUMBER /zones/ZONE /instances/VM_ID ", "tagValue": "tagValue/TAGVALUE_ID " }
または
{ "parent": "//compute.googleapis.com/projects/PROJECT_NUMBER /zones/ZONE /instances/VM_ID ", "tagValueNamespacedName":TAGVALUE_NAMESPACED_NAME }
次のように置き換えます。
- LOCATION: ターゲット リソースが属するロケーション
- PROJECT_NUMBER: プロジェクトの数値 ID
- ZONE: ゾーン名(例:
us-central1-a
) - VM_ID: VM の数値 ID
- TAGVALUE_ID: 付加されているタグ値の永続 ID。例:
4567890123
。 - TAGVALUE_NAMESPACED_NAME: 付加されているタグ値の名前空間付きの名前。形式は
parentNamespace/tagKeyShortName/tagValueShortName
です。
リソースの作成時にリソースにタグを追加する
状況によっては、リソースの作成後ではなく、リソースの作成時にリソースにタグを付ける場合があります。たとえば、Cloud Next Generation Firewall リソースを作成するときに、ネットワーク ポリシーにファイアウォール タグを適用できます。
リソースの種類によっては、正確な手順が若干異なる場合があります。 VM の場合、次の手順を実施します。
Google Cloud コンソールで [VM インスタンス] ページに移動します。
プロジェクトを選択し、[続行] をクリックします。
[インスタンスを作成] をクリックします。
[タグとラベルを管理] をクリックします。
[タグを追加] をクリックします。
サイドパネルの指示に沿って、インスタンスに追加するタグを選択します。
[保存] をクリックします。
VM インスタンスの作成と起動の他の手順を完了して、インスタンスの作成を完了します。
リソースの作成時にタグをリソースに付加するには、それぞれの create
コマンドで --resource-manager-tags
フラグを追加します。たとえば、VM にタグを付加するには、次のコマンドを使用します。
gcloud compute instances createINSTANCE_NAME --resource-manager-tags=tagKeys/TAGKEY_ID =tagValues/TAGVALUE_ID
次のように置き換えます。
- INSTANCE_NAME: インスタンスの名前
- TAGKEY_ID: タグキー番号の数値 ID
- TAGVALUE_ID: 付加されているタグ値の永続的な数値 ID。例:
4567890123
。
複数のタグを指定する場合は、タグをカンマで区切ります(例: TAGKEY1=TAGVALUE1,TAGKEY2=TAGVALUE2
)。
次の URL に POST
リクエストを送信します。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT /zones/ZONE /instances
次のリクエスト JSON 本文を含めます。
{ "name":INSTANCE_NAME , "params": { "resourceManagerTags": { "tagKeys/TAGKEY_ID : "tagValues/TAGVALUE_ID ", }, } // other fields omitted }
次のように置き換えます。
- INSTANCE_NAME: インスタンスの名前
- TAGKEY_ID: タグキー番号の数値 ID
- TAGVALUE_ID: 付加されているタグ値の永続的な数値 ID。例:
4567890123
。
リソースのタグの取り外し
タグ バインディング リソースを削除すると、リソースからタグを取り外すことができます。
タグを取り外す方法については、Resource Manager ドキュメントのリソースのタグの取り外しをご覧ください。
リソースの種類によっては、正確な手順が若干異なる場合があります。たとえば、次の手順で VM からタグを取り外します。
Google Cloud コンソールで [VM インスタンス] ページに移動します。
プロジェクトを選択し、[続行] をクリックします。
[名前] 列で、タグを追加する VM の名前をクリックします。
[VM インスタンスの詳細] ページで、次の手順を実施します。
- [編集] をクリックします。
- [基本] セクションで [タグを管理] をクリックし、インスタンスの目的のタグを削除します。
- [保存] をクリックします。
次の例では、gcloud CLI を使用して VM からタグの適用を解除します。
gcloud resource-manager tags bindings delete \ --locationLOCATION_NAME \ --tag-value=tagValues/TAGVALUE_ID \ --parent //compute.googleapis.com/projects/PROJECT_NUMBER /zones/ZONE /instances/VM_ID
次のように置き換えます。
- LOCATION_NAME: ターゲット リソースのリージョン(例:
us-central1
) - TAGVALUE_ID: タグキーの数値 ID
- PROJECT_NUMBER: プロジェクトの数値 ID
- ZONE: ゾーン名(例:
us-central1-a
) - VM_ID: VM インスタンスの ID
既存のタグ バインディングを別のタグ バインディングに更新または置換するには、古いタグ バインディングを取り外して新しいタグ バインディングを付加します。
VM などのリソースに付加されたタグ バインディングを削除するには、リソースが配置されているリージョン エンドポイントで tagBindings.delete
メソッドを使用します。
DELETE https://LOCATION -cloudresourcemanager.googleapis.com/v3/{name=TAGBINDINGS_NAME }
各要素の意味は次のとおりです。
TAGBINDINGS_NAME は TagBinding の永続 ID です。例:
tagBindings/%2F%2Fcloudresourcemanager.googleapis.com%2Fprojects%2F1234567890/tagValues/567890123456
。LOCATION は、リソースのリージョン エンドポイント(
us-central1
など)です。
リソースに付加されたタグの表示
タグを一覧表示する方法の詳細については、Resource Manager ドキュメントのリソースに付加されたタグの一覧表示をご覧ください。
リソースの種類によっては、正確な手順が若干異なる場合があります。たとえば、VM のタグを表示する手順は、以下のとおりです。
Google Cloud コンソールで [VM インスタンス] ページに移動します。
プロジェクトを選択し、[続行] をクリックします。
[名前] 列で、タグを表示する VM の名前をクリックします。
[VM インスタンスの詳細] ページの [タグ] セクションで、目的のタグを探します。
リソースに直接適用されたタグ バインディングのリストを取得するには、gcloud resource-manager tags bindings list
コマンドを使用します。--effective
フラグを追加すると、このリソースが継承するタグのリストも返されます。次に例を示します。
gcloud resource-manager tags bindings list \ --location=LOCATION_NAME \ --parent //compute.googleapis.com/projects/PROJECT_NUMBER /zones/ZONE /instances/VM_ID
次のように置き換えます。
- LOCATION_NAME: ターゲット リソースのリージョン(例:
us-central1
) - PROJECT_NUMBER: プロジェクトの数値 ID
- ZONE: ゾーン名(例:
us-central1-a
) - VM_ID: VM インスタンスの ID
--effective
フラグを tags bindings list
コマンドに追加すると、このリソースが継承したすべてのタグのリストも返されます。次のようなレスポンスが返されます。
namespacedTagKey: 961309089256/environment namespacedTagValue: 961309089256/environment/production tagKey: tagKeys/417628178507 tagValue: tagValues/247197504380 inherited: true
リソースで評価されるすべてのタグが直接付加されている場合は、inherited
フィールドが false となり省略されます。
Compute Engine インスタンスなどのリージョン リソースに付加されているタグ バインディングを一覧表示するには、リソースが存在するリージョン エンドポイントで tagBindings.list
メソッドを使用します。次に例を示します。
GET https://LOCATION_NAME -cloudresourcemanager.googleapis.com/v3/tagBindings { "parent": "//compute.googleapis.com/projects/PROJECT_NUMBER /zones/ZONE /instances/VM_ID " }
次のように置き換えます。
- LOCATION_NAME: ターゲット リソースのリージョン(例:
us-central1
) - PROJECT_NUMBER: プロジェクトの数値 ID
- ZONE: ゾーン名(例:
us-central1-a
) - VM_ID: VM インスタンスの ID