Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 云监视事件调用未能调用sns主题_Amazon Web Services_Aws Java Sdk - Fatal编程技术网

Amazon web services 云监视事件调用未能调用sns主题

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 CloudWatch的初学者。当我使用AWS java SDK创建CloudWatch事件规则并使用sns主题作为目标时,不会触发该事件

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

在比较JavaSDK创建和管理控制台创建时,一切都保持不变


唯一的区别是在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模板中。