このページでは、Storage Transfer Service ログの Cloud Logging を構成して表示する方法について説明します。
Storage Transfer Service の Cloud Logging は、すべての転送でサポートされています。エージェント ベースの転送では、FIND オペレーションはログに記録されません。
ファイル システム転送では、ファイル システム転送ログをさらに構成できます。
始める前に
始める前に、Cloud Logging にアクセスできることを確認してください。ログ閲覧者(roles/logging.viewer)の Identity and Access Management ロールを使用することをおすすめします。Logging のアクセスの詳細については、IAM によるアクセス制御をご覧ください。
以下では、IAM アクセス権を確認して付与する方法を説明します。
- 現在のアクセス権を表示して、各プリンシパルのアクセス権を確認します。
- プロジェクトの関連するプリンシパルにロールを付与します。
ログに記録可能なアクション
ログに記録可能なアクションは次のとおりです。
- FIND: 検索(ディレクトリ内のファイルの一覧表示、バケット内のオブジェクトの一覧表示、バケット内のマネージド フォルダの一覧表示など)。エージェント ベースの転送ではサポートされていません。
- COPY: Cloud Storage へのファイルまたはオブジェクトのコピー。
- DELETE: ソースまたは宛先のファイルまたはオブジェクトの削除。 2 つのファイル システム間の転送では、中間の Cloud Storage バケットからのファイルの削除もログに記録されます。
ログに記録可能な状態
アクションごとに、次の状態の 1 つ以上を記録するように選択できます。
- SUCCEEDED: 操作が成功しました。
- FAILED: 操作に失敗しました。
- SKIPPED: COPY アクションにのみ適用され、エージェントベースの転送ジョブでのみサポートされます。- gcloudまたは REST API を使用して設定する必要があります。この状態は、コピーがスキップされたことを意味します。これは、ファイルがシンクにすでに存在し、転送ジョブが既存のファイルを無視するように構成されている場合に発生します。
ロギングを有効にする
ロギングを有効にするには、ロギングの対象となるアクションと状態を指定します。
gcloud CLI
gcloud transfer jobs create を使用して転送ジョブを作成する際に、次のフラグを使用してロギングを有効にします。
gcloud transfer jobs create SOURCE DESTINATION \
  --log-actions=copy,delete,find \
  --log-action-states=succeeded,failed,skipped
それぞれのフラグに少なくとも 1 つの値を指定する必要があります。
REST
ロギング構成を作成するには、LoggingConfig で transferJobs.create を使用します。
{
  "name":"transferJobs/myFirstTransfer",
  "status": "ENABLED",
  "projectId": "test-id-001",
  "loggingConfig": {
     "logActions": ["FIND", "DELETE", "COPY"],
     "logActionStates": ["SUCCEEDED", "FAILED", "SKIPPED"], #SKIPPED is only supported for agent-based transfers
  },
  "transferSpec": {
      "awsS3DataSource": {
          "bucketName": "AWS_SOURCE_NAME",
          "awsAccessKey": {
              "accessKeyId": "AWS_ACCESS_KEY_ID",
              "secretAccessKey": "AWS_SECRET_ACCESS_KEY"
          }
      },
      "gcsDataSink": {
           "bucketName": "destination_bucket",
           "path": "foo/bar/"
      },
   }
}
loggingConfig を編集して、ロギングする特定の logActions と logActionStates を指定します。たとえば、コピーと検索のアクションが失敗した場合にロギングするには、loggingConfig を次のように指定します。
"loggingConfig": {
  "logActions": ["COPY", "FIND"],
  "logActionStates": ["FAILED"],
}
ロギング構成を更新する
gcloud CLI
既存のジョブのロギング構成を更新するには、gcloud transfer jobs update コマンドを使用して目的のフラグを指定します。
gcloud transfer jobs update NAME \
  --log-actions=copy,delete,find \
  --log-action-states=succeeded,failed,skipped
