IDCフロンティアのオブジェクトストレージサービスはBashoのRiakCSを採用しています。
Riak CS Storage APIは、Amazon S3 API
との互換性が高くできているので、s3cmdやbotoが使えます。
Pythonで書かれたブログラムだとdocker-registryなど、内部でbotoを使うことが多いのでさっそく確認してみます。
s3cmdのインストール
s3cmdをインストールします。
$ sudo apt-get install s3cmd |
s3cmd --configure
で設定ファイルを作成しますが、エンドポイントがAWSと異なるのでAccess Key
とSecret Key
を入力した後は、とりあえず.s3cfgを保存します。
$ s3cmd --configure |
.s3cfgのエンドポイントを修正します。エンドポイントの確認はコントロールパネルから確認できます。curly brace
は説明マーカーなので、実際に入力するときは含まれないです。
access_key = {確認したAccess Key} |
設定が終われば、普通のs3cmdとして使えます。
$ s3cmd --help |
botoのインストール
これまではvirtualenvを作ってましたが、Dockerを使うことで開発環境にはもう不要になりました。
virtualenvだとSSHや設定ファイルの読み込みにはまったりするので。
Dockerコンテナのシェルを起動して、botoをインストールします。
$ docker run -i -t ubuntu /bin/bash |
~/.botoファイルに接続情報を記入します。curly brace
は実際には含みません。
[Credentials] |
pythonのインタラクティブシェルでテストします。my-bucket
のところは、グローバルに一意である必要があるので、使われていないバケット名を指定します。
# python |
デバッグ情報を含めて、確認できたと思います。
ライブラリによっては、boto.connect_s3
でなく、boto.s3.connection.S3Connection
を使っています。
import boto.s3.connection |
boto.s3.connect_to_region
というのもありますが、まだ動かせていません。
次は、.botoを使わなず、引数に渡してみます。
#!/usr/bin/env python |
バケット名を指定して実行します。curly brace
は実際には含みません。
# python ~/idcf_storage.py {グローバルで一意になるバケット名} |
まとめ
IDCフロンティアのオブジェクトストレージサービスでも、s3cmdやbotoの互換性が高いことが確認できました。
docker-registryでも使えるかどうか、次に試してみようと思います。