0

我正在尝试使用 boto api 将照片上传到 Amazon S3。如果我没有指定 Canned ACL,我可以在那里成功上传照片。

但是,如果我指定 ACL 如下。我收到以下错误。

mp = self._bucket.initiate_multipart_upload(name)
pool = Pool(processes=self.NUM_PARALLEL_PROCESSES)
pool.apply_async(mp.upload_part_from_file(fp=buffer, part_num=counter, headers=headers, policy='public-read'))

错误如下。

<Error><Code>InvalidArgument</Code><Message>The specified header is not valid in this context</Message><ArgumentValue>public-read</ArgumentValue><ArgumentName>x-amz-acl</ArgumentName><RequestId>xxx</RequestId><HostId>xxx</HostId></Error>

我尝试了很长时间,但仍然无法得到任何提示。有谁知道为什么?

谢谢!

4

1 回答 1

0

upload_part_from_file方法不应具有策略参数。这是boto中的一个错误。要将策略分配给多部分文件,请policy在调用中指定标准策略作为参数initiate_multipart_upload,然后上传部分并完成上传。上传各个部分时不要尝试通过策略。我们应该在 github 上创建一个 issue 让 boto 删除策略参数。这很混乱,而且不起作用。

于 2012-09-29T21:43:07.680 回答