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.txt
Save 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 .env
and update theGITHUB_OWNER
variable to fit your GitHub username.
-
Build the App to compile it from TS to JS.
npm run build:app
-
Deploy all stacks
cdk deploy PipelineStack
The PipelineStack will deploy the other resources for you. (set--profile YOURPROFILE
if 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 build
compile typescript to jsnpm run watch
watch for changes and compilenpm run test
perform the jest unit testscdk deploy
deploy this stack to your default AWS account/regioncdk diff
compare deployed stack with current statecdk synth
emits the synthesized CloudFormation template