

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Amazon CloudWatch Logs 監控資料傳輸
<a name="configure-logging"></a>

您可以使用 CloudWatch Logs 監控 AWS DataSync 傳輸。建議您將任務設定為至少記錄基本資訊 （例如傳輸錯誤）。

## 允許 DataSync 將日誌上傳至 CloudWatch 日誌群組
<a name="cloudwatchlogs"></a>

若要[設定 DataSync 任務](#configure-logging-for-task)的記錄，您需要一個 CloudWatch 日誌群組，DataSync 有權向其傳送日誌。 DataSync 您可以透過 AWS Identity and Access Management (IAM) 角色設定此存取權。具體的運作方式取決於您的[任務模式](choosing-task-mode.md)。

------
#### [ Enhanced mode ]

使用增強模式時，DataSync 會自動將任務日誌傳送至名為 的日誌群組`/aws/datasync`。如果您的 中不存在該日誌群組 AWS 區域，DataSync 會在您建立任務時使用 IAM [服務連結角色](https://docs.aws.amazon.com/datasync/latest/userguide/using-service-linked-roles-service-action-2.html)來代表您建立日誌群組。

------
#### [ Basic mode ]

有幾種方式可以使用基本模式為 DataSync 任務設定 CloudWatch 日誌群組。在 主控台中，您可以自動建立 IAM 角色，在大多數情況下包含 DataSync 上傳日誌所需的許可。請記住，從最低權限的角度來看，此自動產生的角色可能不符合您的需求。

如果您想要使用現有的 CloudWatch 日誌群組或以程式設計方式建立任務，您必須自行建立 IAM 角色。

下列範例是授予這些許可的 IAM 政策。

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DataSyncLogsToCloudWatchLogs",
            "Effect": "Allow",
            "Action": [
                "logs:PutLogEvents",
                "logs:CreateLogStream"
            ],
            "Principal": {
                "Service": "datasync.amazonaws.com"
            },
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": [
                    "arn:aws:datasync:us-east-1:444455556666:task/*"
                    ]
                },
                "StringEquals": {
                "aws:SourceAccount": "444455556666"
                }
            },
            "Resource": "arn:aws:logs:us-east-1:444455556666:log-group:*:*"
        }
    ]
}
```

此政策使用 `Condition`陳述式來協助確保只有來自指定帳戶的 DataSync 任務可以存取指定的 CloudWatch 日誌群組。我們建議在這些`Condition`陳述式中使用 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)和 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)全域條件內容索引鍵，以防止混淆代理人問題。如需詳細資訊，請參閱[預防跨服務混淆代理人](cross-service-confused-deputy-prevention.md)。

若要指定 DataSync 任務，請將 *`region`*取代為 AWS 區域 任務所在的 區域碼 （例如 `us-west-2`)，並將 取代*`account-id`*為包含任務的帳戶 AWS 帳戶 ID。若要指定 CloudWatch 日誌群組，請取代相同的值。您也可以修改`Resource`陳述式以鎖定特定日誌群組。如需使用 `SourceArn`和 的詳細資訊`SourceAccount`，請參閱《*IAM 使用者指南*》中的[全域條件金鑰](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)。

若要套用政策，請將此政策陳述式儲存至本機電腦上的檔案。然後執行下列 AWS CLI 命令來套用資源政策。若要使用此範例命令，請將 取代`full-path-to-policy-file`為包含政策陳述式的檔案路徑。

```
aws logs put-resource-policy --policy-name trust-datasync --policy-document file://full-path-to-policy-file
```

**注意**  
使用您啟用 DataSync 代理程式的相同 AWS 帳戶 和 AWS 區域 來執行此命令。

如需詳細資訊，請參閱 [https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html)。

------

## 設定 DataSync 任務的記錄
<a name="configure-logging-for-task"></a>

我們建議您為 DataSync 任務設定至少某個層級的記錄。

**開始之前**  
DataSync 需要將日誌上傳至 CloudWatch 日誌群組的許可。如需詳細資訊，請參閱[允許 DataSync 將日誌上傳至 CloudWatch 日誌群組](#cloudwatchlogs)。

### 使用 DataSync 主控台
<a name="configure-logging-steps-console"></a>

下列指示說明如何在建立任務時設定 CloudWatch 記錄。您也可以在編輯任務時設定記錄。

1. 在 https：//[https://console.aws.amazon.com/datasync/](https://console.aws.amazon.com/datasync/) 開啟 AWS DataSync 主控台。

1. 在左側導覽窗格中，展開**資料傳輸**，然後選擇**任務**，然後選擇**建立任務**。

1. 設定任務的來源和目的地位置。

   如需詳細資訊，請參閱[我可以將資料傳輸到哪裡 AWS DataSync？](working-with-locations.md)

1. 在**設定設定**頁面上，選擇[任務模式](choosing-task-mode.md)和任何其他選項。

   您可能對下列一些選項感興趣：
   + 使用[資訊清單](transferring-with-manifest.md)或[篩選條件](filtering.md)指定要傳輸的資料。
   + 設定 如何處理[檔案中繼資料](configure-metadata.md)和[驗證資料完整性](configure-data-verification-options.md)。

1. 針對**日誌層級**，選擇下列其中一個選項：
   + **日誌基本資訊，例如傳輸錯誤** – 發佈僅包含基本資訊的日誌 （例如傳輸錯誤）。
   + **記錄所有傳輸的物件和檔案** – 發佈 DataSync 傳輸和執行資料完整性檢查的所有檔案或物件的日誌。
   + **不要產生日誌**

1. 根據您用來建立或指定 CloudWatch 日誌群組的任務模式，執行下列其中一項操作：

------
#### [ Enhanced mode ]

   當您選擇**建立任務**時，DataSync 會自動使用 （或建立） 名為 的日誌群組`/aws/datasync`。

------
#### [ Basic mode ]

   對於 **CloudWatch 日誌群組**，請執行下列其中一項動作，指定 DataSync 有權將日誌上傳至其中的日誌群組：
   + 選擇**自動產生**以自動建立日誌群組，允許 DataSync 將日誌上傳至其中。
   + 選擇目前 中的現有日誌群組 AWS 區域。

     如果您選擇現有的日誌群組，請確定 [DataSync 具有將日誌上傳至該日誌群組的許可](#cloudwatchlogs)。

------

1. 選擇 **Create task (建立任務)**。

您已準備好[開始任務](run-task.md)。

### 使用 AWS CLI
<a name="configure-logging-steps-cli"></a>

1. 複製下列`create-task`命令：

   ```
   aws datasync create-task \
     --source-location-arn "arn:aws:datasync:us-east-1:account-id:location/location-id" \
     --destination-location-arn "arn:aws:datasync:us-east-1:account-id:location/location-id" \
     --task-mode "ENHANCED-or-BASIC" \
     --name "task-name" \
     --options '{"LogLevel": "log-level"}' \
     --cloudwatch-log-group-arn "arn:aws:logs:us-east-1:account-id:log-group:log-group-name:*"
   ```

1. 針對 `--source-location-arn`，指定來源位置的 Amazon Resource Name (ARN)。

1. 針對 `--destination-location-arn`，指定目的地位置的 ARN。

   如果您要跨 AWS 區域 或 帳戶轉移，請確定 ARN 包含其他區域或帳戶 ID。

1. 針對 `--task-mode`，指定 `ENHANCED`或 `BASIC`。

1. （建議） 對於 `--name`，請指定您可以記住的任務名稱。

1. 針對 `LogLevel`，指定下列其中一個選項：
   + `BASIC` – 發佈僅包含基本資訊的日誌 （例如傳輸錯誤）。
   + `TRANSFER` – 發佈 DataSync 傳輸和執行資料完整性檢查的所有檔案或物件的日誌。
   + `NONE` – 請勿產生日誌。

1. 對於 -`-cloudwatch-log-group-arn`，指定 CloudWatch 日誌群組的 ARN。
**重要**  
如果您的 `--task-mode`是 `ENHANCED`，則不需要指定此選項。如需詳細資訊，請參閱[允許 DataSync 將日誌上傳至 CloudWatch 日誌群組](#cloudwatchlogs)。

1. 執行 `create-task` 命令。

   如果命令成功，您會收到回應，顯示您建立之任務的 ARN。例如：

   ```
   { 
       "TaskArn": "arn:aws:datasync:us-east-1:111222333444:task/task-08de6e6697796f026" 
   }
   ```

您已準備好[開始任務](run-task.md)。

### 使用 DataSync API
<a name="configure-logging-steps-api"></a>

您可以使用 `CloudWatchLogGroupArn` 參數搭配下列任何操作，為您的任務設定 CloudWatch 記錄：
+ [https://docs.aws.amazon.com/datasync/latest/userguide/API_CreateTask.html](https://docs.aws.amazon.com/datasync/latest/userguide/API_CreateTask.html)
+ [https://docs.aws.amazon.com/datasync/latest/userguide/API_UpdateTask.html](https://docs.aws.amazon.com/datasync/latest/userguide/API_UpdateTask.html)

## 檢視 DataSync 任務日誌
<a name="monitoring-verification-errors-cloudwatch"></a>

當您[啟動任務](run-task.md)時，您可以使用 CloudWatch 主控台或 AWS CLI （以及其他選項） 檢視任務執行的日誌。如需詳細資訊，請參閱 [https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html)。

DataSync 為增強型模式任務提供 JSON 結構化日誌。基本模式任務具有非結構化日誌。下列範例顯示與基本模式日誌相比，驗證錯誤在增強型模式日誌中的顯示方式。

------
#### [ Enhanced mode log example ]

```
{
    "Action": "VERIFY",
    "Source": {
        "LocationId": "loc-abcdef01234567890",
        "RelativePath": "directory1/directory2/file1.txt"
    },
    "Destination": {
        "LocationId": "loc-05ab2fdc272204a5f",
        "RelativePath": "directory1/directory2/file1.txt",
        "Metadata": {
            "Type": "Object",
            "ContentSize": 66060288,
            "LastModified": "2024-10-03T20:46:58Z",
            "S3": {
                "SystemMetadata": {
                    "ContentType": "binary/octet-stream",
                    "ETag": "\"1234abcd5678efgh9012ijkl3456mnop\"",
                    "ServerSideEncryption": "AES256"
                },
                "UserMetadata": {
                    "file-mtime": "1602647222/222919600"
                },
                "Tags": {}
            }
        }
    },
    "ErrorCode": "FileNotAtSource",
    "ErrorDetail": "Verification failed due to file being present at the destination but not at the source"
}
```

------
#### [ Basic mode log example ]

```
[NOTICE] Verification failed > /directory1/directory2/file1.txt
[NOTICE] /directory1/directory2/file1.txt   dstMeta: type=R mode=0755 uid=65534 gid=65534 size=8972938 atime=1728657659/0 mtime=1728657659/0 extAttrsHash=0
[NOTICE]   dstHash: f9c2cca900301d38b0930367d8d587153154af467da0fdcf1bebc0848ec72c0d
```

------