インベントリ レポートの作成と管理

このページでは、特定のバケット内のすべてのオブジェクトのメタデータの概要を作成できるように、インベントリ レポートの構成を作成し、生成されたインベントリ レポートを管理する方法について説明します。インベントリ レポートの概要については、Storage Insights のインベントリ レポートの概要のドキュメントをご覧ください。

始める前に

必要なロールを取得する

インベントリ レポートの作成と管理に必要な権限を取得するには、インベントリ レポートを管理するプロジェクトまたはソースバケットと宛先バケットに対する次の IAM ロールの付与を管理者に依頼します。

  • インベントリ レポートの構成を作成して管理するには:

    • ソースバケットと宛先バケットに対する roles/storage.admin

    • プロジェクトに対する roles/storageinsights.admin

  • インベントリ レポートを表示してダウンロードするには:

    • 宛先バケットに対する roles/storage.objectViewer

    • プロジェクトに対する roles/storageinsights.viewer

これらの事前定義ロールには、インベントリ レポートと構成を作成するために必要な権限が含まれています。必要な権限を正確に確認するには、「必要な権限」セクションを開いてください。

必要な権限

インベントリ レポートの構成を作成して管理するには:

  • ソースバケットに対する storage.buckets.get
  • ソースバケットに対する storage.objects.list
  • ソースバケットに対する storage.buckets.getObjectInsights
  • 宛先バケットに対する storage.buckets.get
  • 宛先バケットに対する storage.objects.create
  • プロジェクトに対する storageinsights.reportConfigs.delete
  • プロジェクトに対する storageinsights.reportConfigs.get
  • プロジェクトに対する storageinsights.reportConfigs.create
  • プロジェクトに対する storageinsights.reportConfigs.list
  • プロジェクトに対する storageinsights.reportConfigs.update

インベントリ レポートを表示してダウンロードするには:

  • 宛先バケットに対する storage.objects.get
  • プロジェクトに対する storageinsights.reportDetails.get
  • プロジェクトに対する storageinsights.reportDetails.list

他の事前定義ロールでこれらの権限を取得することもできます。どのロールがどの権限に関連付けられているかを確認するには、Cloud Storage に適用される IAM のロールをご覧ください。

ロールを使用してバケットへのアクセスを制御する手順については、IAM を使用するをご覧ください。ロールを使用してプロジェクトへのアクセスを制御する手順については、アクセスを管理するをご覧ください。

Storage Insights API を有効にする

コンソール

storageinsights.googleapis.com API を有効にするには、サービスを有効にするの手順に沿って操作します。

コマンドライン

現在のプロジェクトで Storage Insights API を有効にするには、次のコマンドを実行します。

gcloud services enable storageinsights.googleapis.com

Google Cloud プロジェクトのサービスを有効にする方法について詳しくは、サービスの有効化と無効化をご覧ください。

REST API

JSON API

Google Cloud コンソールまたは Google Cloud CLI を使用して、Storage Insights API を有効にします。

インベントリ レポートの構成を作成する

コンソール

インベントリ レポートの構成を作成する手順は次のとおりです。

  1. Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。

    [バケット] に移動

  2. バケットのリストで、ソースバケットとして使用するバケットの名前をクリックします。

  3. [バケットの詳細] ページで、[インベントリ レポート] タブをクリックします。

  4. [レポート構成を作成] をクリックします。

  5. [レポート構成の指定] セクションで、インベントリ レポート構成の表示名を作成します。表示名には最大 256 文字を使用できます。

  6. [メタデータ フィールドの選択] セクションで、インベントリ レポートに含めるメタデータ フィールドを選択します。

  7. [続行] をクリックします。

  8. [ファイル形式の選択] セクションで、インベントリ レポートを生成するファイル形式を選択します。

  9. [転送先バケットの選択] セクションで、転送先バケットとして使用するバケットを選択します。

    [宛先のパスを入力(省略可)] セクションで、インベントリ レポートを生成する宛先パスを指定できます。

  10. [スケジュールのオプション] セクションで、レポートを生成する頻度、開始日、終了日を指定します。

  11. [作成] をクリックします。

    [レポート構成の詳細] ページが表示されます。生成されたインベントリ レポートのメタデータがページに表示されます。

