스토리지 일괄 작업을 위한 Cloud Logging

이 페이지에서는 Cloud Logging을 사용하여 스토리지 일괄 작업 로그를 구성하고 보는 방법을 설명합니다. 스토리지 일괄 작업 작업은 각 변환 작업에 대해 Cloud Logging 로그 항목을 생성하도록 구성할 수 있습니다. 각 로그 항목은 객체의 변환 시도에 해당합니다.

스토리지 일괄 작업은 Cloud Logging과 Cloud Storage Cloud 감사 로그 모두에 로깅을 지원합니다. 두 옵션 모두 스토리지 일괄 작업 작업을 캡처하지만 Cloud Logging을 사용하는 것이 좋습니다. Cloud Logging은 로그 분석, 실시간 모니터링, 고급 필터링을 위한 중앙 집중식 플랫폼을 제공하여 일괄 작업 활동을 관리하고 이해하기 위한 강력한 솔루션을 제공합니다.

시작하기 전에

Cloud Logging에 액세스할 수 있는지 확인합니다. Cloud Logging을 사용하려면 Logs Viewer (roles/logging.viewer) Identity and Access Management 역할을 부여하는 것이 좋습니다. Logs Viewer (roles/logging.viewer) Identity and Access Management 역할은 Cloud Logging 데이터를 보는 데 필요한 Identity and Access Management 권한을 제공합니다. Logging 액세스 권한에 대한 자세한 내용은 IAM으로 액세스 제어를 참조하세요.

IAM 권한을 확인하고 부여하려면 다음 단계를 완료하세요.

로깅 세부정보 이해

로깅이 사용 설정되면 스토리지 일괄 작업에서 다음 세부정보를 캡처합니다.

  • 로깅 가능한 작업: 로깅 가능한 작업 값은 항상 transform입니다.

  • 로깅 가능한 상태: 각 작업에 대해 다음 상태 중 하나 또는 둘 다를 로깅할 수 있습니다.

    • SUCCEEDED: 작업이 성공했습니다.
    • FAILED: 작업이 실패했습니다.

로깅 사용 설정

로깅을 사용 설정하려면 로깅할 작업과 상태를 지정합니다.

명령줄

gcloud storage batch-operations jobs create로 스토리지 일괄 작업 작업을 만들 때 --log-actions--log-action-states 플래그를 사용하여 로깅을 사용 설정합니다.

gcloud storage batch-operations jobs create JOB_NAME \
  --manifest-location=MANIFEST_LOCATION \
  --delete-object \
  --log-actions=transform \
  --log-action-states=LOG_ACTION_STATES

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

  • JOB_NAME: 작업에 지정하려는 이름. 예를 들면 my-job입니다.
  • MANIFEST_LOCATION: 매니페스트의 위치. 예를 들면 gs://my-bucket/manifest.csv입니다.
  • LOG_ACTION_STATES: 로깅할 상태의 쉼표로 구분된 목록. 예를 들면 succeeded,failed입니다.

REST API

Create a storage batch operations job(LoggingConfig 포함).

{
   "loggingConfig": {
      "logActions": ["TRANSFORM"],
      "logActionStates": ["LOG_ACTION_STATES"],
        }
}

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

LOG_ACTION_STATES: 로깅할 상태의 쉼표로 구분된 목록. 예를 들면 "SUCCEEDED","FAILED"입니다.

로그 보기

스토리지 일괄 작업 로그를 보려면 다음 단계를 따르세요.

콘솔

  1. Google Cloud 탐색 메뉴 로 이동하고 Logging > 로그 탐색기를 선택합니다.<br\></br\>

    로그 탐색기로 이동

  2. Google Cloud 프로젝트를 선택합니다.

  3. 업그레이드 메뉴에서 기존 로그 뷰어로그 탐색기로 전환합니다.

  4. 스토리지 일괄 작업 항목만 표시되도록 로그를 필터링하려면 쿼리 필드에 storage_batch_operations_job을 입력하고 쿼리 실행을 클릭합니다.

  5. 쿼리 결과 창에서 시간 수정을 클릭하여 결과를 반환할 기간을 변경합니다.

로그 탐색기 사용에 대한 자세한 내용은 로그 탐색기 사용을 참조하세요.

명령줄

gcloud CLI를 사용하여 스토리지 일괄 작업 로그를 검색하려면 gcloud logging read 명령어를 사용합니다.

결과를 스토리지 일괄 작업 로그로 제한하도록 필터를 지정합니다.

gcloud logging read "resource.type=storage_batch_operations_job"

REST API

entries.list Cloud Logging API 메서드를 사용합니다.

스토리지 일괄 작업 관련 항목만 표시되도록 결과를 필터링하려면 filter 필드를 사용합니다. 다음은 샘플 JSON 요청 객체입니다.

