인벤토리 보고서

인벤토리 보고서를 사용하면 객체 스토리지를 대규모로 관리할 수 있습니다. 이 방식은 Objects: list API 작업에 대한 보다 빠르고 예정된 대안입니다. 성능에 영향을 주지 않고 대용량 버킷의 마이그레이션을 확인하거나 단일 버킷의 객체 무결성을 확인하려면 인벤토리 보고서를 사용하세요.

인벤토리 보고서에는 객체의 스토리지 클래스, ETag, 콘텐츠 유형과 같은 객체의 메타데이터 정보가 포함됩니다. 이 정보는 스토리지 비용을 분석하고, 객체를 감사 및 검증하고, 데이터 보안 및 규정 준수를 보장하는 데 도움이 됩니다. 인벤토리 보고서를 쉼표로 구분된 값(CSV) 또는 Apache Parquet 파일로 내보내 BigQuery와 같은 도구를 사용하여 추가로 분석할 수 있습니다.

이 페이지에서는 인벤토리 보고서에 대해 간략하게 설명합니다. 인벤토리 보고서를 사용하는 방법에 대한 안내는 인벤토리 보고서 만들기 및 관리를 참고하세요.

인벤토리 보고서 개요

인벤토리 보고서에는 소스 버킷이라고도 하는 특정 버킷의 객체와 관련 메타데이터 목록이 포함됩니다. 인벤토리 보고서를 생성하려면 먼저 보고서가 생성되는 빈도, 보고서에 포함할 메타데이터 필드, 보고서를 만들고 저장할 버킷(대상 버킷이라고도 함)을 정의하는 인벤토리 보고서 구성을 만듭니다.

인벤토리 보고서 구성을 만들면 범용 고유 식별자(UUID)가 자동으로 할당됩니다. 이 필드는 수정할 수 없습니다. 그러나 인벤토리 보고서 구성의 다음 필드는 수정할 수 있습니다.

  • 인벤토리 보고서 구성의 표시 이름
  • 인벤토리 보고서에 포함된 객체 메타데이터 필드
  • 인벤토리 보고서를 저장하는 대상 버킷
  • 인벤토리 보고서가 생성되는 빈도를 결정하는 일정
  • 인벤토리 보고서가 생성되는 파일 형식(CSV 또는 Apache Parquet)

인벤토리 보고서 구성을 삭제하면 해당 구성에 대해 새 인벤토리 보고서가 더 이상 생성되지 않지만 기존 인벤토리 보고서는 그대로 유지됩니다.

인벤토리 보고서를 사용해야 하는 경우

인벤토리 보고서는 개별 버킷을 빠르게 분석할 수 있도록 설계되었습니다. 이를 사용하여 다음 작업을 할 수 있습니다.

  • 버킷 내의 모든 객체 나열

  • 데이터 전송 성공 여부 확인

  • 특정 버킷의 감사 보고서 생성

인벤토리 보고서를 사용하지 말아야 하는 경우

특히 대규모 분석의 경우 여러 버킷과 프로젝트의 인벤토리 보고서를 수동으로 수집하고 분석하기가 어려울 수 있습니다. 조직 전체 가시성, 보안 분석, 비용 관리와 같은 사용 사례의 경우 Storage Insights 데이터 세트를 사용할 수 있습니다. Storage Insights 데이터 세트를 사용하면 버킷, 폴더, 프로젝트 또는 조직 수준에서 커스텀 범위를 유연하게 구성할 수 있습니다. Storage Insights 데이터 세트는 커스텀 메타데이터 및 소프트 삭제 정보와 같은 통계도 제공합니다.

Storage Insights 데이터 세트의 경우 데이터가 매일 새로고침되며 BigQuery의 SQL 또는 Gemini의 자연어 질문을 사용하여 분석할 수 있습니다.

목표가 다음과 같은 경우 Storage Insights 데이터 세트를 사용하세요.

  • 조직 간 데이터 검색
  • 비용 최적화 및 수명 주기 관리를 위한 분석
  • 거버넌스 및 보안 감사
  • 추세를 파악하기 위한 시계열 분석

Storage Insights 데이터 세트는 Storage Intelligence 구독을 통해서만 사용할 수 있는 전용 기능입니다.

소스 및 대상 버킷

소스 버킷에는 인벤토리 보고서를 생성하려는 객체가 포함되어 있습니다. 인벤토리 보고서 구성도 포함되어 있습니다. 소스 버킷에는 인벤토리 보고서 구성을 최대 100개까지 포함할 수 있습니다.

대상 버킷에는 생성된 인벤토리 보고서가 저장됩니다. 대상 버킷은 다음 요구사항을 충족해야 합니다.

  • 소스 버킷과 동일한 위치에 있어야 합니다.
  • 소스 버킷과 동일한 프로젝트에 있어야 합니다.
  • 소스 버킷과 동일할 수 있습니다.

