AWS InvalidSignatureException,从 docker 容器运行时签名已过期

Jos*_*ing 11 time amazon-web-services docker

我遇到了一个问题,我正在 docker 容器中开发一个程序,但我似乎突然遇到了无效签名的问题。当我尝试从 AWS Secrets Manager 检索资源时,出现以下异常(我不认为特定的 AWS 服务与该问题相关):

botocore.exceptions.ClientError:调用 GetSecretValue 操作时发生错误 (InvalidSignatureException):签名已过期:20200505T192909Z 现在早于 20200506T151410Z(20200506T151910Z - 5 分钟)

Jos*_*ing 17

当客户端系统的时钟与 AWS 同步的时钟不同步时,就会发生此异常。

为了检查该容器的时间,我在断点处暂停了程序并检查了当前时间。果然与实际时间有偏差!

首先要检查的是:

首先要检查的是本地系统的时间。如果已关闭,请重新同步并重试。应该可以解决问题。

  1. 这可以在类 UNIX 系统上使用ntpd.
  2. Windows 用户可以转到开始 -> 设置 -> 时间和语言 -> 日期和时间 ->同步时钟

Docker 桌面

尽管本地计算机的时间已同步,Docker Desktop 的用户仍可能会遇到相同的错误。

虽然 docker 容器确实会与其主机同步时间,但值得注意的是 Docker Desktop 为 docker 运行虚拟机。话虽如此,Mac 或 Windows 机器不是主机,虚拟机才是。这就是我遇到的问题。我的 Windows 桌面有同步且最新的日期/时间,但 Docker 桌面虚拟机是问题所在。

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

  • 感谢 EC2 上的 centos 用户 `sudo service chronyd restart` (2认同)