An AWS Lambda function that scans an Amazon S3 bucket and generates an RSS feed for podcast distribution.
This tool was written specifically for Apple Podcasts, based off of official guidelines, but is extensible to other platforms.
Update (11/22/2024): Further research on the cost-benefit of self-hosting podcasts vs. using a dedicated hosting platform made me realise that it's better to go with the latter when prospective scalability/outsized bandwidth is concerned.
This project is therefore abandoned, but forks are welcome for those who still wish to self-host.
Relevant links: How much does it cost to host a podcast on Amazon AWS? Is anyone using Amazon S3 to host a podcast?
In the AWS console, initialise an AWS S3 bucket where you'll save your podcast episodes' audio file and its corresponding episode-specific description file (in HTML).
For this function to execute successfully, the files need to be saved in the following format:
root of s3 bucket:
<Date_Of_Publication>-<Title_Of_Episode>.mp3
<Date_Of_Publication>-<Title_Of_Episode>.html
For example, this could look like:
root
20241117-Episode 1.mp3
20241117-Episode 1.html
Note: Apple Podcasts supports the MP3 file format, as well as M4A, MOV, MP4, M4V, and PDF.
In the AWS console, initialise a Lambda function and set its trigger to point to the above-mentioned S3 bucket's PUT events.
If the trigger is set up correctly, you'll see the below diagram in the Lambda console:
Run npm run build
in the root directory, then copy and paste the resulting /dist
folder (or .zip file) to the Lambda console.