ConoHa オブジェクトストレージ用 Ruby クライアント

そこそこ信頼できるオブジェクトストレージとしてConoHaを使い出しました。ちょくちょくAWS S3は使っていたんですけど、無限にダウンロードし続けるバグを書いてしまったせいで6万円以上無駄にパケ死してしまったということがあり、個人ではなるべく使いたくないという気持ちでいっぱいになっています。その点ConoHaは転送量無料で100GB/450円/月と、S3の転送量課金に怯える貧民にとってはとてもいいサービスとなっています。

オブジェクトストレージが嬉しいケース

自分の場合です。普通にもっとたくさんある。

  • アプリケーションと別の場所に静的ファイルを設置できる

    • アプリサーバーが複数台必要になった場合ほぼ必要になります
    • アプリサーバーが壊れても復活できる
  • とりあえずここに置いておけばファイルは安全

    • オブジェクトストレージは何重にもファイルを保存してるので安心感ある
    • アプリサーバーが壊れても復活できる

ConoStorage

現在のConoHaオブジェクトストレージ管理画面では作成と削除のみ行えるようになっており、ほとんど使えません。というかブラウザから使う画面なんてほとんどないのでRubyから扱えるようにクライアントを書いた。最初は openstack gem を使って操作していたんだけど、Web公開前提で使うのがかなり分かりづらかったしAPIリファレンス網羅するのはもだいぶ分かりづらい感じがあった。

Usage

gem install cono_storage
require 'cono_storage'

client = ConoStorage.new(
  tenant_id: 'b7daff9xxxxxxxxxxxxxxxxx',
  username: 1111111,
  password: '^passw0rd$',
  endpoint: 'https://objectstore-r1nd1001.cnode.jp/v1/b7daff9xxxxxxxxxxxxxxxxx',
  web_mode: true # Web公開モード
)

# コンテナ作成
client.put_container('awesome_gifs')# => ConoStorage::Response
# オブジェクトアップロード
client.put_object('awesome_gifs','nyan.gif').url #=> "https://objectstore-...cnode.jp/.../awsome_gifs/nyan.gif"
# 削除予約付きオブジェクトアップロード
client.put_object('awesome_gifs', 'wan.gif', hearders: { 'X-Delete-At' => "1170774000" } ) # Custom Headers
# オブジェクトのメタデータなどダウンロード
client.get_object('awesome_gifs', 'nyan.gif')
# オブジェクト削除
client.delete_object('awesome_gifs', 'nyan.gif')
# コンテナ削除
client.delete_container('awesome_gifs').status #=> 204

ConoHaのAPIリファレンス見ながら書いたけど、OpenStack Swiftならエンドポイント変えるだけでそのまま使えるんじゃないかという気が若干しています。デフォルト値なしのキーワード引数を使っているため、Ruby 2.1 以降が必要です。ソースはGithubにあります。

Github - kkosuge/cono_storage オブジェクトストレージ APIリファレンス - ConoHa openstack - ConoHaオブジェクトストレージの静的WEBページ公開機能でイメージギャラリーを作る - Qiita


2014年10月02日

iPhone 6 Plus の画面が割れた

発売から10日もせずに割れた。事故の内容については Theクラッシュ! の方に記載されています。たくさん iPhone 落としてきたけど画面割ったのは初めて。iPhone…

2014年09月23日

キャンピングカーで新潟燻製パーティー

キャンピングカー借りて新潟に行った。寝れるし電源あるし便利だけど、横幅が中型トラックくらいあってなかなか勇気が必要な乗り物だった。

2014年07月03日

BigQueryにTwitterのタイムラインを入れる [Ruby]

Twitterのタイムラインを保存しておくとなにかと便利なので、色々と保存形式を変えながら4年くらい記録し続けている。ツイートの保存が便利すぎるので、 ツイセーブというサービス化までした 。かつてはテキストで、MongoDBやMySQLとかGroonga…

2014年06月29日

個人開発を支える技術Nightで話してきた

個人開発を支える技術Night で ツイセーブ を支える技術という話をした。あまり公開したくない数字とか雇用関係の話が含まれているため、スライドは非公開とさせていただきます。ツイセーブのサーバー構成(VPSを5台使ってる)や全文検索周り(いろいろあってSolr…

2014年06月17日

Gyazoのアップロード先をTwitterにした

一部のWeb系エンジニア大好きオレオレGyazoの話題です。今回は画像のアップロード先をTwitterにしました。 ご多分にもれず我が家もオレオレGyazoサーバーを運用しておりまして、 pic.kksg.net にアップロードされる方式をとっていました。しかしTwitter…