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.
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