IBM FileNet Content Platform Engineの拡張ストレージ・デバイスとしてIBM Cloud Object Storage(AWS S3)を設定

# はじめに
IBM FileNet Content Platform Engine(CPE)の拡張ストレージ・デバイスとしてAWS Simple Storage Service(S3)またはIBM Cloud Object Storage(ICOS)を設定をしたので、その作業手順を記載します。

IBM FileNetとは、エンタープライズ・コンテンツ管理(ECM)ソリューションであり、
外部ストレージ(拡張ストレージ・デバイス)としてAWS, Azure, IBM Cloudなどのオブジェクトストレージが設定可能です。

本記事では、ICOSの設定手順を記載します。AWS S3はICOSと同様の手順で設定可能です。

# 前提環境
[OS]
- Red Hat Enterprise Linux release 8.5

[ソフトウェア]
- WebSphere Application Server Network Deployment V9.0.5.12
- FileNet Content Platform Engine V5.5.9

[その他]
- IBM Cloud Object Storage
- (Amazon Web Service S3 )

WAS上にFileNet CPEアプリケーションが構成およびデプロイ、ICOSまたはS3バケットが作成されており、ネットワーク設定がされている環境を前提とします。
(S3の場合は、適宜ユーザー・ユーザーグループ・ポリシーが必要となります。)


# 事前準備
事前準備として、以下の情報を用意します。IBM Cloudコンソール上で確認できます。
- サービスエンドポイント
  - s3.private.jp-tok.cloud-object-storage.appdomain.cloud
- バケット名
  - p8bucket01
- リージョン名
  - jp-tok
- S3アクセスキーid
- S3シークレットキー

S3アクセスキーidとS3シークレットキーはIBM CloudコンソールのCloud Object Storageの左ペインより、サービス資格情報を作成し、確認します。
作成の際にS3互換にするために、詳細オプションの「HMAC資格情報を含める」をオンにする必要があります。


# 作業手順
## WAS上での署名者証明書の取得と設定
WAS上で署名者証明書を取得し、設定するには主に以下の2通りがあります。
1. 管理コンソール(GUI)で設定
2. wsadminコマンド(CUI)で設定

### 管理コンソール(GUI)で設定
以下の順で画面遷移します。Network Deploymentの場合は、鍵ストアおよび証明書ページで「CellDefaultTrustStore」を選択します。(既にある証明書をインポートする場合は、署名書を<DmgrProfile>/etc/配下においてwas管理コンソール上で追加ボタンをクリックし、ファイルを指定・インポートします。)
セキュリティー＞SSL証明書および鍵管理＞鍵ストアおよび証明書＞CellDefaultTrustStore＞署名者証明書と遷移します。
以下のような画面が表示されるので、「ポートからの取得」をクリックします。
![Box Notes画像 2022-11-25 15.44.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120894/363e936c-4cc2-283e-f86f-2564ba73729f.png)

一般プロパティー内の項目に情報を入力し、「署名者情報の取得」をクリックします。
下図では事前準備で取得したICOSのエンドポイントを入力しています。
![Box Notes画像 2022-11-25 15.55.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120894/9e0e824b-0bef-6b5a-e12e-71666c2a3f4b.png)

取得された署名者情報が表示されます。「適用」をクリックし、変更を検討してから保存します。
![Box Notes画像 2022-11-25 15.56.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120894/87b0b82f-9f16-2c8f-d59b-7e3524991850.png)