인벤토리 보고서 구성을 처음 만들면 사용자를 대신하여 서비스 에이전트가 자동으로 생성됩니다. 인벤토리 보고서 구성을 만들고 대상 버킷에 인벤토리 보고서를 작성하려면 개발자와 서비스 에이전트 모두 필요한 IAM 권한이 있어야 합니다. 개발자서비스 에이전트에 필요한 권한을 참조하세요.

인벤토리 보고서는 소스 및 대상 버킷의 이름을 사용하여 작업을 실행할 때 사용할 버킷을 결정합니다. 소스 또는 대상 버킷을 삭제하고 나중에 같은 이름으로 새 버킷을 만들 경우 인벤토리 보고서가 새 버킷을 사용하여 작업을 실행합니다.

객체 메타데이터 필드

다음 메타데이터 필드는 인벤토리 보고서에 포함될 수 있습니다. '필수'로 표시된 메타데이터 필드는 인벤토리 보고서에 포함되어야 합니다.

메타데이터 필드 설명 참고
프로젝트 소스 버킷이 있는 프로젝트 ID 필수
버킷 소스 버킷의 이름입니다. 필수
name 객체 이름입니다. 필수
위치 소스 버킷의 위치입니다. 선택사항
크기 객체의 크기입니다. 선택사항
timeCreated RFC 3339 형식의 객체 생성 시간입니다. 선택사항
timeDeleted RFC 3339 형식의 객체 삭제 시간입니다. 이 버전의 객체가 더 이상 서비스 중인 버전이 아니지만 버킷에 이전 버전으로 남아 있는 경우에만 반환됩니다. 선택사항
업데이트됨 RFC 3339 형식의 객체 메타데이터 수정 시간입니다. 선택사항
storageClass 객체의 스토리지 클래스입니다. 선택사항
etag 객체의 HTTP 1.1 항목 태그입니다. 선택사항
retentionExpirationTime 객체를 삭제할 수 있는 가장 이른 시간이며 객체에 설정된 보관 구성 및 객체가 포함된 버킷에 설정된 보관 정책에 따라 달라집니다. retentionExpirationTime의 값은 RFC 3339 형식으로 제공됩니다. 선택사항
crc32c RFC 4960 부록 B의 설명대로 CRC32C 체크섬은 big-endian 바이트 순서로 base64를 사용하여 인코딩됩니다. CRC32C 체크섬에 관한 자세한 내용은 객체 메타데이터를 참조하세요. 선택사항
md5Hash base64를 사용하여 인코딩된 데이터의 MD5 해시입니다. 복합 객체에는 이 필드가 없습니다. MD5 해시에 관한 자세한 내용은 객체 메타데이터를 참조하세요. 선택사항
이미지 생성 모델군 중 하나이며 이 객체의 콘텐츠 세대입니다. 객체 버전 관리에 사용됩니다. 선택사항
metageneration 세대에서 이 객체의 메타데이터 버전입니다. 전제조건과 메타데이터 변경사항 감지에 사용됩니다. 메타 세대 번호는 특정 객체의 특정 세대 컨텍스트에서만 의미가 있습니다. 선택사항
contentType 객체 데이터의 Content-Type입니다. 객체가 콘텐츠 유형 없이 저장되면 application/octet-stream으로 제공됩니다. 선택사항
contentEncoding 객체 데이터의 Content-Encoding입니다. 선택사항
timeStorageClassUpdated 객체의 스토리지 클래스가 마지막으로 변경된 시간입니다. 객체가 처음 생성되면 timeCreated로 설정됩니다. 선택사항

객체 메타데이터 필드에 대한 자세한 내용은 객체 메타데이터를 참조하세요.

인벤토리 보고서 샤드

인벤토리 보고서에 1,000,000개 이상의 객체가 포함된 경우 하나 이상의 샤드 객체가 생성되어 인벤토리 보고서를 구성합니다. 인벤토리 보고서의 모든 샤드가 성공적으로 생성되면 샤드와 동일한 대상 버킷에 매니페스트 파일이 생성됩니다.

인벤토리 보고서 매니페스트 파일

매니페스트 파일이 있다는 것은 인벤토리 보고서를 구성하는 모든 샤드가 생성되었음을 나타냅니다. 매니페스트 파일은 인벤토리 보고서 샤드 객체의 이름도 제공합니다.

매니페스트 파일은 REPORT_CONFIG_UUID_TARGET_DATETIME_manifest.json 이름 지정 규칙 따릅니다. 각 항목의 의미는 다음과 같습니다.

  • REPORT_CONFIG_UUID는 인벤토리 보고서 구성의 자동 생성된 UUID입니다.

  • TARGET_DATETIME은 인벤토리 보고서가 생성되는 자동 생성 UTC 날짜 및 시간입니다.

