我正在尝试在 ubuntu 机器上自动将数据库备份上传到 s3。我正确生成了数据库备份,但是当我尝试上传到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 命令是否可以工作,它确实有效。
有人对我能做什么有任何想法吗?
从配置 AWS CLI :
AWSCLI 使用提供程序链在多个不同位置查找 AWS 凭证,包括系统或用户环境变量以及本地 AWS 配置文件。
AWS CLI 按以下顺序查找凭证和配置设置:
命令行选项 – 可以将区域、输出格式和配置文件指定为命令选项以覆盖默认设置。
环境变量–
AWS_ACCESS_KEY_ID
、AWS_SECRET_ACCESS_KEY
等AWS 凭证文件– 位于 Linux、macOS 或 Unix 上的
~/.aws/credentials
,或 Windows 上的C:UsersUSERNAME .awscredentials
。除了默认配置文件外,此文件还可以包含多个命名配置文件。CLI 配置文件– 通常位于 Linux、macOS 或 Unix 上的
~/.aws/config
,或 Windows 上的C:UsersUSERNAME .awsconfig
。此文件可以包含默认配置文件、命名配置文件以及每个配置文件的 CLI 特定配置参数。实例配置文件凭证– 这些凭证可用于具有分配的实例角色的 EC2 实例,并通过 Amazon EC2 元数据服务提供。
您也可以设置AWS_DEFAULT_PROFILE
,这将覆盖配置文件中使用的凭据。