有沒有辦法在Amazon S3上連接小於5MB的小文件。 由於小文件,多部件上傳不正常。Amazon S3連接小文件
這不是一個有效的解決方案來拉下所有這些文件並進行連接。
那麼,有人可以告訴我一些API來做到這一點嗎?
有沒有辦法在Amazon S3上連接小於5MB的小文件。 由於小文件,多部件上傳不正常。Amazon S3連接小文件
這不是一個有效的解決方案來拉下所有這些文件並進行連接。
那麼,有人可以告訴我一些API來做到這一點嗎?
Amazon S3不提供連接功能。它主要是一個對象存儲服務。
您需要一些過程來下載對象,合併它們,然後再次上傳它們。執行此操作的最有效方法是並行下載對象,以充分利用可用帶寬。但是,編碼更復雜。
我建議在「雲中」進行處理以避免必須通過Internet下載對象。在上進行操作Amazon EC2或AWS Lambda會更高效,成本更低。
舊評論,但這不完全正確。你可以有一個5MB的垃圾對象坐在S3上,並與它連接,其中第1部分= 5MB垃圾對象,第2部分=你想要連接的文件。繼續爲每個片段重複此操作,最後使用範圍副本去除5MB垃圾。 – wwadge
@wwadge哦!這是陰險和*非常*酷!使用[上傳零件 - 複製](http://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPartCopy.html)從多個文件複製數據,就好像它們是同一文件的一部分一樣。整齊! –
編輯:沒有看到5MB的要求。由於這個要求,這種方法將不起作用。
雖然可以下載,並通過 的EC2實例中重新將數據上傳到S3,更有效的辦法是指示S3到 使用使一個內部複製在版本1.10.0中爲Ruby引入了新的copy_part API操作 。
代碼:
require 'rubygems'
require 'aws-sdk'
s3 = AWS::S3.new()
mybucket = s3.buckets['my-multipart']
# First, let's start the Multipart Upload
obj_aggregate = mybucket.objects['aggregate'].multipart_upload
# Then we will copy into the Multipart Upload all of the objects in a certain S3 directory.
mybucket.objects.with_prefix('parts/').each do |source_object|
# Skip the directory object
unless (source_object.key == 'parts/')
# Note that this section is thread-safe and could greatly benefit from parallel execution.
obj_aggregate.copy_part(source_object.bucket.name + '/' + source_object.key)
end
end
obj_completed = obj_aggregate.complete()
# Generate a signed URL to enable a trusted browser to access the new object without authenticating.
puts obj_completed.url_for(:read)
限制(其中包括)
這些文件是否已經在S3上?如果沒有,你不能在上傳之前連接(或壓縮)嗎? –