Cloudflare Logpush 支持通过 Cloudflare 仪表板或 API 将日志直接推送到 Amazon S3。使用 AWS GovCloud 区域的客户应使用我们的 S3 兼容端点,而不是 Amazon S3 端点。
-
在 Cloudflare 仪表板中,前往账户或域名(也称为 zone)级别的 Logpush(日志推送) 页面。
账户级别:Go to Logpush ↗
域名(也称为 zone)级别:Go to Logpush ↗
-
根据你的选择,可分别访问账户范围数据集与 zone 范围数据集。
-
选择 Create a Logpush job(创建 Logpush 作业)。
-
在 Select a destination(选择目标) 中,选择 Amazon S3。
-
输入或选择以下目标信息:
- Bucket(存储桶) - S3 存储桶名称
- Path(路径) - 存储容器内的存储桶位置
- Organize logs into daily subfolders(按日整理到子文件夹)(推荐)
- Bucket region(存储桶区域)
- 若你的策略要求 AWS SSE-S3 AES256 Server Side Encryption ↗。
- 对于 Grant Cloudflare access to upload files to your bucket(授予 Cloudflare 将文件上传到存储桶的权限),请确保你的存储桶已配置 策略 ↗(若尚未添加):
- 复制 JSON 策略,然后前往 Amazon S3 控制台中的存储桶,将策略粘贴到 Permissions(权限) > Bucket Policy(存储桶策略),并选择 Save(保存)。
输入完目标详细信息后,选择 Continue(继续)。
-
为证明所有权,Cloudflare 会向你指定的目标发送一个文件。要查找令牌,请在所有权验证文件的 Overview(概览) 选项卡中选择 Open(打开) 按钮,然后将其粘贴到 Cloudflare 仪表板以验证你对存储桶的访问权限。输入 Ownership Token(所有权令牌) 并选择 Continue(继续)。
-
选择要推送到存储服务的数据集。
-
在下一步中,你需要配置 Logpush 作业:
- 输入 Job name(作业名称)。
- 在 If logs match(如果日志匹配) 下,可选择要包含和/或从日志中排除的事件。更多信息请参阅 Filters。并非所有数据集都提供此选项。
- 在 Send the following fields(发送以下字段) 中,你可以选择将所有日志推送到存储目标,或有选择地推送所需日志。
-
在 Advanced Options(高级选项) 中,你可以:
- 选择日志中时间戳字段的格式(
RFC3339(默认)、Unix或UnixNano)。 - 为日志选择 采样率,或推送随机采样的日志百分比。
- 为
CVE-2021-44228启用脱敏。此选项会将每次出现的${替换为x{。
- 选择日志中时间戳字段的格式(
-
配置完 Logpush 作业后,选择 Submit(提交)。
Cloudflare 使用 Amazon Identity and Access Management (IAM) 获取对你的 S3 存储桶的访问权限。Cloudflare IAM 用户需要对存储桶具有 PutObject 权限。
日志以 gzip 压缩对象的形式写入该存储桶,并使用 S3 Access Control List (ACL)
Bucket-owner-full-control 权限。
为便于说明,假设你要将日志存储在存储桶 burritobot 的 logs 目录中。则 S3 URL 为 s3://burritobot/logs。
在尝试读取或配置 Logpush 任务之前,请确保已启用 Log Share 权限。更多信息请参阅角色部分。
要启用 Logpush 到 Amazon S3:
-
创建 S3 存储桶。请参阅 Amazon 说明 ↗。
-
编辑下方策略并粘贴到 S3 > Bucket(存储桶) > Permissions(权限) > Bucket Policy(存储桶策略),将
Resource值替换为你自己的存储桶路径。AWSPrincipal由 Cloudflare 拥有,请勿更改。
{
"Id": "<POLICY_ID>",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1506627150918",
"Action": ["s3:PutObject"],
"Effect": "Allow",
"Resource": "arn:aws:s3:::burritobot/logs/*",
"Principal": {
"AWS": ["arn:aws:iam::391854517948:user/cloudflare-logpush"]
}
}
]
}