Infrastructure
AWS Resources
Before terraforming the API, you must have the API Python code containerised, using Docker, and have an elastic container registry (ECR) available.
Please refer to the deployment guide for more information.
There are 5 AWS resources that are created by the terraform script:
- Secrets Manager (Secrets)
- S3 Bucket (Storage)
- Cognito User Pool (Authentication)
- Lambda Function (Lambda)
- API Gateway (api_gateway)
Go through the list and deploy each resource one by one.
For each resource, you will need to set the domain and service_subdomain variables in the tfvars file.
1. ECR Repository
Make sure you have an ECR repository created in the AWS account. This will be used in the S3 bucket and Lambda function.
2. Secrets Manager
Run like normal. Leave the cognito_pool_id, cognito_client_id, cognito_client_secret, and redirect_uri variables blank.
3. S3 Bucket
Set the ecr_repository_name variable in the tfvars file. Then run the terraform script.
4. Cognito User Pool
Run like normal.
5. Lambda Function
The tech audit S3 bucket and the secrets manager secret are created by the terraform script. The aws cognito token url is set by the terraform script. Then run the terraform script for the lambda function and this data is set in the lambda function.
6. API Gateway
Run like normal. Note down the URLs in the outputs.
7. Secrets Manager Re-application
Go back to the Secrets Manager resource and set the cognito_pool_id, cognito_client_id, cognito_client_secret, and redirect_uri variables.
8. Finished

Terraform Configuration
Flow chart explanation of the Terraform setup and infrastructure components.
