IBM Cloud COS上のバケットをWatson Studio / Knowledge Catalogから直接アクセスする方法

# はじめに
IBM Cloud上のストレージである、**COS(Cloud Object Storage)**で便利なのにあまり知られていない機能の一つとして**Asperaによるファイル転送機能**があります。これはブラウザ側にAspera用のプラグインを導入することにより、高速なファイル転送を実現する機能で、おそらくIBM Cloud独自の機能ではないかと思われます。
**Watson Studio** / **Watson Knowledge Catalog**では、プロジェクト作成の際に、自動的にCOSのバケットが生成され、データアセットの登録はCOSに対して行われます。しかし、Watson Studio / Knowledge CatalogのUIを経由してしまうと、高速なAspera転送機能を利用できなくなります。
そこで、ファイルアップロード自体はCOS側のUIを使い、アップロード済みのファイルをKnowledge Catalog/Watson Studioで参照したいという要望が出てきます。この要望を実現するための手順について、当記事で説明を行います。

# 1. COS側の作業
最初にCOS側の準備作業を説明します。ここでは、
1. バゲットの作成
2. 資格情報の取得
3. エンドポイントURLの取得
のすべての手順を説明します。それに対応済みのものがある場合、その手順はスキップしていただいて大丈夫です。

## 1-0 COS管理画面の表示
まずは、IBM CloudでCOS管理画面を表示させます。下のURLをクリックし、ユーザーID、パスワードを入力してログインしてください。

https://cloud.ibm.com/resources

下のリソース一覧画面が表示されたら、cloud-object-storage-xx のリンクをクリックすると、COS管理画面になります。

![スクリーンショット 2020-12-17 13.43.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/49cac52d-e943-7e09-47db-20f82ad654da.png)

## 1-1 バケットの作成
まだ、バケットを作成していない場合は、バケットの作成をします。(作成済みの場合はスキップして結構です)
COS管理画面左メニューから「バケット」をクリックします。更に右に出てくる「バケットの作成」のボタンをクリックします。

![スクリーンショット 2020-12-17 13.45.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/1822deb4-d5a0-67be-5c3d-73d912b38de0.png)

下の画面になったら、「バケットのカスタマイズ」の右下の矢印をクリックします。

![スクリーンショット 2020-12-17 13.46.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/138e136c-7bef-e288-523b-999c0eccffb5.png)

下の画面では、最初に**バケット名**を入力します。バケット名はインターネット全体でユニークな必要があるので注意してください。このバケット名は、後ほど設定で必要になるので、エディタなどで保存しておいてください。

「**回復力**」はデフォルトのRegionalのままで結構です。
その下の「**ロケーション**」は、使いたいWatson Studioのインスタンスの近くを選びます。
画面の例ではStudioがus-southだったので、それの合わせた設定にしています。
これで設定はすべて終わりです。画面を一番下までスクロールさせて、「**作成**」ボタンをクリックしてください。

![スクリーンショット 2020-12-17 13.46.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/ad0d028e-5768-8dba-2d5a-e685e9e1c3c6.png)

下のような画面になればバケット作成に成功しています。今作ったバケットのリンクをクリックして詳細画面を表示させます。

![スクリーンショット 2020-12-17 14.14.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/fcf9eb49-7f68-b28f-c9c4-18009955b1c7.png)

下の画面で何かテスト用のCSVファイルを一つアップロードしておいてください。

![スクリーンショット 2020-12-17 14.15.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/d12b8c5b-037e-fce3-a2dd-840be0cf9e76.png)


## 1-2 資格情報の取得
次に資格情報を取得する手順です。

下のCOS管理画面に戻り、左のメニューから「サービス資格情報」を選択します。
更に、右に出てくる「新規資格情報」のリンクをクリックします。

![スクリーンショット 2020-12-17 13.43.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/290dd0a3-9e08-c92a-7727-eb60283b6d1f.png)

下のようなパネルが出てきます。ほとんどの項目はデフォルトでいいのですが、一点だけ「HMAC資格情報を含める」のスイッチをデフォルトのオフからオンに変えてください。
この設定ができたら、右下の「追加」ボタンをクリックします。

