【问题标题】:Unable to copy from S3 to Ec2 instance无法从 S3 复制到 Ec2 实例
【发布时间】:2020-04-07 07:08:01
【问题描述】:

我正在尝试将文件从 S3 复制到 Ec2 实例,这是奇怪的行为 以下命令运行良好,并显示我想要访问的 s3 的内容

$aws s3 ls
2016-05-05 07:40:57 folder1
2016-05-07 15:04:42 my-folder

然后我发出以下命令(也成功)

$ aws s3 ls s3://my-folder
2016-05-07 16:44:50       6007 myfile.txt

但是当我尝试复制这个文件时,我收到如下错误

$aws s3 cp s3://my-folder/myfile.txt ./

必须指定区域 --region 或在 配置文件或作为环境变量。或者,一个 端点可以用 --endpoint-url 指定

我只是想将 txt 文件从 s3 复制到 ec2 实例。 至少修改上面的命令来复制内容。我不确定区域,因为如果我从网络访问 S3,它会说

“S3 不需要区域选择”

地球上发生了什么?

【问题讨论】:

  • 这很奇怪,对我来说cp 将在没有该区域的情况下工作(而且我不在 us-east-1 中),即使我使用 --region 明确指定了错误的区域。 @OP 你的aws --version 是什么?

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


【解决方案1】:

很可能有些事情不正常,如果您的区域未在 aws 配置中设置为默认值,您应该无法列出存储桶。

因此,根据我对 S3 的经验,如果可行的话:

aws s3 ls s3://my-folder

那么这应该也可以:

aws s3 cp s3://my-folder/myfile.txt ./

但是,如果它要求您提供地区,那么您需要提供它。

试试这个来获取桶区域:

aws s3api get-bucket-location --bucket BUCKET

然后这个复制文件:

aws s3 cp --region <your_buckets_region> s3://my-folder/myfile.txt ./

如果我从网络访问 S3,它会显示

“S3 不需要区域选择”

S3 和存储桶区域可能会非常令人困惑,尤其是该消息。因为当涉及到 s3 区域时,这是 IMO 有史以来最具误导性的信息。除非您启用了cross-region replication,否则每个存储桶都有特定的区域(默认为 us-east-1)。

您可以选择一个区域来优化延迟、最小化成本或 解决监管要求。存储在区域中的对象永远不会 除非您明确将它们转移到另一个区域,否则请离开该区域 地区。有关区域的更多信息,请参阅Accessing a Bucket: in Amazon Simple Storage Service 开发人员指南。

【讨论】:

  • 这是最有趣的部分,S3 说它不需要选择地区,而定价部分显示价格因地区而异。
【解决方案2】:

怎么样

aws s3 cp s3://my-folder/myfile.txt .
# or 
aws s3 cp s3://my-folder/myfile.txt myfile.txt

我怀疑问题与本地路径解析器有关。 aws cli s3 fileformat parser

这有点奇怪,因为 aws cli 读取了凭证和区域配置。

【讨论】:

    【解决方案3】:

    修复是指定区域,下面解释如果您无法从 cli 获取存储桶区域,如何获取它。

    aws s3 cp s3://xxxxyyyyy/2008-Nissan-Sentra.pdf myfile.pdf --region us-west-2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-04
      • 1970-01-01
      • 2013-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-22
      • 2021-06-05
      相关资源
      最近更新 更多