RubyでS3の期間限定のURLを生成する先日参加したZmandaクラウドバックアップセミナーでの玉川憲さんの発表で、S3で期間限定のURLを生成することができるということを知った。Consoleでは簡単に実現できないのでRubyでやってみた。60*60*24*31)これで、下記のようなURLが生成された。このURLは、一ヶ月間だけ有効のものになる。https://rubysdktest-20110803.s3.amazonaws.com/logo.gif?AWSAccessKeyId=AKIAIFCOKTCTDSDMPX2A&Expires=1315125436&Signature=zEmS9f4%2Fm%2BFLgxEsVA9ppfQDhks%3D期限が切れたあとにアクセスすると、次のようなXMLが返ってきて、期限が切れてエラーであることを示している。Expiresの値で、いつ期限が切れたのかがわかるようになっている。<ServerTime>2011-08-04T02:44:59Z</ServerTime></Error>ところで、URLに"Expires=..."という文字列が含まれていたので、この値を変更すれば期限が切れた後でもアクセスできるのでは...、と思ってやってみたが、さすがにダメだった。今度は別のエラーになった。<AWSAccessKeyId>AKIAIFCOKTCTDSDMPX2A</AWSAccessKeyId></Error>署名が合わないエラーになったらしい。QueryStringが署名されたもので、改竄ができないようになっている様子。ちなみに、ACLの設定で誰でも参照できるように設定されていると、通常のURLでアクセスすれば問題なくアクセスできてしまうので要注意。2.3.3-p222。