配置标准日志记录(v2)
注意
标准日志记录(v2)功能在中国区域不可用。
您可以在创建或更新分配时启用标准日志记录。标准日志记录(v2)包括以下功能:
如果您使用 Amazon S3,则有以下可选功能:
- 
            发送日志到选择的 Amazon Web Services 区域。 
- 
            通过分区整理日志。 
- 
            启用与 Hive 兼容的文件名。 
有关更多信息,请参阅 将日志发送到 Amazon S3。
要开始使用标准日志记录,请完成以下步骤:
- 
            为将接收您的日志的指定 Amazon Web Services 服务 设置所需权限。 
- 
            使用 CloudFront 控制台或 CloudWatch API 配置标准日志记录。 
- 
            查看您的访问日志。 
注意
- 
                如果您启用标准日志记录(v2),这不会影响或更改标准日志记录(旧版)。对于您的分配,在使用标准日志记录(v2)之外,您还可以继续使用标准日志记录(旧版)。有关更多信息,请参阅 配置标准日志记录(旧版)。 
- 
                如果您已经启用了标准日志记录(旧版),并且想要启用在 Amazon S3 中进行标准日志记录(v2),我们建议您指定不同的 Amazon S3 存储桶,或在同一存储桶中使用单独的路径(例如,使用日志前缀或分区)。这可以帮助您跟踪哪些日志文件与哪个分配相关联,并防止日志文件相互覆盖。 
权限
CloudFront 使用 CloudWatch 公开发布的日志来传输访问日志。为此,您需要具有指定 Amazon Web Services 服务 的权限才能启用日志记录传输。
要查看在各个日志记录目标上需要的权限,请选择《Amazon CloudWatch Logs User Guide》中的以下主题。
在您设置了日志记录目标上的权限后,您可以为分配启用标准日志记录。
注意
CloudFront 支持向不同 Amazon Web Services 账户(跨账户)发送访问日志。要启用跨账户传输,两个账户(您的账户和接收账户)都必须具有所需的权限。有关更多信息,请参阅为跨账户传输启用标准日志记录一节或《Amazon CloudWatch Logs User Guide》中的 Cross-account delivery example。
启用标准日志记录
要启用标准日志记录,您可以使用 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),请使用us-east-1区域的中的 CloudWatch API。
- 
                        系统还提供了一个选项,用于在标准日志记录中包含 Cookie。在 CloudFront API 中,这是 IncludeCookies参数。如果您使用 CloudWatch API 配置访问日志并指定要包含 Cookie,则必须使用 CloudFront 控制台或 CloudFront API 来更新您的分配以包含 Cookie。否则,CloudFront 无法向您的日志目标发送 Cookie。有关更多信息,请参阅 Cookie 日志记录。
为分配启用标准日志记录(CloudWatch API)
- 
                    在您创建分配之后,需要获取 Amazon 资源名称(ARN)。 您可以在 CloudFront 控制台的分配页面中找到 ARN,也可以使用 GetDistribution API 操作。分配 ARN 遵循以下格式: arn:aws:cloudfront::123456789012:distribution/d111111abcdef8
- 
                    接下来,使用 CloudWatch PutDeliverySource API 操作为分配创建传输源。 - 
                            输入传输源的名称。 
- 
                            传递分配的 resourceArn。
- 
                            对于 logType,指定ACCESS_LOGS作为要收集的日志的类型。
- 
                            例 Amazon 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 日志组、Firehose 传输流或 Amazon S3 存储桶。
- 
                            对于 outputFormat,请指定日志的输出格式。
- 
                            例 Amazon 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 操作,将 Amazon Identity and Access Management(IAM)策略分配到目标账户。IAM 策略支持将日志从一个账户传输到另一个账户。 
- 
                            
- 
                    使用 CreateDelivery API 操作,将传输源关联到您在前面的步骤中创建的目标。此 API 操作会将传输源与最终目标关联起来。 - 
                            对于 deliverySourceName,指定源名称。
- 
                            对于 deliveryDestinationArn,指定传输目标的 ARN。
- 
                            对于 fieldDelimiter,指定用于分隔各日志字段的字符串。
- 
                            对于 recordFields,指定所需的日志字段。
- 
                            如果您使用 S3,请指定是否使用 enableHiveCompatiblePath和suffixPath。
 例 Amazon 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 控制台的日志页面中,验证分配旁边的标准日志状态是否为已启用。 有关标准日志传输和日志字段的更多信息,请参阅标准日志记录引用。 
注意
要使用 Amazon CloudFormation 为 CloudFront 启用标准日志记录(v2),您可以使用以下 CloudWatch Logs 属性:
ResourceArn 是 CloudFront 分配,LogType 必须是支持的日志类型的 ACCESS_LOGS。
为跨账户传输启用标准日志记录
如果您为 Amazon Web Services 账户启用了标准日志记录功能,并且希望将访问日志传输到其它账户,请确保正确配置源账户和目标账户。CloudFront 分配的源账户将其访问日志发送到目标账户。
在此示例过程中,源账户(111111111111)将其访问日志发送到目标账户(222222222222)中的 Amazon S3 存储桶。要将访问日志发送到目标账户中的 Amazon S3 存储桶,请使用 Amazon CLI。
配置目标账户
对于目标账户,请完成以下过程。
配置目标账户
- 
                    要创建日志传输目标,您可以输入以下 Amazon CLI 命令。此示例使用 MyLogPrefixaws logs put-delivery-destination --namecloudfront-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。
