画像や動画ファイルは、IBM Cloud Object Storageにおこう!

Pocket

IBM CloudでWebアプリやLINEアプリを開発していると、画像ファイルや動画ファイルの保存場所に困ることがあります。 Node.jsなどが稼動しているファイルシステム上に保存したファイルは、アプリが再起動したときに消えてしまいますし、他のインスタンスからは参照できないためです。

そこで、IBM CloudのObject Storageです。 Object Storageにアップロードしたファイルを、WebアプリやLINEアプリからアクセスできるようにする方法を紹介します。

Serviceの作成

最初に、Object Storageサービスを作成します。
IBM Cloudのカタログから「Cloud Object Storage」を選択します。

Cloud Object Storage

次に、必要に応じてサービス名を変更してサービスの種類を選択します。
今回は、IBM Cloud契約のみで、無料でも利用可能な、右端にあるObject Storageを作成します。

サービス種類選択

最後に、価格プランを選択します。

価格プラン

しばらくすると、サービスが作成されます。

コンテナーの作成

ファイルを保存するコンテナーを作成します。
作成されたObject Storageサービスをクリックすると、選択している地域のコンテナー一覧が表示されます。
右側にある[アクションの選択]をクリックして表示される[コンテナーの作成]を選択します。

コンテナー名を入力して[保存]ボタンをクリックします。

コンテナーが作成されます。

ファイルのアップロード

作成したコンテナーをクリックすると、コンテナー内のファイルが一覧表示されます。
コンテナー内のリストに青枠が表示されるようにファイルをドラッグ&ドロップするとアップロードが始まります。

アップロードが完了すると、ファイル名が表示されます。

資格情報の作成

アクセスに必要な資格情報を作成します。

左にある[サービス資格情報]をクリックして、[新資格情報]をクリックします。

表示されたウィンドウの[追加]をクリックします。

作成された資格情報の[資格情報の表示]をクリックすると、内容が表示されます。

ブラウザでアクセス

試しに、アップロードしたファイルにブラウザでアクセスします。

URLは次のように決まります。


https://地域.objectstorage.open.softlayer.com/v1/AUTH_プロジェクトID/コンテナ名/ファイル名

地域
 ダラス: dal
 ロンドン: lon
プロジェクトID: 資格情報のprojectId


すると、アクセスを許可されていないというエラーが発生して、画像ファイルを表示できません。

そこで、認証なしにアクセスできるようにコンテナーにアクセス権を設定していきます。

Swiftコマンドのインストール

アクセストークンの取得に必要なSwiftコマンドをインストールします。Ubuntuなどで下記コマンドを実行してインストールします。

アクセストークンの取得

REST APIに必要なアクセストークンを、Swiftコマンドで取得します。
資格情報から環境変数を設定して、コマンドを実行します。

成功するとURLとアクセストークンが表示されます。
パスワードがカッコなどでエラーになる場合は、パスワードを”で括ります。

コンテナにアクセス権を設定

取得したアクセストークンを使用して、コンテナーのファイルに認証無しでアクセスできるようにします。次のコマンドでアクセス権を設定します。

次のように表示されたら成功です。

ブラウザで再アクセス

もう一度、ブラウザでアクセスしてみます。今度は、画像が表示されます。

まとめ

今回は、Object Storageに置いたファイルをアプリから簡単にアクセスできるようにしてみました。
ただ、場合によっては、アドレスが分かっただけでアクセスできては困ることがあります。
そのような場合にどうすればいいのかについて、機会があれば紹介したいと思います。

お問い合わせ先

執筆者プロフィール

Kudou Hirotaka
Kudou Hirotakatdi AI・コグニティブ推進部
2016年からIBM Watsonを使ったシステム開発に従事しています。最近は、IBM Cloud のOpenWisk、Kubernetes、Push Notificationsなども使い始めています。
Pocket

関連記事