由于“拒绝”队列策略,我无法访问我的 Amazon Simple Queue Service (Amazon SQS) 队列。
简短描述
以下示例拒绝策略会拒绝所有 AWS Identity and Access Management (IAM) 实体访问所有 Amazon SQS 队列操作:
{ "Version": "2012-10-17",
"Statement": [
{
"Sid": "deny-sqs-actions",
"Effect": "Deny",
"Principal": "*",
"Action": "SQS:*",
"Resource": "queueNameArn"
}
]
}
解决方法
对 SQS 队列访问问题进行故障排除
如果您无法访问使用拒绝队列策略的队列,请完成以下步骤:
- 使用您的 AWS 账户根用户来访问队列。根用户凭证允许对账户中的所有资源进行完全访问。您可以使用根用户账户删除与该队列关联的拒绝策略。
- 如果拒绝策略限制了特定实体,请尝试使用该策略排除的实体进行访问。
**注意:**验证被排除的实体是否具有访问队列所需的权限。
- 使用 AWS Organizations 管理账户中的 SQSUnlockQueuePolicy AWS 托管式策略。
防止 SQS 队列访问权限丢失
以下最佳实践有助于防止队列访问权限丢失:
包含 Allow 和 Deny 语句的策略示例:
{ "Version": "2012-10-17",
"Id": "Queue1_Policy_UUID",
"Statement": [{
"Sid":"Queue1_Allow_Access",
"Effect": "Allow",
"Principal": {"AWS": "arn:aws:iam::111122223333:user/User1"},
"Action": "sqs:*",
"Resource": "queueNameArn"
}, {
"Sid":"Queue1_Deny_Access",
"Effect": "Deny",
"NotPrincipal": {"AWS": "arn:aws:iam::111122223333:user/User1"},
"Action": "sqs:*",
"Resource": "queueNameArn"
}]
}
上述示例策略允许 IAM 用户 User1 对指定的 SQS 队列执行所有 Amazon SQS 操作。同时,该策略拒绝除 User1 之外的所有主体访问该队列。
注意:****拒绝策略中的 NotPrincipal 元素会排除指定的主体。Allow 语句会向被排除的主体授予访问权限。
如果您无法访问 SQS 队列,请联系 AWS Support
如果您无法使用根用户凭证,或者不知道拒绝策略会排除的实体,请联系 AWS Support。创建支持案例并包含以下信息:
- 确认您已使用根用户凭证来尝试访问队列。包含您无法使用根用户凭证的原因,或者根用户凭证未能解决问题的原因。
- 确认您无法使用 SQSUnlockQueuePolicy AWS 托管式策略,并包含原因。
- 确认您是队列所有者。
- 提供您需要访问队列的详细原因。
相关信息
在 Amazon SQS 中管理访问权限的概述