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

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

 

サンプル

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 には以下の情報が格納されています。
名前概要
messageAPIの実行時の情報
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メソッドの以下のパラメータを設定することでオブジェクトを絞り込んで取得できます。

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

 

オブジェクト取得

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

# バケットを選択
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)

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

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

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

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

# オブジェクトを選択
object = bucket.objects['object1/test.json']

# オブジェクトを削除
object.delete

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

 

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