はじめに
この記事ではOracle Integration Cloud(OIC)からObject Storageにおいてあるファイルをデータとして取り込み連携する方法について説明します。OICはObject Storageに対応するAdapterとしてREST Adapterが利用可能で連携することでSaaSやIaaSなど様々なサービスと連携することができます。
-
Oracle Integration Cloudについてはこちら
https://www.oracle.com/jp/integration/application-integration/ -
Object Storageについてはこちら
https://www.oracle.com/jp/cloud/storage/object-storage/
前提
-
OICのプロビジョニングおよびユーザー・ロール設定が完了していること
https://docs.oracle.com/ja-jp/iaas/integration/index.html -
Object Storageの作成と使用準備が完了していること
https://docs.oracle.com/ja-jp/iaas/Content/Object/Concepts/objectstorageoverview.htm
事前準備
Object Storageへファイルを配置
適当なcsvファイルをObject Storageへ配置します。
"PREF_CODE","CITY_CODE","CITY_NAME","BIG_CITY_FLAG"
1,"01101","札幌市中央区","1"
1,"01102","札幌市北区","1"
1,"01103","札幌市東区","1"
1,"01105","札幌市豊平区","1"
1,"01106","札幌市南区","1"
1,"01109","札幌市手稲区","1"
1,"01110","札幌市清田区","1"
必要な情報の収集
次にOICで作成するアプリケーションに必要な情報を収集します。
Object Storage関連の情報
Object Storageの以下の情報を取得します。
- connection url
- namespace name
- bucket name
- object name
Object Storageのメニューから"View Object Details"をクリックします。
表示されたURLの以下の{}部分をそれぞれコピーしてメモしておきます。
https://xxx/n/{namespaceName}/b/{bucketName}/o/{objectName}
connection urlは https://xxx
の部分です。
Tenancy OCID
以下の手順でTenancy OCIDをメモしておきます。
User OCID
以下の手順でUser OCIDをメモしておきます。
Private KeyとFinger Print
User OCIDをコピーした画面を下にスクロールすると左下にAPI Keysというリンクがあるのでクリック、"Add API Key"をクリック、"Generate API Key Pair"を選択した状態で"Download Private Key"を押してPrivate Keyをダウンロードし、最後に"Add"をクリックします。
フィンガープリントが表示されるのでこちらもコピーしておきます。
こちらによるとOIC から正常に呼び出すには、Private KeyがRSA (PKCS1) 形式である必要があるとのことなので、変換します。以下のコマンドを実行します。
ssh-keygen -p -f <Private Keyファイル名> -N "" -t rsa -m pem
接続の作成
ここからOICを使って統合アプリケーションを作成していきます。
REST Adapterを使ってObject Storageにアクセスするための接続を定義します。
OICコンソールのメニューから接続をクリックし、"作成"をクリックします。
任意の名前を入力し、Roleに呼び出しを指定して"作成"をクリックします。
メモしておいた情報をもとに各項目を入力します。
入力項目 | 値 |
---|---|
Connection Type | REST API Base URL |
Connection URL | ここで取得したもの |
セキュリティ・ポリシー | OCI Signature Version 1 |
Tenancy OCID | ここで取得したもの |
User OCID | ここで取得したもの |
Private Key | ここで取得したもの |
Finger Print | ここで取得したもの |
テスト→保存をクリックし、"<"で前の画面に戻ります。
フローの作成
次に統合フローを作成します。
メニューから統合をクリックし、"作成"をクリックします。
スケジュールを選択します。
任意の名前を入力し、"作成"をクリックします。
フローを作成する画面に遷移するので先ほど定義したREST APIの接続を選択します。
以下のように設定して"続行"をクリックします。
入力項目 | 値 |
---|---|
エンドポイントにどのような名前をつけますか。 | 任意の値 |
エンドポイントの相対リソース名は何ですか。 | /n/{namespaceName}/b/{bucketName}/o/{objectName} |
このエンドポイントのパラメータを追加して確認 | チェック |
子のエンドポイントを構成してレスポンスを受信 | チェック |
そのまま"続行"をクリックします。
以下のように設定し、"続行"をクリックします。
終了をクリックします。
次に定義したREST APIの接続へリクエストパラメータをマッピングから設定します。
マップのメニューから編集をクリックします。
最初にnamespace nameを右クリック→ターゲット・ノードの作成をクリックします。
次に開発者モードのアイコンをクリックします。
下にTextareaが表示され、編集できるようになるのでここでメモした値を""をつけて入力します。入力したら"✓"で保存して"×"で閉じます。
同様の手順でbucket name, object nameを設定します。値はここでメモしたものです。
設定できたら"検証"をクリックして、"<"を押して前の画面に戻ります。
これでREST APIを使ってObject Storageにあるファイルを取得することができましたが、この時点ではマッピングするデータとして取り込まれていないので、OICで扱えるようにファイルを読み込む必要があります。
右のメニューのアクションからステージ・ファイル・アクションをドラッグアンドドロップで先ほど作成したRESTの下に配置します。
任意の名前を入力し、"続行"をクリックします。
以下のように設定し、"続行"をクリックします。
"続行"をクリックします。
ここで作成したcsvファイルを指定し、レコード名に"cities", レコードセット名に"city"を入力し、"続行"をクリックします。
"終了"をクリックします。
最後に取得したデータをログ出力させます。
ロガーのアクションをを先ほど追加したステージ・ファイルの下に配置します。
なぜか日本語名だとエラーになるのでロガーという名前をlogerなどに変更し、
readfileのレスポンスからcityをドラッグアンドドロップで右にあるロガー・メッセージに設定します。
最後にこのアプリケーションの実行をトレースできるようにビジネス識別子を設定します。右上にある(I)のあいこんをクリックし、入力ソースにあるstartTimeをビジネス識別子フィールドにドラッグアンドドロップします。
最後に保存して統合フローの完成です。
実行
最後に実行して動作を確認します。
統合のページでアクティブ化をクリックします。
デバッグにチェックして"アクティブ化"をクリックします。
しばらくしたらアクティブになるので、"・・・"から"実行"をクリックします。
そのまま実行します。
アクティビティ・ストリームが表示され、フローの実行が確認できます。
ログを確認します。取得したデータがログ出力されているのが確認できます。
以上です。
補足
ちなみにOIC3だとObject Storageへの接続用のアクションが対応されており、REST Adapterを使わなくてもObject Storageへ接続できるようです。これもいずれ試してみたいと思います。詳細はこちら。