important
This is a contributors guide and NOT a user guide. Please visit these docs if you are using or evaluating SuperTokens.
Add new region
SNS
- Create the following SNS topics
- CloudWatch_Alarms_US_East_1_EC2
- Type: Standard
 
 - CloudWatch_Alarms_US_East_1_ELB
- Type: Standard
 
 - CloudWatch_Alarms_US_East_1_Lambda
- Type: Standard
 
 - CloudWatch_Alarms_US_East_1_RDS
- Type: Standard
 
 
 - CloudWatch_Alarms_US_East_1_EC2
 - Create subcription for each topic using email address address provided by slack
 - Do confirm subscription for all 4 emails that would come on the slack channel
 
- Create the following SNS topics
 S3
- Create bucket with name supertokens-saas-{region} (use settings from supertokens-saas-us-east-1 bucket)
 - Create bucket with name supertokens-s3-access-logs-{region} (use settings from supertokens-s3-access-logs-us-east-1 bucket)
 - Bucket Policy for supertokens-saas-{region}:
{ "Version": "2012-10-17", "Id": "Policy1594127151493", "Statement": [ { "Sid": "Stmt1594127148960", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": [ "arn:aws:s3:::supertokens-saas-<region>/*”, "arn:aws:s3:::supertokens-saas-<region>” ], "Condition": { "StringEquals": { "aws:sourceVpc": “<region-vpc>” } } } ]} - Set Block all public access to true
 - Update IAM Policy S3SSLUpdater, listBucketItems, s3crr_for_supertokens-ssl_to_supertokens-saas-us-east-1
 - Add migration policy for supertokens-ssl
 - Add tags:
- VantaDescription: ...
 - VantaOwner: rishabh@supertokens.com
 
 - For supertokens-saas-{region} bucket, enable server access logging and set it to s3://supertokens-s3-access-logs-{region}/saas
 
Route 53
- Add new hosted zone {region}.dns (Private hosted zone)
 
EC2
- Security Groups:
- supertokens-nginx-port
- open port 3567-3600 on the instance
 
 - dev-postgresql
- open dev postgres server port to the internet
 
 - ping-ssh
- allow ping to instance (no ssh - the name is outdated, but we still keep that)
 
 - default
- Update inbound rules to allow 4243 and 5432 port for prod and dev instance
 
 - ec2-internal-team-access
- For SSH into these instances for internal team members.
 
 
 - supertokens-nginx-port
 
- Security Groups:
 Add PostgreSQL RDS
- Create based on other regions rds
 - For each db instance withing the cluster, add tags:
- VantaContainsUserData: true
 - VantaDescription: db cluster to store development/production containers data
 - VantaOwner: rishabh@supertokens.com
 
 - Add CloudWatch Alarms
- FreeableMemory Alarm
- Name: db-{{RDS-cluster-name}} FreeableMemory
 - Type: Metric alarm
 - Namespace: AWS/RDS
 - Metric name: FreeableMemory
 - DbClusterIdentifier: {{db-cluster-identifier}}
 - EngineName: aurora
 - Statistic: Minimum
 - Period: 15 minutes
 - Threshold type: Static
 - Whenever FreeableMemory is...: Lower
 - than…: 52428800
 - SNS
- Select an existing SNS topic: CloudWatchAlarms{{Region}}_RDS <!--- e.g. US_East_1, should be easy cause it will be in dropdown menu --->
 
 
 - FreeStorageSpace Alarm
- Name: db-{{RDS-cluster-name}} FreeStorageSpace
 - Type: Metric alarm
 - Namespace: AWS/RDS
 - Metric name: FreeStorageSpace
 - DbClusterIdentifier: {{db-cluster-identifier}}
 - EngineName: aurora
 - Statistic: Minimum
 - Period: 15 minutes
 - Threshold type: Static
 - Whenever FreeStorageSpace is...: Lower
 - than…: 1073741824
 - SNS
- Select an existing SNS topic: CloudWatchAlarms{{Region}}_RDS <!--- e.g. US_East_1, should be easy cause it will be in dropdown menu --->
 
 
 - CPUUtilization Alarm
- Name: db-{{RDS-cluster-name}} CPUUtilization
 - Type: Metric alarm
 - Namespace: AWS/RDS
 - Metric name: CPUUtilization
 - DbClusterIdentifier: {{db-cluster-identifier}}
 - EngineName: aurora
 - Statistic: Maximum
 - Period: 15 minutes
 - Threshold type: Static
 - Whenever CPUUtilization is...: Greater
 - than…: 80
 - SNS
- Select an existing SNS topic: CloudWatchAlarms{{Region}}_RDS <!--- e.g. US_East_1, should be easy cause it will be in dropdown menu --->
 
 
 - ReadIOPS Alarm
- Name: db-{{RDS-cluster-name}} ReadIOPS
 - Type: Metric alarm
 - Namespace: AWS/RDS
 - Metric name: ReadIOPS
 - DbClusterIdentifier: {{db-cluster-identifier}}
 - EngineName: aurora
 - Statistic: Maximum
 - Period: 15 minutes
 - Threshold type: Static
 - Whenever ReadIOPS is...: Greater
 - than…: 1000
 - SNS
- Select an existing SNS topic: CloudWatchAlarms{{Region}}_RDS <!--- e.g. US_East_1, should be easy cause it will be in dropdown menu --->
 
 
 
 - FreeableMemory Alarm
 
- System Manager
- Copy documents from us-east-1 region
 
 
Lambda
- Import all functions from eu-west-1
 - For all the functions, create cloudwatch alarm:
- Errors:
- Name: {{lambda-function-name}} Errors
 
 - Type: Metric alarm
 - Namespace: AWS/Lambda
 - Metric name: Errors
 - FunctionName: {{lambda-function-name}}
 - Statistic: Maximum
 - Period: 15 minutes
 - Threshold type: Static
 - Whenever HTTPCode_ELB_5XX_Count is...: Greater/Equal
 - than…: 1
 - SNS
- Select an existing SNS topic: CloudWatchAlarms{{Region}}_Lambda
 
 
 - Errors:
 
VPC
- Create endpoint of type gateway from s3 service
 - Enable vpc flow logs and set it to s3://supertokens-s3-access-logs-{region}/vpc-flow-logs
 
Cloudwatch
- For all the log groups in the Logs section, change the retention period to 12 months
 
important
- Make sure to start a dev instance in production
 - Give region SSH keys to team members
 - Add new region to SOC2 software