[英]django-storages aws s3 costs reduction and calculation
我想計算並降低我在 s3 上的文件存儲成本。
我已將我的 django 應用程序部署到歐羅巴(法蘭克福)eu-central-1 的彈性豆莖。 目前我使用一個 t2.micro ec2 實例、一個 db.t2.micro PostgreSQL 數據庫和一個附加的標准 s3 存儲桶,位於彈性豆莖的標准存儲桶旁邊。
我認為 ec2 和數據庫的成本很容易管理,因為在免費層之后我想使用保留實例。 但是 s3 的成本讓我擔心。
用戶可以將文件上傳和下載到我的應用程序。 我的 django 應用程序使用 django-storages 來管理文件,但我不知道后台發生了什么以及我必須支付的費用。
例如,我有一個存儲 class 和一個帶有文件字段的 model :
class PrivateMediaStorage(S3Boto3Storage):
location = 'private'
default_acl = 'private'
custom_domain = False
class Document(models.Model):
name = models.CharField(max_length=255)
...
class FileDocument(models.Model):
document = models.ForeignKey('documents.Document', on_delete=models.CASCADE, related_name="files")
file = models.FileField(storage=PrivateMediaStorage())
...
- - 上傳
我存儲用戶上傳的文件,如下所示:
document = Document.objects.get(...)
files = request.FILES.getlist('files[]')
if files:
for file in files:
try:
file_obj = FileDocument.objects.get(name=file.name, document=document)
file_obj.file.save(file.name, file)
file_obj.save()
except FileDocument.DoesNotExist:
file_obj = FileDocument()
file_obj.name = file.name
file_obj.document = document
file_obj.file.save(file.name, file)
file_obj.save()
...
我認為這可能是一個 PUT 請求,因為我必須在我的區域內支付 0,0054 美元/1000 個請求。 正確的?
- - 下載
如果用戶想下載文件,我返回 url:
...
file = get_object_or_404(FileDocument, pk=pk)
return Response({'url': file.file.url, })
這是哪個請求? GET 請求? 一個 GET 請求的費用為 0,00043 美元/1000 個請求。 但是如果用戶打開返回的 url 也是一個 GET 請求嗎?
- - 獲取所有文件
在前端,用戶獲取屬於特定文檔的所有文件的列表。 目前我返回一個文件的文件列表,如下所示:
document = get_object_or_404(Document, pk=pk)
serializer = FileDocumentSerializer(document.files.all(), many=True)
return Response(serializer.data)
我為此使用了 django rest 框架序列化程序:
class FileDocumentSerializer(serializers.ModelSerializer):
class Meta:
model = FileDocument
exclude = ['document',]
這是什么樣的要求? 對document.files.all()
中的每個文件也有 GET 請求? 在前端,只有名稱很重要。 如果我將文件名存儲在FileDocument
model 中,並在序列化程序中排除file
字段而不是不發送 GET 請求? 這能降低成本嗎?
如果我不了解 django 存儲何時以及發送什么樣的請求,我認為計算成本非常棘手。
我知道我沒有談論數據庫和文件存儲空間的成本。 我認為我可以忽略存儲成本,因為此時我無法在不限制用戶體驗的情況下降低成本。 此外,一開始我計划有 100 或 150 個用戶,我認為每個用戶上傳的數據少於 1 GB。
感謝幫助!
您可以使用 aws https://calculator.aws/提供的成本計算器。 創建一個估計並將資源用作 s3。
你可以輸入你的文件傳輸大小,不。 s3 上存在的請求和數據,您可以得到一個估計值以及導致該估計值的計算。
對 s3 獲取任何數據的任何請求都是獲取請求
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.