- 
                    保存文件,例如 deliverypolicy.json。
- 
                    要将之前的策略附加到传输目标,请输入以下 Amazon CLI 命令。 aws logs put-delivery-destination-policy --delivery-destination-namecloudfront-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:*"} } }
- 
                    如果您为存储桶使用 Amazon 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。 您可以输入以下 Amazon CLI 命令,替换名称和您的分配 ARN。 aws logs put-delivery-source --names3-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" } }
- 
                创建传输,将源账户的日志传输源对应到目标账户的日志传输目标。 在以下 Amazon CLI 命令中,指定步骤 1:配置目标账户的输出中的传输目标 ARN。 aws logs create-delivery --delivery-source-names3-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 Reference》中的 PutDeliveryDestination。
编辑标准日志记录设置
您可以使用 CloudFront 控制台
有关更多信息,请参阅以下主题:
- 
                要使用 CloudFront 控制台更新分配,请参阅更新分配。 
- 
                要使用 CloudFront API 更新分配,请参阅《Amazon CloudFront API Reference》中的 UpdateDistribution。 
- 
                有关 CloudWatch Logs API 操作的更多信息,请参阅《Amazon CloudWatch Logs API Reference》。 
访问日志字段
您可以选择标准日志记录(旧版)支持的相同日志字段。有关更多信息,请参阅日志文件字段。
此外,您还可以选择以下实时日志字段。
- 
                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 User Guide》中的 Logs sent to CloudWatch Logs。
备注
- 
                    在您指定 CloudWatch Logs 日志组的名称时,请仅使用正则表达式模式 [\w-]。有关更多信息,请参阅《Amazon CloudWatch Logs API Reference》中的 PutDeliveryDestination API 操作。
- 
                    确认您的日志组资源策略未超过大小限制。请参阅 CloudWatch Logs 主题中的 Log group resource policy size limit considerations 部分。 
将访问日志发送到 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 传输流。然后,将 Firehose 传输流指定为日志传输目标。您必须在美国东部(弗吉尼亚州北部)us-east-1 区域中指定一个 Firehose 传输流。
有关创建传输流的信息,请参阅创建 Amazon Data Firehose 传输流。
创建传输流之后,您必须具有所需的权限来启用标准日志记录。有关的更多信息,请参阅《Amazon CloudWatch Logs User Guide》中的 Logs sent to Firehose。
注意
在您指定 Firehose 流的名称时,请仅使用正则表达式模式 [\w-]。有关更多信息,请参阅《Amazon CloudWatch Logs API Reference》中的 PutDeliveryDestination API 操作。
将日志发送到 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 的日志。
- 
                启用日志记录后,Amazon 会自动为您添加所需的存储桶策略。 
- 
                您还可以使用所选 Amazon Web Services 区域 中的 S3 存储桶。 
注意
如果您已经启用了标准日志记录(旧版),并且想要启用在 Amazon S3 中进行标准日志记录(v2),我们建议您指定不同的 Amazon S3 存储桶,或在同一存储桶中使用单独的路径(例如,使用日志前缀或分区)。这可以帮助您跟踪哪些日志文件与哪个分配相关联,并防止日志文件相互覆盖。
指定 S3 存储桶
在指定 S3 存储桶作为传输目标时,请注意以下几点。
S3 存储桶名称只能使用正则表达式模式 [\w-]。有关更多信息,请参阅《Amazon CloudWatch Logs API Reference》中的 PutDeliveryDestination API 操作。
如果您为 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。但是,如果您要向 Amazon Glue 发送访问日志,则必须使用 {distributionid} 变量,因为 Amazon 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 Reference》中的 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= | 
Amazon Web Services 账户 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 控制台中删除标准日志记录时,此操作仅删除传输和传输目标。它不会从您的 Amazon Web Services 账户中删除传输源。要删除传输源,请在 aws logs delete-delivery-source --name DeliverySourceName 命令中指定传输源名称。有关更多信息,请参阅《Amazon CloudWatch Logs API Reference》中的 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 Reference》中的 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 User Guide》中的 Working with log groups and log streams 
- 
                《Amazon CloudWatch Logs API Reference》中的 DeleteLogGroup 
Firehose
- 
                《Amazon Data Firehose API Reference》中的 DeleteDeliveryStream 
定价
对于启用标准日志,CloudFront 不收取任何费用。但是,根据您选择的日志传输目标,可能会产生传输、摄取、存储或访问费用。有关更多信息,请参阅 Amazon CloudWatch Logs 定价
有关每项 Amazon Web Services 服务 服务定价的更多信息,请参阅以下主题:
- 
                
                注意日志传输到 Amazon S3 不会产生额外费用,但存储和访问日志文件将产生 Amazon S3 费用。如果您启用 Parquet 选项将您的访问日志转换为 Apache Parquet,则此选项会产生 CloudWatch 费用。有关更多信息,请参阅 CloudWatch 定价中的“公开日志”部分 。