ストレージ バッチ オペレーションの Cloud Logging

このページでは、Cloud Logging を使用してストレージ バッチ オペレーションのログを構成して表示する方法について説明します。ストレージ バッチ オペレーション ジョブは、各変換ジョブの Cloud Logging ログエントリを生成するように構成できます。各ログエントリは、オブジェクトの変換の試行に対応しています。

ストレージ バッチ オペレーションは、Cloud Logging と Cloud Storage Cloud Audit Logs の両方へのロギングをサポートしています。どちらのオプションでもストレージ バッチ オペレーションのアクションをキャプチャできますが、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

LoggingConfig を使用して Create a storage batch operations job

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

ここで

LOG_ACTION_STATES は、ログに記録する状態のカンマ区切りのリストです。例: "SUCCEEDED","FAILED"

ログを表示

ストレージ バッチ オペレーションのログを表示するには、次の操作を行います。

コンソール

  1. Google Cloud ナビゲーション メニュー に移動し、[ロギング] > [ログ エクスプローラ] の順に選択します。<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 オブジェクト リソースに関する追加の識別情報を提供する Key-Value ペア。
    resource.type 文字列 ログを生成したリソースのタイプ。
    objectMetadataBefore オブジェクト バッチ オペレーションが試行される前のオブジェクトのメタデータが含まれます。
    objectMetadataBefore.gcsObject オブジェクト オブジェクトに関する詳細。
    objectMetadataBefore.gcsObject.bucket 文字列 オブジェクトが存在するバケットの名前。
    objectMetadataBefore.gcsObject.generation 文字列 オペレーション前のオブジェクトの世代番号。
    objectMetadataBefore.gcsObject.objectKey 文字列 バケット内のオブジェクトのフルパス。
  • オペレーション固有の jsonPayload コンテンツ

    異なるバッチ オペレーションのログエントリの違いは、jsonPayload 内にネストされたトップレベル オブジェクトにあります。特定のログエントリで使用できるのは、実行された特定のバッチ オペレーションに対応する次のオブジェクトのいずれか 1 つのみです。

    • オブジェクトを削除する(DeleteObject

      jsonPayload:
      {
      "DeleteObject": {
        "objectMetadataBefore": {
          "gcsObject": {
            "bucket": "test-bucket",
            "generation": "1678912345678901",
            "objectKey": "test_object.txt"
          }
        }
        }
      }
      
    • オブジェクト保持を設定する(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"
      }
      }
      
    • メタデータを配置する(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 ブール値 値が True の場合、ストレージ バッチ オペレーション ジョブの完了後にオブジェクトに一時的な保持が適用されたことを示します。有効な値は True または False です。
    PutObjectHold.eventBasedHoldAfter ブール値 値が 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 Key-Value ペアのマップが含まれます。このフィールドには、オブジェクトで設定または変更されたユーザー定義のメタデータが含まれます。これにより、追加のメタデータを柔軟に保存できます。