Агент AWS Kinesis не авторизован для выполнения: firehose:PutRecordBatch

Я установил AMI Amazon linux с установленным агентом Kinesis и настроен для отправки журналов в Firehose. Экземпляру EC2 была назначена роль IAM сKinesisFirehoseFullAccessразрешение. Однако при отправке данных я получаю сообщение об ошибке недостаточных разрешений.

Я знаю, что предоставил наивысший уровень разрешений IAM Kinesis, но сейчас у меня пустая стена. Я, конечно же, урежу разрешения позже, но сначала мне нужно, чтобы это доказательство работало.

Из AWS Firehose сделал тестовую отправку в ведро S3. Это сработало нормально. Создавал журналы с помощью генератора поддельных журналов. Затем я запустил службу. Сервис запущен и работает.

Пользователь: arn:aws:sts::1245678012:allowed-role/FirstTech-EC2-KinesisFireHose/i-0bdf3adc7a4d97afa не авторизован для выполнения: firehose:PutRecordBatch на ресурсе: arn:aws:firehose:ap-southeast-1:1245678012:deliverystream/firsttech-ingestion-weblogs (Сервис: AmazonKinesisFirehose; Код состояния: 400; Код ошибки: AccessDeniedException;

localhost (Agent.MetricsEmitter RUNNING) com.amazon.kinesis.streaming.agent. Агент: Ход выполнения: проанализировано 900 записей (220430 байт) и 0 записей успешно отправлены адресатам. Время работы: 840058 мс

2 ответа

У меня это работает, чтобы агент aws kinesis отправлял данные в поток данных kinesis на случай, если у кого-то еще есть проблемы. У меня были те же проблемы после присоединения правильной роли iam и разрешений политики к экземпляру ec2, который должен был отправлять записи в поток данных kinesis. Я просто удалил ссылки на aws firehose в файле конфигурации. Вам не нужно использовать ключи, встроенные в сам экземпляр ec2, достаточно роли iam.

введите описание изображения здесь

Убедитесь, что вы создаете Kinesis Firehose с консоли, чтобы убедиться, что все необходимые доступы IAM создаются по умолчанию.

Затем в вашем экземпляре убедитесь, что ваш agent.json верен:

      {
  "cloudwatch.emitMetrics": true,
  "flows": [
    {
      "filePattern": "/var/log/pathtolog",
      "deliveryStream": "kinesisstreamname"    }
  ]
}

Убедитесь, что у экземпляра EC2 есть необходимые разрешения для отправки данных в Kinesis:

      {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "cloudwatch:PutMetricData",
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "firehose:PutRecord",
                "firehose:PutRecordBatch"
            ],
            "Resource": "arn:aws:firehose:us-east-1:accountid:deliverystream/deliverstreamname"
        }
    ]
}

Также убедитесь, что ваш агент kinesis может собирать данные из любого каталога экземпляра. Самый простой способ сделать это — добавить агент в группу sudoers.

      sudo usermod -aG sudo aws-kinesis-agent-user

Другие вопросы по тегам