オブジェクトストレージがどんなに便利かわからない状態で、ちょっと作ってみました。conohaのオブジェクトストレージですごくいいなと思ったところが、
- amazon S3と比較してネットワーク転送料がかからない
ってところですw 今回画像だけしかアップしておりませんが、他にも動画とかもありかな?と思います。
swiftを頑張って覚えないとと思ったのですが、私にはあまりにも難しすぎて、断念しましたが、
ここに
https://github.com/hironobu-s/conoha-ojs
すばらしいツールがあったのでこれを使うことにしました。
今回は、conoha-ojsを利用して、画像をアップロードし、WEB見れるようにするところまで作っていこうと思います
あたまりまえなのですが、conohaの設定で、オブジェクトストレージを利用する設定をしないと動かないので、注意w
インストール
作業は基本的にrootで行います
L=/usr/local/bin/conoha-ojs && curl -sL https://github.com/hironobu-s/conoha-ojs/releases/download/v20150406.1/conoha-ojs-linux.amd64.gz | zcat > $L && chmod +x $L
初期設定
.bash_profile のPATHを編集する :/usr/local/bin
vi ~/bash_profile
-------------------------------------
PATH=$PATH:$HOME/bin:/usr/local/bin
bash_profileの再読み込み
source ~/.bash_profile
認証情報のクリア
conoha-ojs deauth
認証情報の設定
認証情報の内容につきましては、conohaのユーザーであれば、WEBログイン後の「API」というところから確認できます。
conoha-ojs auth -u "gncuNNNNNNNN" -p "passwd2016" -t "471be32785774a8aa948e4d52534a4ef" -a "https://identity.tyo1.conoha.io/v2.0"
設定内容は以下を確認
conoha-ojs auth
Usage: conoha-ojs auth [OPTIONS]
Authenticate to ConoHa ObjectStorage.
-u, --api-username: API Username
-p: --api-password: API Password
-t: --tenant-id: Tenant ID
-a: --auth-url: Auth URL(Optional)
If not set, it will be used ConoHa Auth URL(https://ident-r1nd1001.cnode.jp/v2.0).
conoha-ojsの操作
オブジェクトストレージから基本、WEB参照できるように構成する手順
コンテナの状態を確認
conoha-ojs stat
-------------------------------------------------------------------------------------------------------------
Object:
Content Type: text/plain; charset=utf-8
Content Length: 0
LastModified: Mon, 01 Jan 0001 00:00:00 UTC
ETag:
Date: Thu, 07 Jan 2016 07:00:28 GMT
Accept-Ranges: bytes
X-Trans-Id: tx8e1b55a299ae495f9e52a-00568e0d0c
X-Account-Object-Count: 2
X-Account-Storage-Policy-Policy-0-Container-Count: 1
X-Timestamp: 1441782846.75681
X-Account-Meta-Quota-Bytes: 214748364800
X-Account-Storage-Policy-Policy-0-Bytes-Used: 7995331
X-Account-Storage-Policy-Policy-0-Object-Count: 2
X-Account-Container-Count: 1
X-Account-Bytes-Used: 7995331
コンテナの参照
conoha-ojs list
-----------------------------
panda
コンテナの削除
コンテナを削除すると下位もまるっと消えます
conoha-ojs delete panda
----------------
INFO[0000] panda/uploaded was deleted.
コンテナ/オブジェクトの作成
WEBで参照できるようにパーミッションをつける
conoha-ojs post -r ".r:*,.rlistings" panda
conoha-ojs post -r ".r:*,.rlistings" panda/uploaded
conoha-ojs list panda
-----------------------------------------------------------------------------
uploaded
オブジェクトのアップロード
上記にて作成した、コンテナ/オブジェクトに画像ファイルをアップロードしてみます
conoha-ojs upload panda/uploaded 20131118-02-naki.jpg
-----------------------------------------------------------------------------
INFO[0000] 20131118-02-naki.jpg (content-type: image/jpeg) was uploaded.
- 余談ですが、ワイルドカードの指定も行えます
conoha-ojs upload panda/uploaded 20131118-02-naki.jpg
- 注意点
こんなことやると、パスもオブジェクトとして、まるっとアップされちゃいます
conoha-ojs upload panda/uploaded /tmp/gazou/20131118-02-naki.jpg
conoha object storageのstatic web site を参照する
URLを調べる
conohaのweb管理画面から、エンドポイントの情報を確認
以下の通りになっていると思うが、これがend pointです
Object Storage Service https://object-storage.tyo1.conoha.io/v1/nc_471be32785774a8aa948e4d52534a4ef
画像がでるか確認
上記のobject storage のURLに[コンテナ]/[オブジェクト]/[アップロードしたファイル名]をつけてやればWEB参照できます
https://object-storage.tyo1.conoha.io/v1/nc_471be32785774a8aa948e4d52534a4ef/panda/uploaded/20131118-02-naki.jpg
てな感じで画像がでました、結構便利です。
あ。。でもendpointのURLが長くて、萎えるので、nginxのリバースプロキシとか利用して、短くするのもありかな?と思います
- nginx.conf 一部抜粋
location /varc {
proxy_pass https://object-storage.tyo1.conoha.io/v1/nc_471be32785774a8aa948e4d52534a4ef/panda/uploaded;
}