コマンドライン

  1. インベントリ レポート構成を作成するには、gcloud storage insights inventory-reports create コマンドを実行します。

    gcloud storage insights inventory-reports create SOURCE_BUCKET_URL \
      --csv-separator=SEPARATOR \
      --csv-delimiter=DELIMITER \
      --[no]-csv-header \
      --parquet \
      --display-name=DISPLAY_NAME \
      --destination=DESTINATION_PATH \
      --metadata-fields=METADATA_FIELD \
      --schedule-starts=START_DATE \
      --schedule-repeats=FREQUENCY \
      --schedule-repeats-until=END_DATE

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

    • SOURCE_BUCKET_URL は、ソースバケットの URL に置き換えます。例: gs://my_example_source_bucket

    • SEPARATOR は、インベントリ レポートの CSV ファイルでレコードの区切りを表す文字で置き換えます。\n または \r\n のいずれかを指定する必要があります。デフォルト値は \n です。省略可。--csv-separator フラグが使用されている場合、--parquet は使用できません。

    • DELIMITER は、インベントリ レポートの CSV ファイルでフィールドの区切りを表す文字で置き換えます。値には 1 つの文字を含めることができます。SEPARATOR と同じ値にすることはできません。デフォルト値は , です。省略可。--csv-delimiter が使用されている場合、--parquet は使用できません。

    • --[no]-csv-header は、インベントリ レポートの CSV ファイルにヘッダーが含まれているかどうかを示すフラグに置き換えます。ヘッダーを含める場合は --csv-header を使用し、ヘッダーを除外する場合は --no-csv-header を使用します。いずれかのフラグが使用されている場合、--parquet は使用できません。

    • DISPLAY_NAME は、インベントリ レポートの構成の名前で置き換えます。この名前は編集可能です。省略可。

    • --parquet は、CSV ではなく Apache Parquet 形式でインベントリ レポートを生成するフラグに置き換えます。これを使用した場合、--csv-delimiter--csv-separator--[no-]csv-header は使用できません。

    • DESTINATION_PATH は、インベントリ レポートが生成されるバケットまたはそのバケット内のフォルダに置き換えます。例: gs://my_example_destination_bucketgs://my_example_destination_bucket/path/to/inventory/report

      バケット内のフォルダのパスを指定する場合は、パスにキーワードを使用できます。これらは、レポートの生成時に対応する値に置き換えられます。これにより、Hive パーティション分割形式でレポートを生成できるため、追加処理を行うことなく、BigQuery でのデータの読み込みやクエリを実行できます。

    • METADATA_FIELD は、インベントリ レポートに含めるメタデータ フィールドのカンマ区切りのリストに置き換えます。

    • START_DATE は、インベントリ レポートの生成を開始する日付(UTC)に置き換えます。例: 2022-01-15

    • FREQUENCY は、インベントリ レポートを生成する頻度に置き換えます。値は dailyweekly です。

    • END_DATE は、インベントリ レポートの生成を停止する日付(UTC)に置き換えます。START_DATE より後の日付にする必要があります。たとえば、2022-02-15 を指定した場合、2022 年 2 月 16 日以降、インベントリ レポートは生成されなくなります。

クライアント ライブラリ

Java

詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。

Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。


import com.google.cloud.storageinsights.v1.CSVOptions;
import com.google.cloud.storageinsights.v1.CloudStorageDestinationOptions;
import com.google.cloud.storageinsights.v1.CloudStorageFilters;
import com.google.cloud.storageinsights.v1.CreateReportConfigRequest;
import com.google.cloud.storageinsights.v1.FrequencyOptions;
import com.google.cloud.storageinsights.v1.LocationName;
import com.google.cloud.storageinsights.v1.ObjectMetadataReportOptions;
import com.google.cloud.storageinsights.v1.ReportConfig;
import com.google.cloud.storageinsights.v1.StorageInsightsClient;
import com.google.common.collect.ImmutableList;
import com.google.type.Date;
import java.io.IOException;

public class CreateInventoryReportConfig {

  public static void createInventoryReportConfig(
      String projectId, String bucketLocation, String sourceBucket, String destinationBucket)
      throws IOException {
    try (StorageInsightsClient storageInsightsClient = StorageInsightsClient.create()) {
      ReportConfig reportConfig =
          ReportConfig.newBuilder()
              .setDisplayName("Example inventory report configuration")
              .setFrequencyOptions(
                  FrequencyOptions.newBuilder()
                      .setFrequency(FrequencyOptions.Frequency.WEEKLY)
                      .setStartDate(Date.newBuilder().setDay(15).setMonth(8).setYear(3022).build())
                      .setEndDate(Date.newBuilder().setDay(15).setMonth(9).setYear(3022).build())
                      .build())
              .setCsvOptions(
                  CSVOptions.newBuilder()
                      .setDelimiter(",")
                      .setRecordSeparator("\n")
                      .setHeaderRequired(true)
                      .build())
              .setObjectMetadataReportOptions(
                  ObjectMetadataReportOptions.newBuilder()
                      .addAllMetadataFields(ImmutableList.of("project", "name", "bucket"))
                      .setStorageFilters(
                          CloudStorageFilters.newBuilder().setBucket(sourceBucket).build())
                      .setStorageDestinationOptions(
                          CloudStorageDestinationOptions.newBuilder()
                              .setBucket(destinationBucket)
                              .build())
                      .build())
              .build();
      CreateReportConfigRequest request =
          CreateReportConfigRequest.newBuilder()
              .setParent(LocationName.of(projectId, bucketLocation).toString())
              .setReportConfig(reportConfig)
              .build();
      ReportConfig response = storageInsightsClient.createReportConfig(request);
      System.out.println("Created inventory report config with name " + response.getName());
    }
  }
}

REST API

JSON API

