アセットの変更のモニタリング

このページでは、プロジェクトでフィードを作成して管理する方法について説明します。

概要

リソースとポリシーの変更に関する通知をリアルタイムで受け取るには、フィードを作成して、フィードに登録します。フィードを構成するときに、組織内、フォルダ内、プロジェクト内についてサポートされているリソースタイプ、IAM ポリシー、アクセス ポリシー、組織ポリシーの変更をモニタリングするよう指定できます。また、フィードに条件を追加して、アセットに対する特定の種類の変更に関する通知のみを受け取ることもできます。フィードを構成すると、指定したアセットが変更されるたびに、即座に Pub/SubTemporalAssetの形式)を介して送られてくる通知を受け取ります。リアルタイム通知は、既存のワークロードに接続します。この機能を使用すると、Cloud Function の作成などのアクションを統合して、リソース変更の検出後にリソース変更を元に戻すことができます。

始める前に

始める前に、次の手順を行います。

  1. API コマンドを実行するプロジェクトで Cloud Asset Inventory API を有効にします。

    Cloud Asset Inventory API を有効にする

  2. gcloud CLI または API を使用して Cloud Asset Inventory API を呼び出すために必要な権限を構成します。

  3. 環境を設定するには、次の手順を実行します。

    gcloud CLI

    gcloud CLI を使用して Cloud Asset Inventory API を呼び出すように環境を設定するには、ローカル クライアントに Google Cloud CLI をインストールします。

    REST

    curl コマンドで Cloud Asset Inventory API を呼び出すように環境を設定するには、次の手順を行います。

    1. curl コマンドにアクセスできるかを確認します。

    2. プロジェクト、フォルダ、組織で、次のいずれかのロールがアカウントに付与されていることを確認します。

      • Cloud Asset 閲覧者のロール(roles/cloudasset.viewer

      • オーナーの基本ロール(roles/owner

  4. リアルタイム フィードの API を呼び出す権限をユーザーまたはサービス アカウントに付与します。各オペレーションには次の権限が必要です。

    権限 説明
    cloudasset.feeds.create
    cloudasset.assets.exportResource
    フィードの作成
    cloudasset.feeds.update
    cloudasset.assets.exportResource
    フィードの更新
    cloudasset.feeds.delete フィードの削除
    cloudasset.feeds.get フィードの取得
    cloudasset.feeds.list フィードの一覧表示

    Cloud Asset オーナー(roles/cloudasset.owner)のロールを付与すると、上記の表に記載されている権限を含め、Cloud Asset API に関連するすべての権限が付与されます。ロールと権限の詳細については、ロールを理解する権限の構成をご覧ください。

  5. あるプロジェクトから別のプロジェクトにメタデータをエクスポートする場合は、エクスポート元のプロジェクトのデフォルトの Cloud Asset Inventory サービス アカウントが存在し、適切な権限があることを確認してください。

  6. 既存の Pub/Sub トピックがない場合は、Pub/Sub トピックを作成します。

制限事項

  • フィードの作成、更新、削除が有効になるまで、最大で 10 分かかることがあります。

  • フィードが作成されるコンシューマ プロジェクトは、宛先の Pub/Sub トピックへの公開に使用されるサービス アカウントがコンシューマ プロジェクト内にあるため、フィードよりも長く存続する必要があります。コンシューマ プロジェクトが削除されると、Cloud Asset Inventory は宛先に公開できなくなります。プロジェクト削除が確定されるとすぐに、フィードは機能しなくなって削除されます。

フィードの作成

親には最大 200 個のフィードを作成できます。この上限は、その親の直後のフィードのみに適用され、その子のフィードは計上されません。たとえば、ある組織に 10 個のプロジェクトがある場合、各プロジェクトは最大 200 個のフィードを持ち、組織は最大 200 個のフィードを持つことができます。

プロジェクト、フォルダ、組織のフィードを作成するには、次のいずれかのリクエストを行います。Cloud Asset Inventory は、フィードの ASSET パラメータのうち少なくとも 1 つかつ条件式(指定されている場合)に一致するアセットに関する通知を設定します。

gcloud

プロジェクト

gcloud asset feeds create FEED_ID \
    --project=PROJECT_ID \
    --billing-project=BILLING_PROJECT_ID \
    --pubsub-topic=projects/PROJECT_ID/topics/TOPIC_ID \
    --asset-names=ASSET_NAME_1,ASSET_NAME_2,... \
    --asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \
    --content-type=CONTENT_TYPE \
    --condition-title="CONDITION_TITLE" \
    --condition-description="CONDITION_DESCRIPTION" \
    --condition-expression="CONDITION_EXPRESSION"

次の値を指定します。

  • FEED_ID: 一意のアセット フィード識別子。

  • PROJECT_ID: メタデータがフィードに送信されるプロジェクトの ID。

  • BILLING_PROJECT_ID: 省略可。Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。詳細は、課金プロジェクトをお読みください

  • TOPIC_ID: 通知公開先の Pub/Sub トピックの ID。

  • ASSET_NAME: 省略可。変更通知を受け取るアセットのフルネームのカンマ区切りのリスト。

    少なくとも 1 つの ASSET_NAME または ASSET_TYPE が必要です。

  • ASSET_TYPE: 省略可。変更通知を受け取る検索可能なアセットタイプのカンマ区切りのリスト。RE2 互換の正規表現がサポートされています。正規表現が、サポートされているアセットタイプと一致しない場合は、INVALID_ARGUMENT エラーが返されます。

    少なくとも 1 つの ASSET_NAME または ASSET_TYPE が必要です。

  • CONTENT_TYPE: 省略可。変更通知を受け取るアセットのコンテンツ タイプ

  • CONDITION_TITLE: 省略可。フィードに適用する条件のタイトル。

  • CONDITION_DESCRIPTION: 省略可。フィードに適用する条件の説明。

  • CONDITION_EXPRESSION: 省略可。フィードに適用する条件式。

フォルダ

gcloud asset feeds create FEED_ID \
    --folder=FOLDER_ID \
    --billing-project=BILLING_PROJECT_ID \
    --pubsub-topic=projects/PROJECT_ID/topics/TOPIC_ID \
    --asset-names=ASSET_NAME_1,ASSET_NAME_2,... \
    --asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \
    --content-type=CONTENT_TYPE \
    --condition-title="CONDITION_TITLE" \
    --condition-description="CONDITION_DESCRIPTION" \
    --condition-expression="CONDITION_EXPRESSION"

次の値を指定します。

  • FEED_ID: 一意のアセット フィード識別子。

  • FOLDER_ID: メタデータがフィードに送信されるフォルダの ID。

    Google Cloud フォルダ ID を確認する方法

    コンソール

    Google Cloud フォルダ ID を確認するには、次の手順を行います。

    1. Google Cloud コンソールに移動します。

      Google Cloud コンソールに移動

    2. メニューバーの切り替えボックスをクリックします。
    3. [選択元] ボックスをクリックして、組織を選択します。
    4. フォルダ名を検索します。フォルダ ID がフォルダ名の横に表示されます。

    gcloud CLI

    組織レベルの Google Cloud フォルダ ID を取得するには、次のコマンドを使用します。

    gcloud resource-manager folders list \
        --organization=$(gcloud organizations describe ORGANIZATION_NAME \
          --format="value(name.segment(1))") \
        --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
        --format="value(ID)"

    ここで、TOP_LEVEL_FOLDER_NAME は文字列の完全一致または部分一致です。--format オプションを削除すると、検出されたフォルダに関する詳細情報が表示されます。

    別のフォルダ内のフォルダの ID を取得するには、以下のとおりサブフォルダを一覧表示します。

    gcloud resource-manager folders list --folder=FOLDER_ID

  • BILLING_PROJECT_ID: 省略可。Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。詳細は、課金プロジェクトをお読みください

  • PROJECT_ID: Pub/Sub トピックが配置されているプロジェクトの ID。

  • TOPIC_ID: 通知公開先の Pub/Sub トピックの ID。

  • ASSET_NAME: 省略可。変更通知を受け取るアセットのフルネームのカンマ区切りのリスト。

    少なくとも 1 つの ASSET_NAME または ASSET_TYPE が必要です。

  • ASSET_TYPE: 省略可。変更通知を受け取る検索可能なアセットタイプのカンマ区切りのリスト。正規表現がサポートされています。正規表現が、サポートされているアセットタイプと一致しない場合は、INVALID_ARGUMENT エラーが返されます。

    少なくとも 1 つの ASSET_NAME または ASSET_TYPE が必要です。

  • CONTENT_TYPE: 省略可。変更通知を受け取るアセットのコンテンツ タイプ

  • CONDITION_TITLE: 省略可。フィードに適用する条件のタイトル。

  • CONDITION_DESCRIPTION: 省略可。フィードに適用する条件の説明。

  • CONDITION_EXPRESSION: 省略可。フィードに適用する条件式。

組織

gcloud asset feeds create FEED_ID \
    --organization=ORGANIZATION_ID \
    --billing-project=BILLING_PROJECT_ID \
    --pubsub-topic=projects/PROJECT_ID/topics/TOPIC_ID \
    --asset-names=ASSET_NAME_1,ASSET_NAME_2,... \
    --asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \
    --content-type=CONTENT_TYPE \
    --condition-title="CONDITION_TITLE" \
    --condition-description="CONDITION_DESCRIPTION" \
    --condition-expression="CONDITION_EXPRESSION"

次の値を指定します。

  • FEED_ID: 一意のアセット フィード識別子。

  • ORGANIZATION_ID: メタデータがフィードに送信されるプロジェクトの ID。

    Google Cloud 組織 ID を確認する方法

    コンソール

    Google Cloud 組織 ID を確認するには、次の手順を行います。

    1. Google Cloud コンソールに移動します。

      Google Cloud コンソールに移動

    2. メニューバーの切り替えボックスをクリックします。
    3. [選択元] ボックスをクリックして、組織を選択します。
    4. [すべて] タブをクリックします。 組織 ID が組織名の横に表示されます。

    gcloud CLI

    Google Cloud 組織 ID を取得するには、次のコマンドを使用します。

    gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

  • BILLING_PROJECT_ID: 省略可。Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。詳細は、課金プロジェクトをお読みください

  • PROJECT_ID: Pub/Sub トピックが配置されているプロジェクトの ID。

  • TOPIC_ID: 通知公開先の Pub/Sub トピックの ID。

  • ASSET_NAME: 省略可。変更通知を受け取るアセットのフルネームのカンマ区切りのリスト。

    少なくとも 1 つの ASSET_NAME または ASSET_TYPE が必要です。

  • ASSET_TYPE: 省略可。変更通知を受け取る検索可能なアセットタイプのカンマ区切りのリスト。正規表現がサポートされています。正規表現が、サポートされているアセットタイプと一致しない場合は、INVALID_ARGUMENT エラーが返されます。

    少なくとも 1 つの ASSET_NAME または ASSET_TYPE が必要です。

  • CONTENT_TYPE: 省略可。変更通知を受け取るアセットのコンテンツ タイプ

  • CONDITION_TITLE: 省略可。フィードに適用する条件のタイトル。

  • CONDITION_DESCRIPTION: 省略可。フィードに適用する条件の説明。

  • CONDITION_EXPRESSION: 省略可。フィードに適用する条件式。

REST

curl -X POST \
     -H "X-Goog-User-Project: BILLING_PROJECT_ID" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     -d '{
          "feedId": "FEED_ID",
          "feed": {
            "assetNames": [
              "ASSET_NAME_1",
              "ASSET_NAME_2",
              "..."
            ],
            "assetTypes": [
              "ASSET_TYPE_1",
              "ASSET_TYPE_2",
              "..."
            ],
            "contentType": "CONTENT_TYPE",
            "feedOutputConfig": {
              "pubsubDestination": {
                "topic": "projects/PROJECT_ID/topics/TOPIC_ID"
              }
            },
            "condition": {
              "title": "CONDITION_TITLE",
              "description": "CONDITION_DESCRIPTION",
              "expression": "CONDITION_EXPRESSION"
            }
          }
         }' \
     https://cloudasset.googleapis.com/v1/SCOPE/feeds

次の値を指定します。

  • BILLING_PROJECT_ID: 省略可。Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。詳細は、課金プロジェクトをお読みください

  • FEED_ID: 一意のアセット フィード識別子。

  • ASSET_NAME: 省略可。変更通知を受け取るアセットのフルネームのカンマ区切りのリスト。

    少なくとも 1 つの ASSET_NAME または ASSET_TYPE が必要です。

  • ASSET_TYPE: 省略可。変更通知を受け取る検索可能なアセットタイプのカンマ区切りのリスト。正規表現がサポートされています。正規表現が、サポートされているアセットタイプと一致しない場合は、INVALID_ARGUMENT エラーが返されます。

    少なくとも 1 つの ASSET_NAME または ASSET_TYPE が必要です。

  • CONTENT_TYPE: 省略可。変更通知を受け取るアセットのコンテンツ タイプ

  • PROJECT_ID: Pub/Sub トピックが配置されているプロジェクトの ID。

  • TOPIC_ID: 通知公開先の Pub/Sub トピックの ID。

  • CONDITION_TITLE: 省略可。フィードに適用する条件のタイトル。

  • CONDITION_DESCRIPTION: 省略可。フィードに適用する条件の説明。

  • CONDITION_EXPRESSION: 省略可。フィードに適用する条件式。

  • SCOPE: プロジェクト、フォルダ、組織がスコープになります。

    使用できる値は次のとおりです。

    • projects/PROJECT_ID

    • projects/PROJECT_NUMBER

      Google Cloud プロジェクト番号を確認する方法

      コンソール

      Google Cloud プロジェクト番号を確認するには、次の手順を行います。

      1. Google Cloud コンソールの [ダッシュボード] ページに移動します。

        ダッシュボードに移動

      2. メニューバーの切り替えボックスをクリックします。
      3. [選択元] ボックスで組織を選択し、プロジェクト名を検索します。
      4. プロジェクト名をクリックして、そのプロジェクトに切り替えます。プロジェクト番号が [プロジェクト情報] カードに表示されます。

      gcloud CLI

      Google Cloud プロジェクト番号を取得するには、次のコマンドを使用します。

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"

    • folders/FOLDER_ID

      Google Cloud フォルダ ID を確認する方法

      コンソール

      Google Cloud フォルダ ID を確認するには、次の手順を行います。

      1. Google Cloud コンソールに移動します。

        Google Cloud コンソールに移動

      2. メニューバーの切り替えボックスをクリックします。
      3. [選択元] ボックスをクリックして、組織を選択します。
      4. フォルダ名を検索します。フォルダ ID がフォルダ名の横に表示されます。

      gcloud CLI

      組織レベルの Google Cloud フォルダ ID を取得するには、次のコマンドを使用します。

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      ここで、TOP_LEVEL_FOLDER_NAME は文字列の完全一致または部分一致です。--format オプションを削除すると、検出されたフォルダに関する詳細情報が表示されます。

      別のフォルダ内のフォルダの ID を取得するには、以下のとおりサブフォルダを一覧表示します。

      gcloud resource-manager folders list --folder=FOLDER_ID

    • organizations/ORGANIZATION_ID

      Google Cloud 組織 ID を確認する方法

      コンソール

      Google Cloud 組織 ID を確認するには、次の手順を行います。

      1. Google Cloud コンソールに移動します。

        Google Cloud コンソールに移動

      2. メニューバーの切り替えボックスをクリックします。
      3. [選択元] ボックスをクリックして、組織を選択します。
      4. [すべて] タブをクリックします。 組織 ID が組織名の横に表示されます。

      gcloud CLI

      Google Cloud 組織 ID を取得するには、次のコマンドを使用します。

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

フィードを作成したら、フィードで指定した Pub/Sub トピックから更新情報を定期的に受け取ります。新しいフィードが通知の送信を開始するまで、最大で 10 分ほどかかることがあります。assetNames または assetTypes に一致し、フィードの condition を満たすアセットが変更されるたびに、通知が送信されます。

Pub/Sub トピックに最初に公開されるメッセージは、文字列形式のウェルカム メッセージで、後続のすべてのメッセージは TemporalAsset の形式です。以下は、RESOURCE コンテンツ タイプのメッセージの例です。

{
  "asset": {
    "ancestors": [
      "projects/[PROJECT_ID]",
      "folders/[FOLDER_ID]",
      "organizations/[ORGANIZATION_ID]"
    ],
    "assetType": "[ASSET_TYPE]",
    "name": "[ASSET_NAME]",
    "resource": {
      "data": {
        ...detailed resource metadata...
      },
      "discoveryDocumentUri": "[DISCOVERY_URI]",
      "discoveryName": "[DISCOVERY_NAME]",
      "location": "[LOCATION]",
      "parent": "[PARENT_ASSET_NAME]",
      "version": "[VERSION]"
    },
    "updateTime": "[UPDATE_TIME]"
  },
  "priorAsset": {
    ...prior asset information...
  },
  "priorAssetState": "[PRIOR_ASSET_STATE]",
  "window": {
    "startTime": "[UPDATE_TIME]"
  }
}

Pub/Sub またはサブスクリプションの設定方法の詳細については、Pub/Sub のドキュメントをご覧ください。

Cloud Storage バケットまたは BigQuery テーブルの変更用のフィードの作成

次のコマンドは、BUCKET_NAME Cloud Storage バケットまたは BigQuery テーブル内のコンテンツが変更されたときに TOPIC_ID Pub/Sub トピックから通知を作成します。

gcloud

プロジェクト

gcloud asset feeds create FEED_ID \
    --project=PROJECT_ID \
    --billing-project=BILLING_PROJECT_ID \
    --pubsub-topic="projects/PROJECT_ID/topics/TOPIC_ID" \
    --asset-names=//storage.googleapis.com/BUCKET_NAME \
    --asset-types=bigquery.googleapis.com/Table \
    --content-type=resource

次の値を指定します。

  • FEED_ID: 一意のアセット フィード識別子。

  • PROJECT_ID: メタデータがフィードに送信されるプロジェクトの ID。

  • BILLING_PROJECT_ID: 省略可。Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。詳細は、課金プロジェクトをお読みください

  • TOPIC_ID: 通知公開先の Pub/Sub トピックの ID。

  • BUCKET_NAME: モニタリングする Cloud Storage バケット名。

フォルダ

gcloud asset feeds create FEED_ID \
    --folder=FOLDER_ID \
    --billing-project=BILLING_PROJECT_ID \
    --pubsub-topic="projects/PROJECT_ID/topics/TOPIC_ID" \
    --asset-names=//storage.googleapis.com/BUCKET_NAME \
    --asset-types=bigquery.googleapis.com/Table \
    --content-type=resource

次の値を指定します。

  • FEED_ID: 一意のアセット フィード識別子。

  • FOLDER_ID: メタデータがフィードに送信されるフォルダの ID。

    Google Cloud フォルダ ID を確認する方法

    コンソール

    Google Cloud フォルダ ID を確認するには、次の手順を行います。

    1. Google Cloud コンソールに移動します。

      Google Cloud コンソールに移動

    2. メニューバーの切り替えボックスをクリックします。
    3. [選択元] ボックスをクリックして、組織を選択します。
    4. フォルダ名を検索します。フォルダ ID がフォルダ名の横に表示されます。

    gcloud CLI

    組織レベルの Google Cloud フォルダ ID を取得するには、次のコマンドを使用します。

    gcloud resource-manager folders list \
        --organization=$(gcloud organizations describe ORGANIZATION_NAME \
          --format="value(name.segment(1))") \
        --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
        --format="value(ID)"

    ここで、TOP_LEVEL_FOLDER_NAME は文字列の完全一致または部分一致です。--format オプションを削除すると、検出されたフォルダに関する詳細情報が表示されます。

    別のフォルダ内のフォルダの ID を取得するには、以下のとおりサブフォルダを一覧表示します。

    gcloud resource-manager folders list --folder=FOLDER_ID

  • BILLING_PROJECT_ID: 省略可。Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。詳細は、課金プロジェクトをお読みください

  • TOPIC_ID: 通知公開先の Pub/Sub トピックの ID。

  • BUCKET_NAME: モニタリングする Cloud Storage バケット名。

組織

gcloud asset feeds create FEED_ID \
    --organization=ORGANIZATION_ID \
    --billing-project=BILLING_PROJECT_ID \
    --pubsub-topic="projects/PROJECT_ID/topics/TOPIC_ID" \
    --asset-names=//storage.googleapis.com/BUCKET_NAME \
    --asset-types=bigquery.googleapis.com/Table \
    --content-type=resource

次の値を指定します。

  • FEED_ID: 一意のアセット フィード識別子。

  • ORGANIZATION_ID: メタデータをフィードに送信する組織の ID。

    Google Cloud 組織 ID を確認する方法

    コンソール

    Google Cloud 組織 ID を確認するには、次の手順を行います。

    1. Google Cloud コンソールに移動します。

      Google Cloud コンソールに移動

    2. メニューバーの切り替えボックスをクリックします。
    3. [選択元] ボックスをクリックして、組織を選択します。
    4. [すべて] タブをクリックします。 組織 ID が組織名の横に表示されます。

    gcloud CLI

    Google Cloud 組織 ID を取得するには、次のコマンドを使用します。

    gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

  • BILLING_PROJECT_ID: 省略可。Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。詳細は、課金プロジェクトをお読みください

  • TOPIC_ID: 通知公開先の Pub/Sub トピックの ID。

  • BUCKET_NAME: モニタリングする Cloud Storage バケット名。

REST

curl -X POST \
     -H "X-Goog-User-Project: BILLING_PROJECT_ID" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     -d '{
          "feedId": "FEED_ID",
          "feed": {
            "assetNames": ["storage.googleapis.com/BUCKET_NAME"],
            "assetTypes": ["bigquery.googleapis.com/Table"],
            "contentType": "RESOURCE",
            "feedOutputConfig": {
              "pubsubDestination": {
                "topic": "projects/PROJECT_ID/topics/TOPIC_ID"
              }
            }
          }
         }' \
     https://cloudasset.googleapis.com/v1/SCOPE/feeds

