diff --git a/docs/roadmap.md b/docs/roadmap.md index 678853a0..e88a50c1 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -1,20 +1,77 @@ +--- +title: Roadmap +description: Public roadmap for Powertools for AWS Lambda (.NET) +--- + + + ## Overview -This is our public roadmap that outlines the high level direction we are working towards, namely [Themes](#themes). We update this document when our priorities change: security and stability is our top priority. +Our public roadmap outlines the high level direction we are working towards. We update this document when our priorities change: security and stability are our top priority. + +!!! info "For most up-to-date information, see our [board of activities](https://github.com/orgs/aws-powertools/projects/6/views/14?query=is%3Aopen+sort%3Aupdated-desc){target="_blank"}." + +### Key areas + +Security and operational excellence take precedence above all else. This means bug fixing, stability, customer's support, and internal compliance may delay one or more key areas below. + +**Missing something or want us to prioritize an existing area?** + +You can help us prioritize by [upvoting existing feature requests](https://github.com/aws-powertools/powertools-lambda-dotnet/issues?q=is%3Aissue%20state%3Aopen%20label%3Afeature-request){target="_blank"}, leaving a comment on what use cases it could unblock for you, and by joining our discussions on Discord. + +[![Join our Discord](https://dcbadge.vercel.app/api/server/B8zZKbbyET)](https://discord.gg/B8zZKbbyET){target="_blank"} + +### Core Utilities (P0) + +#### Logging V2 + +Modernizing our logging capabilities to align with .NET practices and improve developer experience. + +- [ ] Logger buffer implementation +- [ ] New .NET-friendly API design (Serilog-like patterns) +- [ ] Filtering and JMESPath expression support +- [ ] Documentation for SDK context.Logger vs Powertools Logger differences + +#### Metrics V2 + +Updating metrics implementation to support latest EMF specifications and improve performance. + +- [ ] Update to latest EMF specifications +- [ ] Breaking changes implementation for multiple dimensions +- [ ] Add support for default dimensions on ColdStart metric +- [ ] API updates - missing functionality that is present in Python implementation (ie: flush_metrics) + +### Security and Production Readiness (P1) + +Ensuring enterprise-grade security and compatibility with latest .NET developments. + +- [ ] .NET 10 support from day one +- [ ] Deprecation path for .NET 6 +- [ ] Scorecard implementation +- [ ] Security compliance checks on our pipeline +- [ ] All utilities with end-to-end tests in our pipeline + +### Feature Parity and ASP.NET Support (P2) -[See our latest list of activities ยป](https://github.com/orgs/aws-powertools/projects/6/views/4?query=is%3Aopen+sort%3Aupdated-desc){target="_blank"} +#### Feature Parity -## Themes +Implementing key features to achieve parity with other Powertools implementations. -!!! info "Operational Excellence is priority number 1." +- [ ] Data masking +- [ ] Feature Flags +- [ ] S3 Streaming support -Themes are key activities maintainers are focusing on, besides bug reports. These are updated periodically and you can get an idea of the overall progress in the [Milestones section](https://github.com/aws-powertools/powertools-lambda-dotnet/milestones){target="_blank"}. +#### ASP.NET Support -### New utilities +Adding first-class support for ASP.NET Core in Lambda with performance considerations. -After going GA, we want to start working on new utilities, specifically but not limited to the most commonly asked: **(1)** [Idempotency](https://github.com/aws-powertools/powertools-lambda-dotnet/issues/164), **(2)** [Parameters](https://github.com/aws-powertools/powertools-lambda-dotnet/issues/160) and **(3)** [Batch](https://github.com/aws-powertools/powertools-lambda-dotnet/issues/168). +- [ ] AspNetCoreServer.Hosting - [Tracking issue](https://github.com/aws-powertools/powertools-lambda-dotnet/issues/360){target="_blank"} +- [ ] Minimal APIs support +- [ ] ASP.NET Core integration +- [ ] Documentation for cold start impacts +- [ ] Clear guidance on Middleware vs. Decorators usage -### Improve operational excellence +#### Improve operational excellence We continue to work on increasing operational excellence to remove as much undifferentiated heavylifting for maintainers, so that we can focus on delivering features that help you. @@ -61,9 +118,9 @@ graph LR Our end-to-end mechanism follows four major steps: * **Feature Request**. Ideas start with a [feature request](https://github.com/aws-powertools/powertools-lambda-dotnet/issues/new?assignees=&labels=feature-request%2Ctriage&projects=&template=feature_request.yml&title=Feature+request%3A+TITLE){target="_blank"} to outline their use case at a high level. For complex use cases, maintainers might ask for/write a RFC. - * Maintainers review requests based on [project tenets](index.md#tenets){target="_blank"}, customers reaction (๐Ÿ‘), and use cases. + * Maintainers review requests based on [project tenets](index.md#tenets){target="_blank"}, customers reaction (๐Ÿ‘), and use cases. * **Request-for-comments (RFC)**. Design proposals use our [RFC issue template](https://github.com/aws-powertools/powertools-lambda-dotnet/issues/new?assignees=&labels=RFC%2Ctriage&projects=&template=rfc.yml&title=RFC%3A+TITLE){target="_blank"} to describe its implementation, challenges, developer experience, dependencies, and alternative solutions. - * This helps refine the initial idea with community feedback before a decision is made. + * This helps refine the initial idea with community feedback before a decision is made. * **Decision**. After carefully reviewing and discussing them, maintainers make a final decision on whether to start implementation, defer or reject it, and update everyone with the next steps. * **Implementation**. For approved features, maintainers give priority to the original authors for implementation unless it is a sensitive task that is best handled by maintainers. diff --git a/docs/utilities/idempotency.md b/docs/utilities/idempotency.md index e6cefa3d..0d8f5339 100644 --- a/docs/utilities/idempotency.md +++ b/docs/utilities/idempotency.md @@ -253,6 +253,29 @@ If we were to treat the entire request as our idempotency key, a simple HTTP hea } ``` +### Custom key prefix + +By default, the idempotency key is prefixed with `[ClassName].[DecoratedMethodName]#[PayloadHash]`. + +You can customize this prefix by setting the `KeyPrefix` property in the Idempotency decorator: + +```csharp hl_lines="9" +public class Function +{ + public Function() + { + var tableName = Environment.GetEnvironmentVariable("IDEMPOTENCY_TABLE_NAME"); + Idempotency.Configure(builder => builder.UseDynamoDb(tableName)); + } + + [Idempotent(KeyPrefix = "MyCustomKeyPrefix")] + public APIGatewayProxyResponse FunctionHandler(APIGatewayProxyRequest apigwProxyEvent, ILambdaContext context) + { + return TestHelper.TestMethod(apigwProxyEvent); + } +} +``` + ### Lambda timeouts ???+ note diff --git a/mkdocs.yml b/mkdocs.yml index 9dbf670d..c804a353 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -71,9 +71,12 @@ markdown_extensions: permalink: true toc_depth: 4 - attr_list + - def_list + - pymdownx.tasklist: + custom_checkbox: true - pymdownx.emoji: - emoji_index: !!python/name:materialx.emoji.twemoji - emoji_generator: !!python/name:materialx.emoji.to_svg + emoji_index: !!python/name:material.extensions.emoji.twemoji + emoji_generator: !!python/name:material.extensions.emoji.to_svg - pymdownx.inlinehilite - pymdownx.superfences: custom_fences: