【问题标题】:Unable to download file from S3无法从 S3 下载文件
【发布时间】:2017-01-13 09:49:54
【问题描述】:

我有一个附加了 S3 FullAccess 角色的 EC2 实例, 该实例位于我的 VPC 的公共子网中。

我使用以下命令在 EC2 实例上安装了 AWS CLI -

$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
$ unzip awscli-bundle.zip
$ sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws

我使用以下命令验证了 AWS CLI 安装 -

$ aws help

我可以使用以下命令列出 S3 存储桶 -

$ aws s3 ls

我在 S3 上的前缀位置上传了一个文件, 我尝试使用以下命令下载它-

aws s3api get-object --bucket demoBucketName --key demoFolder/demoFile.php demoFile.php

上述命令出现以下错误 -

我也试过 -

aws s3 cp s3://demoBucketName/demoFolder/demoFile.php demoFile.php

第二个命令出现此错误 -

【问题讨论】:

  • 错误信息一目了然。
  • 即使在将角色附加到实例之后,我还需要 aws configure 吗?我做错了什么?

标签: ubuntu amazon-web-services amazon-s3 amazon-ec2 aws-cli


【解决方案1】:
aws s3api get-bucket-location --bucket BUCKET

假设上述命令的输出为us-west-2

aws s3api get-object --bucket demoBucketName --key --region us-west-2 demoFolder/demoFile.php demoFile.php

【讨论】:

  • 为什么要指定区域? S3 存储桶是全球性的吗?
  • @AniruddhaRaje :因为您尝试在需要签名版本 4 的区域中操作存储桶。您可以通过使用 --region 参数显式提供正确的区域位置来解决此问题。
  • 哦,好吧,你能告诉我,如果我想从 S3 位置下载 .jar,我会这样做吗?
  • @AniruddhaRaje:我不确定。你为什么不自己试试呢?
  • @AniruddhaRaje 不,存储桶不是全局的。 bucket namespace 是全局的(bucket 名称必须是全局唯一的),而 S3 控制台是“global”,因为它不需要选择区域,但是每个 bucket 都在一个特定的区域中,当存储桶已创建。
猜你喜欢
  • 2017-02-16
  • 2019-06-15
  • 1970-01-01
  • 2021-04-19
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
  • 2021-01-08
  • 2021-07-24
相关资源
最近更新 更多