次の値を指定します。

  • BILLING_PROJECT_ID: 省略可。Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。詳細は、課金プロジェクトをお読みください

  • FEED_ID: 一意のアセット フィード識別子。

  • BUCKET_NAME: モニタリングする Cloud Storage バケット名。

  • PROJECT_ID: メタデータがフィードに送信されるプロジェクトの ID。

  • TOPIC_ID: 通知公開先の Pub/Sub トピックの ID。

  • SCOPE: プロジェクト、フォルダ、組織がスコープになります。

    使用できる値は次のとおりです。

    • projects/PROJECT_ID

    • projects/PROJECT_NUMBER

      Google Cloud プロジェクト番号を確認する方法

      コンソール

      Google Cloud プロジェクト番号を確認するには、次の手順を行います。

      1. Google Cloud コンソールの [ダッシュボード] ページに移動します。

        ダッシュボードに移動

      2. メニューバーの切り替えボックスをクリックします。
      3. [選択元] ボックスで組織を選択し、プロジェクト名を検索します。
      4. プロジェクト名をクリックして、そのプロジェクトに切り替えます。プロジェクト番号が [プロジェクト情報] カードに表示されます。

      gcloud CLI

      Google Cloud プロジェクト番号を取得するには、次のコマンドを使用します。

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"

    • folders/FOLDER_ID

      Google Cloud フォルダ ID を確認する方法

      コンソール

      Google Cloud フォルダ ID を確認するには、次の手順を行います。

      1. Google Cloud コンソールに移動します。

        Google Cloud コンソールに移動

      2. メニューバーの切り替えボックスをクリックします。
      3. [選択元] ボックスをクリックして、組織を選択します。
      4. フォルダ名を検索します。フォルダ ID がフォルダ名の横に表示されます。

      gcloud CLI

      組織レベルの Google Cloud フォルダ ID を取得するには、次のコマンドを使用します。

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      ここで、TOP_LEVEL_FOLDER_NAME は文字列の完全一致または部分一致です。--format オプションを削除すると、検出されたフォルダに関する詳細情報が表示されます。

      別のフォルダ内のフォルダの ID を取得するには、以下のとおりサブフォルダを一覧表示します。

      gcloud resource-manager folders list --folder=FOLDER_ID

    • organizations/ORGANIZATION_ID

      Google Cloud 組織 ID を確認する方法

      コンソール

      Google Cloud 組織 ID を確認するには、次の手順を行います。

      1. Google Cloud コンソールに移動します。

        Google Cloud コンソールに移動

      2. メニューバーの切り替えボックスをクリックします。
      3. [選択元] ボックスをクリックして、組織を選択します。
      4. [すべて] タブをクリックします。 組織 ID が組織名の横に表示されます。

      gcloud CLI

      Google Cloud 組織 ID を取得するには、次のコマンドを使用します。

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

