Skip to content

docs(deploy): add genericized AWS Fargate reference deployment - #114

Merged
gmoon merged 1 commit into
mainfrom
deploy/aws-ecs-reference
Jul 14, 2026
Merged

docs(deploy): add genericized AWS Fargate reference deployment#114
gmoon merged 1 commit into
mainfrom
deploy/aws-ecs-reference

Conversation

@gmoon

@gmoon gmoon commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Adds deploy/aws-ecs/ — a parameterized CloudFormation stack that runs the forkzero/s3proxy image on AWS Fargate behind an ALB. This is the deployment story the README was missing (it stopped at docker run + "credentials come from the IAM task role" but never showed the deploy).

What it provisions

ALB (+ SG) → listener → target group health-checked on /health → ECS cluster → Fargate service + task definition → task role scoped to s3:GetObject on your bucket only → CloudWatch logs → CPU target-tracking autoscaling.

Genericized — nothing account-specific

Derived from the account-specific stack that lived in gmoon/s3proxy/examples/aws-ecs/, with every hardcoded value removed:

  • VPC, subnets, bucket, image, sizing → parameters.
  • HTTPS is optional: supply an ACM CertificateArn → HTTPS/443; otherwise HTTP/80. Implemented as a single listener shaped by !If (avoids a conditional-DependsOn).
  • Route 53 alias is optional (DomainName + HostedZoneName).
  • Named IAM roles dropped so multiple stacks can coexist; awslogs-region!Ref AWS::Region; ARNs use !Ref AWS::Partition.

Verification

cfn-lint passes clean (it caught, and I fixed, the conditional-DependsOn on the two-listener first draft).

Docs

  • deploy/aws-ecs/README.md — deploy runbook (params table, HTTPS/DNS setup, a "try it against s3proxy-public" walkthrough, update/teardown).
  • Main README gets a Deploy on AWS section linking to it.

Companion doc/cleanup PR in gmoon/s3proxy adds a matching Deployment section and removes unrelated OTEL sample cruft from its examples.

🤖 Generated with Claude Code

Adds deploy/aws-ecs/ — a parameterized CloudFormation stack that runs the
forkzero/s3proxy image on Fargate behind an ALB, with a task role scoped to
s3:GetObject on the named bucket, /health checks, and CPU autoscaling.

Nothing account-specific: VPC, subnets, and bucket are parameters; HTTPS
(ACM cert) and a Route 53 alias are optional (single listener shaped by an
`!If` on whether a certificate is supplied, HTTP/80 otherwise). Derived from
the account-specific stack that previously lived in gmoon/s3proxy examples,
with all hardcoded VPC/subnet/domain/region values removed and named IAM
roles dropped so multiple stacks can coexist.

Passes cfn-lint clean. README gets a "Deploy on AWS" section pointing at it.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@gmoon
gmoon merged commit c9701c8 into main Jul 14, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant