概要
- 以下を調査・試す
- http://aws.clouddesignpattern.org/index.php/CDP:Private_Distribution%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3
- ダウンロードは省略する(ブラウザ、curlで確認した)
結果
- 対象のS3オブジェクトへのアクセス権限が設定できる
- URLの有効期限を設定できる
- 秒単位で設定する
- 有効期限は任意(デフォルト900s)
- 期限切れになると、レスポンスコード : AccessDeniedが返される
- 発行されたURL(署名)は無効にできない
- 署名の改ざんはできない
- 署名はリクエストパラメータとして付加される
- パラメータにはAWSAccessKeyID、Expires、Signatureが含まれる
- AWSAccessKeyId、 Signatureはもちろん、 Expiresも変更(改ざん)不可
- 改ざんした場合、レスポンスコードでSignatureDoseNotMatch が返される
検証コード
require 'aws-sdk'
object_name = "test_object"
bucket_name = "test_bucket"
expires = 60*60
uris = {}
s3 = AWS::S3.new
obj = s3.buckets[bucket_name].objects[object_name]
uri = obj.url_for(:read, :expires => expires).to_s
puts uri