매니페스트 파일 이름의 예시는 fc95c52f-157a-494f-af4a-d4a53a69ba66_2022-11-30T00:00_manifest.json입니다.

manifest.json 파일에는 다음과 같은 자동 입력 필드가 포함됩니다.

{
  "report_config": REPORT_CONFIG_FIELDS,
  "records_processed": NUMBER_OF_INCLUDED_OBJECTS,
  "snapshot_time": "SNAPSHOT_TIME,
  "target_datetime": "TARGET_DATETIME,
  "shard_count": SHARD_COUNT,
  "report_shards_file_names": [
    SHARD_FILE_NAME
    ...]
}

각 항목의 의미는 다음과 같습니다.

  • REPORT_CONFIG_FIELDS에는 ReportConfig 리소스 내에 포함된 필드가 있습니다.

  • NUMBER_OF_INCLUDED_OBJECTS는 인벤토리 보고서에 포함된 객체 수입니다.

  • SNAPSHOT_TIME은 데이터 스냅샷이 발생하는 자동 생성된 UTC 날짜/시간입니다. 인벤토리 보고서의 모든 데이터는 스냅샷에서 캡처됩니다.

  • TARGET_DATETIME은 인벤토리 보고서가 생성되는 자동 생성 UTC 날짜/시간입니다.

  • SHARD_COUNT는 인벤토리 보고서를 구성하는 생성된 총 샤드 수입니다.

  • SHARD_FILE_NAME은 인벤토리 보고서를 구성하는 샤드의 이름입니다.

예시 manifest.json 파일은 다음과 같습니다.

{
  "report_config":
     {
       "name": "projects/123456789098/locations/us/reportConfigs/fcec5187-afa6-48b0-938a-543d16493dc0",
       "createTime": "2023-06-08T08:07:53.397366139Z",
       "updateTime": "2023-06-08T08:07:53.552347723Z",
       "frequencyOptions": {
         "frequency": "DAILY",
         "startDate": {
           "year": 2023,
           "month": 6,
           "day": 9
         }
         "endDate": {
           "year": 2023,
           "month": 6,
           "day": 23
         }
       },
       "csvOptions": {
         "recordSeparator": "\n",
         "delimiter": ","
       },
       "objectMetadataReportOptions": {
         "metadataFields": [
           "project",
           "bucket",
           "name",
           "location",
           "updated",
           "storageClass",
         ],
         "storageFilters": {
           "bucket": "my-test-bucket"
         },
         "storageDestinationOptions": {
           "bucket": "example-bucket",
           "destinationPath": "folder/subfolder"
         }
       }
     },
  "records_processed": 3993900,
  "snapshot_time" : "2023-06-06T00:07:27Z",
  "target_datetime": {
    "year": 2023,
    "month": 6,
    "day": 6
  },
  "shard_count": 4,
  "report_shards_file_names": [
    "fc95c52f-157a-494f-af4a-d4a53a69ba66_2022-11-30T00:54_0.csv",
    "fc95c52f-157a-494f-af4a-d4a53a69ba66_2022-11-30T00:54_1.csv",
    ...
  ],
}

가격 책정

인벤토리 보고서 사용은 버킷의 위치에 따라 가격이 책정됩니다. 인벤토리 보고서 가격에 대한 자세한 내용은 가격 책정을 참고하세요.

감사 로깅

Cloud Storage는 인벤토리 보고서가 대상 버킷에 생성될 때 감사 로그를 만듭니다. Cloud Storage는 인벤토리 보고서 구성이 생성, 업데이트, 삭제될 때마다 감사 로그를 생성합니다.

인벤토리 보고서 구성이 소스 버킷에서 객체 메타데이터를 읽을 때는 Cloud Storage가 감사 로그를 만들지 않습니다.

VPC 서비스 제어와 통합

VPC 서비스 제어를 사용하여 인벤토리 보고서 리소스에 대한 추가 보안 레이어를 제공할 수 있습니다. VPC 서비스 제어를 사용하는 경우 경계 외부에서 발생하는 요청으로부터 리소스와 서비스를 보호하는 서비스 경계에 프로젝트를 추가합니다. VPC 서비스 제어 및 서비스 경계에 대한 자세한 내용은 서비스 경계 세부정보 및 구성을 참조하세요.

제한사항

Cloud Storage 버킷에서 IP 필터링을 사용 설정하면 서비스 에이전트를 사용하여 Cloud Storage와 상호작용하는지 여부에 관계없이 인벤토리 보고서가 버킷에 액세스할 수 없습니다. 서비스 중단을 방지하려면 버킷의 인벤토리 보고서를 만드는 경우 Cloud Storage 버킷에서 IP 필터링을 사용하지 않는 것이 좋습니다.

다음 단계

인벤토리 보고서 구성을 만들고 인벤토리 보고서 생성을 시작하는 방법을 알아보세요.