LAMBDA_INVOKE - Invocar Função Lambda
O que é este Node?
O LAMBDA_INVOKE é o node responsável por executar funções AWS Lambda de forma síncrona ou assíncrona e receber os resultados diretamente no flow.
Por que este Node existe?
Executar código serverless requer invocação remota com credenciais e configuração. O LAMBDA_INVOKE existe para:
- Invocação síncrona: Chama Lambda e aguarda resposta (RequestResponse)
- Invocação assíncrona: Dispara Lambda sem aguardar (Event)
- Dry run: Testa permissões sem executar função (DryRun)
- Payload flexível: Envia qualquer JSON como entrada para a função
- Resposta estruturada: Retorna statusCode e payload parseado automaticamente
Como funciona internamente?
Quando o LAMBDA_INVOKE é executado, o sistema:
- Autentica AWS: Configura credenciais (accessKeyId, secretAccessKey, region)
- Cria cliente Lambda: Instancia AWS.Lambda com credenciais
- Prepara invocação: Serializa payload como JSON string
- Define tipo: RequestResponse (síncrono) ou Event (assíncrono)
- Invoca função: Executa lambda.invoke() com FunctionName e Payload
- Processa resposta: Parseia Payload retornado e extrai statusCode
- Se erro AWS: Lança exceção com detalhes do erro
- Se sucesso: Retorna success=true com statusCode e payload parseado
Código interno (aws-executors.service.ts:238-248):
case 'invoke':
const invokeResult = await lambda.invoke({
FunctionName: data.functionName,
InvocationType: data.invocationType || 'RequestResponse',
Payload: JSON.stringify(data.payload),
}).promise();
return {
success: true,
statusCode: invokeResult.StatusCode,
payload: JSON.parse(invokeResult.Payload as string),
};
Quando você DEVE usar este Node?
Use LAMBDA_INVOKE sempre que precisar executar lógica serverless da AWS:
Casos de uso
- Processamento pesado: "Execute análise de dados na Lambda"
- Integrações externas: "Lambda conecta com API de terceiros"
- Transformações complexas: "Lambda processa imagem e retorna URL"
- Validações avançadas: "Lambda verifica CPF em base externa"
- Automações: "Lambda dispara workflow interno da empresa"
- Machine Learning: "Lambda executa modelo de predição"
Quando NÃO usar LAMBDA_INVOKE
- Funções inexistentes: Use AWS Lambda Console para criar a função primeiro
- Credenciais erradas: Lambda retornará erro 403 Forbidden
- Timeout curto: RequestResponse tem limite de 15 minutos
- Payload grande: Máximo 6MB síncrono, 256KB assíncrono
Parâmetros Detalhados
accessKeyId (string, obrigatório)
O que é: Access Key ID da conta AWS com permissão lambda:InvokeFunction.
Como obter: 1. AWS Console → IAM → Users → Security Credentials 2. Create Access Key 3. Salve Access Key ID e Secret Access Key
Flow completo para testar:
{
"name": "Teste Lambda Invoke - AccessKeyId",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "lambda_1",
"type": "aws_lambda",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Invocar Lambda",
"parameters": {
"operation": "invoke",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"secretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"region": "us-east-1",
"functionName": "minha-funcao",
"invocationType": "RequestResponse",
"payload": { "chave": "valor" }
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Mostrar Resultado",
"parameters": {
"message": "Lambda executada! Status: {{lambda_statusCode}}"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 700, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "lambda_1" },
{ "source": "lambda_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Teste: Substitua credenciais reais. Lambda será invocada.
secretAccessKey (string, obrigatório)
O que é: Secret Access Key correspondente ao Access Key ID.
Segurança: NUNCA commite este valor. Use variáveis de ambiente ou AWS Secrets Manager.
Flow completo para testar:
{
"name": "Teste Lambda Invoke - SecretAccessKey",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "variable_1",
"type": "variable",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Configurar Credenciais",
"parameters": {
"variables": {
"aws_key": "AKIAIOSFODNN7EXAMPLE",
"aws_secret": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
}
}
}
},
{
"id": "lambda_1",
"type": "aws_lambda",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Invocar Lambda",
"parameters": {
"operation": "invoke",
"accessKeyId": "{{aws_key}}",
"secretAccessKey": "{{aws_secret}}",
"region": "us-east-1",
"functionName": "processar-pedido",
"payload": { "pedido_id": 123 }
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "Pedido processado com sucesso!"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 900, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "variable_1" },
{ "source": "variable_1", "target": "lambda_1" },
{ "source": "lambda_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Teste: Use variáveis para não expor credenciais em logs.
region (string, obrigatório)
O que é: Região AWS onde a função Lambda está hospedada.
Valores comuns:
- us-east-1 (Virginia)
- us-west-2 (Oregon)
- sa-east-1 (São Paulo)
- eu-west-1 (Irlanda)
Flow completo para testar:
{
"name": "Teste Lambda Invoke - Region",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "lambda_1",
"type": "aws_lambda",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Lambda São Paulo",
"parameters": {
"operation": "invoke",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"secretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"region": "sa-east-1",
"functionName": "processar-boleto",
"payload": { "valor": 100.50 }
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "Lambda executada na região sa-east-1"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 700, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "lambda_1" },
{ "source": "lambda_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Teste: Lambda deve existir na região especificada.
functionName (string, obrigatório)
O que é: Nome ou ARN da função Lambda a ser invocada.
Formatos aceitos:
- Nome: minha-funcao
- ARN completo: arn:aws:lambda:us-east-1:123456789012:function:minha-funcao
- ARN parcial: 123456789012:function:minha-funcao
Flow completo para testar:
{
"name": "Teste Lambda Invoke - FunctionName",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "input_1",
"type": "input",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Nome da Função",
"parameters": {
"message": "Digite o nome da função Lambda:",
"variable": "nome_funcao"
}
}
},
{
"id": "lambda_1",
"type": "aws_lambda",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Invocar Lambda Dinâmica",
"parameters": {
"operation": "invoke",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"secretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"region": "us-east-1",
"functionName": "{{nome_funcao}}",
"payload": {}
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Resultado",
"parameters": {
"message": "Função {{nome_funcao}} executada!"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 900, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "input_1" },
{ "source": "input_1", "target": "lambda_1" },
{ "source": "lambda_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Teste: Digite nome de Lambda existente na sua conta AWS.
invocationType (string, opcional)
O que é: Tipo de invocação da Lambda.
Valores possíveis:
- RequestResponse (padrão): Síncrono - aguarda resposta
- Event: Assíncrono - não aguarda resposta
- DryRun: Valida permissões sem executar
Padrão: "RequestResponse"
Flow completo para testar (RequestResponse):
{
"name": "Teste Lambda Invoke - RequestResponse",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "lambda_1",
"type": "aws_lambda",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Lambda Síncrona",
"parameters": {
"operation": "invoke",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"secretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"region": "us-east-1",
"functionName": "calcular-frete",
"invocationType": "RequestResponse",
"payload": { "cep": "01310-100", "peso": 2.5 }
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Mostrar Frete",
"parameters": {
"message": "Frete calculado: R$ {{lambda_payload.valor}}"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 700, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "lambda_1" },
{ "source": "lambda_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Flow completo para testar (Event - Assíncrono):
{
"name": "Teste Lambda Invoke - Event",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "lambda_1",
"type": "aws_lambda",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Lambda Assíncrona",
"parameters": {
"operation": "invoke",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"secretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"region": "us-east-1",
"functionName": "enviar-relatorio-email",
"invocationType": "Event",
"payload": { "usuario_id": 456 }
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "Relatório será enviado em background."
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 700, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "lambda_1" },
{ "source": "lambda_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Teste: - RequestResponse: Flow aguarda resposta da Lambda - Event: Flow continua imediatamente sem aguardar
payload (object, obrigatório)
O que é: Dados JSON enviados como entrada para a função Lambda.
Estrutura: Qualquer objeto JSON válido que sua Lambda espera receber.
Flow completo para testar:
{
"name": "Teste Lambda Invoke - Payload",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "input_1",
"type": "input",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Nome do Cliente",
"parameters": {
"message": "Digite o nome do cliente:",
"variable": "nome_cliente"
}
}
},
{
"id": "number_1",
"type": "number",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Valor do Pedido",
"parameters": {
"message": "Digite o valor do pedido:",
"variable": "valor_pedido"
}
}
},
{
"id": "lambda_1",
"type": "aws_lambda",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Processar Pedido",
"parameters": {
"operation": "invoke",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"secretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"region": "us-east-1",
"functionName": "processar-pedido",
"payload": {
"cliente": "{{nome_cliente}}",
"valor": "{{valor_pedido}}",
"data": "2025-01-15"
}
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 900, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "Pedido processado! ID: {{lambda_payload.pedido_id}}"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 1100, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "input_1" },
{ "source": "input_1", "target": "number_1" },
{ "source": "number_1", "target": "lambda_1" },
{ "source": "lambda_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Teste: Lambda receberá objeto com cliente, valor e data.
Parâmetros
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| operation | string | Sim | Deve ser "invoke" |
| accessKeyId | string | Sim | Access Key ID da AWS |
| secretAccessKey | string | Sim | Secret Access Key da AWS |
| region | string | Sim | Região AWS (ex: us-east-1) |
| functionName | string | Sim | Nome ou ARN da função Lambda |
| invocationType | string | Não | RequestResponse, Event ou DryRun (padrão: RequestResponse) |
| payload | object | Sim | Objeto JSON enviado para a Lambda |
Exemplo 1: Invocar Lambda para Cálculo
Objetivo: Chamar Lambda que calcula desconto e retorna valor final
JSON para Importar
{
"name": "Calcular Desconto com Lambda",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "number_1",
"type": "number",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Valor do Produto",
"parameters": {
"message": "Digite o valor do produto:",
"variable": "valor"
}
}
},
{
"id": "lambda_1",
"type": "aws_lambda",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Calcular Desconto",
"parameters": {
"operation": "invoke",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"secretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"region": "us-east-1",
"functionName": "calcular-desconto",
"invocationType": "RequestResponse",
"payload": {
"valor": "{{valor}}",
"tipo_cliente": "premium"
}
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Mostrar Resultado",
"parameters": {
"message": "Valor original: R$ {{valor}}\nDesconto: {{lambda_payload.desconto}}%\nValor final: R$ {{lambda_payload.valor_final}}"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 900, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "number_1" },
{ "source": "number_1", "target": "lambda_1" },
{ "source": "lambda_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Saída esperada:
Sistema: Digite o valor do produto:
Usuário: 100
Sistema: Valor original: R$ 100
Desconto: 15%
Valor final: R$ 85
Exemplo 2: Disparar Lambda Assíncrona
Objetivo: Enviar notificação por Lambda sem aguardar resposta
JSON para Importar
{
"name": "Notificar via Lambda Assíncrona",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "input_1",
"type": "input",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Mensagem",
"parameters": {
"message": "Digite a mensagem para notificação:",
"variable": "mensagem"
}
}
},
{
"id": "lambda_1",
"type": "aws_lambda",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Enviar Notificação",
"parameters": {
"operation": "invoke",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"secretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"region": "us-east-1",
"functionName": "enviar-notificacao-push",
"invocationType": "Event",
"payload": {
"mensagem": "{{mensagem}}",
"usuarios": ["user1", "user2", "user3"]
}
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "Notificação enviada em background!"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 900, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "input_1" },
{ "source": "input_1", "target": "lambda_1" },
{ "source": "lambda_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Saída esperada:
Sistema: Digite a mensagem para notificação:
Usuário: Promoção de 50% OFF!
Sistema: Notificação enviada em background!
Exemplo 3: Lambda com Condicional
Objetivo: Invocar Lambda e tomar decisão baseada no resultado
JSON para Importar
{
"name": "Validar Dados com Lambda",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "input_1",
"type": "input",
"position": { "x": 300, "y": 100 },
"data": {
"label": "CPF",
"parameters": {
"message": "Digite o CPF:",
"variable": "cpf"
}
}
},
{
"id": "lambda_1",
"type": "aws_lambda",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Validar CPF",
"parameters": {
"operation": "invoke",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"secretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"region": "sa-east-1",
"functionName": "validar-cpf",
"payload": {
"cpf": "{{cpf}}"
}
}
}
},
{
"id": "condition_1",
"type": "condition",
"position": { "x": 700, "y": 100 },
"data": {
"label": "CPF Válido?",
"parameters": {
"variable": "lambda_payload.valido",
"operator": "equals",
"value": true
}
}
},
{
"id": "message_sim",
"type": "message",
"position": { "x": 900, "y": 50 },
"data": {
"label": "CPF OK",
"parameters": {
"message": "CPF válido! Nome: {{lambda_payload.nome}}"
}
}
},
{
"id": "message_nao",
"type": "message",
"position": { "x": 900, "y": 150 },
"data": {
"label": "CPF Inválido",
"parameters": {
"message": "CPF inválido ou não encontrado."
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 1100, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "input_1" },
{ "source": "input_1", "target": "lambda_1" },
{ "source": "lambda_1", "target": "condition_1" },
{ "source": "condition_1", "target": "message_sim", "label": "true" },
{ "source": "condition_1", "target": "message_nao", "label": "false" },
{ "source": "message_sim", "target": "end_1" },
{ "source": "message_nao", "target": "end_1" }
]
}
Saída esperada:
Sistema: Digite o CPF:
Usuário: 123.456.789-00
Sistema: CPF válido! Nome: João Silva
Resposta do Node
Invocação Síncrona (RequestResponse)
{
"success": true,
"statusCode": 200,
"payload": {
"resultado": "dados retornados pela Lambda",
"qualquer_campo": "valor"
}
}
Invocação Assíncrona (Event)
{
"success": true,
"statusCode": 202,
"payload": null
}
Permissões IAM Necessárias
A Access Key precisa ter a política:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:*"
}
]
}
Tipos de Invocação
RequestResponse (Síncrono)
- Comportamento: Aguarda execução completa da Lambda
- Timeout: Até 15 minutos
- Payload máximo: 6 MB
- Uso: Quando precisa do resultado imediato
- StatusCode: 200 (sucesso) ou 4xx/5xx (erro)
Event (Assíncrono)
- Comportamento: Lambda executa em background
- Timeout: Não afeta o flow
- Payload máximo: 256 KB
- Uso: Fire-and-forget (dispara e esquece)
- StatusCode: 202 (aceito)
DryRun (Validação)
- Comportamento: Apenas valida permissões
- Execução: Lambda NÃO é executada
- Uso: Testar se credenciais têm acesso
- StatusCode: 204 (sem conteúdo)
Boas Práticas
✅ SIM:
- Use variáveis para credenciais AWS (nunca hardcode)
- Configure timeout adequado na Lambda (não no flow)
- Use RequestResponse quando precisa do resultado
- Use Event para tarefas longas ou background
- Trate erros com CONDITION no payload retornado
- Valide credenciais com DryRun antes de produção
❌ NÃO:
- Nunca commite accessKeyId/secretAccessKey no código
- Não use RequestResponse para processos > 15 minutos
- Não envie payloads > 6MB (RequestResponse) ou > 256KB (Event)
- Não invoque Lambdas inexistentes (gera erro 404)
- Não use credenciais sem permissão lambda:InvokeFunction
Dicas
💡 Variáveis de resposta: Lambda retorna em lambda_payload.* (ex: {{lambda_payload.resultado}})
💡 StatusCode: 200=sucesso, 202=assíncrono aceito, 4xx=erro cliente, 5xx=erro Lambda
💡 Logs: Lambda escreve logs no CloudWatch Logs automaticamente
💡 Custos: Invocação é cobrada por tempo de execução e memória usada
💡 Retry automático: Event tem retry automático em caso de falha (RequestResponse não)
Tratamento de Erros
Se Lambda retornar erro, o node lançará exceção:
{
"error": "Lambda execution error",
"message": "Task timed out after 3.00 seconds",
"statusCode": 500
}
Use CONDITION para verificar lambda_payload.error e tratar:
{
"type": "condition",
"parameters": {
"variable": "lambda_payload.error",
"operator": "exists",
"value": false
}
}
Exemplo de Payload Complexo
{
"payload": {
"operacao": "processar_pedido",
"dados": {
"cliente": {
"nome": "{{nome_cliente}}",
"email": "{{email_cliente}}"
},
"itens": [
{ "produto_id": 1, "quantidade": 2 },
{ "produto_id": 5, "quantidade": 1 }
],
"pagamento": {
"metodo": "cartao",
"parcelas": 3
}
},
"metadata": {
"origem": "whatsapp",
"flow_id": "{{flow_id}}"
}
}
}
Ambiente Variables na Lambda
Sua função Lambda pode ler variáveis de ambiente:
// Lambda function (Node.js)
exports.handler = async (event) => {
const apiKey = process.env.API_KEY;
const dbHost = process.env.DB_HOST;
// Processar event recebido do flow
const resultado = await processar(event);
return {
statusCode: 200,
body: JSON.stringify(resultado)
};
};
Configure no AWS Lambda Console → Configuration → Environment variables.
Próximo Node
→ LAMBDA_LIST - Listar funções Lambda → SQS_SEND - Enviar mensagem SQS → DYNAMODB_PUT - Inserir item DynamoDB