インベントリ レポートの構成を作成する手順は次のとおりです。

  1. Authorization ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。

    OAuth 2.0 Playground を使用してアクセス トークンを作成し、Authorization ヘッダーに含めることもできます。

  2. 次の情報が含まれる JSON ファイルを作成します。特に指定しない限り、すべてのフィールドは必須となります。

    {
      "display_name": "DISPLAY_NAME",
      "frequency_options": {
        "frequency": "FREQUENCY",
        "start_date": "START_DATE",
        "end_date": "END_DATE",
      },
      "csv_options": {
        "record_separator": "RECORD_SEPARATOR",
        "delimiter": "DELIMITER",
        "header_required": HEADER_REQUIRED
      },
      "object_metadata_report_options": {
         "metadata_fields": [
          "METADATA_FIELD",
          ...
        ],
        "storage_filters": {
          "bucket": "SOURCE_BUCKET_NAME"
        },
        "storage_destination_options": {
          "bucket": "DESTINATION_BUCKET_NAME",
          "destination_path": "DESTINATION_PATH"
        }
      }
    }

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

    • DISPLAY_NAME は、インベントリ レポートの構成の名前で置き換えます。これは編集可能な名前です。256 文字以内にする必要があります。

    • FREQUENCY は、インベントリ レポートの生成頻度で置き換えます。値は DAILYWEEKLY です。

    • START_DATE は、インベントリ レポートの生成を開始する日付(UTC)に置き換えます。今日の日付や過去の日付は指定できません。値は、キー daymonthyear を含むオブジェクトにする必要があります。例: {"day": 15, "month": 8, "year": 2022}

    • END_DATE は、インベントリ レポートの生成を停止する日付(UTC)に置き換えます。値は、キー daymonthyear を含むオブジェクトにする必要があります。たとえば、{"day": 15, "month": 9, "year": 2022} を指定した場合、2022 年 9 月 16 日以降、インベントリ レポートは生成されなくなります。

    • RECORD_SEPARATOR は、インベントリ レポートの CSV ファイルでレコードの区切りを表す文字で置き換えます。\n または \r\n のいずれかを指定する必要があります。デフォルト値は \n です。このフィールドは省略可能です。

    • DELIMITER は、インベントリ レポートの CSV ファイルでフィールドの区切りを表す文字で置き換えます。値には 1 つの文字を含めることができます。RECORD_SEPARATOR と同じ値にすることはできません。デフォルト値は , です。このフィールドは省略可能です。

    • HEADER_REQUIRED は、CSV ファイルにヘッダーを含めるかどうかを示すブール値で置き換えます。このフィールドは省略可能です。

    • SOURCE_BUCKET_NAME は、インベントリ レポートを生成するオブジェクトを含むソースバケットの名前に置き換えます。例: my_example_bucket

    • METADATA_FIELD は、インベントリ レポートに含めるメタデータ フィールドのカンマ区切りのリストに置き換えます。

    • DESTINATION_BUCKET_NAME は、インベントリ レポートが生成されて保存される転送先バケットの名前に置き換えます。例: my_example_destination_bucket

    • DESTINATION_PATH は、生成されたインベントリ レポートの宛先バケットのパスに置き換えます。このフィールドは省略可能です。

      バケット内のフォルダのパスを指定する場合は、パスにキーワードを使用できます。これらは、レポートの生成時に対応する値に置き換えられます。これにより、Hive パーティション分割形式でレポートを生成できるため、追加処理を行うことなく、BigQuery でのデータの読み込みやクエリを実行できます。

    たとえば、次のコードサンプルでは、「インベントリ レポートの構成例」という名前のインベントリ レポートの構成を作成します。この構成では毎週レポートを生成します。

    {
      "display_name": "Example inventory report configuration",
      "frequency_options": {
        "frequency": "WEEKLY",
        "start_date": {
          "day": 15,
          "month": 8,
          "year": 2022
        },
        "end_date": {
          "day": 15,
          "month": 9,
          "year": 2022
        },
      },
      "csv_options": {
        "record_separator": "\n",
        "delimiter": ",",
        "header_required": true
      },
      "object_metadata_report_options": {
         "metadata_fields": [
          "project",
          "name",
          "bucket"
        ],
        "storage_filters": {
          "bucket": "example_source_bucket"
        },
        "storage_destination_options": {
          "bucket": "example_destination_bucket"
        }
      }
    }
  3. インベントリ レポートの構成を適用するには、cURL を使用して、Insert ReportConfig リクエストで JSON API を呼び出します。

    curl -X POST --data-binary @JSON_FILE_NAME \
    "https://storageinsights.googleapis.com/v1/projects/YOUR_PROJECT/locations/LOCATION/reportConfigs" \
      --header "Authorization: Bearer $(gcloud auth print-access-token)" \
      --header "Accept: application/json" \
      --header "Content-Type: application/json" \
    

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

    • JSON_FILE_NAME は、前の手順で作成した JSON ファイルのパスに置き換えます。

    • YOUR_PROJECT は、ソースバケットと宛先バケットが存在するプロジェクトの名前で置き換えます。

    • LOCATION は、ソースバケットと宛先バケットのロケーションで置き換えます。例: us-west1

サービス エージェントに必要なロールを付与する

インベントリ レポートの構成を初めて設定するときに、プロジェクト レベルのサービス エージェントが自動的に作成されます。サービス エージェントは命名形式 service-PROJECT_NUMBER@gcp-sa-storageinsights.iam.gserviceaccount.com に従います。この名前は、[Google 提供のロール付与を含みます] チェックボックスが選択されているときに、Google Cloud コンソールの [IAM] ページに表示されます。

Storage Insights でインベントリ レポートを生成して書き込むようにするには、サービス エージェントに次の IAM ロールを付与するよう管理者に依頼してください。

  • ソースバケットに対する roles/storage.insightsCollectorServicestorage.buckets.getObjectInsights 権限と storage.buckets.get 権限を含む)
  • 転送先バケットに対する roles/storage.objectCreatorstorage.objects.create 権限を含む)

ロールの付与手順については、IAM を使用するをご覧ください。roles/storage.insightsCollectorService ロールを付与するには、Google Cloud コンソールまたは Google Cloud CLI を使用します。次に例を示します。

gcloud storage buckets add-iam-policy-binding SOURCE_BUCKET_URL \
    --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-storageinsights.iam.gserviceaccount.com \
    --role=roles/storage.insightsCollectorService

必要な権限がサービス エージェントに付与されてから、最初のインベントリ レポートが転送先バケットに書き込まれるまでに最大で 24 時間かかります。

インベントリ レポートの構成を編集する

インベントリ レポートの構成が作成されたら、構成の特定のプロパティを変更できます。

コンソール

