云监视事件调用无法调用sns主题

时间:2018-05-18 12:44:18

标签: amazon-web-services aws-java-sdk

我是AWS CloudWatch的初学者。当我使用AWS java SDK创建CloudWatch事件规则并使用sns主题作为目标时,不会触发该事件。

使用Direct AWS管理控制台创建时,它工作正常。

比较java sdk创建和管理控制台创建时,一切都保持不变。

唯一的区别在于aws管理控制台规则调用,创建了两个指标(调用,TriggeredRules),在java sdk规则调用中,创建了三个指标(调用,TriggeredRules,FailedInvocation)。

2 个答案:

答案 0 :(得分:3)

如果在SNS主题上使用自定义KMS密钥,则还需要在KMS密钥策略中添加以下策略:

{
  "Sid": "CloudwatchEvents",
  "Effect": "Allow",
  "Principal": {
  "Service": "events.amazonaws.com"
},
  "Action": [
     "kms:Encrypt*",
     "kms:Decrypt*",
     "kms:ReEncrypt*",
     "kms:GenerateDataKey*",
     "kms:Describe*"
    ],
     "Resource": "*"
}

答案 1 :(得分:1)

如果您发现它是通过控制台创建的,则可以使用,但是如果您使用API​​(或Terraform之类的工具)来创建它,则无法使用,则可能您没有更新SNS主题政策,因此它允许发布事件来自CloudWatch Events。控制台可以为您做到这一点,但是如果您使用API​​,则还有很多工作要做。

有一个详细的答案here in the FAQ,但总的来说,您需要在您的SNS主题政策中添加(而不是替换):

{
  "Sid" : "CloudWatchEvents",
  "Effect" : "Allow",
  "Resource" : "${aws_sns_topic.events.arn}",
  "Action" : "sns:Publish",
  "Principal" : {
    "Service" : "events.amazonaws.com"
  }
}