Aplicação Lambda de exemplo, escrito em Typescript e Node 14, utiliza o framework Serverless. Realiza a criação de AWS HTTP API Gateway e uma tabela DynamoDB e realiza o deploy de duas funções AWS Lambda, getUser e insertUser.
Node 16
Serverless
Necessário ter um DynamoDB rodando localmente, existe um script python (necessário a biblioteca boto) e um docker-compose.yml na pasta dynamodb-local com o setup local necessário.
Instalar o Serverless
npm install -g serverless
Com o DynamoDB rodando localmente e as dependencias instaladas yarn
basta rodar o comando:
yarn start:dev
Necessário ter credenciais AWS na pasta ~/.aws/credentials
com as devidas permissões de uso.
sls deploy --stage dev -r us-east-1 -c serverless.yml
curl --location --request POST 'https://CHANGE_URL/user' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Marlon",
"email": "marlonbquadros@gmail.com"
}'
curl --location --request GET 'https://CHANGE_URL/user/user?email=marlonbquadros@gmail.com'
Na pasta .cicd existe um template de CloudFormation para a configuração de um AWS CodePipeline com AWS CodeBuild para realizar o deploy do serviço Lambda. README.md dentro da pasta com os comandos necessários para realizar o deploy.
.
├── .cicd
│ ├── Pipeline.yml
│ ├── README.md
│ └── buildspec
│ └── buildspec_cicd.yml
├── .env-example
├── .eslintignore
├── .eslintrc.js
├── .husky
│ ├── .gitignore
│ ├── pre-commit
│ └── pre-push
├── .nvmrc
├── .prettierignore
├── .prettierrc.js
├── README.md
├── dbconfig.ts
├── dynamodb-local
│ ├── config_dynamodb_local.py
│ ├── docker-compose.yml
│ └── requirements.txt
├── package-lock.json
├── package.json
├── resource
│ └── dynamodb
│ └── DynamoDBTable.yml
├── serverless.yml
├── src
│ ├── app.ts
│ ├── core
│ │ ├── container.ts
│ │ └── services
│ │ └── user.ts
│ ├── env.ts
│ ├── http
│ │ ├── controllers
│ │ │ └── user.ts
│ │ ├── index.ts
│ │ └── schemas
│ │ └── user.ts
│ ├── infrastructure
│ │ ├── adapter
│ │ │ └── dynamodb.ts
│ │ ├── container.ts
│ │ ├── database.ts
│ │ └── repository
│ │ └── user.ts
│ ├── middleware
│ │ └── validator.ts
│ ├── server.ts
│ └── types
│ ├── core.d.ts
│ ├── env.d.ts
│ ├── infrastructure.d.ts
│ └── user.d.ts
└── tsconfig.json