Skip to main content

A Serverless Application on AWS

 

By Morgan Lucas, From Adrian Cantrill’s More Than Certified / GitHub. Find the Notion Page HERE.

Pictured: Someone who would get use out of the app.

Technologies used: AWS, Lambda, Step Functions, API Gateway, S3, SNS & SES.

What Is This?:

A small app for pets to both you for cuddles that will send an alert to a phone and an email address. Both points of contact must be opted into first.

Stage 1

  • I register 4 objects - Two email addresses (sending messages, receiving messages) and 2 phone numbers (one to receive SMS [text messages], and an origination number.

Stage 2

  • I used CloudFormation (again, our old friend) to create an IAM role that email_reminder_lambda uses to interact with other AWS services. Really beats searching through the policies!
  • In the Lambda console, I create a function that uses Python 3.9 rundown and use the LambdaRole created via CloudFormation. There are multiple entries called some variation of LambdaRole, so look for the one with SES/SNS and CloudWatch roles.
  • The function in question needs the email address added, so it goes from

FROM_EMAIL_ADDRESS = 'REPLACE_ME

To

FROM_EMAIL_ADDRESS = 'morganlucas@runtcpip.com

Stage 3

  • Making and configuring the state machine through a CloudFormation stack yet again. It has the ability to invoke the email lambda function to send emails, logging permissions and SNS sending abilities.

  • The State machine will be written in Amazon States Language, which looks like JSON to me.

  • Here is the workflow and my interpretation; The actual workthrough is in the instructions.



Start: The function exists

Timer I’m not sure of yet

ChoiceState is obvious with 4 choices - Email only SMS only, Both, or neither. When one of the message options are chosen, it moves on to pushing the message and ends. NoChoice ends the function.

  • The ARN created in Step 2 is put into EMAIL_LAMBDA_ARN
  • Logging is enabled for all events
  • The State Machine is created and given an ARN.

Stage 4

  • This creates the API gateway and Lambda function to act as the front end for the application.
  • I make yet another function in the Lambda console using Python 3.9 as the runtime that supports the API Gateway, which is created now, alongside the API Gateway, API, and Method.
  • The API has the Regional Endpoint and is deployed in the current region.
  • For more control over the information, I don’t click Configure as proxy resource
  • Enable API Gateway CORS eases restrictions on things calling our APIs with different DNS names.
  • The resource (petcuddleotron) is given the POST method to work with api_lambda.
  • Lambda Proxy Integration is checked.
  • The API is deployed and I get an invoke URL.

Stage 5

  • Creating an S3 bucket to hold the visuals of the webpage that allows public access.
  • Static hosting is placed upon the bucket , and I note how straightforward it is on AWS. I’m given a bucket website endpoint.
  • The files are uploaded to the Objects portion of the bucket. Note that I had to click and drag the files for the webpage to appear; Uploading the entire folder did not work, nor did using the upload dialog.
  • Testing the app with information; I use my receiving email set up in Step 1 (It’s not this);


My dog is very enthusiastic about chicken.

  • In Step Functions, under the petcuddleotron app and Executions, I can see it running!

It did fail; It doesn’t seem to like my email address, despite it being the confirmed one. Every failure involves my email being involved.

When I hit SMS only, it does succeed, but I don’t receive the message until I put the 1 in front of my phone number; I had forgotten.



And now my dog can bother me for attention (If she knew how to use technology);

 



Comments

Popular posts from this blog

Making KPI Dashboards with PowerBI

 While this is the free tier, I cannot share or collaborate with others, nor can I publish content to other people's workspaces, but they will not stop me from screenshooting and recording these self-taught adventures,so! I'm doing this because I idly searched "Mattel careers" and "Information Technology", and seeing a bulletpoint saying the following: Analytical and reporting skills such as creating dashboards and establishing KPIs such as experience with PowerBI, Cognos, Tableau, and Google Data Lake/AWS is preferred And thought "Well, I've used Tableau, and I've heard about PowerBI,  even if its in-demandness is questionable , so how similar is it? And can I write about it?"  First, PowerBI (PIB) does have a downloadable, local version, but apparently Windows-only. I could download the .exe but I couldn't run it / drag it to applications on my MacBook.  Not a problem, we'll use the online SaaS version, and a dataset found here, ...

Recon and SSID - Mapping With VisiWave Site Survey

My laptop is refurbished. I've written about how there are a few ... quirks. Being a technology professional, I felt okay with adopting an older machine, knowing I had the skill to fix moderate issues. From dying drivers to monitor massacres, I've ID'd, solved, and documented a lot of issues.  The newest one was my Wi-Fi adapter dropping the connection to a specific extender. While troubleshooting, I was curious about doing recon of WiFi networks and broadcasting devices anyway. That issue? A power setting. It was so determined to save power, it would disconnect. The extender is also flirting with the older end of 6 years old.  The battery needs to be replaced, but that's new to me. As a Windows laptop, there are a plethora of options to pick. How do you decide which one is safest?  I am suddenly concerned about this despite having 3 unofficial, 15$ Macbook Air chargers from eBay, and no explosions. But let's move onto the Site Survey - Where can I find the stronges...

S3 Event Notifications Using Lambda

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...