S3错误: 请求时间和当前时间之间的差异太大

当调用 amazons3.ListObjects 方法时,出现了 请求时间和当前时间之间的差异太大错误

ListObjectsRequest request = new ListObjectsRequest() {
BucketName = BucketName, Prefix = fullKey
};
using (ListObjectsResponse response = s3Client.ListObjects(request))
{
bool result = response.S3Objects.Count > 0;


return result;
}

会是什么呢?

131823 次浏览

本地机器上的时间与当前时间不同步。同步你的系统时钟,问题就会消失。

时钟不同步了。

我按照 这篇文章中的步骤使它重新工作,但是还必须运行以下命令。

sudo ntpdate ntp.ubuntu.com
sudo apt-get install ntp

如果在任何时候您收到一条消息说 NTP 套接字仍在使用,请使用 sudo /etc/init.d/ntp stop停止它并重新运行命令。

使用 ntp 可能不适用于所有基于 Linux 的服务器版本(例如,不再支持过时的 Ubuntu 服务器版本,如果还没有安装,它将阻止您下载 ntp)。

如果这是您的情况,您可以为您的 Linux VM 设置独立的时区: Https://community.rackspace.com/products/f/25/t/650

这样做之后,你可能需要重新设置时间/日期: Http://codeghar.wordpress.com/2007/12/06/manage-time-in-ubuntu-through-command-line

为了解决这个问题,您必须调整客户端的时间,以便最大的时间戳差最多可以达到15分钟。还要为您的系统设置标准时间和区域。

你可在此查阅详情。

以防有人用 Laravel 和 Homestead 找到这个,只需要运行

homestead halt

然后是

homestead up

你可以再来一次了。

这在 OSX 上正确地重置了我的系统时钟。使用 JS SDK 上传的 S3现在在本地 dev 中对我有效

ntpdate us.pool.ntp.org

点击这里了解更多信息

如果您使用的是虚拟机,那么进入虚拟机的时间与实际机器的时间是同步的。仅仅把时间固定在虚拟机上是不能解决问题的。

对于那些使用流浪汉,一个 vagrant halt后面的 vagrant up为我工作。

如果你在 窗户中得到这个错误,按照下面的步骤来解决你的问题. . 改变你的本地时间设置:
步骤1: 点击更改日期和时间设置
步骤2: 从弹出的 Date and Time 窗口单击 上网时间 Tab
步骤3: 下一步点击 < strong > 更改设置
步骤4: 从服务器下拉选择 Time.nist.gov或检查 < a href = “ https://tf.nist.gov/tf-cgi/servers.cgi”rel = “ nofollow noReferrer”> 本网站
步骤5: 单击 OK

重启你的控制台,检查一下,它工作了..。

这也可能是由于在任务外部构造请求对象和在任务内部实际调用 AWS 时使用异步/等待造成的。如果有许多任务正在运行,而且任务没有及时调度,或者有其他操作延迟了对 AWS 的实际调用,则可能会引发此异常。这比您想象的更常见,因为默认的任务调度程序不按 FIFO 顺序处理任务,导致某些任务处于饥饿状态,特别是在重负载情况下。

如果你是在2016年,在伊斯坦布尔这里是一个奇怪的情况,土耳其决定不切换到冬季时间标准无论如何设置您的当地时区莫斯科然后重新启动您的机器。

对于那些在 Windows 中使用 Docker 的用户,请尝试在设置-> 重置-> 重新启动 Docker 中重新启动 Docker 引擎。

我有同样的错误,我正在使用 Docker 为 Mac。简单地重新启动 Docker 为我工作。

我在 MacOS 上使用 Docker for Mac Beta 1.13.1-beta42运行 Jet (Codesship)和 Terraform 时遇到了这个问题。

Failed to read state: Error reloading remote state: RequestTimeTooSkewed: The difference between the request time and the current time is too large.
status code: 403, request id: 9D32BA2A5360FC18

通过重新启动 Docker 解决了这个问题。

正如其他人所说,您的本地时钟与 AWS 不同步。使用 NTP你可以直接把它同步到亚马逊的服务器上,所以你不必担心时钟漂移现在 或者在未来。

注意: 下面的说明是针对 * nix 用户的。我已经添加了一个评论,说明你可能在 Windows 中如何做到这一点,但作为一个非 Windows 用户,我无法验证它们的准确性。

  1. 要安装 NTP,只需根据您的发行版选择以下内容之一:

    apt-get install ntp
    

    或者

    yum install ntp
    

    等等。

  2. 将 NTP 配置为使用 Amazon 服务器,如下所示:

    vim /etc/ntp.conf
    

    在其中,注释掉默认服务器并添加以下内容:

    server 0.amazon.pool.ntp.org iburst
    server 1.amazon.pool.ntp.org iburst
    server 2.amazon.pool.ntp.org iburst
    server 3.amazon.pool.ntp.org iburst
    
  3. 重新启动 ntp 服务:

    sudo service ntp restart
    

