2012-04-09 22 views
6

के साथ उदाहरण खींचते समय खराब अनुरोध क्या कोई शरीर कह सकता है कि मुझे यह त्रुटि क्यों मिल रही है?400 अमेज़ॅन

मुझे अमेज़ॅन सर्वर के कनेक्शन के बाद उदाहरण खींचते समय यह मिल रहा है।

import boto 

con = boto.connect_ec2(aws_access_key_id='XXX',aws_secret_access_key='XXX') 
con.get_all_instances() 

Traceback (most recent call last): 

    File "getAllinstanc.py", line 7, in <module> 

    reservations = ec2conn.get_all_instances() 

    File "c:\jiva\py26\lib\site-packages\boto-2.3.0-py2.6.egg\boto\ec2\connection.py", line 467, in get_all_instances 

    [('item', Reservation)], verb='POST') 
    File "c:\Jiva\py26\lib\site-packages\boto-2.3.0-py2.6.egg\boto\connection.py", line 896, in get_list 

    raise self.ResponseError(response.status, response.reason, body) 

boto.exception.EC2ResponseError: EC2ResponseError: 400 Bad Request 

<?xml version="1.0" encoding="UTF-8"?> 
<Response><Errors><Error><Code>RequestExpired</Code><Message>Request has expired. Timestamp date is 2012-04-09T06:54:53Z</Message></Error></Errors><RequestID>44 
08be18-5d2b-420b-af48-e2cb03</RequestID></Response> 

उत्तर

7

Boto (या किसी अन्य एडब्ल्यूएस क्लाइंट लाइब्रेरी) द्वारा किए गए प्रत्येक अनुरोध क्रिप्टोग्राफी द्वारा हस्ताक्षरित और एक टाइमस्टैम्प इसके साथ जुड़े (अनुरोध में आम तौर पर तिथि हैडर) है। टाइमस्टैम्प को वर्तमान समय के अमेज़ॅन के विचार के 15 मिनट के भीतर, आमतौर पर करीब होना चाहिए। यदि टाइमस्टैम्प इस स्वीकार्य विंडो के बाहर है, तो आपको इस तरह की एक त्रुटि प्राप्त होगी।

तो, संक्षिप्त उत्तर क्लाइंट मशीन पर सिस्टम समय की जांच करना है। यह गलत लगता है।

+0

तो अपने सिस्टम समय बंद है मैं एक ** 401 अनधिकृत हो रही है **, 400-''boto.exception.EC2ResponseError नहीं: EC2ResponseError: 401 अनधिकृत ''' –

2

Amazon's forum पर वर्णित घड़ी के लिए परीक्षण करने के लिए एक अच्छी विधि है।

प्रकार:

wget -S "https://email.us-east-1.amazonaws.com" 

यह एक त्रुटि देता है, लेकिन तिथि शीर्षक में दूरस्थ प्रणाली का समय भी शामिल है। फिर अपने सिस्टम पर date के परिणामों के साथ इसकी तुलना करें (मान लें कि यह यूनिक्स व्युत्पन्न है)।

अपने OS Ubuntu या अन्य डेबियन संस्करण होता है, तो आप इस तरह एक NTP डेमॉन स्थापित करके समय चालू रखने कर सकते हैं:

sudo apt-get install ntp 
संबंधित मुद्दे