2

私は Amazon S3 のマルチパート アップロードに取り組んでおり、ファイルの一部を並行してアップロードできることを読みました。ただし、ドキュメントを確認すると、アップロードされたファイル パーツに対する Amazon の応答にパーツ番号が含まれていないことがわかります。私の質問は、ファイルのパート 1 とファイルのパート 2 を非同期にアップロードしてから、Amazon からの応答を確認した場合、応答がファイルのパート 1 を参照しているのか、パート 2 を参照しているのかをどのように確認すればよいですか?

リクエストとレスポンスの例を次に示します。

Request:
PUT /my-movie.m2ts?partNumber=1&uploadId=VCVsb2FkIElEIGZvciBlbZZpbmcncyBteS1tb3ZpZS5tMnRzIHVwbG9hZR HTTP/1.1
Host: example-bucket.s3.amazonaws.com
Date:  Mon, 1 Nov 2010 20:34:56 GMT
Content-Length: 10485760
Content-MD5: pUNXr/BjKK5G2UKvaRRrOA==
Authorization: AWS AKIAIOSFODNN7EXAMPLE:VGhpcyBtZXNzYWdlIHNpZ25lZGGieSRlbHZpbmc=

***part data omitted***

Response:
HTTP/1.1 200 OK
x-amz-id-2: Vvag1LuByRx9e6j5Onimru9pO4ZVKnJ2Qz7/C1NPcfTWAtRPfTaOFg==
x-amz-request-id: 656c76696e6727732072657175657374
Date:  Mon, 1 Nov 2010 20:34:56 GMT
ETag: "b54357faf0632cce46e942fa68356b38"
Content-Length: 0
Connection: keep-alive
Server: AmazonS3
4

2 に答える 2

2

各パーツへの応答で返される Etag は、アップロードしたばかりのパーツの md5sum です。

あなたの例の場合、私が間違いを犯していない限り、あなたの Content-MD5 は a54357aff06328ae46d942af69146b38 にデコードされます ... したがって、MD5 計算に問題がない限り、投稿したリクエストとレスポンスは「しない」ことをお勧めしますt 実際に一緒に属しています。

私が作成したマルチパート アップローダは、重要なデータをアーカイブするために使用するため、非常に衒学的です (実際、非常に衒学的なので、マルチパート アップロードが成功したと判断した後、ファイルを再ダウンロードして、最終製品が完璧です) ...しかし、このユーティリティは、ブロックする呼び出しでパーツを順次送信し、応答が返されるまで戻りません...そして、その健全性テストの 1 つは、ブロックのローカルで計算された MD5 をEtag が返ってきて、一致しないと致命的なエラーになる...ということで、同じブロックがなければ、そのようにパーツを関連付けることができそうです。


追加:

私はmd5を計算するために欠落している本文を使用しませんでした:)私はあなたのヘッダーを取りました:

Content-MD5: pUNXr/BjKK5G2UKvaRRrOA==

base64 -> binary -> hex に変換し、a54357aff06328ae46d942af69146b38 を得ました。

次のように、2 つのコマンド ライン ユーティリティをつなぎ合わせて、確認用のダウンロードを行います。

wget --server-response '$signed_url' -O - | md5sum

これにより、ファイルがダウンロードされ、チェックサムを計算するためにバイトが md5sum にパイプされるため、ディスク領域やメモリをほとんど使用せずに無限大のファイルをダウンロードできます。このwgetユーティリティには再試行機能が組み込まれており、何かが接続を切断した場合、中断したバイト位置から続行しようとします。このパイプラインの出力は、ファイルの md5sum (stdout) と、サーバーによって送信されたヘッダーおよび進行状況メーター (stderr) です。私のユーティリティは stdout をキャプチャして比較を行いますが、stderr を監視のためにコンソールにリークさせます。

于 2013-07-11T02:13:34.303 に答える