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.
Indice
- Utilizzo delle funzioni native per chiamare una funzione Lambda
- Concessione del ruolo in Aurora My version 3 SQL
- Concessione del privilegio in Aurora My versione 2 SQL
- Sintassi per la funzione lambda_sync
- Parametri per la funzione lambda_sync
- Esempio per la funzione lambda_sync
- Sintassi per la funzione lambda_async
- Parametri per la funzione lambda_async
- Esempio per la funzione lambda_async
- Invocazione di una funzione Lambda all'interno di un trigger
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
orrole_name
SET 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
Questo vale solo per la sessione attiva corrente. Quando ti riconnetti, devi eseguire nuovamente l'SET ROLE
istruzione per concedere i privilegi. Per ulteriori informazioni, vedere l'SETROLEistruzione
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 ROLE
istruzione in modo esplicito per attivare un ruolo. Per ulteriori informazioni, vedere activate_all_roles_on_login nel My Reference
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. INSERT
UPDATE
, 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.