我尝试使用 Secretsmanager CLI 命令检索 AWS 机密,但在该命令似乎挂起大约 5-6 分钟后收到此错误:
An error occurred (InvalidSignatureException) when calling the GetSecretValue operation: Signature expired: 20240208T204704Z is now earlier than 20240208T204804Z (20240208T205304Z - 5 min.)
但是,我尝试过的所有其他 AWS CLI 命令在虚拟机上都可以正常工作,例如
aws sts get-caller-identity
或 aws s3 ls
。我能够在我的 Mac 上检索 VM 运行的秘密,并且我的 VM 和 Mac 都有相同的 ~/.aws/config
和 ~/.aws/credentials
文件。
我已经检查了我的虚拟机日期时间,它是正确的,时区也是正确的(
timedatectl
显示了我期望看到的内容),并且使用sudo ntpdate ntp.ubuntu.com
强制进行时间同步。
我还尝试重新安装 AWS CLI,但没有成功(版本 2.15.18)
关于为什么此命令在我的虚拟机上不起作用的任何想法?
确保 AWS CLI 使用正确的签名版本来发出请求。某些 AWS 服务(包括 Secrets Manager)需要签名版本 4 进行身份验证。您可以检查 AWS CLI 配置来验证签名版本
aws 配置获取default.signature_version
aws 配置设置default.signature_version v4
我也面临这个问题,我已经通过配置default.signature_version v4解决了这个问题