本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定標準記錄 (v2)
您可以在建立或更新分佈時啟用標準記錄。標準記錄 (v2) 包含下列功能:
如果您使用的是 Amazon S3,您有下列選用功能:
-
將日誌傳送至選擇加入 AWS 區域。
-
使用分割組織您的日誌。
-
啟用 Hive 相容檔案名稱。
如需詳細資訊,請參閱將日誌傳送至 Amazon S3。
若要開始使用標準記錄,請完成下列步驟:
-
為 AWS 服務 將接收日誌的指定 設定所需的許可。
-
從 CloudFront 主控台或 CloudWatch API 設定標準記錄。
-
檢視您的存取日誌。
注意
-
如果您啟用標準記錄 (v2),這不會影響或變更標準記錄 (舊版)。除了使用標準記錄 (v2) 之外,您還可以繼續使用分佈的標準記錄 (舊版)。如需詳細資訊,請參閱設定標準記錄 (舊版)。
-
如果您已啟用標準記錄 (舊版),而且想要啟用 Amazon S3 的標準記錄 (v2),建議您指定不同的 Amazon S3 儲存貯體,或使用相同儲存貯體中的個別路徑 (例如,使用日誌字首或分割)。這可協助您追蹤哪些日誌檔案與哪些分佈相關聯,並防止日誌檔案互相覆寫。
許可
CloudFront 使用 CloudWatch vended 日誌來傳遞存取日誌。若要這樣做,您需要指定 的許可, AWS 服務 才能啟用記錄交付。
若要查看每個記錄目的地的必要許可,請在 Amazon CloudWatch Logs 使用者指南中選擇下列主題。
設定記錄目的地的許可後,您可以為分發啟用標準記錄。
注意
CloudFront 支援將存取日誌傳送至不同的 AWS 帳戶 (跨帳戶)。若要啟用跨帳戶交付,帳戶 (您的帳戶和接收帳戶) 必須具有必要的許可。如需詳細資訊,請參閱《Amazon CloudWatch Logs 使用者指南》中的啟用跨帳戶交付的標準記錄一節或跨帳戶交付範例。
啟用標準記錄
若要啟用標準記錄,您可以使用 CloudFront 主控台或 CloudWatch API。
啟用標準記錄 (CloudFront 主控台)
啟用 CloudFront 分佈的標準記錄 (主控台)
-
使用 CloudFront 主控台更新現有的分佈。
-
選擇 Logging (日誌記錄) 索引標籤。
選擇新增,然後選擇要接收日誌的服務:
-
CloudWatch Logs
-
Firehose
-
Amazon S3
-
-
針對目的地,選取您服務的資源。如果您尚未建立資源,您可以選擇建立或查看下列文件。
-
針對 CloudWatch Logs,輸入日誌群組名稱。
-
對於 Firehose,輸入 Firehose 交付串流。
-
針對 Amazon S3,輸入儲存貯體名稱。
提示
若要指定字首,請在儲存貯體名稱後面輸入字首,例如
amzn-s3-demo-bucket.s3.amazonaws.com/
。如果您未指定字首,CloudFront 會自動為您新增字首。如需詳細資訊,請參閱將日誌傳送至 Amazon S3。MyLogPrefix
-
-
對於其他設定 – 選用,您可以指定下列選項:
-
(僅限 Amazon S3) 對於分割,指定分割日誌檔案資料的路徑。
-
(僅限 Amazon S3) 對於 Hive 相容檔案格式,您可以選取核取方塊以使用 Hive 相容 S3 路徑。這有助於簡化將新資料載入 Hive 相容工具的過程。
-
針對輸出格式,指定您偏好的格式。
注意
如果您選擇 Parquet,此選項會產生將存取日誌轉換為 Apache Parquet 的 CloudWatch 費用。如需詳細資訊,請參閱 CloudWatch 定價的已修訂日誌一節
。 -
對於欄位分隔符號,指定如何分隔日誌欄位。
-
完成更新或建立分佈的步驟。
-
若要新增另一個目的地,請重複步驟 3–6。
-
在日誌頁面中,確認分佈旁的標準日誌狀態為已啟用。
(選用) 若要啟用 Cookie 記錄,請選擇管理、設定並開啟 Cookie 記錄,然後選擇儲存變更。
提示
Cookie 記錄是全域設定,適用於分佈的所有標準記錄。您無法覆寫個別交付目的地的此設定。
如需標準記錄交付和日誌欄位的詳細資訊,請參閱 標準記錄參考。
啟用標準記錄 (CloudWatch API)
您也可以使用 CloudWatch API 為您的分佈啟用標準記錄。
備註
-
呼叫 CloudWatch API 以啟用標準記錄時,您必須指定美國東部 (維吉尼亞北部) 區域 (
us-east-1
),即使您想要啟用跨區域交付到另一個目的地。例如,如果您想要將存取日誌傳送到歐洲 (愛爾蘭) 區域的 S3 儲存貯體 (eu-west-1
),請使用 區域中的 CloudWatch APIus-east-1
。 -
在標準日誌中包含 Cookie 還有其他選項。在 CloudFront API 中,這是
IncludeCookies
參數。如果您使用 CloudWatch API 設定存取記錄,並指定要包含 Cookie,則必須使用 CloudFront 主控台或 CloudFront API 來更新您的分佈以包含 Cookie。否則,CloudFront 無法傳送 Cookie 到您的日誌目的地。如需詳細資訊,請參閱Cookie 記錄。
啟用分佈的標準記錄 (CloudWatch API)
-
建立分佈之後,請取得 Amazon Resource Name (ARN)。
您可以從 CloudFront 主控台的分發頁面找到 ARN,也可以使用 GetDistribution API 操作。分佈 ARN 遵循以下格式:
arn:aws:cloudfront::123456789012:distribution/d111111abcdef8
-
接著,使用 CloudWatch PutDeliverySource API 操作來建立分佈的交付來源。
-
輸入交付來源的名稱。
-
傳遞分佈
resourceArn
的 。 -
對於
logType
,指定ACCESS_LOGS
為收集的日誌類型。 -
範例 Example AWS CLI put-delivery-source 命令
以下是為分佈設定交付來源的範例。
aws logs put-delivery-source --name S3-delivery --resource-arn arn:aws:cloudfront::123456789012:distribution/d111111abcdef8 --log-type ACCESS_LOGS
輸出
{ "deliverySource": { "name": "S3-delivery", "arn": "arn:aws:logs:us-east-1:123456789012:delivery-source:S3-delivery", "resourceArns": [ "arn:aws:cloudfront::123456789012:distribution/d111111abcdef8" ], "service": "cloudfront", "logType": "ACCESS_LOGS" } }
-
-
使用 PutDeliveryDestination API 操作來設定存放日誌的位置。
-
針對
destinationResourceArn
,指定目的地的 ARN。這可以是 CloudWatch Logs 日誌群組、Firehose 交付串流或 Amazon S3 儲存貯體。 -
針對
outputFormat
,指定日誌的輸出格式。 -
範例 Example AWS CLI put-delivery-destination 命令
以下是將交付目的地設定為 Amazon S3 儲存貯體的範例。
aws logs put-delivery-destination --name S3-destination --delivery-destination-configuration destinationResourceArn=arn:aws:s3:::amzn-s3-demo-bucket
輸出
{ "name": "S3-destination", "arn": "arn:aws:logs:us-east-1:123456789012:delivery-destination:S3-destination", "deliveryDestinationType": "S3", "deliveryDestinationConfiguration": { "destinationResourceArn": "arn:aws:s3:::amzn-s3-demo-bucket" } }
注意
如果您要跨帳戶交付日誌,您必須使用 PutDeliveryDestinationPolicy API 操作,將 AWS Identity and Access Management (IAM) 政策指派給目的地帳戶。IAM 政策允許從一個帳戶交付到另一個帳戶。
-
-
使用 CreateDelivery API 操作,將交付來源連結至您在先前步驟中建立的目的地。此 API 操作會將交付來源與最終目的地建立關聯。
-
針對
deliverySourceName
,指定來源名稱。 -
針對
deliveryDestinationArn
,指定交付目的地的 ARN。 -
對於
fieldDelimiter
,指定要分隔每個日誌欄位的字串。 -
針對
recordFields
,指定您想要的日誌欄位。 -
如果您使用的是 S3,請指定是否使用
enableHiveCompatiblePath
和suffixPath
。
範例 AWS CLI create-delivery 命令範例
以下是建立交付的範例。
aws logs create-delivery --delivery-source-name cf-delivery --delivery-destination-arn arn:aws:logs:us-east-1:123456789012:delivery-destination:S3-destination
輸出
{ "id": "abcNegnBoTR123", "arn": "arn:aws:logs:us-east-1:123456789012:delivery:abcNegnBoTR123", "deliverySourceName": "cf-delivery", "deliveryDestinationArn": "arn:aws:logs:us-east-1:123456789012:delivery-destination:S3-destination", "deliveryDestinationType": "S3", "recordFields": [ "date", "time", "x-edge-location", "sc-bytes", "c-ip", "cs-method", "cs(Host)", "cs-uri-stem", "sc-status", "cs(Referer)", "cs(User-Agent)", "cs-uri-query", "cs(Cookie)", "x-edge-result-type", "x-edge-request-id", "x-host-header", "cs-protocol", "cs-bytes", "time-taken", "x-forwarded-for", "ssl-protocol", "ssl-cipher", "x-edge-response-result-type", "cs-protocol-version", "fle-status", "fle-encrypted-fields", "c-port", "time-to-first-byte", "x-edge-detailed-result-type", "sc-content-type", "sc-content-len", "sc-range-start", "sc-range-end", "c-country", "cache-behavior-path-pattern" ], "fieldDelimiter": "" }
-
-
在 CloudFront 主控台的日誌頁面上,確認分佈旁的標準日誌狀態已啟用。
如需標準記錄交付和日誌欄位的詳細資訊,請參閱 標準記錄參考。
注意
若要使用 啟用 CloudFront 的標準記錄 (v2) AWS CloudFormation,您可以使用下列 CloudWatch Logs 屬性:
ResourceArn
是 CloudFront 分佈,LogType
且必須是ACCESS_LOGS
支援的日誌類型。
啟用跨帳戶交付的標準記錄
如果您為 啟用標準記錄, AWS 帳戶 而且想要將存取日誌交付給另一個帳戶,請確定您正確設定來源帳戶和目的地帳戶。具有 CloudFront 分佈的來源帳戶會將其存取日誌傳送至目的地帳戶。
在此範例程序中,來源帳戶 111111111111
) 會將其存取日誌傳送至目的地帳戶 (222222222222
) 中的 Amazon S3 儲存貯體。若要將存取日誌傳送至目的地帳戶中的 Amazon S3 儲存貯體,請使用 AWS CLI。
設定目的地帳戶
對於目的地帳戶,請完成下列程序。
設定目的地帳戶
-
若要建立日誌交付目的地,您可以輸入下列 AWS CLI 命令。此範例使用
字串為您的存取日誌建立字首。MyLogPrefix
aws logs put-delivery-destination --name
cloudfront-delivery-destination
--delivery-destination-configuration "destinationResourceArn=arn:aws:s3:::amzn-s3-demo-bucket-cloudfront-logs
/MyLogPrefix
"輸出
{ "deliveryDestination": { "name": "cloudfront-delivery-destination", "arn": "arn:aws:logs:us-east-1:
222222222222
:delivery-destination:cloudfront-delivery-destination
", "deliveryDestinationType": "S3", "deliveryDestinationConfiguration": {"destinationResourceArn": "arn:aws:s3:::amzn-s3-demo-bucket-cloudfront-logs/
"} } }MyLogPrefix
注意
如果您指定沒有字首的 S3 儲存貯體,CloudFront 會自動將 附加
AWSLogs/
為字首,顯示在 S3 交付目的地<account-ID>
/CloudFrontsuffixPath
的 中。如需詳細資訊,請參閱 S3DeliveryConfiguration。 -
新增日誌交付目的地的資源政策,以允許來源帳戶建立日誌交付。
在下列政策中,將
111111111111
取代為來源帳戶 ID,並從步驟 1 的輸出指定交付目的地 ARN。{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCreateDelivery", "Effect": "Allow", "Principal": {"AWS": "
111111111111
"}, "Action": ["logs:CreateDelivery"], "Resource": "arn:aws:logs:us-east-1:222222222222
:delivery-destination:cloudfront-delivery-destination
" } ] } -
儲存 檔案,例如
deliverypolicy.json
。 -
若要將先前的政策連接至交付目的地,請輸入下列 AWS CLI 命令。
aws logs put-delivery-destination-policy --delivery-destination-name
cloudfront-delivery-destination
--delivery-destination-policy file://deliverypolicy.json -
將下列陳述式新增至目的地 Amazon S3 儲存貯體政策,取代資源 ARN 和來源帳戶 ID。此政策允許
delivery.logs.amazonaws.com
服務主體執行s3:PutObject
動作。{ "Sid": "AWSLogsDeliveryWrite", "Effect": "Allow", "Principal": {"Service": "delivery.logs.amazonaws.com"}, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket-cloudfront-logs
/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": "111111111111
" }, "ArnLike": {"aws:SourceArn": "arn:aws:logs:us-east-1:111111111111
:delivery-source:*"} } } -
如果您使用 AWS KMS 做為儲存貯體,請將下列陳述式新增至 KMS 金鑰政策,以將許可授予
delivery.logs.amazonaws.com
服務主體。{ "Sid": "Allow Logs Delivery to use the key", "Effect": "Allow", "Principal": {"Service": "delivery.logs.amazonaws.com"}, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": {"aws:SourceAccount": "
111111111111
"}, "ArnLike": {"aws:SourceArn": "arn:aws:logs:us-east-1:111111111111
:delivery-source:*"} } }
設定來源帳戶
設定目的地帳戶之後,請依照此程序建立交付來源,並啟用來源帳戶中分佈的記錄。
設定來源帳戶
-
建立 CloudFront 標準記錄的交付來源,以便您可以將日誌檔案傳送至 CloudWatch Logs。
您可以輸入下列 AWS CLI 命令,取代名稱和分佈 ARN。
aws logs put-delivery-source --name
s3-cf-delivery
--resource-arn arn:aws:cloudfront::111111111111
:distribution/E1TR1RHV123ABC
--log-type ACCESS_LOGS輸出
{ "deliverySource": { "name": "s3-cf-delivery", "arn": "arn:aws:logs:us-east-1:
111111111111
:delivery-source:s3-cf-delivery
", "resourceArns": ["arn:aws:cloudfront::111111111111
:distribution/E1TR1RHV123ABC
"], "service": "cloudfront", "logType": "ACCESS_LOGS" } } -
建立交付以對應來源帳戶的日誌交付來源和目的地帳戶的日誌交付目的地。
在下列 AWS CLI 命令中,從步驟 1:設定目的地帳戶中的輸出指定交付目的地 ARN。
aws logs create-delivery --delivery-source-name
s3-cf-delivery
--delivery-destination-arn arn:aws:logs:us-east-1:222222222222
:delivery-destination:cloudfront-delivery-destination
輸出
{ "delivery": { "id": "OPmOpLahVzhx1234", "arn": "arn:aws:logs:us-east-1:111111111111:delivery:OPmOpLahVzhx1234", "deliverySourceName": "s3-cf-delivery", "deliveryDestinationArn": "arn:aws:logs:us-east-1:222222222222:delivery-destination:cloudfront-delivery-destination", "deliveryDestinationType": "S3", "recordFields": [ "date", "time", "x-edge-location", "sc-bytes", "c-ip", "cs-method", "cs(Host)", "cs-uri-stem", "sc-status", "cs(Referer)", "cs(User-Agent)", "cs-uri-query", "cs(Cookie)", "x-edge-result-type", "x-edge-request-id", "x-host-header", "cs-protocol", "cs-bytes", "time-taken", "x-forwarded-for", "ssl-protocol", "ssl-cipher", "x-edge-response-result-type", "cs-protocol-version", "fle-status", "fle-encrypted-fields", "c-port", "time-to-first-byte", "x-edge-detailed-result-type", "sc-content-type", "sc-content-len", "sc-range-start", "sc-range-end", "c-country", "cache-behavior-path-pattern" ], "fieldDelimiter": "\t" } }
-
驗證您的跨帳戶交付是否成功。
-
從
來源
帳戶登入 CloudFront 主控台,然後選擇您的分佈。在記錄索引標籤的類型下,您會看到為 S3 跨帳戶日誌交付建立的項目。 -
從
目的地
帳戶登入 Amazon S3 主控台,然後選擇您的 Amazon S3 儲存貯體。您會在儲存貯體名稱
中看到 字首,以及傳送到該資料夾的任何存取日誌。MyLogPrefix
-
輸出檔案格式
視您選擇的交付目的地而定,您可以為日誌檔案指定下列其中一種格式:
-
JSON
-
純色
-
w3c
-
Raw
-
Parquet (僅限 Amazon S3)
注意
您只能在第一次建立交付目的地時設定輸出格式。此設定之後將無法更新。若要變更輸出格式,請刪除交付並建立另一個交付。
如需詳細資訊,請參閱《Amazon CloudWatch Logs API 參考》中的 PutDeliveryDestination。
編輯標準記錄設定
您可以使用 CloudFront 主控台
如需詳細資訊,請參閱下列主題:
-
若要使用 CloudFront 主控台更新分佈,請參閱 更新分佈。
-
若要使用 CloudFront API 更新分佈,請參閱《Amazon CloudFront API 參考》中的 UpdateDistribution。
-
如需 CloudWatch Logs API 操作的詳細資訊,請參閱 Amazon CloudWatch Logs API 參考。
存取日誌欄位
您可以選取標準記錄 (舊版) 支援的相同日誌欄位。如需詳細資訊,請參閱日誌檔案欄位。
此外,您可以選取下列即時日誌欄位。
-
timestamp(ms)
– 時間戳記,以毫秒為單位。 -
origin-fbl
– CloudFront 和原始伺服器之間的第一位元組延遲秒數。 -
origin-lbl
– CloudFront 和原始伺服器之間的最後一個位元組延遲秒數。 -
asn
– 檢視器的自主系統編號 (ASN)。 c-country
– 國家/地區代碼,代表檢視器的地理位置,由檢視器的 IP 地址決定。如需國家/地區代碼的清單,請參閱 ISO 3166-1 alpha-2。 cache-behavior-path-pattern
– 識別符合檢視器請求之快取行為的路徑模式。
將日誌傳送至 CloudWatch Logs
若要將日誌傳送至 CloudWatch Logs,請建立或使用現有的 CloudWatch Logs 日誌群組。如需設定 CloudWatch Logs 日誌群組的詳細資訊,請參閱使用日誌群組和日誌串流。
建立日誌群組之後,您必須擁有允許標準記錄的必要許可。如需所需許可的詳細資訊,請參閱《Amazon CloudWatch Logs 使用者指南》中的傳送至 CloudWatch Logs 的日誌。 Amazon CloudWatch
備註
-
當您指定 CloudWatch Logs 日誌群組的名稱時,請僅使用 regex 模式
[\w-]
。如需詳細資訊,請參閱《Amazon CloudWatch Logs API 參考》中的 PutDeliveryDestination API 操作。 Amazon CloudWatch -
確認您的日誌群組資源政策未超過大小限制。請參閱 CloudWatch Logs 主題中的日誌群組資源政策大小限制考量一節。
傳送至 CloudWatch Logs 的存取日誌範例
{ "date": "2024-11-14", "time": "21:34:06", "x-edge-location": "SOF50-P2", "asn": "16509", "timestamp(ms)": "1731620046814", "origin-fbl": "0.251", "origin-lbl": "0.251", "x-host-header": "d111111abcdef8.cloudfront.net", "cs(Cookie)": "examplecookie=value" }
將日誌傳送至 Firehose
若要將日誌傳送至 Firehose,請建立或使用現有的 Firehose 交付串流。
如需建立交付串流的相關資訊,請參閱建立 Amazon Data Firehose 交付串流。
建立交付串流後,您必須擁有允許標準記錄的必要許可。如需詳細資訊,請參閱《Amazon CloudWatch Logs 使用者指南》中的傳送至 Firehose 的日誌。 Amazon CloudWatch
注意
當您指定 Firehose 串流的名稱時,請僅使用 regex 模式 [\w-]
。如需詳細資訊,請參閱《Amazon CloudWatch Logs API 參考》中的 PutDeliveryDestination API 操作。 Amazon CloudWatch
傳送至 Firehose 的存取日誌範例
{"date":"2024-11-15","time":"19:45:51","x-edge-location":"SOF50-P2","asn":"16509","timestamp(ms)":"1731699951183","origin-fbl":"0.254","origin-lbl":"0.254","x-host-header":"d111111abcdef8.cloudfront.net","cs(Cookie)":"examplecookie=value"} {"date":"2024-11-15","time":"19:45:52","x-edge-location":"SOF50-P2","asn":"16509","timestamp(ms)":"1731699952950","origin-fbl":"0.125","origin-lbl":"0.125","x-host-header":"d111111abcdef8.cloudfront.net","cs(Cookie)":"examplecookie=value"}
將日誌傳送至 Amazon S3
若要將存取日誌傳送至 Amazon S3,請建立或使用現有的 S3 儲存貯體。當您在 CloudFront 中啟用記錄時,請指定儲存貯體名稱。如需建立儲存貯體的資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的建立儲存貯體。
建立儲存貯體後,您必須擁有允許標準記錄的必要許可。如需詳細資訊,請參閱「Amazon CloudWatch Logs 使用者指南」中的傳送至 Amazon S3 的日誌。
-
啟用記錄後, AWS 會自動為您新增必要的儲存貯體政策。
-
您也可以在選擇加入 AWS 區域中使用 S3 儲存貯體。
注意
如果您已啟用標準記錄 (舊版),而且想要啟用 Amazon S3 的標準記錄 (v2),建議您指定不同的 Amazon S3 儲存貯體,或使用相同儲存貯體中的個別路徑 (例如,使用日誌字首或分割)。這可協助您追蹤哪些日誌檔案與哪些分佈相關聯,並防止日誌檔案互相覆寫。
指定 S3 儲存貯體
當您指定 S3 儲存貯體做為交付目的地時,請注意下列事項。
S3 儲存貯體名稱只能使用 regex 模式 [\w-]
。如需詳細資訊,請參閱《Amazon CloudWatch Logs API 參考》中的 PutDeliveryDestination API 操作。 Amazon CloudWatch
如果您為 S3 儲存貯體指定字首,您的日誌會顯示在該路徑下。如果您未指定字首,CloudFront 會自動為您附加字AWSLogs/
首。{account-id}
/CloudFront
如需詳細資訊,請參閱存取日誌的範例路徑。
分割
當 CloudFront 將存取日誌傳送到 S3 儲存貯體時,您可以使用分割來組織存取日誌。這可協助您根據所需的路徑組織和尋找存取日誌。
您可以使用下列變數來建立資料夾路徑。
-
{DistributionId}
或{distributionid}
-
{yyyy}
-
{MM}
-
{dd}
-
{HH}
-
{accountid}
您可以使用任意數量的變數,並在路徑中指定資料夾名稱。CloudFront 接著會使用此路徑,在 S3 儲存貯體中為您建立資料夾結構。
範例
-
my_distribution_log_data
/{DistributionId}/logs
-
/
cloudfront
/{DistributionId}/my_distribution_log_data
/{yyyy}/{MM}/{dd}/{HH}/logs
注意
您可以使用任一變數做為尾碼路徑中的分佈 ID。不過,如果您要傳送存取日誌給 AWS Glue,則必須使用 {distributionid}
變數,因為 AWS Glue 預期分割區名稱為小寫。在 CloudFront 中更新現有的日誌組態,以 {DistributionId}
取代 {distributionid}
。
Hive 相容檔案名稱格式
您可以使用此選項,讓包含交付存取日誌的 S3 物件使用允許與 Apache Hive 整合的字首結構。如需詳細資訊,請參閱 CreateDelivery API 操作。
範例
/
cloudfront
/DistributionId={DistributionId}/my_distribution_log_data
/year={yyyy}/month={MM}/day={dd}/hour={HH}/logs
如需分割和 Hive 相容選項的詳細資訊,請參閱《Amazon CloudWatch Logs API 參考》中的 S3DeliveryConfiguration 元素。
存取日誌的範例路徑
當您指定 S3 儲存貯體做為目的地時,您可以使用下列選項來建立存取日誌的路徑:
-
含或不含字首的 Amazon S3 儲存貯體
-
分割,使用 CloudFront 提供的變數或輸入您自己的變數
-
啟用 Hive 相容選項
下表顯示您的存取日誌在儲存貯體中的顯示方式,取決於您選擇的選項。
字首為 的 Amazon S3 儲存貯體
Amazon S3 儲存貯體名稱 | 您在尾碼路徑中指定的分割區 | 已更新尾碼路徑 | 已啟用 Hive 相容? | 存取日誌會傳送至 |
---|---|---|---|---|
amzn-s3-demo-bucket/MyLogPrefix |
無 | 無 | 否 | amzn-s3-demo-bucket/MyLogPrefix/ |
amzn-s3-demo-bucket/MyLogPrefix |
myFolderA/ |
myFolderA/ |
否 | amzn-s3-demo-bucket/MyLogPrefix/myFolderA/ |
amzn-s3-demo-bucket/MyLogPrefix |
myFolderA/{yyyy} |
myFolderA/{yyyy} |
是 | amzn-s3-demo-bucket/MyLogPrefix/myFolderA/year=2025 |
沒有字首的 Amazon S3 儲存貯體
Amazon S3 儲存貯體名稱 | 您在尾碼路徑中指定的分割區 | 已更新尾碼路徑 | 已啟用 Hive 相容? | 存取日誌會傳送至 |
---|---|---|---|---|
amzn-s3-demo-bucket |
無 | AWSLogs/{account-id}/CloudFront/ |
否 | amzn-s3-demo-bucket/AWSLogs/ |
amzn-s3-demo-bucket |
myFolderA/ |
AWSLogs/{account-id}/CloudFront/myFolderA/ |
否 | amzn-s3-demo-bucket/AWSLogs/ |
amzn-s3-demo-bucket |
myFolderA/ |
AWSLogs/{account-id}/CloudFront/myFolderA/ |
是 | amzn-s3-demo-bucket/AWSLogs/aws-account-id= |
amzn-s3-demo-bucket |
myFolderA/{yyyy} |
AWSLogs/{account-id}/CloudFront/myFolderA/{yyyy} |
是 | amzn-s3-demo-bucket/AWSLogs/aws-account-id= |
AWS 帳戶 ID 做為分割區
Amazon S3 儲存貯體名稱 | 您在尾碼路徑中指定的分割區 | 已更新尾碼路徑 | 已啟用 Hive 相容? | 存取日誌會傳送至 |
---|---|---|---|---|
amzn-s3-demo-bucket |
無 | AWSLogs/{account-id}/CloudFront/ |
是 | amzn-s3-demo-bucket/AWSLogs/aws-account-id= |
amzn-s3-demo-bucket |
myFolderA/{accountid} |
AWSLogs/{account-id}/CloudFront/myFolderA/{accountid} |
是 | amzn-s3-demo-bucket/AWSLogs/aws-account-id= |
備註
-
{account-id}
變數會保留給 CloudFront。如果您指定沒有字首的 Amazon S3 儲存貯體,CloudFront 會自動將此變數新增至尾碼路徑。如果您的日誌與 Hive 相容,此變數會顯示為aws-account-id
。 -
您可以使用
{accountid}
變數,讓 CloudFront 將您的帳戶 ID 新增至尾碼路徑。如果您的日誌與 Hive 相容,此變數會顯示為accountid
。 -
如需尾碼路徑的詳細資訊,請參閱 S3DeliveryConfiguration。
傳送至 Amazon S3 的存取日誌範例
#Fields: date time x-edge-location asn timestamp(ms) x-host-header cs(Cookie) 2024-11-14 22:30:25 SOF50-P2 16509 1731623425421 d111111abcdef8.cloudfront.net examplecookie=value2
停用標準記錄
如果您不再需要分發的標準記錄,您可以停用該記錄。
停用標準記錄
-
登入 CloudFront 主控台。
-
選擇分佈,然後選擇分佈 ID。
-
選擇記錄,然後在標準日誌目的地下,選取目的地。
-
選擇管理,然後選擇刪除。
-
如果您有多個標準記錄,請重複上一個步驟。
注意
當您從 CloudFront 主控台刪除標準記錄時,此動作只會刪除交付和交付目的地。它不會從您的 刪除交付來源 AWS 帳戶。若要刪除交付來源,請在 aws logs delete-delivery-source --name DeliverySourceName
命令中指定交付來源名稱。如需詳細資訊,請參閱《Amazon CloudWatch Logs API 參考》中的 DeleteDeliverySource。
疑難排解
使用下列資訊來修正使用 CloudFront 標準記錄 (v2) 時的常見問題。
交付來源已存在
當您為分佈啟用標準記錄時,您可以建立交付來源。然後,您可以使用該交付來源來建立您想要的目的地類型的交付:CloudWatch Logs、Firehose、Amazon S3。目前,每個分佈只能有一個交付來源。如果您嘗試為相同的分佈建立另一個交付來源,則會出現下列錯誤訊息。
This ResourceId has already been used in another Delivery Source in this account
若要建立另一個交付來源,請先刪除現有的交付來源。如需詳細資訊,請參閱《Amazon CloudWatch Logs API 參考》中的 DeleteDeliverySource。
我變更了尾碼路徑,而 Amazon S3 儲存貯體無法接收我的日誌
如果您啟用標準記錄 (v2) 並指定不含字首的儲存貯體 ARN,CloudFront 會將下列預設值附加至尾碼路徑:AWSLogs/{account-id}/CloudFront
。如果您使用 CloudFront 主控台或 UpdateDeliveryConfiguration API 操作來指定不同的尾碼路徑,則必須更新 Amazon S3 儲存貯體政策以使用相同的路徑。
範例:更新尾碼路徑
-
您的預設尾碼路徑為
AWSLogs/{account-id}/CloudFront
,而您將其取代為myFolderA
。 -
由於您的新字尾路徑與 Amazon S3 儲存貯體政策中指定的路徑不同,因此不會交付您的存取日誌。
-
您可以執行下列其中一個步驟:
-
將 Amazon S3 儲存貯體許可從 更新
amzn-s3-demo-bucket/AWSLogs/
為<your-account-ID>
/CloudFront/*amzn-s3-demo-bucket/myFolderA/*
。 -
更新您的記錄組態以再次使用預設尾碼:
AWSLogs/{account-id}/CloudFront
-
如需詳細資訊,請參閱許可。
刪除日誌檔案
CloudFront 不會自動從目的地刪除日誌檔案。如需有關刪除日誌檔案的資訊,請參閱下列主題:
Amazon S3
-
《Amazon Simple Storage Service 主控台使用者指南》中的刪除物件
CloudWatch Logs
-
《Amazon CloudWatch Logs 使用者指南》中的使用日誌群組和日誌串流
-
Amazon CloudWatch Logs API 參考中的 DeleteLogGroup
Firehose
-
Amazon Data Firehose API 參考中的 DeleteDeliveryStream
定價
CloudFront 不收取啟用標準日誌的費用。不過,視您選取的日誌交付目的地而定,您可能會產生交付、擷取、儲存或存取的費用。如需詳細資訊,請參閱 Amazon CloudWatch Logs 定價
如需每個 定價的詳細資訊 AWS 服務,請參閱下列主題:
-
注意
雖然儲存和存取日誌檔案會產生 Amazon S3 費用,但將日誌傳送到 Amazon S3 不會產生額外費用。如果您啟用 Parquet 選項將存取日誌轉換為 Apache Parquet,此選項會產生 CloudWatch 費用。如需詳細資訊,請參閱 CloudWatch 定價的已修訂日誌一節
。