![スクリーンショット 2020-12-17 13.44.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/22bfc69e-833e-7501-f7b3-21fc98912de5.png)

資格情報の一覧画面に戻るはずです。今作った資格情報の左の矢印アイコンをクリックして、中身を確認します。
「cos_hmac_keys」という項目ができているかどうかが重要です。確認できたら、画面右上のクリップボードアイコンをクリックします。これで、資格情報全体が、クリップボードにコピーされたはずなので、テキストエディタなどの貼り付けて、その結果を確認してください。

![スクリーンショット 2020-12-17 13.44.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/a76a0756-8a30-1fba-9f54-7e471da4b580.png)

## 1-3 エンドポイントURLの取得
最後のステップは、エンドポイントURLの確認です。
COS管理メニューから「エンドポイント」を選択します。
「回復力」と「ロケーション」を先ほどバケットを作った設定と合わせます。
最後に「パブリック」の右下にあるクリップボードアイコンをクリックしてください。

![スクリーンショット 2020-12-17 13.47.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/d199493e-c9e3-f268-8cee-70043f052004.png)

この結果をテキストエディタに貼り付けます。更にエディタ上で、頭に``https://``を付け加えるようにしてください。
これが、この後の設定で用いるURLになります。

![スクリーンショット 2020-12-17 13.54.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/0139b03c-7e3c-e5b3-641a-49fd379a2731.png)

# 2. 接続情報の作成
ここまでの準備ができれば、後は、Watson Studio / Watson Knowledge catalogで接続情報の設定をするだけです。以下の例ではCatalogの場合の画面を示しますが、Studioの場合も手順は同じになります。

画面右上のメニューから「カタログに追加」->「接続」を選びます。

![スクリーンショット 2020-12-17 14.46.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/b1c2eec6-b4b9-df20-6556-a3355e439b5b.png)

下のような一覧が出てくるので、「Cloud Object Storage」(2つありますが、インフラストラクチャーのない、上の方)を選んでください。

![スクリーンショット 2020-12-17 14.48.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/27d4152e-b478-a2e4-bade-85aa7503168c.png)

下のような新規接続情報入力画面になるので、まず、一番左上の名称を入力してください。
次に真ん中の列の「接続の詳細」の項目を入力します。ここは重要なので、画面を別に示します。

![スクリーンショット 2020-12-17 14.52.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/6a1ddcc6-82a9-e391-8cc3-f428c043ae7d.png)

入力が必要なのは、次の4項目です。

① アクセス・キー 
資格情報のうち、"access_key_id"の値をダブルクオートを取った形で入力します。

② バケット
作成したバケット名です。上の手順の例だと``aka-test-bucket-01``になります。

③　秘密鍵
資格情報のうち、"secret_access_key"の値を、ダブルクオートを取った形で入力します。 

④　ログインURL
1-3の手順で組み立てた(先頭に``https://``を追加したもの)エンドポイントURLを入力して下さい。


![スクリーンショット 2020-12-17 14.49.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/d00c232d-0a8e-33e4-044d-f65c7aa59dad.png)

![スクリーンショット 2020-12-17 14.50.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/cd5d8cc5-067a-58fd-5b16-1ac31c4de7df.png)

すべての設定ができたら、画面右下の「テスト」のボタンをクリックします。

![スクリーンショット 2020-12-17 14.54.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/54a6f343-f30a-45b2-eeba-289b6e132661.png)

正しく設定できている場合、下のようなメッセージが画面上部に表示されるので、「テスト」の右の「作成」ボタンをクリックして、接続情報を保存してください。逆にテストの結果がうまくいかない場合、どこかの設定が違っているはずなので、先ほどの4カ所の項目が正しいか、見直してください。

![スクリーンショット 2020-12-17 14.54.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/d9e40178-a0ad-c516-f56b-097df654a193.png)

# 3. その後の利用方法
ここまでのことができれば、後の使い方は簡単です。
例えば、接続情報をKnowledge Catalog側で設定した場合、この接続情報を個別プロジェクトにExportすることができます。
この場合、プロジェクト側では、「プロジェクトに追加」->「接続データ」により、実体がCOS Bucket上にあるCSVファイルを、コピーせずに利用することが可能となります。