我執行了 AWS DataSync 任務,但在相關的 Amazon CloudWatch 日誌群組中找不到這些日誌。如何對此問題進行疑難排解?
解決方法
確認 CloudWatch Logs 具有允許 DataSync 上傳日誌的資源政策。請依照下列步驟檢閱 DataSync 代理程式在 AWS 區域中的 CloudWatch Logs 資源政策:
**注意事項:**如果您在執行 AWS CLI 命令時收到錯誤訊息,請確定您使用的是最新版本的 AWS CLI。
1. 使用 AWS Command Line Interface (AWS CLI) 執行 describe-resource-policies 命令:
aws logs describe-resource-policies --region us-east-1
注意事項: 對於 CloudWatch Logs,每個 AWS 帳戶在每個區域最多可允許 10 個資源政策。如果超出此限制,則在建立資源政策時會收到錯誤訊息。
2. 檢閱命令的輸出。如果未設定資源政策,則輸出類似於以下內容:
{
"resourcePolicies": []
}
**重要事項:**確認已在正確的 AWS 區域中啟用 DataSync 的資源政策。該政策必須與您正在使用的 DataSync 代理程式位於同一個區域中。
請依照下列步驟建立資源政策,以授與 DataSync 上傳日誌的許可:
1. 建立 JSON 檔案,以授與 DataSync 上傳日誌的最低許可:
{
"Statement": [
{
"Sid": "DataSyncLogsToCloudWatchLogs",
"Effect": "Allow",
"Action": [
"logs:PutLogEvents",
"logs:CreateLogStream"
],
"Principal": {
"Service": "datasync.amazonaws.com"
},
"Resource": "*"
}
],
"Version": "2012-10-17"
}
您可以將檔案命名為 policy.json。
2. 使用 AWS CLI 執行 put-resource-policy 命令,以使用 JSON 檔案建立資源政策:
aws logs put-resource-policy --policy-name trustDataSync --policy-document file://policy.json --region <Region>
**重要事項:**將 DataSync 代理程式的 AWS 區域設定為 --region 的值。
3. 執行 describe-resource-policies 命令,確認已建立資源政策:
aws logs describe-resource-policies --region <Region>
注意事項: 對於 CloudWatch Logs,每個 AWS 帳戶在每個區域最多可允許 10 個資源政策。如果超出此限制,在建立資源政策時就會收到錯誤訊息。請使用 put-resource-policy 命令來確認您是否已達到此限制。
4. 建立資源政策之後,命令輸出類似於以下內容:
{
"resourcePolicies": [
{
"policyName": "trustDataSync",
"policyDocument": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"DataSyncLogsToCloudWatchLogs\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"datasync.amazonaws.com\"},\"Action\":[\"logs:PutLogEvents\",\"logs:CreateLogStream\"],\"Resource\":\"*\"}]}",
"lastUpdatedTime": 1577448776606
}
]
}
5. 若要測試資源政策,請執行 DataSync 任務。任務執行幾分鐘後,請確認您看到來自相關 CloudWatch 日誌群組的日誌串流。
相關資訊
管理 CloudWatch Logs 資源存取許可的概觀