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にアクセスすると今度は表示できなくなっています。

認証してからダウンロードする時などに使えそうです。

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら