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.
Here are the elements of the system:
- 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.
- 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
- The system admin loads podcast info (title, author, etc) into an “Episode 0” item in the DynamoDB table.
- The podcast maintainer submits episode information via the html form.
- 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.
- The S3 upload triggers a Lambda function that updates the rss feed.