- Docker
- Terraform
- Apache Airflow
- AWS
- ECS
- A VPC is created
- 2 Subnets are created inside the above VPC
- An internet gateway is created
- A route table is created
- The above Internet Gateway is associated to the above subnets(making them public), using the route table
- A Security Group is created to be used with ECS Instances
- ECS Service Role and ECS Instance Role are created to insure necessary permissions for the ECS service
- An Application Load Balancer is created to act as a "starting point" for the requests to the airflow docker container
- A Listener is created, along with a Target Group to route all the Application Load Balancer requests to that Target Group
- A Launch Configuration is created for the ECS Instances, along with an Autoscaling Group to use the Launch Configuration to keep the ECS Instances count equal to the desired count
- An ECS Cluster is Created
- A container definition is created separatly to be used while creating an ECS task
- An ECS Task is definied using the above Container Definition
- An ECS Service is created using the above ECS Task Definition
terraform apply -var-file=variables.tfvars && terraform output -json > outputs.json
In order to tear down the infrastructure, run
terraform destroy -var-file=variables.tfvars
- Automatically push the DAG's from S3
- Revisit the key_pair creation process
- Improve Parametrization and add descriptions to tfvars
- Remote s3 logging