Oracle Cloud Infrastructure(OCI) のObject StorageにCloudBerry Explorer for Amazon S3でアクセスしてみた

# 0. はじめに
Oracle CloudのIaaSである OCI の Object Storageに S3互換APIがあるので、S3アクセス用ツールでアクセスしてみよう、ということで、CloudBerry Explorer for AWS S3で試してみました。

手順の流れ以下の通りになります。

1. OCI Webコンソール上での設定
  2. rootコンパートメントでObject Storage用のバケットを作成
  3. ユーザーに対してS3互換API用クレデンシャルを設定
4. CloudBerry Explorer for AWS S3の設定
    5. ダウンロードとインストール
    6. OCI Object Storageへのアクセスを設定

---
# 1. OCIコンソール上での設定
## 1-1 ホームリージョンにログイン
OCIは複数リージョンを使用できますが、今回はホームリージョンにアクセスします。

（マニュアルのS3 Compatible APIの記載ではリージョンを問わないような書き方がされていますが、自分の環境でホームリージョンのus-ashburn-1とuk-london-1で試した限りでは、ホームリージョンである us-ashburn-1でしかうまく動きませんでした。）

## 1-2 rootコンパートメントでObject Storage用のバケットを作成

オブジェクトを格納する論理コンテナがバケットです。
OCIの場合、バケット名はグローバルに一意である必要はありません。
各テナント名がデフォルトのネームスペースとなっており、同一ネームスペース内ではバケット名は一意の必要があります。しかし、複数のネームスペースではバケット名は重複できます。

バケットはOCI固有のセキュリティ概念である「コンパートメント」に紐づけられ、IAMポリシーでアクセス制御できます。
しかし、AWSにはコンパートメントの概念がないので、AWS S3互換APIで使う場合は、バケットをrootコンパートメント内に作る必要があります。

以下の作成手順では、rootコンパートメントでのオブジェクト作成が可能な、Administratorsグループのユーザーで実行します。（Administratorsグループは、最初に OCIにアクセスしたユーザーに自動設定されます）
### バケットの作成手順
#### 1. OCIのWebコンソールに Administratorsグループのユーザーでログインします。
画面表示状況により、左上のリスト表示用ボタンが出てくる場合と、リストメニューが表示される場合があります。

##### [リスト表示用ボタンが出る表示例] 
<img width="500" alt="dialog" src="https://qiita-image-store.s3.amazonaws.com/0/108609/9e976a28-9da4-1ab4-f6a0-1e0d7346fb68.png">

##### [リストメニューが表示される例] 
<img width="770" alt="dialog" src="https://qiita-image-store.s3.amazonaws.com/0/108609/3b4bc534-ff5a-0065-b822-a25ac8c8fb30.png">


#### 2. メニューから、Storage > Object Storageを選択します。
下の画像は、リスト表示用ボタンから選択する場合です。
<img width="700" alt="dialog" src="https://qiita-image-store.s3.amazonaws.com/0/108609/b0d2a772-c951-300a-d45f-6438a4b54a5d.png">

#### 3. rootコンパートメントを選択して、バケットを作成
下図の通り、画面左にある COMPARTMENT指定用のリストでrootコンパートメントを選択後、バケットを作成します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/108609/a3b8ee88-cb1f-47bc-bf20-f7cfc864f6ae.png)

#### 4. Create Bucketダイアログで、作成するバケットを指定
今回は例として backupという名前のバケットを作成しています。
STORAGE TIERとして、STANDARDかARCHIVEかを選択します。

- STANDARD
 - 通常は STANDARDにします。
- ARCHIVE
 - ほとんどアクセスしないデータはArchiveにすることで、格納コストを抑えることができます。


<img width="350" alt="dialog" src="https://qiita-image-store.s3.amazonaws.com/0/108609/a96650b2-260a-31e5-c2ba-cba7cb62f187.png">
#### 以上で、rootコンパートメントにバケットが作成されました。

<img width="550" alt="dialog" src="https://qiita-image-store.s3.amazonaws.com/0/108609/ec031ed4-02f9-f4fd-8411-fb74d1882687.png">

## 1-3 S3互換API用クレデンシャルの設定

