SQL関数としてGoogle Cloud実行関数を起動するステップ
Google Cloud Run関数をデータベースでSQL関数として起動するステップを示します。
Google Cloud Run関数をSQL関数として起動するには、SQLラッパー関数のライブラリを作成して、それぞれのクラウド関数を参照およびコールします。 このカタログを作成する前に、このカタログで参照するために必要なクラウド関数が作成されていることを前提としています。 詳細については、「Google Cloudコンソールを使用したクラウド実行機能の作成」を参照してください。
- Autonomous DatabaseインスタンスからGoogle Cloud Run関数にアクセスするには、Googleサービス・アカウントを使用します。 Google Cloud Platform (GCP)アプリケーションのGoogleサービス・アカウントに、
cloudfunctions.functions.list
権限とCloud Functions Invoker
およびCloud Run Invoker
ロールを付与する必要があります。 - カタログを作成します。
ADMIN
以外のユーザーでGoogle Cloud Run関数のカタログを作成するには、CLOUD_INTEGRATIONS
ビューに対する読取り権限をそのユーザーに付与する必要があります。カタログとは、APIエンドポイントを使用してそれぞれのクラウド関数を参照およびコールするラッパー関数の集合です。
BEGIN
DBMS_CLOUD_FUNCTION.CREATE_CATALOG
( credential_name => 'GCP$PA', catalog_name => 'GCP_DEMO_CATALOG', service_provider => 'GCP', cloud_params => '{"project_id":"example_XXXXXX"}' ); END; /cloud_params
のproject_id
値は、Google Cloud Platform (GCP)のプロジェクトIDです。これにより、
GCP_DEMO_CATALOG
カタログが作成され、指定されたproject_id
のすべての関数がカタログ化されます。詳細については、「CREATE_CATALOGプロシージャ」を参照してください。 「DBA_CLOUD_FUNCTION_CATALOGビュー」ビューおよび「USER_CLOUD_FUNCTION_CATALOGビュー」ビューを問い合せると、データベース内のすべてのカタログのリストを取得できます。
- カタログ内の関数をリストします。
次に、Google Cloud Run関数をリストする例を示します:
VAR function_list CLOB; BEGIN
DBMS_CLOUD_FUNCTION.LIST_FUNCTIONS
( credential_name => 'GCP$PA', catalog_name => 'GCP_DEMO_CATALOG', function_list => :function_list ); END; / SELECT JSON_QUERY (:function_list, '$' RETURNING VARCHAR2(32676) pretty) AS search_results FROM dual;詳細については、「LIST_FUNCTIONSプロシージャ」を参照してください。
DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS
を実行してラッパーSQL関数を作成します。 次のいずれかのメソッドを使用して、それぞれのクラウド関数をコールするラッパーSQL関数をカタログに作成できます:-
SYNC_FUNCTIONS: ラッパーSQL関数を作成する
SYNC_FUNCTIONS
メソッドは、カタログ内のラッパー関数を、カタログが作成されたリージョン、コンパートメントおよびテナンシで定義されたクラウド関数の完全なリストとともに自動的に同期(作成または削除)する、最も迅速で簡単な方法です。 たとえば:
BEGIN
DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS
( catalog_name => 'GCP_DEMO_CATALOG' ); END; /これにより、カタログに新しい関数を追加し、カタログから削除された関数のラッパーを削除するためのPL/SQLラッパーが作成されます。
次の問合せを実行して、同期を確認します。
SELECT object_name FROM sys.all_objects WHERE owner='TEST_USER' AND object_type='FUNCTION';
ノート:
このコマンドを実行するには、現在のユーザーをノートにとります。詳細については、「SYNC_FUNCTIONSプロシージャ」を参照してください。
DBMS_CLOUD.CREATE_FUNCTION
を使用して、それぞれのクラウド関数をコールするSQL
関数をカタログに手動で作成できます。
GCP_DEMO_CATALOG
カタログにファンクションを作成する例。EXEC :function_args := TO_CLOB('{"name": "VARCHAR2"}');
BEGIN
DBMS_CLOUD_FUNCTION.CREATE_FUNCTION
( credential_name => 'GCP$PA', catalog_name => 'GCP_DEMO_CATALOG', function_name => 'gcp_testfunc', function_id => 'function_id_path', input_args => :function_args ); END; /これにより、
GCP_DEMO_CATALOG
カタログにGCP_TESTFUNC
関数が作成されます。カタログ内の
GCP_TESTFUNC
関数は、FUNCTION_ID
パラメータによってプロジェクトIDが参照されるそれぞれのGoogle Cloud Run関数への参照です。 カタログ内の関数を引数とともに呼び出すと、対応するGoogle Cloud Run関数が実行され、関数から返される出力が提供されます。「DBA_CLOUD_FUNCTIONビュー」ビューおよび「USER_CLOUD_FUNCTIONビュー」ビューを問い合せて、データベース内のすべての関数のリストを取得できます。
詳細については、「CREATE_FUNCTIONプロシージャ」を参照してください。
-
- 関数の作成後、
DESCRIBE
を実行して呼び出すことができます。DESC GCP_TESTFUNC COLUMN STATUS format a30 COLUMN OUTPUT format a30
SELECT GCP_TESTFUNC(NULL) FROM dual;
これにより、
function_id
パラメータで指定された関数参照をコールして、GCP_TESTFUNC
関数が起動されます。 DROP_FUNCTION
プロシージャを使用して、既存の関数を削除できます。 たとえば:EXEC DBMS_CLOUD_FUNCTION.DROP_FUNCTION (CATALOG_NAME => 'GCP_DEMO_CATALOG', FUNCTION_NAME => 'GCP_TESTFUNC');
これにより、
GCP_DEMO_CATALOG
カタログからGCP_TESTFUNC
関数が削除されます。詳細については、「DROP_FUNCTIONプロシージャ」を参照してください。
DROP_CATALOG
プロシージャを使用して、既存のカタログを削除できます。 たとえば:BEGIN
DBMS_CLOUD_FUNCTION.DROP_CATALOG
( catalog_name => 'GCP_DEMO_CATALOG' ); END; /これにより、データベースから
GCP_DEMO_CATALOG
が削除されます。詳細については、「DROP_CATALOGプロシージャ」を参照してください。
親トピック: ユーザー定義関数の起動