3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【OCI】Object Storageへのアップロードを検知してAutonomous Databaseにデータを自動インポート(Events連携編)

3
Posted at

はじめに

本記事は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連携のみを行います


構成イメージ

image.png


目次

  1. 構成概要
  2. Events設定
  3. 動作確認

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>

設定内容を確認し、ルールを作成します。

以下のような設定イメージとなります。

image.png


以上で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自動取込構成の解説は完了です。

3
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?