使用CDK为SNS主题订阅的死信队列配置权限问题
SNS订阅SQS配置DLQ的权限问题解答
控制台错误原因
控制台提示的Couldn't check Amazon SQS queue permissions. Make sure that the queue exists and that your account has permission to read the attributes of the queue错误,和SNS主题向DLQ发送消息的权限无关,本质是当前登录AWS控制台的IAM账号缺少读取TopicDLQ队列属性的权限(比如sqs:GetQueueAttributes)。给该账号添加对应权限后,即可正常查看订阅详情。
DLQ发送权限是否需要手动配置?
不需要。AWS CDK在通过SqsSubscription配置deadLetterQueue参数时,会自动为SNS订阅的服务主体(而非SNS主题本身)添加向DLQ发送消息的权限,无需手动调用grantSendMessages方法。
代码错误说明
你注释的this.TopicDLQ.grantSendMessages(subscription);代码报错,是因为Subscription对象并未实现IGrantable接口,无法作为权限授予的主体。而且这一步完全多余,CDK已经自动完成了DLQ的权限配置。
额外建议
若要确保控制台能正常访问相关资源,可给控制台使用的IAM账号添加以下权限(按需调整资源ARN范围):
sqs:GetQueueAttributes(针对两个SQS队列)sns:GetSubscriptionAttributes(针对SNS订阅)
内容的提问来源于stack exchange,提问作者Damien Sawyer
相关产品推荐
相关产品推荐

