2

我已经测试了广泛策略访问的变体,并且达到了同一点——创建了日志组,但没有创建日志流。

关注https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/amazon-mq-configuring-cloudwatch-logs.html ,预期结果是在CloudWatch中获取这些消息,但没有任何消息。

目标是在 CloudWatch 中拥有审计和常规 MQ 日志。有没有人设法在 CloudWatch 中流式传输 MQ 日志?我该如何进一步调试呢?

4

3 回答 3

2

我设法创建了启用日志记录的 Amazon MQ 代理,并使用 terraform 的提供程序 1.43.2 将日志消息发布到 Cloudwatch——我的项目锁定了较旧的 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

您应该在输出中看到策略。

于 2018-12-11T22:38:44.820 回答
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"
}'
于 2018-12-12T10:03:02.470 回答
1

安装适用于 Windows 的 AWS CLI 代理并配置您的凭证https://docs.aws.amazon.com/cli/latest/userguide/install-windows.html

在“C:\Users\YOUR-USER\”中创建一个包含您的策略的 JSON 文件。例如: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 RESOURCE POLICY,有时无法在 IAM 控制台中创建。

于 2020-03-11T10:23:19.290 回答