WinSCP で OCI の Object Storage にアクセスする

# はじめに
WinSCP で S3 にアクセスできる機能が追加されれていることに気が付きましたので、OCI の Object Storage は S3 互換でアクセスすることができるので試してみます。

S3 のクライアントは色々とありますが、身近で使い慣れたツールでアクセスできると嬉しいです。

# 前提条件
- OCI のアカウントを持っており、Object Storage を利用できる権限を持っていること
- Bucket は作成済みであること

# 手順
## WinSCP のインストール
現時点で最新の v5.19.5 を利用しました。
インストールは特に難しいところはないので割愛します。

## エンドポイントのURLを確認
以下の URL から `オブジェクトストレージ → S3互換` でアクセスする際のエンドポイントを確認します。

https://docs.oracle.com/ja-jp/iaas/Content/API/Concepts/apiref.htm

今回は東京リージョンでアクセスするので、エンドポイントは以下になります。

```
https://<object_storage_namespace>.compat.objectstorage.ap-tokyo-1.oraclecloud.com
```

上記の `<object_storage_namespace>` の確認方法は OCI の Web コンソールから画面右上の人アイコンをクリックし、Tenancy をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/ee701114-dbbd-39eb-acf6-f674a77d13cc.png)

Tenancy Infomation の赤枠の部分で確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/d313daf0-d94a-0700-382c-aace064cae25.png)


仮に object_storage_namespace が abcd だった場合、エンドポイントは以下のようになります。
```
https://abcd.compat.objectstorage.ap-tokyo-1.oraclecloud.com
```


## Access Key と Secret Key の取得
OCI の Web コンソールから画面右上の人のアイコンをクリックし、自身の Username の部分をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/cca50288-4a91-2b96-01cc-14bf6880befc.png)


比較的新しい契約の場合(IAM Identity Domain)は同じように画面左上のアイコンから My profile をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/94208718-1661-91df-a6cf-4b43623b521f.png)



Customer Secret Keys をクリックし、Generate Secret Key をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/e3b89b09-03ab-2fac-7240-416b1eafcdc7.png)

任意の名前をつけて、Generate Secret Key をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/3066a46c-71a0-6347-56e1-5b9308f0074f.png)

Secret Key が生成されるので、Copy をクリックしてクリップボードへコピーし、忘れないようにメモ帳などに貼り付けておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/2417a27a-62dc-29a0-4c2b-02c3e008e473.png)

先程指定した名前でキーが作成されており、 Access Key が表示されているのでこれもコピーしてメモします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/ff398952-7459-80e8-8a31-36e883bd09ab.png)

## WinSCP の設定
WinSCP を起動し、セッションマネージャを開きます。

以下を設定します:
- File Protocol: `Amazon S3`
- Host name: `<object_storage_namespace>.compat.objectstorage.ap-tokyo-1.oraclecloud.com`
- Access Key ID: `取得した Access Key`
- Secret access key: `取得した Secret Key`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/08e3e219-e0c3-b6b8-c229-b1855fbec6cb.png)

Advanced をクリックし、Default region にアクセス先のリージョンを入れます。今回は東京リージョンなので `ap-tokyo-1` です。
また URL Style を `Path` に設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/784e9add-20b2-ca37-efaa-43c0d5b04f4f.png)


これで、Login をクリックし Object Storage にアクセスします。

以下のようなウィンドウが開きますが、Yes をクリックします。 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/f93c8965-5b76-447a-c5f4-e5713eb54585.png)


バケットがたくさん表示されました。
どうやらテナント内のすべてのバケットが表示されるようです。ただ、アクセスできるのは登録したアカウントがアクセスできる範囲のみでした(権限の無いバケットにアクセスは不可)。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/c915c716-a36c-c967-e67b-e993be0c99da.png)

目的の test-bucket01 を開いて memo.txt をコピーしてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/92cf4b4f-b495-0c4c-5102-d293d08c5690.png)


無事にコピーできました。
念の為、OCI の Web コンソールからファイルがあることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/0cfd6b57-8551-2b82-c056-295fff1e7923.png)

ダウンロードして中身を確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108605/4917b98c-e250-d0ac-e702-b73edfeffcdd.png)

# 最後に
WinSCP でも問題なく使えることが確認できました。
最初はすんなりできたわけではなく、少し試行錯誤しましたが Advanced Setting 周りがキモでした(この辺はどのクライアントでも悩むところ・・)。
また、WinSCP 自体の機能である帯域制限は S3 アクセス時も有効でした。