To deploy without dependencies and CloudFormation limitation of Template body size(512k), create small API stacks for each Microservice or module.
Table of Contents
- Deploy root-api stack
- Deploy device-api stack
- Deploy product-api stack
npm install -g aws-cdk@2.33.0
# install packages in the root folder
npm install
cdk bootstrap
Use the cdk
command-line toolkit to interact with your project:
cdk deploy
: deploys your app into an AWS accountcdk synth
: synthesizes an AWS CloudFormation template for your appcdk diff
: compares your app with the deployed stackcdk watch
: deployment every time a file change is detected
Stack | Time |
---|---|
root-api (24kb) | 1m 30s |
device-api (24kb) | 1m 30s |
product-api (20kb) | 1m 30s |
Total | 4m 30s |
Use the deploy-all.sh file if you want to deploy all stacks without prompt at a time.
Create the root API and dummy method to import from device-api and product-api stacks.
cd root-api
cdk deploy
root-api/lib/root-api-stack.ts
cd ../device-api
cdk deploy
device-api/lib/device-api-stack.ts
SSM parameter:
- /cdk-lambda-apigateway/rest-api-id
- /cdk-lambda-apigateway/root-resource-id
cd ../product-api
cdk deploy
product-api/lib/product-api-stack.ts
SSM parameter:
- /cdk-lambda-apigateway/rest-api-id
- /cdk-lambda-apigateway/root-resource-id
├── app
│ └── hello.js
├── build.gradle
├── clean-up.sh
├── deploy-all.sh
├── device-api
│ ├── bin
│ │ └── index.ts
│ ├── cdk.json
│ ├── config.ts
│ ├── jest.config.js
│ └── lib
│ └── device-api-stack.ts
├── package-lock.json
├── package.json
├── product-api
│ ├── bin
│ │ └── index.ts
│ ├── cdk.json
│ ├── config.ts
│ ├── jest.config.js
│ └── lib
│ └── product-api-stack.ts
├── root-api
│ ├── bin
│ │ └── index.ts
│ ├── cdk.json
│ ├── config.ts
│ ├── jest.config.js
│ └── lib
│ └── root-api-stack.ts
├── screenshots
│ └── apigw.png
└── tsconfig.json
- CloudFormation quotas
- Template body size: 512k
- Template body size in an Amazon S3: 1M