Invocare una funzione Lambda con una funzione Aurora My native SQL - Amazon Aurora

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Invocare una funzione Lambda con una funzione Aurora My native SQL

Nota

È possibile chiamare le funzioni native lambda_sync e lambda_async quando si utilizza Aurora My SQL versione 2 o Aurora My SQL versione 3.01 e successive. Per ulteriori informazioni sulle SQL versioni di Aurora My, consulta. Aggiornamenti del motore di database per Amazon Aurora My SQL

Puoi invocare un AWS Lambda funzione da un cluster Aurora My SQL DB chiamando le funzioni lambda_sync native e. lambda_async Questo approccio può essere utile quando si desidera integrare il database in esecuzione su Aurora My SQL con altri AWS servizi. Ad esempio, potresti voler inviare una notifica utilizzando Amazon Simple Notification Service (AmazonSNS) ogni volta che una riga viene inserita in una tabella specifica del tuo database.

Utilizzo delle funzioni native per chiamare una funzione Lambda

Le funzioni lambda_sync e lambda_async sono funzioni native predefinite che chiamano una funzione Lambda in modo sincrono o asincrono. Quando è necessario conoscere il risultato dell'esecuzione della funzione Lambda prima di passare a un'altra operazione, utilizza la funzione sincrona lambda_sync. Quando non è necessario conoscere il risultato della funzione Lambda prima di passare a un'altra operazione, utilizza la funzione asincrona lambda_async.

Concessione del ruolo in Aurora My version 3 SQL

In Aurora My SQL versione 3, all'utente che richiama una funzione nativa deve essere concesso il ruolo. AWS_LAMBDA_ACCESS Per concedere questo privilegio a un utente, connettersi all'istanza database come utente amministratore ed eseguire la seguente istruzione.

GRANT AWS_LAMBDA_ACCESS TO user@domain-or-ip-address

Si può revocare questo ruolo eseguendo la seguente istruzione.

REVOKE AWS_LAMBDA_ACCESS FROM user@domain-or-ip-address
Suggerimento

Quando si utilizza la tecnica del ruolo in Aurora My SQL versione 3, è possibile attivare il ruolo anche utilizzando l'istruzione SET ROLE role_name orSET ROLE ALL. Se non conosci il sistema di ruoli My SQL 8.0, puoi saperne di più in. Privilegio basato sui ruoli Per maggiori dettagli, consulta Usare i ruoli nel My SQL Reference Manual.

Questo vale solo per la sessione attiva corrente. Quando ti riconnetti, devi eseguire nuovamente l'SET ROLEistruzione per concedere i privilegi. Per ulteriori informazioni, vedere l'SETROLEistruzione nel My SQL Reference Manual.

Puoi utilizzare il parametro activate_all_roles_on_login del cluster di database per attivare automaticamente tutti i ruoli quando un utente si connette a un'istanza database. Quando questo parametro è impostato, in genere non è necessario chiamare l'SET ROLEistruzione in modo esplicito per attivare un ruolo. Per ulteriori informazioni, vedere activate_all_roles_on_login nel My Reference Manual. SQL

Tuttavia, è necessario chiamare SET ROLE ALL esplicitamente all'inizio di una stored procedure per attivare il ruolo, quando la stored procedure viene chiamata da un altro utente.

Se ricevi un errore come il seguente quando provi a richiamare una funzione Lambda, esegui un'istruzione SET ROLE.

SQL Error [1227] [42000]: Access denied; you need (at least one of) the Invoke Lambda privilege(s) for this operation

Concessione del privilegio in Aurora My versione 2 SQL

In Aurora My SQL versione 2, all'utente che richiama una funzione nativa deve essere concesso il privilegio. INVOKE LAMBDA Per concedere questo privilegio a un utente, connettersi all'istanza database come utente amministratore ed eseguire la seguente istruzione.

GRANT INVOKE LAMBDA ON *.* TO user@domain-or-ip-address

