IBM Cloud Object Storage (ICOS) に WinSCP でアクセスしてファイルサーバーとして利用してみた

以前からお世話になっていた Windows用 SCP/FTP ソフトの [WinSCP](https://winscp.net/eng/docs/lang:jp) がバージョン5.13で Amazon S3 プロトコルに対応したようです。

[IBM Cloud Object Storage (ICOS)](https://developer.ibm.com/jp/cloud3m/#icos) も S3 互換のうえ、ライトプランであれば 25GB までは無料です。この組み合わせは良いのでは？とちょっと試してみました。すごく便利になりました。

【追記】同様に [Cyberduck アプリを対象とした記事](https://qiita.com/yamachan360/items/3ad08a51490ce75820f2) を投稿しました。ICOS サービス作成に関してはこちらのほうが説明が新しいので、よろしければご参照ください

# ICOS サービスの作成

[IBM Cloud](https://qiita.com/yamachan360/items/f3f0f10e8ae41fd65f5d) にログインし、[カタログ] から [ストレージ] を選んで [オブジェクト・ストレージ] をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/6eef2674-0b22-4cda-cdb2-255d5ba6558d.png)
「価格プラン」で「ライト」が選択されていることを確認のうえ、[作成]をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/06befcfa-48cc-31dd-d0c8-d085371aa4c4.png)
「セットアップ」ページが開きますので [バケットの作成] をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/164ef71f-483a-8c1b-9afe-3a951b5660ca.png)
「バケット」ページが開きますので「固有のバケット名」を入力し、「回復力」を「Cross Regions」に変更して [バケットの作成] をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/197217da-2e43-d9ac-5d3c-18a4126586cd.png)
これで ICOS サービスが利用可能になりました。

# ファイルをアップロードしてみる

バケットを作成すると「バケット」のサブメニュー「オブジェクト」に移動します。

もし迷ったら左上の [IBM Cloud] をクリックして「ダッシュボード」に戻り、[リソースの表示] メニューから「ストレージ」の下にある ICOS サービス名をクリックして移動し、対象のバケット名をクリックすれば同じメニューに戻れます。

そして右にある [ファイルのアップロード] ボタンを使用するか、その下にあるドラッグ＆ドロップ領域を利用して、何かファイルをアップロードしてみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/022f1383-25cd-1cd1-3e6f-1e6ce3dd1f93.png)
ファイルをアップロードすると、以下のような完了メッセージが一定期間表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/10776552-2de2-e1e0-5ab1-dd0ad65ad0b5.png)
また「オブジェクト」ページにアップロードしたファイルが追加され、拡張メニューから [ダウンロード] や [削除] などのアクションを実施できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/c369ad2c-d5ad-1a6a-25be-c26c611657d8.png)
これら操作はあくまで ICOS の動作確認。WinSCP のセットアップができたら、上記操作なんてGUIでサクサク操作できちゃいますー。

# アクセスのための資格情報の作成

さて、作成した ICOS サービスにアクセスするための資格情報を作成しましょう。

左メニューの「サービス資格情報」をクリックし、[新規資格情報] ボタンをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/a8788b33-a022-b3c6-70be-34e61abc687e.png)
「新規資格情報の追加」ポップアップが開きますので、もし必要であれば名前を変更し、役割を設定(今回はフル権限を与えるManagerとします)し、[Include HMAC Credential] をチェックして [追加] ボタンをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/8e450d1d-cfc4-a5d2-b834-175d34f2e39d.png)
これで今回作成した ICOS サービスに対し、フル権限でアクセス可能なサービス資格情報を用意できました。

作成されたサービス資格情報で [資格情報の表示] をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/3254080f-45ac-b00e-f96f-ae6b04c1233b.png)
`cos_hmac_Keys` に定義されている `access_key_id` と `secret_access_key` の値をメモしておきましょう。

# WinSCP のインストールと設定