资料来源: https://allcloud.io/blog/how-to-fix-amazon-s3-requesttimetooskewed/

还有一篇关于如何让你的时间与 NTP 保持同步的文章: Https://www.digitalocean.com/community/tutorials/how-to-set-up-time-synchronization-on-ubuntu-12-04

我刚开始收到这个错误,同步我的时钟没有帮助。(我已经花了2个小时将它同步到我能找到的每个时间服务器,包括 AWS 服务器,但没有什么作用。)

一年前的2017年12月31日,同样的事情开始发生。在这种情况下,重新启动我的系统,并重建我的服务器(使用 aws java sdk)修复它。我不知道为什么。我认为 AWS 有一些年终时区的特殊性。也有可能在我做这些事情的时候,AWS 时间服务器自我修复了。我没办法验证这个假设。

现在,同样的事情在2018年12月30日突然开始发生。年底的时候不对,但是很接近,看起来很可疑。(除了这些日期,从来没有得到这个错误。)重启和重建这次没有帮助。

这个机器上的开发环境是 Parallels 下的 Windows10。我的系统上没有任何其他更改-因为我已经通过回滚到以前的 Parallels 快照进行了双重检查。我的主机 MacOS 和虚拟 Windows10上的时钟都是正确的。

我怀疑是 AWS 窃听器。

如果这个问题在你的本地主机为 Windows 10

设置时间自动开启和设置时区自动开启 这能解决我的问题。

enter image description here

我出现这个错误是因为我的本地机器的时间和时区设置不正确。把它们改成正确的时间和时区对我来说很有效。

我在 视窗10多克中遇到了同样的问题。你应该一步一步地运行这个命令

docker run --rm --privileged alpine hwclock -s

再来一次

docker run --rm --privileged alpine hwclock -s

最后一个命令 don't forget to set your username and password and your timezone,在 Docker 运行 minIO 时运行 minIO

docker run -p 9000:9000 -e "MINIO_ACCESS_KEY=yourUserName" -e "MINIO_SECRET_KEY=YourPassword" -e "TZ=Europe/Berlin" -v /etc/localtime:/etc/localtime:ro  minio/minio server /data

在 WSL 2或任何基于 Deb 的 Linux (Ubuntu,Mint...)上:

查询日期:

date

快跑:

sudo apt install ntpdate
sudo ntpdate  time.nist.gov

输出示例:

18 Feb 14:27:36 ntpdate[24008]: step time server 132.163.97.4 offset 1009.140848 sec

再次查看日期:

date

重新启动我的 Windows 服务器为我修复了它

时间与站点 time.in 的大约1秒相同,所以它没有关闭。

2021年答案:

AWS.config.update({
accessKeyId: 'xxx',
secretAccessKey: 'xxxx',
correctClockSkew: true
});

对于那些在微软 WLS2 Ubuntu 上面临同样问题的人来说,现在唯一的解决办法是:

sudo hwclock -s

或者

wsl --shutdown

时钟偏移发生在从睡眠中唤醒 Windows 之后。请密切关注 https://github.com/microsoft/WSL/issues/5324,以便从微软获得修复。

如果你使用的是虚拟机,重新启动虚拟机只能在我的虚拟机上工作

+ 1@sompnd-在运行 wsl --shutdown之后,我能够在一个容器中执行 CLI 命令

我的 Mac 也遇到了同样的问题。当我移动到一个不同的时区(PST 到 IST) ,不知何故 OSX 没有选择时区和时间自动变化。所以我不得不手动设置两个,这造成了大约15-20秒的延迟在我的笔记本电脑上。设置自动同步后,时间得到同步,S3 copy 命令开始工作: 作为参考

这是有点粗糙,但这对我工作

  1. 对 s3服务器执行了一个 curl

    curl s3.amazonaws.com -v

然后拿到了这个

* Trying 52.216.141.158...
* TCP_NODELAY set
* Connected to s3.amazonaws.com (52.216.141.158) port 80 (#0)
> GET / HTTP/1.1
> Host: s3.amazonaws.com
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 307 Temporary Redirect
< x-amz-id-2: q2wUOf5ZC7iu2ymbRWUpZaM6GpPLLf/irrntuw/JNB7QYxDzQvcLHQbsbF2dp5zT8rBrGwqnOz0=
< x-amz-request-id: T4H1W4WKBE3F39RM
< Date: Sat, 09 Oct 2021 19:21:24 GMT
< Location: https://aws.amazon.com/s3/
< Server: AmazonS3
< Content-Length: 0
<
* Connection #0 to host s3.amazonaws.com left intact
* Closing connection 0
  1. 有个约会 Sat, 09 Oct 2021 19:21:24 GMT

  2. 用 Ubuntu 设置日期 sudo date --set "Sat, 09 Oct 2021 19:21:24 GMT"

我的代码停止抛出异常 现在我有一个脚本,它每个月定期执行这个操作