はじめに
OCI Data Integrationは、他の多くのOCIサービスと同様にOCI Eventsサービス、Notificationサービスを使用してイベントや通知を利用することができます。タスク実行の開始、完了で通知させるよう試してみました。前提として必要なポリシーは設定済みとします。
テスト用のタスクを作成
テスト用にObject StorageからCSVファイルをAutonmous Databaseにロードするデータ・ロードタスクを作成しました。
アプリケーションに公開をして実行できることを確認しておきます。
Notificationサービスでトピックとサブスクリプションを作成
OCI Eventsの結果を通知させるためにはOCI Notificationサービスでトピックとサブスクリプションを作成する必要があります。作成手順についてはOCIチュートリアルのOCI DevOpsの事前準備が丁寧でしたので、そちらを参考にしていただければと思います。
OCI Eventsサービスでルールを作成
OCIコンソールで監視および管理からイベント・サービスをクリックし、ルールを作成します。
表示名をOCIDI_task_ruleとし、以下の条件を設定しました。
条件:イベント・タイプ
サービス名:Data Integration
イベント・タイプ:Execute Task-Begin 、 Execute Task-End
アクションには、アクション・タイプを通知とし、コンパートメントとトピックには、事前にOCI Notificationサービスで作成したトピックとそのコンパートメントを指定します。
タスクを実行して通知を確認
OCI Data Integrationでデータ・ローダータスクを実行します。
成功しました。Notificationのサブスクリプションで指定したメールアドレス宛には、開始イベント(cratetaskrun.begin)と完了イベント(createtaskrun.end)でメールが届いていることが確認できました。
エラーになったタスクだけ通知をさせてみる
完了通知の内容にはさまざまな情報が記載されています。そのなかにtaskStatusという属性があります。この属性をEventsルールに指定して、エラーが発生したときのみ通知ができるか試してみます。
作成したルールを編集して、条件を追加します。属性名はプルダウンメニューから選択、属性値は手入力します。
条件:属性
属性名:taskStatus
属性値:ERROR
条件を追加後、保存します。TaskStatusの属性は開始イベントにはないので、エラーになれば、完了イベントだけが通知されるはずです。
それではデータ・ローダータスクを実行します。ターゲットの表には主キーがあるため、同じファイルのロードでは一意制約違反(ORA-00001)で失敗するというシナリオです。
エラーになりました。ログには想定通り、ORA-00001が出力されています。
通知の方も想定通り、完了イベントcreatetaskrun.endのみ届いています。(2行目は前回の完了イベントです)
内容を見ると、taskStatusがERRORになっていました。
おわりに
OCI Data Integrationのタスク実行の通知をOCI EventsサービスとOCI Notificationサービスと連携して行ってみました。設定や条件、属性のフィルタなどとても簡単に行えることがわかりました。
タスク実行の監視や、タスク実行結果を元にアクションを行うといったケースなどでご利用いただけるのではないかと思います。
参考資料
ドキュメント:OCI Data Integrationのイベント