このページでは、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"
ログを表示
ストレージ バッチ オペレーションのログを表示するには、次の操作を行います。
コンソール
Google Cloud ナビゲーション メニュー menu に移動し、[ロギング] > [ログ エクスプローラ] の順に選択します。<br\></br\>
Google Cloud プロジェクトを選択します。
[アップグレード] メニューで、[以前のログビューア] から [ログ エクスプローラ] に切り替えます。
ログをフィルタしてストレージ バッチ オペレーションのエントリのみを表示するには、クエリ フィールドに「
storage_batch_operations_job
」と入力して [クエリを実行] をクリックします。[クエリ結果] ペインで [日時を編集する] をクリックし、結果を返す期間を変更します。
ログ エクスプローラの使用方法については、ログ エクスプローラの使用をご覧ください。
コマンドライン
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 ペアのマップが含まれます。このフィールドには、オブジェクトで設定または変更されたユーザー定義のメタデータが含まれます。これにより、追加のメタデータを柔軟に保存できます。