我想要存取 Amazon Simple Queue Service (Amazon SQS) 佇列。我需要知道存取佇列所需的 Amazon SQS 存取政策與 AWS Identity and Access Management (IAM) 政策權限。
解決方法
若要存取 Amazon SQS 佇列,您必須將權限新增至 SQS 存取政策、IAM 政策,或兩者都新增。特定權限需求取決於 SQS 佇列與 IAM 角色是否來自同一個 AWS 帳戶。
相同帳戶
SQS 存取政策或 IAM 政策中需要陳述式以允許存取。
注意: 如果 SQS 存取政策或 IAM 政策其中一項明確允許存取,但另一項政策明確拒絕存取,則會拒絕佇列的存取權。
| | |
|---|
| IAM 使用者政策 | SQS 存取政策 | SQS 存取政策 |
| 允許 | 允許 | 允許 |
| 允許 | 既不允許也不拒絕 | 允許 |
| 允許 | 拒絕 | 拒絕 |
| 既不允許也不拒絕 | 允許 | 允許 |
| 既不允許也不拒絕 | 既不允許也不拒絕 | 隱含拒絕 |
| 既不允許也不拒絕 | 拒絕 | 拒絕 |
| 拒絕 | 允許 | 拒絕 |
| 拒絕 | 既不允許也不拒絕 | 拒絕 |
| 拒絕 | 拒絕 | 拒絕 |
不同帳戶
在 SQS 存取政策與 IAM 政策中,都需要有陳述式才能允許存取。
| | |
|---|
| IAM 使用者政策 | SQS 存取政策 | 結果 |
| 允許 | 允許 | 允許 |
| 允許 | 既不允許也不拒絕 | 隱含拒絕 |
| 允許 | 拒絕 | 拒絕 |
| 既不允許也不拒絕 | 允許 | 隱含拒絕 |
| 既不允許也不拒絕 | 既不允許也不拒絕 | 隱含拒絕 |
| 既不允許也不拒絕 | 拒絕 | 拒絕 |
| 拒絕 | 允許 | 拒絕 |
| 拒絕 | 既不允許也不拒絕 | 拒絕 |
| 拒絕 | 拒絕 | 拒絕 |
政策陳述式範例
以下政策範例顯示您必須在 IAM 政策和 SQS 佇列存取政策上設定的權限。這些政策允許 SQS 佇列的跨帳戶存取權。
username1 的 IAM 政策陳述式範例
以下政策授予 username1 將訊息傳送至資源 arn:aws:sqs:us-east-1:123456789012:queue_1 的權限:
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": "sqs:SendMessage",
"Resource": "arn:aws:sqs:us-east-1:123456789012:queue_1"
}]
}
queue_1 的 SQS 資源政策陳述式範例
以下政策允許 username1 將訊息傳送至 SQS 佇列:
{ "Version": "2012-10-17",
"Id": "Queue1_Policy",
"Statement": [{
"Sid":"Queue1_AllActions",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::111122223333:user/username1"
]
},
"Action": "sqs:SendMessage",
"Resource": "arn:aws:sqs:us-east-1:123456789012:queue_1"
}]
}
如需更多資訊,請參閱 IAM 政策類型: 如何以及何時使用。