Skip to content

FIAP/node-lambda

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lambda Function com LocalStack - Stock Data Downloader

Este projeto demonstra como criar e executar uma AWS Lambda Function localmente usando LocalStack. A função baixa dados financeiros de ações utilizando a API do Alpha Vantage.

Pré-requisitos

  • Node.js instalado
  • Docker e Docker Compose
  • AWS CLI configurado
  • LocalStack rodando na porta 4566
  • Chave da API Alpha Vantage

Configuração do LocalStack

Certifique-se de que o LocalStack está rodando. Se ainda não configurou, siga o guia: https://dev.to/programadriano/trabalhando-com-aws-em-um-ambiente-localhost-20i8

Configuração Inicial

1. Instalar Dependências

npm install

2. Configurar API Key

Edite o arquivo index.js e substitua your_alpha_vantage_api_key pela sua chave real da API Alpha Vantage.

Para obter sua chave gratuita, acesse: https://www.alphavantage.co/support/#api-key

Deploy da Lambda Function

3. Criar Arquivo ZIP

# Mac/Linux
zip -r function.zip index.js package.json node_modules/

# Windows
# Clique com botão direito na pasta e selecione "Enviar para > Pasta compactada"

4. Criar IAM Role

aws --endpoint-url=http://localhost:4566 iam create-role \
  --role-name lambda-ex \
  --assume-role-policy-document '{
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Principal": {
          "Service": "lambda.amazonaws.com"
        },
        "Action": "sts:AssumeRole"
      }
    ]
  }'

5. Criar Bucket S3

aws --endpoint-url=http://localhost:4566 s3 mb s3://my-bucket

6. Upload do Código para S3

aws --endpoint-url=http://localhost:4566 s3 cp function.zip s3://my-bucket/function.zip

7. Criar Função Lambda

aws --endpoint-url=http://localhost:4566 lambda create-function \
  --function-name StockDataDownloader \
  --runtime nodejs18.x \
  --role arn:aws:iam::000000000000:role/lambda-ex \
  --handler index.handler \
  --code S3Bucket=my-bucket,S3Key=function.zip

Testes

Opção 1: Teste via AWS CLI

Crie o arquivo de evento (já incluído no projeto):

# event.json já existe no projeto com:
{
  "symbol": "AAPL"
}

Execute o teste:

aws --endpoint-url=http://localhost:4566 lambda invoke \
  --function-name StockDataDownloader \
  --payload file://event.json \
  --cli-binary-format raw-in-base64-out \
  --log-type Tail \
  output.txt

O resultado será salvo em output.txt.

Opção 2: Teste via HTTP Request

Use o arquivo request.http incluído no projeto:

POST http://localhost:4566/2015-03-31/functions/StockDataDownloader/invocations
Content-Type: application/json

{
  "symbol": "AAPL"
}

No VS Code, clique em "Send Request" acima da requisição.

Opção 3: Teste via cURL

curl --location 'http://localhost:4566/2015-03-31/functions/StockDataDownloader/invocations' \
  --header 'Content-Type: application/json' \
  --data '{
    "symbol": "AAPL"
  }'

Opção 4: Teste via Postman

  1. Abra o Postman
  2. Importe o cURL acima
  3. Execute a requisição

Verificar Lambda no Dashboard

Acesse o dashboard do LocalStack em http://localhost:4566 e navegue até a seção Lambda para ver sua função listada.

Estrutura do Projeto

node-lambda/
├── index.js           # Código da função Lambda
├── package.json       # Dependências do projeto
├── event.json         # Dados de teste
├── request.http       # Requisição HTTP para testes
├── output.txt         # Resultado dos testes via CLI
└── README.md          # Este arquivo

Como Funciona

  1. Handler da Lambda: Recebe um parâmetro symbol (código da ação)
  2. Validação: Verifica se o parâmetro foi fornecido
  3. API Call: Faz requisição para Alpha Vantage API
  4. Resposta: Retorna os dados financeiros ou erro

Possíveis Símbolos para Teste

  • AAPL - Apple Inc.
  • GOOGL - Alphabet Inc.
  • MSFT - Microsoft Corporation
  • TSLA - Tesla, Inc.
  • AMZN - Amazon.com Inc.

Troubleshooting

Lambda não encontrada

  • Verifique se o LocalStack está rodando
  • Confirme se a função foi criada corretamente

Erro de API Key

  • Verifique se substituiu your_alpha_vantage_api_key no código
  • Confirme se a chave está válida no site da Alpha Vantage

Erro de ZIP

  • Certifique-se de que o arquivo function.zip contém todos os arquivos necessários
  • Verifique se as dependências estão incluídas (node_modules/)

Scripts Úteis

Reset completo (limpar recursos)

# Deletar função Lambda
aws --endpoint-url=http://localhost:4566 lambda delete-function --function-name StockDataDownloader

# Deletar bucket S3
aws --endpoint-url=http://localhost:4566 s3 rb s3://my-bucket --force

# Deletar IAM role
aws --endpoint-url=http://localhost:4566 iam delete-role --role-name lambda-ex

Atualizar código da função

# Recriar ZIP
zip -r function.zip index.js package.json node_modules/

# Upload para S3
aws --endpoint-url=http://localhost:4566 s3 cp function.zip s3://my-bucket/function.zip

# Atualizar função Lambda
aws --endpoint-url=http://localhost:4566 lambda update-function-code \
  --function-name StockDataDownloader \
  --s3-bucket my-bucket \
  --s3-key function.zip

Referências


Autor: Thiago S. Adriano
Baseado no artigo: Executando AWS Lambda com LocalStack

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published