AWS ElastiCache SNS通知处于Inactive状态无法接收问题排查
问题诊断与解决方案
核心遗漏配置:KMS密钥策略未授权SNS服务使用密钥
当SNS主题使用自定义KMS密钥加密时,SNS服务本身需要具备该KMS密钥的权限来加密ElastiCache发送的消息。你的当前KMS密钥策略仅授权了ElastiCache服务,缺少对SNS服务的权限配置,这会导致SNS无法完成消息加密,进而让ElastiCache的通知状态持续变为Inactive。
需要在KMS密钥策略中添加以下Statement:
{ "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": [ "kms:GenerateDataKey*", "kms:Encrypt" ], "Resource": "*" }
更新后的完整KMS密钥策略示例:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Default", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<account_id>:root" }, "Action": "kms:*", "Resource": "*" }, { "Effect": "Allow", "Principal": { "Service": "elasticache.amazonaws.com" }, "Action": [ "kms:GenerateDataKey*", "kms:Decrypt" ], "Resource": "*" }, { "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": [ "kms:GenerateDataKey*", "kms:Encrypt" ], "Resource": "*" } ] }
其他需要验证的配置点
- 区域一致性:确保ElastiCache复制组与SNS主题处于同一AWS区域,ElastiCache不支持跨区域发送通知到SNS。
- KMS密钥状态:确认KMS密钥处于
Enabled状态,若密钥被禁用或删除,会导致加密操作失败。 - SNS主题订阅有效性:检查SNS主题的订阅是否已确认(比如邮箱订阅需要点击确认链接),未确认的订阅会导致消息无法送达,但这不会直接导致ElastiCache通知状态变为Inactive。
内容的提问来源于stack exchange,提问作者Marco Caberletti
相关产品推荐
相关产品推荐