### wsadminコマンド(CUI)で設定
以下のコマンドで署名者証明書を取得し、設定します。
設定内容は管理コンソール上で入力した値と同じ値です。
```shell
$<root_dir>/wsadmin.sh -conntype soap -user <admin_user> -password <pass> -lang jython 
wsadmin> AdminTask.retrieveSignerInfoFromPort('[-host s3.private.jp-tok.cloud-object-storage.appdomain.cloud -port 443 -sslConfigName CellDefaultSSLSettings -sslConfigScopeName (cell):Dmgr01NodeCell ]')
u'[[serialNumber 10944719598952040374951832963794454346] [issuedTo [CN=DigiCert Global Root CA, OU=www.digicert.com, O=DigiCert Inc, C=US]] [issuedBy [CN=DigiCert Global Root CA, OU=www.digicert.com, O=DigiCert Inc, C=US]] [fingerPrint A8:98:5D:3A:65:E5:E5:C4:B2:D7:D6:6D:40:C6:DD:2F:B1:9C:54:36] [expires 2031/11/10] ]'
wsadmin> AdminTask.retrieveSignerFromPort('[-keyStoreName CellDefaultTrustStore -keyStoreScope (cell):Dmgr01NodeCell -host s3.private.jp-tok.cloud-object-storage.appdomain.cloud -port 443 -certificateAlias test1 -sslConfigName CellDefaultSSLSettings -sslConfigScopeName (cell):Dmgr01NodeCell ]') 
u'Signer Certificate Successfully added to keyStore.'
wsadmin> AdminConfig.save()
wsadmin> exit
```

## FileNet上で拡張ストレージ・デバイス(Advanced Storage Device)の定義
ここからの作業はIBM Administration Console for Content Platform Engine上で行います。
次のようなURLでアクセスし、管理ユーザーでログインします。
URL: http://<hostname>:9080/acce/

左ペインの中から対象のオブジェクトストアをクリックします。
さらに左メニュー内を次のようにクリックしていきます。ICOSとAWS S3を使う場合は拡張ストレージ・デバイスの種類として「Simple Storage Service(S3)デバイス」を選択します。

管理＞ストレージ＞拡張ストレージ＞拡張ストレージ・デバイス＞Simple Storage Service(S3)デバイスと遷移します。
![Box Notes画像 2022-11-25 16.06.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120894/228e9ad6-2d3a-dee2-3002-5de948bfd673.png)

Simple Storage Service(S3)デバイスタブが表示されるので、「新規」をクリックします。
以下のように必要な情報を入力していきます。
作成するデバイス名を表示名へ入力します。説明には表示名に入力した値が自動で反映されます。
「次へ」をクリックします。
![Box Notes画像 2023-01-27 22.28.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120894/1b98a66d-24fa-a61a-3923-e107b274a9ef.png)

デバイス構成に必要な情報を入力していきます。
デバイス接続URLは次のような値となります。
https://<サービスエンドポイント>/<バケット名>
![Box Notes画像 2023-01-27 22.29.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120894/c3da3583-fc9f-7059-08ba-8c37618d79ad.png)

要約を確認し、「終了」をクリックします。
Simple Storage Service (S3) デバイスが作成が開始され、成功と画面に表示されればOKです。
![Box Notes画像 2023-01-27 22.37.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120894/2f46bbde-fee4-7029-2d0c-2b64315eb4d4.png)

作成が完了するとSimple Storage Service(S3)デバイス一覧に作成したデバイス名が表示されます。
また、対象のバケット内に「IBMContentManagerDevice.txt」が作成されます。
内容は以下のようになっており、IDは作成したデバイスのIDと同じ値になります。

- ACCE上でのデバイスID
![Box Notes画像 2023-01-27 22.36.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120894/5d09f7fd-391e-b582-89fb-31745436e1c2.png)

- IBMContentManagerDevice.txt内のID
```plaintext
VERSION=52300
CREATEDATE=2023.01.27 22:32:22
ID={D06DF385-0000-C41B-96BA-A9A070EF0507}
```

## 拡張ストレージ・エリア(Advanced Storage Area)の定義
左ペインの中から対象のオブジェクトストアをクリックします。
さらに左メニュー内を次のようにクリックしていきます。

管理＞ストレージ＞拡張ストレージ＞拡張ストレージ・エリア

拡張ストレージ・エリアタブが表示されるので、「新規」をクリックします。
以下のように必要な情報を入力していきます。
![Box Notes画像 2023-01-27 22.38.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120894/832b96c6-ee91-875b-5cb6-9f0fb65105fc.png)

デフォルトで設定されている値のまま、「次へ」をクリックする。
![Box Notes画像 2022-11-25 16.28.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120894/8f0ba6db-1719-a744-0c83-865f35a8f50a.png)

