RequestTimeTooSkewed: The difference between the request time and the current time is too large
É, eu posso dizer que te entendo. Aconteceu comigo. Como a idéia do blog é ser rápido e prático lá vai. 2 Possibilidades.
Ou você tem uma instância em região diferente do seu S3. Por exemplo: Ec2 criada em São Paulo e Bucket criada nos Eua, ou seu servidor está com um horário bem diferente do S3 (talvez você tenha configurado para algo e está dando diferença). O S3 aceita 15min de diferença de horários, mais que isso ele não permite o upload e exibe esse erro.
Como resolvi no meu caso. Tenho uma instância em SP (sa-east) e criei um Bucket em SP também, mas continuei recebendo esse erro. Por uma necessidade eu alterei a hora do meu servidor EC2 (linux ubuntu) dessa maneira :
$ sudo date 2012171420 (sudo dade mês+dia+hora+min);
E legal, funcionava, mas nada da imagem ir para o S3. Estranho, resolvi então fazer um upload de imagem direto da Amazon ou do Firefox utilizando o S3Fox Organizer e a hora estava igual a do server. Dando o comando $ date no servidor eu obtinha:
Tue Jul 17 14:40:36 UTC 2012 e foi aí que percebi, UTC não estava correto de acordo com Timezone, e o servidor continuava considerando a diferença de horas, pegando o horário antigo que era de 4h de diferença.
Então a melhor forma de alterar o horário do servidor para funcionar o S3 nas mesmas regiões é:
Como eu já tinha alterado antes, voltei a alterar para a hora correta, porque ao alterar o timezone a hora voltou a ser de 4h de diferença, que era a fonte do problema. Agora está assim:
Tue Jul 17 14:40:36 BRT 2012
À partir daí o upload funcionou normalmente.