Watson Machine LearningのデプロイメントスペースにIBM Cloud Object Storageへの「接続（Connection）」を作成する

# はじめに
IBM Cloud Pak for Data as a Service（以下CP4DaaS）のNotebook上でデータ分析をする上で、分析対象のデータセットをIBM Cloud Object Storage（以下COS）のバケットに保管するケースを想定します。

分析対象のCSVファイルをバケットに保管したとします。ここで、NotebookからCSVファイルにアクセスするには、デプロイメントスペース上のデータ資産として扱います。このような場合、Notebookからデータファイルを呼び出すために、デプロイメントスペースで、COSのバケットに対して「接続（Connection）」を定義します。

![記事4-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139220/7e697753-47cd-9da8-7805-5fe238184423.png)

デプロイメントスペースに登録された接続情報を利用するため、NotebookではCOSの接続情報を記述しなくてもデータをダウンロードできるようになるというメリットがあります。本記事では、この「接続（Connection）」の作成ステップと作成上ハマりやすい注意点を記載します。

※作成した接続を使ってデータ処理を行い、データ分析のパイプラインを実装することができます。詳細は以下の記事をご参照ください。
[IBM Cloud Pak for Data as a ServiceのNotebookで機械学習のパイプラインを実装する際のデータ入出力を整理](https://qiita.com/nobs616/items/c44de2332495dc625a7a)

*****

# 0.前提

作業の前提として、IBM Cloud上でGUI画面から以下を実施しておいてください。

1) Watson Studioでプロジェクトを作成（例：Telco_Customer_Churn）
2) Watson Studioでデプロイメントスペースを作成（例：pipelines_deployment_space）
3) COSの任意のバケットを作成(例：pipeline-bucket1)
4) 以下のデータセットを分析対象データとして取り扱います。これを上記バケットに保存しておきます。（上の図の「0.アップロード」に対応）

ファイル名：Telco_Customer_Churn.csv
ファイル形式：csv

*****

# 1.準備
##COSへの認証に使う「サービス資格情報」を作成
#### <font color="red"> ポイント①COSでサービス資格情報を作成する際に「HMAC資格情報を含める」をオンにする
</font>

「サービス資格情報」の作成には、COSの管理画面から「サービス資格情報」を選択し、「新規資格情報」をクリックしますが、ここでのポイントは、「詳細オプション」を展開し、「HMAC資格情報を含める」を「オン」にすることです。

![記事3-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139220/1a1f375d-a40e-4f68-87fe-25434cd581fd.png)

このようにして「サービス資格情報」を作成すると、作成した「サービス資格情報」をリストから選択して展開したときに「HMAC資格情報」に相当する"cos_hmac_keys"が生成されていることが確認できます。このうち"access_key_id"と"secret_access_key"が「接続（Connection）」を作成する際に必要になります。

```text:
{
  "apikey": "**************************************",
  "cos_hmac_keys": {
    "access_key_id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    "secret_access_key": "YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY"
  },
  "endpoints": "https://control.cloud-object-storage.cloud.ibm.com/v2/endpoints",
  "iam_apikey_description": "Auto-generated for key XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "iam_apikey_name": "サービス資格情報-1",
  "iam_role_crn": "crn:v1:bluemix:public:iam::::serviceRole:Writer",
  "iam_serviceid_crn":   （以下省略）
```

*****

# 2.接続の作成
## デプロイメントスペースで接続を作成
#### <font color="red"> ポイント②接続の追加では「Cloud Object Storage（インフラストラクチャー）」を選択する </font>
「接続」を作成するデプロイメントスペースを開き「スペースに追加」>「資産タイプの選択」画面で「接続」をクリックします。

「接続の追加」画面で、「プロバイダ」欄の「IBM」にチェックします（下画面）。一覧に"Cloud Object Storage"が含まれるものが二つ表示されますが、「Cloud Object Storage (インフラストラクチャー)」の方を選択して、画面右下の「選択」をクリックします。

![記事3-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139220/5b7f0613-8bdb-69eb-83c4-a87f41b1ead7.png)

*****

「接続の編集」画面では、「名前」と「バケット」にそれぞれ適切な値を入力します。

続いて、「ログインURL」に入れる値は、COSの「エンドポイント」から適切なロケーションを選択（例では Regional > us-south）し、「パブリック」に記載されているURLからコピペします。

![記事3-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139220/f01575f1-86e2-abaa-c667-27848b9e1e0e.png)

資格情報にはCOSのサービス資格情報から以下の通り入力します。
「アクセス・キー」：access_key_idの値
「秘密鍵」：secret_key_idの値

![記事3-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2139220/a507ec35-8f72-0b19-184c-c355952cdc9b.png)

*****

# おわりに
デプロイメントスペースへの接続の追加は基本的な機能ですが、意外とハマってしまうポイントがあります。本記事では、よりスムーズに接続を追加できるよう、そのポイントに注目してみました。