我想要存取 Amazon Simple Queue Service (Amazon SQS) 佇列。存取佇列需要哪些 SQS 存取政策和 AWS Identity and Access Management (IAM) 政策許可?
解決方案
若要存取 Amazon SQS 佇列,必須將許可新增至 SQS 存取政策、IAM 政策或兩者。特定許可要求會因 SQS 佇列和 IAM 角色是否來自同一個帳戶而有所差異。
同一個帳戶
SQS 存取政策或 IAM 政策中需要允許存取的聲明。
注意:如果 SQS 存取政策或 IAM 政策明確允許存取,但其他政策明確拒絕存取,則會拒絕存取該佇列。
| | |
---|
IAM 使用者政策 | SQS 存取政策 | 結果 |
允許 | 允許 | 允許 |
允許 | 既不允許也不拒絕 | 允許 |
允許 | 拒絕 | 拒絕 |
既不允許也不拒絕 | 允許 | 允許 |
既不允許也不拒絕 | 既不允許也不拒絕 | 隱含拒絕 |
既不允許也不拒絕 | 拒絕 | 拒絕 |
拒絕 | 允許 | 拒絕 |
拒絕 | 既不允許也不拒絕 | 拒絕 |
拒絕 | 拒絕 | 拒絕 |
不同的帳戶
SQS 存取政策和 IAM 政策中都需要允許存取的聲明。
| | |
---|
IAM 使用者政策 | SQS 存取政策 | 結果 |
允許 | 允許 | 允許 |
允許 | 既不允許也不拒絕 | 隱含拒絕 |
允許 | 拒絕 | 拒絕 |
既不允許也不拒絕 | 允許 | 隱含拒絕 |
既不允許也不拒絕 | 既不允許也不拒絕 | 隱含拒絕 |
既不允許也不拒絕 | 拒絕 | 拒絕 |
拒絕 | 允許 | 拒絕 |
拒絕 | 既不允許也不拒絕 | 拒絕 |
拒絕 | 拒絕 | 拒絕 |
政策聲明範例
下列範例政策顯示必須在 IAM 政策和 SQS 佇列存取政策中設定的許可,以允許 SQS 佇列的跨帳戶存取權。
第一項政策會授予 username1 將訊息傳送至資源 arn:aws:sqs:us-east-1:123456789012:queue_1 的許可。
第二項政策允許 username1 將訊息傳送至佇列。
如需這些政策的詳細資訊,請參閱 IAM 政策類型:如何及何時使用。
username1 的 IAM 政策聲明範例
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": "sqs:SendMessage",
"Resource": "arn:aws:sqs:us-east-1:123456789012:queue_1"
}]
}
queue_1 的 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"
}]
}