ユーザーを一時的な事前に署名された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:禁止。