Amazon MQ无法在CloudWatch中发布日志

时间:2018-12-10 14:01:01

标签: amazon-web-services amazon-cloudwatch amazon-cloudwatchlogs amazon-mq

我已经测试了多种策略访问权限,并得出了相同的结论–创建了日志组,但没有创建日志流。

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

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

3 个答案:

答案 0 :(得分: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资源策略,有时无法在IAM控制台中创建。

答案 1 :(得分:0)

我设法创建了启用了日志记录的Amazon MQ Broker,并使用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

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

答案 2 :(得分:0)

或者,如果您使用的是aws cli,则可以尝试

//create font using font from asset

Typeface font = Typeface.createFromAsset(
getContext().getAssets(), 
"fonts/androidnation.ttf");

textview.setTypeface(font);