![](/img/trans.png)
[英]Django + AWS S3 Bucket: Authenticated Access to S3 Bucket
[英]Django-AWS S3, unable to delete bucket objects
我有一个 Django 项目,其中 MySQL 存储和媒体对象(图像)存储在 AWS S3 简单存储中。
管理员可以通过管理面板上传图片,也可以在网站上显示。
当管理员删除对象时,它会在 MySQL 中被删除,但它的关联图像会保留在 S3 存储桶中。
设置.py
AWS_ACCESS_KEY_ID = ''
AWS_SECRET_ACCESS_KEY = ''
AWS_STORAGE_BUCKET_NAME = ''
AWS_S3_CUSTOM_DOMAIN = f"{AWS_STORAGE_BUCKET_NAME}.s3.me-south-1.amazonaws.com"
AWS_S3_OBJECT_PARAMETERS = {'CacheControl': 'max-age=86400'}
PUBLIC_MEDIA_LOCATION = 'media'
MEDIA_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/{PUBLIC_MEDIA_LOCATION}/'
DEFAULT_FILE_STORAGE = 'news.storage_backends.MediaStorage'
STORAGE_BACKENDS.PY
from storages.backends.s3boto3 import S3Boto3Storage
from django.conf import settings
class MediaStorage(S3Boto3Storage):
location = 'media'
default_acl = 'public-read'
file_overwrite = False
我是附件中的用户详细信息,
正如 Luiz 所说,这些文件在删除 object 后仍然存在。 我建议在删除 object 后创建一个删除文件的信号:
@receiver(models.signals.post_delete, sender=YourModel)
def remove_image_file_from_s3_on_delete(sender, instance, **kwargs):
instance.your_field_name.delete(save=False)
我使用了django-cleanup
应用程序,它相当容易设置https://pypi.org/project/django-cleanup/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.