根据云计算,获得时间

时间:2017-02-02 17:30:04

标签: amazon-web-services time amazon-s3

谷歌搜索时我没有看到任何答案,所以我可能会问一个愚蠢的问题,但是这里有了!

我想调用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;
 }

1 个答案:

答案 0 :(得分:3)

没有&#34;云时间&#34;,因此无法确保您的时间戳与AWS中使用的时间戳完全匹配。

您可以做的最好的事情是使用NTP将您的时钟同步到公共NTP服务器。

亚马逊确实拥有自己的NTP服务器池,您可以使用它们:

  • 0.amazon.pool.ntp.org
  • 1.amazon.pool.ntp.org
  • 3.amazon.pool.ntp.org
  • 2.amazon.pool.ntp.org

在许多情况下,EC2实例已配置为使用这些服务器。

请参阅有关在Linux服务器上配置NTP的AWS文档:

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html#configure_ntp