2012-03-08 33 views
5

In aws-s3, esiste un metodo (AWS :: S3 :: S3Object.stream) che consente di eseguire lo streaming di un file su S3 in un file locale. Non sono stato in grado di individuare un metodo simile in aws-sdk.Ruby AWS :: S3 :: S3Object (aws-sdk): Esiste un metodo per lo streaming dei dati così come esiste con aws-s3?

cioè in AWS-s3, lo faccio:

File.open(to_file, "wb") do |file| 
    AWS::S3::S3Object.stream(key, region) do |chunk| 
    file.write chunk 
    end 
end 

L'AWS :: S3: metodo S3Object.read vuole un blocco come parametro, ma non sembra di fare nulla con esso.

risposta

2

In questo momento, non ufficialmente. Ho trovato questo thread nel forum ufficiale di AWS Ruby:

Does the ruby aws gem support streaming download from S3. Quotazione dello staff AWS:

Sfortunatamente non c'è una buona soluzione inserita nella gemma aws-sdk. Stiamo esaminando il modo in cui potremmo renderlo molto più semplice per l'utente finale.

C'è codice di esempio per il download in blocchi. Potresti volerlo dare un'occhiata per ispirazione.

+1

La gem di aws-sdk ora supporta le letture di streaming. L'argomento del forum è stato aggiornato per riflettere questo. –

5

La gemma aws-sdk ora supporta le letture Chunked degli oggetti in S3. Nell'esempio seguente viene fornita una Demonstation:

s3 = AWS::S3.new 
File.open(to_file, "wb") do |file| 
    s3.buckets['bucket-name'].objects['key'].read do |chunk| 
    file.write chunk 
    end 
end 
+0

Posso specificare la dimensione del blocco? –

+0

Per quanto ne so, Ruby Net :: HTTP non consente di controllare la dimensione di ciascun blocco ceduto. –

Problemi correlati