使用 Ruby gem 将每个存储桶或纯类型的图像保存到 S3

Saving images to S3 per bucket or pure Type with Ruby gem

我刚开始将几张图像写入 S3。每个用户每个案例我将有 4 到 10 张图像。

User > Case > images

我的计划是为每个案例创建一个存储桶,但想知道我是否应该改为在密钥中保存带有前缀的所有图像,并将所有案例的所有图像放在一个存储桶中?

MyBucket > 2sk67o3/waiver/image1-big.jpg
MyBucket > 2sk67o3/waiver/image1-small.jpg
MyBucket > 2sk67o3/merchandise/image1-big.jpg
MyBucket > 2sk67o3/merchandise/image1-small.jpg

MyBucket_2sk67o3 > waiver/image1-big.jpg
MyBucket_2sk67o3 > waiver/image1-small.jpg
MyBucket_2sk67o3 > merchandise/image1-big.jpg
MyBucket_2sk67o3 > merchandise/image1-small.jpg

我认为最后一个版本是正确的,因为我可以使用 Ruby gem 提供的“with_prefix”来查找更容易删除或替换的图像?比如删除"waiver"当然是要删除大图和小图

bucket.objects.with_prefix('waiver').collect(&:key)

我想我可以按照上面的第一种方式搜索前缀“2sk67o3/merchandise”。所以问题仍然更好,更简单,标准是每个案例一个桶还是一个巨大的桶?

您应该使用使用可预测键的单个存储桶,以便轻松找到它们。像

"MyBucket/waivers/#{WaverModelInstanceOrWhatever.id}/large/image_1.jpg"
"MyBucket/waivers/#{WaverModelInstanceOrWhatever.id}/small/image_1.jpg"
"MyBucket/merchandise/#{MerchandiseModelInstanceOrWhatever.id}/large/image_1.jpg"
"MyBucket/merchandise/#{MerchandiseModelInstanceOrWhatever.id}/small/image_1.jpg"