400 Bad Request while pulling instances with amazon

boto

Solution

Each request made by boto (or any other AWS client library) is cryptographically signed and has a timestamp associated with it (usually the Date header in the request). The timestamps have to be reasonably close, usually within 15 minutes, of Amazon's idea of the current time. If the timestamp is outside this acceptable window, you will receive an error like this.

So, the short answer is to check the system time on the client machine. It appears to be inaccurate.

Problem

Can any body say why I'm getting this error? I'm getting this while pulling instances after connection to amazon server. ``` 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> ```

Original source