リソースのタグを管理する


このガイドでは、Compute Engine リソースのタグを作成および管理する方法について説明します。タグは、Google Cloud リソースに適用できる 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:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

      1. After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      2. Set a default region and zone.
      3. REST

        このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

          After installing the Google Cloud CLI, initialize it by running the following command:

          gcloud init

          If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

        詳細については、 Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

権限

Compute Engine リソースのタグを管理するには、ユーザーとサービス アカウントに tagUser ロールを付与する必要があります。tagUser ロールの詳細については、必要な権限をご覧ください。

サポートされているリソース

Compute Engine では、次のリソースのタグ付けがサポートされています。

  • リソースの作成後のみ:

    • マネージド インスタンス グループ(MIG)
    • イメージ
    • スナップショット
    • ほとんどのネットワーキング リソース(ネットワーク、サブネットワーク、ファイアウォール、ヘルスチェックなどのリソース)。
  • リソースの作成中と作成後: 仮想マシン(VM)インスタンスとディスク

リソースにタグを追加する

既存のタグを特定のリソースに付加できます。リソースの作成後、次の手順に沿ってそのリソースにタグを付加します。

コンソール

リソースの種類によっては、正確な手順が異なる場合があります。たとえば、次の手順で VM にタグを付加します。

  1. Google Cloud コンソールで、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. プロジェクトを選択し、[続行] をクリックします。

  3. [名前] 列で、タグを追加する VM の名前をクリックします。

  4. [VM インスタンスの詳細] ページで、次の手順を実施します。

    1. [編集] をクリックします。
    2. [基本情報] セクションで [タグを管理] をクリックし、インスタンスに必要なタグを追加します。
    3. [保存] をクリックします。

gcloud

これらのフラグの使用方法については、Resource Manager ドキュメントのリソースへのタグ付けをご覧ください。

たとえば、次のコマンドにより VM にタグが付加されます。

gcloud resource-manager tags bindings create \
    --location LOCATION_NAME \
    --tag-value=tagValues/TAGVALUE_ID \
    --parent=//compute.googleapis.com/projects/PROJECT_NUMBER/zones/ZONE/instances/VM_ID

次のように置き換えます。

  • LOCATION_NAME: ターゲット リソースを含むリージョン(この例では VM インスタンスのリージョン)
  • TAGVALUE_ID: タグ値の数値 ID
  • PROJECT_NUMBER: ターゲット リソースを含むプロジェクトの数値 ID
  • ZONE: ターゲット リソースを含むゾーン(この例では、VM インスタンスのゾーン)
  • VM_ID: VM インスタンス ID

REST

リソースにタグを付加するには、まず、タグ値の永続 ID または名前空間の名前と、リソースの永続 ID を含むタグ バインディングの JSON 表現を作成する必要があります。タグ バインディングの形式の詳細については、tagBindings リファレンスをご覧ください。

VM インスタンスなどのゾーンリソースにタグを付加するには、リソースが配置されているリージョン エンドポイントで tagBindings.create メソッドを使用します。例:

POST https://LOCATION_NAME-cloudresourcemanager.googleapis.com/v3/tagBindings

リクエスト本文は次の 2 つのオプションのいずれかです。

