Boto3 - sqs get_queue_url приводит к QueueDoesNotExist - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь прочитать из очереди SQS. Для этого мне нужно получить URL-адрес очереди. это мой код

    sts = boto3.client('sts')
    print('running as:')
    pp.pprint(sts.get_caller_identity())

    sqs = boto3.client('sqs')
    queue_name = settings.SQS_JOBS_TASK_RESULTS_QUEUE
    print('getting queue_name: ', queue_name)
    res = sqs.get_queue_url(QueueName=queue_name)

Из приведенного выше кода видно, что я также подтверждаю свою личность.

sqs.get_queue_url всегда завершается с

botocore.errorfactory.QueueDoesNotExist: Произошла ошибка (AWS.SimpleQueueService.NonExistentQueue) при вызове операции GetQueueUrl: указанная очередь не существует или у вас нет к ней доступа.

Я скопировал и вставил имя очереди из веб-консоли aws. по-прежнему не удается.

Я знаю, что мои разрешения в порядке, потому что, если я пропущу этот шаг, скопируйте, вставьте URL-адрес из веб-консоли и перейдите непосредственно к чтению и записи очереди, это работает.

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 09 мая 2019

Когда я писал этот вопрос, у меня появилась лампочка, что, возможно, есть специальное разрешение для получения URL-адреса очереди.

вот и убедитесь, что вы не забыли добавить sqs:GetQueueUrl вВаша политика.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sqs:GetQueueAttributes",
                "sqs:SendMessage",
                "sqs:ReceiveMessage",
                "sqs:DeleteMessage",
                "sqs:DeleteMessageBatch",
                "sqs:GetQueueUrl"
            ],
            "Resource": "arn:aws:sqs:xxxxxxxxx"
        }
    ]
}
...