AWS 凭证已刷新但仍已过期

sjm*_*sjm 12 amazon-s3 amazon-web-services

任何人都知道以下错误意味着什么?

#aws s3 ls

Credentials were refreshed, but the refreshed credentials are still expired.
Run Code Online (Sandbox Code Playgroud)

我从服务器上的命令行运行它,已经更新了几次密钥,但收到了我以前从未见过的错误

vr0*_*00n 16

我就此与 AWS 支持人员进行了交谈,他们提供了不涉及更改 TZ 的解决方案。他们建议检查分配给您的实例的 IAM 角色。

从受影响的实例运行它。

curl -v http://169.254.169.254/latest/meta-data/iam/security-credentials/IAM-ROLE
Run Code Online (Sandbox Code Playgroud)

检查有效期

{
  "Code" : "",
  "LastUpdated" : "",
  "Type" : "",
  "AccessKeyId" : "",
  "SecretAccessKey" : "",
  "Token" : "",
  **"Expiration" : ""**

}
Run Code Online (Sandbox Code Playgroud)

就我而言,到期日期显示的是昨天的值。这些是临时凭证,应该经常刷新,但在这种情况下,它们刷新了但到期日期没有改变。这解释了错误AWS Credentials Refreshed but Still Expired

解决

只需取消附加并重新附加与您的实例关联的角色即可获取新的临时凭证,然后再次尝试 S3 命令。

  • 难以理解。 (7认同)

use*_*175 5

我遇到了同样的问题。

我的工作流程是通过 承担角色aws sts assume-role,然后导出环境变量以实际使用该令牌。之后,我得到:

Credentials were refreshed, but the refreshed credentials are still expired.

无论我尝试过什么。事实证明我遇到了不同的问题,设置了以下环境变量:

AWS_CREDENTIAL_EXPIRATION="2023-04-27T21:08:11+00:00"

删除之后,我终于可以使用扮演的角色了。


sjm*_*sjm 0

谢谢各位,现在已经解决了。

我完全不知道是什么原因造成的,但我尝试遵循

  1. 重新生成新的 AWS 密钥
  2. 重新创建用户
  3. 更改 TZ 以匹配存储桶区域 TZ
  4. 卸载/重新安装 awscli

完成上述所有操作后,我开始得到

Could not connect to the endpoint URL: "https://s3.Tokyo.amazonaws.com/"
Run Code Online (Sandbox Code Playgroud)

经过搜索后,通过在东京与 ap-northeast-1 交换来解决这个问题。