我設定了 Amazon Simple Storage Service (Amazon S3) 伺服器存取記錄。但是,Amazon S3 並未將伺服器存取日誌傳遞到 Amazon S3 目的地儲存貯體。
簡短描述
當您第一次開啟伺服器存取記錄或變更日誌的目的地儲存貯體時,這些變更需要一些時間才能實作。在您開啟記錄後的第一個小時內,Amazon S3 可能不會記錄傳遞請求。此外,Amazon S3 可能會在您變更目的地儲存貯體後的第一個小時內,將日誌傳遞到先前的目的地儲存貯體。
變更記錄組態後,請等待至少 1 小時再確認日誌。如需詳細資訊,請參閱伺服器日誌傳遞最佳方式。
請確定來源儲存貯體與目的地儲存貯體位於相同的 AWS 區域,且相同的 AWS 帳戶擁有這些儲存貯體。此外,如果您為目的地儲存貯體開啟了 Requester Pays 請求者付款 ,請將其關閉。
如果您仍然看不到目的地儲存貯體中的日誌,請使用下列疑難排解來解決問題。
解決方法
檢查日誌傳遞群組是否具有目的地儲存貯體的存取權
Amazon S3 使用日誌傳遞群組,將伺服器存取日誌傳遞至目的地儲存貯體。若要接收伺服器存取日誌,您必須授予記錄服務主體對目標儲存貯體的存取權。
若要授與對目的地儲存貯體的存取權,請建立 S3 儲存貯體政策。您可以使用存取控制清單 (ACL) 來授與對目的地儲存貯體的存取權。不過,最佳做法是只有在您必須單獨控制每個物件的存取權時,才使用 ACL。
透過儲存貯體政策授與存取權
更新儲存貯體政策,以將 s3:PutObject 權限授與記錄服務主體。
政策範例:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "S3ServerAccessLogsPolicy",
"Effect": "Allow",
"Principal": {
"Service": "logging.s3.amazonaws.com"
},
"Action": [
"s3:PutObject"
],
"Resource": "arn:aws:s3:::DOC-EXAMPLE-DESTINATION-BUCKET/EXAMPLE-LOGGING-PREFIX*",
"Condition": {
"ArnLike": {
"aws:SourceArn": "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET"
},
"StringEquals": {
"aws:SourceAccount": "SOURCE-ACCOUNT-ID"
}
}
}
]
}
透過儲存貯體 ACL 授與存取權
將授權項目新增至儲存貯體 ACL,授與 S3 日誌傳遞群組寫入權限。
若要修改目的地儲存貯體的 ACL,請完成下列步驟:
- 開啟 Amazon S3 console (Amazon S3 主控台)。
- 在 Buckets (儲存貯體) 清單中,選取目的地儲存貯體。
- 選擇 Permissions (權限) 索引標籤。
- 在存取控制清單 (ACL) 區段中,選擇 Edit (編輯)。
- 在 S3 log delivery group (S3 日誌傳遞群組) 下,選取 Objects - Write (物件 - 寫入)。
- 在 S3 log delivery group (S3 日誌傳遞群組) 下,選取 Bucket ACL - Write (儲存貯體 ACL - 寫入)。
- 選擇 Save changes (儲存變更)。
確認目的地儲存貯體的政策是否拒絕存取日誌
檢查目的地儲存貯體的政策是否有包含 "Effect": "Deny" 的陳述式。如果政策具有 Deny 陳述式,請確認 Deny 陳述式未禁止對儲存貯體的寫入存取權。
**注意:**最佳做法是為伺服器存取日誌使用單獨的儲存貯體。儲存貯體預設為私有,因此您不需要在儲存貯體政策中使用 Deny 陳述式,來避免未經授權存取儲存貯體。
請確認您已關閉目的地儲存貯體的 Amazon S3 物件鎖定
請確定已關閉目的地儲存貯體的物件鎖定。當您開啟「物件鎖定」時,Amazon S3 無法傳遞伺服器存取日誌。
請檢查您是否選取了 SSE-S3 作為加密金鑰
如果您在目的地儲存貯體上使用預設加密,請確認您已選取使用 Amazon S3 受管金鑰 (SSE-S3) 的伺服器端加密進行加密。伺服器日誌傳遞不支援使用 AWS Key Management Service (KMS) 金鑰的伺服器端加密。若要設定預設加密,請參閱設定預設加密。