はじめに
特定のAzure Blob Storageコンテナーにファイルがアップロードされたら、自動的にAutonomous Database内の表にデータをロードする方法がマニュアルに記載されたので、検証してみました。
仕組みとしては、Azure Blob Storageコンテナーのファイル作成時のイベント通知をAutonomos Databaseが受信し、対象ファイルのデータ・ロード(ライブ表フィード)を行うというものです。
1. Azure Blob Storageコンテナーの作成とファイルのアップロード
AzureポータルからAzure Blob Storageコンテナーを作成します。
今回は、「live-table-feed」という名前のコンテナーを作成しました。
作成したコンテナーに以下のファイルをアップロードします。
1,SMITH
2,ALLEN
3,WARD
2. Azure Blob Storageコンテナーに対するクラウド・ストレージ・リンク(クラウドストアの場所)の作成
Autonomous Databaseの付属ツール「Database Actions」で、Azure Blob Storageコンテナー「live-table-feed」に対するクラウド・ストレージ・リンクを作成します。
Autonomous Databaseの詳細画面で「データベース・アクション」→「データ・ロード」とクリックします。
Database Actionsのデータ・ロードのページが表示されます。
「作成」をクリックし、「新規クラウド・ストアの場所」を選択します。
「クラウド・ストアの場所の追加」のウィザードが表示されますので、「資格証明の作成」をクリックします。
「資格証明の作成」ウィザードが表示されます。
「資格証明名」には作成する資格証明(クレデンシャル)の名前を入力します。今回は「AZURE_CRED」という名前にしました。
「クラウド・サービス」は「Microsoft Azure」を選択します。
「Azureストレージ・アカウント名」にはコンテナーを作成したストレージ・アカウント名を入力します。
「Azure ストレージ・アカウント・アクセス・キー」には、Azure ストレージ・アカウントのアクセスキーを入力します。
全ての項目の入力が完了したら、「資格証明の作成」をクリックします。
「名前」に作成するクラウド・ストアの場所の名前を入力します。今回は「AzureBlobStorage」としました。
「資格証明の選択」を選択し、先ほど作成した資格証明「AZURE_CRED」を選択します。
バケットURIにはAzure Blob StorageのコンテナーのURIを入力します。
全ての入力が完了したら、「作成」をクリックします。
クラウド・ストレージ・リンク「AzureBlobStorage」が作成できました。
3. ライブ表フィードの作成
「データ・ロード」をクリックして、データ・ロードのページに移動します。
「クラウド・ストアの場所」として先ほど作成した「AZUREBLOBSTORAGE」を選択します。
入力したら、「次」をクリックします。
ターゲット表名を入力します。今回はempとしました。
また、今回ロードするCSVファイルにはヘッダー行がありませんので、「列ヘッダー行」のチェックをオフにしました。
マッピングのセクションでは、ターゲット列名とそのデータ型を設定し、「次」をクリックします。
プレビューが表示されるので、内容を確認して「次」をクリックします。
作成するライブ表フィードの名前を入力します。今回は「EMP_FEED」をしました。
また、「通知に対して有効」のチェックをオンにし、「スケジューリングに対して有効化」のチェックをオフにします。
入力が完了したら、「作成」をクリックします。
「今すぐライブ表フィードを実行」と表示されますので、「はい」をクリックします。
ライブ表フィード「EMP_FEED」が作成され、3行をロードしたことが表示されています。
「EMP_FEED」の右上の3つ点の部分をクリックし、「通知URLを表示」をクリックします。
EMP_FEEDの通知URLが表示されますので、URLをコピーしておきます。
4. Azure Event Gridの有効化
Azure Event Gridが有効化されていない場合、有効化します。
Azureポータルでサブスクリプションに移動し、左側のメニューから「リソースプロバイダー」をクリックします。
フィルターに「Microsoft.EventGrid」と入力してMicrosoft.EventGridを検索します。
Microsoft.EventGridのチェックをオンにし、3点リーダをクリックして、「登録」をクリックします。
「状態」が「Registering」になります。
しばらく待つと、「状態」が「Registerd」に変わります。
以上で、Azure Event Gridが有効化できました。
5. イベント・サブスクリプションの作成
Azure Blob Storageのイベント・サブスクリプションを作成します。
Azureポータルでストレージアカウントに移動し、左側のメニューから「イベント」をクリックします。
「名前」に作成するイベントサブスクリプションの名前を入力します。今回は「BlobCreated」としました。
「システムトピック名」に作成するシステムトピック名を入力します。今回は「BlobCreatedTopic」としました。
「イベントの種類のフィルター」は「Blob Created」を選択します。
「エンドポイントの種類」は「Web hook」を選択します。
全てを入力したら、「エンドポイントの構成」をクリックします。
「サブスクライバーエンドポイント」に、先ほどコピーしておいたEMP_FEEDの通知URLを入力し、「選択の確認」をクリックします。
6. 通知が受信できるかの確認
ライブ表フィードが5.で作成したイベント・サブスクリプションからの通知を正しく受信できるかを確認します。
「EMP_FEED」の右上の3つ点の部分をクリックし、「確認URLを表示」をクリックします。
ブラウザのウインドウが開き、通知が問題なく受信できると次のような内容が表示されます。
通知が問題なく受信できることが確認できたら、「クラウド・ストア確認プロセスが完了している場合のみチェックします。」のチェックをオンにし、「OK」をクリックします。
以上で、Azure Blob Storageのコンテナーにファイルが追加されたら、イベントを受信して自動的に表へのデータロードを行うライブ表フィードの設定が完了しました。
7. 動作確認
Azure Blob Storageのコンテナーにファイルをアップロードして、動作を確認してみます。
Azureポータルでコンテナー「live-table-feed」の概要ページにアクセスし、「アップロード」をクリックします。
以下のような内容のファイルempdata2.csvをアップロードします。
4,JACKSON
5,BROWN
6,TURNER
Database Actionsに戻り、「EMP_FEED」の右上の3つの点の部分をクリックし、「ライブ表フィードの実行の詳細」をクリックします。
プレビューが表示され、empdata2.csvのファイルがロードされていることが確認できました。
左側のメニューの「ログ」をクリックして、実行ログを確認します。
empdata2.csvのアップロード日時が2024/10/9 12:41:20 JST(2024/10/9 3:41:20 UTC)ですので、その約9秒後に自動的に表にロードされていることがわかりました。
Database ActionsのSQLから表empの内容を確認してみます。
EMP_FEEDのプレビューで表示された内容と同じデータが格納されていることが確認できました。
参考情報
・Creating a Notification-Based Live Table Feed using Microsoft Azure