AI LUKE.
EN
Build apps · Guide & explainer

Run AWS Services on Your Laptop with AWS Emulator

Try AWS locally by giving a Python app somewhere to store an image, a queue to ask for a resize, and a table to track the result. The download contains the sample code, three original images and the six JPEG previews from my Mac.

Luke Byrne
Luke ByrneAI Luke · Luke Byrne | AI & Tech
Video published 13 Nov 2026· 5 min read

Video in English

Watch on YouTube ↗

Build the emulator image

Install Docker and open the AWS Docker guide below. Copy its Dockerfile into an empty folder. On Apple silicon the RPM filename ends in aarch64; on an Intel or AMD machine choose x86_64. The download includes the ARM recipe used in the video.

  1. From the folder containing the Dockerfile run docker build -t aws-emulator .
  2. Start the container with the macOS/Linux or Windows command from the Docker guide. Keep port 9297 bound to 127.0.0.1. Leave this terminal running and open another one for your app.

Connect Python to the local services

With the default port, the emulator generates emulator_credentials and ca.pem under .aws/emulator/9297 in your home directory. In the downloaded README, copy the three environment variables for this shell and run the health check. A healthy reply verifies that Python can use the same endpoint and CA.

  1. Create a Python 3 virtual environment and install boto3 and Pillow. The example passes the local endpoint and certificate to the clients it creates.
  2. From the unzipped project folder, run python3 spare-computer/preview.py run/outputs/03-grid.png --out gallery-result. Open gallery-result/03-grid.jpg; the 1920 × 1080 original yields a 320 × 180 JPEG.

Follow the two-worker gallery

The batch example starts with Orbit, Wave and Grid. S3 holds each original, SQS carries the job name and object key, and DynamoDB records the worker and the finished keys. The README includes the two-worker Docker command and six reference JPEGs.

  1. Look at the 480 × 270 card and the 160 × 90 list version for each image. In my run worker B took Orbit while worker A was processing Wave.
  2. Inspect the worker result and queue readback in the demo. Job assignment can differ between runs.

Give another computer just the resize

The downloaded renderer reads a PNG and writes a JPEG. In the SSH version, the coordinator reads SQS and S3 locally, sends only the image to a machine you control, then stores the returned JPEG. The desktop needs Python and Pillow.

  1. Set up normal SSH access to your own machine and verify its host key. Copy ssh-worker/resize.py to preview-resize.py in your home directory there.
  2. Run the same preview command with a fresh output folder and --ssh-host followed by your saved host alias. In my test, two containers on one Mac returned exactly the same Grid JPEG as the local renderer.

The takeaway

EC2 can report an instance as running inside the emulator. Image processing starts when you launch a worker. Files you download to your computer survive stopping the emulator.

About this article and its sources

This is a development setup. Stopping AWS Emulator clears the service data held in memory. The video used one physical Mac; a separate desktop and a speed comparison were outside the test.

Original YouTube source ↗