Étapes pour appeler AWS Lambda en tant que fonctions SQL
Affiche les étapes permettant d'appeler des fonctions distantes AWS en tant que fonctions SQL dans votre base de données.
Pour appeler AWS Lambda en tant que fonctions SQL, nous allons créer un catalogue de fonctions de wrapper SQL qui référencent et appellent leur fonction cloud respective via leurs points d'extrémité d'API. Avant de créer ce catalogue, il est supposé que vous avez créé les fonctions en nuage nécessaires pour être référencées par ce catalogue.
Pour accéder aux fonctions lambda AWS, vous devez configurer les politiques nécessaires. Pour plus d'informations, voir Création d'une politique IAM pour accéder aux ressources Lambda AWS et Utilisation de politiques basées sur des ressources pour Lambda.
- Créez des données d'identification à l'aide de la procédure
DBMS_CLOUD.CREATE_CREDENTIAL. L'objet de données d'identification que vous créez doit être de type clé secrète.SET DEFINE OFF BEGINDBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'AWS_CRED', username => 'access_key_ID', password => 'secret_access_key' ); END; /Cela crée les données d'identification
AWS_CRED.Pour plus d'informations, voir ProcédureCREATE_CREDENTIAL.
- création d'un catalogue;
Un catalogue est une collection de fonctions d'encapsuleur qui référencent et appellent leurs fonctions en nuage respectives au moyen de leurs points d'extrémité d'API.
Exemple de création d'un catalogue pour les fonctions AWS.
BEGINDBMS_CLOUD_FUNCTION.CREATE_CATALOG( credential_name => 'AWS_CRED', catalog_name => 'AWS_DEMO_CATALOG', service_provider => 'AWS', cloud_params => '{"region_id":"ap-northeast-1"}' ); END; / PL/SQL procedure successfully completed.Cela crée le catalogue
AWS_DEMO_CATALOG.Pour plus d'informations, voir ProcédureCREATE_CATALOG. Vous pouvez interroger les vues Vue DBA_CLOUD_FUNCTION_CATALOG et Vue USER_CLOUD_FUNCTION_CATALOG pour extraire la liste de tous les catalogues de votre base de données.
- Vous pouvez répertorier les fonctions dans un catalogue.
Voici l'exemple de liste des fonctions AWS Lambda :
VAR function_list CLOB; BEGINDBMS_CLOUD_FUNCTION.LIST_FUNCTIONS( credential_name => 'AWS_CRED', catalog_name => 'AWS_DEMO_CATALOG', function_list => :function_list ); END; / PL/SQL procedure successfully completed. SELECT JSON_QUERY (:function_list, '$' RETURNING VARCHAR2(32676) pretty) AS search_results FROM dual; SEARCH_RESULTS --This is a sample output ------------------------------------------------------------------------------------------------ [ { "functionName" : "test3_example", "functionArn" : "arn:aws:lambda:ap-north-1:378:func:test3_example", "invokeEndpoint" : "https://swiy3.lambda-url.ap-north-1.on.aws_example/" }, { "functionName" : "SumOfNum_example", "functionArn" : "arn:aws:lambda:ap-north-1:378:func:SumOfNum_example" SEARCH_RESULTS --------------------------------------------------------------------------------------------------- "invokeEndpoint" : "https://swiy3.lambda-url.ap-north-1.on.aws_example/" }, { "functionName" : "testlambda_example", "functionArn" : "arn:aws:lambda:ap-north-1:378:func:testlambda_example", "invokeEndpoint" : "https://swiy3.lambda-url.ap-north-1.on.aws_example/" }, SEARCH_RESULTS --------------------------------------------------------------------------------------------------- { "functionName" : "hellp-python_example", "functionArn" : "arn:aws:lambda:ap-north-1:378:func:hellp-python_example", "invokeEndpoint" : "https://swiy3.lambda-url.ap-north-1.on.aws_example/" }, { "functionName" : "testlam_example", "functionArn" : "arn:aws:lambda:ap-north-1:378:func:testlam_example", SEARCH_RESULTS --------------------------------------------------------------------------------------------------- "invokeEndpoint" : "https://swiy3.lambda-url.ap-north-1.on.aws_example/" } ]Pour plus d'informations, voir ProcédureLIST_FUNCTIONS.
- Exécutez
DBMS_CLOUD_FUNCTION.SYNC_FUNCTIONSpour créer des fonctions SQL d'encapsuleur. Vous pouvez utiliser l'une des méthodes suivantes pour créer les fonctions SQL du wrapper dans le catalogue, qui appellent leurs fonctions cloud respectives :-
SYNC_FUNCTIONS :
SYNC_FUNCTIONSest la méthode la plus rapide et la plus simple qui synchronise automatiquement (crée ou supprime) les fonctions d'encapsuleur dans le catalogue avec la liste complète des fonctions en nuage définies dans la région, le compartiment et la location avec lesquels le catalogue a été créé. Exemple :
BEGINDBMS_CLOUD_FUNCTION.SYNC_FUNCTIONS( catalog_name => 'AWS_DEMO_CATALOG' ); END; / PL/SQL procedure successfully completed.Cela crée un wrapper PL/SQL permettant d'ajouter de nouvelles fonctions au catalogue et de supprimer des wrappers pour les fonctions qui ont été supprimées du catalogue.
Exécutez l'interrogation suivante pour vérifier la synchronisation.
SELECT object_name FROM sys.all_objects WHERE owner='TEST_USER' AND object_type='FUNCTION'; OBJECT_NAME -------------------------------------------------------------------------------- TESTLAMBDA HELLP-PYTHON TESTLAM TEST3 SUMOFNUMBERSNote
Conservez une note de l'utilisateur courant pour exécuter cette commande.Pour plus d'informations, voir ProcédureSYNC_FUNCTIONS.
- Vous pouvez créer manuellement une fonction
SQLdans votre catalogue qui appelle sa fonction en nuage respective à l'aide deDBMS_CLOUD.CREATE_FUNCTION.
Exemple pour créer une fonction dans le catalogue
AWS_DEMO_CATALOG.BEGINDBMS_CLOUD_FUNCTION.CREATE_FUNCTION( credential_name => 'AWS_CRED', catalog_name => 'AWS_DEMO_CATALOG', function_name => 'aws_testlambda', function_id => 'arn:aws:lambda:ap-northeast-1:378079562280:function:hellp-python' ); END; / PL/SQL procedure successfully completed.Cela crée la fonction
AWS_TESTLAMBDAdans le catalogueAWS_DEMO_CATALOG.La fonction
AWS_TESTLAMBDAdans le catalogue est une référence à la fonction en nuage respective dont le point d'extrémité est référencé par le paramètreFUNCTION_ID. L'appel de la fonction dans le catalogue avec ses arguments exécute la fonction cloud correspondante et fournit la sortie retournée par la fonction cloud.Vous pouvez interroger les vues Vue DBA_CLOUD_FUNCTION et Vue USER_CLOUD_FUNCTION pour extraire la liste de toutes les fonctions de votre base de données.
Pour plus d'informations, voir ProcédureCREATE_FUNCTION.
-
- Une fois la fonction créée, vous pouvez
DESCRIBEet l'appeler.DESC AWS_TESTLAMBDA COLUMN STATUS format a30 COLUMN OUTPUT format a30SELECT AWS_TESTLAMBDA(NULL) FROM dual; AWS_TESTLAMBDA(NULL) ---------------------------------------------------- {"STATUS":"200","RESPONSE_BODY":"Hello Python!!"}Cela appelle la fonction
AWS_TESTLAMBDAen appelant la référence de fonctionarn:aws:lambda:ap-northeast-1:378079562280:function:hellp-pythondans le catalogueAWS_DEMO_CATALOG. - Vous pouvez supprimer une fonction existante à l'aide de la procédure
DROP_FUNCTION. Exemple :EXEC DBMS_CLOUD_FUNCTION.DROP_FUNCTION (CATALOG_NAME => 'AWS_DEMO_CATALOG', FUNCTION_NAME => 'AWS_TESTLAMBDA'); PL/SQL procedure successfully completed.Cette action supprime la fonction
AWS_TESTLAMBDAdu catalogueAWS_DEMO_CATALOG.Pour plus d'informations, voir ProcédureDROP_FUNCTION.
- Vous pouvez supprimer un catalogue existant à l'aide de la procédure
DROP_CATALOG. Exemple :BEGINDBMS_CLOUD_FUNCTION.DROP_CATALOG( catalog_name => 'AWS_DEMO_CATALOG' ); END; / PL/SQL procedure successfully completed.Cette action supprime
AWS_DEMO_CATALOGde la base de données.Pour plus d'informations, voir ProcédureDROP_CATALOG.
Rubrique parent : Appeler des fonctions définies par l'utilisateur