Graphql API running on AWS Lambda in a custom VPC with RDS Postgres as a data source. All infrastructure is managed by the AWS CDK.
export AWS_PROFILE=YOUR_PROFILE
export CDK_DEFAULT_REGION=YOUR_REGION
export CDK_DEFAULT_ACCOUNT=YOUR_ACCOUNT
Note
Install npm install -g typeorm ts-node typescript aws-cdk
-
Git Fork this repo.
-
Bootstrap CDK
cdk bootstrap aws://${CDK_DEFAULT_ACCOUNT}/${CDK_DEFAULT_REGION} --cloudformation-execution-policies arn:aws:iam::aws:policy/AdministratorAccess
- Create RDS Password secret in SecretsManager
aws secretsmanager create-secret --name rdsPassword --description "RDS Password" --secret-string YOUR_PASSWORD >> rdsPasswordARN.txtSave ARN for secret to be used later.
- Create Github Token and store it as a secret in SecretsManager.
Follow this doc for setting up github webhook token https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token
After that save token in SecretsManger as a secure string
aws secretsmanager create-secret --name github-token --description "Secret for GitHub" --secret-string "GITHUB_PERSONAL_ACCESS_TOKEN" >> githubTokenARN.txt- Create a .env file
cp .env.example .envand update theGITHUB_OWNERvariable to fit your GitHub username.
-
Build the App to compile it from TS to JS.
npm run build:app -
Deploy all stacks
cdk deploy PipelineStackThe PipelineStack will deploy the other resources for you. (set--profile YOURPROFILEif you haven't ranexport AWS_PROFILE=YOUR_PROFILE) -
(optional) Deploy all stacks
cdk deploy --all
Note:
You can also deploy single stacks at a time with cdk deploy STACKNAME
Currently there is a bug with the Service Role on CodeBuild and needs to be manually updated.
cdk destroy --all
npm run buildcompile typescript to jsnpm run watchwatch for changes and compilenpm run testperform the jest unit testscdk deploydeploy this stack to your default AWS account/regioncdk diffcompare deployed stack with current statecdk synthemits the synthesized CloudFormation template