Puoi revocare questo privilegio eseguendo la seguente istruzione.

REVOKE INVOKE LAMBDA ON *.* FROM user@domain-or-ip-address

Sintassi per la funzione lambda_sync

Invochi la funzione lambda_sync in modo sincrono con il tipo di chiamata RequestResponse. La funzione restituisce il risultato dell'invocazione Lambda in un payload. JSON La funzione ha la seguente sintassi.

lambda_sync ( lambda_function_ARN, JSON_payload )

Parametri per la funzione lambda_sync

La funzione lambda_sync include i seguenti parametri.

lambda_function_ ARN

L'Amazon Resource Name (ARN) della funzione Lambda da richiamare.

JSON_payload

Il payload per la funzione Lambda richiamata, in formato. JSON

Nota

Aurora My SQL versione 3 supporta le funzioni di JSON analisi di My 8.0. SQL Tuttavia, Aurora My SQL versione 2 non include queste funzioni. JSONl'analisi non è richiesta quando una funzione Lambda restituisce un valore atomico, come un numero o una stringa.

Esempio per la funzione lambda_sync

La seguente query basata su lambda_sync richiama la funzione Lambda in modo BasicTestLambda sincrono utilizzando la funzione. ARN Il payload per la funzione è {"operation": "ping"}.

SELECT lambda_sync( 'arn:aws:lambda:us-east-1:123456789012:function:BasicTestLambda', '{"operation": "ping"}');

Sintassi per la funzione lambda_async

Invochi la funzione lambda_async in modo asincrono con il tipo di chiamata Event. La funzione restituisce il risultato dell'invocazione Lambda in un payload. JSON La funzione ha la seguente sintassi.

lambda_async ( lambda_function_ARN, JSON_payload )

Parametri per la funzione lambda_async

La funzione lambda_async include i seguenti parametri.

lambda_function_ ARN

L'Amazon Resource Name (ARN) della funzione Lambda da richiamare.

JSON_payload

Il payload per la funzione Lambda richiamata, in formato. JSON

Nota

Aurora My SQL versione 3 supporta le funzioni di JSON analisi di My 8.0. SQL Tuttavia, Aurora My SQL versione 2 non include queste funzioni. JSONl'analisi non è richiesta quando una funzione Lambda restituisce un valore atomico, come un numero o una stringa.

Esempio per la funzione lambda_async

La seguente query basata su lambda_async richiama la funzione Lambda in modo BasicTestLambda asincrono utilizzando la funzione. ARN Il payload per la funzione è {"operation": "ping"}.

SELECT lambda_async( 'arn:aws:lambda:us-east-1:123456789012:function:BasicTestLambda', '{"operation": "ping"}');

Invocazione di una funzione Lambda all'interno di un trigger

Puoi utilizzare i trigger per chiamare Lambda sulle istruzioni di modifica dei dati. L'esempio seguente illustra come utilizzare la funzione lambda_async nativa e memorizzare il risultato in una variabile.

mysql>SET @result=0; mysql>DELIMITER // mysql>CREATE TRIGGER myFirstTrigger AFTER INSERT ON Test_trigger FOR EACH ROW BEGIN SELECT lambda_async( 'arn:aws:lambda:us-east-1:123456789012:function:BasicTestLambda', '{"operation": "ping"}') INTO @result; END; // mysql>DELIMITER ;
Nota

I trigger non vengono eseguiti una volta per SQL istruzione, ma una volta per riga modificata, una riga alla volta. Quando viene eseguito un trigger, il processo è sincrono. L'istruzione di modifica dei dati viene restituita solo al completamento del trigger.

Fai attenzione quando invoci un AWS Lambda funzione generata dai trigger su tabelle che presentano un traffico di scrittura elevato. INSERTUPDATE, e i DELETE trigger vengono attivati per riga. Un carico di lavoro di scrittura intenso su una tabella con INSERT o o DELETE trigger genera un gran numero di chiamate al UPDATE AWS Lambda funzione.