必要な同期デバイス数で「1」入力し、使用可能なストレージ複製デバイスで「icosDevice01」を選択します。
「次へ」をクリックします。
![Box Notes画像 2023-01-27 22.39.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120894/2e608617-6c24-31cb-6a7c-63dd654e80a0.png)

デフォルトでは「コンテンツ検証時に自動修復」がチェックされています。
「次へ」をクリックします。
![Box Notes画像 2022-11-25 16.31.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120894/caeb75d0-d752-3070-d83b-8ae61e9592f9.png)

保管ポリシーの選択では、拡張ストレージエリア用のポリシーを作成していないため、選択せずに「次へ」をクリックします。保管ポリシーへのマップを推奨する旨のメッセージが表示されますが、「OK」をクリックします。
要約で内容を確認し、「終了」をクリックします。
![Box Notes画像 2023-01-27 22.41.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120894/519c8d61-9cf3-cc0e-33ec-9872a59272bb.png)

作成が完了すると拡張ストレージ・エリア一覧に作成したストレージ・エリアが表示されます。

## ファイルアップロード
保管ポリシーを作成していませんが、ICOSへファイルをアップできるようになったので、動作確認をしてみます。
必要に応じて、保管ポリシーを作成し、マップしてください。
今回は動作確認で使用するファイルを以下のパスへアップロードします。
オブジェクトストア左ペインの参照＞ルート・フォルダーの下に確認用のフォルダを作成します。
testフォルダを作成しました。
![Box Notes画像 2023-01-27 22.42.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120894/13e8d264-171d-ccf4-f1d6-f08f6cc705d2.png)

testフォルダタブの下にある「アクション」ボタンをクリックし、「新規ドキュメント」を選択します。
![Box Notes画像 2023-01-27 22.43.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120894/2fd63939-ee3d-0755-262f-96970fcfd49f.png)

ドキュメント・タイトルに「testFile01」と入力し、「次へ」をクリックします。
![Box Notes画像 2023-01-27 22.44.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120894/4d0f72a0-7b28-4cdf-d8d8-5d3858889a1e.png)

コンテンツ・エレメントの「追加」をクリックし、アップロードするファイルを選択します。
「次へ」をクリックします。
![Box Notes画像 2023-01-27 22.45.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120894/dec8db7e-cd8c-139a-1946-342896af66a9.png)


以下の項目に関しては、デフォルトの値を使用します。
- オブジェクトのプロパティー
- ドキュメントのコンテンツとバージョン
- 保持オブジェクトの設定の指定
拡張機能のメニューでは[ストレージ・エリア]で作成した「icosStorageArea01」を選択します。
「次へ」をクリックします。
![Box Notes画像 2023-01-27 22.48.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120894/c90a46d4-0565-57c6-ba5f-f8ed05c61d28.png)

要約を確認し、「終了」をクリックします。
![Box Notes画像 2023-01-27 22.48.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120894/ff80b21f-a872-4858-8629-a7cb319004b8.png)

以下の画面が表示され、アップロードが完了します。
![Box Notes画像 2023-01-27 22.50.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120894/e0bbdffb-3fa9-bee6-d120-3764f6a09734.png)

IBM Cloudコンソール上でも確認するとファイルが増えていることが確認できます。
![Box Notes画像 2023-01-27 22.50.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120894/d5c1c3a9-43a7-bdf3-404c-04a87c83cc0b.png)


# 参考

- [IBM FileNet P8 Platform 資料](https://www.ibm.com/docs/ja/filenet-p8-platform)
- [Creating an S3 storage device](https://www.ibm.com/docs/ja/filenet-p8-platform/5.5.x?topic=devices-creating-s3-storage-device)
- [WebSphere Application Server Network Deployment traditional V9](https://www.ibm.com/docs/ja/was-nd/9.0.5?topic=SSAW57_9.0.5/as_ditamaps/was9_welcome_ndmp.html)
- [AdminTask オブジェクトの SignerCertificateCommands コマンド・グループ](https://www.ibm.com/docs/ja/was-nd/8.5.5?topic=tool-signercertificatecommands-command-group-admintask-object)