Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SQS service resource create and get queue fails on boto>=1.29 #7192

Closed
djdevdev opened this issue Jan 6, 2024 · 2 comments
Closed

SQS service resource create and get queue fails on boto>=1.29 #7192

djdevdev opened this issue Jan 6, 2024 · 2 comments
Labels
debugging Working with user to figure out if there is an issue

Comments

@djdevdev
Copy link

djdevdev commented Jan 6, 2024

The following code snippet works using boto<=1.28.64 (latest 1.28 version available on conda) both with and without moto.

# boto3=1.28.64
# moto=4.1.3
# python=3.9.7

import boto3
import moto

queue_name = "blablabla"
sqs = boto3.resource("sqs")
response = sqs.create_queue(QueueName=queue_name)
print(response)
queue = sqs.get_queue_by_name(QueueName=queue_name)
print(queue)
queue.delete()

with moto.mock_sqs():
    sqs = boto3.resource("sqs")
    response = sqs.create_queue(QueueName=queue_name)
    print(response)
    queue = sqs.get_queue_by_name(QueueName=queue_name)
    print(queue)
    queue.delete()
---
sqs.Queue(url='https://sqs.ap-southeast-2.amazonaws.com/123456789012/blablabla')
sqs.Queue(url='https://sqs.ap-southeast-2.amazonaws.com/123456789012/blablabla')
sqs.Queue(url='https://sqs.ap-southeast-2.amazonaws.com/123456789012/blablabla')
sqs.Queue(url='https://sqs.ap-southeast-2.amazonaws.com/123456789012/blablabla')

However upgrading boto gives an error using moto:

# boto3=1.29.1
# moto=4.1.3
# python=3.9.7

import boto3
import moto

queue_name = "blablabla"
sqs = boto3.resource("sqs")
response = sqs.create_queue(QueueName=queue_name)
print(response)
queue = sqs.get_queue_by_name(QueueName=queue_name)
print(queue)
queue.delete()

with moto.mock_sqs():
    queue_name = "blablabla"
    sqs = boto3.resource("sqs")
    response = sqs.create_queue(QueueName=queue_name)
	print(response)
    queue = sqs.get_queue_by_name(QueueName=queue_name)
    print(queue)
    queue.delete()
---
sqs.Queue(url='https://sqs.ap-southeast-2.amazonaws.com/XXX/blablabla')
sqs.Queue(url='https://sqs.ap-southeast-2.amazonaws.com/XXX/blablabla')
{}
{}
Traceback (most recent call last):
  File "/home/ddevilliers/models-pipeline/test.py", line 12, in <module>
    queue.delete()
AttributeError: 'dict' object has no attribute 'delete'

There were underlying SDK changes which some people work around by pinning to a lower boto version, but the fact that it works without moto suggests there is an error between moto 4.1.3 and boto version >=1.29.1.

@bblommers
Copy link
Collaborator

Hi @djdevdev, I'm assuming that this is a duplicate of #6286

This should have been fixed as of moto >= 4.1.11.dev7 - can you upgrade and verify that that's the case?

@bblommers bblommers added the debugging Working with user to figure out if there is an issue label Jan 6, 2024
@djdevdev
Copy link
Author

djdevdev commented Jan 7, 2024

Indeed this is a duplicate of #6286. Apologies had only looked for open issues.

Confirmed resolved in 4.1.11 (needs pip install).

Thanks!

@djdevdev djdevdev closed this as completed Jan 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
debugging Working with user to figure out if there is an issue
Projects
None yet
Development

No branches or pull requests

2 participants