谷歌搜索时我没有看到任何答案,所以我可能会问一个愚蠢的问题,但是这里有了!
我想调用aws api来获取我的云服务认为的时间,因为这似乎与我的本地服务器时间不同(虽然数量很小但很大)。
对于更多上下文,我正在运行一个自动化测试,需要检查在S3中由于被测系统工作而创建了一个新对象。创建的对象由AWS根据亚马逊服务器时间在其名称中给出时间戳。我使用此时间戳来区分对象与存储桶中的所有其他对象,因为它将是我在测试运行开始后有一段时间的唯一对象。不幸的是,亚马逊给出的时间最终是在测试运行开始前的几秒钟,因为我的服务器时间领先亚马逊。
因此,如果我可以在测试开始时获得“云”开始时间并进行比较,那么我就不会遇到这个问题。
修改
如果有人遇到同样的问题,我会按照接受的答案的精神在c#中使用这种快速而肮脏的解决方法,但不是那么严格。
public async Task<DateTime> EstimateInternetTime()
{
var httpClient = new HttpClient();
var response = await httpClient.GetAsync("http://google.com");
return response.Headers.Date.Value.UtcDateTime;
}
答案 0 :(得分:3)
没有&#34;云时间&#34;,因此无法确保您的时间戳与AWS中使用的时间戳完全匹配。
您可以做的最好的事情是使用NTP将您的时钟同步到公共NTP服务器。
亚马逊确实拥有自己的NTP服务器池,您可以使用它们:
在许多情况下,EC2实例已配置为使用这些服务器。
请参阅有关在Linux服务器上配置NTP的AWS文档:
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html#configure_ntp