インベントリ レポートの構成を編集する手順は次のとおりです。

  1. Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。

    [バケット] に移動

  2. バケットのリストで、編集するインベントリ レポート構成を含むソースバケットの名前をクリックします。

  3. 転送元バケットの [バケットの詳細] ページで、[インベントリ レポート] タブをクリックします。

  4. 編集するインベントリ レポート構成の構成名をクリックします。

  5. 表示された [レポート構成の詳細] ページで、 [編集] ボタンを使用して目的のプロパティを編集します。

コマンドライン

インベントリ レポートの構成を編集する手順は次のとおりです。

  1. 編集するインベントリ レポートの構成名を確認するには、gcloud storage insights inventory-reports list コマンドを使用して、ソースバケット内のすべてのインベントリ構成を一覧表示します。

    gcloud storage insights inventory-reports list \
      --source=SOURCE_BUCKET \
      --filter=EXPRESSION \
      --page-size=SIZE \
      --sort-by=FIELD \
      --format="yaml(name)"

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

    • SOURCE_BUCKET は、インベントリ レポートの構成を含むソースバケットの URL で置き換えます。

    • EXPRESSION は、一覧表示する各リソース項目に適用するブール値フィルタで置き換えます。式が True と評価された場合、項目がリストされます。フィルタ式の詳細と例を表示するには、$ gcloud topic filters を実行します。

    • SIZE は、1 ページあたりの最大リソース数で置き換えます。デフォルト値は 50 です。

    • FIELD は、並べ替えるリソース フィールド キー名のカンマ区切りのリストで置き換えます。デフォルトの順序は昇順です。フィールドを降順で並べ替えるには、フィールドの先頭に ~ を付けます。

    1. gcloud storage insights inventory-reports update コマンドを使用して、更新するインベントリ レポートの構成フィールドを編集します。次の例では、インベントリ レポートを Apache Parquet 形式で毎日生成するように、インベントリ レポートの構成を更新しています。

      gcloud storage insights inventory-reports update CONFIG_NAME \
      --parquet \
      --schedule-repeats="daily"

クライアント ライブラリ

Java

詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。

Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。


import com.google.cloud.storageinsights.v1.ReportConfig;
import com.google.cloud.storageinsights.v1.ReportConfigName;
import com.google.cloud.storageinsights.v1.StorageInsightsClient;
import com.google.cloud.storageinsights.v1.UpdateReportConfigRequest;
import com.google.protobuf.FieldMask;
import java.io.IOException;

public class EditInventoryReportConfig {


  public static void editInventoryReportConfig(
          String projectId, String location, String inventoryReportConfigUuid) throws IOException {
    try (StorageInsightsClient storageInsightsClient = StorageInsightsClient.create()) {
      ReportConfigName name = ReportConfigName.of(projectId, location, inventoryReportConfigUuid);
      ReportConfig reportConfig = storageInsightsClient.getReportConfig(name);

      // Set any other fields you want to update here
      ReportConfig updatedReportConfig =
              reportConfig.toBuilder().setDisplayName("Updated Display Name").build();

      storageInsightsClient.updateReportConfig(
              UpdateReportConfigRequest.newBuilder()
                      // Add any fields that you want to update to the update mask, in snake case
                      .setUpdateMask(FieldMask.newBuilder().addPaths("display_name")
                              .build())
                      .setReportConfig(updatedReportConfig).build());

      System.out.println("Edited inventory report config with name " + name);
    }
  }
}

REST API

JSON API

