An automated, serverless application that monitors the Counter-Strike 2 update feed and sends a formatted email notification whenever Valve releases a patch.
The full pipeline runs on a schedule every 30 minutes:
- Trigger — AWS EventBridge fires the Lambda function on a cron schedule.
- Fetch — The function fetches the CS2 RSS feed (XML) using Python's
urlliband parses it withxml.etree.ElementTreeto extract the latest update's title, date, GUID, and raw HTML description. - Dedup check — The GUID of the latest update is compared against the last-seen GUID stored in a DynamoDB table (
CS2-update-tracker). If they match, execution stops — no duplicate emails. - Parse — If the update is new, a custom
HTMLParsersubclass (UpdateParser) converts the raw HTML patch notes into clean, readable plain text, turning<li>elements into bullet points and preserving section headers. - Email — The formatted patch notes are sent as a plain-text email via AWS SES with the subject line
CS2 Update - <date>. - Save — The new GUID is written back to DynamoDB so future runs know this update has already been processed.
| Layer | Technology |
|---|---|
| Runtime | Python 3.12 |
| Compute | AWS Lambda |
| Scheduler | AWS EventBridge (every 30 minutes) |
| State | AWS DynamoDB |
| AWS SES | |
| Feed source | XML RSS via urllib + xml.etree.ElementTree |
| HTML parsing | Custom HTMLParser subclass |
Prerequisites: Python 3.12, pip, AWS credentials configured locally (for DynamoDB and SES access)
1. Clone the repository
git clone https://github.com/TrevorMcCormack/CS2-Update-Notifier.git
cd "CS2-Update-Notifier"2. Install dependencies
pip install -r requirements.txt3. Create a .env file in the project root:
EMAIL_ADDRESS=your_email@gmail.com
4. Run locally
python main.pyThe script will check the RSS feed, compare against DynamoDB, and send an email if a new update is found.
Fully deployed and running. The Lambda function is live on AWS, triggered automatically by EventBridge every 30 minutes. DynamoDB persists state between invocations to guarantee exactly-once delivery per update.