通知は、リソースまたはリソース自体のポリシーのメタデータが変更された場合にのみ送信されます。前の例では、Cloud Storage バケットまたは BigQuery テーブルでリソースを変更しても、通知はトリガーされません。

アセットタイプ変更用のフィードの作成

次のリクエストは、アセットタイプが compute.googleapis.com で始まるリソースの内容が変更されたときに、TOPIC_ID Pub/Sub トピックから通知を作成します。

gcloud

プロジェクト

gcloud asset feeds create FEED_ID \
    --project=PROJECT_ID \
    --billing-project=BILLING_PROJECT_ID \
    --pubsub-topic="projects/PROJECT_ID/topics/TOPIC_ID" \
    --content-type=resource \
    --asset-types=compute.googleapis.com.*

次の値を指定します。

  • FEED_ID: 一意のアセット フィード識別子。

  • PROJECT_ID: メタデータがフィードに送信されるプロジェクトの ID。

  • BILLING_PROJECT_ID: 省略可。Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。詳細は、課金プロジェクトをお読みください

  • TOPIC_ID: 通知公開先の Pub/Sub トピックの ID。

フォルダ

gcloud asset feeds create FEED_ID \
    --folder=FOLDER_ID \
    --billing-project=BILLING_PROJECT_ID \
    --pubsub-topic="projects/PROJECT_ID/topics/TOPIC_ID" \
    --content-type=resource \
    --asset-types=compute.googleapis.com.*