{
"resourceNames":
  [
    "projects/my-project-name"
  ],
  "orderBy": "timestamp desc",
  "filter": "resource.type=\"storage_batch_operations_job\""
}

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

my-project-name는 프로젝트 이름입니다.

스토리지 일괄 작업 로그 형식

모든 스토리지 일괄 작업 관련 필드가 jsonPayload 객체 내에 포함되어 있습니다. jsonPayload의 정확한 콘텐츠는 작업 유형에 따라 다르지만 모든 TransformActivityLog 항목에서 공유되는 공통 구조가 있습니다. 이 섹션에서는 일반적인 로그 필드를 간략하게 설명한 후 작업별 필드를 자세히 설명합니다.

  • 일반 로그 필드

    다음 필드는 모든 로그에 표시됩니다.

    jsonPayload: {
    "@type": "type.googleapis.com/google.cloud.storagebatchoperations.logging.TransformActivityLog",
    "completeTime": "YYYY-MM-DDTHH:MM:SS.SSSSSSSSSZ",
    "status": {
      "errorMessage": "String indicating error",
      "errorType": "ENUM_VALUE",
      "statusCode": "ENUM_VALUE"
    },
    "logName": "projects/PROJECT_ID/logs/storagebatchoperations.googleapis.com%2Ftransform_activity",
    "receiveTimestamp": "YYYY-MM-DDTHH:MM:SS.SSSSSSSSSZ",
    "resource": {
      "labels": {
        "location":"us-central1",
        "job_id": "BATCH_JOB_ID",
        "resource_container": "RESOURCE_CONTAINER",
        // ... other labels
      },
      "type": "storagebatchoperations.googleapis.com/Job"
    },
    // Operation-specific details will be nested here (for example,
    // "DeleteObject", "PutObjectHold", "RewriteObject", "PutMetadata")
    // Each operation-specific object will also contain the following
    // object: "objectMetadataBefore": {
    //   "gcsObject": {
    //     "bucket": "BUCKET_NAME",
    //     "generation": "GENERATION_NUMBER",
    //     "objectKey": "OBJECT_PATH"
    //   }
    // }
    }
    

    다음 표에서는 일반적인 로그 필드를 각각 설명합니다.

    일반 로그 필드 유형 설명
    @type 문자열 로그 항목 페이로드의 유형을 지정하고 로그가 스토리지 일괄 작업의 TransformActivityLog를 나타냄을 표시합니다.
    completeTime 타임스탬프 작업이 완료된 ISO 8601을 준수하는 타임스탬프입니다.
    status 객체 일괄 작업 활동의 결과에 관한 정보를 제공합니다.
    status.errorMessage 문자열 작업이 실패한 경우의 오류 메시지. 오류 메시지는 status.statusCode 값이 OK아닌 경우에만 표시됩니다.
    status.errorType 문자열 오류 유형. 오류 유형은 status.statusCode 값이 OK아닌 경우에만 표시됩니다.
    status.statusCode 문자열 작업의 상태 코드. 값이 OK이면 작업이 성공한 것이고, 다른 값이면 실패한 것입니다.
    logName 문자열 프로젝트와 로그 스트림을 나타내는 로그의 전체 리소스 이름입니다.
    receiveTimestamp 타임스탬프 로깅 시스템에서 로그 항목을 수신한 타임스탬프입니다.
    resource 객체 로그 항목을 생성한 리소스에 관한 정보입니다.
    resource.labels 객체 리소스에 관한 추가 식별 정보를 제공하는 키-값 쌍입니다.
    resource.type 문자열 로그를 생성한 리소스의 유형입니다.
    objectMetadataBefore 객체 일괄 작업이 시도되기 전 객체의 메타데이터를 포함합니다.
    objectMetadataBefore.gcsObject 객체 객체에 관한 세부정보입니다.
    objectMetadataBefore.gcsObject.bucket 문자열 객체가 있는 버킷의 이름입니다.
    objectMetadataBefore.gcsObject.generation 문자열 작업 전 객체의 세대 번호입니다.
    objectMetadataBefore.gcsObject.objectKey 문자열 버킷 내 객체의 전체 경로입니다.
  • 작업별 jsonPayload 콘텐츠

    여러 배치 작업의 로그 항목 간 차이는 jsonPayload 내에 중첩된 최상위 객체에 있습니다. 특정 로그 항목에는 실행된 특정 일괄 작업에 해당하는 다음 객체 중 하나만 사용할 수 있습니다.

    • 객체 삭제(DeleteObject)

      jsonPayload:
      {
      "DeleteObject": {
        "objectMetadataBefore": {
          "gcsObject": {
            "bucket": "test-bucket",
            "generation": "1678912345678901",
            "objectKey": "test_object.txt"
          }
        }
        }
      }
      
    • Put 객체 유지(PutObjectHold)

      jsonPayload:
      {
      "PutObjectHold": {
        "objectMetadataBefore": {
          "gcsObject": {
            "bucket": "test-bucket",
            "generation": "1678912345678901",
            "objectKey": "test_object.txt"
          }
        },
        "temporaryHoldAfter": True,
        "eventBasedHoldAfter": True
      }
      }
      
    • 객체 재작성(RewriteObject)

      jsonPayload:
      {
      "RewriteObject": {
        "objectMetadataBefore": {
          "gcsObject": {
            "bucket": "test-bucket",
            "generation": "1678912345678901",
            "objectKey": "test_object.txt"
          }
        },
        "kmsKeyVersionAfter": "projects/my-gcp-project/locations/us-central1/keyRings/my-keyring-01/cryptoKeys/my-encryption-key/cryptoKeyVersions/1"
      }
      }
      
    • Put 메타데이터(PutMetadata)

      jsonPayload:
      {
      "PutMetadata": {
        "objectMetadataBefore": {
          "gcsObject": {
            "bucket": "test-bucket",
            "generation": "1678912345678901",
            "objectKey": "test_object.txt"
          }
        },
        "content_disposition_after": "attachment; filename=\"report_final.pdf\"",
        "content_encoding_after": "gzip",
        "content_language_after": "en-US",
        "content_type_after": "application/pdf",
        "cache_control_after": "public, max-age=3600",
        "custom_time_after": "2025-06-27T10:00:00Z",
        "custom_metadata_after": {
          "project": "marketing",
          "version": "2.0",
          "approvedBy": "Admin"
        }
      }
      }
      

    다음 표에서는 작업별 로그 필드를 설명합니다.

    작업별 로그 필드 유형 설명
    PutObjectHold 객체 객체에 대한 보존 조치를 나타냅니다.
    PutObjectHold.temporaryHoldAfter Boolean 값이 True이면 스토리지 일괄 작업 작업이 완료된 후 객체에 임시 보존이 적용되었음을 나타냅니다. 유효한 값은 True 또는 False입니다.
    PutObjectHold.eventBasedHoldAfter Boolean 값이 True이면 스토리지 일괄 작업 작업이 완료된 후 객체에 이벤트 기반 보존 조치가 적용되었음을 나타냅니다. 유효한 값은 True 또는 False입니다.
    RewriteObject 객체 객체에 대한 재작성 작업을 나타냅니다.
    RewriteObject.kmsKeyVersionAfter 문자열 재작성 작업 후에 사용되는 Cloud Key Management Service 키 버전입니다. kmsKeyVersionAfter 필드는 재작성으로 인해 객체의 암호화 키가 변경된 경우 채워집니다. 선택사항 필드이므로 재작성 후 Cloud KMS 키 버전이 변경되지 않은 경우 표시되지 않을 수 있습니다.
    PutMetadata 객체 객체의 메타데이터 업데이트 작업을 나타냅니다.
    PutMetadata.content_disposition_after 문자열 PutMetadata 작업이 완료된 후의 Content-Disposition 헤더 값을 지정합니다. 선택사항 필드로, 콘텐츠 처리 방식이 설정되거나 수정된 경우에만 채워집니다.
    PutMetadata.content_encoding_after 문자열 PutMetadata 작업이 완료된 후의 Content-Encoding 헤더 값을 지정합니다. 선택사항 필드로, 콘텐츠 인코딩이 설정되거나 수정된 경우에만 채워집니다.
    PutMetadata.content_language_after 문자열 PutMetadata 작업이 완료된 후의 Content-Language 헤더 값을 지정합니다. 선택사항 필드로, 콘텐츠 언어가 설정되거나 수정된 경우에만 채워집니다.
    PutMetadata.content_type_after 문자열 PutMetadata 작업이 완료된 후의 Content-Type 헤더 값을 지정합니다. 선택사항 필드로, 콘텐츠 유형이 설정되거나 수정된 경우에만 채워집니다.
    PutMetadata.cache_control_after 문자열 PutMetadata 작업이 완료된 후의 Cache-Control 헤더 값을 지정합니다. 선택사항 필드로, 캐시 관리가 설정되거나 수정된 경우에만 값이 채워집니다.
    PutMetadata.custom_time_after 문자열 PutMetadata 작업이 완료된 후의 Custom-Time 헤더 값을 지정합니다. 선택사항인 필드로, 커스텀 시간이 설정되거나 수정된 경우에만 채워집니다.
    PutMetadata.custom_metadata_after 맵(키: 문자열, 값: 문자열) 변환 후 Custom- Metadata 키-값 쌍의 맵을 포함합니다. 이 필드에는 객체에서 설정되거나 수정된 사용자 정의 메타데이터가 포함됩니다. 이를 통해 추가 메타데이터를 유연하게 저장할 수 있습니다.