Skip to content

feat: explore Lambda extensions framework package #238

@j-d-ha

Description

@j-d-ha

Overview

Explore adding a new package to the MinimalLambda ecosystem that provides a framework for writing AWS Lambda extensions in .NET.

Background

AWS Lambda extensions enable developers to augment Lambda functions with additional capabilities such as monitoring, observability, security, and governance. Extensions run as separate processes alongside the Lambda function and can hook into the Lambda lifecycle.

Proposed Exploration

Investigate creating a MinimalLambda.Extensions package that would:

  1. Provide a .NET framework for building Lambda extensions

    • Simplify the extension development process
    • Handle the Extensions API lifecycle management
    • Offer strongly-typed interfaces for extension hooks
  2. Support extension lifecycle events

    • INIT phase hooks
    • INVOKE phase hooks
    • SHUTDOWN phase hooks
  3. Abstract the Extensions API complexity

    • HTTP communication with Lambda Extensions API
    • Registration and event polling
    • Error handling and logging
  4. Align with MinimalLambda design philosophy

    • Minimal boilerplate
    • Strongly-typed interfaces
    • Dependency injection support
    • Easy to test

Reference Material

Research Questions

  • What are the common patterns in existing .NET Lambda extensions?
  • How would this integrate with the existing MinimalLambda packages?
  • What API design would provide the best developer experience?
  • Are there performance or cold start implications?
  • What testing strategy would be appropriate?
  • Should this support both internal and external extensions?

Success Criteria

  • Research document outlining the proposed API design
  • Proof of concept implementation
  • Comparison with existing extension approaches
  • Decision on whether to proceed with full implementation

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions