Amazon MQ не может публиковать логи в CloudWatch

Я проверил вариант с широким доступом к политике и дошел до той же точки - группы журналов созданы, а поток журналов - нет.

Затем следуйте https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/amazon-mq-configuring-cloudwatch-logs.html и ожидаемый результат - получение этих сообщений в CloudWatch, но ничего не происходит.

Цель состоит в том, чтобы иметь аудит и общие журналы MQ в CloudWatch. Кому-нибудь удалось транслировать логи MQ в CloudWatch? Как я мог дальше отлаживать это?

2 ответа

Или, если вы используете AWS Cli, вы можете попробовать

aws --region [your-region] logs put-resource-policy --policy-name AmazonMQ-logs \
--policy-document '{
"Statement": [
    {
        "Action": [
            "logs:CreateLogStream",
            "logs:PutLogEvents"
        ],
        "Effect": "Allow",
        "Principal": {
            "Service": "mq.amazonaws.com"
        },
        "Resource": "arn:aws:logs:*:*:log-group:/aws/amazonmq/*"
    }
],
"Version": "2012-10-17"
}'

Мне удалось создать Amazon MQ Broker с включенным ведением журналов и публикацией журнала, переданного в Cloudwatch с помощью поставщика terraform 1.43.2 - мой проект заблокирован на более старой версии поставщика tf, поэтому, если вы используете более новую версию, вы все должно быть в порядке

https://github.com/terraform-providers/terraform-provider-aws/blob/master/CHANGELOG.md#1430-november-07-2018

Это была политика, которую я не понял правильно с первого раза, и которая требовалась MQ для публикации в Cloudwatch:

data "aws_iam_policy_document" "mq-log-publishing-policy" {
  statement {
    actions = [
      "logs:CreateLogStream",
      "logs:PutLogEvents",
    ]

    resources = ["arn:aws:logs:*:*:log-group:/aws/amazonmq/*"]

    principals {
      identifiers = ["mq.amazonaws.com"]
      type        = "Service"
    }
  }
}

resource "aws_cloudwatch_log_resource_policy" "mq-log-publishing-policy" {
  policy_document = "${data.aws_iam_policy_document.mq-log-publishing-policy.json}"
  policy_name     = "mq-log-publishing-policy"
}

Убедитесь, что эта политика была применена правильно, иначе ничего не появится в Cloudwatch. Я сделал это, используя aws cli:

 aws --profile my-testing-profile-name --region my-profile-region logs describe-resource-policies

и вы должны увидеть политику в выводе.

Установите агент AWS CLI для Windows и настройте свои учетные данные https://docs.aws.amazon.com/cli/latest/userguide/install-windows.html

Создайте файл JSON в "C:\Users\YOUR-USER\", содержащий вашу политику. Например: C:\Users\YOUR-USER\policy.json. Вы можете просто скопировать его сюда и вставить в свой файл.json:

{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": {"Service": "mq.amazonaws.com"},"Action":["logs:CreateLogStream","logs:PutLogEvents"],"Resource" : "arn:aws:logs:*:*:log-group:/aws/amazonmq/*"}]}

Откройте свой CMD и просто введите:

aws --region eu-central-1 logs put-resource-policy --policy-name amazonmq_to_cloudwatch --policy-document file://policy.json

Отлично сработано! В результате будет создана ПОЛИТИКА РЕСУРСОВ AWS, которую иногда невозможно создать в консоли IAM.

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