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.
make package
make deploy AWS_ACCESS_KEY_ID=ID AWS_SECRET_ACCESS_KEY=KEY
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 |
Interested in seeing how I over-engineered the problem of allocating Secret Santa's in other years?
- 2020 - Clojure Secret Santa
- 2021 - Pico Secret Santa
- 2022 - Step Function Secret Santa