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


このガイドでは、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. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. 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 ロールの詳細については、必要な権限をご覧ください。

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

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: ターゲット リソースのリージョン(例: us-central1
  • TAGVALUE_ID: タグ値の数値 ID
  • PROJECT_NUMBER: プロジェクトの数値 ID
  • ZONE: ゾーン名(例: us-central1-a
  • VM_ID: VM インスタンスの ID

API

リソースにタグを付加するには、まず、タグ値の永続 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 の場合、次の手順を実施します。

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

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

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

  3. [インスタンスを作成] をクリックします。

  4. [タグとラベルを管理] をクリックします。

  5. [タグを追加] をクリックします。

  6. サイドパネルの指示に沿って、インスタンスに追加するタグを選択します。

  7. [保存] をクリックします。

  8. VM インスタンスの作成と起動の他の手順を完了して、インスタンスの作成を完了します。

gcloud

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

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

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

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

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

API

次の 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 からタグを取り外します。

  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
  • TAGVALUE_ID: タグキーの数値 ID
  • PROJECT_NUMBER: プロジェクトの数値 ID
  • ZONE: ゾーン名(例: us-central1-a
  • VM_ID: VM インスタンスの ID

既存のタグ バインディングを別のタグ バインディングに更新または置換するには、古いタグ バインディングを取り外して新しいタグ バインディングを付加します。

API

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 のタグを表示する手順は、以下のとおりです。

  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
  • 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 となり省略されます。

API

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

次のステップ