2015-12-01 78 views
2

我是AWS新手。 我正在关注AWS教程快速入门。 我遵循AWS sqs代码和sqs文档。AWS 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)[email protected]:~/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)[email protected]:~/rahul/PythonPractise/Boto3_Practise$ 

我的问题是,

为什么队列客户端不能列出队列从“资源” 创建,为什么资源不列出从客户端创建的队列。

当我做

(env1)[email protected]:~/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 

是因为这些区域的?

+1

是的,该地区很重要。在拨打电话之前明确地设置我 – Mircea

回答

2

您从您的自定义会话中创建资源,其中ap-southeast-1作为区域。您可以通过boto3默认会话创建客户端,您已将其设置为us-west-2。当你声明一个地区时,你只能访问该地区的资源。