さくらのクラウド オブジェクトストレージ
大容量データに対応したオブジェクトストレージサービスで、S3互換のAPIを備えています
S3とさくらオブジェクトストレージの差分
- AWS signature version
- S3: v4
- さくら: v2
- endpoint
- S3: s3.amazonaws.com
- さくら: b.sakurastorage.jp
RubyでS3につなぐのに使えるライブラリ
下記2つのライブラリがデファクトっぽい。
aws / aws-sdk-ruby
AWSの公式SDK
fog / fog
色々なクラウドサービスに対応したライブラリ。S3への接続部分は独自実装。
carrierwaveuploader/carrierwaveがS3にファイルをアップロードするのに使ってる。
Rubyからさくらのオブジェクトストレージを操作する
ruby: ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15]
aws-sdk (2系)
require 'aws-sdk'
s3 = Aws::S3::Client.new(
access_key_id: 'xxx',
secret_access_key: 'yyyy' ,
endpoint: 'https://b.sakurastorage.jp',
region: 'us-west-2', # 多分なんでもいい
signature_version: 's3' # v2みたいなもんっぽい
)
p s3.get_object(bucket: 'test-bucket', key: "sample_file.txt").body.read
fog (fog-aws (0.9.2))
require 'fog/aws'
# create a connection
con = Fog::Storage.new({
provider: 'AWS',
aws_access_key_id: 'xxx',
aws_secret_access_key: 'yyyy',
host: 'b.sakurastorage.jp',
endpoint: 'https://b.sakurastorage.jp',
aws_signature_version: 2
})
d = con.directories.get("test-bucket")
p d.files.get('sample_file.txt').body
※クレデンシャルの管理には気をつけてね。