Serverless Podcast Feed Maintainer and Hosting on AWS

I just finished building a serverless system on AWS that hosts a podcast’s media files and rss feed, and provides a web interface for managing the rss feed.

This is a cost-effective way to host a podcast, and a fun way to learn a bunch of AWS technologies.

Overview

Here are the elements of the system:

  • The media files and rss feed file are stored in an S3 bucket that is configured for static site hosting. The bucket also contains the html, css, and javascript for the feed maintainer app.
  • Podcast and episode info is stored in a DynamoDB table.
  • Lambda functions insert episode info into DynamoDB, create presigned URLs for uploading media files, and create the rss feed file whenever episode info is updated.
  • API Gateway allows the javascript to PUT episode info to a Lambda function.
  • CloudFront allows the static S3 site to be served via https, and redirects http requests to https (not pictured)
  • Route53 connects a custom domain name to S3 and CloudFront

Operation

  1. The system admin loads podcast info (title, author, etc) into an “Episode 0” item in the DynamoDB table.
  2. The podcast maintainer submits episode information via the html form.
  3. The podcast-poster Lambda function adds the episode info to the DynamoDB table and returns a presigned URL that allows uploading the media file to S3.
  4. The S3 upload triggers a Lambda function that updates the rss feed.

More Info…

If there’s interest, I’ll outline the steps for setting up the system. If you want to look at the html, javascript, and lambda functions, refer to these github repositories:

Leave a Reply

Your email address will not be published. Required fields are marked *