AWS CLI 'cp' 失败并显示“指定的存储桶不存在”

Posted

技术标签:

【中文标题】AWS CLI \'cp\' 失败并显示“指定的存储桶不存在”【英文标题】:AWS CLI 'cp' fails with "The specified bucket does not exist"AWS CLI 'cp' 失败并显示“指定的存储桶不存在” 【发布时间】:2016-11-19 20:51:41 【问题描述】:

我正在使用 AWS 进行我的第一步,并尝试使用 AWS CLI 将文件从 EC2 服务器复制到 S3 服务器。

我收到一个错误:

调用PutObject操作时出现客户端错误(NoSuchBucket):指定的bucket不存在

我的命令如下: - 我去了我的 S3 仪表板,选择了存储桶 -> 属性并处理了“端点”值,即

[存储桶名称].s3-website-us-west-2.amazonaws.com

然后执行

aws s3 cp ./file.ext s3://[桶名].s3-website-us-west-2.amazonaws.com/file.ext

但它因前面描述的错误而失败 - 存储桶不存在。

附言运行

aws s3api list-buckets --query 'Buckets[].Name'

表明存储桶确实存在,因此这不是我理解的问题。

编辑 如果我不使用端点而只使用存储桶名称,则错误消息鼓励使用在所有在线示例中看起来与端点完全一样的全名

上传失败:./file.ext to s3://[bucket name]/file.ext 调用 PutObject 操作时发生客户端错误 (PermanentRedirect):您尝试访问的存储桶必须使用指定的地址端点。请将所有未来请求发送到此端点:[bucket name].s3.amazonaws.com 您可以通过使用 --region 参数、AWS_DEFAULT_REGION 环境变量或 AWS CLI 配置文件中的区域变量显式提供正确的区域位置来解决此问题。您可以通过运行“aws s3api get-bucket-location --bucket BUCKET”获取存储桶的位置。

【问题讨论】:

存储桶的名称是什么? 我们称它为 bucket_name - 如果这就是您所要求的,则全部小写,形式为 x.com 注意斜杠 【参考方案1】:

您正在使用存储桶的端点。不要使用那个。使用存储桶的实际名称。

如果您检查语法,bucket name 应该只是存储桶的名称,而不是存储桶的端点或 URL。

aws s3 cp --recursive ./file.txt s3://bucketname/

上述错误是由于政策问题造成的;您没有该操作的正确权限。查看本指南以向 AWS S3 存储桶添加策略:

http://blogs.aws.amazon.com/security/post/Tx3VRSWZ6B3SHAV/Writing-IAM-Policies-How-to-grant-access-to-an-Amazon-S3-bucket

【讨论】:

--recursive 在单个文件上似乎没有必要。 谢谢;是的,没有--recursive,这对我有用。【参考方案2】:

不确定为什么我尝试使用的表单不​​起作用 - 请参阅我的编辑 - 我尝试遵循建议但失败了。

按照建议,我同时解决它的方法正在运行

aws s3api get-bucket-location --bucket BUCKET

然后使用

的形式

s3://[桶名] --region=[return_val_of_get_bucet_location]

如果有人可以建议不带旗帜跑步,我将不胜感激。

【讨论】:

aws-cli 需要一个区域来执行大多数操作。您可以set the default region,但您始终必须以一种或另一种方式指定区域。【参考方案3】:

请在您的 shell 中运行aws configure 命令来设置默认区域。

系统将提示您输入 4 个键值。其中两个是默认区域和输出格式。另外两个是与访问相关的键。

作为用户 error2007s 建议使用:

aws s3 cp file_path s3://bucket-name/path-of-object

【讨论】:

以上是关于AWS CLI 'cp' 失败并显示“指定的存储桶不存在”的主要内容,如果未能解决你的问题,请参考以下文章

AWS EB CLI 安装失败,“python setup.py egg_info”失败,错误代码为 1”

从 cli 创建的 IAM 用户未显示在 AWS 控制台中

AWS Device Farm - 使用 CLI 时上传失败

排毒失败并显示“找不到模块 'jest-cli/build/cli/args'”

调用 aws cli 的用户数据脚本

AWS 组织中的 Cloudtrail 显式拒绝失败