Ruby版ユーザライブラリ

インストール

  • バージョン2.1.0以降のRubyが導入されている必要があります。
  • Gemパッケージは、Rubygems.orgにて公開されています。
$ gem install iij-dag-client
また以下のURLからGemファイルをダウンロードし、Gemファイル名を指定してインストールすることも可能です。
https://storage-dag.iijgio.com/support/libs/dag-client-ruby/iij-dag-client-1.0.2.gem

 

$ gem install iij-dag-client-1.0.2.gem

 

使い方

rubydoc

以下の URL から Rubygems.org で公開している Gem パッケージから生成された開発用ドキュメントが参照できます。
http://www.rubydoc.info/gems/iij-dag-client/

clientの生成

アクセスキーIDおよびシークレットアクセスキーを設定し、clientを生成します。

Dag::Client.new(<アクセスキーID>, <シークレットアクセスキー>, <オプション>)

 

パラメータについて

アクセスキーIDおよびシークレットアクセスキーに加え、以下の表に示すオプションを設定することが出来ます。

パラメータ名 必須 デフォルト値 概要
apikey yes String   アクセスキーID
secret yes String   シークレットアクセスキー
storage_api no String https://s3api.iot.iij.jp ストレージAPIのエンドポイント
force_path_style no Boolean false
true : パス形式 でURLを生成し、ストレージAPIへアクセスします
false: 仮想ホスト形式 でURLを生成し、ストレージAPIへアクセスします
debug no Boolean false デバッグモード

 

サンプル

clientを生成

require 'dag'
client = Dag::Client.new("xxxxxxxxxx", "xxxxxxxxxxxxxxxxxxx")

オプションを設定する場合

require 'dag'
params = {
  force_path_style: false,
  debug: true
}
client = Dag::Client.new("xxxxxxxxxx", "xxxxxxxxxxxxxxxxxxx", params)

 

エラーレスポンス
ストレージAPIにて発生したエラーは、例外(Dag::Client::APIFailure)が発生します。
Dag::Client::APIFailure には以下の情報が格納されています。
名前 概要
message APIの実行時の情報
api_code エラーコード
api_message エラーメッセージ
api_status エラーステータス
api_request_id エラー時のリクエストID
api_resource エラー時のパス情報

また、上記以外のエラーレスポンスには以下のものがあります。

名前 概要
ParameterInvalid 不正なパラメータが設定された
APIOptionInvalid 不正なAPIオプションが設定された

 

機能一覧

ストレージ管理
機能名 概要
バケット一覧取得 バケット一覧を取得します。
バケット取得 バケットを取得します。
バケット作成 バケットを作成します。
バケット削除 バケットを削除します。
オブジェクト一覧取得 オブジェクト一覧を取得します。
オブジェクト取得 オブジェクトを取得します。
オブジェクト作成 オブジェクトを作成します。
オブジェクト削除 オブジェクトを削除します。

 

機能詳細

ストレージ管理

ストレージの操作を行うことができます。

 
バケット一覧取得

バケット一覧を取得します。

client.buckets.each do |bucket|
  puts bucket.name
  #=> bucket1
  #=> bucket2
end

 

バケット取得

指定したバケットを取得します。

 

# バケットを選択
bucket = client.buckets['bucket']
puts bucket.name
#=> bucket

 

バケット作成

バケットを作成します。

# バケットを作成
bucket = client.buckets.create('bucket')
puts bucket.name
#=> bucket

以下の方法で作成することもできます。

# バケットを作成
bucket = client.create_bucket('bucket')
puts bucket.name
#=> bucket

 

バケット削除

バケットを削除します。

# バケットを選択
bucket = client.buckets['bucket']
# バケットを削除
bucket.delete

以下の方法で削除することもできます。

# バケットを削除
client.delete_bucket('bucket')

 

オブジェクト一覧取得

以下のようにしてオブジェクトの一覧を取得可能です。

# バケットを選択
bucket = client.buckets['bucket']
# オブジェクト一覧を取得
bucket.objects.each do |object|
  puts object.name
  #=> object1/
  #=> object1/test1
  #=> object2/
end
# 接頭辞を指定して検索することが可能
bucket.objects.where(prefix: 'object1').each do |object|
  puts object.name
  #=> object1/
  #=> object1/test1
end

delimiterを指定した場合の例

# ストレージ上に存在するデータ
# /foo/photo/2009/index.html
# /foo/photo/2009/12/index.html
# /foo/photo/2010/index.html
# /foo/photo/2010/xmas.jpg
# /foo/photo/2010/01/index.html
# /foo/photo/2010/01/xmas.jpg
# /foo/photo/2010/02/index.html
# バケットを選択
bucket = client.buckets['bucket']
# 以下の条件でdelimiterを指定した場合
bucket.objects.where(prefix: '/foo/photo/2010', delimiter: '/').each do |object|
  puts object.name
  #=> /foo/photo/2010/index.html
  #=> /foo/photo/2010/xmas.jpg
  #=> /foo/photo/2010/01
  #=> /foo/photo/2010/02
end

whereメソッドの以下のパラメータを設定することでオブジェクトを絞り込んで取得できます。

パラメータ名 必須 デフォルト値 概要
prefix no String   前方一致でフィルタするための文字列
delimiter no String   オブジェクト階層の区切り文字

 

オブジェクト取得

オブジェクトを取得します。

# バケットを選択
bucket = client.buckets['bucket']
# オブジェクトを選択
object = bucket.objects['object1/test.gz']
puts object.name
#=> object1/test.gz
# オブジェクトからデータを読み込む
puts object.read
#=> "abcdefg"
# オブジェクトから3byte分データを読み込む
puts object.read(3)
#=> "abc"

 

 

オブジェクト作成
オブジェクトを作成します。
オプションを渡すことでマルチパートアップロードに対応しています。

 

# バケットを選択
bucket = client.buckets['bucket']
# オブジェクトを選択
object = bucket.objects['object1/test.json']
# 文字列
object.write('testobject')
# パス
object.write(Pathname.new('./object_1.json'))

 

マルチパートアップロードでオブジェクトを作成する

# バケットを選択
bucket = client.buckets['bucket']
# オブジェクトを選択
object = bucket.objects['object1/test.json']
# マルチパートアップロードでオブジェクトを作成する
object.write(Pathname.new('./object_1.json'), multipart: true, jobs: 10, splitsz: 10_000_000)

マルチパートアップロードを使用する場合は以下のオプションを指定することができます。

パラメータ名 必須 デフォルト値 概要
multipart no Boolean false マルチパートアップロードを有効にする
jobs no String 1 マルチパートアップロードの並列アップロード数
splitsz no Integer 104857600 オブジェクト分割サイズ。5MBバイト以上を指定
 
オブジェクト削除

オブジェクトを削除します。

# バケットを選択
bucket = client.buckets['bucket']
# オブジェクトを選択
object = bucket.objects['object1/test.json']
# オブジェクトを削除
object.delete

以下の方法で削除することもできます。

 

# オブジェクトを削除
client.delete_object('bucket', 'object_1/test.json')