/ / Erro ao tentar ACL enlatada específica - python, django, amazon-s3, boto

Ocorreu um erro ao tentar a ACL enlatada específica - python, django, amazon-s3, boto

Estou tentando usar o boto api para fazer upload de fotos para o Amazon S3. Posso fazer upload de fotos com êxito se não tiver especificado a ACL em lata.

Mas se eu especificasse ACL da seguinte maneira. Eu recebi o seguinte erro.

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"))

Erro como segue.

<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>

Eu tentei por um longo tempo, mas ainda não consigo obter nenhuma dica. Alguém sabe o porquê?

Obrigado!

Respostas:

0 para resposta № 1

o upload_part_from_file O método não deve ter um parâmetro de política. Este é um bug no boto. Para atribuir uma política a um arquivo com várias partes, especifique a política enlatada como policy parâmetro no initiate_multipart_upload ligue e faça o upload das peças e complete oEnvio. Não tente passar a política ao fazer upload de partes individuais. Deveríamos criar um problema no github for boto para remover o parâmetro policy. É confuso e não funciona.