Windows 環境の方で、WinSCP を未使用、もしくはバージョン5.13より古いものを利用されている方は、インストールしましょう。

[WinSCP download](https://winscp.net/eng/download.php) ページから最新版のインストーラーをダウンロードして実行します。ライセンス条件だけしっかり読んで、後はデフォルト設定のまま進めて大丈夫です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/22f1ebad-9c98-da21-d842-cb0e784e2172.png)
インストール後、WinSCP が起動すると、新しいサイトの設定ポップアップが開きます。まずは「転送プロトコル」で [Amazon S3] を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/b5ef8971-cd6e-7d58-8050-0579588ffe51.png)
「ホスト名」はバケットを作成した画面の「エンドポイント」メニューに一覧があり探せます。今回は AP の Cross Regions を選択しているので、以下を使用してください。

```
s3.ap.cloud-object-storage.appdomain.cloud
```

また 「アクセスキーID」と「シークレットキー」欄にはそれぞれ、メモしておいた `access_key_id` と `secret_access_key` の値を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/9f342f54-cc2c-066a-15a6-73d84ce19537.png)
[保存] ボタンで今回のアクセス情報を保存し、[ログイン] ボタンで ICOS に WinSCP が接続しアクセスできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/a5ceba60-45e5-934e-946f-71cbfdd943d0.png)
右がIBM Cloud側の ICOS サービスなのですが、まずはバケットの名前が表示されているのがわかります。複数のバケットを作成すると、ここにアクセス可能なバケット名が並びます。

これらバケットを対象に、通常のファイルサーバーのようにファイルのアップロードやダウンロードが可能なことを確認してください。

Web 画面で操作するより、かなーり使いやすいですよね！

# 補足:フォルダの扱いについて

ICOS 上では「プレフィックス・フィルター」という概念があり、これが Windows や FTP ソフトにおけるフォルダに相当します。

例えば WinSCP で新規に `test` というフォルダを作成し、そこに `sprites.gif` という画像ファイルをアップロードした場合、IBM Cloud の ICOS の画面では以下の2つのオブジェクトが作成されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/83198937-f2eb-8d26-30a6-82eee2178d56.png)

`test/` という空のオブジェクトがフォルダに対応して作成され、画像ファイルは `test/sprites.gif` とパス付きの名前に変換されていることがわかります。この場合の `test/` が ICOS の「プレフィックス・フィルター」です。

# 補足：ライトプランの制限を理解する

作成前にライトプランの上限はよく確認しておきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193519/1117fae2-ba9d-221b-fb75-0cba865a84dd.png)
無料のライトプランは「非アクティブで30日間経過すると削除」されるそうなので、重要ファイルのバックアップ用途などには使用しないほうが良さそうです。またパブリック向けの送信上限が低めなので、多くの利用者へのファイル共有には向かないとおもわれます。

私は開発中に作成するファイルの「一時バックアップ置き場」として利用してみようと思っています。

またパソコンに保存した家族の写真の一時的な予備バックアップにも使えそうな気がしています。私は数か月ごとに DVD-R や BD-R などにバックアップを取るのですが、それまでの間にパソコンが故障すると困るので、その間の繋ぎで保険みたいなバックアップです。

※ 時間が取れたら定期的に自動バックアップするツールを探すか、APIを利用して自分で作成したいですね

# というわけで

メジャーかつ使いやすい WinSCP を用いて、IBM Cloud 上の ICOS サービスを利用できるよう設定してみました。

25GB まで無料、ということで、けっこー実用的に使えそうな気もします。

今回は手を抜いて `Manager` 権限をセットしましたけれど、IAM を使って資格情報ごとにきちんとアクセス・グループや権限をセットしてあげれば、手軽でお安いファイルサーバーとして結構、実用に耐えるのではないでしょうか。

WinSCP 以外にも Amazon S3 対応のソフトであれば動きそうな気がしますので、他のツールでも試してみてくださいませ。

それではまた！