为什么我的 Amazon SNS 主题无法收到 EventBridge 通知?

上次更新时间:2021 年 12 月 20 日

我设置了 Amazon EventBridge 规则来向我的 Amazon Simple Notification Service (Amazon SNS) 主题发送通知。为什么我的 Amazon SNS 主题无法收到事件通知?

解决方法

验证 EventBridge 规则的目标是否与规则位于同一 AWS 区域

与规则关联的目标必须与规则位于同一个区域

注意:要查看 AWS 资源所在的区域,请查看该资源的 Amazon Resource Name (ARN)

通过查看 EventBridge 规则的“Invocations”和“FailedInvocations”指标来验证问题的原因

CloudWatch 控制台中,查看 EventBridge 规则的 InvocationsFailedInvocations 指标

如果两个指标有一个共同的数据点,则表示 EventBridge 规则通知尝试调用目标但调用失败。要解决此问题,您必须授予 EventBridge 向主题发布消息所需的权限。有关说明,请参阅本文的确认您已授予 EventBridge 向主题发布消息所需的权限部分。

如果只有 Invocations 指标的数据点,则 EventBridge 规则通知未发送至目标。要解决此问题,请纠正目标的错误配置

有关更多信息,请参阅 CloudWatch 用户指南中的查看可用指标

确认您已授予 EventBridge 向主题发布消息所需的权限

您的 Amazon SNS 主题的基于资源的策略必须允许 EventBridge 向主题发布消息。检查您的主题的 AWS Identity and Access Management (IAM) 策略,以确认它有必要的权限,并根据需要添加所需的权限。

重要提示:“events.amazonaws.com”必须作为“服务”值列出。“SNS: Publish” 必须作为“操作”值列出。

要添加所需的权限,请按照我的规则可以运行,但我没有看到任何消息发布到我的 Amazon SNS 主题中的说明进行操作。

允许 EventBridge 将消息发布到 Amazon SNS 主题的 IAM 权限声明示例

{
    "Sid": "AWSEvents_ArticleEvent_Id4950650036948",
    "Effect": "Allow",
    "Principal": {
        "Service": "events.amazonaws.com"
    },
    "Action": "sns:Publish",
    "Resource": "arn:aws:sns:us-east-1:123456789012:My_SNS_Topic"
}

(对于已启用服务器端加密 (SSE) 的主题)确认您的主题有必要的 AWS Key Management Service (AWS KMS) 权限

您的 Amazon SNS 主题必须使用客户托管式 AWS KMS 密钥。此 KMS 密钥必须包含自定义密钥策略,此策略授予 EventBridge 足够的密钥使用权限。

要设置必要的 AWS KMS 权限,请执行以下操作:

1.    创建一个新的客户托管式 KMS 密钥,并且包含 EventBridge 的必要权限 (events.amazonaws.com)

2.    使用刚创建的自定义 KMS 密钥为您的 Amazon SNS 主题配置 SSE

3.    配置允许 EventBridge 向加密主题发布消息的 AWS KMS 权限 (events.amazonaws.com)

允许 EventBridge 向已加密的 Amazon SNS 主题发布消息的 IAM 策略声明示例

{
    "Sid": "Allow CWE to use the key",
    "Effect": "Allow",
    "Principal": {
        "Service": "events.amazonaws.com"
    },
    "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
    ],
    "Resource": "*"
}

这篇文章对您有帮助吗?


您是否需要账单或技术支持?