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

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

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

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


person mattmin    schedule 10.12.2018    source источник
comment
Как вам удалось получить логи в CW?   -  person asur    schedule 26.09.2019
comment
Я использовал terraform (см. Комментарий ниже). Вы также можете использовать aws cli для установки политики IAM aws --region us-east-1 logs put-resource-policy --policy-name AmazonMQ-logs \ --policy-document '{ "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/*" } ] }' Я помню, что перезапуск MQ после включения журналов из консоли AWS помог.   -  person mattmin    schedule 01.10.2019


Ответы (3)


Мне удалось создать 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

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

person mattmin    schedule 11.12.2018

Или, если вы используете 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"
}'
person DoT    schedule 12.12.2018

Установите агент 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.

person djbrunoatimix    schedule 11.03.2020