# rondrae/strapi-ecs architecture

> Architecture diagram of the GitHub repository rondrae/strapi-ecs, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/rondrae/strapi-ecs
- Repository: https://github.com/rondrae/strapi-ecs

## Overview

This repository defines AWS infrastructure for an ECS Fargate service reached through a public load balancer, with Aurora PostgreSQL, S3, logging, and IAM support. The documented workflow is to apply the Terraform configuration, run tasks privately, and serve their HTTP endpoint through the ALB; outputs expose service and storage endpoints. The README also documents optional RDS Proxy and an ECR repository. Source excerpts were unavailable, so relationships here are limited to those stated in the README and file names.

Main entry points: [`ecs.tf`](https://github.com/rondrae/strapi-ecs/blob/main/ecs.tf) (ECS Fargate service), [`aurora.tf`](https://github.com/rondrae/strapi-ecs/blob/main/aurora.tf) (Aurora PostgreSQL), [`outputs.tf`](https://github.com/rondrae/strapi-ecs/blob/main/outputs.tf) (Infrastructure outputs), [`alb.tf`](https://github.com/rondrae/strapi-ecs/blob/main/alb.tf) (Application Load Balancer)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Inputs and entry"]
  node_inputs["Terraform inputs<br/>[variables.tf]"]
  node_provider["AWS provider setup<br/>[main.tf]"]
  node_alb["Application Load Balancer<br/>[alb.tf]"]
  node_outputs["Infrastructure outputs<br/>[outputs.tf]"]
end

subgraph group_compute["Service runtime"]
  node_ecs["ECS Fargate service<br/>[ecs.tf]"]
  node_ecr["Container repository<br/>[ecr.tf]"]
end

subgraph group_data["Data services"]
  node_aurora[("Aurora PostgreSQL<br/>[aurora.tf]")]
  node_proxy["RDS Proxy<br/>[aurora.tf]"]
  node_s3[("Private S3 bucket<br/>[s3.tf]")]
end

subgraph group_security["Access and operations"]
  node_iam["ECS IAM roles<br/>[iam.tf]"]
  node_secrets["Strapi secrets<br/>[strapi_secrets.tf]"]
  node_endpoints["Network endpoints<br/>[endpoints.tf]"]
end

node_operator(("Infrastructure operator"))

node_operator -->|"applies configuration"| node_provider
node_inputs -->|"configures"| node_provider
node_alb -->|"routes HTTP traffic"| node_ecs
node_ecs -.->|"pulls image"| node_ecr
node_ecs -->|"uses roles"| node_iam
node_ecs -.->|"connects to database"| node_aurora
node_proxy -.->|"proxies connections"| node_aurora
node_alb -->|"exposes DNS"| node_outputs
node_s3 -->|"exposes bucket"| node_outputs
node_aurora -->|"exposes endpoints"| node_outputs

click node_inputs "https://github.com/rondrae/strapi-ecs/blob/main/variables.tf"
click node_provider "https://github.com/rondrae/strapi-ecs/blob/main/main.tf"
click node_alb "https://github.com/rondrae/strapi-ecs/blob/main/alb.tf"
click node_outputs "https://github.com/rondrae/strapi-ecs/blob/main/outputs.tf"
click node_ecs "https://github.com/rondrae/strapi-ecs/blob/main/ecs.tf"
click node_ecr "https://github.com/rondrae/strapi-ecs/blob/main/ecr.tf"
click node_aurora "https://github.com/rondrae/strapi-ecs/blob/main/aurora.tf"
click node_proxy "https://github.com/rondrae/strapi-ecs/blob/main/aurora.tf"
click node_s3 "https://github.com/rondrae/strapi-ecs/blob/main/s3.tf"
click node_iam "https://github.com/rondrae/strapi-ecs/blob/main/iam.tf"
click node_secrets "https://github.com/rondrae/strapi-ecs/blob/main/strapi_secrets.tf"
click node_endpoints "https://github.com/rondrae/strapi-ecs/blob/main/endpoints.tf"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_inputs,node_provider,node_alb,node_outputs toneBlue
class node_ecs,node_ecr toneAmber
class node_aurora,node_proxy,node_s3 toneMint
class node_iam,node_secrets,node_endpoints toneRose
class node_operator toneIndigo
```

## Components

### Inputs and entry

- [Terraform inputs](https://github.com/rondrae/strapi-ecs/blob/main/variables.tf): `variables.tf`
- [AWS provider setup](https://github.com/rondrae/strapi-ecs/blob/main/main.tf): `main.tf`
- [Application Load Balancer](https://github.com/rondrae/strapi-ecs/blob/main/alb.tf): `alb.tf`
- [Infrastructure outputs](https://github.com/rondrae/strapi-ecs/blob/main/outputs.tf): `outputs.tf`

### Service runtime

- [ECS Fargate service](https://github.com/rondrae/strapi-ecs/blob/main/ecs.tf): `ecs.tf`
- [Container repository](https://github.com/rondrae/strapi-ecs/blob/main/ecr.tf): `ecr.tf`

### Data services

- [Aurora PostgreSQL](https://github.com/rondrae/strapi-ecs/blob/main/aurora.tf): `aurora.tf`
- [RDS Proxy](https://github.com/rondrae/strapi-ecs/blob/main/aurora.tf): `aurora.tf`
- [Private S3 bucket](https://github.com/rondrae/strapi-ecs/blob/main/s3.tf): `s3.tf`

### Access and operations

- [ECS IAM roles](https://github.com/rondrae/strapi-ecs/blob/main/iam.tf): `iam.tf`
- [Strapi secrets](https://github.com/rondrae/strapi-ecs/blob/main/strapi_secrets.tf): `strapi_secrets.tf`
- [Network endpoints](https://github.com/rondrae/strapi-ecs/blob/main/endpoints.tf): `endpoints.tf`

### Other components

- **Infrastructure operator**

## Connections

- Infrastructure operator → AWS provider setup: applies configuration
- Terraform inputs → AWS provider setup: configures
- Application Load Balancer → ECS Fargate service: routes HTTP traffic
- ECS Fargate service → Container repository: pulls image
- ECS Fargate service → ECS IAM roles: uses roles
- ECS Fargate service → Aurora PostgreSQL: connects to database
- RDS Proxy → Aurora PostgreSQL: proxies connections
- Application Load Balancer → Infrastructure outputs: exposes DNS
- Private S3 bucket → Infrastructure outputs: exposes bucket
- Aurora PostgreSQL → Infrastructure outputs: exposes endpoints
