Какие разрешения мне нужны для доступа к очереди SQS?

Я пытаюсь открыть очередь SQS, но получаю следующую ошибку:

2019-07-09 07:20:31,855 pid 3604 tid  800 ERROR    connection <?xml version="1.0
"?><ErrorResponse xmlns="http://queue.amazonaws.com/doc/2012-11-05/"><Error><Typ
e>Sender</Type><Code>AWS.SimpleQueueService.NonExistentQueue</Code><Message>The
specified queue does not exist or you do not have access to it.</Message><Detail
/></Error><RequestId>fa3bf29c-d5ad-525a-aa55-a70297d241fa</RequestId></ErrorResp
onse>

Я проверил правильность имени очереди.

Вот разрешение, которое я предоставил роли IAM:

enter image description here

т.е.

  "sqs: ChangeMessageVisibility", 
 "sqs: ReceiveMessage", 
 "sqs: SendMessage", 
 

Если я запустил следующее

 aws sqs receive-message --queue-url https://sqs.us-west-2.amazonaws.com/12345678/my-queue

Это не вызовет никаких исключений.

В моем коде я использую boto для подключения к очереди SQS

sqs_conn = boto.sqs.connect_to_region(self.region)
LOG.debug("Getting queue for %s" % queue_name)
return sqs_conn.get_queue(queue_name)

Пропустил ли я какое-либо разрешение на подключение к очереди SQS?

0
задан 9 July 2019 в 10:37
1 ответ

Во-первых, я бы дважды проверил конфигурацию моего приложения, если оно использует правильное имя sqs / регион / настройки учетной записи.

Вот пример того, какие разрешения вам могут потребоваться вашему приложению для работы с вашим SQS.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "sqs:DeleteMessage",
                "sqs:GetQueueUrl",
                "sqs:ListQueues",
                "sqs:ChangeMessageVisibility",
                "sqs:SendMessageBatch",
                "sqs:ReceiveMessage",
                "sqs:SendMessage",
                "sqs:GetQueueAttributes",
                "sqs:ListQueueTags",
                "sqs:ListDeadLetterSourceQueues",
                "sqs:DeleteMessageBatch",
                "sqs:ChangeMessageVisibilityBatch",
                "sqs:SetQueueAttributes"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:sqs:your-region:account-id-number:your-sqs-name"
            ]
        }
    ]
}

Это предоставит вашему приложению доступ для чтения / записи, но не административный доступ.

Команда aws, которую вы выполняете, вероятно, использует ваши локальные учетные данные конфигурации aws, и поэтому она не дает любая ошибка.

Я подозреваю, что основная причина здесь в том, что бото сначала пытается перечислить очередь, прежде чем вообще попытается ее использовать.

Подробнее: Разрешения Amazon SQS API:Действия и ссылки на ресурсы

С уважением.

3
ответ дан 4 December 2019 в 12:15

Теги

Похожие вопросы