このジョブのロギングを無効にするには、--clear-log-config を指定します。
gcloud transfer jobs update NAME --clear-log-config
REST
既存の転送ジョブのロギング構成を更新するには、transferJobs.patch を使用して LoggingConfig を指定します。
{
  "projectId": "test-id-001",
  "transferJob": {
    "loggingConfig": {
       "logActions": ["FIND", "DELETE", "COPY"],
       "logActionStates": ["SUCCEEDED", "FAILED", "SKIPPED"], #SKIPPED is only supported for agent-based transfers
    },
  },
  "updateTransferJobFieldMask": "loggingConfig"
}
updateTransferJobFieldMask は、このリクエストで更新されるフィールドを指定するもので、必須です。
このジョブのロギングを無効にするには、logActions と logActionStates に空のリストを指定して loggingConfig を送信します。
{
  "projectId": "test-id-001",
  "transferJob": {
    "loggingConfig": {
       "logActions": [],
       "logActionStates": [],
    },
  },
  "updateTransferJobFieldMask": "loggingConfig"
}
ログを表示
転送ログを表示する方法は次のとおりです。
Google Cloud コンソール
- Google Cloud のナビゲーション メニュー menu に移動し、[Logging] > [ログ エクスプローラ] を選択します。<br\></br\> 
- Google Cloud プロジェクトを選択します。 
- [アップグレード] メニューで、[以前のログビューア] から [ログ エクスプローラ] に切り替えます。 
- ログをフィルタリングして Storage Transfer Service のエントリのみを表示するには、クエリ フィールドに「 - storage_transfer_job」と入力して [クエリを実行] をクリックします。
- [クエリ結果] ペインで [日時を編集する] をクリックし、結果を返す期間を変更します。 
ログ エクスプローラの使用方法については、ログ エクスプローラの使用をご覧ください。
gcloud CLI
gcloud CLI を使用して Storage Transfer Service ログを検索するには、gcloud logging read コマンドを使用します。
結果を Storage Transfer Service のログに限定するフィルタを指定します。
gcloud logging read "resource.type=storage_transfer_job"
Cloud Logging API
entries.list Cloud Logging API メソッドを使用します。
Storage Transfer Service 関連のエントリのみが含まれるように結果をフィルタするには、filter フィールドを使用します。JSON リクエスト オブジェクトのサンプルは次のとおりです。
{
"resourceNames":
  [
    "projects/my-project-name"
  ],
  "orderBy": "timestamp desc",
  "filter": "resource.type=\"storage_transfer_job\""
}
転送ログの形式
次のセクションに、Storage Transfer Service ログのフィールドを示します。
Storage Transfer Service 固有のフィールドはすべて、jsonPayload オブジェクトに格納されます。
FIND アクション
{
  "jsonPayload": {
    "@type": "type.googleapis.com/google.storagetransfer.logging.TransferActivityLog",
    "action": "FIND",
    "completeTime": "2021-12-16T18:58:49.344509695Z",
    "destinationContainer": {
      "gcsBucket": {
        "bucket": "my-bucket-2",
      },
      "type": "GCS",
    },
    "operation": "transferOperations/transferJobs-7876027868280507149--3019866490856027148",
    "sourceContainer": {
      "gcsBucket": {
        "bucket": "my-bucket-1"
      },
      "type": "GCS"
    },
    "status": {
      "statusCode": "OK"
    }
  }
}
 COPY および DELETE アクション
{
  "jsonPayload": {
    "@type": "type.googleapis.com/google.storagetransfer.logging.TransferActivityLog",
    "action": "COPY",
    "completeTime": "2021-12-16T18:59:00.510509049Z",
    "destinationObject": {
      "gcsObject": {
        "bucket": "my-bucket-2",
        "objectKey": "README.md"
      },
      "type": "GCS",
    },
    "operation": "transferOperations/transferJobs-7876027868280507149--3019866490856027148",
    "sourceObject": {
      "gcsObject": {
        "bucket": "my-bucket-1",
        "lastModifiedTime": "2021-12-07T16:41:09.456Z",
        "md5": "WgnCOIdfCXNTUDpQJSKb2w==",
        "objectKey": "README.md",
      },
      "type": "GCS",
    },
    "status": {
      "statusCode": "OK"
    }
  }
}
| ログフィールド | 説明 | 
|---|---|
|  | |
| @type | 値は常に type.googleapis.com/google.storagetransfer.logging.TransferActivityLogです。 | 
| action | このタスクの操作を表します。次のいずれかです。 
 | 
| findAction | 検索アクションの対象がオブジェクトかマネージド フォルダかを指定します。 | 
| completeTime | オペレーションの完了時間を表す ISO 8601 準拠のタイムスタンプ。 | 
| destinationContainer | 
 この転送の転送先コンテナ。次の 2 つのサブフィールドがあります。 
 | 
| destinationObject | 
 転送先のオブジェクトに関する情報。次の 2 つのサブフィールドがあります。 
 例: "destinationObject": { "type": "POSIX_FS", "posixFile": { "crc32c": "0", "path": "/tmp/data/filename.txt", "lastModifiedTime": "2022-09-22T04:33:45Z" } } | 
| operation | 完全修飾の transferOperations名。 | 
| sourceContainer | 
 この転送のソースコンテナ。次の 2 つのサブフィールドがあります。 
 例: "sourceContainer": { "gcsBucket": { "bucket": "my-bucket-1" } type: "GCS" } | 
| sourceObject | 
 ソース オブジェクトに関する情報。次の 2 つのサブフィールドがあります。 
 例: "sourceObject": { "gcsObject": { "bucket": "my-bucket-1" "lastModifiedTime": "2021-12-07T16:41:09.456Z" "md5": "WgnCOIdfCXNTUDpQJSKb2w==" "objectKey": "README.md" } type: "GCS" } | 
| status | アクションのステータス。 | 
また、最上位の resource フィールドには以下のフィールドが含まれます。
"resource": {
  "labels": {
    "job_id": "transferJobs/7876027868280507149"
    "project_id": "my-project-id"
  }
  "type": "storage_transfer_job"
}
| ログフィールド | 説明 | 
|---|---|
| resource.labels.job_id | このログが属する Storage Transfer Service のジョブ名。 | 
| resource.labels.project_id | この転送のプロジェクト ID。 Google Cloud |