次の値を指定します。

  • FEED_ID: 一意のアセット フィード識別子。

  • FOLDER_ID: メタデータがフィードに送信されるフォルダの ID。

    Google Cloud フォルダ ID を確認する方法

    コンソール

    Google Cloud フォルダ ID を確認するには、次の手順を行います。

    1. Google Cloud コンソールに移動します。

      Google Cloud コンソールに移動

    2. メニューバーの切り替えボックスをクリックします。
    3. [選択元] ボックスをクリックして、組織を選択します。
    4. フォルダ名を検索します。フォルダ ID がフォルダ名の横に表示されます。

    gcloud CLI

    組織レベルの Google Cloud フォルダ ID を取得するには、次のコマンドを使用します。

    gcloud resource-manager folders list \
        --organization=$(gcloud organizations describe ORGANIZATION_NAME \
          --format="value(name.segment(1))") \
        --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
        --format="value(ID)"

    ここで、TOP_LEVEL_FOLDER_NAME は文字列の完全一致または部分一致です。--format オプションを削除すると、検出されたフォルダに関する詳細情報が表示されます。

    別のフォルダ内のフォルダの ID を取得するには、以下のとおりサブフォルダを一覧表示します。

    gcloud resource-manager folders list --folder=FOLDER_ID

  • BILLING_PROJECT_ID: 省略可。Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。詳細は、課金プロジェクトをお読みください

  • TOPIC_ID: 通知公開先の Pub/Sub トピックの ID。

組織

gcloud asset feeds create FEED_ID \
    --organization=ORGANIZATION_ID \
    --billing-project=BILLING_PROJECT_ID \
    --pubsub-topic="projects/PROJECT_ID/topics/TOPIC_ID" \
    --content-type=resource \
    --asset-types=compute.googleapis.com.*

次の値を指定します。

  • FEED_ID: 一意のアセット フィード識別子。

  • ORGANIZATION_ID: メタデータをフィードに送信する組織の ID。

    Google Cloud 組織 ID を確認する方法

    コンソール

    Google Cloud 組織 ID を確認するには、次の手順を行います。

    1. Google Cloud コンソールに移動します。

      Google Cloud コンソールに移動

    2. メニューバーの切り替えボックスをクリックします。
    3. [選択元] ボックスをクリックして、組織を選択します。
    4. [すべて] タブをクリックします。 組織 ID が組織名の横に表示されます。

    gcloud CLI

    Google Cloud 組織 ID を取得するには、次のコマンドを使用します。

    gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

  • BILLING_PROJECT_ID: 省略可。Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。詳細は、課金プロジェクトをお読みください

  • TOPIC_ID: 通知公開先の Pub/Sub トピックの ID。

REST

curl -X POST \
     -H "X-Goog-User-Project: BILLING_PROJECT_ID" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     -d '{
          "feedId": "FEED_ID",
          "feed": {
            "assetTypes": ["compute.googleapis.com.*"],
            "contentType": "RESOURCE",
            "feedOutputConfig": {
              "pubsubDestination": {
                "topic": "projects/PROJECT_ID/topics/TOPIC_ID"
              }
            }
          }
         }' \
     https://cloudasset.googleapis.com/v1/SCOPE/feeds

