AWS sqs 队列不列出所有队列
AWS sqs queues don't list all queues
我是 AWS 新手。
我正在关注 AWS 教程快速入门。
我正在关注 AWS sqs 代码和 sqs 文档。
下面是我写的代码
import boto3
from boto3.session import Session
session = Session(aws_access_key_id="aswe343ffsf34r3fef3f",
aws_secret_access_key="3423d23r2fwwfe232r2r",
region_name="ap-southeast-1")
sqs = session.resource("sqs")
q_client = boto3.client("sqs")
sqs.create_queue(QueueName='test-One',
Attributes = {'DelaySeconds': '5'
})
sqs.create_queue(QueueName='test-Three',
Attributes = {'DelaySeconds': '5' })
#print "The queue path is : ",queue.url
#print dict(queue.attributes)
#print " DILAY ",queue.attributes.get("DelaySeconds")
q_client.create_queue(QueueName='test-Two',Attributes = {
"DelaySeconds" : "5"
})
#q_client.delete_queue(QueueUrl = 'https://us-west-2.queue.amazonaws.com/978916941101/test')
q = q_client.list_queues()
print "QUEUE - URLS ",q.get("QueueUrls")
qList = sqs.queues.all()
for q in qList:
print q.url
以上代码的输出为
(env1)rahul@ubuntu:~/rahul/PythonPractise/Boto3_Practise$ python clientTwo.py
QUEUE - URLS ['https://us-west-2.queue.amazonaws.com/978916941101/test-Two']
https://ap-southeast-1.queue.amazonaws.com/978916941101/test
https://ap-southeast-1.queue.amazonaws.com/978916941101/test-1
https://ap-southeast-1.queue.amazonaws.com/978916941101/test-One
https://ap-southeast-1.queue.amazonaws.com/978916941101/test-Three
(env1)rahul@ubuntu:~/rahul/PythonPractise/Boto3_Practise$
我的问题是,
为什么队列客户端无法列出从 "resource" 创建的队列
以及为什么资源没有列出从客户端创建的队列。
当我
(env1)rahul@ubuntu:~/rahul/PythonPractise/Boto3_Practise$ aws configure list
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************ef3f shared-credentials-file
secret_key ****************2r2r shared-credentials-file
region us-west-2 config-file ~/.aws/config
是不是地区的原因?
您从自定义会话创建资源,该会话的区域是 ap-southeast-1
。您从已设置为 us-west-2
的 boto3 默认会话创建客户端。当您声明一个区域时,您只能访问该区域的资源。
此代码应列出所有队列(带或不带前缀)。这是我放在 GitHub.
上的完整 SQS 示例的一部分
import logging
import boto3
logger = logging.getLogger(__name__)
sqs = boto3.resource('sqs')
def get_queues(prefix=None):
if prefix:
queue_iter = sqs.queues.filter(QueueNamePrefix=prefix)
else:
queue_iter = sqs.queues.all()
queues = list(queue_iter)
if queues:
logger.info("Got queues: %s", ', '.join([q.url for q in queues]))
else:
logger.warning("No queues found.")
return queues
我是 AWS 新手。 我正在关注 AWS 教程快速入门。 我正在关注 AWS sqs 代码和 sqs 文档。
下面是我写的代码
import boto3
from boto3.session import Session
session = Session(aws_access_key_id="aswe343ffsf34r3fef3f",
aws_secret_access_key="3423d23r2fwwfe232r2r",
region_name="ap-southeast-1")
sqs = session.resource("sqs")
q_client = boto3.client("sqs")
sqs.create_queue(QueueName='test-One',
Attributes = {'DelaySeconds': '5'
})
sqs.create_queue(QueueName='test-Three',
Attributes = {'DelaySeconds': '5' })
#print "The queue path is : ",queue.url
#print dict(queue.attributes)
#print " DILAY ",queue.attributes.get("DelaySeconds")
q_client.create_queue(QueueName='test-Two',Attributes = {
"DelaySeconds" : "5"
})
#q_client.delete_queue(QueueUrl = 'https://us-west-2.queue.amazonaws.com/978916941101/test')
q = q_client.list_queues()
print "QUEUE - URLS ",q.get("QueueUrls")
qList = sqs.queues.all()
for q in qList:
print q.url
以上代码的输出为
(env1)rahul@ubuntu:~/rahul/PythonPractise/Boto3_Practise$ python clientTwo.py
QUEUE - URLS ['https://us-west-2.queue.amazonaws.com/978916941101/test-Two']
https://ap-southeast-1.queue.amazonaws.com/978916941101/test
https://ap-southeast-1.queue.amazonaws.com/978916941101/test-1
https://ap-southeast-1.queue.amazonaws.com/978916941101/test-One
https://ap-southeast-1.queue.amazonaws.com/978916941101/test-Three
(env1)rahul@ubuntu:~/rahul/PythonPractise/Boto3_Practise$
我的问题是,
为什么队列客户端无法列出从 "resource" 创建的队列 以及为什么资源没有列出从客户端创建的队列。
当我
(env1)rahul@ubuntu:~/rahul/PythonPractise/Boto3_Practise$ aws configure list
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************ef3f shared-credentials-file
secret_key ****************2r2r shared-credentials-file
region us-west-2 config-file ~/.aws/config
是不是地区的原因?
您从自定义会话创建资源,该会话的区域是 ap-southeast-1
。您从已设置为 us-west-2
的 boto3 默认会话创建客户端。当您声明一个区域时,您只能访问该区域的资源。
此代码应列出所有队列(带或不带前缀)。这是我放在 GitHub.
上的完整 SQS 示例的一部分import logging
import boto3
logger = logging.getLogger(__name__)
sqs = boto3.resource('sqs')
def get_queues(prefix=None):
if prefix:
queue_iter = sqs.queues.filter(QueueNamePrefix=prefix)
else:
queue_iter = sqs.queues.all()
queues = list(queue_iter)
if queues:
logger.info("Got queues: %s", ', '.join([q.url for q in queues]))
else:
logger.warning("No queues found.")
return queues