Progress · 0/4 sections
☁️ ☁️ 30-Day AWS + Floci Roadmap — Go Backend Engineer
4 min read · Notion
☁️ Learn every major AWS service hands-on using Floci — a free, zero-auth local AWS emulator. No cloud bills. No credential setup. Real AWS SDK calls. Aligned with your Go backend stack.
📌 What is Floci?
Floci (floci.io) is a drop-in replacement for LocalStack — but MIT licensed, no auth token, starts in 24ms, uses 13 MiB idle memory. Every AWS service call you make in this roadmap runs locally on your machine against a real emulator.
# One command. All 45 AWS services on :4566
docker run --rm -p 4566:4566 \
-v /var/run/docker.sock:/var/run/docker.sock \
floci/floci:latest
# Point your AWS CLI + Go SDK at Floci
export AWS_ENDPOINT_URL=http://localhost:4566
export AWS_DEFAULT_REGION=us-east-1
export AWS_ACCESS_KEY_ID=test
export AWS_SECRET_ACCESS_KEY=test🗺️ 30-Day Plan at a glance
| Week | Days | AWS Focus | Go Backend Integration |
|---|---|---|---|
| Week 1 — Storage & Messaging | 1–7 | S3, SQS, SNS, DynamoDB, IAM | File uploads, job queues, event fanout |
| Week 2 — Compute & APIs | 8–14 | Lambda, API Gateway, ECS, ECR | Serverless Go functions, containerised services |
| Week 3 — Data & Streams | 15–21 | RDS, ElastiCache, Kinesis, MSK | Postgres + Redis + Kafka on AWS |
| Week 4 — Infrastructure & Production | 22–30 | CloudFormation, EKS, Step Functions, EventBridge, CodeBuild, monitoring | Full production-grade AWS stack |
⚙️ Your Go + Floci dev setup
# docker-compose.yml — add this to every project
services:
floci:
image: floci/floci:latest
ports:
- "4566:4566"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
FLOCI_STORAGE_MODE: hybrid
app:
build: .
environment:
AWS_ENDPOINT_URL: http://floci:4566
AWS_DEFAULT_REGION: us-east-1
AWS_ACCESS_KEY_ID: test
AWS_SECRET_ACCESS_KEY: test
depends_on:
- floci// aws.go — Go SDK v2 client configured for Floci
package aws
import (
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/aws"
"os"
)
func NewConfig(ctx context.Context) (aws.Config, error) {
customResolver := aws.EndpointResolverWithOptionsFunc(
func(service, region string, opts ...interface{}) (aws.Endpoint, error) {
if endpoint := os.Getenv("AWS_ENDPOINT_URL"); endpoint != "" {
return aws.Endpoint{
URL: endpoint,
HostnameImmutable: true,
}, nil
}
return aws.Endpoint{}, &aws.EndpointNotFoundError{}
},
)
return config.LoadDefaultConfig(ctx,
config.WithEndpointResolverWithOptions(customResolver),
)
}📊 My progress
- Current day: Day 1 of 30
- Services mastered: 0 / 20
- Go projects shipped: 0 / 8
- Floci running locally: ❌ Not started
🔖 Phase pages
- 🗃️ Week 1 — Storage & Messaging (Days 1–7)
- ⚡ Week 2 — Compute & APIs (Days 8–14)
- 📊 Week 3 — Data & Streams (Days 15–21)
- 🏗️ Week 4 — Infrastructure & Production (Days 22–30)
📘 AWS services covered
| Service | Week | Floci support |
|---|---|---|
| S3 | 1 | ✅ Full REST XML |
| SQS | 1 | ✅ FIFO + Standard |
| SNS | 1 | ✅ Full |
| DynamoDB + Streams | 1 | ✅ Full |
| IAM | 1 | ✅ 68+ ops |
| Lambda | 2 | ✅ Docker native |
| API Gateway v1 + v2 | 2 | ✅ WebSocket |
| ECS | 2 | ✅ Real Docker |
| ECR | 2 | ✅ OCI registry |
| RDS (Postgres) | 3 | ✅ Real engine |
| ElastiCache (Redis) | 3 | ✅ Real Redis |
| Kinesis | 3 | ✅ Full |
| MSK (Kafka) | 3 | ✅ Real Kafka |
| Secrets Manager | 3 | ✅ Full |
| CloudFormation | 4 | ✅ Stacks |
| EKS | 4 | ✅ Real k3s |
| Step Functions | 4 | ✅ ASL |
| EventBridge | 4 | ✅ Rules |
| CodeBuild | 4 | ✅ Docker native |
| CloudWatch | 4 | ✅ Logs + Metrics |
📅 AWS Daily Tracker