Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature request: API Gateway Event Handler router #3251

Open
1 of 2 tasks
gosantos opened this issue Oct 24, 2024 · 2 comments
Open
1 of 2 tasks

Feature request: API Gateway Event Handler router #3251

gosantos opened this issue Oct 24, 2024 · 2 comments
Labels
event-handler This item relates to the Event Handler Utility feature-request This item refers to a feature request for an existing or new utility on-hold This item is on-hold and will be revisited in the future

Comments

@gosantos
Copy link

gosantos commented Oct 24, 2024

Use case

Hi everyone,

I’m writing on behalf of Banxware, a strong advocate for AWS Powertools. We use both the Python and TypeScript versions in our serverless services, and we would love to have the same experience with our TypeScript stack as we do with Python.

We recently reviewed the RFC for an Event Handler Router (#2409) and wanted to ask more info about its development progress. This feature is critical for our team, as it would significantly improve our developer experience.

Our Context:

Banxware is a small team managing a product built entirely on serverless technologies: AWS Lambdas, API Gateway, DynamoDB, etc. Currently, the lack of a built-in router within Powertools for TypeScript presents a significant challenge. Without this functionality, we face difficulties running services locally and relying on excessive infrastructure work to test simple changes.

The router will provide us the follow benefits:

  • Improved Developer Experience: A router would streamline local development and testing by enabling us to simulate API Gateway behavior without requiring a full AWS deployment.
  • Increased Maintainability: Decoupling our code from specific AWS services like API Gateway would enhance code reusability and simplify infrastructure changes.

At the moment we are strongly considering the use of Hono as our go-to solution for this particular case. Hono has most of the features requried by us combined with a super small overhead. We understand Hono wasn't built exclusively for this use case and still misses some feature but for sure can provide most of the DX we are looking for. We consider yet other options as well such as NestJS because we ideally would like to have full fledge solution that combines routing, open api generation, validations etc.

We understand that development priorities may shift, but we believe a router would be a valuable addition to Powertools for TypeScript. Is there any update on when this feature will be addressed?

We'd be happy to contribute to the discussion or assist in any way possible.

Solution/User Experience

We envision a router that's as streamlined and user-friendly as Hono, but with the added benefit of supporting EventBridge. We're seeking a solution that eliminates the need for type casting to match Gateway V1, V2, ELB, and other services. Additionally, built-in helpers would significantly simplify testing, enabling us to write comprehensive integration tests that simulate real-world request scenarios.

We're also excited about the potential for future extensions, particularly the integration of Zod for schema validation and OpenAPI generation. This would drastically reduce boilerplate code, streamline development, and provide a robust error handling mechanism.

Alternative solutions

No response

Acknowledgment

Future readers

Please react with 👍 and your use case to help us understand customer demand.

@gosantos gosantos added feature-request This item refers to a feature request for an existing or new utility triage This item has not been triaged by a maintainer, please wait labels Oct 24, 2024
Copy link

boring-cyborg bot commented Oct 24, 2024

Thanks for opening your first issue here! We'll come back to you as soon as we can.
In the meantime, check out the #typescript channel on our Powertools for AWS Lambda Discord: Invite link

@dreamorosi
Copy link
Contributor

Hi @gosantos, thank you for opening this issue.

The Event Handler feature is still very much a priority for the team and is the next major feature that we are looking to add. Realistically, I think we won't be able to release a first public beta before Q1 2025.

I acknowledge that this is a significant delay from previous dates I and the team have shared in other issues or discussions, but we had to adjust this timeline due to unforeseen challenges with staffing that we have now mitigated for the most part.

Because of these, and also because of the increased visibility this version of Powertools for AWS has enjoyed in the last two quarters we have made the decision to prioritize work on stabilizing and improving existing features instead of taking on an additional major feature with the risk of alienating both existing and new customers with a sub par experience.

Now that most of the open issues on existing utilities have been cleared, also thanks to the huge help of the community, we are ready to shift our focus back to Event Handler. I have been working on a comprehensive RFC that I expect to publish within the next ~3 weeks and leave open at least until the first week of December in #413.

During this stage, once the RFC is public, we would really appreciate your and your team's feedback on the experience and features, as well as the one from the larger community. After the RFC is finalized, I'll work on creating the backlog of issues/tasks for the actual development and use this issue as meta issue to hold together all the sub-tasks/issues.

In the development phase there will be opportunities for contributing, but we expect the team to spend most of its time actively developing the new feature so that we can publish our first development beta sometime in February.

In terms of features, the first version of Event Handler will focus primarily on routing for REST APIs (API Gateway HTTP, REST, ALB, and Function URLs) and will support first class integration with Zod via our existing Parser feature. OpenAPI support will be part of the RFC, so that it won't be an afterthought in the DX and API, but might come in a subsequent release after the first one. We are not planning on addressing AppSync (GraphQL) nor EventBridge until later into the second half of 2025, depending on demand.

Finally, to address your use case directly, we completely understand that the timeline above might not fit with your business requirements. As discussed in #2409, we consider Hono a perfectly valid solution for AWS Lambda so if you need a router before ours is ready you should definitely move forward with that.

Despite your choice however, we would really appreciate your input in shaping the API & DX of the feature in the coming weeks and we hope that you'll consider using it once it's available.

@dreamorosi dreamorosi added on-hold This item is on-hold and will be revisited in the future event-handler This item relates to the Event Handler Utility and removed triage This item has not been triaged by a maintainer, please wait labels Oct 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
event-handler This item relates to the Event Handler Utility feature-request This item refers to a feature request for an existing or new utility on-hold This item is on-hold and will be revisited in the future
Projects
Status: Next iteration
Development

No branches or pull requests

2 participants