我是AWS的新手,我正在尝试使用aws s3 sync
从我的S3存储桶中将一堆文件下载到我的本地计算机,如http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html中所述。
我使用了以下命令:
aws s3 sync s3://outputbucket/files/ .
我收到以下错误: 调用ListObjects操作时发生客户端错误(AccessDenied):拒绝访问 已完成1个部分,其中包含......文件
即使我已配置了访问密钥ID&秘密访问密钥,如http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html
中所述问题可能在哪里?
答案 0 :(得分:6)
假设您是管理员和/或您已正确设置凭据,则可能是您使用旧的AWS CLI。
我在使用带有Ubuntu 14.04的打包AWS CLI时遇到了这个问题。
对我有用的解决方案是删除使用Ubuntu预先打包的AWS CLI,然后从python-pip下载它:
sudo apt-get remove awscli
sudo apt-get install python-pip
sudo pip install awscli
非常感谢这个链接: https://forums.aws.amazon.com/thread.jspa?threadID=173124
答案 1 :(得分:1)
要执行文件同步,需要两组权限:
ListObjects
获取要复制的文件列表GetObjects
访问对象如果您使用的是AWS账户附带的“root”用户,您将自动拥有这些权限。
如果您使用的是在身份和访问管理(IAM)中创建的用户,则需要将这些权限分配给用户。最简单的方法是分配AmazonS3FullAccess
策略,该策略允许访问所有S3功能。
答案 2 :(得分:1)
在我的情况下,~/.aws/config
中存储的凭据被~/.zshrc
中的竞争配置文件破坏了。运行env | grep AWS
进行检查。