次の値を指定します。

  • BILLING_PROJECT_ID: 省略可。Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。詳細は、課金プロジェクトをお読みください

  • FEED_ID: 一意のアセット フィード識別子。

  • PROJECT_ID: メタデータがフィードに送信されるプロジェクトの ID。

  • TOPIC_ID: 通知公開先の Pub/Sub トピックの ID。

  • SCOPE: プロジェクト、フォルダ、組織がスコープになります。

    使用できる値は次のとおりです。

    • projects/PROJECT_ID

    • projects/PROJECT_NUMBER

      Google Cloud プロジェクト番号を確認する方法

      コンソール

      Google Cloud プロジェクト番号を確認するには、次の手順を行います。

      1. Google Cloud コンソールの [ダッシュボード] ページに移動します。

        ダッシュボードに移動

      2. メニューバーの切り替えボックスをクリックします。
      3. [選択元] ボックスで組織を選択し、プロジェクト名を検索します。
      4. プロジェクト名をクリックして、そのプロジェクトに切り替えます。プロジェクト番号が [プロジェクト情報] カードに表示されます。

      gcloud CLI

      Google Cloud プロジェクト番号を取得するには、次のコマンドを使用します。

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"

    • folders/FOLDER_ID

      Google Cloud フォルダ ID を確認する方法

      コンソール

      Google Cloud フォルダ ID を確認するには、次の手順を行います。

      1. Google Cloud コンソールに移動します。

        Google Cloud コンソールに移動

      2. メニューバーの切り替えボックスをクリックします。
      3. [選択元] ボックスをクリックして、組織を選択します。
      4. フォルダ名を検索します。フォルダ ID がフォルダ名の横に表示されます。

      gcloud CLI

      組織レベルの Google Cloud フォルダ ID を取得するには、次のコマンドを使用します。

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      ここで、TOP_LEVEL_FOLDER_NAME は文字列の完全一致または部分一致です。--format オプションを削除すると、検出されたフォルダに関する詳細情報が表示されます。

      別のフォルダ内のフォルダの ID を取得するには、以下のとおりサブフォルダを一覧表示します。

      gcloud resource-manager folders list --folder=FOLDER_ID

    • organizations/ORGANIZATION_ID

      Google Cloud 組織 ID を確認する方法

      コンソール

      Google Cloud 組織 ID を確認するには、次の手順を行います。

      1. Google Cloud コンソールに移動します。

        Google Cloud コンソールに移動

      2. メニューバーの切り替えボックスをクリックします。
      3. [選択元] ボックスをクリックして、組織を選択します。
      4. [すべて] タブをクリックします。 組織 ID が組織名の横に表示されます。

      gcloud CLI

      Google Cloud 組織 ID を取得するには、次のコマンドを使用します。

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

フィードの取得

特定のフィードを取得するには、次のいずれかのリクエストを行います。

gcloud

プロジェクト

gcloud asset feeds describe FEED_ID \
    --project=PROJECT_ID \
    --billing-project=BILLING_PROJECT_ID

次の値を指定します。

  • FEED_ID: 一意のアセット フィード識別子。

  • PROJECT_ID: メタデータがフィードに公開されているプロジェクトの ID。

  • BILLING_PROJECT_ID: 省略可。Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。詳細は、課金プロジェクトをお読みください

フォルダ

gcloud asset feeds describe FEED_ID \
    --folder=FOLDER_ID \
    --billing-project=BILLING_PROJECT_ID

次の値を指定します。

  • FEED_ID: 一意のアセット フィード識別子。

  • FOLDER_ID: メタデータがフィードに公開されているフォルダの ID。

    Google Cloud フォルダ ID を確認する方法

    コンソール

    Google Cloud フォルダ ID を確認するには、次の手順を行います。

    1. Google Cloud コンソールに移動します。

      Google Cloud コンソールに移動

    2. メニューバーの切り替えボックスをクリックします。
    3. [選択元] ボックスをクリックして、組織を選択します。
    4. フォルダ名を検索します。フォルダ ID がフォルダ名の横に表示されます。

    gcloud CLI

    組織レベルの Google Cloud フォルダ ID を取得するには、次のコマンドを使用します。

    gcloud resource-manager folders list \
        --organization=$(gcloud organizations describe ORGANIZATION_NAME \
          --format="value(name.segment(1))") \
        --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
        --format="value(ID)"

    ここで、TOP_LEVEL_FOLDER_NAME は文字列の完全一致または部分一致です。--format オプションを削除すると、検出されたフォルダに関する詳細情報が表示されます。

    別のフォルダ内のフォルダの ID を取得するには、以下のとおりサブフォルダを一覧表示します。

    gcloud resource-manager folders list --folder=FOLDER_ID

  • BILLING_PROJECT_ID: 省略可。Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。詳細は、課金プロジェクトをお読みください

組織

gcloud asset feeds describe FEED_ID \
    --organization=ORGANIZATION_ID \
    --billing-project=BILLING_PROJECT_ID

次の値を指定します。

  • FEED_ID: 一意のアセット フィード識別子。

  • ORGANIZATION_ID: メタデータがフィードに公開されている組織の ID。

    Google Cloud 組織 ID を確認する方法

    コンソール

    Google Cloud 組織 ID を確認するには、次の手順を行います。

    1. Google Cloud コンソールに移動します。

      Google Cloud コンソールに移動

    2. メニューバーの切り替えボックスをクリックします。
    3. [選択元] ボックスをクリックして、組織を選択します。
    4. [すべて] タブをクリックします。 組織 ID が組織名の横に表示されます。

    gcloud CLI

    Google Cloud 組織 ID を取得するには、次のコマンドを使用します。

    gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

  • BILLING_PROJECT_ID: 省略可。Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。詳細は、課金プロジェクトをお読みください

REST

curl -X GET \
     -H "X-Goog-User-Project: BILLING_PROJECT_ID" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     https://cloudasset.googleapis.com/v1/SCOPE/feeds/FEED_ID

次の値を指定します。

  • BILLING_PROJECT_ID: 省略可。Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。詳細は、課金プロジェクトをお読みください

  • SCOPE: プロジェクト、フォルダ、組織がスコープになります。プロジェクト ID はサポートされていません。

    使用できる値は次のとおりです。

    • projects/PROJECT_NUMBER

      Google Cloud プロジェクト番号を確認する方法

      コンソール

      Google Cloud プロジェクト番号を確認するには、次の手順を行います。

      1. Google Cloud コンソールの [ダッシュボード] ページに移動します。

        ダッシュボードに移動

      2. メニューバーの切り替えボックスをクリックします。
      3. [選択元] ボックスで組織を選択し、プロジェクト名を検索します。
      4. プロジェクト名をクリックして、そのプロジェクトに切り替えます。プロジェクト番号が [プロジェクト情報] カードに表示されます。

      gcloud CLI

      Google Cloud プロジェクト番号を取得するには、次のコマンドを使用します。

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"

    • folders/FOLDER_ID

      Google Cloud フォルダ ID を確認する方法

      コンソール

      Google Cloud フォルダ ID を確認するには、次の手順を行います。

      1. Google Cloud コンソールに移動します。

        Google Cloud コンソールに移動

      2. メニューバーの切り替えボックスをクリックします。
      3. [選択元] ボックスをクリックして、組織を選択します。
      4. フォルダ名を検索します。フォルダ ID がフォルダ名の横に表示されます。

      gcloud CLI

      組織レベルの Google Cloud フォルダ ID を取得するには、次のコマンドを使用します。

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      ここで、TOP_LEVEL_FOLDER_NAME は文字列の完全一致または部分一致です。--format オプションを削除すると、検出されたフォルダに関する詳細情報が表示されます。

      別のフォルダ内のフォルダの ID を取得するには、以下のとおりサブフォルダを一覧表示します。

      gcloud resource-manager folders list --folder=FOLDER_ID

    • organizations/ORGANIZATION_ID

      Google Cloud 組織 ID を確認する方法

      コンソール

      Google Cloud 組織 ID を確認するには、次の手順を行います。

      1. Google Cloud コンソールに移動します。

        Google Cloud コンソールに移動

      2. メニューバーの切り替えボックスをクリックします。
      3. [選択元] ボックスをクリックして、組織を選択します。
      4. [すべて] タブをクリックします。 組織 ID が組織名の横に表示されます。

      gcloud CLI

      Google Cloud 組織 ID を取得するには、次のコマンドを使用します。

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

  • FEED_ID: 一意のアセット フィード識別子。

フィードは次のような形式で返されます。ここで、FULL_NAME_FEED_ID はリソースの親とともにフィード識別子を表します。

