Hands-on AWS tutorials that run entirely on your laptop. No AWS account, no credit card, no credentials, no bill.
Each tutorial uses Floci - an MIT-licensed local cloud
emulator that speaks the real AWS wire protocol on localhost:4566. You write
ordinary aws CLI commands and ordinary boto3 / AWS SDK v3 code. The only
difference from real AWS is a single endpoint override, and every tutorial
points at exactly where that line is.
Start here
irm https://floci.io/install.ps1 | iex
floci start && eval $(floci env)
aws s3 mb s3://hello-floci && aws s3 ls
If that listed your bucket, you are ready.
Tutorials
| # | Topic | Services | Checks | Time |
|---|---|---|---|---|
| 00 | Setup | - | 11 | 20 min |
| 01 | Object storage | S3 | 17 | 50 min |
| 02 | Key-value data | DynamoDB | 16 | 60 min |
| 03 | Serverless functions | Lambda | 15 | 60 min |
| 04 | Queues and pub/sub | SQS, SNS | 21 | 60 min |
| 05 | A full REST API | API Gateway + Lambda + DynamoDB | 23 | 75 min |
| 06 | Identity and secrets | IAM, STS, Secrets Manager | 23 | 70 min |
| 07 | Orchestration | Step Functions, EventBridge | 24 | 70 min |
| 08 | Infrastructure as code | CloudFormation | 26 | 60 min |
Every tutorial has command line steps, the same thing in both boto3 and the Node SDK, three exercises, and an honest account of where the emulator and real AWS part company. 176 checks passing across all nine.
Why local emulation
Learning AWS the normal way means an account, a card on file, and a standing risk of forgetting to tear something down. That friction is the single biggest barrier to actually practising cloud work rather than reading about it.
Floci removes it. It starts in roughly 24ms, idles at about 13 MiB, accepts any credentials, and covers 68 AWS services. Lambda, RDS, EC2, ECS and OpenSearch are not emulated at all - Floci launches real engines in Docker - so those behave very close to production.
The trade is fidelity. Emulation is not the real thing, and pretending otherwise would make these tutorials actively harmful. So every tutorial ends with a “How this differs from real AWS” section, populated from a coverage matrix that records what was tested by hand rather than what the vendor documentation claims.
What the testing actually found
Writing those verification scripts turned up real differences that are not documented anywhere. Each one is now written into the relevant tutorial and asserted in its test, so a future Floci release that changes the behaviour will break the build rather than quietly make the tutorial wrong.
| Service | What differs | Why it matters |
|---|---|---|
| S3 | Overwriting an object that predates versioning destroys its null version. Real AWS keeps it. |
Silent data loss, with no error raised. |
| DynamoDB | Secondary indexes update instantly. Real AWS indexes are eventually consistent. | Write-then-immediately-query works here and fails intermittently in production. |
| SQS | Standard queues never reordered or duplicated a message. Real AWS permits both. | A consumer that is not idempotent passes here and fails in production. |
| Lambda | The IAM execution role is not validated at all. | On real AWS a role missing log permissions gives you a function that runs but writes nothing. |
| IAM | Policies are stored and correctly simulated, but never enforced. An explicit Deny is ignored, and invented credentials work. |
The largest gap in the series. A security control that looks present and does nothing. |
| KMS | encrypt does not encrypt. The plaintext is recoverable from the ciphertext with no key. |
Anything you put through KMS locally is readable by anyone holding the output. |
How the tutorials are built
Every tutorial ships a verify.sh that runs its own documented commands
headless and exits non-zero if any of them stop working. Continuous integration
runs all of them on every push and once a week, so a new Floci release cannot
quietly break a tutorial without anyone noticing.
Source: github.com/Sreekant13/floci-aws-tutorials
Licensed MIT. Use them, fork them, teach from them.
Before you go
You are about to spend a few hours breaking a cloud that cannot bill you. That
is a genuinely rare position to be in, so please misuse it. Delete the thing you
were told not to delete. Feed the function garbage. Run a verify.sh and try to
make it fail. The worst outcome is that you type floci stop and everything you
did evaporates for free.
Nothing here has a credit card attached, so there is no such thing as an expensive mistake. Go and make some cheap ones.
If any of this was useful, a star takes one click and helps the next student find it. If you know somebody who has been putting off learning AWS because of the credit card form, send them this way.
Good luck, and enjoy the low floor.
Say hello
Built by Sreekant Baheti.
- Portfolio: sreekantbaheti.com
- GitHub: @Sreekant13
Found a typo, a broken command, or a place where Floci does something none of these pages warn you about? Open an issue. Turning up a new divergence is the single most valuable thing you can contribute here, and I will credit you for it on the page you break.
Built as a research assistant project under Dr. Saty Raghavachary, Computer Science Department, University of Southern California.