Logpush 支持将 Amazon Kinesis ↗ 作为所有数据集的目标。Logpush 发送的每条 Kinesis 记录都包含一批 GZIP 压缩数据,默认采用换行分隔的 JSON 格式,或采用创建作业时在 output_options 参数中指定的格式。
- 为 Cloudflare Logpush 创建要承担(Assume)的 IAM Role,并配置以下信任关系:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::391854517948:user/cloudflare-logpush"
]
},
"Action": "sts:AssumeRole"
}
]
}- 确保该 IAM 角色有权对你的 Kinesis 流执行
PutRecord操作。将<AWS_REGION>、<YOUR_AWS_ACCOUNT_ID>和<STREAM_NAME>替换为你自己的值:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "kinesis:PutRecord",
"Resource": "arn:aws:kinesis:<AWS_REGION>:<YOUR_AWS_ACCOUNT_ID>:stream/<STREAM_NAME>"
}
]
}- 创建 Logpush 作业,
destination_conf字段使用以下格式:
kinesis://<STREAM_NAME>?region=<AWS_REGION>&sts-assume-role-arn=arn:aws:iam::<YOUR_AWS_ACCOUNT_ID>:role/<IAM_ROLE_NAME>- (可选)使用 STS Assume Role 时,你可以在
destination_conf参数中包含sts-external-id,以便将其纳入 Logpush 作业对 Kinesis 的请求。更多信息请参阅 Securely Using External ID for Accessing AWS Accounts Owned by Others ↗。
kinesis://<STREAM_NAME>?region=<AWS_REGION>&sts-assume-role-arn=arn:aws:iam::<YOUR_AWS_ACCOUNT_ID>:role/<IAM_ROLE_NAME>&sts-external-id=<EXTERNAL_ID>$ curl https://api.cloudflare.com/client/v4/zones/$ZONE_TAG/logpush/jobs \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Content-Type: application/json' -d '{
"name": "kinesis",
"destination_conf": "kinesis://<STREAM_NAME>?region=<AWS_REGION>&sts-assume-role-arn=arn:aws:iam::<YOUR_AWS_ACCOUNT_ID>:role/<IAM_ROLE_NAME>",
"dataset": "http_requests",
"enabled": true
}'使用 IAM Access Keys 配置 Logpush 作业时,请确保 IAM 用户有权对你的 Kinesis 流执行 PutRecord 操作:
kinesis://<STREAM_NAME>?region=<AWS_REGION>&access-key-id=<AWS_ACCESS_KEY_ID>&secret-access-key=<AWS_SECRET_ACCESS_KEY>$ curl https://api.cloudflare.com/client/v4/zones/$ZONE_TAG/logpush/jobs \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Content-Type: application/json' -d '{
"name": "kinesis",
"destination_conf": "kinesis://<STREAM_NAME>?region=<AWS_REGION>&access-key-id=<AWS_ACCESS_KEY_ID>&secret-access-key=<AWS_SECRET_ACCESS_KEY>",
"dataset": "http_requests",
"enabled": true
}'