2023年6月22日木曜日

OCIのシークレットを操作するアプリケーションを作成する(3) - その他

 OCIのシークレットを操作するRESTデータ・ソースを作成し、それを使ったAPEXアプリケーションを作成しました。

RESTデータ・ソースを使用するにあたり、いくつか考慮する点を記述します。


フォームの初期化と行のフェッチ



以下のようにフォーム・リージョンソースとしてRESTデータ・ソースが設定されている場合、フォームの初期化プロセス(プロセス・タイプフォーム - 初期化)は、データベース・アクション行のフェッチである操作を呼び出します。


今回作成したアプリケーションでは、フォームの初期化は初期化フォームSecret Detailによって実施されます。


呼び出されるREST APIは、データベース・アクション行のフェッチである操作です。


OCI Vault Secret Management APIでは、これはListSecretsの呼び出しになります。つまり、指定したコンパートメントに保存されているすべてのシークレットを受け取り、APEX側でその中から特定のシークレットを取り出します。

OCIのシークレットであればそれほど大量にデータがあるとも思えませんが、フォームを開くたびにデータを全件取得することは、パフォーマンスに悪い影響を与える可能性があります。

APEXの開発者によると、データの一覧を取得するREST APIと、その中の特定の1行を取得するREST APIでは、必ずしも同じデータ項目を返すわけではないことから、レポートと同じAPIを呼び出してフォームを初期化している、とのことでした。

今回使用しているAPIのListSecrets(レスポンスはSecretSummary)とGetSecret(レスポンスはSecret)のように、SecretSummaryの属性がすべてSecretに含まれている場合は、フォーム・リージョンのRESTデータ・ソースの行のフェッチを、特定の行だけを取得するAPI呼び出し(今回の例ではGetSecret)に変更することができます。

プロセス初期化フォームSecret DetailタイプAPI呼出しに変更し、設定タイプとしてRESTソースRESTソースとしてVault Secret Management操作GET - /{secretId}を指定します。

サーバー側の条件タイプとしてアイテムはNULLではないを選択し、アイテムP3_IDを指定します。


すべてのパラメータとして、適切なページ・アイテムを指定します。


フォームを開く際にP3_COMPARTMENT_IDに値を渡していましたが、上記の対応を行ったあとはシークレットIDだけでコンテンツを取得するため、不要になります。


以上で対応は完了です。



RESTソース・カタログの活用



RESTソース・カタログを作成すると、作成したRESTデータ・ソースを保存することができます。RESTソース・カタログに保存されたRESTデータ・ソースの定義を元に、新たにRESTデータ・ソースを作成したり、既存のRESTデータ・ソースの定義を更新することができます。

ワークスペース・ユーティリティRESTソース・カタログを開きます。


RESTソース・カタログの作成には、カタログ・グループが必要です。最初にカタログ・グループを作成します。

グループの作成をクリックします。


名前OCI REST APIとします。説明https://docs.oracle.com/en-us/iaas/api/とします。

作成をクリックします。


カタログ・グループを作成したので、RESTソース・カタログを作成します。

カタログの作成をクリックします。


グループには、先ほど作成したOCI REST APIを選択します。名前Vault Servicesとします。

内部名は組織内で一意となる名称にします。

説明を記述して、作成をクリックします。


RESTソース・カタログが作成されます。


RESTソース・カタログが作成されていると、RESTデータ・ソースのRESTソース・カタログのセクションより、カタログに保存することができます。


カタログ・グループおよびカタログを選択し、RESTデータ・ソースをカタログに保存します。


RESTデータ・ソースがカタログに保存されると、逆に、カタログからリフレッシュできるようになります。


RESTデータ・ソースの新規作成時に、RESTソース・カタログから作成することもできるようになります。


RESTソース・カタログとして、エクスポートインポートも可能です。


RESTデータ・カタログを活用することにより、一度作成したRESTデータ・ソースを再利用できます。

今回の記事は以上です。

Oracle APEXのアプリケーション作成の参考になれば幸いです。