Ejemplos: invoque las funciones de Lambda desde su instancia de base de datos de RDS for PostgreSQL - Amazon Relational Database Service

Ejemplos: invoque las funciones de Lambda desde su instancia de base de datos de RDS for PostgreSQL

A continuación, puede encontrar varios ejemplos de llamada a la función de aws_lambda.invoke. La mayoría de ejemplos utilizan la estructura compuesta aws_lambda_arn_1 que se crea en Paso 4: utilice las funciones auxiliares de Lambda con su instancia de base de datos de RDS for PostgreSQL (Opcional) para simplificar la transferencia de los detalles de la función. Para obtener un ejemplo de invocación asincrónica, consulte Ejemplo: invocación asincrónica (Event) de funciones de Lambda. El resto de ejemplos enumerados utilizan la invocación sincrónica.

Para obtener más información acerca de los tipos de invocación de Lambda, consulte Invocación de funciones de Lambda en la Guía para desarrolladores de AWS Lambda. Para obtener más información acerca de aws_lambda_arn_1, consulte aws_commons.create_lambda_function_arn.

Ejemplo: invocación sincrónica (RequestResponse) de funciones de Lambda

Lo que sigue son dos ejemplos de una invocación de función de Lambda sincrónica. Los resultados de estas llamadas de funciones de aws_lambda.invoke son iguales.

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');

Los parámetros se describen de la siguiente manera:

  • :'aws_lambda_arn_1': este parámetro identifica la estructura compuesta creada en Paso 4: utilice las funciones auxiliares de Lambda con su instancia de base de datos de RDS for PostgreSQL (Opcional), con la función auxiliar de aws_commons.create_lambda_function_arn. También puede crear esta estructura en línea dentro de su llamada de aws_lambda.invoke de la siguiente manera.

    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 carga útil JSON que se va a pasar a la función Lambda.

  • 'RequestResponse' – El tipo de invocación Lambda.

Ejemplo: invocación asincrónica (Event) de funciones de Lambda

Lo que sigue es un ejemplo de una invocación de función asincrónica Lambda. El tipo de invocación Event programa la invocación de la función Lambda con la carga útil de entrada especificada y regresa inmediatamente. Utilice el tipo de invocación Event en ciertos flujos de trabajo que no dependen de los resultados de la función Lambda.

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

Ejemplo: captura del registro de ejecución de Lambda en una respuesta de función

Puede incluir los últimos 4 KB del registro de ejecución en la respuesta de función mediante el parámetro log_type en su llamada a funciones de aws_lambda.invoke. De forma predeterminada, este parámetro se establece en None, pero puede especificar Tail para capturar los resultados del registro de ejecución de Lambda en la respuesta, como se muestra a continuación.

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');

Establezca el parámetro aws_lambda.invoke de la función log_type en Tail para incluir el registro de ejecución en la respuesta. El valor predeterminado para el parámetro log_type es None.

El log_result que se devuelve es una cadena codificada base64. Puede decodificar el contenido utilizando una combinación de las funciones decode y convert_from PostgreSQL.

Para obtener más información acerca de log_type, consulte aws_lambda.invoke.

Ejemplo: inclusión del contexto del cliente en una función Lambda

La función aws_lambda.invoke tiene un parámetro context que puede utilizar para pasar la información por separado de la carga, como se muestra a continuación.

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');

Para incluir el contexto del cliente, utilice un objeto JSON para el parámetro aws_lambda.invoke de la función context.

Para obtener más información sobre los parámetros de context, consulte la referencia de aws_lambda.invoke.

Ejemplo: invocación de una versión específica de una función de Lambda

Se puede especificar una versión concreta de una función de Lambda mediante el parámetro qualifier con la llamada de aws_lambda.invoke. A continuación, encontrará información sobre el ejemplo que hace esto mediante 'custom_version' como alias de la versión.

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

Además, puede proporcionar un calificador de función de Lambda con los detalles del nombre de función en su lugar de la siguiente manera.

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

Para obtener más información acerca de qualifier y otros parámetros, consulte la referencia de aws_lambda.invoke.