镜像文件在AWS-S3中自行删除



我使用python Django框架为服务器和AWS-S3存储上传的图像。此外,我正在使用django-storage库处理S3。但有时图像会被自己删除,而不是通过django服务器。数据库中仍然存在图像url。所以我把create, put, delete, get action改成了get in bucket policy但还是被自己删除了

django在settings.py中的设置是这样的

AWS_SECRET_ACCESS_KEY = S3['secret_key']
AWS_REGION = 'ap-northeast-2'
AWS_STORAGE_BUCKET_NAME = 'loopusimage'
AWS_S3_CUSTOM_DOMAIN = '%s.s3.%s.amazonaws.com' % (
AWS_STORAGE_BUCKET_NAME, AWS_REGION)
AWS_DEFAULT_ACL = None
DATA_UPLOAD_MAX_MEMORY_SIZE = 1024000000
FILE_UPLOAD_MAX_MEMORY_SIZE = 1024000000
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage

和更改的桶策略是这个

"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::loopusimage/*"
}
]
}

我该怎么做才能解决我的问题?

AWS本身永远不会删除S3中的项目,但有一些场景可以适用于您的问题。

  1. 您已经为bucket中的项设置了生命周期。您可以查看AWS文档查看如何禁用/检查。
  2. 你可能遇到的第二个问题是你在模型中存储图像的方式。您可能以错误的方式设置了名称,从而导致S3中的图像相互覆盖。我强烈建议检查这个文档来指定保存文件的位置。

要找到您的确切问题,您可以使用AWS CloudTrail。这项服务将帮助您查看谁(或什么)从您的存储桶中删除了这些图像。你可以查看这个文档获取说明。

最新更新