LoginSignup
19
16

More than 5 years have passed since last update.

ConoHaオブジェクトストレージのCLIツールを作ってみた

Last updated at Posted at 2015-01-04

conoha-ojs

Goの習作ということで、ConoHaオブジェクトストレージ用のコマンドラインツール conoha-ojs を作ってみました。もともと社内の検証用に作っていたツールに、いくつかの機能を追加してドキュメントとヘルプを用意したものです。

使い方やインストール方法はGitHubにあります。

hironobu-s/conoha-ojs

ConoHaオブジェクトストレージは、OpenStack Swiftベースのオブジェクトストレージです。一応SwiftにはオフィシャルにPython実装のCLIツールが用意されています。これは非常に良くできているのですが、コマンドを実行する度に認証を行うので遅かったり、Pythonの環境を用意しないと行けなかったりと、いろいろ不便を感じていました。

Chapter 10. Object Storage command-line client

conoha-ojsは特徴として、

  1. ConoHaオブジェクトストレージで使える機能を一通りカバーしています
  2. Goで実装されているため、実行ファイルは一つでインストールが容易です
  3. 2.と同じ理由で、Windows, MacOSX, Linuxなど、だいたいどの環境でも動作すると思います
  4. 認証情報をファイルに保持します。コマンド実行の度に認証情報を設定する必要がありません
  5. 他のOpenStack Swiftで構築されたシステムに対しても動作するかもしれません(予定)

となっています。

swiftコマンドのように多機能ではありませんが、一般的に使う機能はサポートしています。またGoの特徴でバイナリ一つで動作するので、ポータビリティが高いです。お手軽に使うには良いと思います。

クイックスタート

まずGitHubのREADME.mdにインストール方法が書いてあるので、その通りにインストールします。MacOSXとLinuxはワンライナーでインストールできるのでとても簡単です。

hironobu-s/conoha-ojs

conoha-ojsコマンドを実行すると、使い方が表示されます。

$ conoha-ojs
Usage: conoha-ojs COMMAND [OPTIONS]

A CLI-tool for ConoHa Object Storage.

Commands:
  auth      Authenticate a user.
  list      List a container or objects within a container.
  stat      Show informations for container or object.
  upload    Upload files or directories to a container.
  download  Download objects from a container.
  delete    Delete a container or objects within a container.
  post      Update meta datas for the container or objects;
            create containers if not present.
  deauth    Remove an authentication file (~/.conoha-ojs) from a local machine.
  version   Print version.

最初に実行するのはauthサブコマンドです。このコマンドでオブジェクトストレージに認証を行います。username, passwordは、ConoHaコントロールパネルで作成したAPIユーザ名とパスワードです。tenant-id(テナントID)はコントロールパネル上で確認できます。

$ conoha-ojs auth -u [username] -p [password] -t [tenant-id]

実行してエラーが出なければ成功です。これですべてのコマンドが使えるようになりました。

さっそくpostサブコマンドでコンテナを作成してみます。

$ conoha-ojs post test-container

エラーが出なければ成功です。listサブコマンドで確認してみましょう。

$ conoha-ojs list
test-container

正しくコンテナが作成されていますね。

コンテナの情報を見る場合はstatサブコマンドを使います。

 conoha-ojs stat test-container
       Container: test-container
         Objects: 0
           Bytes: 0
        Read ACL:
       Write ACL:
   Accept-Ranges: bytes
X-Storage-Policy: Policy-0
    Content-Type: text/plain; charset=utf-8
     X-Timestamp: 1420380154.33451
      X-Trans-Id: txfe3701dd91d145ba8c67b-0054a94852
            Date: Sun, 04 Jan 2015 14:04:02 GMT
  Content-Length: 0

コンテナにファイルをアップロードするにはuploadサブコマンドを使います

$ conoha-ojs upload test-container hello.txt
INFO[0000] hello.txt (content-type: text/plain; charset=utf-8) was uploaded.

一方、ダウンロードする場合はdownloadサブコマンドを使います。

$ conoha-ojs download test-container/hello.txt
INFO[0000] test-container/hello.txt download complete.

感想

  • コマンドラインツール作るにはGoは便利すぎる。
  • Windows, MacOSX, Linuxのクロスコンパイルがあっさりできたのには驚いた。(僕はちょっとスクリプト書いただけ)
  • オブジェクトストレージは便利だからもっと使われてもいいと思う。
  • 正直swiftコマンドはあまり使い勝手良くない気がする。
19
16
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
16