Я пытаюсь открыть очередь 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:
т.е.
"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?
Во-первых, я бы дважды проверил конфигурацию своего приложения, если оно использует правильные настройки имени / региона / учетной записи 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: действия и справочник по ресурсам
С уважением.