“我们的记录中不存在您提供的 AWS 访问密钥 ID。” 尝试使用 AWS CLI 时

the*_*age 8 amazon-s3 amazon-web-services aws-cli

我正在尝试通过 cli 访问我的 S3 Bucket。我把一切都建立起来,如具有credentials在那里我做这个工作的CLI文件,并确保我的环境变量$AWS_SECRET_ACCESS_KEY,并$AWS_ACCESS_KEY_ID有正确的东西在里面,而使用手动设置它们aws configure

credentials 包含以下信息,全部空白即为:

[sts]
aws_access_key_id = ASIAXXXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXX
aws_security_token = XXXXXXXXXXXXXXXXXXXXXX
aws_session_expiration = 2018-11-03T00:21:25+0000
aws_session_token = XXXXXXXXXXXXXXXXXXXXXXX
[default]
aws_access_key_id = ASIAXXXXXXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXX
Run Code Online (Sandbox Code Playgroud)

也只是为了确保我已经完成了所有设置,我还运行了aws configure

(venv) ~/.aws $ aws configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ****************XXXX shared-credentials-file
secret_key     ****************XXXX shared-credentials-file
    region  

          us-east-1      config-file    ~/.aws/config
Run Code Online (Sandbox Code Playgroud)

但是,当我运行以下命令时,它说我有这个错误:

(venv) ~/.aws $ aws s3 sync s3://mybucket/my/path ~/my/path
fatal error: An error occurred (InvalidAccessKeyId) when calling the ListObjectsV2 operation: The AWS Access Key Id you provided does not exist in our records.
Run Code Online (Sandbox Code Playgroud)

我不知道如何解决这个问题并且用尽了我所有的谷歌搜索选项。

Joh*_*ein 11

以 开头的ASIA凭证是通过安全令牌服务生成的临时凭证,必须与令牌一起使用。

当您运行您的aws s3 sync命令时,它使用的是尚未aws_security_token定义的 [默认] 凭据。

尝试添加--profile sts到命令以使其使用 [sts] 凭据。