{
  "name": "FULL_NAME_FEED_ID",
  "assetTypes": ["ASSET_TYPES"],
  "assetNames": ["ASSET_NAMES"],
  "contentType": "CONTENT_TYPES",
  "feedOutputConfig": {
    "pubsubDestination": {
      "topic": "projects/PROJECT_ID/topics/TOPIC_ID"
    }
  },
  "condition": {
    "title": "CONDITION_TITLE",
    "description": "CONDITION_DESCRIPTION",
    "expression": "CONDITION_EXPRESSION"
  }
}

フィードの一覧表示

プロジェクト、フォルダ、組織に対するすべてのフィードを一覧表示するには、次のいずれかのリクエストを行います。

gcloud

プロジェクト

gcloud asset feeds list \
    --project=PROJECT_ID \
    --billing-project=BILLING_PROJECT_ID

次の値を指定します。

  • PROJECT_ID: メタデータがフィードに公開されているプロジェクトの ID。

  • BILLING_PROJECT_ID: 省略可。Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。詳細は、課金プロジェクトをお読みください

フォルダ

gcloud asset feeds list \
    --folder=FOLDER_ID \
    --billing-project=BILLING_PROJECT_ID

次の値を指定します。

  • FOLDER_ID: メタデータがフィードに公開されているフォルダの ID。

    Google Cloud フォルダ ID を確認する方法

    コンソール

    Google Cloud フォルダ ID を確認するには、次の手順を行います。

    1. Google Cloud コンソールに移動します。

      Google Cloud コンソールに移動

    2. メニューバーの切り替えボックスをクリックします。
    3. [選択元] ボックスをクリックして、組織を選択します。
    4. フォルダ名を検索します。フォルダ ID がフォルダ名の横に表示されます。

    gcloud CLI

    組織レベルの Google Cloud フォルダ ID を取得するには、次のコマンドを使用します。

    gcloud resource-manager folders list \
        --organization=$(gcloud organizations describe ORGANIZATION_NAME \
          --format="value(name.segment(1))") \
        --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
        --format="value(ID)"

    ここで、TOP_LEVEL_FOLDER_NAME は文字列の完全一致または部分一致です。--format オプションを削除すると、検出されたフォルダに関する詳細情報が表示されます。

    別のフォルダ内のフォルダの ID を取得するには、以下のとおりサブフォルダを一覧表示します。

    gcloud resource-manager folders list --folder=FOLDER_ID

  • BILLING_PROJECT_ID: 省略可。Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。詳細は、課金プロジェクトをお読みください

組織

gcloud asset feeds list \
    --organization=ORGANIZATION_ID \
    --billing-project=BILLING_PROJECT_ID

次の値を指定します。

  • ORGANIZATION_ID: メタデータがフィードに公開されている組織の ID。

    Google Cloud 組織 ID を確認する方法

    コンソール

    Google Cloud 組織 ID を確認するには、次の手順を行います。

    1. Google Cloud コンソールに移動します。

      Google Cloud コンソールに移動

    2. メニューバーの切り替えボックスをクリックします。
    3. [選択元] ボックスをクリックして、組織を選択します。
    4. [すべて] タブをクリックします。 組織 ID が組織名の横に表示されます。

    gcloud CLI

    Google Cloud 組織 ID を取得するには、次のコマンドを使用します。

    gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

  • BILLING_PROJECT_ID: 省略可。Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。詳細は、課金プロジェクトをお読みください

REST

curl -X GET \
     -H "X-Goog-User-Project: BILLING_PROJECT_ID" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     https://cloudasset.googleapis.com/v1/SCOPE/feeds

次の値を指定します。

  • BILLING_PROJECT_ID: 省略可。Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。詳細は、課金プロジェクトをお読みください

  • SCOPE: プロジェクト、フォルダ、組織がスコープになります。

    使用できる値は次のとおりです。

    • projects/PROJECT_ID

    • projects/PROJECT_NUMBER

      Google Cloud プロジェクト番号を確認する方法

      コンソール

      Google Cloud プロジェクト番号を確認するには、次の手順を行います。

      1. Google Cloud コンソールの [ダッシュボード] ページに移動します。

        ダッシュボードに移動

      2. メニューバーの切り替えボックスをクリックします。
      3. [選択元] ボックスで組織を選択し、プロジェクト名を検索します。
      4. プロジェクト名をクリックして、そのプロジェクトに切り替えます。プロジェクト番号が [プロジェクト情報] カードに表示されます。

      gcloud CLI

      Google Cloud プロジェクト番号を取得するには、次のコマンドを使用します。

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"

    • folders/FOLDER_ID

      Google Cloud フォルダ ID を確認する方法

      コンソール

      Google Cloud フォルダ ID を確認するには、次の手順を行います。

      1. Google Cloud コンソールに移動します。

        Google Cloud コンソールに移動

      2. メニューバーの切り替えボックスをクリックします。
      3. [選択元] ボックスをクリックして、組織を選択します。
      4. フォルダ名を検索します。フォルダ ID がフォルダ名の横に表示されます。

      gcloud CLI

      組織レベルの Google Cloud フォルダ ID を取得するには、次のコマンドを使用します。

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      ここで、TOP_LEVEL_FOLDER_NAME は文字列の完全一致または部分一致です。--format オプションを削除すると、検出されたフォルダに関する詳細情報が表示されます。

      別のフォルダ内のフォルダの ID を取得するには、以下のとおりサブフォルダを一覧表示します。

      gcloud resource-manager folders list --folder=FOLDER_ID

    • organizations/ORGANIZATION_ID

      Google Cloud 組織 ID を確認する方法

      コンソール

      Google Cloud 組織 ID を確認するには、次の手順を行います。

      1. Google Cloud コンソールに移動します。

        Google Cloud コンソールに移動

      2. メニューバーの切り替えボックスをクリックします。
      3. [選択元] ボックスをクリックして、組織を選択します。
      4. [すべて] タブをクリックします。 組織 ID が組織名の横に表示されます。

      gcloud CLI

      Google Cloud 組織 ID を取得するには、次のコマンドを使用します。

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

フィードの更新‏

フィードの属性を更新するには、update_mask で属性のパスを指定し、その属性の値を指定する必要があります。次のリクエストは、プロジェクトのフィードの assetNamestopic の値を更新します。

gcloud

プロジェクト

gcloud asset feeds update FEED_ID \
    --project=PROJECT_ID \
    --billing-project=BILLING_PROJECT_ID \
    --pubsub-topic="projects/PROJECT_ID/topics/TOPIC_ID" \
    --add-asset-names=ASSET_NAME_1,ASSET_NAME_2,...

次の値を指定します。

  • PROJECT_ID: メタデータがフィードに公開されているプロジェクトの ID。

  • BILLING_PROJECT_ID: 省略可。Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。詳細は、課金プロジェクトをお読みください

  • TOPIC_ID: 通知の公開先の Pub/Sub トピックの ID。

  • ASSET_NAME: 省略可。変更通知を受け取るアセットのフルネームのカンマ区切りのリスト。

フォルダ

gcloud asset feeds update FEED_ID \
    --folder=FOLDER_ID \
    --billing-project=BILLING_PROJECT_ID \
    --pubsub-topic="projects/PROJECT_ID/topics/TOPIC_ID" \
    --add-asset-names=ASSET_NAME_1,ASSET_NAME_2,...

