Skip to content

uac-nhan-nguyen/nx-serverless

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nx Serverless ajv flavor

Todos

  • CDK for resource management
  • Access dev DB from local
  • Remove DB creation
  • Add cognito auth
  • Add api authorizer
  • Watch changes when serve
  • Support aws layer?
  • nx logs lambda -> nx logs ping --function=post
  • nx deploy function only -> nx upload ping --function=post
  • Update http-handler generator templates
  • Update model generator templates
  • Update service generator templates
  • serverless config only 1 version lambda
  • Simple ping-get
  • Simple ping-post
  • Simple ping-list
  • Simple Ping model
  • Add vite frontend portal
  • Add nextjs frontend
  • Document for file layout
  • Add HttpAPI service

Resource

Resources such as S3, DynamoDB, Cognito are managed separately using CDK in resource folder.

Commands

cdk diff --profile nx-test
cdk deploy --profile nx-test

Deployment

Commands

# Deploy function only
nx upload <SERVICE_NAME> --function=<FUNCTION_NAME>
nx upload ping --function=post

# Logs a function
nx logs <SERVICE_NAME> --function=<FUNCTION_NAME>
nx logs ping --function=get

# Deploy all affected service
nx affected --target=deploy --all

# Build all affected service
nx affected --target=build --all

Configure AWS Profile and Region

Default AWS profile and region is configurable in environment.ts;

Use another environment

Append NODE_ENV=<ENV> in front of the command

Example NODE_ENV=prod nx logs ping --function=post

Environments are configurable in environments folder

Generate Codes

A new service is equivalent to a new CloudFormation Stack. Service should only create new lambdas. Resources such as DynamoDB, Cognito User Pool, Secrets Manager are created and managed separately

Commands

# Generate new service
yarn g:service <SERVICE_NAME>
yarn g:service ping

# Generate new http controller
yarn g:http-handler

# Generate new lambda controller
# TODO update doc

# Generate library
nx g lib <LIBRARY_NAME>

Delete a service

  1. Delete the folder
  2. Delete declaration in workspace.json

File layout

Layout for multiple independent services:

./
├─ libs/
├─ service-A/
|  ├─ serverless.base.yml
|  ├─ serverless.provider.yml
├─ service-B/

About

Another flavor of nx-serverless

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 97.3%
  • JavaScript 2.7%