Amazon S3 同步到本地机器失败

Amazon S3 sync to local machine failed

我是 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 部分,剩余 ... 文件

尽管我已经按照 http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html

中的描述配置了我的访问密钥 ID 和秘密访问密钥

问题可能出在哪里?

要执行文件同步,需要两组权限:

  • ListObjects 获取要复制的文件列表
  • GetObjects 访问对象

如果您使用的是 AWS 账户附带的 "root" 用户,您将自动拥有这些权限。

如果您使用的是在身份和访问管理 (IAM) 中创建的用户,则需要将这些权限分配给该用户。最简单的方法是分配 AmazonS3FullAccess 策略,该策略允许访问所有 S3 函数。

假设您是管理员 and/or 您已经正确设置了您的凭据,您可能正在使用旧的 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

非常感谢link: https://forums.aws.amazon.com/thread.jspa?threadID=173124

在我的例子中,存储在 ~/.aws/config 中的凭据被来自 ~/.zshrc 的竞争配置文件破坏。 运行 env | grep AWS 检查。