Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Invocation d'une fonction Lambda avec une fonction native Aurora My SQL
Note
Vous pouvez appeler lambda_sync
les fonctions natives lambda_async
lorsque vous utilisez Aurora My SQL version 2 ou Aurora My SQL version 3.01 ou ultérieure. Pour plus d'informations sur les SQL versions d'Aurora My, consultezMises à jour du moteur de base de données pour Amazon Aurora My SQL.
Vous pouvez invoquer un AWS Lambda fonctionne à partir d'un cluster Aurora My SQL DB en appelant les fonctions natives lambda_sync
etlambda_async
. Cette approche peut être utile lorsque vous souhaitez intégrer votre base de données exécutée sur Aurora My SQL à d'autres AWS services. Par exemple, vous souhaiterez peut-être envoyer une notification à l'aide d'Amazon Simple Notification Service (AmazonSNS) chaque fois qu'une ligne est insérée dans une table spécifique de votre base de données.
Table des matières
- Utilisation d'une fonction Lambda avec une fonction native
- Octroi du rôle dans Aurora My SQL version 3
- Octroi du privilège dans Aurora My SQL version 2
- Syntaxe de la fonction lambda_sync
- Paramètres de la fonction lambda_sync
- Exemple de la fonction lambda_sync
- Syntaxe de la fonction lambda_async
- Paramètres de la fonction lambda_async
- Exemple de la fonction lambda_async
- Appel d'une fonction Lambda dans un déclencheur
Utilisation d'une fonction Lambda avec une fonction native
Les fonctions natives lambda_sync
et lambda_async
sont des fonctions natives intégrées qui appellent une fonction Lambda de façon synchrone ou asynchrone. Lorsque vous devez connaître le résultat de la fonction Lambda avant de passer à une autre action, utilisez la fonction synchrone lambda_sync
. Lorsque vous n'avez pas besoin de connaître le résultat de la fonction Lambda avant de passer à une autre action, utilisez la fonction asynchrone lambda_async
.
Octroi du rôle dans Aurora My SQL version 3
Dans Aurora My SQL version 3, le AWS_LAMBDA_ACCESS
rôle doit être attribué à l'utilisateur qui invoque une fonction native. Pour accorder ce rôle à un utilisateur, connectez-vous à l'instance de base de données en tant qu'utilisateur administratif, puis exécutez l'instruction suivante.
GRANT AWS_LAMBDA_ACCESS TO
user
@domain-or-ip-address
Vous pouvez révoquer ce rôle en exécutant l'instruction suivante.
REVOKE AWS_LAMBDA_ACCESS FROM
user
@domain-or-ip-address
Astuce
Lorsque vous utilisez la technique des rôles dans Aurora My SQL version 3, vous pouvez également activer le rôle à l'aide de l'SET ROLE
ALL
instruction SET ROLE
or. Si vous ne connaissez pas le système de rôles My SQL 8.0, vous pouvez en savoir plus dansModèle de privilège basé sur les rôles. Pour plus de détails, consultez la section Utilisation des rôlesrole_name
Cela s'applique uniquement à la session active en cours. Lorsque vous vous reconnectez, vous devez exécuter à nouveau l'SET ROLE
instruction pour accorder des privilèges. Pour plus d'informations, voir la SETROLEdéclaration
Vous pouvez utiliser le paramètre activate_all_roles_on_login
de cluster de base de données pour activer automatiquement tous les rôles lorsqu'un utilisateur se connecte à une instance de base de données. Lorsque ce paramètre est défini, il n'est généralement pas nécessaire d'appeler explicitement l'SET ROLE
instruction pour activer un rôle. Pour plus d'informations, consultez activate_all_roles_on_login
Toutefois, vous devez appeler SET ROLE ALL
explicitement au début d'une procédure stockée pour activer le rôle, lorsque la procédure stockée est appelée par un autre utilisateur.
Si vous obtenez une erreur telle que la suivante lorsque vous essayez d'invoquer une fonction Lambda, exécutez une instruction SET ROLE
.
SQL Error [1227] [42000]: Access denied; you need (at least one of) the Invoke Lambda privilege(s) for this operation
Octroi du privilège dans Aurora My SQL version 2
Dans Aurora My SQL version 2, l'utilisateur qui invoque une fonction native doit se voir accorder le INVOKE LAMBDA
privilège. Pour accorder ce privilège à un utilisateur, connectez-vous à l'instance de base de données en tant qu'utilisateur administratif, puis exécutez l'instruction suivante.
GRANT INVOKE LAMBDA ON *.* TO
user
@domain-or-ip-address
Vous pouvez révoquer ce privilège en exécutant l'instruction suivante.
REVOKE INVOKE LAMBDA ON *.* FROM
user
@domain-or-ip-address
Syntaxe de la fonction lambda_sync
Vous appelez la fonction lambda_sync
de façon synchrone avec le type d'appel RequestResponse
. La fonction renvoie le résultat de l'appel Lambda dans une charge utile. JSON La fonction a la syntaxe suivante.
lambda_sync (
lambda_function_ARN
,
JSON_payload
)
Paramètres de la fonction lambda_sync
La fonction lambda_sync
possède les paramètres suivants.
- fonction_lambda_ ARN
-
Le nom de ressource Amazon (ARN) de la fonction Lambda à appeler.
- JSON_charge utile
-
La charge utile de la fonction Lambda invoquée, JSON au format.
Note
Aurora My SQL version 3 prend en charge les fonctions d'JSONanalyse de My SQL 8.0. Cependant, la SQL version 2 d'Aurora My n'inclut pas ces fonctions. JSONl'analyse n'est pas requise lorsqu'une fonction Lambda renvoie une valeur atomique, telle qu'un nombre ou une chaîne.
Exemple de la fonction lambda_sync
La requête suivante basée sur lambda_sync
invoque la fonction Lambda de manière synchrone à l'aide de BasicTestLambda
la fonction. ARN La charge utile de la fonction est {"operation": "ping"}
.
SELECT lambda_sync( 'arn:aws:lambda:us-east-1:123456789012:function:BasicTestLambda', '{"operation": "ping"}');
Syntaxe de la fonction lambda_async
Vous appelez la fonction lambda_async
de façon asynchrone avec le type d'appel Event
. La fonction renvoie le résultat de l'appel Lambda dans une charge utile. JSON La fonction a la syntaxe suivante.
lambda_async (
lambda_function_ARN
,
JSON_payload
)
Paramètres de la fonction lambda_async
La fonction lambda_async
possède les paramètres suivants.
- fonction_lambda_ ARN
-
Le nom de ressource Amazon (ARN) de la fonction Lambda à appeler.
- JSON_charge utile
-
La charge utile de la fonction Lambda invoquée, JSON au format.
Note
Aurora My SQL version 3 prend en charge les fonctions d'JSONanalyse de My SQL 8.0. Cependant, la SQL version 2 d'Aurora My n'inclut pas ces fonctions. JSONl'analyse n'est pas requise lorsqu'une fonction Lambda renvoie une valeur atomique, telle qu'un nombre ou une chaîne.
Exemple de la fonction lambda_async
La requête suivante basée sur lambda_async
invoque la fonction Lambda de manière asynchrone à l'aide de BasicTestLambda
la fonction. ARN La charge utile de la fonction est {"operation": "ping"}
.
SELECT lambda_async( 'arn:aws:lambda:us-east-1:123456789012:function:BasicTestLambda', '{"operation": "ping"}');
Appel d'une fonction Lambda dans un déclencheur
Vous pouvez utiliser des déclencheurs pour appeler Lambda sur les instructions de modification de données. L'exemple suivant utilise la fonction native lambda_async
et stocke le résultat dans une variable.
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 ;
Note
Les déclencheurs ne sont pas exécutés une fois par SQL instruction, mais une fois par ligne modifiée, ligne par ligne. Lorsqu'un déclencheur s'exécute, le processus est synchrone. L'instruction de modification des données n'est retournée que lorsque le déclencheur est terminé.
Soyez prudent lorsque vous invoquez un AWS Lambda fonctionne à partir de déclencheurs sur des tables soumises à un trafic d'écriture élevé. INSERT
UPDATE
, et les DELETE
déclencheurs sont activés par ligne. Une charge de travail importante en écriture sur une table avec INSERT
UPDATE
, ou DELETE
déclenchant, entraîne un grand nombre d'appels vers votre AWS Lambda .