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.
Lista de exemplos
- Exemplo: invocação síncrona (RequestResponse) de funções Lambda
- Exemplo: invocação assíncrona (evento) de funções Lambda
- Exemplo: capturar o log de execução do Lambda em uma resposta de função
- Exemplo: incluir o contexto do cliente em uma função Lambda
- Exemplo: invocar uma versão específica de uma função Lambda
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 auxiliaraws_commons.create_lambda_function_arn
. Você também pode criar essa estrutura em linha dentro da sua chamadaaws_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 '
como um alias para a versão.custom_version
'
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.