我是AWS CloudWatch的初学者。当我使用AWS java SDK创建CloudWatch事件规则并使用sns主题作为目标时,不会触发该事件。
使用Direct AWS管理控制台创建时,它工作正常。
比较java sdk创建和管理控制台创建时,一切都保持不变。
唯一的区别在于aws管理控制台规则调用,创建了两个指标(调用,TriggeredRules),在java sdk规则调用中,创建了三个指标(调用,TriggeredRules,FailedInvocation)。
答案 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"
}
}