05. File List and Directory Structure

Directory and file structure of the MILU2 Infrastructure project.

Project Root

milu2_infra-main/
โ”œโ”€โ”€ Makefile                    # ๐ŸŽฏ Main entry point - all commands here
โ”œโ”€โ”€ docker-compose.yml          # Dev container definition
โ”œโ”€โ”€ ecs_exec.sh                 # ECS exec helper script
โ”œโ”€โ”€ README.md                   # terraform-docs placeholder
โ”œโ”€โ”€ .docker/                    # Docker build files
โ”œโ”€โ”€ ecs/                        # Local artifact dump (gitignored)
โ”œโ”€โ”€ shell/                      # Helper shell scripts
โ”œโ”€โ”€ tofu/                       # ๐Ÿ—๏ธ Infrastructure code (main)
โ””โ”€โ”€ docs/                       # ๐Ÿ“š Documentation (this folder)

Shell Scripts (shell/)

shell/
โ”œโ”€โ”€ get_thumbprint.sh           # Get GitHub OIDC thumbprint (openssl)
โ”œโ”€โ”€ get_vars.sh                 # Download env vars from S3
โ””โ”€โ”€ plan_with_summary.sh        # Plan with colored diff summary
ScriptUsagePurpose
get_thumbprint.shCalled during applySHA1 OIDC thumbprint
get_vars.shsh shell/get_vars.sh <env>Fetch common_vars.hcl + env_vars.hcl
plan_with_summary.shVia make plan-*Colorized plan output

Tofu Directory Structure

tofu/
โ”œโ”€โ”€ envs/                       # ๐ŸŒ Environment configurations
โ”‚   โ”œโ”€โ”€ config.hcl              # Global backend + provider config
โ”‚   โ”œโ”€โ”€ common_vars.hcl         # Shared variables (from S3)
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ shared/                 # ๐Ÿ“ฆ Shared stacks (env-independent)
โ”‚   โ”‚   โ”œโ”€โ”€ github_provider/    # GitHub OIDC provider
โ”‚   โ”‚   โ”œโ”€โ”€ cicd_infra/         # Infra deploy role
โ”‚   โ”‚   โ””โ”€โ”€ cicd_app_deploy/    # App deploy role
โ”‚   โ”‚
โ”‚   โ””โ”€โ”€ test/                   # ๐Ÿงช Test environment
โ”‚       โ”œโ”€โ”€ env_vars.hcl        # Test-specific variables (from S3)
โ”‚       โ””โ”€โ”€ core/               # Main infrastructure stack
โ”‚           โ””โ”€โ”€ terragrunt.hcl  # Inputs for core module
โ”‚
โ””โ”€โ”€ modules/                    # ๐Ÿงฑ Terraform modules
    โ”œโ”€โ”€ github_provider/        # OIDC provider module
    โ”œโ”€โ”€ cicd/                   # Infra CI/CD role module
    โ”œโ”€โ”€ cicd_app_deploy/        # App CI/CD role module
    โ””โ”€โ”€ core/                   # ๐Ÿ—๏ธ Main infrastructure module
        โ”œโ”€โ”€ core.tf             # Module composition
        โ”œโ”€โ”€ _variables.tf       # Input variables
        โ”œโ”€โ”€ _outputs.tf         # Output values
        โ””โ”€โ”€ <sub-modules>/      # Individual components

Core Sub-Modules Detail

