LoginSignup
2
2

More than 5 years have passed since last update.

さくらのクラウド オブジェクトストレージをRubyから操作する

Last updated at Posted at 2016-03-29

さくらのクラウド オブジェクトストレージ

大容量データに対応したオブジェクトストレージサービスで、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

※クレデンシャルの管理には気をつけてね。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2