调用 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):禁止

AWS CLI S3:使用终端在本地复制文件:致命错误:调用 HeadObject 操作时发生错误(404)

AWS lambda:调用HeadObject操作时发生错误(404):找不到