{
  "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_NAME: ターゲット リソースを含むリージョン(この例では VM インスタンスのリージョン)
  • PROJECT_NUMBER: ターゲット リソースを含むプロジェクトの数値 ID
  • ZONE: ターゲット リソースを含むゾーン(この例では、VM インスタンスのゾーン)
  • VM_ID: VM インスタンス ID
  • TAGVALUE_ID: 付加されるタグ値の永続 ID(例: 4567890123
  • TAGVALUE_NAMESPACED_NAME: 付加されるタグ値の名前空間名(形式は parentNamespace/tagKeyShortName/tagValueShortName

リソースの作成時にリソースにタグを追加する

状況によっては、リソースの作成後ではなく、リソースの作成時にリソースにタグを付ける場合があります。

コンソール

リソースの種類によっては、正確な手順が異なる場合があります。VM の場合、次の手順を実施します。

  1. Google Cloud コンソールで、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. プロジェクトを選択し、[続行] をクリックします。

  3. [インスタンスを作成] をクリックします。[インスタンスの作成] ページが表示され、[マシンの構成] ペインが表示されます。

  4. ナビゲーション メニューで、[詳細設定] をクリックします。表示された [詳細設定] ペインで、次の操作を行います。

    1. [タグとラベルを管理] セクションを開きます。
    2. [タグを追加] をクリックします。
    3. 開いた [タグ] ペインで、手順に沿ってインスタンスにタグを追加します。
    4. [保存] をクリックします。
  5. インスタンスの他の構成オプションを指定します。詳細については、インスタンス作成時の構成オプションをご覧ください。

  6. VM を作成して起動するには、[作成] をクリックします。

gcloud

リソースの作成時にタグをリソースに付加するには、それぞれの create コマンドで --resource-manager-tags フラグを追加します。たとえば、VM にタグを付加するには、次のコマンドを使用します。

  gcloud compute instances create INSTANCE_NAME \
      --zone=ZONE \
      --resource-manager-tags=tagKeys/TAGKEY_ID=tagValues/TAGVALUE_ID

次のように置き換えます。

  • INSTANCE_NAME: VM インスタンスの名前
  • ZONE: VM インスタンスを含むゾーン
  • TAGKEY_ID: タグキー番号の数値 ID
  • TAGVALUE_ID: 付加されているタグ値の永続的な数値 ID(例: 4567890123

複数のタグを指定する場合は、タグをカンマで区切ります(例: TAGKEY1=TAGVALUE1,TAGKEY2=TAGVALUE2)。

REST

次の 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: VM インスタンスの名前
  • TAGKEY_ID: タグキー番号の数値 ID
  • TAGVALUE_ID: 付加されているタグ値の永続的な数値 ID(例: 4567890123

リソースのタグの取り外し

タグ バインディング リソースを削除すると、リソースからタグを取り外すことができます。

タグを取り外す方法については、Resource Manager ドキュメントのリソースのタグの取り外しをご覧ください。

コンソール

リソースの種類によっては、正確な手順が若干異なる場合があります。たとえば、次の手順で VM からタグを取り外します。

  1. Google Cloud コンソールで、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. プロジェクトを選択し、[続行] をクリックします。

  3. [名前] 列で、タグを追加する VM の名前をクリックします。

  4. [VM インスタンスの詳細] ページで、次の手順を実施します。

    1. [編集] をクリックします。
    2. [基本] セクションで [タグを管理] をクリックし、インスタンスの目的のタグを削除します。
    3. [保存] をクリックします。

gcloud

次の例では、gcloud CLI を使用して VM からタグの適用を解除します。

gcloud resource-manager tags bindings delete \
    --location LOCATION_NAME \
    --tag-value=tagValues/TAGVALUE_ID \
    --parent //compute.googleapis.com/projects/PROJECT_NUMBER/zones/ZONE/instances/VM_ID

次のように置き換えます。

  • LOCATION_NAME: ターゲット リソースのゾーン(例: us-central1-a
  • TAGVALUE_ID: タグキーの数値 ID
  • PROJECT_NUMBER: ターゲット リソースを含むプロジェクトの数値 ID
  • ZONE: ゾーン名(例: us-central1-a
  • VM_ID: VM インスタンスの ID

既存のタグ バインディングを別のタグ バインディングに更新または置換するには、古いタグ バインディングを切断して新しいタグ バインディングをアタッチします。

REST

VM などのリソースに付加されたタグ バインディングを削除するには、リソースが配置されているリージョン エンドポイントで tagBindings.delete メソッドを使用します。

DELETE https://LOCATION-cloudresourcemanager.googleapis.com/v3/{name=TAGBINDINGS_NAME}

次のように置き換えます。

  • LOCATION: リソースのリージョン エンドポイント(例: us-central1
  • TAGBINDINGS_NAME は TagBinding の永続 ID(例: tagBindings/%2F%2Fcloudresourcemanager.googleapis.com%2Fprojects%2F1234567890/tagValues/567890123456

リソースに付加されたタグの表示

タグを一覧表示する方法の詳細な手順については、Resource Manager ドキュメントのリソースに付加されたタグの一覧表示をご覧ください。

コンソール

リソースの種類によっては、正確な手順が若干異なる場合があります。たとえば、VM のタグを表示する手順は、以下のとおりです。

  1. Google Cloud コンソールで、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. プロジェクトを選択し、[続行] をクリックします。

  3. [名前] 列で、タグを表示する VM の名前をクリックします。

  4. [VM インスタンスの詳細] ページの [タグ] セクションで、目的のタグを探します。

gcloud

リソースに直接適用されたタグ バインディングのリストを取得するには、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-a
  • 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 となり省略されます。

REST

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

次のステップ