인벤토리 보고서 만들기 및 관리

이 페이지에서는 인벤토리 보고서 구성과 생성된 인벤토리 보고서를 만들고 관리하는 방법을 설명하여 특정 버킷에 있는 모든 객체의 메타데이터에 대한 고급 요약을 볼 수 있습니다. 인벤토리 보고서에 대한 개요는 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 파일의 필드를 구분하는 구분 기호로 바꿉니다. 값에는 하나의 문자가 포함될 수 있으며 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_bucket 또는 gs://my_example_destination_bucket/path/to/inventory/report입니다.

      버킷 내 폴더에 경로를 지정할 때 보고서가 생성될 때의 해당 값으로 대체되는 키워드를 경로에 사용할 수 있습니다. 이렇게 하면 Hive 파티션을 나눈 형식으로 보고서가 생성되어 추가 처리 없이 BigQuery에서 데이터를 로드하거나 쿼리할 수 있습니다.

    • METADATA_FIELD를 인벤토리 보고서에 포함하려는 메타데이터 필드의 쉼표로 구분된 목록으로 바꿉니다.

    • START_DATE를 인벤토리 보고서 생성을 시작하려는 UTC 날짜로 바꿉니다. 예를 들면 2022-01-15입니다.

    • FREQUENCY를 인벤토리 보고서 생성 빈도로 바꿉니다. 값은 daily 또는 weekly입니다.

    • 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가 설치 및 초기화되어 있어야 합니다.

  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"
        }
      }
    }

    다음과 같이 바꿉니다.

    예를 들어 다음 코드 샘플은 매주 보고서를 생성하는 'Example inventory report configuration'이라는 인벤토리 보고서 구성을 만듭니다.

    {
      "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 역할을 부여해 달라고 요청하세요.

  • storage.buckets.getObjectInsightsstorage.buckets.get 권한을 포함하는 소스 버킷에 대한 roles/storage.insightsCollectorService
  • storage.objects.create 권한을 포함하는 대상 버킷에 대한 roles/storage.objectCreator

역할을 부여하는 방법은 IAM 사용을 참조하세요. Google Cloud 콘솔 또는 Google Cloud CLI를 사용하여 roles/storage.insightsCollectorService 역할을 부여할 수 있습니다. 예를 들면 다음과 같습니다.

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를 페이지당 최대 리소스 수로 바꿉니다. 기본값은 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가 설치 및 초기화되어 있어야 합니다.

  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를 페이지당 최대 리소스 수로 바꿉니다. 기본값은 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가 설치 및 초기화되어 있어야 합니다.

  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. 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를 페이지당 최대 리소스 수로 바꿉니다. 기본값은 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_NAMEprojects/PROJECT/locations/LOCATION/reportConfigs/REPORT_CONFIG_UUID/reportDetails/REPORT_DETAIL_ID 형식의 인벤토리 보고서 이름으로 바꿉니다.

보고서 샤드 다운로드

하나 이상의 샤드로 분할된 인벤토리 보고서를 다운로드하려면 다음 단계를 완료하세요.

  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가 설치 및 초기화되어 있어야 합니다.

  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. 개별 보고서의 세부정보를 가져오려면 cURL을 사용하여 Get 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. Authorization 헤더에 대한 액세스 토큰을 생성하려면 gcloud CLI가 설치 및 초기화되어 있어야 합니다.

  2. 인벤토리 보고서의 매니페스트 파일을 다운로드하려면 cURL을 사용하여 GET 객체 요청으로 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. 인벤토리 보고서 샤드 파일을 다운로드하려면 curl를 사용하여 Get 객체 요청으로 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가 설치 및 초기화되어 있어야 합니다.

  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-id, date 또는 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.* 권한을 부여해서 인벤토리 보고서 리소스에 대해 액세스를 제한하는 것이 좋습니다.

  • 인벤토리 보고서 구성이 생성된 다음에는 구성을 만든 사용자에게 필요한 권한이 더 이상 없더라도 계속 인벤토리 보고서가 생성됩니다. 인벤토리 보고서 생성을 중지하려면 인벤토리 보고서 구성에서 종료일을 수정하거나 구성을 완전히 삭제할 수 있습니다.

다음 단계

  • 인벤토리 보고서를 생성하는 데 문제가 발생하면 문제 해결을 참조하세요.