Exemplos: Invocar uma função do Lambda do cluster de banco de dados do Aurora PostgreSQL - Amazon Aurora

Exemplos: Invocar uma função do Lambda do cluster de banco de dados do Aurora PostgreSQL

A seguir, você pode encontrar alguns exemplos de como chamar a função 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 o cluster de bancos de dados Aurora PostgreSQL (opcional) 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. 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 no Guia do desenvolvedor do AWS Lambda. Para obter mais informações sobre o aws_lambda_arn_1, consulte aws_commons.create_lambda_function_arn.

Exemplo: invocação síncrona (RequestResponse) de funções Lambda

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 o cluster de bancos de dados Aurora PostgreSQL (opcional), 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

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

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_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_lambda.invoke.

Exemplo: incluir o contexto do cliente em uma função Lambda

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_lambda.invoke da funçãocontext.

Para obter mais informações sobre os parâmetros do context, consulte a referência aws_lambda.invoke.

Exemplo: invocar uma versão específica de uma função Lambda

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_lambda.invoke.