

# Exemplos: Invocar uma função do Lambda da instância de banco de dados do RDS for PostgreSQL
<a name="PostgreSQL-Lambda-examples"></a>

A seguir, você pode encontrar alguns exemplos de como chamar a função [aws\$1lambda.invoke](PostgreSQL-Lambda-functions.md#aws_lambda.invoke). A maioria dos exemplos usa a estrutura composta `aws_lambda_arn_1` que você cria em [Etapa 4: usar as funções Lambda auxiliares com a instância de banco de dados do RDS for PostgreSQL (opcional)](PostgreSQL-Lambda.md#PostgreSQL-Lambda-specify-function) para simplificar a passagem dos detalhes da função. Para obter um exemplo de invocação assíncrona, consulte [Exemplo: invocação assíncrona (evento) de funções Lambda](#PostgreSQL-Lambda-Event). Todos os outros exemplos listados usam invocação síncrona. 

Para saber mais sobre os tipos de invocação do Lambda, consulte [Invocação de funções Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-invocation.html) no *Guia do desenvolvedor do AWS Lambda*. Para obter mais informações sobre o `aws_lambda_arn_1`, consulte [aws\$1commons.create\$1lambda\$1function\$1arn](PostgreSQL-Lambda-functions.md#aws_commons.create_lambda_function_arn). 

**Topics**
+ [Exemplo: invocação síncrona (RequestResponse) de funções Lambda](#PostgreSQL-Lambda-RequestResponse)
+ [Exemplo: invocação assíncrona (evento) de funções Lambda](#PostgreSQL-Lambda-Event)
+ [Exemplo: capturar o log de execução do Lambda em uma resposta de função](#PostgreSQL-Lambda-log-response)
+ [Exemplo: incluir o contexto do cliente em uma função Lambda](#PostgreSQL-Lambda-client-context)
+ [Exemplo: invocar uma versão específica de uma função Lambda](#PostgreSQL-Lambda-function-version)

## Exemplo: invocação síncrona (RequestResponse) de funções Lambda
<a name="PostgreSQL-Lambda-RequestResponse"></a>

A seguir estão dois exemplos de uma invocação síncrona de função Lambda. Os resultados dessas chamadas de funções `aws_lambda.invoke` são os mesmos.

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

Os parâmetros são descritos da seguinte forma:
+ `:'aws_lambda_arn_1'` – Este parâmetro identifica a estrutura composta criada em [Etapa 4: usar as funções Lambda auxiliares com a instância de banco de dados do RDS for PostgreSQL (opcional)](PostgreSQL-Lambda.md#PostgreSQL-Lambda-specify-function), com a função auxiliar `aws_commons.create_lambda_function_arn`. Você também pode criar essa estrutura em linha dentro da sua chamada `aws_lambda.invoke` da seguinte forma: 

  ```
  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` – A carga útil JSON para passar para a função Lambda.
+ `'RequestResponse'` – O Lambda tipo de invocação.

## Exemplo: invocação assíncrona (evento) de funções Lambda
<a name="PostgreSQL-Lambda-Event"></a>

Segue-se um exemplo de uma invocação de função Lambda assíncrona. O tipo de invocação `Event` agenda a invocação de função Lambda com a carga de entrada específica e retorna imediatamente. Use o tipo de invocação de `Event` em determinados fluxos de trabalho que não dependem dos resultados da função Lambda.

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

## Exemplo: capturar o log de execução do Lambda em uma resposta de função
<a name="PostgreSQL-Lambda-log-response"></a>

Você pode incluir os últimos 4 KB do log de execução na resposta da função usando o parâmetro `log_type` em sua chamada de função `aws_lambda.invoke`. Por padrão, esse parâmetro é definido como `None`, mas você pode especificar `Tail` para capturar os resultados do log de execução do Lambda na resposta, conforme mostrado a seguir.

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

Defina o parâmetro [aws\$1lambda.invoke](PostgreSQL-Lambda-functions.md#aws_lambda.invoke) da função `log_type` para `Tail` incluir o log de execução na resposta. O valor padrão para o parâmetro `log_type` é `None`.

O `log_result` que é retornado é uma string codificada de `base64`. Você pode decodificar os conteúdos usando uma combinação das funções PostgreSQL `decode` e `convert_from`.

Para obter mais informações sobre o `log_type`, consulte [aws\$1lambda.invoke](PostgreSQL-Lambda-functions.md#aws_lambda.invoke).

## Exemplo: incluir o contexto do cliente em uma função Lambda
<a name="PostgreSQL-Lambda-client-context"></a>

A função `aws_lambda.invoke` tem um parâmetro `context` que você pode usar para passar informações separadas da carga útil, como mostrado a seguir. 

```
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 o contexto do cliente, use um objeto JSON para o parâmetro [aws\$1lambda.invoke](PostgreSQL-Lambda-functions.md#aws_lambda.invoke) da função`context`.

Para obter mais informações sobre os parâmetros do `context`, consulte a referência [aws\$1lambda.invoke](PostgreSQL-Lambda-functions.md#aws_lambda.invoke). 

## Exemplo: invocar uma versão específica de uma função Lambda
<a name="PostgreSQL-Lambda-function-version"></a>

Você pode especificar uma determinada versão de uma função Lambda incluindo o parâmetro `qualifier` com a chamada `aws_lambda.invoke`. A seguir, você pode encontrar um exemplo que faz isso usando `'custom_version'` como um alias para a versão.

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

Você também pode fornecer um qualificador de função Lambda com as informações de nome da função da forma a seguir.

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

Para obter mais informações sobre `qualifier` e outros parâmetros, consulte a referência [aws\$1lambda.invoke](PostgreSQL-Lambda-functions.md#aws_lambda.invoke).