Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rayraegah/terraform-aws-hasura
Terraform module to deploy Hasura graphql engine on AWS
https://github.com/rayraegah/terraform-aws-hasura
aws aws-infrastructure ecs hasura terraform terraform-module
Last synced: about 4 hours ago
JSON representation
Terraform module to deploy Hasura graphql engine on AWS
- Host: GitHub
- URL: https://github.com/rayraegah/terraform-aws-hasura
- Owner: Rayraegah
- License: mit
- Created: 2019-04-16T08:57:07.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2022-10-21T12:17:23.000Z (almost 2 years ago)
- Last Synced: 2024-09-24T04:21:49.245Z (3 days ago)
- Topics: aws, aws-infrastructure, ecs, hasura, terraform, terraform-module
- Language: HCL
- Homepage: https://registry.terraform.io/modules/Rayraegah/hasura/aws
- Size: 41 KB
- Stars: 151
- Watchers: 5
- Forks: 52
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Hasura on AWS
![supports terraform-0.12][terraform-0.12-badge]
Terraform module to deploy [Hasura GraphQL Engine](https://github.com/hasura/graphql-engine) on AWS. This will deploy
across multiple Availability Zones (AZ) with the following components:- Postgres RDS deployed in multiple AZ
- Hasura GraphQL Engine in [Fargate](https://aws.amazon.com/fargate/) across multiple AZ
- ALB for load balancing between the hasura tasks
- Certificate issued by ACM for securing traffic to ALB
- Logging for RDS, ECS, and ALB into Cloudwatch Logs## Support
The master branch supports Terraform v0.12 and later. For Terraform v0.11 and older versions [check other git branches](https://github.com/Rayraegah/hasura-aws/tree/terraform-0.11).
## Glossary
- AZ: Availability Zone
- ALB: Application Load Balancer
- ACM: AWS Certificate Manager
- ECS: Elastic Container Service
- RDS: Relational Database Service## Requirements
- AWS account
- IAM user
- domain with Route53
- Terraform v0.12## Usage
Copy and paste into your Terraform configuration, edit the variables, and run `terraform init`
```terraform
module "hasura" {
source = "Rayraegah/hasura/aws"
version = "3.X.Y"
region = "YOUR DEPLOYMENT REGION"
domain = "YOUR DOMAIN NAME"
hasura_subdomain = "HASURA ENDPOINT SUBDOMAIN"
app_subdomain = "YOUR HASURA APP SUBDOMAIN (FOR CORS)"
hasura_version_tag = "HASURA VERSION TAG FOR DEPLOYMENT"
hasura_admin_secret = "YOUR HASURA ADMIN SECRET"
hasura_jwt_secret_algo = "ALGORITHM FOR JWT VERIFICATION (HMAC or RS256)"
hasura_jwt_secret_key = "YOUR PUBLIC KEY FOR JWT VERIFICATION"
hasura_console_enabled = "ENABLE HASURA CONSOLE"
rds_db_name = "YOUR DATABASE NAME"
rds_instance = "YOUR DATABASE INSTANCE SIZE"
rds_username = "YOUR DATABASE USERNAME"
rds_password = "YOUR DATABASE PASSWORD"
rds_storage_encrypted = "ENABLE DATABASE ENCRYPTION"
multi_az = "ENABLE MULTIPLE AVAILABILITY ZONES"
az_count = "NUMBER OF AVAILABILITY ZONES"
vpc_enable_dns_hostnames = "ENABLE DNS HOSTNAMES"
environment = "ENV VARS FOR ECS TASK"
additional_db_security_groups = "ADDITIONAL GROUPS ASSIGNED TO RDS INSTANCE"
create_iam_service_linked_role = "FALSE IF ROLE IS ALREADY CREATED"
ecs_cluster_name = "YOUR CLUSTER NAME"
}
```### Additional info about variables
- `hasura_version_tag` comes from [here](https://hub.docker.com/r/hasura/graphql-engine/tags?page=1&ordering=last_updated) (e.g. "v.2.0.0-alpha.3")
- `az_count` needs to be at least 2 or higher (due to AWS constraints, an rds instance must have at least one availability zone for failover)
- `hasura_console_enabled` must be a string (i.e. `"true"`) and NOT a boolean (i.e. `true`). Other true/false variables can be booleans
- `rds_db_name` must only contain alphanumeric characters and start with a letter
- `ecs_cluster_name` must only contain alphanumeric characters and start with a letter
- `domain` must be a domain you have a Route 53 hosted zone for## License
Released under MIT License. Based on [Gordon Johnston](https://github.com/elgordino)'s proposed architecture.
[terraform-0.12-badge]: https://img.shields.io/badge/terraform-0.12-brightgreen.svg