tofu/modules/core/
โ”œโ”€โ”€ core.tf                     # ๐ŸŽฏ Orchestrates all sub-modules
โ”œโ”€โ”€ _variables.tf               # Inputs from terragrunt
โ”œโ”€โ”€ _outputs.tf                 # Outputs to other modules/stacks
โ”‚
โ”œโ”€โ”€ security/                   # ๐Ÿ” KMS + WAF
โ”‚   โ”œโ”€โ”€ _variables.tf
โ”‚   โ”œโ”€โ”€ _outputs.tf
โ”‚   โ”œโ”€โ”€ kms.tf                  # Multi-region KMS keys
โ”‚   โ”œโ”€โ”€ waf.tf                  # WAFv2 ACLs + rules
โ”‚   โ”œโ”€โ”€ log_group.tf            # WAF log groups
โ”‚   โ””โ”€โ”€ provider.tf             # Virginia provider alias
โ”‚
โ”œโ”€โ”€ network/                    # ๐ŸŒ VPC + networking
โ”‚   โ”œโ”€โ”€ _variables.tf
โ”‚   โ”œโ”€โ”€ _outputs.tf
โ”‚   โ”œโ”€โ”€ vpc.tf                  # VPC + subnets + IGW
โ”‚   โ”œโ”€โ”€ nat_gateway.tf          # NAT gateway
โ”‚   โ”œโ”€โ”€ security_group.tf       # 14 security groups
โ”‚   โ”œโ”€โ”€ endpoint.tf             # VPC endpoints (9)
โ”‚   โ”œโ”€โ”€ log_group.tf            # VPC flow logs
โ”‚   โ””โ”€โ”€ iam.tf                  # Flow log IAM role
โ”‚
โ”œโ”€โ”€ bastion/                    # ๐Ÿ–ฅ๏ธ Bastion host
โ”‚   โ”œโ”€โ”€ _variable.tf
โ”‚   โ”œโ”€โ”€ _outputs.tf
โ”‚   โ”œโ”€โ”€ ec2.tf                  # EC2 instance + EIP
โ”‚   โ””โ”€โ”€ keypair.tf              # SSH key pair
โ”‚
โ”œโ”€โ”€ lb/                         # โš–๏ธ Load balancers
โ”‚   โ”œโ”€โ”€ _variable.tf
โ”‚   โ”œโ”€โ”€ _outputs.tf
โ”‚   โ”œโ”€โ”€ alb.tf                  # Internal ALB + target groups
โ”‚   โ”œโ”€โ”€ nlb.tf                  # Internal NLB for game nodes
โ”‚   โ””โ”€โ”€ acm.tf                  # ACM certificates (TODO)
โ”‚
โ”œโ”€โ”€ cdn/                        # ๐ŸŒ CloudFront
โ”‚   โ”œโ”€โ”€ _variable.tf
โ”‚   โ”œโ”€โ”€ _outputs.tf
โ”‚   โ”œโ”€โ”€ cloudfront.tf           # 4 distributions
โ”‚   โ”œโ”€โ”€ acm.tf                  # CloudFront ACM (Virginia)
โ”‚   โ”œโ”€โ”€ log_group.tf            # CDN logs
โ”‚   โ””โ”€โ”€ provider.tf             # Virginia provider
โ”‚
โ”œโ”€โ”€ storage/                    # ๐Ÿ“ฆ S3 buckets
โ”‚   โ”œโ”€โ”€ _variable.tf
โ”‚   โ”œโ”€โ”€ _outputs.tf
โ”‚   โ”œโ”€โ”€ s3.tf                   # 7 buckets + lifecycle
โ”‚   โ”œโ”€โ”€ iam.tf                  # Bucket policies
โ”‚   โ””โ”€โ”€ provider.tf             # Virginia provider
โ”‚
โ”œโ”€โ”€ rds/                        # ๐Ÿ—„๏ธ Aurora MySQL
โ”‚   โ”œโ”€โ”€ _variable.tf
โ”‚   โ”œโ”€โ”€ _outputs.tf
โ”‚   โ”œโ”€โ”€ rds.tf                  # Aurora cluster + instances
โ”‚   โ”œโ”€โ”€ log_group.tf            # RDS log groups
โ”‚   โ””โ”€โ”€ iam.tf                  # RDS monitoring role
โ”‚
โ”œโ”€โ”€ elasticache/                # โšก ElastiCache Valkey
โ”‚   โ”œโ”€โ”€ _variable.tf
โ”‚   โ”œโ”€โ”€ _outputs.tf
โ”‚   โ”œโ”€โ”€ elasticache.tf          # Replication group
โ”‚   โ””โ”€โ”€ log_group.tf            # Cache logs
โ”‚
โ”œโ”€โ”€ memorydb/                   # ๐Ÿ’พ MemoryDB Valkey
โ”‚   โ”œโ”€โ”€ _variable.tf
โ”‚   โ”œโ”€โ”€ _outputs.tf
โ”‚   โ””โ”€โ”€ memorydb.tf             # Cluster + ACL
โ”‚
โ”œโ”€โ”€ documentdb/                 # ๐Ÿ“„ DocumentDB
โ”‚   โ”œโ”€โ”€ _variable.tf
โ”‚   โ”œโ”€โ”€ _outputs.tf
โ”‚   โ”œโ”€โ”€ documentdb.tf           # Cluster + instances
โ”‚   โ””โ”€โ”€ log_group.tf            # DocDB logs
โ”‚
โ”œโ”€โ”€ global_accelerator/         # ๐Ÿš€ Global Accelerator
โ”‚   โ”œโ”€โ”€ _variable.tf
โ”‚   โ”œโ”€โ”€ _outputs.tf
โ”‚   โ””โ”€โ”€ accelerator.tf          # Custom routing accelerator
โ”‚
โ”œโ”€โ”€ lambda/                     # ฮป Lambda functions
โ”‚   โ”œโ”€โ”€ _variable.tf
โ”‚   โ”œโ”€โ”€ _outputs.tf
โ”‚   โ”œโ”€โ”€ lambda_image.tf         # Image/video validators
โ”‚   โ”œโ”€โ”€ lambda_cache.tf         # Cache invalidator
โ”‚   โ”œโ”€โ”€ lambda_ga.tf            # GA port resolver
โ”‚   โ”œโ”€โ”€ lambda_scale.tf         # Node service scaler
โ”‚   โ”œโ”€โ”€ ecr.tf                  # Lambda ECR repository
โ”‚   โ”œโ”€โ”€ sqs.tf                  # Lambda trigger queues
โ”‚   โ”œโ”€โ”€ sns.tf                  # Rekognition topic
โ”‚   โ”œโ”€โ”€ log_group.tf            # Lambda logs
โ”‚   โ””โ”€โ”€ iam.tf                  # Lambda execution roles
โ”‚
โ””โ”€โ”€ app/                        # ๐Ÿ“ฑ ECS applications
    โ”œโ”€โ”€ _variable.tf
    โ”œโ”€โ”€ _outputs.tf
    โ”œโ”€โ”€ ecs_fargate.tf          # Fargate cluster + services
    โ”œโ”€โ”€ ecs_fargate_task.tf     # Fargate task definitions
    โ”œโ”€โ”€ ecs_fargate_autoscale.tf # Auto scaling policies
    โ”œโ”€โ”€ ecs_ec2.tf              # EC2 cluster + capacity
    โ”œโ”€โ”€ ecs_ec2_task.tf         # Node task definitions
    โ”œโ”€โ”€ ecs_ec2_instance.tf     # ASG + launch template
    โ”œโ”€โ”€ ecr.tf                  # Application ECR repos
    โ”œโ”€โ”€ codedeploy.tf           # CodeDeploy app + groups
    โ”œโ”€โ”€ service_discovery.tf    # Cloud Map namespace
    โ”œโ”€โ”€ log_group.tf            # ECS log groups
    โ””โ”€โ”€ iam.tf                  # ECS/CodeDeploy IAM roles

