使用 django-storages 进行 S3 版本控制
S3 versioning with django-storages
我开箱即用 django-storages in my app, and I want to use S3 versioning。我的意思是,我想存储和检索同一文件的不同版本,而不需要实施任何额外的机制。
通过阅读文档,我了解到:
- 检索对象就像 adding a version=XX parameter to the GET request.
一样简单
- 上传对象由 S3 本身处理。你只需要 configure versioning in your bucket
但是,转到代码。如果我有这个:
from django.db import models
from django_s3_storage.storage import S3Storage
storage = S3Storage(aws_s3_bucket_name='test_bucket')
class Document(models.Model):
name = models.CharField(max_length=255)
s3_file = models.FileField(storage=storage)
如何获得文档的一个特定版本?类似于:
doc = Document.objects.get(pk=XX)
doc.s3_file.read(version=XXXXXXXXXX) # Something like this?
我一直在阅读官方文档,但找不到如何:
- 获取对象的可用版本
- 检索一个特定版本
编辑:阅读源代码,我知道我可以使用parameters in url() call,但不确定什么参数(版本?)以及如何获得现有版本一个对象。
感谢任何帮助。
好的,@dirkgroten 的评论非常准确。所以:
- get-object 使用 version-id 获取对象的特定版本
- list-object-versions 获取对象的所有可用版本
我开箱即用 django-storages in my app, and I want to use S3 versioning。我的意思是,我想存储和检索同一文件的不同版本,而不需要实施任何额外的机制。
通过阅读文档,我了解到:
- 检索对象就像 adding a version=XX parameter to the GET request. 一样简单
- 上传对象由 S3 本身处理。你只需要 configure versioning in your bucket
但是,转到代码。如果我有这个:
from django.db import models
from django_s3_storage.storage import S3Storage
storage = S3Storage(aws_s3_bucket_name='test_bucket')
class Document(models.Model):
name = models.CharField(max_length=255)
s3_file = models.FileField(storage=storage)
如何获得文档的一个特定版本?类似于:
doc = Document.objects.get(pk=XX)
doc.s3_file.read(version=XXXXXXXXXX) # Something like this?
我一直在阅读官方文档,但找不到如何:
- 获取对象的可用版本
- 检索一个特定版本
编辑:阅读源代码,我知道我可以使用parameters in url() call,但不确定什么参数(版本?)以及如何获得现有版本一个对象。
感谢任何帮助。
好的,@dirkgroten 的评论非常准确。所以:
- get-object 使用 version-id 获取对象的特定版本
- list-object-versions 获取对象的所有可用版本