S3のオブジェクトに一時的に(期限付きで)アクセスするという方法があります。
はじめに、下記のようにコンテンツが表示しないことを確認しておきます。
http://www.suz-lab.com.s3.amazonaws.com/form.html
次に、下記スクリプトにて期限付き(5分間)のURLを作成します。
require_once("/opt/aws/php/sdk.class.php"); define("AWS_KEY" , ACCESS KEY"); define("AWS_SECRET_KEY", "SECRET KEY"); $s3 = new AmazonS3(); $s3->set_region(AmazonS3::REGION_US_E1); $url = $s3->get_object_url("www.suz-lab.com", "form.html", "5 minutes"); var_dump($url);
そして作成したURLに期限内(5分間)にアクセスすると、今度は表示することを確認できます。
http://www.suz-lab.com.s3.amazonaws.com/form.html?AWSAccessKeyId=XXXXXXXXXXXXXXXXXXXX&Expires=1315309784&Signature=H9jDp7k8jsRTiv%2BpudXztARIN5Q%3D
期限が過ぎてから、同じURLにアクセスすると今度は表示できなくなっています。
認証してからダウンロードする時などに使えそうです。