Невозможно получить доступ к изображению на aws-s3, сохраненному через django
Url изображения, хранящегося в db, таков: profile_pictures/f292ddfe-ee17-4ccc-be85-0398fb602753.jpeg
но когда я нажимаю на него, url становится https://workandhomes.s3.amazonaws.com/media/profile_pictures/f292ddfe-ee17-4ccc-be85-0398fb602753.jpeg?AWSAccessKeyId={keyHere}&Signature={somevalue}&Expires=1728557943
Вот мой соответствующий код:
models.py
class UserProfile(models.Model):
...
profile_picture = models.ImageField(
upload_to="profile_pictures/", blank=True, null=True
)
...
class Meta:
db_table = "user_profile"
settings.py
....
# AWS S3 Configuration
AWS_ACCESS_KEY_ID = os.getenv("AWS_ACCESS_KEY_ID")
AWS_SECRET_ACCESS_KEY = os.getenv("AWS_SECRET_ACCESS_KEY")
AWS_STORAGE_BUCKET_NAME = os.getenv("AWS_STORAGE_BUCKET_NAME")
AWS_REGION = os.getenv(
"AWS_REGION", "eu-north-1"
) # Replace 'your-default-region' with your region
# Configure the default file storage to use S3
DEFAULT_FILE_STORAGE = "storages.backends.s3boto3.S3Boto3Storage"
MEDIA_URL = f"https://{AWS_STORAGE_BUCKET_NAME}.s3.{AWS_REGION}.amazonaws.com/"
...
Я могу выполнять операции put и загружать файл, но не могу его прочитать. Мой пользователь IAM на AWS имеет полный доступ к aws. и следующая политика ведра
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::workandhomes/*"
}
]
}
Наконец, когда я удаляю строки запроса auth, изображение открывается.
Есть идеи, что здесь происходит?