はじめに
本記事はOCIのEventsを起点としたCSV自動取込構成を段階的に解説する連載の第3回です。
第1回ではObject StorageへのファイルアップロードをEventsで検知し、
Notificationsで通知する最小構成を紹介しました。
第2回ではOCI Functions単体にフォーカスし、
Object Storage上のCSVファイルを読み込み、
Autonomous Databaseにデータを登録する処理を実装しました。
今回はこれらを組み合わせ、
Object StorageへのCSVアップロードをトリガーとして、
OCI EventsからOCI Functionsを自動実行し、
Autonomous Databaseへデータを自動インポートする構成
を作成します。
前提条件・補足事項
本記事では以下がすでに準備されている前提で進めます。
- OCIアカウントを作成済み
- Object Storage / Functions / Eventsを操作できる権限があること
- OCI Functions環境 / アプリケーション作成済みであること
- CSV取込用のOCI Functionsがデプロイ済みであること(第2回で作成)
- Autonomous Database(ADB)が作成済みであり、
第2回で作成したFunctionsから接続可能な状態であること - Object Storageバケット作成済みであること
※ 本記事ではFunctionsの実装やデプロイは行いません
※ 第2回で作成したFunctionsをそのまま利用し、Events連携のみを行います
構成イメージ
目次
- 構成概要
- Events設定
- 動作確認
1. 構成概要
本記事で作成するのは、
Object StorageへのCSVアップロードを起点に、
OCI Eventsを通じてOCI Functionsを自動実行する構成です。
Object StorageにCSVファイルがアップロードされると、
Eventsがそれを検知し、
CSV取込用Functionsが自動的に起動されます。
FunctionsはObject StorageからCSVファイルを取得し、
その内容をAutonomous DatabaseにINSERTします。
今回の処理の流れは以下の通りです。
(CSVをObject Storageへアップロード)
↓
[Object Storage]
↓
[OCI Events]
↓
[OCI Functions(Python)]
↓
[Autonomous Database]
2. Events設定
本章では、Object StorageへのCSVアップロードを検知し、
OCI Functionsを自動実行するためのEventsルールを設定します。
2.1 Eventsルールの作成とFunctions連携
OCI ConsoleからEventsのルールを作成します。
メニュー → 監視および管理 → イベント・サービス
から「ルールの作成」を選択します。
ルール基本設定
-
ルール名
任意(例:objectstorage-to-functions) -
説明
任意
ルール条件(Rule Conditions)
Object Storageへのオブジェクト作成を検知するため、Rule Conditionsは2つ設定します。
(1) Event Type条件
- Condition:
Event Type - Service Name:
Object Storage - Event Type:
Object - Create
(2) Attribute条件(バケット名で絞り込み)
- Condition:
Attribute - Attribute Name:
bucketName - Attribute Values:
<取込み対象のバケット名>
※Eventsから渡されるイベントJSONをFunctions側で判定・処理する構成としているため、
CSVかどうかの判定はFunctions側に任せ、Events側では拡張子による条件指定は行いません。
アクション設定(Functions連携)
続いて、ルールにアクションを設定します。
- Action Type:
ファンクション - Function Compartment:
<作成したアプリケーションがあるコンパートメント> - Function Application:
<作成したアプリケーション> - Function:
<作成したアプリケーションのFunction>
設定内容を確認し、ルールを作成します。
以下のような設定イメージとなります。
以上でEventsの設定は完了です。
Object StorageにCSVファイルがアップロードされると、
Eventsがそれを検知し、
CSV取込用OCI Functionsが自動的に起動されます。
3. 動作確認
設定が完了したら、実際に動作を確認します。
3.1 CSVファイルのアップロード
Object Storageの対象バケットに、
CSVファイルを手動でアップロードします。
アップロード対象のCSVは、
第2回で使用したものと同じ形式で問題ありません。
3.2 実行結果の確認
CSVファイルのアップロード後、自動的にFunctionsが起動されます。
Functionsのログを確認し、
エラーが発生していないことを確認します。
あわせて、Autonomous Databaseに接続し、
CSVの内容がテーブルに登録されていることを確認します。
SELECT * FROM T_EVENTS ORDER BY ID;
まとめ
本記事では、
Object StorageへのCSVアップロードを起点に、
OCI Eventsを使ってOCI Functionsを自動実行し、
Autonomous Databaseへデータを自動登録する構成を作成しました。
- Object StorageへのファイルアップロードをEventsで検知
- EventsからOCI Functionsを自動起動
- FunctionsでCSVを読み込み、Autonomous DatabaseへINSERT
という一連の流れを、
第2回で作成したFunctionsをそのまま利用して実現しています。
これにより、
CSVファイルをObject Storageにアップロードするだけで、
データベースへの登録までが自動で行われる構成が完成しました。
本連載では、
- 第1回:Eventsの基本と通知連携
- 第2回:Functions単体でのCSV取込処理
- 第3回:EventsとFunctionsを組み合わせた自動取込
という形で段階的に構成を積み上げてきました。
この構成をベースに、
- CSV形式の拡張
- バリデーション処理の追加
- エラーハンドリングや再実行制御
などを加えることで、
実運用向けのデータ取込基盤として発展させることも可能です。
以上で、
Object Storage × Events × Functions × Autonomous Database
によるCSV自動取込構成の解説は完了です。

