Amazon web services 云监视事件调用未能调用sns主题
我是AWS CloudWatch的初学者。当我使用AWS java SDK创建CloudWatch事件规则并使用sns主题作为目标时,不会触发该事件 使用DirectAWS管理控制台创建时,它工作正常 在比较JavaSDK创建和管理控制台创建时,一切都保持不变Amazon web services 云监视事件调用未能调用sns主题,amazon-web-services,aws-java-sdk,Amazon Web Services,Aws Java Sdk,我是AWS CloudWatch的初学者。当我使用AWS java SDK创建CloudWatch事件规则并使用sns主题作为目标时,不会触发该事件 使用DirectAWS管理控制台创建时,它工作正常 在比较JavaSDK创建和管理控制台创建时,一切都保持不变 唯一的区别是在aws管理控制台规则调用中,创建了两个度量(调用,TriggeredRules),在java sdk规则调用中,创建了三个度量(调用,TriggeredRules,FailedInvoke) 如果您发现它在通过控制台创建时有
唯一的区别是在aws管理控制台规则调用中,创建了两个度量(调用,TriggeredRules),在java sdk规则调用中,创建了三个度量(调用,TriggeredRules,FailedInvoke) 如果您发现它在通过控制台创建时有效,但在使用API(或类似Terraform的东西)时无效,则很可能您没有更新SNS主题策略,以便允许从CloudWatch事件发布事件。控制台半神奇地为您实现了这一点,但是如果您使用API,您还有更多的工作要做 有一个详细的答案,但长短不一的是,您需要在您的SNS主题策略中添加(而不是替换)类似的内容:
{
"Sid" : "CloudWatchEvents",
"Effect" : "Allow",
"Resource" : "${aws_sns_topic.events.arn}",
"Action" : "sns:Publish",
"Principal" : {
"Service" : "events.amazonaws.com"
}
}
如果您发现它在通过控制台创建时可以工作,但如果您使用API(或类似Terraform的东西)进行创建,则很可能您没有更新SNS主题策略,以便允许从CloudWatch事件发布事件。控制台半神奇地为您实现了这一点,但是如果您使用API,您还有更多的工作要做 有一个详细的答案,但长短不一的是,您需要在您的SNS主题策略中添加(而不是替换)类似的内容:
{
"Sid" : "CloudWatchEvents",
"Effect" : "Allow",
"Resource" : "${aws_sns_topic.events.arn}",
"Action" : "sns:Publish",
"Principal" : {
"Service" : "events.amazonaws.com"
}
}
如果您在SNS主题上使用自定义KMS密钥,还需要将以下策略添加到KMS密钥策略中:
{
"Sid": "CloudwatchEvents",
"Effect": "Allow",
"Principal": {
"Service": "events.amazonaws.com"
},
"Action": [
"kms:Encrypt*",
"kms:Decrypt*",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:Describe*"
],
"Resource": "*"
}
如果您在SNS主题上使用自定义KMS密钥,还需要将以下策略添加到KMS密钥策略中:
{
"Sid": "CloudwatchEvents",
"Effect": "Allow",
"Principal": {
"Service": "events.amazonaws.com"
},
"Action": [
"kms:Encrypt*",
"kms:Decrypt*",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:Describe*"
],
"Resource": "*"
}
欢迎来到SO。我把你的拼写改了一点。通过添加您使用的相关代码,您可以进一步改进您的问题。另请参阅,以获取更多改进问题的提示。欢迎使用SO。我把你的拼写改了一点。通过添加您使用的相关代码,您可以进一步改进您的问题。另请参阅以获取更多提示,以改进您的问题。谢谢!这解决了我的问题。我在控制台中创建了一个SNS主题,并使用FAQ中的CLI命令检索了一个策略JSON。然后我将此策略复制到CloudFormation模板中。谢谢!这解决了我的问题。我在控制台中创建了一个SNS主题,并使用FAQ中的CLI命令检索了一个策略JSON。然后我将此策略复制到CloudFormation模板中。