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
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')