PPrepLearn
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

WeekDaysAWS FocusGo Backend Integration
Week 1 — Storage & Messaging1–7S3, SQS, SNS, DynamoDB, IAMFile uploads, job queues, event fanout
Week 2 — Compute & APIs8–14Lambda, API Gateway, ECS, ECRServerless Go functions, containerised services
Week 3 — Data & Streams15–21RDS, ElastiCache, Kinesis, MSKPostgres + Redis + Kafka on AWS
Week 4 — Infrastructure & Production22–30CloudFormation, EKS, Step Functions, EventBridge, CodeBuild, monitoringFull 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

ServiceWeekFloci support
S31✅ Full REST XML
SQS1✅ FIFO + Standard
SNS1✅ Full
DynamoDB + Streams1✅ Full
IAM1✅ 68+ ops
Lambda2✅ Docker native
API Gateway v1 + v22✅ WebSocket
ECS2✅ Real Docker
ECR2✅ OCI registry
RDS (Postgres)3✅ Real engine
ElastiCache (Redis)3✅ Real Redis
Kinesis3✅ Full
MSK (Kafka)3✅ Real Kafka
Secrets Manager3✅ Full
CloudFormation4✅ Stacks
EKS4✅ Real k3s
Step Functions4✅ ASL
EventBridge4✅ Rules
CodeBuild4✅ Docker native
CloudWatch4✅ Logs + Metrics

📅 AWS Daily Tracker

Related