Utknąłem na 3 dni iw końcu po przeczytaniu mnóstwa blogów i odpowiedzi udało mi się skonfigurować Amazon AWS S3 Bucket.
Po stronie AWS
Zakładam, że już to zrobiłeś
- Utworzono wiadro s3
- Utworzono użytkownika w IAM
Kroki
Skonfiguruj ustawienia CORS
masz wiadro> uprawnienia> konfiguracja CORS
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>```
Wygeneruj zasady zasobnika
twój zasobnik> uprawnienia> zasady zasobnika
Powinien być podobny do tego
{
"Version": "2012-10-17",
"Id": "Policy1602480700663",
"Statement": [
{
"Sid": "Stmt1602480694902",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::harshit-portfolio-bucket/*"
}
]
}
PS: Bucket policy should say `public` after this
- Skonfiguruj listę kontroli dostępu
twój zasobnik> uprawnienia> lista kontroli dostępu
dać publiczny dostęp
PS: Lista kontroli dostępu powinna powiedzieć public
po tym
- Odblokuj dostęp publiczny
Twój zasobnik> uprawnienia> Zablokuj dostęp publiczny
Edytuj i wyłącz wszystkie opcje
** Na marginesie, jeśli pracujesz na django, dodaj następujące linie do settings.py
pliku swojego projektu **
AWS_ACCESS_KEY_ID = '****not to be shared*****'
AWS_SECRET_ACCESS_KEY = '*****not to be shared******'
AWS_STORAGE_BUCKET_NAME = 'your-bucket-name'
AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
AWS_S3_REGION_NAME = "ap-south-1"
AWS_S3_SIGNATURE_VERSION = "s3v4"