2017-10-21 4 views
5

有効期限が切れた生成済みのPresigned URLがある場合、403 Forbiddenエラーがスローされたかどうかを確認するためにget_headers()(PHP)を実行する必要がありますか?それは不必要なGET要求なので、それは悪い考えですか?毎回新しいURLを再生成する必要がありますか?私は少し混乱しています。なぜなら、これに関する多くの情報はないようです。Amazon S3 - 登録済みのURLが期限切れになっていないかどうかを確認する方法

答えて

5

URLには有効期限があります。

署名バージョン2

HTT PS://bucket.s3.amazonaws.com/foo.txt AWSAccessKeyId = AKIAABCDEFGHIJK & は= 1508608760 &署名= xxxxxxxxxxx

期限

有効期限は、時刻をUTCで示します。

$ date -d @1508608760 
Sat Oct 21 17:59:20 UTC 2017 

は、その後、再生成するかしないかを決める、値を抽出し、UTC [time()]の現在時刻と比較することができます。


署名バージョン4

HTT PS://s3.amazonaws.com/bucket/foo.txt X-AMZ-アルゴリズム= AWS4-HMAC-SHA256 & X-AMZは、有効期限= 3600 & X-AMZ-資格= AKIAJRZXXXXXXXXus-東1%2Fs3%2Faws4_request & X-AMZ-SignedHeaders =ホスト& X-AMZ-日= 20171021T190750Z & X-AMZ-署名= 8b84ae9b59e9f8a8d7066ecc39e797c8dc29848abcdef61717

X-Amz-Dateは、ISO 8601形式のUTC時刻を示します。

値を抽出し、それをエポック/ UTCに変換し、現在の時刻とUTC [時間()]で比較し、再生するかどうかを決定できます。

+1

恐ろしい解決策、なぜ私はそれを考えなかったのか分かりません。しかし、私の場合、 'Amz-Expires'は秒単位の有効期限であり、' X-Amz-Date'はタイムスタンプです。 –

+1

@ D-Marc 'X-Amz- *'は、Signature Version 4 2014年以前にAWSサービスが導入された地域では、Signature Version 2と呼ばれる古いスタイルとそれをサポートしています。 –

関連する問題