Examples of functionless (a.k.a. Lambda-less) integration pattern, where a direct integration between two AWS services is configured instead of using custom code in an intermediary Lambda function, based on Step Functions, AppSync, EventBridge.
while integrating with other AWS services, chances are that it may be unnecessary. Use serverless functions to transform data, not to transport data between services.
be handled by variety of services ๏ No need for individual functions Event-Driven Everything ๏ AWS provides variety of managed services ๏ Play central role in functionless model ๏ Abstract away much of operational complexity Managed Services ๏ Workflows streamlined through managed services ๏ Simplifying complex business processes ๏ Simpler codebase Streamlined Workflows Key characteristics of functionless model
Validate document type is LOVE_LETTER 3. Generate new Letter ID (UUID v4) 4. Add new items to DynamoDB global tables 5. Create formatted event with Letter data 6. Send combined events to local Event Bus 7. Event Bus emits events to remote Event Bus Dispatch Letters (Mario)
NEW and it’s a LOVE_LETTER 3. Get reaction emoji from Secret Manager 4. Add verification parameters to Letter data 5. Update records in DynamoDB global tables 6. Send event to local Event Bus for logging Collect Letters (Peach)
complex workflows ๏ Easier to code in one of supported languages Limitations of ASL ๏ Some services require transforming JSON data to consumable format ๏ Need for data validation ๏ Example: DynamoDB Data Marshalling ๏ Bundling of external libraries into Lambda functions or layers ๏ Example: Prisma Client for connecting to RDS databases External Libraries Does functionless model make any sense?
applications AWS Well-Architected: Security Pillar Cost Optimisation Pilar AWS Well-Architected: Reliability Pillar Performance Efficiency Pilar AWS Well-Architected: Reliability Pillar Performance Efficiency Pilar Functions should be compact, short, and single purpose. Each function taking care of speci fi c task. Orchestrate your application with state machines, not functions. Use AWS SDK integrations with AWS services. Use events for triggering asynchronous, just-in-time processing. Design for failure and duplicates.