6

このエラーが発生する理由を誰かが言うことができますか?

Amazonサーバーに接続した後、インスタンスをプルしているときにこれを取得しています。

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>
4

2 に答える 2

7

boto (またはその他の AWS クライアント ライブラリ) によって行われた各リクエストは、暗号で署名され、タイムスタンプが関連付けられています (通常、リクエストの Date ヘッダー)。タイムスタンプは、Amazon の現在時刻の推定に通常 15 分以内で、かなり近い必要があります。タイムスタンプがこの許容範囲外の場合、次のようなエラーが表示されます。

したがって、簡単な答えは、クライアント マシンのシステム時刻を確認することです。不正確なようです。

于 2012-04-10T12:05:19.650 に答える