AWS S3互換APIを使用する際には、ユーザーのアクセスキーと秘密鍵が必要になります。
それらを作成する手順は以下になります。


### 設定手順
#### 1. Identity > Users画面にアクセス

 
![image.png](https://qiita-image-store.s3.amazonaws.com/0/108609/7d725ed3-ff81-ac13-2d29-8b2515b09dfe.png)

#### 2. 実際にバケットにアクセスするユーザーを選んで、ユーザー名をクリックします。 
![image.png](https://qiita-image-store.s3.amazonaws.com/0/108609/173ed1db-b653-7dfa-121e-97ee4fe867ac.png)
#### 3. 「Amazon S3 Compatibility API Keys」をクリック 
![image.png](https://qiita-image-store.s3.amazonaws.com/0/108609/b8c7bed3-8fa0-f144-5cbd-b5bf9f496b3b.png)

#### 4. 「Amazon S3 Compatibility API Keys」画面で「Generate Secret Key」ボタンを押す
![image.png](https://qiita-image-store.s3.amazonaws.com/0/108609/bf5b4686-f9a3-4905-aa90-def3126f1113.png)

#### 5. 「Generate Secret Key」ダイアログで、キー名を指定
この例では CloudBerryとしています。名前を指定したら「Generate Secret Key」ボタンを押します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/108609/04848216-30e1-7fbf-6a63-59edba53a8ff.png)
#### 6. 生成された秘密鍵を保存
「Copy」をクリックするとコピーができるので、これをメモ帳などに保存します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/108609/e9abff9e-2f0c-4c81-b96f-e16a26bd121b.png)
#### 7. アクセスキーのOCIDを保存
OCIDというのは、各オブジェクトの一意の識別子です。画面の「Copy」をクリックすると OCIDがコピーされますので、これもメモ帳等に保存します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/108609/e23b29c1-1860-e75c-2685-5d56189ef790.png)

# 2. CloudBerry Exlorerのアクセス設定
## 2-1 ダウンロードとインストール
CloudBerry Explorer for Amazon S3を以下からダウンロードし、インストールします。
https://www.cloudberrylab.com/explorer/amazon-s3.aspx
私自身が実際に試したのは 5.6（Windows版）です。

## 2-2 OCI Object Storageへのアクセスを設定

### 1) CloudBerry Exlorerを起動
![image.png](https://qiita-image-store.s3.amazonaws.com/0/108609/db03aa8d-7892-0c5f-a644-426c0c738340.png)

### 2) メニューで　File > Add New Acount を選択

<img width="400" alt="dialog" src="https://qiita-image-store.s3.amazonaws.com/0/108609/58267f07-194b-2df5-520e-75448c18b021.png">

### 3) 「Select Cloud Storage」ダイアログで「S3 Compatible」を選択

<img width="500" alt="dialog" src="https://qiita-image-store.s3.amazonaws.com/0/108609/165cc5ae-b936-96d6-dea9-39dea9342762.png">

### 4) アクセス情報を設定
  ![image.png](https://qiita-image-store.s3.amazonaws.com/0/108609/59e6e794-9a6c-4a34-2f2b-a45ecbfcd939.png)

* Display nameには、この例では OCI Object Storageとしています。
* Service point
    * 「**<テナント名>.compat.objectstorage.<リージョン名>.oraclecloud.com**」の形式で入力

* Access Key
    * OCIコンソールの「Amazon S3 Compatibility API Keys」で作成したアクセスキーの OCIDを設定
* Secret Key
    * 鍵を作成したときに表示された「GENERATED Key」の値を指定
* Signature Version
    * ここには 4を指定（でないとアクセスが失敗）

入力したら「Test Connection」ボタンを押します。「Connection success」が出たら成功です。

<img width="300" alt="dialog" src="https://qiita-image-store.s3.amazonaws.com/0/108609/f2cddeb4-bd16-39ef-7e7c-9cd6ef42ed8c.png">

### 5) 実際にアクセスしてみる
![image.png](https://qiita-image-store.s3.amazonaws.com/0/108609/471b56ec-d930-d803-96aa-39500e2b47f2.png)