A Serverless Application on AWS

Morgan Lucas
4 min readJun 6, 2022

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 yet, I think it’s a delay for something.

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.

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);

Originally published at https://www.runtcpip.com on June 6, 2022. Buy Me A Coffee and help pay my health insurance premium.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

No responses yet

Write a response