【问题标题】:IAM credentials not found on AWS CLI在 AWS CLI 上找不到 IAM 凭证
【发布时间】:2017-11-16 10:15:12
【问题描述】:

我正在尝试自动将数据库备份上传到 ubuntu 机器上的 s3。我正确生成了 db 备份,但是当我尝试上传到 s3 时出现以下错误:

 A client error (InvalidAccessKeyId) occurred when calling the PutObject 
operation: The AWS Access Key Id you provided does not exist in our records.

我使用命令行 aws configure 命令配置我的凭据,然后打开 ~/.aws/config 文件并确保它是正确的。我也跑了

aws configure list

并收到以下信息:

      Name                    Value             Type    Location
    ----                    -----             ----    --------
   profile                <not set>             None    None
   access_key     ****************B6YQ      config_file    ~/.aws/config
   secret_key     ****************Vstu      config_file    ~/.aws/config
   region               cn-north-1      config_file    ~/.aws/config

当这不起作用时,我尝试为根用户和 IAM 用户重新生成新凭证,但这仍然不起作用。 我尝试了 IAM 模拟器以查看 S3 put 命令是否有效,并且确实有效。

有人对我能做什么有任何想法吗?

【问题讨论】:

  • root 用户的默认主目录是 /root。你确定你的 ~/ 代表 /root 吗?
  • 是的,谢谢!

标签: amazon-s3 amazon-iam aws-cli


【解决方案1】:

来自Configuring the AWS CLI

AWS CLI 使用提供程序链在多个不同位置查找 AWS 凭证,包括系统或用户环境变量和本地 AWS 配置文件。

AWS CLI 按以下顺序查找凭证和配置设置:

  1. 命令行选项 – 区域、输出格式和配置文件可以指定为命令选项以覆盖默认设置。

  2. 环境变量AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY

  3. AWS 凭证文件 – 在 Linux、macOS 或 Unix 上位于 ~/.aws/credentials,在 Windows 上位于 C:\Users\USERNAME \.aws\credentials。除了默认配置文件之外,此文件还可以包含多个命名配置文件。

  4. CLI 配置文件 – 通常位于 Linux、macOS 或 Unix 上的 ~/.aws/config,或 Windows 上的 C:\Users\USERNAME \.aws\config。此文件可以包含一个默认配置文件、命名配置文件以及每个配置文件的 CLI 特定配置参数。

  5. 实例配置文件凭证 – 这些凭证可用于分配了实例角色的 EC2 实例,并通过 Amazon EC2 元数据服务交付。

您也可能设置了AWS_DEFAULT_PROFILE,它覆盖了配置文件中使用的凭据。

【讨论】:

  • 此命令给出以下内容:(空)root@app-server-2:~# echo $AWS_ACCESS_KEY_ID 并且 printenv 没有列出这些环境变量中的任何一个
  • 我也尝试设置这些环境变量,但它们不起作用:(
  • 使用正确的凭据提供程序链更新了我的答案。检查您是否设置了AWS_DEFAULT_PROFILE 环境变量,这将更改正在使用的配置文件。确保您的系统上有最新版本的 AWS CLI 也是值得的——pip install awscli --upgrade
猜你喜欢
  • 1970-01-01
  • 2021-09-29
  • 1970-01-01
  • 2015-08-06
  • 2018-01-07
  • 1970-01-01
  • 1970-01-01
  • 2018-12-15
  • 2017-07-18
相关资源
最近更新 更多