调用 HeadObject 操作时发生客户端错误 (400):Bad Request Completed 1 part(s) with ... file(s)
Posted
技术标签:
【中文标题】调用 HeadObject 操作时发生客户端错误 (400):Bad Request Completed 1 part(s) with ... file(s)【英文标题】:A client error (400) occurred when calling the HeadObject operation: Bad Request Completed 1 part(s) with ... file(s) remaining 【发布时间】:2016-09-25 21:33:59 【问题描述】:我正在尝试通过 cli 将文件从私有 s3 存储桶复制到我的 ec2 实例。 ec2 与存储桶位于同一区域,并附加了以下 IAM 角色 (AmazonS3FullAccess):
"Version": "2012-10-17",
"Statement": [
"Effect": "Allow",
"Action": "s3:*",
"Resource": "*"
]
但是命令aws s3 cp s3://[BUCKETNAME]/index.html
失败并出现错误:
剩余。
我已经仔细检查了存储桶名称的拼写...
【问题讨论】:
这是您运行的完整 cp 命令行吗? cp 还需要一个本地路径名的参数。 对不起,我在帖子中忘记了这部分,但它在那里:' aws s3 cp s3://[bucketname]/index.html /var/www/html/ ' 【参考方案1】:我在语句中添加了 --region 选项,现在一切正常:
aws s3 cp s3:/[BUCKETNAME]/ . --recursive --region [REGION]
【讨论】:
【参考方案2】:如果使用具有假定角色的临时安全凭证,当您的会话过期时也会发生此错误。不是您所期望的禁止或未知的身份。
【讨论】:
【参考方案3】:--region
参数对我不起作用。
我尝试使用--profile
,一切正常。
aws s3api head-bucket --bucket xxxx --profile dev-profile
【讨论】:
【参考方案4】:升级到最新版本的 aws cli 后,我的问题得到了解决。这是您升级的方式:
pip install --upgrade --user awscli
指定区域没有帮助
【讨论】:
【参考方案5】:当我将相同的策略从“内联策略”更改为“托管策略”时,它起作用了。参考我的答案https://***.com/a/37532132/4126114
【讨论】:
我的错。我的意思是“内联”到“管理”。会编辑。归咎于深夜编程aws --version
的输出是什么?我的是aws-cli/1.10.16 Python/2.7.3 Linux/3.13.0-86-generic botocore/1.4.7
我的是:aws-cli/1.10.8 Python/2.7.10 Linux/4.4.10-22.54.amzn1.x86_64 botocore/1.3.30
如果我使用选项 --region 运行 cp 命令,它可以工作。奇怪,因为存储桶和 ec2 实例仍然在同一个区域。我很困惑...
看起来您的 awscli 配置缺少 AWS_DEFAULT_REGION
参数。检查here。您可以尝试使用aws configure
,如here 和here 所述。否则,您可以使用 pip install --upgrade awscli
将您的 awscli 升级到最新版本。【参考方案6】:
对我来说,问题在于我在我的 AWS 配置文件 (~/.aws/config
) 中将 use_accelerate_endpoint
设置为 true。将其更改为 false 解决了该问题。这是我的配置文件现在的样子:
[default]
region = us-west-2
output = json
s3 =
use_accelerate_endpoint = false
【讨论】:
以上是关于调用 HeadObject 操作时发生客户端错误 (400):Bad Request Completed 1 part(s) with ... file(s)的主要内容,如果未能解决你的问题,请参考以下文章
ClientError:调用 HeadObject 操作时发生错误(403):尝试跨帐户复制时禁止
Django/AWS - 调用 HeadObject 操作时发生错误(403):禁止
AWS BOTO3 S3 python - 调用 HeadObject 操作时发生错误(404):未找到
AWS Lamda:ClientError:调用 HeadObject 操作时发生错误(403):禁止