S3 cp使用根密钥从AWS cli访问AccessDenied

not*_*ink 11 amazon-s3 amazon-ec2 amazon-web-services

我在EC2实例上安装了AWS cli,并通过运行aws configure并为其配置了我的AWSAccessKeyId和AWSSecretKey密钥来配置它,因此如果我运行该命令,aws s3 ls它将返回我的S3存储桶的名称(称之为"mybucket").

但是,如果我然后尝试aws s3 cp localfolder/ s3://mybucket/ --recursive我得到一个看起来像的错误

A client error (AccessDenied) occurred when calling the CreateMultipartUpload operation: Anonymous users cannot initiate multipart uploads.  Please authenticate.
Run Code Online (Sandbox Code Playgroud)

我认为通过运行aws configure并给它我的root密钥,我有效地给了aws cli它需要进行身份验证的一切吗?有没有关于复制到S3存储桶而不是列出它们的东西?

Sco*_*McC 20

我想我会添加一个非常类似的问题,我可以在其中列出存储桶,但无法写入返回错误的给定存储桶

--sse

如果存储桶使用服务器端加密,则需要添加--sse标志以便能够写入此存储桶.

  • 应在 (`aws s3 cp localfolder s3:///bucketname/ --sse`) 之后指定 `--sse` (3认同)

Nav*_*jay 7

Root Access密钥和Secret密钥具有完全控制权和完全权限,可与AWS进行交互.请尝试aws configure再次运行以重新检查设置,然后重试.

PS:强烈建议不要使用root访问密钥 - 请考虑创建一个IAM(使用root权限管理员权限)并使用它们.


Mik*_*sin 5

如果您有环境变量AWS_SECRET_ACCESS_KEYAWS_ACCESS_KEY_IDAWS_REGION集,AWS CLI提供更高的优先给他们,而不是你的凭据与指定aws configure

因此,就我而言,bash命令unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY解决了该问题。