跳转到内容
搜索文档

启用 Amazon Kinesis

最后更新 查看 MarkdownAgent 设置

Logpush 支持将 Amazon Kinesis 作为所有数据集的目标。Logpush 发送的每条 Kinesis 记录都包含一批 GZIP 压缩数据,默认采用换行分隔的 JSON 格式,或采用创建作业时在 output_options 参数中指定的格式。

使用 STS Assume Role 配置 Kinesis(推荐)

  1. 为 Cloudflare Logpush 创建要承担(Assume)的 IAM Role,并配置以下信任关系:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::391854517948:user/cloudflare-logpush"
                ]
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
  1. 确保该 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>"
        }
    ]
}
  1. 创建 Logpush 作业,destination_conf 字段使用以下格式:
kinesis://<STREAM_NAME>?region=<AWS_REGION>&sts-assume-role-arn=arn:aws:iam::<YOUR_AWS_ACCOUNT_ID>:role/<IAM_ROLE_NAME>
  1. (可选)使用 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>

STS Assume Role 示例

$ 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 配置 Kinesis

使用 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>

IAM 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
}'

这篇文档对您有帮助吗?