Skip to content

eddmann/step-function-secret-santa

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Step Function Secret Santa

This year (2022) I decided to over-engineer the problem of allocating Secret Santa's for my family, by building a AWS Step Function workflow which uses every available Lambda runtime (managed and custom runtime).

For the custom runtime provided.al2 I explored the ability of using my own language which I have been developing throughout the year.

Getting Started

make package
make deploy AWS_ACCESS_KEY_ID=ID AWS_SECRET_ACCESS_KEY=KEY

The Workflow

Function Purpose Language
Parse Participants Converts the CSV input supplied by the clients API Gateway request into a JSON form used throughout the workflow. C# dotnet6
Validate Participants Ensures that all supplied participant data is present and valid. JavaScript nodejs16.x
Allocate Allocates each participant to a random recipient. santa-lang provided.al2
Validate Allocations Ensures that the supplied allocations are valid, taking into consideration participant exclusions. Java java11
Store Allocations Stores the allocations within an plain-text file S3 object for review. Go go1.x
Notify Email Sends an email (via Mailgun) to the given participant with their allocated recipient name in. Python python3.9
Notify SMS Sends an SMS (via Twilio) to the given participant with their allocated recipient name in. Ruby ruby2.7

Other Years

Interested in seeing how I over-engineered the problem of allocating Secret Santa's in other years?