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