2011-02-02 3 views
-1

amazon ses에 대한 나의 요청이 GMT가 만료되었다고보고하고 있습니다. 어떤 사람들은 아마존에 대한 요청에 UTC 날짜 형식을 사용하고 sincronized 시간을 사용하라고했습니다.amazon ses 요청에 대한 utc 시간을 검색하는 방법은 무엇입니까?

코드가 펄에 있고 라인은 다음과 같습니다 질문은

$params{'Timestamp'} = sprintf("%04d-%02d-%02dT%02d:%02d:%02d.000Z",sub {($_[5]+1900,$_[4]+1,$_[3],$_[2],$_[1],$_[0])}->(gmtime(time))); 

... 난 UTC 형식이 원하는하지만 난 잘 모릅니다 전혀 펄 언어 =의

+0

GMT와 UTC의 차이는 최대 0.9 초뿐입니다. 모든 의도와 목적에 따라 동일한 것으로 간주 할 수 있습니다. "GMT 만료", "UTC 날짜 형식"및 "동기화 된 시간"이란 무엇을 의미합니까? – CanSpice

+0

[root @ localhost amazon] # ./ses-get-stats.pl -k aws-credentials -q 요청 타임 스탬프 : Wed, 02 Feb 2011 16:39:48 GMT가 만료되었습니다. 서버 시간은 300 초 이내 여야합니다. –

+1

정보가 충분하지 않습니다. $ params { 'Timestamp'}의 형식은 무엇입니까? 아마존을 다루기 위해 어떤 모듈을 사용하고 있습니까? "전혀 모른다"Perl로 코딩하는 이유는 무엇입니까? – mscha

답변

3

내가 볼 때마다 +1900 코드를 사용하면 일반적으로 이러한 저수준 datetime 계산을 수동으로 수행 할 필요가 없기 때문입니다. 대신 당신을 위해 모든 계산 및 서식을 할 DateTime 같은 라이브러리를 사용

use DateTime; 
use Time::HiRes 'time'; 

my $dt = DateTime->from_epoch(epoch => time, time_zone => 'UTC'); 
my $timestamp_string = $dt->strftime('%FT%T.%3NZ'); 

는 생산 : 2011-02-02T18:37:03.145Z


PS. 서버를 Amazon과 동기화하는 데 어려움이있는 경우 시계가 흐려 졌을 가능성이 큽니다. ntpd와 같은 서비스를 설치하여 시계를 동기화 된 상태로 유지해야합니다. 어려움이있는 경우 serverfault.com을 참조하십시오.

+0

이 문제를 해결하지 못했습니다. 요청은 여전히 ​​이와 같이 끝납니다 -> Request timestamp : Thu, 03 Feb 2011 02:04:57 GMT가 만료되었습니다. 서버 시간은 300 초 이내 여야합니다. –

+0

@ Fabio : 당신에게 도움이되는 정보가 충분하지 않습니다 - 그 요청이 실제 시간을 타임 스탬프로 사용 했습니까? 서버 시계를 동기화 했습니까? – Ether

관련 문제