conoha オブジェクトストレージを利用した静的 画像/動画サイトの作成

オブジェクトストレージがどんなに便利かわからない状態で、ちょっと作ってみました。conohaのオブジェクトストレージですごくいいなと思ったところが、

- amazon S3と比較してネットワーク転送料がかからない

ってところですｗ 今回画像だけしかアップしておりませんが、他にも動画とかもありかな？と思います。

swiftを頑張って覚えないとと思ったのですが、私にはあまりにも難しすぎて、断念しましたが、

ここに
https://github.com/hironobu-s/conoha-ojs
すばらしいツールがあったのでこれを使うことにしました。

今回は、conoha-ojsを利用して、画像をアップロードし、WEB見れるようにするところまで作っていこうと思います

あたまりまえなのですが、conohaの設定で、オブジェクトストレージを利用する設定をしないと動かないので、注意ｗ

## インストール

作業は基本的に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
```

![conoha gazou](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;
    }
```