PowerVS IBM i 日記(16): Cloud Storage Solutions for i で IBM i から IBM Cloud Object Storage にアクセスする

# Cloud Storage Solutions for i で IBM i から IBM Cloud Object Storage にアクセスする

「5733-ICC Cloud Storage Solutions for i」を使うと、FTPサーバー や Cloud 上の Object Storage との間で IFS オブジェクトを送受信することが可能になります。
また BRMS と組み合わせると IBM i のバックアップを Object Storage 上に置くこともできます。
今回は Cloud Storage Solutions for i を 使って、IBM Cloud Object Storage(ICOS) とファイルの送受信を行いたいと思います。

なお英文ですが「[Quick Start Guide for Cloud Storage Solutions](https://www.ibm.com/support/pages/node/1135312)」という文書が IBM から公開されています。ここではこの文書を「ガイド」と呼びます。

## IBM Cloud Object Storage のリソースとバケットの作成

カタログから「Object Storage」を選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/c8259a24-4264-90cc-3104-3046e2b80cfd.png)

ICOS には制限付きですが無料で使えるライト・プランが提供されています。今回はテスト目的ですので、こちらを使いましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/616cd570-6518-f17b-ea1b-fe58d4504481.png)

ICOS のリソースが作成されました。この中に実際にデータを保持するバケットを作っていきます。
右側のナビゲーションで「バケット」を選んで「作成」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/db5eb6f4-475e-aefd-3ed7-425c87ad0332.png)

事前定義されたバケット・タイプを使うか、自分で定義するか選びます。今回は自分で定義するので「カスタム・バケット」を選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/f7f452b4-a3fa-f5dd-5d44-2a167a54f0ab.png)

バケットに名前を付けます。名前はアクセスする時に uri の一部になります。そのため IBM CLOUD の ICOS 全体で固有である必要があります。

ICOS のデータがどの範囲にコピーされるかを「回復力」で指定します。今回は、単一地域内の複数のデータセンターに保管される「Regional」を選びました。
「回復力」の各選択肢の違いは「[IBM Cloud Object Storage のデータセンターとレジリエンシー](https://www.ibm.com/jp-ja/cloud/object-storage/resiliency)」に記載があります。

「ロケーション」には今回の IBM i があるシドニーを選びました。

「タイプ」は「Standard」を選んでいます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/d65aed89-71be-4608-2ab2-cccfd404db79.png)
バケットができました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/76118a92-abb0-493e-2627-6cea5f7df29c.png)

「サービス資格情報」を作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/ffa9e629-efe9-43d8-b1f9-7eefd3d24338.png)

詳細オプションで「HMAC資格情報を含める」をオンにし、追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/70ccc47c-535a-b23a-48ea-419635d0f3bf.png)


作成された資格情報に「access_key_id」と「secret_access_key」が含まれます。
この値で Cloud Storage Solutions for i は ICOS に接続します。 
(このサービス資格情報は削除済みです)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/2f58dd9f-f0da-cedb-0630-707afc151e01.png)

## Cloud Storage Solutions for i の構成

Cloud Storage Solutions for i は PowerVS IBM i の標準ライセンスには含まれていません。追加購入可能な 4 ライセンスの一つとして提供されています。

試用の範囲や期間を超えて利用するのであれば、Cloud Storage Solutions for i のライセンスを購入します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/1013bc77-4ada-c47f-141f-bbe9901bd586.png)