次の値を指定します。

  • FOLDER_ID: メタデータがフィードに公開されているフォルダの ID。

    Google Cloud フォルダ ID を確認する方法

    コンソール

    Google Cloud フォルダ ID を確認するには、次の手順を行います。

    1. Google Cloud コンソールに移動します。

      Google Cloud コンソールに移動

    2. メニューバーの切り替えボックスをクリックします。
    3. [選択元] ボックスをクリックして、組織を選択します。
    4. フォルダ名を検索します。フォルダ ID がフォルダ名の横に表示されます。

    gcloud CLI

    組織レベルの Google Cloud フォルダ ID を取得するには、次のコマンドを使用します。

    gcloud resource-manager folders list \
        --organization=$(gcloud organizations describe ORGANIZATION_NAME \
          --format="value(name.segment(1))") \
        --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
        --format="value(ID)"

    ここで、TOP_LEVEL_FOLDER_NAME は文字列の完全一致または部分一致です。--format オプションを削除すると、検出されたフォルダに関する詳細情報が表示されます。

    別のフォルダ内のフォルダの ID を取得するには、以下のとおりサブフォルダを一覧表示します。

    gcloud resource-manager folders list --folder=FOLDER_ID

  • BILLING_PROJECT_ID: 省略可。Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。詳細は、課金プロジェクトをお読みください

  • PROJECT_ID: Pub/Sub トピックが配置されているプロジェクトの ID。

  • TOPIC_ID: 通知の公開先の Pub/Sub トピックの ID。

  • ASSET_NAME: 省略可。変更通知を受け取るアセットのフルネームのカンマ区切りのリスト。

組織

gcloud asset feeds update FEED_ID \
    --organization=ORGANIZATION_ID \
    --billing-project=BILLING_PROJECT_ID \
    --pubsub-topic="projects/PROJECT_ID/topics/TOPIC_ID" \
    --add-asset-names=ASSET_NAME_1,ASSET_NAME_2,...

次の値を指定します。

  • ORGANIZATION_ID: メタデータがフィードに公開されている組織の ID。

    Google Cloud 組織 ID を確認する方法

    コンソール

    Google Cloud 組織 ID を確認するには、次の手順を行います。

    1. Google Cloud コンソールに移動します。

      Google Cloud コンソールに移動

    2. メニューバーの切り替えボックスをクリックします。
    3. [選択元] ボックスをクリックして、組織を選択します。
    4. [すべて] タブをクリックします。 組織 ID が組織名の横に表示されます。

    gcloud CLI

    Google Cloud 組織 ID を取得するには、次のコマンドを使用します。

    gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

  • BILLING_PROJECT_ID: 省略可。Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。詳細は、課金プロジェクトをお読みください

  • PROJECT_ID: Pub/Sub トピックが配置されているプロジェクトの ID。

  • TOPIC_ID: 通知の公開先の Pub/Sub トピックの ID。

  • ASSET_NAME: 省略可。変更通知を受け取るアセットのフルネームのカンマ区切りのリスト。

REST

curl -X PATCH \
     -H "X-Goog-User-Project: BILLING_PROJECT_ID" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     -d '{
          "feed": {
            "assetNames": [
                "ASSET_NAME_1",
                "ASSET_NAME_2",
                "..."
              ],
            "feedOutputConfig": {
              "pubsubDestination": {
                "topic": "projects/PROJECT_ID/topics/TOPIC_ID"
              }
            }
          },
          "update_mask": {
            "paths": ["asset_names", "feed_output_config.pubsub_destination.topic"]
          }
        }' \
     https://cloudasset.googleapis.com/v1/SCOPE/feeds/FEED_ID

次の値を指定します。

  • BILLING_PROJECT_ID: 省略可。Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。詳細は、課金プロジェクトをお読みください

  • ASSET_NAME: 省略可。変更通知を受け取るアセットのフルネームのカンマ区切りのリスト。

  • PROJECT_ID: Pub/Sub トピックが配置されているプロジェクトの ID。

  • TOPIC_ID: 通知の公開先の Pub/Sub トピックの ID。

  • SCOPE: プロジェクト、フォルダ、組織がスコープになります。プロジェクト ID はサポートされていません。

    使用できる値は次のとおりです。

    • projects/PROJECT_NUMBER

      Google Cloud プロジェクト番号を確認する方法

      コンソール

      Google Cloud プロジェクト番号を確認するには、次の手順を行います。

      1. Google Cloud コンソールの [ダッシュボード] ページに移動します。

        ダッシュボードに移動

      2. メニューバーの切り替えボックスをクリックします。
      3. [選択元] ボックスで組織を選択し、プロジェクト名を検索します。
      4. プロジェクト名をクリックして、そのプロジェクトに切り替えます。プロジェクト番号が [プロジェクト情報] カードに表示されます。

      gcloud CLI

      Google Cloud プロジェクト番号を取得するには、次のコマンドを使用します。

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"

    • folders/FOLDER_ID

      Google Cloud フォルダ ID を確認する方法

      コンソール

      Google Cloud フォルダ ID を確認するには、次の手順を行います。

      1. Google Cloud コンソールに移動します。

        Google Cloud コンソールに移動

      2. メニューバーの切り替えボックスをクリックします。
      3. [選択元] ボックスをクリックして、組織を選択します。
      4. フォルダ名を検索します。フォルダ ID がフォルダ名の横に表示されます。

      gcloud CLI

      組織レベルの Google Cloud フォルダ ID を取得するには、次のコマンドを使用します。

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      ここで、TOP_LEVEL_FOLDER_NAME は文字列の完全一致または部分一致です。--format オプションを削除すると、検出されたフォルダに関する詳細情報が表示されます。

      別のフォルダ内のフォルダの ID を取得するには、以下のとおりサブフォルダを一覧表示します。

      gcloud resource-manager folders list --folder=FOLDER_ID

    • organizations/ORGANIZATION_ID

      Google Cloud 組織 ID を確認する方法

      コンソール

      Google Cloud 組織 ID を確認するには、次の手順を行います。

      1. Google Cloud コンソールに移動します。

        Google Cloud コンソールに移動

      2. メニューバーの切り替えボックスをクリックします。
      3. [選択元] ボックスをクリックして、組織を選択します。
      4. [すべて] タブをクリックします。 組織 ID が組織名の横に表示されます。

      gcloud CLI

      Google Cloud 組織 ID を取得するには、次のコマンドを使用します。

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

フィードの削除

アセットの変更通知を受け取りたくない場合は、次のコマンドを使用して、プロジェクトのフィードを削除します。

gcloud

プロジェクト

gcloud asset feeds delete FEED_ID \
    --project=PROJECT_ID \
    --billing-project=BILLING_PROJECT_ID

次の値を指定します。

  • PROJECT_ID: メタデータがフィードに公開されているプロジェクトの ID。

  • BILLING_PROJECT_ID: 省略可。Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。詳細は、課金プロジェクトをお読みください

フォルダ

gcloud asset feeds delete FEED_ID \
    --folder=FOLDER_ID \
    --billing-project=BILLING_PROJECT_ID

次の値を指定します。

  • FOLDER_ID: メタデータがフィードに公開されているフォルダの ID。

  • BILLING_PROJECT_ID: 省略可。Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。詳細は、課金プロジェクトをお読みください

組織

gcloud asset feeds delete FEED_ID \
    --organization=ORGANIZATION_ID \
    --billing-project=BILLING_PROJECT_ID

次の値を指定します。

  • ORGANIZATION_ID: メタデータがフィードに公開されている組織の ID。

  • BILLING_PROJECT_ID: 省略可。Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。詳細は、課金プロジェクトをお読みください

REST

curl -X DELETE \
     -H "X-Goog-User-Project: BILLING_PROJECT_ID" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     https://cloudasset.googleapis.com/v1/SCOPE/feeds/FEED_ID

