0

botoapiを使用して写真をAmazonS3にアップロードしようとしています。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アップロードしてアップロードを完了します。個々のパーツをアップロードするときに、ポリシーに合格しようとしないでください。ポリシーパラメータを削除するには、botoのgithubで問題を作成する必要があります。紛らわしく、機能しません。

于 2012-09-29T21:43:07.680 に答える