File Naming Conventions

PatternPurposeExample
_variables.tfInput variablescore/_variables.tf
_outputs.tfOutput valuescore/_outputs.tf
_variable.tfSub-module inputsrds/_variable.tf
*.tfResource definitionsvpc.tf, rds.tf
provider.tfProvider configurationsecurity/provider.tf
iam.tfIAM resourcesapp/iam.tf
log_group.tfCloudWatch log groupsrds/log_group.tf

Terragrunt Files

FileLocationPurpose
config.hclenvs/Global backend + provider
common_vars.hclenvs/Shared app_name, region
env_vars.hclenvs/<env>/Environment-specific vars
terragrunt.hclenvs/<env>/core/Stack configuration
terragrunt.hclenvs/shared/*/Shared stack configs

Docker Files

.docker/
โ””โ”€โ”€ aws/
    โ””โ”€โ”€ Dockerfile              # Dev container image
        # Base: amazon/aws-cli:2.33.31
        # + OpenTofu 1.11.5
        # + Terragrunt 0.99.4
        # + crane (container tool)
        # + SSM plugin
        # + MariaDB client

Quick File Location Guide

Looking for...Location
All Make commandsMakefile
Environment variablesenvs/<env>/env_vars.hcl
Core module inputsenvs/<env>/core/terragrunt.hcl
Security groupsmodules/core/network/security_group.tf
ECS servicesmodules/core/app/ecs_fargate.tf
RDS configurationmodules/core/rds/rds.tf
Lambda functionsmodules/core/lambda/lambda_*.tf
IAM rolesmodules/core/app/iam.tf
Backend configenvs/config.hcl