次の値を指定します。

  • BILLING_PROJECT_ID: 省略可。Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。詳細は、課金プロジェクトをお読みください

  • SCOPE: プロジェクト、フォルダ、組織がスコープになります。プロジェクト ID はサポートされていません。

    使用できる値は次のとおりです。

    • projects/PROJECT_NUMBER

      Google Cloud プロジェクト番号を確認する方法

      コンソール

      Google Cloud プロジェクト番号を確認するには、次の手順を行います。

      1. Google Cloud コンソールの [ダッシュボード] ページに移動します。

        ダッシュボードに移動

      2. メニューバーの切り替えボックスをクリックします。
      3. [選択元] ボックスで組織を選択し、プロジェクト名を検索します。
      4. プロジェクト名をクリックして、そのプロジェクトに切り替えます。プロジェクト番号が [プロジェクト情報] カードに表示されます。

      gcloud CLI

      Google Cloud プロジェクト番号を取得するには、次のコマンドを使用します。

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"

    • folders/FOLDER_ID

      Google Cloud フォルダ ID を確認する方法

      コンソール

      Google Cloud フォルダ ID を確認するには、次の手順を行います。

      1. Google Cloud コンソールに移動します。

        Google Cloud コンソールに移動

      2. メニューバーの切り替えボックスをクリックします。
      3. [選択元] ボックスをクリックして、組織を選択します。
      4. フォルダ名を検索します。フォルダ ID がフォルダ名の横に表示されます。

      gcloud CLI

      組織レベルの Google Cloud フォルダ ID を取得するには、次のコマンドを使用します。

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      ここで、TOP_LEVEL_FOLDER_NAME は文字列の完全一致または部分一致です。--format オプションを削除すると、検出されたフォルダに関する詳細情報が表示されます。

      別のフォルダ内のフォルダの ID を取得するには、以下のとおりサブフォルダを一覧表示します。

      gcloud resource-manager folders list --folder=FOLDER_ID

    • organizations/ORGANIZATION_ID

      Google Cloud 組織 ID を確認する方法

      コンソール

      Google Cloud 組織 ID を確認するには、次の手順を行います。

      1. Google Cloud コンソールに移動します。

        Google Cloud コンソールに移動

      2. メニューバーの切り替えボックスをクリックします。
      3. [選択元] ボックスをクリックして、組織を選択します。
      4. [すべて] タブをクリックします。 組織 ID が組織名の横に表示されます。

      gcloud CLI

      Google Cloud 組織 ID を取得するには、次のコマンドを使用します。

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

トラブルシューティング

このセクションでは、一般的な問題の解決方法について説明します。

フィードを作成、更新の失敗

フィードの作成または更新が失敗した場合は、権限に問題がある可能性があります。フィードの作成または更新の各リクエストには、API の呼び出しに使用されたコンシューマ プロジェクト、モニタリング対象の親、通知を受信する宛先の Pub/Sub トピックの 3 つの部分があります。

フィードを作成または更新するには、次の権限が必要です。

  • 呼び出し元またはサービス アカウントには、ターゲット親(プロジェクト、フォルダ、または組織)のアセットの権限が必要です。

  • Cloud Asset API が有効なコンシューマ プロジェクトのアセット サービス アカウント(service-PROJECT_NUMBER@gcp-sa-cloudasset.iam.gserviceaccount.com)には、宛先の Pub/Sub トピックに対する pubsub.topics.publish 権限が必要です。

does not have permission を含むエラー メッセージは、ユーザーまたはサービス アカウントにアセット権限がないことを示していると考えられます。詳しくは、必要な権限をご覧ください。

Fail to use TOPIC_ID as feed output destination を含むエラー メッセージは、フィード出力先で指定したトピックにメッセージを公開する際に問題が発生した可能性があることを示しています。問題を解決するには:

  • Google Cloud CLI を使用している場合は、正しいプロジェクトを使用していることを確認してください。

    gcloud config list project
    
  • トピック名を正しく指定したか確認する

  • サービス アカウント(service-PROJECT_NUMBER@gcp-sa-cloudasset.iam.gserviceaccount.com)にトピックに対する pubsub.topics.publish 権限が付与されているかを確認します。ここで PROJECT_NUMBER は、フィードの作成元となる予定の Cloud Asset Inventory 対応プロジェクトのプロジェクト番号です。

    Google Cloud プロジェクト番号を確認する方法

    コンソール

    Google Cloud プロジェクト番号を確認するには、次の手順を行います。

    1. Google Cloud コンソールの [ダッシュボード] ページに移動します。

      ダッシュボードに移動

    2. メニューバーの切り替えボックスをクリックします。
    3. [選択元] ボックスで組織を選択し、プロジェクト名を検索します。
    4. プロジェクト名をクリックして、そのプロジェクトに切り替えます。プロジェクト番号が [プロジェクト情報] カードに表示されます。

    gcloud CLI

    Google Cloud プロジェクト番号を取得するには、次のコマンドを使用します。

    gcloud projects describe PROJECT_ID --format="value(projectNumber)"

リソースの更新または IAM ポリシーの更新を受信できない

リソースや IAM ポリシーの更新に関する通知が届かない場合は、問題の解決には次の構成の詳細を確認することをおすすめします。

  • アセットでメタデータが変更されているかを確認する。リアルタイム フィードは、サポートされているリソースタイプのメタデータが変更された場合にのみ更新を送信します。Cloud Storage バケットに新しいファイルをアップロードするなどの操作を行っても、メタデータの変更はトリガーされません。

  • アセットが、フィードで指定した条件(アセット名およびアセットタイプ)のうちいずれか 1 つを満たしているかを確認します。

  • ログを確認し、トピックの更新を公開するときにエラーが発生するかどうかを確かめます。

Cloud Logging を使用する

このセクションでは、Cloud Asset Inventory のリアルタイム フィード用の Logging を設定、表示する方法について説明します。

リアルタイム フィードが Pub/Sub を介してリソースまたは IAM ポリシーの更新を送信しない場合、Cloud Asset Inventory は Logging を介してエラーのステータスとメッセージを記録します。Logging はデフォルトで有効になっており、Google Cloud Observability に属します。Google Cloud Observability の料金をご覧ください。

リアルタイム フィードのログの表示

ログを表示するには、ログ エクスプローラーに移動します。

リアルタイム フィード のログは、Pub/Sub トピックによってインデックスに登録されます。すべてのログを表示するには:

  1. [すべてのフィールドを検索] ボックスの横にある [リソース] コンボボックスをクリックします。

  2. Cloud Pub/Sub Topic を検索してから、Cloud Pub/Sub トピックのリソースタイプをクリックします。

  3. 表示するトピック ID をクリックします。

  4. [適用] をクリックします。

ログフィールドには UTF-8 文字エンコーディングが適用されます。UTF-8 以外の文字列は、疑問符に置き換えられます。

ログに記録される情報

リアルタイム フィードのログエントリには、以下の種類の情報が含まれています。

  • 重大度、プロジェクト ID、プロジェクト番号、タイムスタンプなど、ほとんどの Google Cloud ログで表示される一般情報。

  • jsonPayload のリアルタイム フィードのログ フィールド。アセット名、フィード出力の構成、リソースの公開または IAM ポリシーの更新時のエラー ステータスが含まれます。

次の表に、各フィールドにどのような種類の情報が格納されるかを示します。

フィールド データタイプと説明
name

string

フィードのフルネーム。形式は次のいずれかです。

  • projects/PROJECT_ID/feeds/FEED_ID
  • folders/FOLDER_ID/feeds/FEED_ID
  • organizations/ORGANIZATION_ID/feeds/FEED_ID
asset_name

string

更新情報を受け取るアセットのフルネーム。次に例を示します。

//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1

詳細については、リソース名をご覧ください。

feed_output_config

FeedOutputConfig

アセットの更新の公開場所を定義するフィード出力構成。

condition

Expr

アセットの更新を公開するかどうかを判定するフィード条件。

error_status

Status

アセットの更新をフィードに公開できない場合のステータス。