Exemples : Invocation de fonctions Lambda depuis votre de base de données Aurora SQL Postgre pour une instance de base de données Postgre SQL - Amazon Aurora

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.

Exemples : Invocation de fonctions Lambda depuis votre de base de données Aurora SQL Postgre pour une instance de base de données Postgre SQL

Ci-dessous, vous pouvez trouver plusieurs exemples d'appel de la fonction aws_lambda.invoke. La plupart des exemples utilisent la structure composite aws_lambda_arn_1 que vous créez Étape 4 : Utiliser les fonctions d'assistance Lambda avec votre cluster de SQL base de données Aurora Postgre RDS (facultatif) pour simplifier la transmission des détails de la fonction. Pour obtenir un exemple d'appel asynchrone, reportez-vous à la section Exemple : appel asynchrone (Event) de fonctions Lambda. Tous les autres exemples répertoriés utilisent l'appel synchrone.

Pour en savoir plus sur les types d'invocation Lambda, consultez la section Invocation de fonctions Lambda dans le AWS Lambda Guide du développeur. Pour plus d'informations sur aws_lambda_arn_1, consultez aws_commons.create_lambda_function_arn.

Exemple : appel synchrone (RequestResponse) de fonctions Lambda

Voici deux exemples d'appel synchrone de fonction Lambda. Les résultats de ces appels de fonction aws_lambda.invoke sont identiques.

SELECT * FROM aws_lambda.invoke('aws_lambda_arn_1', '{"body": "Hello from Postgres!"}'::json);
SELECT * FROM aws_lambda.invoke('aws_lambda_arn_1', '{"body": "Hello from Postgres!"}'::json, 'RequestResponse');

Les paramètres sont décrits comme suit :

  • :'aws_lambda_arn_1' — Ce paramètre identifie la structure composite créée dans Étape 4 : Utiliser les fonctions d'assistance Lambda avec votre cluster de SQL base de données Aurora Postgre RDS (facultatif), avec la fonction d'assistance aws_commons.create_lambda_function_arn. Vous pouvez également créer cette structure en ligne dans votre appel aws_lambda.invoke comme suit.

    SELECT * FROM aws_lambda.invoke(aws_commons.create_lambda_function_arn('my-function', 'aws-region'), '{"body": "Hello from Postgres!"}'::json );
  • '{"body": "Hello from PostgreSQL!"}'::json— La JSON charge utile à transmettre à la fonction Lambda.

  • 'RequestResponse' – Type d'appel Lambda.

Exemple : appel asynchrone (Event) de fonctions Lambda

Voici un exemple d'appel de fonction Lambda asynchrone. Le type d'appel Event planifie l'appel de fonction Lambda avec la charge utile d'entrée spécifiée et renvoie une réponse immédiatement. Utiliser le type d'appel Event dans certains flux de travail qui ne dépendent pas des résultats de la fonction Lambda.

SELECT * FROM aws_lambda.invoke('aws_lambda_arn_1', '{"body": "Hello from Postgres!"}'::json, 'Event');

Exemple : capture du journal d'exécution Lambda dans une réponse de fonction

Vous pouvez inclure les 4 derniers Ko du journal d'exécution dans la réponse de la fonction à l'aide du paramètre log_type dans votre appel de fonction aws_lambda.invoke. Par défaut, ce paramètre est défini sur None, mais vous pouvez spécifier Tail afin de capturer les résultats du journal d'exécution Lambda dans la réponse, comme indiqué ci-dessous.

SELECT *, select convert_from(decode(log_result, 'base64'), 'utf-8') as log FROM aws_lambda.invoke(:'aws_lambda_arn_1', '{"body": "Hello from Postgres!"}'::json, 'RequestResponse', 'Tail');

Définissez le paramètre aws_lambda.invoke de la fonction log_type sur Tail pour inclure le journal d'exécution dans la réponse. La valeur par défaut du paramètre log_type est None.

Le log_result qui est retourné est une chaîne base64 encodée. Vous pouvez décoder le contenu en combinant les fonctions decode et convert_from PostgreSQL.

Pour plus d'informations sur log_type, consultez aws_lambda.invoke.

Exemple : inclusion du contexte client dans une fonction Lambda

La fonction aws_lambda.invoke possède un paramètre context que vous pouvez utiliser pour transférer des informations séparées de la charge utile, comme indiqué ci-dessous.

SELECT *, convert_from(decode(log_result, 'base64'), 'utf-8') as log FROM aws_lambda.invoke(:'aws_lambda_arn_1', '{"body": "Hello from Postgres!"}'::json, 'RequestResponse', 'Tail');

Pour inclure le contexte du client, utilisez un JSON objet pour le context paramètre de la aws_lambda.invoke fonction.

Pour plus d'informations sur le paramètre context, veuillez consulter la référence aws_lambda.invoke.

Exemple : appel d'une version spécifique d'une fonction Lambda

Vous pouvez spécifier une version particulière d'une fonction Lambda en incluant le paramètre qualifier avec l'appel aws_lambda.invoke. Vous trouverez ci-dessous un exemple de ce procédé qui utilise 'custom_version' comme alias pour la version.

SELECT * FROM aws_lambda.invoke('aws_lambda_arn_1', '{"body": "Hello from Postgres!"}'::json, 'RequestResponse', 'None', NULL, 'custom_version');

Vous pouvez également fournir un qualificatif de fonction Lambda avec les informations de nom de la fonction à la place, comme suit.

SELECT * FROM aws_lambda.invoke(aws_commons.create_lambda_function_arn('my-function:custom_version', 'us-west-2'), '{"body": "Hello from Postgres!"}'::json);

Pour de plus amples informations sur qualifier et d'autres paramètres, veuillez consulter la référence aws_lambda.invoke.