私はS3の互換性のあるストレージにデータのストリームを持続させようとしています。 ストリームが終了するまでのサイズは不明です。サイズは5MB〜500GBまで変更できます。S3でデータストリームを保存する方法は? aws-sdk-goの例が動作しませんか?
私はさまざまな可能性を試しましたが、自分自身でシャーディングを実装するよりも優れた解決策を見つけられませんでした。私の最高の推測では、固定サイズのバッファをストリームに埋め込んでS3に書き込むことです。 もっと良い解決策はありますか?おそらく、私はこのストリーム全体をメモリに書き込むことなく透過的な方法でしょうか?
AWS-SDK-行くReadmeには、標準入力からデータを受け取り、S3に書き込む例のprogrammがあります:https://github.com/aws/aws-sdk-go#using-the-go-sdk
私はパイプ|
とパイプデータにしようとすると、私は次のエラーを取得する: failed to upload object, SerializationError: failed to compute request body size caused by: seek /dev/stdin: illegal seek
私は何か間違っているのですか、それとも私が期待しているように動作していないのですか?
I PutObject()またはclient.PutObjectStreaming()で、minio-行きます。 これは機能的ですが、保存するデータと同程度のメモリを消費します。
- よりよい解決策はありますか?
- S3に任意のデータをパイプする小さなプログラムがありますか?
ありがとうございました。私はいくつかのテストを行い、5GBまたは25GBのデータを保存するかどうかに関係なく、〜500MBの一定のメモリ使用量を得ました。これは完全ではありませんが、容認できます。 :) – xxorde
私は助けることができてうれしいです。どのパーツサイズを使用していますか、並行アップロードの回数は許可していますか? – mkopriva
私は同時アップロードを明示的に設定せず、20MBをPartSizeとして使用しました。私はちょうど256MBを試して、それは〜2.1 GBのメモリを消費します。 PartSize = 5MBの場合、132MBを消費します。私はここでパターンを見始めます;) – xxorde