如何配置IAM权限以支持SQS的DeleteMessageBatch接口调用
AWS SQS DeleteMessageBatch 接口IAM权限配置方案
问题根因
SQS的批量操作接口对应独立的IAM权限项,不会被单消息操作权限覆盖。DeleteMessageBatch接口对应的IAM权限为sqs:DeleteMessageBatch,和你已经配置的sqs:DeleteMessage是完全独立的两个权限。你在IAM可选权限列表中找不到该项,大概率是搜索时只输入了DeleteMessage关键词,没有匹配到带Batch后缀的权限项。
配置操作步骤
- 找到你当前用于授权的策略:跨账号访问场景下,需要同时检查访问方的IAM角色/用户授权策略、SQS队列侧的资源策略,两边都要配置对应权限才会生效
- 在策略的Action数组中添加
sqs:DeleteMessageBatch权限项,参考配置示例如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sqs:ReceiveMessage", "sqs:DeleteMessage", "sqs:DeleteMessageBatch" ], "Resource": "arn:aws:sqs:<AWS区域>:<SQS所属账号ID>:<队列名称>" } ] }
- 保存策略变更后,等待1~2分钟让权限全局生效,再重新调用接口测试即可
注意事项
所有SQS批量操作接口都对应独立的IAM权限,如果你后续用到SendMessageBatch、ChangeMessageVisibilityBatch接口,也需要单独添加sqs:SendMessageBatch、sqs:ChangeMessageVisibilityBatch权限,不会被单消息同类型权限自动覆盖。
内容的提问来源于stack exchange,提问作者Trevor Aron
相关产品推荐
相关产品推荐

