INTEGRITY Документация

Включите Amazon Kinesis

Logpush поддерживает Amazon Kinesis ↗ в качестве назначения для всех наборов данных. Каждая запись Kinesis, отправленная Logpush, будет содержать пакет данных, сжатых GZIP, в формате JSON с разделением новой строкой (по умолчанию) или в формате, указанном в output_options параметр при создании задания.

  1. Создайте роль IAM, которую сможет принять на себя Cloudflare Logpush, с указанными ниже доверительными отношениями:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::391854517948:user/cloudflare-logpush"
                ]
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
  1. Убедитесь, что роль IAM имеет разрешение на выполнение действия PutRecord действие в вашем потоке Kinesis. Замените <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 можно указать sts-external-id как destination_conf параметр, чтобы он был включён в запросы задания 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
}'

Настройте Kinesis с помощью ключей доступа IAM

При настройке задания Logpush с помощью ключей доступа IAM убедитесь, что у пользователя IAM есть разрешение на выполнение действия PutRecord действие в вашем потоке Kinesis:

kinesis://<STREAM_NAME>?region=<AWS_REGION>&access-key-id=<AWS_ACCESS_KEY_ID>&secret-access-key=<AWS_SECRET_ACCESS_KEY>

Пример ключа доступа IAM

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