我需要哪些許可才能存取 Amazon SQS 佇列?

上次更新日期︰2021 年 8 月 24 日

我想要存取 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 將訊息傳送至佇列。

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"
   }]
}

此文章是否有幫助?


您是否需要帳單或技術支援?