LAMBDA_LIST - Listar Funções Lambda
O que é este Node?
O LAMBDA_LIST é o node responsável por listar todas as funções AWS Lambda disponíveis na conta e região especificadas.
Por que este Node existe?
Listar Lambdas programaticamente permite automação e descoberta dinâmica. O LAMBDA_LIST existe para:
- Inventário automático: Descobrir funções Lambda existentes
- Seleção dinâmica: Permitir usuário escolher Lambda de uma lista
- Monitoramento: Verificar quais funções estão deployadas
- Auditoria: Listar Lambdas para compliance e governança
- Integração: Construir interfaces dinâmicas com Lambdas disponíveis
Como funciona internamente?
Quando o LAMBDA_LIST é executado, o sistema:
- Autentica AWS: Configura credenciais (accessKeyId, secretAccessKey, region)
- Cria cliente Lambda: Instancia AWS.Lambda com credenciais
- Define limite: MaxItems controla quantas funções retornar (padrão: 50)
- Lista funções: Chama
lambda.listFunctions()com MaxItems - Recebe metadados: AWS retorna array com nome, ARN, runtime, memória, etc.
- Se erro AWS: Lança exceção com detalhes do erro
- Se sucesso: Retorna success=true com array de funções
Código interno (aws-executors.service.ts:260-268):
case 'listFunctions':
const listResult = await lambda.listFunctions({
MaxItems: data.maxItems || 50,
}).promise();
return {
success: true,
functions: listResult.Functions,
};
Quando você DEVE usar este Node?
Use LAMBDA_LIST sempre que precisar listar ou descobrir funções Lambda:
Casos de uso
- Menu dinâmico: "Escolha uma função para executar: 1-funcao-a, 2-funcao-b"
- Dashboard: Mostrar todas as Lambdas ativas
- Validação: Verificar se Lambda existe antes de invocar
- Relatório: "Você tem 15 funções Lambda deployadas"
- Filtro: Listar apenas Lambdas com runtime Node.js
- Inventário: Documentar todas as Lambdas da conta
Quando NÃO usar LAMBDA_LIST
- Invoke direto: Se sabe o nome da Lambda, use
lambda_invokedireto - Listagem grande: API retorna máximo 50 (use paginação se precisar mais)
- Permissões restritas: Requer
lambda:ListFunctionsno IAM
Parâmetros Detalhados
accessKeyId (string, obrigatório)
O que é: Access Key ID da conta AWS com permissão lambda:ListFunctions.
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 List - 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": "Listar Lambdas",
"parameters": {
"operation": "listFunctions",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"secretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"region": "us-east-1"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Mostrar Quantidade",
"parameters": {
"message": "Total de funções: {{lambda_functions.length}}"
}
}
},
{
"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. Sistema listará Lambdas.
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.
Flow completo para testar:
{
"name": "Teste Lambda List - 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": "Listar Lambdas",
"parameters": {
"operation": "listFunctions",
"accessKeyId": "{{aws_key}}",
"secretAccessKey": "{{aws_secret}}",
"region": "us-east-1"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "Lambdas listadas 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.
region (string, obrigatório)
O que é: Região AWS onde as funções Lambda estão hospedadas.
Valores comuns:
- us-east-1 (Virginia)
- us-west-2 (Oregon)
- sa-east-1 (São Paulo)
- eu-west-1 (Irlanda)
Importante: Apenas Lambdas da região especificada serão listadas.
Flow completo para testar:
{
"name": "Teste Lambda List - 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": "Listar Lambdas BR",
"parameters": {
"operation": "listFunctions",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"secretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"region": "sa-east-1"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Mostrar Região",
"parameters": {
"message": "Lambdas em São Paulo (sa-east-1): {{lambda_functions.length}}"
}
}
},
{
"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: Lambdas de outras regiões não aparecem.
maxItems (number, opcional)
O que é: Número máximo de funções Lambda a retornar.
Padrão: 50
Limites: AWS permite até 50 por chamada. Use paginação para mais.
Flow completo para testar:
{
"name": "Teste Lambda List - MaxItems",
"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": "Listar Top 10",
"parameters": {
"operation": "listFunctions",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"secretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"region": "us-east-1",
"maxItems": 10
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Mostrar Lista",
"parameters": {
"message": "Primeiras 10 Lambdas listadas."
}
}
},
{
"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: Apenas 10 Lambdas serão retornadas, mesmo que existam mais.
Parâmetros
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| operation | string | Sim | Deve ser "listFunctions" |
| 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) |
| maxItems | number | Não | Máximo de funções a retornar (padrão: 50) |
Exemplo 1: Listar e Mostrar Lambdas
Objetivo: Listar todas as Lambdas e mostrar nomes
JSON para Importar
{
"name": "Inventário de Lambdas",
"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": "Listar Lambdas",
"parameters": {
"operation": "listFunctions",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"secretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"region": "us-east-1",
"maxItems": 20
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Mostrar Total",
"parameters": {
"message": "Você tem {{lambda_functions.length}} funções Lambda deployadas na região us-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" }
]
}
Saída esperada:
Sistema: Você tem 8 funções Lambda deployadas na região us-east-1.
Exemplo 2: Escolher Lambda Dinamicamente
Objetivo: Listar Lambdas e permitir usuário escolher uma para executar
JSON para Importar
{
"name": "Escolher e Executar Lambda",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "lambda_list_1",
"type": "aws_lambda",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Listar Lambdas",
"parameters": {
"operation": "listFunctions",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"secretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"region": "us-east-1"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Mostrar Opções",
"parameters": {
"message": "Funções disponíveis:\n1. {{lambda_functions[0].FunctionName}}\n2. {{lambda_functions[1].FunctionName}}\n3. {{lambda_functions[2].FunctionName}}"
}
}
},
{
"id": "input_1",
"type": "input",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Escolher",
"parameters": {
"message": "Digite o nome da função:",
"variable": "funcao_escolhida"
}
}
},
{
"id": "lambda_invoke_1",
"type": "aws_lambda",
"position": { "x": 900, "y": 100 },
"data": {
"label": "Executar Lambda",
"parameters": {
"operation": "invoke",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"secretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"region": "us-east-1",
"functionName": "{{funcao_escolhida}}",
"payload": {}
}
}
},
{
"id": "message_2",
"type": "message",
"position": { "x": 1100, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "Lambda {{funcao_escolhida}} executada com sucesso!"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 1300, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "lambda_list_1" },
{ "source": "lambda_list_1", "target": "message_1" },
{ "source": "message_1", "target": "input_1" },
{ "source": "input_1", "target": "lambda_invoke_1" },
{ "source": "lambda_invoke_1", "target": "message_2" },
{ "source": "message_2", "target": "end_1" }
]
}
Saída esperada:
Sistema: Funções disponíveis:
1. processar-pedido
2. enviar-email
3. calcular-frete
Sistema: Digite o nome da função:
Usuário: enviar-email
Sistema: Lambda enviar-email executada com sucesso!
Exemplo 3: Filtrar Lambdas por Runtime
Objetivo: Listar Lambdas e mostrar apenas Node.js
JSON para Importar
{
"name": "Filtrar Lambdas Node.js",
"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": "Listar Lambdas",
"parameters": {
"operation": "listFunctions",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"secretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"region": "us-east-1"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Relatório",
"parameters": {
"message": "Total de funções: {{lambda_functions.length}}\n\nNota: Use código customizado para filtrar por Runtime."
}
}
},
{
"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" }
]
}
Saída esperada:
Sistema: Total de funções: 12
Nota: Use código customizado para filtrar por Runtime.
Resposta do Node
{
"success": true,
"functions": [
{
"FunctionName": "processar-pedido",
"FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:processar-pedido",
"Runtime": "nodejs20.x",
"Role": "arn:aws:iam::123456789012:role/lambda-role",
"Handler": "index.handler",
"CodeSize": 1024,
"Description": "Processa pedidos de clientes",
"Timeout": 30,
"MemorySize": 256,
"LastModified": "2025-01-15T10:30:00.000+0000",
"Version": "$LATEST"
},
{
"FunctionName": "enviar-email",
"FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:enviar-email",
"Runtime": "python3.11",
"Role": "arn:aws:iam::123456789012:role/lambda-role",
"Handler": "lambda_function.lambda_handler",
"CodeSize": 2048,
"Description": "Envia emails via SES",
"Timeout": 60,
"MemorySize": 512,
"LastModified": "2025-01-14T08:15:00.000+0000",
"Version": "$LATEST"
}
]
}
Estrutura de Cada Função
Cada objeto no array functions contém:
| Campo | Descrição | Exemplo |
|---|---|---|
| FunctionName | Nome da função | "processar-pedido" |
| FunctionArn | ARN completo | "arn:aws:lambda:..." |
| Runtime | Ambiente de execução | "nodejs20.x", "python3.11" |
| Handler | Função handler | "index.handler" |
| CodeSize | Tamanho do código (bytes) | 1024 |
| Description | Descrição da função | "Processa pedidos" |
| Timeout | Timeout em segundos | 30 |
| MemorySize | Memória em MB | 256 |
| LastModified | Data última modificação | "2025-01-15T10:30:00" |
| Version | Versão da função | "$LATEST" |
Permissões IAM Necessárias
A Access Key precisa ter a política:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "lambda:ListFunctions",
"Resource": "*"
}
]
}
Acessando Dados das Funções
Use variáveis para acessar informações:
{{lambda_functions.length}} → Quantidade total
{{lambda_functions[0].FunctionName}} → Nome da primeira Lambda
{{lambda_functions[0].Runtime}} → Runtime da primeira Lambda
{{lambda_functions[0].MemorySize}} → Memória da primeira Lambda
{{lambda_functions[1].FunctionArn}} → ARN da segunda Lambda
Boas Práticas
✅ SIM:
- Use maxItems adequado (10-20 para menus, 50 para inventário)
- Cache resultado se listar múltiplas vezes no mesmo flow
- Filtre por região relevante para seu caso de uso
- Use FunctionName para invocar (mais simples que ARN)
- Valide se array está vazio antes de acessar índices
❌ NÃO:
- Não liste Lambdas repetidamente (cacheia ou salva em variável)
- Não assuma ordem específica (AWS não garante ordenação)
- Não acesse índices sem verificar tamanho do array
- Não exponha lista completa a usuários finais (segurança)
- Não use listFunctions para verificar se Lambda existe (use invoke direto)
Dicas
💡 Paginação: Se tem > 50 Lambdas, use NextMarker para continuar listagem
💡 Performance: Listagem é rápida (< 1s), mas evite repetir desnecessariamente
💡 Filtro local: API não filtra por runtime/tags - faça filtro no flow
💡 Regiões: Execute listFunctions para cada região se precisa inventário global
Limitações
- Máximo 50 funções por chamada (use paginação para mais)
- Sem filtro server-side (filtre localmente por Runtime, Tags, etc.)
- Apenas LATEST version (versões antigas não aparecem)
- Permissão global: Precisa de
lambda:ListFunctionsem todas as funções
Próximo Node
→ LAMBDA_INVOKE - Invocar função Lambda → SQS_LIST - Listar filas SQS → DYNAMODB_LIST - Listar tabelas DynamoDB