

# Ejemplos: invoque las funciones de Lambda desde su instancia de base de datos de RDS for PostgreSQL
<a name="PostgreSQL-Lambda-examples"></a>

A continuación, puede encontrar varios ejemplos de llamada a la función de [aws\$1lambda.invoke](PostgreSQL-Lambda-functions.md#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)](PostgreSQL-Lambda.md#PostgreSQL-Lambda-specify-function) 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](#PostgreSQL-Lambda-Event). 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](https://docs.aws.amazon.com/lambda/latest/dg/lambda-invocation.html) en la *Guía para desarrolladores de AWS Lambda*. Para obtener más información acerca de `aws_lambda_arn_1`, consulte [aws\$1commons.create\$1lambda\$1function\$1arn](PostgreSQL-Lambda-functions.md#aws_commons.create_lambda_function_arn). 

**Topics**
+ [Ejemplo: invocación sincrónica (RequestResponse) de funciones de Lambda](#PostgreSQL-Lambda-RequestResponse)
+ [Ejemplo: invocación asincrónica (Event) de funciones de Lambda](#PostgreSQL-Lambda-Event)
+ [Ejemplo: captura del registro de ejecución de Lambda en una respuesta de función](#PostgreSQL-Lambda-log-response)
+ [Ejemplo: inclusión del contexto del cliente en una función Lambda](#PostgreSQL-Lambda-client-context)
+ [Ejemplo: invocación de una versión específica de una función de Lambda](#PostgreSQL-Lambda-function-version)

## Ejemplo: invocación sincrónica (RequestResponse) de funciones de Lambda
<a name="PostgreSQL-Lambda-RequestResponse"></a>

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)](PostgreSQL-Lambda.md#PostgreSQL-Lambda-specify-function), 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
<a name="PostgreSQL-Lambda-Event"></a>

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
<a name="PostgreSQL-Lambda-log-response"></a>

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\$1lambda.invoke](PostgreSQL-Lambda-functions.md#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\$1lambda.invoke](PostgreSQL-Lambda-functions.md#aws_lambda.invoke).

## Ejemplo: inclusión del contexto del cliente en una función Lambda
<a name="PostgreSQL-Lambda-client-context"></a>

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\$1lambda.invoke](PostgreSQL-Lambda-functions.md#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\$1lambda.invoke](PostgreSQL-Lambda-functions.md#aws_lambda.invoke). 

## Ejemplo: invocación de una versión específica de una función de Lambda
<a name="PostgreSQL-Lambda-function-version"></a>

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\$1lambda.invoke](PostgreSQL-Lambda-functions.md#aws_lambda.invoke).