I earned my AWS Solutions Architect Certification in Feb 2026 (🎊) but Like Smash Mouth said, "So much to do...so much to see."
I've used Lambdas that, when an object was uploaded to a bucket, sent a notification to Eventbridge, and then sent me a text and email via SNS. Now, thanks to the free project on Adrian Cantrill's GitHub, I'm going to make a small image processing eventflow.
(Emoji use is for fun; Everything here written by a human being.)
What's Happening:
Images uploaded to an S3 bucket are made into 5 thumbnail variations thanks to the power of Lambdas and inserted into an output bucket.
Business Use case;
If you want to get quick thumbnails. Maybe this can be scaled out to do file conversion, like .txt to .pdf.
Materials:
2 S3 buckets - one for input, one for processed output.
Lambda
An image!
Step 1: Bucket Creation 🪣
I made one bucket (runtcpip-source, for images to go in) and copied the settings from it to make the second bucket (runtcpip-processed, for images to go out).
Public Access is blocked, and it is managed with Server-side encryption. I could have likely made them with Cloud Formation or Terraform but with such a simple setup, way quicker to use the GUI today.
Step 2: Making the Lambda Role 🔗
This policy gives Lambda the permission to control runtcpip-source and runtcpip-processed with read, write, delete, and modify permissions but now we have to put it on the Lambda.
Step 3 - Making the Lambda
I select the latest Python runtime available. This is a mistake. There is a code to upload to do the pixellation. With the code installed, this lambda now has the knowledge to work its magic on our uploaded images.
Step 4 - Configuring the Trigger for the Lambda
Make sure the correct bucket name is set to not incur costs of an eternally - running Lambda. Sure you have a lot of free ones, but don't take that chance.
I realize I misnamed my bucket and changed the code in the IAM role. I skimmed the instructions again to check if I needed to do so elsewhere, and no.
With this step, I attach the source and output buckets to the lambda so when action happens in the bucket, the lambda is triggered.And I check again to avoid Recursive Invocation (Lambda doesn't stop)
Step 5 - Run the event.
It doesn't work, and Amazon Q says it's because of Runtime incompatibility. The versions of Python are different (the instructions say 3.9). So I return to Step 3 and remake the function. The earliest version is 3.10. This still does not work.
10 minutes after cleaning up, I realize I could have poked in the code provided to change the runtime, but that shouldn't make a difference, right?
I'm sharing this -- What do you think? Have you been able to replicate this?
Comments
Post a Comment