LoginSignup
13
15

More than 5 years have passed since last update.

ConoHaオブジェクトストレージで公開コンテナを作成する

Last updated at Posted at 2015-09-26

概要

ConoHaオブジェクトストレージのデフォルトは、オブジェクトを参照するだけでも必ず認証が必要になっています。

オブジェクトストレージに格納したオブジェクトをWEBに公開する場合は、コンテナの設定を行う必要があり、現時点ではコントロールパネルからは設定できないようです。

今回はswiftコマンドで設定してみました。

swiftと依存するプログラムをインストール

$ sudo yum install gcc
$ sudo yum install python-setuptools
$ sudo yum install python-pip
$ sudo yum install python-devel
$ sudo pip install python-swiftclient
$ sudo pip install pbr
$ sudo pip install --upgrade setuptools
$ sudo pip install python-keystoneclient
$ swift --version
    python-swiftclient 2.6.0

ConoHaオブジェクトストレージにアクセスするための認証情報を環境変数に設定します。

$ export OS_AUTH_URL='https://identity.tyo1.conoha.io/v2.0'
$ export OS_TENANT_NAME='[テナント名]'
$ export OS_USERNAME='[APIユーザー名]'
$ export OS_PASSWORD='[APIユーザーのパスワード]'

認証なしでアクセスできるコンテナを作成

swift コマンドで認証なしで参照可能なコンテナを作成します。
bash
$ swift post -r '.r:*' public

Cyberduck などでファイルをアップロードすると、ブラウザから認証なしでアクセスできるようになります。

参照URL

URLは「[Object Storage Serviceのエンドポイント]/[コンテナ名]/[ファイル名]」になります。
もう少し具体的に書くと「 https://object-storage.tyo1.conoha.io/v1/nc_000000000000000000000000/public/hoge.jpg 」のような感じ。

URLが長くテナントIDが含まれているため、リバースプロキシを用いてURLを短くする方法がありますが、リバースプロキシを導入するとオブジェクトストレージへ逃がしたファイルへのリクエストが必ずリバースプロキシを経由してしまうため、負荷対策という面からこのような形にしています。

HTMLには下記のように記述することで、静的リソースはオブジェクトストレージに直接処理を任せて、WEBサーバは動的コンテンツのみを配信すればいいことになります。

<img src="https://object-storage.tyo1.conoha.io/v1/nc_000000000000000000000000/public/hoge.jpg" />
13
15
0

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
13
15