2017-01-27 32 views
6

jestem w stanie przesłać plik obrazu przy użyciu:Jak przesłać plik do S3 i upublicznić go za pomocą boto3?

s3 = session.resource('s3') 
bucket = s3.Bucket(S3_BUCKET) 
bucket.upload_file(file, key) 

Jednakże chcę, aby społeczeństwo pliku zbyt. Próbowałem wyszukać niektóre funkcje, aby ustawić ACL dla pliku, ale wygląda na to, że boto3 zmieniło swoje API i usunęło niektóre funkcje. Czy jest sposób, aby to zrobić w najnowszym wydaniu boto3?

Odpowiedz

1

Adi's way prace. Jednakże, jeśli jesteś podobny do mnie, być może masz problem z odmową dostępu. Zwykle jest to spowodowane złamaniem uprawnień użytkownika. Naprawiłem go przez dodanie następujących do Action tablicy:

"s3:GetObjectAcl", 
"s3:PutObjectAcl" 
4

przesłać i ustawić uprawnienia do publicznie czytelny w jednym kroku, można użyć:

bucket.upload_file(file, key, ExtraArgs={'ACL':'public-read'})