ICOS は Cloud Storage Solutions for i では「AWSS3」として定義します。
「[IBM Cloud Object Storage](https://www.ibm.com/jp-ja/cloud/object-storage)」に、下記の記載がある通り、ICOS は AWS の S3 互換です。

>  Amazon S3 やオープンソースのIaaS基盤ソフトウェア「OpenStack」のストレージ・コンポーネント「Seift」のAPIと互換性あり。

Cloud Storage Solutions for i では、SOFTLAYER の指定もできますが、これは以前に使われていた OpenStack Swift ベースの Object Storage 用の資源です。
こちらを選ばないように注意してください。

ガイドでは「ICC 資源の操作  (WRKCFGICC)」コマンドを実行し、対話型で「AWSS3」タイプの資源を作成することになっているのですが、ここで実行キーを押すと、SSH トンネルが切断されてしまいました。

```
WRKCFGICC RSCNM(*ALL)
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/03a08cc4-b8f1-7f18-36c6-c2c4a0d54030.png)

この手順はガイドの次画面である「ICC AWS S3 資源の作成  (CRTS3RICC)」コマンドのプロンプトを呼び出すものです。
(資源タイプにより、異なる資源の作成コマンドを呼び出します。)

直接、CRTS3RICC コマンドを実行しましょう。

CRTS3RICC + F4 でプロンプトを表示します。「アクセス・キー ID」と「秘密アクセス・キー」にサービス資格情報で表示されている値を入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/42fe03d3-666f-e26f-e034-82534da61ea9.png)

実行キーを押すと、追加パラメーターの入力が求められます。

バケットの名前をセットします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/1ea9bf0c-f61b-0dae-ed73-fe62794b3948.png)

PageDownで次画面に進み uri をセットします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/9a3217fd-7491-bb4d-0b6f-1c01063b7249.png)

uri はバケット詳細の「バケット」→「構成」で確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/d082c7d3-08fa-0298-886a-e92516188ee8.png)

今回の IBM i は、パブリック・ネットワークへの接続しかなく、IBM Cloud のプライべート・ネットワークに接続できない構成のため、パブリックの uri を指定しています。
ガイドでは uri の前に「https://」をつける指示になっていますが、今回は付けずに登録します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/ef41a214-6b01-a642-19af-28d23012dda0.png)

作成されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/ae4a68a3-9ab2-bb00-5fe1-17ab068c0ccd.png)


ガイドでは、この後、デジタル証明書マネージャーから SSL の構成をすることが示されていましす。
この手順は、uri に「https://」を付けた場合に必要になります。

uri に「https://」を付けながら SSL の構成をしない場合は、CPDBCC9 のエラーになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/db834ff4-09ba-c5b2-6260-555c420af10d.png)

https を使う場合は「[Cloud Storage Solutions ファイル転送暗号化の構成](https://www.ibm.com/support/knowledgecenter/ja/ssw_ibm_i_72/icc/topics/iccutsk_config_ssl.htm)」にしたがって、構成してください。

## ICOS との送受信

Object Storage にアクセスするコマンドは下記になります。

CPYFRMCLD … IFS ファイルを Object Storage にコピー
CPYTOCLD …  Object Storage から IFS にファイルをコピー
DLTCLDF …  Object Storage 上のファイルを削除

テスト用のフォルダー「/ICCTEST」を作成し、その中に「A.TXT」という名前のファイルを用意しました。

```
MKDIR DIR('/ICCTEST')
EDTF STMF('/ICCTEST/A.TXT')
```

CPYTOCLD で ICOS にコピーします。

```
CPYTOCLD RESOURCE(ICOS_SYD) ASYNC(*NO) LOCALFILE('/ICCTEST/A.TXT') CLOUDFILE(From_IBM_i)
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/ef95b9c8-deea-3fda-4025-ca91ff8b4ce8.png)

バケットの中にファイルができています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/062eca5a-4580-d5d9-e0fa-9352507f5741.png)


CPYFRMCLD で ICOS からコピーします。

```
CPYFRMCLD RESOURCE(ICOS_SYD) ASYNC(*NO) CLOUDFILE(From_IBM_i) LOCALFILE('/ICCTEST/fom_ICOS')
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/eb078bb4-9570-dec9-9d64-4743d7901deb.png)


IFS にコピーされています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/e92243a1-7f4f-81d2-2be3-7ce47f9658f6.png)

DLTCLDFで削除します。

```
DLTCLDF RESOURCE(ICOS_SYD) CLOUDFILE(From_IBM_i) 
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/648031f0-ca47-511a-ea68-81fd117d34e6.png)

バケットからファイルがなくなりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/35faa74e-33fc-e9bc-907e-e2cba71a0f73.png)

## バッチ転送と WRKSTSICC

CPYFRMCLD や CPYTOCLD のデフォルトは ASYNC(*YES) になっていて、バッチで転送されます。投入先の JOBQ は、QICC/QICCJOBQ です。 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/e8dd2fd3-6340-f40e-1135-5bc1783f6006.png)
 
処理するサブシステムは QICC/QICCSBS です。開始していなければ開始しましょう。

```
STRSBS SBSD(QICC/QICCSBS) 
```

WRKSTSICC コマンドで、バッチ転送の様子が確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/d3806b29-d6ee-8488-a6aa-c4c02f33db49.png)

## 5733-ICC オプション2 Advanced

IBM Cloud で Cloud Storage Solutions for i を購入した場合、オプション1 の基本機能だけでなく オプション2 の Advanced の機能も利用可能です。

Advanced は Object Storage とファイルを送受信する際に、圧縮や暗号化を可能にします。

暗号化を利用する場合は、IBM i の暗号化機能を構成する必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184930/3e8c4b73-25a4-845d-ffa3-ba83c091eec6.png)

---
当日記のIndexは[こちら](https://qiita.com/6onoda/items/f146c78c0c1bbe905a42)です。

---
許可の無い転載を禁じます。
この記事は筆者の個人的な責任で無保証で提供しています。
当記事に関してIBMやビジネスパートナーに問い合わせることは、固くお断りします。