FunctionsとAutonomous JSONを使用したOracle Cloud Infrastructureのバックアップの監視
```
{
"eventType" : "com.oraclecloud.filestorage.createsnapshot",
"cloudEventsVersion" : "0.1",
"eventTypeVersion" : "2.0",
"source" : "FileStorage",
"eventTime" : "2022-11-23T21:30:20Z",
"contentType" : "application/json",
"data" : {
"compartmentId" : "ocid1.compartment.oc1..********************",
"compartmentName" : "ChristophePruvost",
"resourceName" : "Snapshot-20221123-2130-10",
"resourceId" : "ocid1.snapshot.oc1.********************",
"availabilityDomain" : "AD2",
"freeformTags" : { },
"definedTags" : {
"Mandatory_Tags" : {
"Owner" : "oracleidentitycloudservice/firstname.name@company.com",
"Schedule" : "OnDemand_UTC+1",
"CreatedOn" : "2022-11-23T21:30:11.405Z"
}
},
"additionalDetails" : {
"X-Real-Port" : 60458
}
},
"eventID" : "d520f88c-cd3d-4d1f-9a39-d935db5dcd8b",
"extensions" : {
"compartmentId" : "ocid1.compartment.oc1..*****************************"
}
}
```
Autonomous JSONにイベントを挿入した後、すべてのOCIバックアップを1箇所で監視するAPEXアプリケーションを簡単に構築できます。さらに、OCI管理者として、電子メール通知が大量に発生しないようにし、APEXを使用して効率的なバックアップ・レポートを作成できます。これを有効にするには、次のアーキテクチャ図に示すEmail Deliveryコンポーネントを無効にする必要があります。
アーキテクチャ
次の図は、このソリューションのリファレンス・アーキテクチャを示しています。

図mon-bu-funs-auto-json-arch.pngの説明
mon-bu-funs-auto-json-arch-oracle.zip
ノート:
この実装の例は、File StorageスナップショットとDBCSバックアップの2つです。ブロック・ストレージ・バックアップ、ブート・ストレージ・バックアップ、ExaCSバックアップなど、OCI上のすべてのバックアップ・イベントと同様に実行されます。アーキテクチャには次のコンポーネントがあります。
- リージョン
Oracle Cloud Infrastructureリージョンは、可用性ドメインと呼ばれる1つ以上のデータ・センターを含むローカライズされた地理的領域です。リージョンは他のリージョンから独立しており、広大な距離で(国間や大陸間でも)リージョンを分離できます。
- 仮想クラウド・ネットワーク(VCN)およびサブネット
VCNは、Oracle Cloud Infrastructureリージョンで設定するカスタマイズ可能なソフトウェア定義ネットワークです。VCNは、従来のデータ・センター・ネットワークと同様に、ネットワーク環境の完全な制御を可能にします。VCNには重複しない複数のCIDRブロックを含めることができ、VCNの作成後にそれらを変更できます。VCNをサブネットにセグメント化して、そのスコープをリージョンまたは可用性ドメインに設定できます。各サブネットは、VCN内の他のサブネットと重複しない連続した範囲のアドレスで構成されます。サブネットのサイズは、作成後に変更できます。サブネットはパブリックにもプライベートにもできます。
- ファイル・ストレージ
Oracle Cloud Infrastructure File Storageサービスは、耐久性が高くスケーラブルで安全なエンタープライズグレードのネットワーク・ファイル・システムを提供します。File Storageサービスのファイル・システムには、任意のベア・メタル、仮想マシンまたはコンテナ・インスタンスから接続できます。ファイル・ストレージ・スナップショットは、クローンを実行中にリストアする場合に使用できるファイル・システムのバックアップです。
- Database Cloud Service (DBCS)
DBCSはOracle Databaseのフルマネージド・サービスです。DBCSバックアップは、データベースのリストアに使用できるデータのバックアップです。
- OCIイベント・サービス
Oracle Cloud Infrastructure Events Serviceは、Cloud Native Computing Foundation (CNCF) Cloud Events標準に準拠するイベントを使用して、リソースの変更を追跡します。開発者は、Functionsによるコードのトリガー、Streamingへの書込み、Notificationsを使用したアラートの送信を行うことで、リアルタイムに変更に対応できます。
- OCI関数
Oracle Cloud Infrastructure OCI Functionsは、開発者がインフラストラクチャのプロビジョニングや管理を行わずにアプリケーションを構築、実行、スケーリングできる、サーバーレスのイベント駆動型サービスです。ファンクションの実行時に使用したリソースに対してのみ支払います。機能は、他のOCIサービスおよびOracle Saarアプリケーションと統合されます。オープン・フレームワークに基づいて、OCI Functionsは他のクラウド環境またはオンプレミス環境に移植できます。
- Autonomous JSON
Oracle Autonomous JSON Databaseは、SQLまたはドキュメントAPIを使用してJSONドキュメント・コレクションを格納および取得するための機能スコープのサービスです。
- 電子メール配信
Oracle Cloud Infrastructure Email Deliveryサービスは、セキュアな大量のマーケティングおよびトランザクション電子メールを送信するための高速で信頼性の高い管理ソリューションを提供します。
推奨事項
ファンクションを実装するために、Oracleでは、プロセスを理解し、環境を準備するために、使用可能なLiveLabsの一部を完了することをお薦めします。
- Oracle OCI関数
まず、OCI関数の実装について理解しておく必要があります。LiveLab、Oracle Functionsの構成に従います。プロセスを迅速化するには、GitHubのoracle-functions-samplesのサンプル・コードをコピーして貼り付けます。
- Autonomous JSON
次に、OracleデータベースでJSONを使用する場合の知識を深めるには、Oracle DatabaseでのJSONおよびSODAの開発LiveLabに従います。次に、LiveLabのAutonomous Data Warehouseを使用したイベント駆動Oracle Functionsに従います。
- APEXによるモニタリング
最後に、APEXでプロセスを監視する方法を学習し、LiveLabsAutonomous Databaseでのロー・コード開発に従います。
LiveLabを終了したら、JSONイベントのSQLビューを作成し、次のコード・サンプルを使用して独自のAPEXモニタリング・アプリケーションを構築します。このビューは、「ファンクションおよびAutonomous JSONを使用したOracle Cloud Infrastructureバックアップの監視について」に示されているJSONイベント例の構造に関連します。CREATE OR REPLACE VIEW j_backup_detail_view AS SELECT ba.id, ba.created_on, ba.last_modified, ba.version, jt.* FROM backup ba, json_table(ba.json_document, '$' COLUMNS ( eventtype VARCHAR2(100) PATH '$.eventType', cloudeventsversion VARCHAR2(10) PATH '$.cloudEventsVersion', eventtypeversion VARCHAR2(10) PATH '$.eventTypeVersion', source VARCHAR2(50) PATH '$.source', compartmentid VARCHAR2(200) PATH '$.data.compartmentId', compartmentname VARCHAR2(100) PATH '$.data.compartmentName', resourcename VARCHAR2(200) PATH '$.data.resourceName', resourceid VARCHAR2(200) PATH '$.data.resourceId', availabilitydomain VARCHAR2(200) PATH '$.data.availabilityDomain' )) jt; create search index srchidx on backup (json_document) for json;
これで、独自の実装を開始する準備が整いました。