我想要记录传送到我的 Amazon CloudFront 分配的请求。如何启用日志记录,以及如何在标准日志记录和实时日志记录之间进行选择?
简短描述
CloudFront 标准日志或访问日志详细记录向 CloudFront 分配发出的每个请求。这些日志将传送到 Amazon Simple Storage Service (Amazon S3) 存储桶。CloudFront 不对标准日志进行收费。但是,在 Amazon S3 上存储和访问文件会产生 Amazon S3 费用。
CloudFront 实时日志实时提供有关对分配发出的请求的信息。您可以配置要在日志记录中接收的请求和特定字段的百分比。这些日志将传送到 Amazon Kinesis Data Streams。实时日志根据生成的日志行数收费。有关 CloudFront 定价的更多信息,请参阅 CloudFront 定价。有关 Kinesis Data Streams 费用的更多信息,请参阅 Amazon Kinesis Data Streams 定价。
解决方案
启用 CloudFront 标准日志
在为 CloudFront 分配启用标准访问日志之前,请注意:
- 请勿选择将 S3 Object Ownership 设置为强制存储桶所有者的 Amazon S3 存储桶。此设置将移除存储桶及存储桶中对象的网络访问控制列表(ACL),这意味着 CloudFront 无法将日志文件传送到存储桶。
- CloudFront 不向以下 AWS 区域的 Amazon S3 存储桶传送标准日志: 非洲(开普敦)、亚太地区(香港)、亚太地区(雅加达)、欧洲地区(米兰)和中东(巴林)。
- 对于要将日志传送到的 Amazon S3 存储桶,您的 AWS 账户必须拥有其s3:GetBucketAcl 和 s3:PutBucketAcl 权限。
- Amazon S3 存储桶的网络 ACL 必须授予您的 AWS 账户 FULL_CONTROL。如果您是存储桶所有者,则您的账户默认拥有此权限。如果您不是存储桶所有者,则存储桶所有者必须更新存储桶的 ACL。
- 如果 Amazon S3 存储桶通过客户管理的密钥采用 AWS KMS 密钥 (SSE-KMS) 的服务器端加密,则您必须拥有 SSE-KMS 存储桶的必需密钥策略。
要为 CloudFront 分配启用标准日志记录,请执行以下步骤:
- 访问 CloudFront console(CloudFront 控制台)。
- 选择要更新的分配。
- 在 General(常规)选项卡中的 Settings(设置)下,选择 Edit(编辑)。
- 对于 Standard logging(标准日志记录),选择 On(启用)。
- 选择您想要 CloudFront 将日志文件传送到的 S3 存储桶。您可以为文件名指定一个可选的前缀。
- (可选)对于 Cookie logging(Cookie 日志记录),选择 On(启用)或 Off(关闭)。如果启用,无论您选择将哪些 Cookie 转发到源,CloudFront 都会记录所有请求中的 Cookie。
- 选择 Save changes(保存更改)。
启用 CloudFront 实时日志
- 访问 CloudFront console(CloudFront 控制台)。
- 在左侧导航中,选择 Logs(日志)。
- 选择 Real-time configurations(实时配置)选项卡。
- 选择 Create configuration(创建配置)。
- 对于 Sampling rate(采样率),键入要接收实时日志记录的请求的百分比。
- 对于 Fields(字段),选择要在日志记录中接收的特定字段。在 Choose options(选择选项)下拉列表中,选择要包含在配置中的任何字段。
- 选择要接收实时日志的一个或多个 Kinesis 数据流。
注意: 系统将 CloudFront 实时日志传送到您在 Amazon Kinesis Data Streams 中选择的数据流。要读取和分析实时日志,您可以构建自己的 Kinesis 数据流使用器。或者,使用 Amazon Kinesis Data Firehose 将日志数据发送到 Amazon S3、Amazon Redshift、Amazon OpenSearch Service 或第三方日志处理服务。
- 对于 IAM role(IAM 角色),选择为控制台 Create new service role(创建新服务角色)以为您创建 IAM 角色。要使用此选项,您必须拥有创建 IAM 角色的权限。
- (可选)在 Distribution(分配)部分中,选择要附加到实时日志配置中的 CloudFront 分配和缓存行为。
- 选择 Create configuration(创建配置)。