Storage 移轉服務的 Cloud Logging

本頁說明如何設定及查看 Storage 移轉服務記錄的 Cloud Logging。

所有移轉作業都支援 Storage 移轉服務的 Cloud Logging。FIND 系統不會記錄以服務專員為主的轉移作業。

檔案系統移轉作業也可以設定檔案系統移轉記錄檔

事前準備

開始前,請先確認您有權存取 Cloud Logging。建議使用 Logs Viewer (roles/logging.viewer) Identity and Access Management 角色。如要進一步瞭解 Logging 存取權,請參閱「使用 IAM 控管存取權」。

以下說明如何驗證及授予 IAM 存取權:

可記錄的動作

系統可記錄下列動作:

  • FIND:尋找待辦事項,例如列出目錄中的檔案、bucket 中的物件,或 bucket 中的代管資料夾。不支援以服務專員為主的轉移作業。
  • COPY:將檔案或物件複製到 Cloud Storage。
  • DELETE:刪除來源或目的地的檔案或物件。如果是兩個檔案系統之間的移轉作業,也會記錄從中繼 Cloud Storage bucket 刪除檔案的作業。

可記錄的狀態

您可以選擇記錄下列一或多個狀態:

  • 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

您必須為每個旗標指定至少一個值。

REST

如要建立記錄設定,請使用 transferJobs.createLoggingConfig

{
  "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,加入要記錄的特定 logActionslogActionStates。舉例來說,如要記錄複製和尋找動作失敗的時間,請提供下列 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

如要更新現有移轉工作的記錄設定,請搭配 LoggingConfig 使用 transferJobs.patch

{
  "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 會指定這項要求中要更新的欄位,且為必要欄位。

如要停用這項工作的記錄功能,請傳送 loggingConfig,並將 logActionslogActionStates 的清單設為空白:

{
  "projectId": "test-id-001",
  "transferJob": {
    "loggingConfig": {
       "logActions": [],
       "logActionStates": [],
    },
  },
  "updateTransferJobFieldMask": "loggingConfig"
}

查看記錄

如要查看移轉記錄,請按照下列步驟操作:

Google Cloud 控制台

  1. 前往 Google Cloud 導覽選單 ,然後依序選取「記錄」>「記錄檔探索工具」 :<br\></br\>

    前往記錄檔探索工具

  2. 選取 Google Cloud 專案。

  3. 從「升級」選單中,將「舊版記錄檢視器」切換為「記錄檔探索工具」

  4. 如要篩選記錄檔,只顯示 Storage Transfer Service 項目,請在查詢欄位中輸入 storage_transfer_job,然後按一下「執行查詢」

  5. 在「查詢結果」窗格中,按一下「編輯時間」,即可變更要傳回結果的時間範圍。

如要進一步瞭解如何使用記錄檔探索工具,請參閱「使用記錄檔探索工具」。

gcloud CLI

如要使用 gcloud CLI 搜尋 Storage 移轉服務記錄,請使用 gcloud logging read 指令。

指定篩選器,將結果限制為 Storage 移轉服務記錄。

gcloud logging read "resource.type=storage_transfer_job"

Cloud Logging API

使用 entries.list Cloud Logging API 方法。

如要篩選結果,只顯示與 Storage 移轉服務相關的項目,請使用 filter 欄位。以下是 JSON 要求物件範例。

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

移轉記錄檔格式

以下各節說明 Storage 移轉服務記錄的欄位。

所有 Storage 移轉服務專用欄位都包含在 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"
    }
  }
}

COPYDELETE 動作

{
  "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

說明這項特定工作的動作。可以是下列其中一項:

  • FIND:尋找待處理的工作,例如列出目錄中的檔案或值區中的物件。不適用於以代理程式為基礎的轉移作業。
  • COPY:將檔案或物件複製到 Cloud Storage。
  • DELETE:刪除來源、目的地或中繼值區中的檔案或物件。
findAction

指出尋找動作的主體是物件還是代管資料夾

completeTime 作業完成時的時間戳記,符合 ISO 8601 格式。
destinationContainer

僅適用於 FIND 作業。 系統不會記錄以代理程式為基礎的轉移作業。FIND

這項轉移作業的目標容器。包含兩個子欄位:

  • gcsBucket.bucket:目的地 Cloud Storage 值區名稱。
  • type:一律 GCS
destinationObject

僅適用於 COPYDELETE 作業。

目的地物件的相關資訊。包含兩個子欄位:

  • 視目的地而定,可能的值為 gcsObjectgcsManagedFolderposixFile。所有選項都包含多個子欄位,可指定名稱、位置、日期/時間資訊,以及物件或檔案的雜湊值。
  • typeGCSPOSIX_FS

例如:

"destinationObject": {
  "type": "POSIX_FS",
  "posixFile": {
    "crc32c": "0",
    "path": "/tmp/data/filename.txt",
    "lastModifiedTime": "2022-09-22T04:33:45Z"
  }
}
operation 完整 transferOperations 名稱。
sourceContainer

僅適用於 FIND 作業。 系統不會記錄以代理程式為基礎的轉移作業。FIND

這項轉移作業的來源容器。包含兩個子欄位:

  • 指定來源位置的項目。系統會根據來源類型命名欄位。可能的欄位如下。
    • awsS3Bucket.bucket:AWS S3 儲存空間名稱。
    • azureBlobContainer:包含子欄位 accountcontainer,兩者共同定義 Microsoft Azure Blob 儲存體 URI。
    • gcsBucket.bucket:Cloud Storage bucket 名稱。
    • httpManifest.url網址清單的網址,指定要從 HTTP(S) 伺服器下載的公開檔案。
  • typeAWS_S3AZURE_BLOBGCSHTTP

例如:

"sourceContainer": {
  "gcsBucket": {
    "bucket": "my-bucket-1"
  }
  type: "GCS"
}
sourceObject

僅適用於 COPYDELETE 作業。

來源物件的相關資訊。包含兩個子欄位:

  • 專屬於來源物件主機的項目。這個欄位會根據來源類型命名,並包含中繼資料的子欄位。可能的欄位如下。
    • awsS3Object:AWS S3 物件。
    • azureBlob:Azure Blob 儲存空間中的檔案。
    • gcsObject:Cloud Storage 物件。
    • gcsManagedFolder:Cloud Storage 管理的資料夾。
    • httpFile:由網址清單指定檔案。
    • posixFile:POSIX 檔案系統中的檔案。
  • typeAWS_S3AZURE_BLOBGCSHTTPPOSIX_FS

例如:

"sourceObject": {
  "gcsObject": {
    "bucket": "my-bucket-1"
    "lastModifiedTime": "2021-12-07T16:41:09.456Z"
    "md5": "WgnCOIdfCXNTUDpQJSKb2w=="
    "objectKey": "README.md"
  }
  type: "GCS"
}
status

動作的狀態。如果 status.statusCodeOK,表示動作成功。否則動作會失敗。只有當狀態不是 OK 時,系統才會填入 status.errorTypestatus.errorMessage 欄位。

此外,頂層 resource 欄位包含下列欄位。

"resource": {
  "labels": {
    "job_id": "transferJobs/7876027868280507149"
    "project_id": "my-project-id"
  }
  "type": "storage_transfer_job"
}
記錄欄位 說明
resource.labels.job_id 此記錄所屬的 Storage 移轉服務工作名稱。
resource.labels.project_id 這項轉移作業的 Google Cloud 專案 ID。