インベントリ レポートの構成を編集する手順は次のとおりです。

  1. Authorization ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。

    OAuth 2.0 Playground を使用してアクセス トークンを作成し、Authorization ヘッダーに含めることもできます。

  2. 編集するインベントリ レポートの構成名を取得するには、cURL を使用して、Get ReportConfig リクエストで JSON API を呼び出します。

    curl --request GET \
    "https://storageinsights.googleapis.com/v1/projects/YOUR_PROJECT/locations/LOCATION/reportConfigs?" \
      --header "Authorization: Bearer $(gcloud auth print-access-token)" \
      --header "Accept: application/json" \
      --header "Content-Type: application/json" \
    

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

    • YOUR_PROJECT は、ソースバケットと宛先バケットが存在するプロジェクトの名前で置き換えます。

    • LOCATION は、ソースバケットと宛先バケットのロケーションで置き換えます。例: us-west1

    特定のソースバケットのすべてのインベントリ レポートの構成を取得するには、filter クエリ パラメータをリクエストに追加します。

    curl --request GET \
    "https://storageinsights.googleapis.com/v1/projects/YOUR_PROJECT/locations/LOCATION/reportConfigs?filter=objectMetadataReportOptions.storageFilters.bucket=BUCKET_NAME" \
      --header "Authorization: Bearer $(gcloud auth print-access-token)" \
      --header "Accept: application/json" \
      --header "Content-Type: application/json" \
    

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

    • YOUR_PROJECT は、ソースバケットと宛先バケットが存在するプロジェクトの名前で置き換えます。
    • LOCATION は、ソースバケットと宛先バケットのロケーションで置き換えます。例: us-west1
    • BUCKET_NAME は、編集するインベントリ レポート構成を含むソースバケットの名前で置き換えます。
  3. 編集するプロパティへの変更を含む JSON ファイルを作成します。次の例では、インベントリ レポートを Apache Parquet 形式で毎日生成するように、インベントリ レポートの構成を更新しています。

    {
      "ReportConfig": {
        "frequency_options": {
          "frequency": "DAILY"
        },
        "parquet_options": {
        }
      }
  4. インベントリ レポートの構成を適用するには、cURL を使用して、Patch ReportConfig リクエストで JSON API を呼び出します。

    curl --request PATCH \
    "https://storageinsights.googleapis.com/v1/projects/YOUR_PROJECT/locations/LOCATION/reportConfigs/REPORT_CONFIG_UUID" \
      --header "Authorization: Bearer $(gcloud auth print-access-token)" \
      --header "Accept: application/json" \
      --header "Content-Type: application/json" \
      --data-binary "@JSON_FILE_NAME.json" \
    

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

    • YOUR_PROJECT は、ソースバケットと宛先バケットが存在するプロジェクトの名前で置き換えます。

    • LOCATION は、ソースバケットと宛先バケットのロケーションで置き換えます。例: us-west1

    • REPORT_CONFIG_UUID は、インベントリ レポートの構成の自動生成 UUID で置き換えます。

インベントリ レポートの構成を一覧表示する

コンソール

ソースバケット内のインベントリ レポート構成を一覧表示するには、次の操作を行います。

  1. Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。

    [バケット] に移動

  2. バケットのリストで、表示するインベントリ レポート構成を含むソースバケットの名前をクリックします。

  3. [バケットの詳細] ページで、[インベントリ レポート] タブをクリックします。

    ソースバケットのインベントリ レポート構成が表示されます。

コマンドライン

gcloud storage insights inventory-reports list コマンドを使用すると、ソースバケット内のすべてのインベントリ構成を一覧表示できます。

gcloud storage insights inventory-reports list \
  --source=SOURCE_BUCKET \
  --filter=EXPRESSION \
  --page-size=SIZE \
  --sort-by=FIELD \
  --format="yaml(name)"
  

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

  • SOURCE_BUCKET は、インベントリ レポートの構成を含むソースバケットの URL で置き換えます。

  • EXPRESSION は、一覧表示する各リソース項目に適用するブール値フィルタで置き換えます。式が True と評価された場合、項目がリストされます。フィルタ式の詳細と例を表示するには、$ gcloud topic filters を実行します。

  • SIZE は、1 ページあたりの最大リソース数で置き換えます。デフォルト値は 50 です。

  • FIELD は、並べ替えるリソース フィールド キー名のカンマ区切りのリストで置き換えます。デフォルトの順序は昇順です。フィールドを降順で並べ替えるには、フィールドの先頭に ~ を付けます。

クライアント ライブラリ

Java

詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。

Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。


import com.google.cloud.storageinsights.v1.LocationName;
import com.google.cloud.storageinsights.v1.ReportConfig;
import com.google.cloud.storageinsights.v1.StorageInsightsClient;
import java.io.IOException;

public class ListInventoryReportConfigs {


  public static void listInventoryReportConfigs(String projectId, String location)
      throws IOException {
    try (StorageInsightsClient storageInsightsClient = StorageInsightsClient.create()) {
      System.out.println(
          "Printing inventory report configs in project "
              + projectId
              + " and location "
              + location);
      for (ReportConfig config :
          storageInsightsClient
              .listReportConfigs(LocationName.of(projectId, location))
              .iterateAll()) {
        System.out.println(config.getName());
      }
    }
  }
}

REST API

JSON API

  1. Authorization ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。

    OAuth 2.0 Playground を使用してアクセス トークンを作成し、Authorization ヘッダーに含めることもできます。

  2. 特定のロケーションのプロジェクト内のすべてのインベントリ レポートの構成を一覧表示するには、インベントリ レポート構成を一覧表示するリクエストを使用します。

    curl --request GET \
    "https://storageinsights.googleapis.com/v1/projects/YOUR_PROJECT/locations/LOCATION/reportConfigs?" \
      --header "Authorization: Bearer $(gcloud auth print-access-token)" \
      --header "Accept: application/json" \
      --header "Content-Type: application/json" \
    

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

    • YOUR_PROJECT は、ソースバケットと宛先バケットが存在するプロジェクトの名前で置き換えます。

    • LOCATION は、ソースバケットと宛先バケットのロケーションで置き換えます。例: us-west1

    特定のソースバケットのすべてのインベントリ レポートの構成を一覧表示するには、filter クエリ パラメータをリクエストに追加します。

    curl --request GET \
    "https://storageinsights.googleapis.com/v1/projects/YOUR_PROJECT/locations/LOCATION/reportConfigs?filter=objectMetadataReportOptions.storageFilters.bucket=BUCKET_NAME" \
      --header "Authorization: Bearer $(gcloud auth print-access-token)" \
      --header "Accept: application/json" \
      --header "Content-Type: application/json" \
    

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

    • YOUR_PROJECT は、ソースバケットと宛先バケットが存在するプロジェクトの名前で置き換えます。

    • LOCATION は、ソースバケットと宛先バケットのロケーションで置き換えます。例: us-west1

    • BUCKET_NAME は、一覧表示するインベントリ レポート構成を含むソースバケットの名前で置き換えます。

インベントリ レポートをダウンロードする

コンソール

レポートを個別にダウンロードする

インベントリ レポートは宛先バケット内に生成され、オブジェクトとして保存されるため、通常のオブジェクトと同様にダウンロードできます。

インベントリ レポートをダウンロードするには、次の手順を完了します。

  1. Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。

    [バケット] に移動

  2. バケットのリストで、ダウンロードするインベントリ レポートを含む転送先バケットの名前をクリックします。

  3. [バケットの詳細] ページで、[オブジェクト] タブが選択されていることを確認します。

  4. ダウンロードするインベントリ レポートに関連付けられた [ ダウンロード] をクリックします。

転送先バケットがわからない場合は、生成元のインベントリ レポート構成を通してインベントリ レポートをダウンロードすることもできます。

  1. Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。

    [バケット] に移動

  2. バケットのリストで、ダウンロードするレポートを生成したインベントリ レポート構成を含む、転送元バケットの名前をクリックします。

  3. [バケットの詳細] ページで、インベントリ レポート構成の構成名をクリックします。

  4. 表示される [レポート構成の詳細] ページで、[インベントリ レポートの履歴] セクションに移動し、ダウンロードするインベントリ レポートの宛先オブジェクトのパスをクリックします。

    インベントリ レポートを含む転送先バケットの [バケットの詳細] ページが表示されます。

  5. ダウンロードするインベントリ レポートに関連付けられた [ ダウンロード] をクリックします。

レポート シャードをダウンロードする

1 つ以上のシャードに分割されたインベントリ レポートをダウンロードするには、次の手順を完了します。

  1. Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。

    [バケット] に移動

  2. バケットのリストで、インベントリ レポート構成の作成時に指定した転送先バケットの名前をクリックします。

  3. [バケットの詳細] ページで、マニフェスト ファイルが存在するかどうかを確認します。マニフェスト ファイルが存在する場合は、インベントリ レポートのすべてのシャードが生成されています。

    マニフェスト ファイルには fc95c52f-157a-494f-af4a-d4a53a69ba66_2022-11-30T00:00_manifest.json のような名前が付いています。

  4. 転送先バケットで、マニフェスト ファイルに関連付けられた [ダウンロード] をクリックします。ダウンロードするシャード ファイルの名前を report_shards_file_names フィールドからメモします。

  5. 転送先バケットで、ダウンロードするシャード ファイルに関連付けられた [ ダウンロード] をクリックします。

コマンドライン

レポートを個別にダウンロードする

インベントリ レポートをダウンロードするには、次の手順を完了します。

  1. インベントリ レポートの構成によって生成されたすべてのインベントリ レポートを一覧表示し、その REPORT_DETAIL_ID を取得するには、gcloud storage insights inventory-reports details list コマンドを使用します。

    gcloud storage insights inventory-reports details list CONFIG_NAME \
      --filter=EXPRESSION \
      --page-size=SIZE \
      --sort-by=FIELD

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

    • CONFIG_NAME は、インベントリ レポートの構成の一意の名前(projects/PROJECT/locations/LOCATION/reportConfigs/REPORT_CONFIG_UUID 形式)で置き換えます。

    • EXPRESSION は、一覧表示する各リソース項目に適用するブール値フィルタで置き換えます。式が True と評価された場合、そのアイテムがリストされます。フィルタ式の詳細と例を表示するには、$ gcloud topic filters を実行します。

    • SIZE は、1 ページあたりの最大リソース数で置き換えます。デフォルト値は 50 です。

    • FIELD は、並べ替えるリソース フィールド キー名のカンマ区切りのリストで置き換えます。デフォルトの順序は昇順です。フィールドを降順で並べ替えるには、フィールドの先頭に ~ を付けます。

    成功した場合、コマンドは次のような出力を返します。

    REPORT_DETAIL_ID            SNAPSHOT_TIME
    Report_2023-04-10T00-00     2023-04-10T00:53:03Z
    Report_2023-04-12T00-00     2023-04-12T00:52:54Z
    Report_2023-04-05T00-00     2023-04-05T00:53:01Z
  2. インベントリ レポートをダウンロードするには、まず ReportDetail オブジェクトの reportPathPrefix プロパティを取得する必要があります。レポートの reportPathPrefix を取得するには、gcloud storage insights inventory-reports details describe コマンドを使用します。

    gcloud storage insights inventory-reports details describe REPORT_DETAIL_NAME

    REPORT_DETAIL_NAME は、インベントリ レポートの名前に置き換えます。形式は projects/PROJECT/locations/LOCATION/reportConfigs/REPORT_CONFIG_UUID/reportDetails/REPORT_DETAIL_ID です。

レポート シャードをダウンロードする

1 つ以上のシャードに分割されたインベントリ レポートをダウンロードするには、次の手順を完了します。

  1. gcloud storage cp コマンドを使用して、インベントリ レポートのマニフェスト ファイルをダウンロードします。

    gcloud storage cp gs://BUCKET_NAME/MANIFEST_FILE_NAME DOWNLOAD_PATH

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

    • BUCKET_NAME は、宛先バケットの名前に置き換えます。

    • MANIFEST_FILE_NAME は、転送先バケットのマニフェスト ファイルの名前に置き換えます。次の命名規則を使用します。

      REPORT_CONFIG_UUID_TARGET_DATETIME_manifest.json

      ここで

      • REPORT_CONFIG_UUID は、ダウンロードするレポート シャードを生成したインベントリ レポート構成の自動生成 UUID です。

      • TARGET_DATETIME は、インベントリ レポートが生成された日時です。

      例: fc95c52f-157a-494f-af4a-d4a53a69ba66_2022-11-30T00:00_manifest.json

    • DOWNLOAD_PATH は、インベントリ レポートを保存するファイル システムのパスに置き換えます。例: ./example_report.csv

  2. シャード ファイルをダウンロードするには、gcloud storage cp コマンドを使用します。

    gcloud storage cp gs://BUCKET_NAME/SHARD_FILE_NAME DOWNLOAD_PATH

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

    • BUCKET_NAME は、宛先バケットの名前に置き換えます。

    • SHARD_FILE_NAME は、ダウンロードするシャード ファイルの URL エンコードされた名前に置き換えます。例: fc95c52f-157a-494f-af4a-d4a53a69ba66_2022-11-30T00:54_0.csv

    • DOWNLOAD_PATH は、インベントリ レポートを保存するファイル システムのパスに置き換えます。例: ./example_report.csv

クライアント ライブラリ

Java

詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。

Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。


import com.google.cloud.storageinsights.v1.ReportConfig;
import com.google.cloud.storageinsights.v1.ReportConfigName;
import com.google.cloud.storageinsights.v1.ReportDetail;
import com.google.cloud.storageinsights.v1.StorageInsightsClient;
import java.io.IOException;

public class GetInventoryReportNames {


  public static void getInventoryReportNames(
      String projectId, String location, String reportConfigUuid) throws IOException {
    try (StorageInsightsClient storageInsightsClient = StorageInsightsClient.create()) {
      ReportConfig config =
          storageInsightsClient.getReportConfig(
              ReportConfigName.of(projectId, location, reportConfigUuid));
      String extension = config.hasCsvOptions() ? "csv" : "parquet";
      System.out.println(
          "You can use the Google Cloud Storage Client "
              + "to download the following objects from Google Cloud Storage:");
      for (ReportDetail reportDetail :
          storageInsightsClient.listReportDetails(config.getName()).iterateAll()) {
        for (long index = reportDetail.getShardsCount() - 1; index >= 0; index--) {
          System.out.println(reportDetail.getReportPathPrefix() + index + "." + extension);
        }
      }
    }
  }
}

REST API

JSON API

レポートを個別にダウンロードする

インベントリ レポートをダウンロードするには、次の手順を完了します。

  1. Authorization ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。

    OAuth 2.0 Playground を使用してアクセス トークンを作成し、Authorization ヘッダーに含めることもできます。

  2. 次のように、cURLインベントリ レポートの詳細を一覧表示するリクエストを指定して JSON API を呼び出し、インベントリ レポートの構成で生成されたすべてのインベントリ レポートを一覧表示します。

    curl --request GET \
    "https://storageinsights.googleapis.com/v1/projects/YOUR_PROJECT/locations/LOCATION/reportConfigs/REPORT_CONFIG_UUID/reportDetails/" \
      --header "Authorization: Bearer $(gcloud auth print-access-token)" \
      --header "Accept: application/json" \
      --header "Content-Type: application/json" \
    

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

    • YOUR_PROJECT は、ソースバケットと宛先バケットが存在するプロジェクトの名前で置き換えます。

    • LOCATION は、ソースバケットと宛先バケットのロケーションで置き換えます。例: us-west1

    • REPORT_CONFIG_UUID は、ダウンロードするレポートを生成したインベントリ レポート構成の自動生成 UUID で置き換えます。

  3. 個々のレポートの詳細を取得するには、次のように cURLGet ReportDetails リクエストを指定して JSON API を呼び出します。

    curl --request GET \
    "https://storageinsights.googleapis.com/v1/projects/YOUR_PROJECT/locations/LOCATION/reportConfigs/REPORT_CONFIG_UUID/reportDetails/REPORT_DETAIL_ID" \
      --header "Authorization: Bearer $(gcloud auth print-access-token)" \
      --header "Accept: application/json" \
      --header "Content-Type: application/json" \
    

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

    • YOUR_PROJECT は、ソースバケットと宛先バケットが存在するプロジェクトの名前で置き換えます。

    • LOCATION は、ソースバケットと宛先バケットのロケーションで置き換えます。例: us-west1

    • REPORT_CONFIG_UUID は、ダウンロードするレポートを生成したインベントリ レポート構成の自動生成 UUID で置き換えます。

    • REPORT_DETAIL_ID は、ダウンロードするインベントリ レポートの名前で置き換えます。

レポート シャードをダウンロードする

1 つ以上のシャードに分割されたインベントリ レポートをダウンロードするには、次の手順を完了します。

  1. Authorization ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。

    OAuth 2.0 Playground を使用してアクセス トークンを作成し、Authorization ヘッダーに含めることもできます。

  2. インベントリ レポートのマニフェスト ファイルをダウンロードするには、cURL を使用して GET Object リクエストで JSON API を呼び出します。

    curl -X GET \
      --header "Authorization: Bearer $(gcloud auth print-access-token)" \
      --header "Accept: application/json" \
      --header "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/MANIFEST_FILE_NAME?alt=media" \

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

    • BUCKET_NAME は、宛先バケットの名前に置き換えます。

    • MANIFEST_FILE_NAME は、転送先バケットのマニフェスト ファイルの名前に置き換えます。次の命名規則を使用します。

      REPORT_CONFIG_UUID_TARGET_DATETIME_manifest.json

      ここで

      • REPORT_CONFIG_UUID は、ダウンロードするレポート シャードを生成したインベントリ レポート構成の自動生成 UUID です。

      • TARGET_DATETIME は、インベントリ レポートが生成された日付です。

    例: fc95c52f-157a-494f-af4a-d4a53a69ba66_2022-11-30T00:00_manifest.json

    マニフェスト ファイルの report_shards_file_names フィールドに、ダウンロード可能なインベントリ レポート シャードの名前が含まれています。

  3. インベントリ レポートのシャード ファイルをダウンロードするには、curlGet Object リクエストを指定して Cloud Storage JSON API を呼び出します。

    curl -X GET \
      --header "Authorization: Bearer $(gcloud auth print-access-token)" \
      -o "DOWNLOAD_PATH" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/SHARD_FILE_NAME?alt=media"

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

    • DOWNLOAD_PATH は、オブジェクトを保存するローカル ファイル システムのパスに置き換えます。例: Desktop/dog.png

    • BUCKET_NAME は、インベントリ レポートを含む宛先バケットの名前で置き換えます。例: my-bucket

    • SHARD_FILE_NAME は、ダウンロードするシャード ファイルの URL エンコードされた名前に置き換えます。例: fc95c52f-157a-494f-af4a-d4a53a69ba66_2022-11-30T00:54_0.csv

インベントリ レポートの構成を削除する

コンソール

インベントリ レポートの構成を削除する手順は次のとおりです。

  1. Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。

    [バケット] に移動

  2. バケットのリストで、削除するインベントリ レポート構成を含むソースバケットの名前をクリックします。

  3. 転送元バケットの [バケットの詳細] ページで、[インベントリ レポート] タブをクリックします。

  4. 削除するインベントリ レポート構成の構成名をクリックします。

  5. 表示された [レポート構成の詳細] ページで、[ 削除] をクリックします。

コマンドライン

インベントリ レポート構成を削除するには、gcloud storage insights inventory-reports delete コマンドを使用します。

gcloud storage insights inventory-reports delete CONFIG_NAME
  --force

CONFIG_NAME は、インベントリ レポート構成の一意の名前(projects/PROJECT/locations/LOCATION/reportConfigs/REPORT_CONFIG_UUID 形式)に置き換えます。

--force フラグを指定すると、指定されたインベントリ レポートの構成によって生成されたインベントリ レポートのメタデータがすべて削除されます。インベントリ レポート オブジェクト自体は削除されません。

クライアント ライブラリ

Java

詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。

Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。


import com.google.cloud.storageinsights.v1.ReportConfigName;
import com.google.cloud.storageinsights.v1.StorageInsightsClient;
import java.io.IOException;

public class DeleteInventoryReportConfig {


  public static void deleteInventoryReportConfig(
      String projectId, String location, String inventoryReportConfigUuid) throws IOException {
    try (StorageInsightsClient storageInsightsClient = StorageInsightsClient.create()) {
      ReportConfigName name = ReportConfigName.of(projectId, location, inventoryReportConfigUuid);
      storageInsightsClient.deleteReportConfig(name);

      System.out.println("Deleted inventory report config with name " + name);
    }
  }
}

REST API

JSON API

インベントリ レポートの構成を削除する手順は次のとおりです。

  1. Authorization ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。

    OAuth 2.0 Playground を使用してアクセス トークンを作成し、Authorization ヘッダーに含めることもできます。

  2. インベントリ レポートの構成を削除するには、cURL を使用して、Delete ReportConfig リクエストで JSON API を呼び出します。

    curl --request DELETE \
    'https://storageinsights.googleapis.com/v1/projects/YOUR_PROJECT/locations/LOCATION/reportConfigs/REPORT_CONFIG_UUID?force=true' \
      --header 'Authorization: Bearer $(gcloud auth print-access-token)' \
      --header 'Accept: application/json' \
      --header 'Content-Type: application/json' \
    

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

    • YOUR_PROJECT は、ソースバケットと宛先バケットが存在するプロジェクトの名前で置き換えます。

    • LOCATION は、ソースバケットと宛先バケットのロケーションで置き換えます。例: us-west1

    • REPORT_CONFIG_UUID は、削除するインベントリ レポート構成の自動生成 UUID で置き換えます。

force クエリ パラメータは、指定されたインベントリ レポートの構成によって生成されたインベントリ レポートのメタデータをすべて削除します。インベントリ レポート オブジェクト自体は削除されません。

高度な設定: Hive パーティション分割形式でインベントリ レポートを生成する

インベントリ レポート構成を作成する際、インベントリ レポートが生成される宛先バケット内の場所である宛先パスを指定できます。これにより、Hive パーティション分割形式でインベントリ レポートを生成できます。

プレースホルダ キーワードを使用して宛先パスを指定します。インベントリ レポートの生成時に、リンク先のパスのキーワードが対応する値に置き換えられます。たとえば、宛先のパス config={{report-config-id}}/date={{date}} は、config=1A34-F2E456-12B456-1C3D/date=2022-05-20 に解決されます。

宛先パスのキーワード

キーワード report-config-iddate、または datetime を {{ と }} で囲んで指定できます。ここで、

  • report-config-id は、インベントリ レポートの構成の UUID です。

  • date は、インベントリ レポートが生成される日付です。ISO 8601 形式に従います。

  • datetime は、インベントリ レポートが生成される日時です。ISO 8601 形式に従います。

キーワードは、次のいずれかのツールを使用して指定できます。

  • Google Cloud コンソールを使用する場合は、[宛先のパスを入力(省略可)] セクションでキーワードを指定します。このセクションは、インベントリ レポートの構成を作成するときに表示されます。

  • Google Cloud CLI を使用する場合は、--destination フラグを使用してプレースホルダ キーワードを指定します。

  • JSON API を使用する場合は、ReportConfig オブジェクトの storage_destination_options.destination_path フィールドにプレースホルダ キーワードを指定します。

アクセス制御とセキュリティ

インベントリ レポートとその構成のセキュリティや使用に関連する推奨事項と考慮事項は次のとおりです。

  • オブジェクトやメタデータの読み取りなど、バケット内のすべてのリソースの使用に対する制御を維持できるように、roles/storage.admin ロールが付与されたユーザーにも storageinsights.reportConfigs.* 権限を付与することをおすすめします。

  • storageinsights.reportConfigs.* 権限を必要な個人にのみ付与することで、インベントリ レポート リソースへのアクセスを制限することをおすすめします。

  • インベントリ レポートの構成を作成した後、その構成を作成したユーザーが必要な権限を失った場合でも、インベントリ レポートは引き続き生成されます。インベントリ レポートの生成を停止するには、インベントリ レポート構成の終了日を編集するか、構成を完全に削除します。

次のステップ