【问题标题】:S3 Error: The difference between the request time and the current time is too largeS3 错误:请求时间与当前时间相差太大
【发布时间】:2011-06-13 19:50:46
【问题描述】:

调用方法amazons3.ListObjects时出现错误请求时间与当前时间相差太大

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

    return result;
}

可能是什么?

【问题讨论】:

    标签: amazon-s3


    【解决方案1】:

    您本地盒子上的时间与当前时间不同步。同步您的系统时钟,问题就会消失。

    【讨论】:

    • 我遇到了同样的错误。请告诉我如何执行同步
    • 我梦想有一天错误消息更直接,“您的服务器时间设置错误”对我来说会很好。
    • 有什么办法可以避免这种情况?我不想更改计算机的时区,因为我在不同的国家/地区。
    • 时区设置无关紧要。当前设定时间的准确性很重要。
    • 在澳大利亚,我们刚刚进入夏令时(提前 1 小时),现在抛出了这个错误。我的时钟是正确的。似乎是 AWS 中的一个错误。
    【解决方案2】:

    对于那些使用 Vagrant 的人,vagrant halt 后跟 vagrant up 对我有用。

    【讨论】:

    • 这拯救了我的一天,thnx
    • 不是所有的英雄都穿斗篷!工作了一个款待。谢谢
    【解决方案3】:

    时钟不同步。

    我按照this post 中的步骤让它再次工作,但还必须运行以下命令。

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

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

    【讨论】:

    • 谢谢!像魅力一样工作。 :)
    • 是的,这解决了我的问题。如果您没有 apt-get,请改用 yum:sudo yum install ntp -y
    • 工作。不过,我只需要在我的服务器上运行 sudo ntpdate ntp.ubuntu.com
    • 只有 sudo ntpdate ntp.ubuntu.com 在 WSL2 + Ubuntu 上也为我工作,而所有其他解决方案都没有。
    【解决方案4】:

    我遇到了同样的错误,我正在使用 Docker for Mac。只需重新启动 Docker 对我有用。

    【讨论】:

      【解决方案5】:

      对于那些在 Windows 中使用 Docker 的用户,请尝试在 Setting->Reset->Restart Docker 中重新启动 Docker Engine。

      【讨论】:

      • 这不是答案。可能是一些评论。
      【解决方案6】:

      如果有人使用 Laravel 和 Homestead 发现这个,只需运行

      homestead halt
      

      紧随其后

      homestead up
      

      你可以再去一次。

      【讨论】:

        【解决方案7】:

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

        注意:以下说明适用于 *nix 用户。我添加了一条评论,说明您在 Windows 中的操作方式,但作为非 Windows 用户,我无法验证其准确性。

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

          apt-get install ntp
          

          yum install ntp 
          

          等等

        2. 配置 NTP 以使用亚马逊服务器,如下所示:

          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://www.allcloud.io/how-to/how-to-fix-amazon-s3-requesttimetooskewed/

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

        【讨论】:

        • C:\Users\User>apt-get install ntp 'apt-get' 不是内部或外部命令、可运行程序或批处理文件。
        • apt-get 是特定 Linux 发行版的软件包安装程序。对于 Windows,您可以在线搜索同步到 NTP 的最佳方式。这是我为 win10 找到的参考:tenforums.com/tutorials/…,这是 Windows Server 的参考:support.microsoft.com/en-us/help/816042/…
        【解决方案8】:

        2021 年答案:

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

        【讨论】:

          【解决方案9】:

          在 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
          

          【讨论】:

          • 这在 WSL 2 上的 Ubuntu 上对我有用。几天前我第一次尝试修复这个问题时,我尝试了另一个似乎是通用修复的命令。它类似于sudo systemctl <reset_time>,我收到一条错误消息,提示“systemd 未加载”或类似的内容,因为它是 WSL。这个命令虽然有效。我运行它,它说它纠正了某种偏移,然后当我运行 aws s3 ls 时,我不再收到错误。
          【解决方案10】:

          这会在 OSX 上正确重置我的系统时钟。使用 JS SDK 的 S3 上传现在在本地开发中适用于我

          ntpdate us.pool.ntp.org
          

          Read more about this here

          【讨论】:

            【解决方案11】:

            这也可能是由于在任务外部使用 async/await 构造请求对象以及在任务内部对 AWS 的实际调用造成的。如果有很多任务正在运行并且任务没有及时调度,或者有其他操作延迟了对 AWS 的实际调用,则可能会引发此异常。

            【讨论】:

              【解决方案12】:

              如果你在 Windows 10 的 localhost 中出现此问题

              自动设置时间并自动设置时区 这解决了我的问题。

              【讨论】:

                【解决方案13】:

                如果您在 windows 中遇到此错误,请按照以下步骤解决您的问题。更改您的当地时间设置:
                第 1 步: 点击更改日期并时间设置
                步骤 2: 在弹出的日期和时间窗口中点击 Internet Time 标签
                步骤 3: 下一步 点击更改设置
                第 4 步: 从服务器下拉列表中选择 time.nist.gov 或检查 this website
                第5步:点击确定

                重新启动控制台并检查。它有效...

                【讨论】:

                  【解决方案14】:

                  对于在 Microsoft WLS2 Ubuntu 上遇到同样问题的用户,目前唯一的解决方法是:

                  sudo hwclock -s
                  

                  或者

                  wsl --shutdown 
                  

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

                  【讨论】:

                  • 运行 sudo ntpdate time.nist.gov 会修复它
                  【解决方案15】:

                  如果您正在使用虚拟机,重新启动虚拟机只适用于我的虚拟机

                  【讨论】:

                    【解决方案16】:

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

                    Check the full Detail here.

                    【讨论】:

                    • @BhanuTez:你的文章可能会被删除。已经7年了:)
                    【解决方案17】:

                    如果您使用的是虚拟机,则进入虚拟机的时间与真机的时间同步。只是修复进入虚拟机的时间并不能解决问题。

                    【讨论】:

                      【解决方案18】:

                      我有这个错误是因为我的本地机器的时间和时区设置不正确。将它们更改为正确的时间和时区对我有用。

                      【讨论】:

                        【解决方案19】:

                        我在使用 DockerWindows 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

                        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
                        

                        【讨论】:

                          【解决方案20】:

                          使用 ntp 可能无法在基于 Linux 的服务器的所有版本上运行(例如,不再支持的过时 Ubuntu 服务器版本会阻止您下载未安装的 ntp)。

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

                          执行此操作后,您可能需要重置时间/日期。执行此操作的说明在本文中: http://codeghar.wordpress.com/2007/12/06/manage-time-in-ubuntu-through-command-line

                          【讨论】:

                            【解决方案21】:

                            如果你在 2016 年并且在伊斯坦布尔,这是一个奇怪的情况,土耳其决定不切换到冬季时间标准,将你的本地时区设置为莫斯科,然后重启你的机器。

                            【讨论】:

                            • 我认为这应该是一个评论。
                            • @BlackVegetable 我也认为这可能是一条评论,但问题是,如果您处于我提到的情况并按照已接受答案中的说明进行操作,它将仍未解决;这就是为什么这是一个提供替代解决方案的答案。
                            【解决方案22】:

                            我在 MacOS 上使用 Docker for Mac Beta 通道 1.13.1-beta42 运行 Jet (Codeship) 和 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 解决。

                            【讨论】:

                              【解决方案23】:

                              我刚刚开始收到此错误,同步我的时钟也无济于事。 (我花了 2 个小时将它同步到我能找到的每个时间服务器,包括 AWS 服务器,但没有任何区别。)

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

                              现在,同样的事情在 2018 年 12 月 30 日突然开始发生。这在年底是不对的,但已经足够接近,看起来很可疑。 (除这些日期外,从未出现此错误。)这次重新启动和重建没有帮助。

                              我在这个盒子上的开发环境是 Parallels 下的 Windows 10。我的系统上没有其他任何变化 - 因为我已经通过回滚到之前的 Parallels 快照进行了仔细检查。我的主机 MacOS 和虚拟 Windows 10 上的时钟都是正确的。

                              我怀疑是 AWS 错误。

                              【讨论】:

                              • 我遇到了同样的问题...压缩文件对我有用,就像我尝试上传的 1.3GB csv 文件一样。一旦低于 500MB,问题就消失了。我没有使用 AWS CLI,而是在另一个 AWS 账户上的托管 EC2 实例上使用来自 SSIS 的连接器
                              【解决方案24】:

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

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

                              【讨论】:

                                【解决方案25】:

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

                                【讨论】:

                                • 对,我看到了,但我有一个新帐户,无法发表评论。更新我对 +1 @sompnd 的回答。
                                【解决方案26】:

                                我在我的 Mac 上遇到了同样的问题。当我移动到不同的时区(PST 到 IST)时,不知何故 OSX 没有选择时区并且时间会自动更改。所以我不得不手动设置这两个,这导致我的笔记本电脑延迟了大约 15-20 秒。设置自动同步后,时间同步,S3复制命令开始工作:For reference

                                【讨论】:

                                  【解决方案27】:

                                  这有点粗糙,但这对我有用

                                  1. 卷曲到 s3 服务器

                                    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"

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

                                  【讨论】:

                                  • 为什么不在服务器中使用 NTP?
                                  猜你喜欢
                                  • 1970-01-01
                                  • 2023-04-04
                                  • 2018-09-12
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 2011-07-06
                                  • 2017-10-14
                                  • 1970-01-01
                                  • 1970-01-01
                                  相关资源
                                  最近更新 更多