2016-07-08 6 views
0

ユーザーを一時的な事前に署名されたAWSダウンロードにリダイレクトするサービスがあります。これらは大容量のファイルで、しばしば5-10GBです。ダウンロードの共有を防止するため、有効期限は30秒です。3XXリダイレクト後に元のURLを再試行します。

インターネット接続が遅い場合を除き、すべて機能していますが、障害が発生したり中断されたりする傾向があります。 wgetには自動的にダウンロードを再試行する機能があります。しかし、代わりに再試行の元のURL(例:http://service.com/download/file.zip)は、wgetのリダイレクト事前署名URLを再試行します(例:http://service.s3.amazonaws.com/file.zip?AWSAccessKeyId=XXXX&Signature=XXXX&Expires=1468000000

これらが大きなファイルがあり、事前に署名寿命が非常に短いため、その一時的なURLもはや有効ではなく、ユーザは403禁止された結果を得る。

元々、この問題に気づいたときは、302 Found Found一時的なリダイレクトを使用していました。ちょっとした研究で、307一時的なリダイレクトを使用しているはずです。しかし、それはwgetの問題を解決しませんでした。笑いとくすぐりのために試しました303他を参照してください。

リダイレクトされたURLの代わりに元のURLを再試行する方法を知っている人はいませんか?以下

wgetの例ログである:

--2016-07-06 10:29:51-- service.com(service.com)に接続https://service.com/download/file.zip

| 10.0.0.1 |:443 ...接続しました。

応答を待って、送信されたHTTPリクエスト... 302実測

場所: https://service.s3.amazonaws.com/file.zip?AWSAccessKeyId=XXXX&Signature=XXXX&Expires=1468000000

--2016-07-06 10 [次]:29:52-- https://service.s3.amazonaws.com/file.zip?AWSAccessKeyId=XXXX&Signature=XXXX&Expires=1468000000

54.231.12.129

がservice.s3.amazonaws.comに接続しています...(service.s3.amazonaws.com)service.s3.amazonaws.comの解決210(service.s3.amazonaws.com)| 54.231.12.129 |:443 ... connected。

応答を待って、送信されたHTTPリクエスト... 200 OK

長さ:2070666907(1.9G)アプリケーション/ ZIP]

保存する: 'file.zip'

file.zip 53%[=========>] 1.03G - KB/s in 18m 7s

2016-07-06 10:47:59(995 KB/s) - 読み取りエラーバイト 1107205784/2070666907(指定されたセッションは何らかの理由で で無効になりました)。再試行。

--2016-07-06 10:48:00--(試してください:2)https://service.s3.amazonaws.com/file.zip?AWSAccessKeyId=XXXX&Signature=XXXX&Expires=1468000000

(service.s3.amazonaws.com)service.s3.amazonaws.comへの接続| 54.231を。 12.129 |:443 ...接続しました。

応答を待って、送信されたHTTPリクエスト... 403禁止

2016年7月6日10時48分01秒ERROR 403:禁止。

答えて

-1

バッシュコード: initial_error_EXIT_STATUS;まで["$?" -eq "0"]; wgetを実行するhttps://example.com/download/file.zip -c;私は同様の問題、および@panzeritoと同様の答えを持っていたが、スクリプトにそれを破った私はloopdone

#!/bin/bash 
until `$1`; do sleep 1; echo restarting; done 

と呼ばれ、その後、私はちょうどそれを強制的にloopdone "wget -c http://my.url/"(税込引用符)を行うことができます

0

を行って終了コードが0になるまで、何度も何度も実行してください(サーバがサポートしていない限り再開してください)。(エラーなし)

関連する問題