blog.nambo.jp

Amazon S3で期限付きURLを発行する

Amazon S3で、指定した日付(日時)までアクセスできるURLを発行する方法です。
今回はRubyのaws-sdkを使用してみます。

aws-sdkをインストールしていない場合はまずインストールしてください。

ターミナル
1
$ gem install aws-sdk

Rubyのコードは以下の通りです。
ACCESS_KEY_ID, SECRET_ACCESS_KEY, BUCKET_NAME, FILE_NAMEを書き換えてください。
下の例では、60*60*24で、24時間アクセス可能なURLを発行します。

1
2
3
4
5
6
7
8
9
require 'aws-sdk'

AWS.config(
  :access_key_id => 'ACCESS_KEY_ID',
  :secret_access_key => 'SECRET_ACCESS_KEY',
)

object = AWS::S3.new.buckets['BUCKET_NAME'].objects['FILE_NAME']
puts object.url_for(:read, :expires => 60*60*24)

これを実行すると、ファイル名の末尾に
?AWSAccessKeyId=XXXXX&Expires=1376946000&Signature=XXXXX
このようなパラメータが付いたURLが発行されます。
Expiresの部分で有効期限がわかるようになっています。