-
Notifications
You must be signed in to change notification settings - Fork 693
feat(control-plane)!: add support for handling multiple events in a single invocation #4603
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
Conversation
a7720aa to
9056deb
Compare
d7d1b7c to
54e4a8a
Compare
54e4a8a to
79eb6a5
Compare
|
|
||
| // Add the context to all child loggers | ||
| childLoggers.forEach((childLogger) => { | ||
| childLogger.addPersistentLogAttributes({ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I was getting warnings about mixing this with persistentKeys. The function says
/**
* @deprecated This method is deprecated and will be removed in the future major versions, please use {@link appendPersistentKeys() `appendPersistentKeys()`} instead.
*/
addPersistentLogAttributes(attributes: LogKeys): void;
so I've switched it!
69ff9b8 to
9443df8
Compare
9443df8 to
83e644b
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR adds support for handling multiple events in a single Lambda invocation to improve throughput in busy environments. Previously, the scale-up Lambda was restricted to processing only one event at a time, which could create bottlenecks when GitHub and AWS API calls took too long.
- Event batching: Enables processing multiple SQS messages in a single Lambda invocation with configurable batch sizes
- Partial failure handling: Implements
ReportBatchItemFailuresto retry only failed messages rather than entire batches - GitHub client optimization: Reuses GitHub API clients across events for the same installation to reduce API overhead
Reviewed Changes
Copilot reviewed 26 out of 26 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| variables.tf | Adds new variables for configuring Lambda event source mapping batch size and batching window |
| modules/runners/scale-up.tf | Updates Lambda event source mapping to support batch processing with ReportBatchItemFailures |
| lambdas/functions/control-plane/src/scale-runners/scale-up.ts | Major refactor to handle batched events, optimize GitHub client usage, and return failed message IDs |
| lambdas/functions/control-plane/src/lambda.ts | Updates Lambda handler to process SQS batches and return batch item failures |
| lambdas/functions/control-plane/src/scale-runners/ScaleError.ts | Enhanced to support batch failure reporting with failed instance counts |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
npalm
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tested with multi runner setup and pools. Looks all good.
Yeh not a bad idea. It’s a big and still a bit of a risky change. Could be an idea to do a beta / prerelease and let our orgs try it in prod for a bit before making a stable. |
I have no setup for a beta stream. So in case you have tested on your side, I think we could merge it. In case of any problems we could set the message batch size to 1. And it should work as before. |
I agree. I think merging it as a major release and marking it as a breaking change is the way to go if there's no beta stream. We should start running this in large scale soon and if there's any new issues we would be quick to address them. Anyone updating to the new major release should be aware of this change and take the necessary measures to ensure minimal disruption. I have tested with several parallel workflows of 200 jobs each, the only issue I found is when I hit We don't have |
|
It seems after rebasing there's a test failing. Any idea what is going on here? |
…ngle invocation Currently we restrict the `scale-up` Lambda to only handle a single event at a time. In very busy environments this can prove to be a bottleneck: there are calls to GitHub and AWS APIs that happen each time, and they can end up taking long enough that we can't process job queued events faster than they arrive. In our environment we are also using a pool, and typically we have responded to the alerts generated by this (SQS queue length growing) by expanding the size of the pool. This helps because we will more frequently find that we don't need to scale up, which allows the lambdas to exit a bit earlier, so we can get through the queue faster. But it makes the environment much less responsive to changes in usage patterns. At its core, this Lambda's task is to construct an EC2 `CreateFleet` call to create instances, after working out how many are needed. This is a job that can be batched. We can take any number of events, calculate the diff between our current state and the number of jobs we have, capping at the maximum, and then issue a single call. The thing to be careful about is how to handle partial failures, if EC2 creates some of the instances we wanted but not all of them. Lambda has a configurable function response type which can be set to `ReportBatchItemFailures`. In this mode, we return a list of failed messages from our handler and those are retried. We can make use of this to give back as many events as we failed to process. Now we're potentially processing multiple events in a single Lambda, one thing we should optimise for is not recreating GitHub API clients. We need one client for the app itself, which we use to find out installation IDs, and then one client for each installation which is relevant to the batch of events we are processing. This is done by creating a new client the first time we see an event for a given installation. We also remove the same `batch_size = 1` constraint from the `job-retry` Lambda and make it configurable instead, using AWS's default of 10 for SQS if not configured. This Lambda is used to retry events that previously failed. However, instead of reporting failures to be retried, here we maintain the pre-existing fault-tolerant behaviour where errors are logged but explicitly do not cause message retries, avoiding infinite loops from persistent GitHub API issues or malformed events. Tests are added for all of this.
This is a shorter and better way to set up mocks.
fda5b92 to
3f63afc
Compare
|
Have rebased, squashed the old commits into one and fixed the failure 👍 |
|
@guicaulada @iainlane changed the target branch to next, will use this branch to bundle a few PRs for a breaking release. |
…s-runners#4924) Bumps the aws group in /lambdas with 7 updates: | Package | From | To | | --- | --- | --- | | [@aws-sdk/client-ec2](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-ec2) | `3.938.0` | `3.940.0` | | [@aws-sdk/client-ssm](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-ssm) | `3.936.0` | `3.940.0` | | [@aws-sdk/types](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/packages/types) | `3.930.0` | `3.936.0` | | [@aws-sdk/client-sqs](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-sqs) | `3.936.0` | `3.940.0` | | [@aws-sdk/client-s3](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-s3) | `3.937.0` | `3.940.0` | | [@aws-sdk/lib-storage](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/lib/lib-storage) | `3.937.0` | `3.940.0` | | [@aws-sdk/client-eventbridge](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-eventbridge) | `3.936.0` | `3.940.0` | Updates `@aws-sdk/client-ec2` from 3.938.0 to 3.940.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/aws/aws-sdk-js-v3/releases"><code>@aws-sdk/client-ec2</code>'s releases</a>.</em></p> <blockquote> <h2>v3.940.0</h2> <h4>3.940.0(2025-11-25)</h4> <h5>New Features</h5> <ul> <li><strong>clients:</strong> update client endpoints as of 2025-11-25 (<a href="https://github.com/aws/aws-sdk-js-v3/commit/e27709045616337e38c5118cfb895908792b404f">e2770904</a>)</li> <li><strong>client-network-firewall:</strong> Network Firewall release of the Proxy feature. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/0eb20e887961327021849393df0ac5f30497ab8b">0eb20e88</a>)</li> <li><strong>client-organizations:</strong> Add support for policy operations on the S3_POLICY and BEDROCK_POLICY policy type. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/75e196ee52c6ec3e1fee97d715e92d9d38ad3f0d">75e196ee</a>)</li> <li><strong>client-route-53:</strong> Adds support for new route53 feature: accelerated recovery. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/dbe0a58f8de1c9919049dd9f9ea7443f4feb46c5">dbe0a58f</a>)</li> <li><strong>client-ec2:</strong> This release adds support to view Network firewall proxy appliances attached to an existing NAT Gateway via DescribeNatGateways API NatGatewayAttachedAppliance structure. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/7d70b063103b71d5ae67bd2bf31ba423382e6352">7d70b063</a>)</li> </ul> <h5>Bug Fixes</h5> <ul> <li><strong>core/protocols:</strong> performance improvements for shape serde traversal (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7523">#7523</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/b20a25eab019b6795afc2db74f87be12e1c22bf9">b20a25ea</a>)</li> </ul> <h5>Tests</h5> <ul> <li><strong>codegen:</strong> update codegen unit tests (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7525">#7525</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/e43ff44c79fd48475c0889a5fd7376991e2eae38">e43ff44c</a>)</li> </ul> <hr /> <p>For list of updated packages, view <strong>updated-packages.md</strong> in <strong>assets-3.940.0.zip</strong></p> <h2>v3.939.0</h2> <h4>3.939.0(2025-11-24)</h4> <h5>Chores</h5> <ul> <li><strong>scripts:</strong> reduce api validation to packages/lib only (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7519">#7519</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/eb74d6a06c95955a11d4434a0b0e50ce760ebe25">eb74d6a0</a>)</li> </ul> <h5>New Features</h5> <ul> <li><strong>client-cloudwatch-logs:</strong> New CloudWatch Logs feature - LogGroup Deletion Protection, a capability that allows customers to safeguard their critical CloudWatch log groups from accidental or unintended deletion. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/02360329959d33ca2411d666e0f96643c6ba5191">02360329</a>)</li> <li><strong>client-cloudfront:</strong> Add TrustStore, ConnectionFunction APIs to CloudFront SDK (<a href="https://github.com/aws/aws-sdk-js-v3/commit/168505ee3412bd533b0a2d891fb2d9eedeef66a9">168505ee</a>)</li> </ul> <h5>Bug Fixes</h5> <ul> <li><strong>clients:</strong> export enum objects for string shapes (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7521">#7521</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/62f648dff5c6734948740f07f2d39aa4715bca6c">62f648df</a>)</li> <li><strong>cloudfront-signer:</strong> skip extended encoding for query parameters in the base url (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7515">#7515</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/954d411e083c384ecc959d86f9359ea8796990ff">954d411e</a>)</li> </ul> <h5>Tests</h5> <ul> <li>increase beforeAll hook timeouts (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7518">#7518</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/720ba4cd02b75b71a2a1f0c7e9f007de9b8448e3">720ba4cd</a>)</li> </ul> <hr /> <p>For list of updated packages, view <strong>updated-packages.md</strong> in <strong>assets-3.939.0.zip</strong></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/aws/aws-sdk-js-v3/blob/main/clients/client-ec2/CHANGELOG.md"><code>@aws-sdk/client-ec2</code>'s changelog</a>.</em></p> <blockquote> <h1><a href="https://github.com/aws/aws-sdk-js-v3/compare/v3.939.0...v3.940.0">3.940.0</a> (2025-11-25)</h1> <h3>Features</h3> <ul> <li><strong>client-ec2:</strong> This release adds support to view Network firewall proxy appliances attached to an existing NAT Gateway via DescribeNatGateways API NatGatewayAttachedAppliance structure. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/7d70b063103b71d5ae67bd2bf31ba423382e6352">7d70b06</a>)</li> </ul> <h1><a href="https://github.com/aws/aws-sdk-js-v3/compare/v3.938.0...v3.939.0">3.939.0</a> (2025-11-24)</h1> <p><strong>Note:</strong> Version bump only for package <code>@aws-sdk/client-ec2</code></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/aws/aws-sdk-js-v3/commit/e9962f1c4512d6ea969ca621754b3db01ac54aa9"><code>e9962f1</code></a> Publish v3.940.0</li> <li><a href="https://github.com/aws/aws-sdk-js-v3/commit/7d70b063103b71d5ae67bd2bf31ba423382e6352"><code>7d70b06</code></a> feat(client-ec2): This release adds support to view Network firewall proxy ap...</li> <li><a href="https://github.com/aws/aws-sdk-js-v3/commit/15923791acb0f527cf323c58aecd5d4bea7fff29"><code>1592379</code></a> Publish v3.939.0</li> <li>See full diff in <a href="https://github.com/aws/aws-sdk-js-v3/commits/v3.940.0/clients/client-ec2">compare view</a></li> </ul> </details> <br /> Updates `@aws-sdk/client-ssm` from 3.936.0 to 3.940.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/aws/aws-sdk-js-v3/releases"><code>@aws-sdk/client-ssm</code>'s releases</a>.</em></p> <blockquote> <h2>v3.940.0</h2> <h4>3.940.0(2025-11-25)</h4> <h5>New Features</h5> <ul> <li><strong>clients:</strong> update client endpoints as of 2025-11-25 (<a href="https://github.com/aws/aws-sdk-js-v3/commit/e27709045616337e38c5118cfb895908792b404f">e2770904</a>)</li> <li><strong>client-network-firewall:</strong> Network Firewall release of the Proxy feature. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/0eb20e887961327021849393df0ac5f30497ab8b">0eb20e88</a>)</li> <li><strong>client-organizations:</strong> Add support for policy operations on the S3_POLICY and BEDROCK_POLICY policy type. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/75e196ee52c6ec3e1fee97d715e92d9d38ad3f0d">75e196ee</a>)</li> <li><strong>client-route-53:</strong> Adds support for new route53 feature: accelerated recovery. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/dbe0a58f8de1c9919049dd9f9ea7443f4feb46c5">dbe0a58f</a>)</li> <li><strong>client-ec2:</strong> This release adds support to view Network firewall proxy appliances attached to an existing NAT Gateway via DescribeNatGateways API NatGatewayAttachedAppliance structure. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/7d70b063103b71d5ae67bd2bf31ba423382e6352">7d70b063</a>)</li> </ul> <h5>Bug Fixes</h5> <ul> <li><strong>core/protocols:</strong> performance improvements for shape serde traversal (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7523">#7523</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/b20a25eab019b6795afc2db74f87be12e1c22bf9">b20a25ea</a>)</li> </ul> <h5>Tests</h5> <ul> <li><strong>codegen:</strong> update codegen unit tests (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7525">#7525</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/e43ff44c79fd48475c0889a5fd7376991e2eae38">e43ff44c</a>)</li> </ul> <hr /> <p>For list of updated packages, view <strong>updated-packages.md</strong> in <strong>assets-3.940.0.zip</strong></p> <h2>v3.939.0</h2> <h4>3.939.0(2025-11-24)</h4> <h5>Chores</h5> <ul> <li><strong>scripts:</strong> reduce api validation to packages/lib only (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7519">#7519</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/eb74d6a06c95955a11d4434a0b0e50ce760ebe25">eb74d6a0</a>)</li> </ul> <h5>New Features</h5> <ul> <li><strong>client-cloudwatch-logs:</strong> New CloudWatch Logs feature - LogGroup Deletion Protection, a capability that allows customers to safeguard their critical CloudWatch log groups from accidental or unintended deletion. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/02360329959d33ca2411d666e0f96643c6ba5191">02360329</a>)</li> <li><strong>client-cloudfront:</strong> Add TrustStore, ConnectionFunction APIs to CloudFront SDK (<a href="https://github.com/aws/aws-sdk-js-v3/commit/168505ee3412bd533b0a2d891fb2d9eedeef66a9">168505ee</a>)</li> </ul> <h5>Bug Fixes</h5> <ul> <li><strong>clients:</strong> export enum objects for string shapes (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7521">#7521</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/62f648dff5c6734948740f07f2d39aa4715bca6c">62f648df</a>)</li> <li><strong>cloudfront-signer:</strong> skip extended encoding for query parameters in the base url (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7515">#7515</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/954d411e083c384ecc959d86f9359ea8796990ff">954d411e</a>)</li> </ul> <h5>Tests</h5> <ul> <li>increase beforeAll hook timeouts (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7518">#7518</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/720ba4cd02b75b71a2a1f0c7e9f007de9b8448e3">720ba4cd</a>)</li> </ul> <hr /> <p>For list of updated packages, view <strong>updated-packages.md</strong> in <strong>assets-3.939.0.zip</strong></p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/aws/aws-sdk-js-v3/blob/main/clients/client-ssm/CHANGELOG.md"><code>@aws-sdk/client-ssm</code>'s changelog</a>.</em></p> <blockquote> <h1><a href="https://github.com/aws/aws-sdk-js-v3/compare/v3.939.0...v3.940.0">3.940.0</a> (2025-11-25)</h1> <p><strong>Note:</strong> Version bump only for package <code>@aws-sdk/client-ssm</code></p> <h1><a href="https://github.com/aws/aws-sdk-js-v3/compare/v3.938.0...v3.939.0">3.939.0</a> (2025-11-24)</h1> <p><strong>Note:</strong> Version bump only for package <code>@aws-sdk/client-ssm</code></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/aws/aws-sdk-js-v3/commit/e9962f1c4512d6ea969ca621754b3db01ac54aa9"><code>e9962f1</code></a> Publish v3.940.0</li> <li><a href="https://github.com/aws/aws-sdk-js-v3/commit/15923791acb0f527cf323c58aecd5d4bea7fff29"><code>1592379</code></a> Publish v3.939.0</li> <li>See full diff in <a href="https://github.com/aws/aws-sdk-js-v3/commits/v3.940.0/clients/client-ssm">compare view</a></li> </ul> </details> <br /> Updates `@aws-sdk/types` from 3.930.0 to 3.936.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/aws/aws-sdk-js-v3/releases"><code>@aws-sdk/types</code>'s releases</a>.</em></p> <blockquote> <h2>v3.936.0</h2> <h4>3.936.0(2025-11-19)</h4> <h5>New Features</h5> <ul> <li><strong>credential-provider-login:</strong> add login credential provider (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7512">#7512</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/2c08b1e01631e29003979b5648538996df0f6ad8">2c08b1e0</a>)</li> </ul> <hr /> <p>For list of updated packages, view <strong>updated-packages.md</strong> in <strong>assets-3.936.0.zip</strong></p> <h2>v3.935.0</h2> <h4>3.935.0(2025-11-19)</h4> <h5>Chores</h5> <ul> <li><strong>codegen:</strong> update for smithy/core serde fixes (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7511">#7511</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/ac2be518aa22bbc0c1899580073b433c0d3836ac">ac2be518</a>)</li> </ul> <h5>New Features</h5> <ul> <li><strong>clients:</strong> update client endpoints as of 2025-11-19 (<a href="https://github.com/aws/aws-sdk-js-v3/commit/d7b51c496bae5e4373cb9603a3a43abd80dfc2aa">d7b51c49</a>)</li> <li><strong>client-sts:</strong> IAM now supports outbound identity federation via the STS GetWebIdentityToken API, enabling AWS workloads to securely authenticate with external services using short-lived JSON Web Tokens. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/f9fed01c2ac683e43296a3c82c60a1da231cc0ec">f9fed01c</a>)</li> <li><strong>client-dynamodb:</strong> Extended Global Secondary Index (GSI) composite keys to support up to 8 attributes. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/622ef038c5ea8ce707e72f57f9582e650c23f374">622ef038</a>)</li> <li><strong>client-medialive:</strong> MediaLive is adding support for MediaConnect Router by supporting a new input type called MEDIACONNECT_ROUTER. This new input type will provide seamless encrypted transport between MediaConnect Router and your MediaLive channel. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/1667189eeecb33a4cb76c16304ca115a355242e2">1667189e</a>)</li> <li><strong>client-bcm-pricing-calculator:</strong> Add GroupSharingPreference, CostCategoryGroupSharingPreferenceArn, and CostCategoryGroupSharingPreferenceEffectiveDate to Bill Estimate. Add GroupSharingPreference and CostCategoryGroupSharingPreferenceArn to Bill Scenario. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/e0dc140cb605b847bae2a9967f56c1e6615115f3">e0dc140c</a>)</li> <li><strong>client-backup:</strong> Amazon GuardDuty Malware Protection now supports AWS Backup, extending malware detection capabilities to EC2, EBS, and S3 backups. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/498dcf3d4af9f604f3aaa22b3471c37e5ad9f517">498dcf3d</a>)</li> <li><strong>client-connectcampaignsv2:</strong> This release added support for ring timer configuration for campaign calls. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/1155c3c437eba06dee2d77c7f7ae2f70fe1f014f">1155c3c4</a>)</li> <li><strong>client-ecs:</strong> Added support for Amazon ECS Managed Instances infrastructure optimization configuration. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/2ee0c3f31abe7f67e08ffedbf6fd9552a0a26cf2">2ee0c3f3</a>)</li> <li><strong>client-ecr:</strong> Add support for ECR archival storage class and Inspector org policy for scanning (<a href="https://github.com/aws/aws-sdk-js-v3/commit/ed5e232dd00ea85e75ad4144e27b406abaa53466">ed5e232d</a>)</li> <li><strong>client-sagemaker:</strong> Added support for enhanced metrics for SageMaker AI Endpoints. This features provides Utilization Metrics at instance and container granularity and also provides easy configuration of metric publish frequency from 10 sec -> 5 mins (<a href="https://github.com/aws/aws-sdk-js-v3/commit/ad2587c7e6162aef0d68e9f89a20651c6f035b34">ad2587c7</a>)</li> <li><strong>client-apigatewayv2:</strong> Support for API Gateway portals and portal products. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/fc064256af49eeedc9ea64e30a20114bf5821499">fc064256</a>)</li> <li><strong>client-billingconductor:</strong> This release adds support for Billing Transfers, enabling management of billing transfers with billing groups on AWS Billing Conductor. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/4e32b65dbd5712a063768d02c7166febbbb79225">4e32b65d</a>)</li> <li><strong>client-cloudwatch-logs:</strong> Adding support for ocsf version 1.5, add optional parameter MappingVersion (<a href="https://github.com/aws/aws-sdk-js-v3/commit/2a15be86e1c126bb8d1e748eb602edf3b6159bcb">2a15be86</a>)</li> <li><strong>client-api-gateway:</strong> API Gateway now supports response streaming and new security policies for REST APIs and custom domain names. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/e1d2d6b1eba60429c227e2c5e5a6803970c59c60">e1d2d6b1</a>)</li> <li><strong>client-cost-optimization-hub:</strong> Release ListEfficiencyMetrics API (<a href="https://github.com/aws/aws-sdk-js-v3/commit/2b031582471976be86e70be7bd2422be89b3aa8d">2b031582</a>)</li> <li><strong>client-bedrock-runtime:</strong> This release includes support for Search Results. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/40ffa77a438ad33d7bb4ebc5b70d8160c25d7e01">40ffa77a</a>)</li> <li><strong>client-cloudtrail:</strong> AWS CloudTrail now supports Insights for data events, expanding beyond management events to automatically detect unusual activity on data plane operations. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/f857066506ab98f31b1b6b3dd26d721b066b0241">f8570665</a>)</li> <li><strong>client-health:</strong> Adds actionability and personas properties to Health events exposed through DescribeEvents, DescribeEventsForOrganization, DescribeEventDetails, and DescribeEventTypes APIs. Adds filtering by actionabilities and personas in EventFilter, OrganizationEventFilter, EventTypeFilter. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/c754b2426595d98f8b9b97b220cc0d7dc57a1d3f">c754b242</a>)</li> <li><strong>client-networkflowmonitor:</strong> Added new enum value (AWS::EKS::Cluster) for type field under MonitorLocalResource (<a href="https://github.com/aws/aws-sdk-js-v3/commit/6672978744f52673d746711fd4842441d99afc65">66729787</a>)</li> <li><strong>client-invoicing:</strong> Add support for adding Billing transfers in Invoice configuration (<a href="https://github.com/aws/aws-sdk-js-v3/commit/2e4934904c6c7b80f5fdfd33e1be1c1dbceff20e">2e493490</a>)</li> <li><strong>client-s3:</strong> Adds support for blocking SSE-C writes to general purpose buckets. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/cee2e72ffbcafb34a5283c9f4779c58c02a0be59">cee2e72f</a>)</li> <li><strong>client-network-firewall:</strong> Partner Managed Rulegroup feature support (<a href="https://github.com/aws/aws-sdk-js-v3/commit/2e8472d63d02d9e34aa8972f91d0787b93a31494">2e8472d6</a>)</li> <li><strong>client-emr:</strong> Add CloudWatch Logs integration for Spark driver, executor and step logs (<a href="https://github.com/aws/aws-sdk-js-v3/commit/7e6e1684a26ef235e9bc4a5a22991058f69d21ee">7e6e1684</a>)</li> <li><strong>client-fsx:</strong> Adding File Server Resource Manager configuration to FSx Windows (<a href="https://github.com/aws/aws-sdk-js-v3/commit/2e3c0c96aca567f518c0a80c6a14d801d787e104">2e3c0c96</a>)</li> <li><strong>client-guardduty:</strong> Add support for scanning and viewing scan results for backup resource types (<a href="https://github.com/aws/aws-sdk-js-v3/commit/231cf06b1c1d7a5a2b249b55bde3c2cd629bf8fc">231cf06b</a>)</li> <li><strong>client-sfn:</strong> Adds support to TestState for mocked results and exceptions, along with additional inspection data. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/1b18be75d99c17a3303409708f5a18f9f9965b80">1b18be75</a>)</li> <li><strong>client-partnercentral-channel:</strong> Initial GA launch of Partner Central Channel (<a href="https://github.com/aws/aws-sdk-js-v3/commit/b77d16823e8e4d161a57489ad5091bc1db2f8134">b77d1682</a>)</li> <li><strong>client-secrets-manager:</strong> Adds support to create, update, retrieve, rotate, and delete managed external secrets. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/c13b6f97233fadcfcf16126b4d03e75a6cc695e2">c13b6f97</a>)</li> <li><strong>client-iam:</strong> Added the EnableOutboundWebIdentityFederation, DisableOutboundWebIdentityFederation and GetOutboundWebIdentityFederationInfo APIs for the IAM outbound federation feature. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/5774faa2064753e7a5c99ff079994b870d652763">5774faa2</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/aws/aws-sdk-js-v3/blob/main/packages/types/CHANGELOG.md"><code>@aws-sdk/types</code>'s changelog</a>.</em></p> <blockquote> <h1><a href="https://github.com/aws/aws-sdk-js-v3/compare/v3.935.0...v3.936.0">3.936.0</a> (2025-11-19)</h1> <h3>Features</h3> <ul> <li><strong>credential-provider-login:</strong> add login credential provider (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/issues/7512">#7512</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/2c08b1e01631e29003979b5648538996df0f6ad8">2c08b1e</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/aws/aws-sdk-js-v3/commit/a180cc700f630c07711ca0c823b668fe50e5123e"><code>a180cc7</code></a> Publish v3.936.0</li> <li><a href="https://github.com/aws/aws-sdk-js-v3/commit/2c08b1e01631e29003979b5648538996df0f6ad8"><code>2c08b1e</code></a> feat(credential-provider-login): add login credential provider (<a href="https://github.com/aws/aws-sdk-js-v3/tree/HEAD/packages/types/issues/7512">#7512</a>)</li> <li>See full diff in <a href="https://github.com/aws/aws-sdk-js-v3/commits/v3.936.0/packages/types">compare view</a></li> </ul> </details> <br /> Updates `@aws-sdk/client-sqs` from 3.936.0 to 3.940.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/aws/aws-sdk-js-v3/releases"><code>@aws-sdk/client-sqs</code>'s releases</a>.</em></p> <blockquote> <h2>v3.940.0</h2> <h4>3.940.0(2025-11-25)</h4> <h5>New Features</h5> <ul> <li><strong>clients:</strong> update client endpoints as of 2025-11-25 (<a href="https://github.com/aws/aws-sdk-js-v3/commit/e27709045616337e38c5118cfb895908792b404f">e2770904</a>)</li> <li><strong>client-network-firewall:</strong> Network Firewall release of the Proxy feature. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/0eb20e887961327021849393df0ac5f30497ab8b">0eb20e88</a>)</li> <li><strong>client-organizations:</strong> Add support for policy operations on the S3_POLICY and BEDROCK_POLICY policy type. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/75e196ee52c6ec3e1fee97d715e92d9d38ad3f0d">75e196ee</a>)</li> <li><strong>client-route-53:</strong> Adds support for new route53 feature: accelerated recovery. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/dbe0a58f8de1c9919049dd9f9ea7443f4feb46c5">dbe0a58f</a>)</li> <li><strong>client-ec2:</strong> This release adds support to view Network firewall proxy appliances attached to an existing NAT Gateway via DescribeNatGateways API NatGatewayAttachedAppliance structure. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/7d70b063103b71d5ae67bd2bf31ba423382e6352">7d70b063</a>)</li> </ul> <h5>Bug Fixes</h5> <ul> <li><strong>core/protocols:</strong> performance improvements for shape serde traversal (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7523">#7523</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/b20a25eab019b6795afc2db74f87be12e1c22bf9">b20a25ea</a>)</li> </ul> <h5>Tests</h5> <ul> <li><strong>codegen:</strong> update codegen unit tests (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7525">#7525</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/e43ff44c79fd48475c0889a5fd7376991e2eae38">e43ff44c</a>)</li> </ul> <hr /> <p>For list of updated packages, view <strong>updated-packages.md</strong> in <strong>assets-3.940.0.zip</strong></p> <h2>v3.939.0</h2> <h4>3.939.0(2025-11-24)</h4> <h5>Chores</h5> <ul> <li><strong>scripts:</strong> reduce api validation to packages/lib only (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7519">#7519</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/eb74d6a06c95955a11d4434a0b0e50ce760ebe25">eb74d6a0</a>)</li> </ul> <h5>New Features</h5> <ul> <li><strong>client-cloudwatch-logs:</strong> New CloudWatch Logs feature - LogGroup Deletion Protection, a capability that allows customers to safeguard their critical CloudWatch log groups from accidental or unintended deletion. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/02360329959d33ca2411d666e0f96643c6ba5191">02360329</a>)</li> <li><strong>client-cloudfront:</strong> Add TrustStore, ConnectionFunction APIs to CloudFront SDK (<a href="https://github.com/aws/aws-sdk-js-v3/commit/168505ee3412bd533b0a2d891fb2d9eedeef66a9">168505ee</a>)</li> </ul> <h5>Bug Fixes</h5> <ul> <li><strong>clients:</strong> export enum objects for string shapes (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7521">#7521</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/62f648dff5c6734948740f07f2d39aa4715bca6c">62f648df</a>)</li> <li><strong>cloudfront-signer:</strong> skip extended encoding for query parameters in the base url (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7515">#7515</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/954d411e083c384ecc959d86f9359ea8796990ff">954d411e</a>)</li> </ul> <h5>Tests</h5> <ul> <li>increase beforeAll hook timeouts (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7518">#7518</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/720ba4cd02b75b71a2a1f0c7e9f007de9b8448e3">720ba4cd</a>)</li> </ul> <hr /> <p>For list of updated packages, view <strong>updated-packages.md</strong> in <strong>assets-3.939.0.zip</strong></p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/aws/aws-sdk-js-v3/blob/main/clients/client-sqs/CHANGELOG.md"><code>@aws-sdk/client-sqs</code>'s changelog</a>.</em></p> <blockquote> <h1><a href="https://github.com/aws/aws-sdk-js-v3/compare/v3.939.0...v3.940.0">3.940.0</a> (2025-11-25)</h1> <p><strong>Note:</strong> Version bump only for package <code>@aws-sdk/client-sqs</code></p> <h1><a href="https://github.com/aws/aws-sdk-js-v3/compare/v3.938.0...v3.939.0">3.939.0</a> (2025-11-24)</h1> <p><strong>Note:</strong> Version bump only for package <code>@aws-sdk/client-sqs</code></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/aws/aws-sdk-js-v3/commit/e9962f1c4512d6ea969ca621754b3db01ac54aa9"><code>e9962f1</code></a> Publish v3.940.0</li> <li><a href="https://github.com/aws/aws-sdk-js-v3/commit/15923791acb0f527cf323c58aecd5d4bea7fff29"><code>1592379</code></a> Publish v3.939.0</li> <li>See full diff in <a href="https://github.com/aws/aws-sdk-js-v3/commits/v3.940.0/clients/client-sqs">compare view</a></li> </ul> </details> <br /> Updates `@aws-sdk/client-s3` from 3.937.0 to 3.940.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/aws/aws-sdk-js-v3/releases"><code>@aws-sdk/client-s3</code>'s releases</a>.</em></p> <blockquote> <h2>v3.940.0</h2> <h4>3.940.0(2025-11-25)</h4> <h5>New Features</h5> <ul> <li><strong>clients:</strong> update client endpoints as of 2025-11-25 (<a href="https://github.com/aws/aws-sdk-js-v3/commit/e27709045616337e38c5118cfb895908792b404f">e2770904</a>)</li> <li><strong>client-network-firewall:</strong> Network Firewall release of the Proxy feature. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/0eb20e887961327021849393df0ac5f30497ab8b">0eb20e88</a>)</li> <li><strong>client-organizations:</strong> Add support for policy operations on the S3_POLICY and BEDROCK_POLICY policy type. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/75e196ee52c6ec3e1fee97d715e92d9d38ad3f0d">75e196ee</a>)</li> <li><strong>client-route-53:</strong> Adds support for new route53 feature: accelerated recovery. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/dbe0a58f8de1c9919049dd9f9ea7443f4feb46c5">dbe0a58f</a>)</li> <li><strong>client-ec2:</strong> This release adds support to view Network firewall proxy appliances attached to an existing NAT Gateway via DescribeNatGateways API NatGatewayAttachedAppliance structure. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/7d70b063103b71d5ae67bd2bf31ba423382e6352">7d70b063</a>)</li> </ul> <h5>Bug Fixes</h5> <ul> <li><strong>core/protocols:</strong> performance improvements for shape serde traversal (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7523">#7523</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/b20a25eab019b6795afc2db74f87be12e1c22bf9">b20a25ea</a>)</li> </ul> <h5>Tests</h5> <ul> <li><strong>codegen:</strong> update codegen unit tests (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7525">#7525</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/e43ff44c79fd48475c0889a5fd7376991e2eae38">e43ff44c</a>)</li> </ul> <hr /> <p>For list of updated packages, view <strong>updated-packages.md</strong> in <strong>assets-3.940.0.zip</strong></p> <h2>v3.939.0</h2> <h4>3.939.0(2025-11-24)</h4> <h5>Chores</h5> <ul> <li><strong>scripts:</strong> reduce api validation to packages/lib only (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7519">#7519</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/eb74d6a06c95955a11d4434a0b0e50ce760ebe25">eb74d6a0</a>)</li> </ul> <h5>New Features</h5> <ul> <li><strong>client-cloudwatch-logs:</strong> New CloudWatch Logs feature - LogGroup Deletion Protection, a capability that allows customers to safeguard their critical CloudWatch log groups from accidental or unintended deletion. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/02360329959d33ca2411d666e0f96643c6ba5191">02360329</a>)</li> <li><strong>client-cloudfront:</strong> Add TrustStore, ConnectionFunction APIs to CloudFront SDK (<a href="https://github.com/aws/aws-sdk-js-v3/commit/168505ee3412bd533b0a2d891fb2d9eedeef66a9">168505ee</a>)</li> </ul> <h5>Bug Fixes</h5> <ul> <li><strong>clients:</strong> export enum objects for string shapes (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7521">#7521</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/62f648dff5c6734948740f07f2d39aa4715bca6c">62f648df</a>)</li> <li><strong>cloudfront-signer:</strong> skip extended encoding for query parameters in the base url (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7515">#7515</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/954d411e083c384ecc959d86f9359ea8796990ff">954d411e</a>)</li> </ul> <h5>Tests</h5> <ul> <li>increase beforeAll hook timeouts (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7518">#7518</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/720ba4cd02b75b71a2a1f0c7e9f007de9b8448e3">720ba4cd</a>)</li> </ul> <hr /> <p>For list of updated packages, view <strong>updated-packages.md</strong> in <strong>assets-3.939.0.zip</strong></p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/aws/aws-sdk-js-v3/blob/main/clients/client-s3/CHANGELOG.md"><code>@aws-sdk/client-s3</code>'s changelog</a>.</em></p> <blockquote> <h1><a href="https://github.com/aws/aws-sdk-js-v3/compare/v3.939.0...v3.940.0">3.940.0</a> (2025-11-25)</h1> <p><strong>Note:</strong> Version bump only for package <code>@aws-sdk/client-s3</code></p> <h1><a href="https://github.com/aws/aws-sdk-js-v3/compare/v3.938.0...v3.939.0">3.939.0</a> (2025-11-24)</h1> <p><strong>Note:</strong> Version bump only for package <code>@aws-sdk/client-s3</code></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/aws/aws-sdk-js-v3/commit/e9962f1c4512d6ea969ca621754b3db01ac54aa9"><code>e9962f1</code></a> Publish v3.940.0</li> <li><a href="https://github.com/aws/aws-sdk-js-v3/commit/15923791acb0f527cf323c58aecd5d4bea7fff29"><code>1592379</code></a> Publish v3.939.0</li> <li>See full diff in <a href="https://github.com/aws/aws-sdk-js-v3/commits/v3.940.0/clients/client-s3">compare view</a></li> </ul> </details> <br /> Updates `@aws-sdk/lib-storage` from 3.937.0 to 3.940.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/aws/aws-sdk-js-v3/releases"><code>@aws-sdk/lib-storage</code>'s releases</a>.</em></p> <blockquote> <h2>v3.940.0</h2> <h4>3.940.0(2025-11-25)</h4> <h5>New Features</h5> <ul> <li><strong>clients:</strong> update client endpoints as of 2025-11-25 (<a href="https://github.com/aws/aws-sdk-js-v3/commit/e27709045616337e38c5118cfb895908792b404f">e2770904</a>)</li> <li><strong>client-network-firewall:</strong> Network Firewall release of the Proxy feature. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/0eb20e887961327021849393df0ac5f30497ab8b">0eb20e88</a>)</li> <li><strong>client-organizations:</strong> Add support for policy operations on the S3_POLICY and BEDROCK_POLICY policy type. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/75e196ee52c6ec3e1fee97d715e92d9d38ad3f0d">75e196ee</a>)</li> <li><strong>client-route-53:</strong> Adds support for new route53 feature: accelerated recovery. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/dbe0a58f8de1c9919049dd9f9ea7443f4feb46c5">dbe0a58f</a>)</li> <li><strong>client-ec2:</strong> This release adds support to view Network firewall proxy appliances attached to an existing NAT Gateway via DescribeNatGateways API NatGatewayAttachedAppliance structure. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/7d70b063103b71d5ae67bd2bf31ba423382e6352">7d70b063</a>)</li> </ul> <h5>Bug Fixes</h5> <ul> <li><strong>core/protocols:</strong> performance improvements for shape serde traversal (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7523">#7523</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/b20a25eab019b6795afc2db74f87be12e1c22bf9">b20a25ea</a>)</li> </ul> <h5>Tests</h5> <ul> <li><strong>codegen:</strong> update codegen unit tests (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7525">#7525</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/e43ff44c79fd48475c0889a5fd7376991e2eae38">e43ff44c</a>)</li> </ul> <hr /> <p>For list of updated packages, view <strong>updated-packages.md</strong> in <strong>assets-3.940.0.zip</strong></p> <h2>v3.939.0</h2> <h4>3.939.0(2025-11-24)</h4> <h5>Chores</h5> <ul> <li><strong>scripts:</strong> reduce api validation to packages/lib only (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7519">#7519</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/eb74d6a06c95955a11d4434a0b0e50ce760ebe25">eb74d6a0</a>)</li> </ul> <h5>New Features</h5> <ul> <li><strong>client-cloudwatch-logs:</strong> New CloudWatch Logs feature - LogGroup Deletion Protection, a capability that allows customers to safeguard their critical CloudWatch log groups from accidental or unintended deletion. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/02360329959d33ca2411d666e0f96643c6ba5191">02360329</a>)</li> <li><strong>client-cloudfront:</strong> Add TrustStore, ConnectionFunction APIs to CloudFront SDK (<a href="https://github.com/aws/aws-sdk-js-v3/commit/168505ee3412bd533b0a2d891fb2d9eedeef66a9">168505ee</a>)</li> </ul> <h5>Bug Fixes</h5> <ul> <li><strong>clients:</strong> export enum objects for string shapes (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7521">#7521</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/62f648dff5c6734948740f07f2d39aa4715bca6c">62f648df</a>)</li> <li><strong>cloudfront-signer:</strong> skip extended encoding for query parameters in the base url (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7515">#7515</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/954d411e083c384ecc959d86f9359ea8796990ff">954d411e</a>)</li> </ul> <h5>Tests</h5> <ul> <li>increase beforeAll hook timeouts (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7518">#7518</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/720ba4cd02b75b71a2a1f0c7e9f007de9b8448e3">720ba4cd</a>)</li> </ul> <hr /> <p>For list of updated packages, view <strong>updated-packages.md</strong> in <strong>assets-3.939.0.zip</strong></p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/aws/aws-sdk-js-v3/blob/main/lib/lib-storage/CHANGELOG.md"><code>@aws-sdk/lib-storage</code>'s changelog</a>.</em></p> <blockquote> <h1><a href="https://github.com/aws/aws-sdk-js-v3/compare/v3.939.0...v3.940.0">3.940.0</a> (2025-11-25)</h1> <p><strong>Note:</strong> Version bump only for package <code>@aws-sdk/lib-storage</code></p> <h1><a href="https://github.com/aws/aws-sdk-js-v3/compare/v3.938.0...v3.939.0">3.939.0</a> (2025-11-24)</h1> <p><strong>Note:</strong> Version bump only for package <code>@aws-sdk/lib-storage</code></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/aws/aws-sdk-js-v3/commit/e9962f1c4512d6ea969ca621754b3db01ac54aa9"><code>e9962f1</code></a> Publish v3.940.0</li> <li><a href="https://github.com/aws/aws-sdk-js-v3/commit/15923791acb0f527cf323c58aecd5d4bea7fff29"><code>1592379</code></a> Publish v3.939.0</li> <li>See full diff in <a href="https://github.com/aws/aws-sdk-js-v3/commits/v3.940.0/lib/lib-storage">compare view</a></li> </ul> </details> <br /> Updates `@aws-sdk/client-eventbridge` from 3.936.0 to 3.940.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/aws/aws-sdk-js-v3/releases"><code>@aws-sdk/client-eventbridge</code>'s releases</a>.</em></p> <blockquote> <h2>v3.940.0</h2> <h4>3.940.0(2025-11-25)</h4> <h5>New Features</h5> <ul> <li><strong>clients:</strong> update client endpoints as of 2025-11-25 (<a href="https://github.com/aws/aws-sdk-js-v3/commit/e27709045616337e38c5118cfb895908792b404f">e2770904</a>)</li> <li><strong>client-network-firewall:</strong> Network Firewall release of the Proxy feature. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/0eb20e887961327021849393df0ac5f30497ab8b">0eb20e88</a>)</li> <li><strong>client-organizations:</strong> Add support for policy operations on the S3_POLICY and BEDROCK_POLICY policy type. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/75e196ee52c6ec3e1fee97d715e92d9d38ad3f0d">75e196ee</a>)</li> <li><strong>client-route-53:</strong> Adds support for new route53 feature: accelerated recovery. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/dbe0a58f8de1c9919049dd9f9ea7443f4feb46c5">dbe0a58f</a>)</li> <li><strong>client-ec2:</strong> This release adds support to view Network firewall proxy appliances attached to an existing NAT Gateway via DescribeNatGateways API NatGatewayAttachedAppliance structure. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/7d70b063103b71d5ae67bd2bf31ba423382e6352">7d70b063</a>)</li> </ul> <h5>Bug Fixes</h5> <ul> <li><strong>core/protocols:</strong> performance improvements for shape serde traversal (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7523">#7523</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/b20a25eab019b6795afc2db74f87be12e1c22bf9">b20a25ea</a>)</li> </ul> <h5>Tests</h5> <ul> <li><strong>codegen:</strong> update codegen unit tests (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7525">#7525</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/e43ff44c79fd48475c0889a5fd7376991e2eae38">e43ff44c</a>)</li> </ul> <hr /> <p>For list of updated packages, view <strong>updated-packages.md</strong> in <strong>assets-3.940.0.zip</strong></p> <h2>v3.939.0</h2> <h4>3.939.0(2025-11-24)</h4> <h5>Chores</h5> <ul> <li><strong>scripts:</strong> reduce api validation to packages/lib only (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7519">#7519</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/eb74d6a06c95955a11d4434a0b0e50ce760ebe25">eb74d6a0</a>)</li> </ul> <h5>New Features</h5> <ul> <li><strong>client-cloudwatch-logs:</strong> New CloudWatch Logs feature - LogGroup Deletion Protection, a capability that allows customers to safeguard their critical CloudWatch log groups from accidental or unintended deletion. (<a href="https://github.com/aws/aws-sdk-js-v3/commit/02360329959d33ca2411d666e0f96643c6ba5191">02360329</a>)</li> <li><strong>client-cloudfront:</strong> Add TrustStore, ConnectionFunction APIs to CloudFront SDK (<a href="https://github.com/aws/aws-sdk-js-v3/commit/168505ee3412bd533b0a2d891fb2d9eedeef66a9">168505ee</a>)</li> </ul> <h5>Bug Fixes</h5> <ul> <li><strong>clients:</strong> export enum objects for string shapes (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7521">#7521</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/62f648dff5c6734948740f07f2d39aa4715bca6c">62f648df</a>)</li> <li><strong>cloudfront-signer:</strong> skip extended encoding for query parameters in the base url (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7515">#7515</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/954d411e083c384ecc959d86f9359ea8796990ff">954d411e</a>)</li> </ul> <h5>Tests</h5> <ul> <li>increase beforeAll hook timeouts (<a href="https://redirect.github.com/aws/aws-sdk-js-v3/pull/7518">#7518</a>) (<a href="https://github.com/aws/aws-sdk-js-v3/commit/720ba4cd02b75b71a2a1f0c7e9f007de9b8448e3">720ba4cd</a>)</li> </ul> <hr /> <p>For list of updated packages, view <strong>updated-packages.md</strong> in <strong>assets-3.939.0.zip</strong></p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/aws/aws-sdk-js-v3/blob/main/clients/client-eventbridge/CHANGELOG.md"><code>@aws-sdk/client-eventbridge</code>'s changelog</a>.</em></p> <blockquote> <h1><a href="https://github.com/aws/aws-sdk-js-v3/compare/v3.939.0...v3.940.0">3.940.0</a> (2025-11-25)</h1> <p><strong>Note:</strong> Version bump only for package <code>@aws-sdk/client-eventbridge</code></p> <h1><a href="https://github.com/aws/aws-sdk-js-v3/compare/v3.938.0...v3.939.0">3.939.0</a> (2025-11-24)</h1> <p><strong>Note:</strong> Version bump only for package <code>@aws-sdk/client-eventbridge</code></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/aws/aws-sdk-js-v3/commit/e9962f1c4512d6ea969ca621754b3db01ac54aa9"><code>e9962f1</code></a> Publish v3.940.0</li> <li><a href="https://github.com/aws/aws-sdk-js-v3/commit/15923791acb0f527cf323c58aecd5d4bea7fff29"><code>1592379</code></a> Publish v3.939.0</li> <li>See full diff in <a href="https://github.com/aws/aws-sdk-js-v3/commits/v3.940.0/clients/client-eventbridge">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…github-aws-runners#4925) Bumps the aws-powertools group in /lambdas with 4 updates: [@aws-lambda-powertools/parameters](https://github.com/aws-powertools/powertools-lambda-typescript), [@aws-lambda-powertools/logger](https://github.com/aws-powertools/powertools-lambda-typescript), [@aws-lambda-powertools/metrics](https://github.com/aws-powertools/powertools-lambda-typescript) and [@aws-lambda-powertools/tracer](https://github.com/aws-powertools/powertools-lambda-typescript). Updates `@aws-lambda-powertools/parameters` from 2.28.1 to 2.29.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/aws-powertools/powertools-lambda-typescript/releases"><code>@aws-lambda-powertools/parameters</code>'s releases</a>.</em></p> <blockquote> <h2>v2.29.0</h2> <h2>Summary</h2> <h3>🎉 Powertools for AWS Lambda (Typescript) - Event Handler Utility is now Generally Available (GA)</h3> <blockquote> <p><a href="https://docs.aws.amazon.com/powertools/typescript/latest/features/event-handler/rest/">Docs</a></p> </blockquote> <p>We're excited to announce that the Event Handler utility is now production-ready! 🚀 Event Handler provides lightweight routing to reduce boilerplate for API Gateway REST/HTTP API, ALB and Lambda Function URLs.</p> <blockquote> <p>⭐ Congratulations to <a href="https://github.com/yoshi-taka"><code>@yoshi-taka</code></a>, <a href="https://github.com/iamgerg"><code>@iamgerg</code></a>, <a href="https://github.com/fidelisojeah"><code>@fidelisojeah</code></a>, and <a href="https://github.com/benthorner"><code>@benthorner</code></a> for their first PR merged in the project 🎉</p> </blockquote> <h3>Import path update</h3> <p>With Event Handler moving to GA, the import path has changed from the experimental namespace to a stable one.</p> <pre lang="typescript"><code>// Before import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest'; <p>// Now import { Router } from '<code>@aws-lambda-powertools/event-handler/</code>http'; </code></pre></p> <h3>Support for HTTP APIs, ALB, and Function URL</h3> <p>Event Handler now supports HTTP APIs (API Gateway v2), Application Load Balancers (ALB) and Lambda Function URL in addition to the existing REST API and support. This means you can use the same routing API across different AWS services, making it easier to build and migrate serverless applications regardless of your chosen architecture.</p> <pre lang="typescript"><code>import { Router } from '@aws-lambda-powertools/event-handler/http'; import type { ALBEvent, APIGatewayProxyEvent, APIGatewayProxyEventV2, Context, LambdaFunctionURLEvent, } from 'aws-lambda'; <p>const app = new Router(); app.get('/hello', () => { return { message: 'Hello Event Handler!', }; });</p> <p>// Works across different services without any changes export const restApiHandler = (event: APIGatewayProxyEvent, context: Context) => app.resolve(event, context);</p> <p>export const httpApiHandler = ( </tr></table> </code></pre></p> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/aws-powertools/powertools-lambda-typescript/blob/main/CHANGELOG.md"><code>@aws-lambda-powertools/parameters</code>'s changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.28.1...v2.29.0">2.29.0</a> (2025-11-21)</h2> <h3>Improvements</h3> <ul> <li><strong>commons</strong> Make trace ID access more robust (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4693">#4693</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/b26cd2c7395e55fb33a6ce719bc69b1a11004446">b26cd2c</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li><strong>logger</strong> infinite loop on log buffer when item size is max bytes (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4741">#4741</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/f0677d4f1220df6f68f9fd8ece221306fdd9b154">f0677d4</a>)</li> <li><strong>logger</strong> not passing persistent keys to children (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4740">#4740</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/eafbe13aa6ca7067c2c8329150fdf600ebca12a7">eafbe13</a>)</li> <li><strong>event-handler</strong> moved the response mutation logic to the <code>composeMiddleware</code> function (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4773">#4773</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/2fe04e351aa4f8a104a145d3fcef7bb6d856506f">2fe04e3</a>)</li> <li><strong>event-handler</strong> handle repeated queryString values (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4755">#4755</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/5d3cf2de5821171e968577fcb1c74d5198e153d6">5d3cf2d</a>)</li> <li><strong>event-handler</strong> allow event handler response to return array (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4725">#4725</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/eef92ca929cd7a2551e228b20deae3b59044a0ee">eef92ca</a>)</li> </ul> <h3>Features</h3> <ul> <li><strong>logger</strong> use async local storage for logger (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4668">#4668</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/4507fccb8872975f4a3e683ec9034e7f71e67d30">4507fcc</a>)</li> <li><strong>metrics</strong> use async local storage for metrics (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4663">#4663</a>) (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4694">#4694</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/2e08f74cfe86571ef7f2388d3a028763561c11e9">2e08f74</a>)</li> <li><strong>parser</strong> add type for values parsed by DynamoDBStreamRecord (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4793">#4793</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/c2bd8499c38f2e9048782d717613a721b3e8ccc8">c2bd849</a>)</li> <li><strong>batch</strong> use async local storage for batch processing (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4700">#4700</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/67a8de7baec4a240bc5f22493a13c75289397d7c">67a8de7</a>)</li> <li><strong>event-handler</strong> add support for ALB (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4759">#4759</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/a4708925fb08da09044ea1592ea7df58e46f383d">a470892</a>)</li> <li><strong>event-handler</strong> expose response streaming in public API (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4743">#4743</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/be4e4e2b9f0a39210f972f22d03a382aea304f60">be4e4e2</a>)</li> <li><strong>event-handler</strong> add first-class support for binary responses (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4723">#4723</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/13dbcdccc3626d442f66c6037af7df88626dd9c2">13dbcdc</a>)</li> <li><strong>event-handler</strong> Add support for HTTP APIs (API Gateway v2) (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4714">#4714</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/2f700189aef42445a229da8a0d1446e1d63423fa">2f70018</a>)</li> </ul> <h3>Maintenance</h3> <ul> <li><strong>tracer</strong> bump aws-xray-sdk-core from 3.11.0 to 3.12.0 (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4792">#4792</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/afb5678ed6176d9d2e0a759993af0054a2c80b05">afb5678</a>)</li> <li><strong>event-handler</strong> unflag http handler from experimental (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4801">#4801</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/a2deb8d702bb305bbf017882ce16beb6b3c809aa">a2deb8d</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/fa726e0a56f738c62fe253d96fd1f70ae696cabf"><code>fa726e0</code></a> chore(ci): bump version to 2.29.0 (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4802">#4802</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/a2deb8d702bb305bbf017882ce16beb6b3c809aa"><code>a2deb8d</code></a> chore(event-handler): unflag http handler from experimental (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4801">#4801</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/c2bd8499c38f2e9048782d717613a721b3e8ccc8"><code>c2bd849</code></a> feat(parser): add type for values parsed by DynamoDBStreamRecord (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4793">#4793</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/afb5678ed6176d9d2e0a759993af0054a2c80b05"><code>afb5678</code></a> chore(deps): bump aws-xray-sdk-core from 3.11.0 to 3.12.0 (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4792">#4792</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/8806cadcfada8e76ca44ec64aa5b86f2853e3e65"><code>8806cad</code></a> docs(event-handler): added documentation for support for HTTP API, ALB and FU...</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/d2e0fcc504de8011fe91217976d2afcf99c1bed2"><code>d2e0fcc</code></a> chore(deps): upgrade InvokeStore to v0.2.1 (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4794">#4794</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/bccd0b178aa971af8fce755001178beea1316d4b"><code>bccd0b1</code></a> docs(event-handler): add response streaming docs (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4786">#4786</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/2279f9b0fa1dbb6f9fa3ea7a5de076bc9edc649f"><code>2279f9b</code></a> chore(deps): bump mkdocs-llmstxt from 0.4.0 to 0.5.0 in /docs (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4789">#4789</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/12c5e63cd36c574109f343e35591eacc8f2e6f2c"><code>12c5e63</code></a> chore(deps): bump actions/checkout from 5.0.1 to 6.0.0 (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4788">#4788</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/943bb4ff23bb125170e6b62b21f193d3fb8f7318"><code>943bb4f</code></a> docs(event-handler): update binary response docs (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4783">#4783</a>)</li> <li>Additional commits viewable in <a href="https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.28.1...v2.29.0">compare view</a></li> </ul> </details> <details> <summary>Maintainer changes</summary> <p>This version was pushed to npm by [GitHub Actions](<a href="https://www.npmjs.com/~GitHub">https://www.npmjs.com/~GitHub</a> Actions), a new releaser for <code>@aws-lambda-powertools/parameters</code> since your current version.</p> </details> <br /> Updates `@aws-lambda-powertools/logger` from 2.28.1 to 2.29.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/aws-powertools/powertools-lambda-typescript/releases"><code>@aws-lambda-powertools/logger</code>'s releases</a>.</em></p> <blockquote> <h2>v2.29.0</h2> <h2>Summary</h2> <h3>🎉 Powertools for AWS Lambda (Typescript) - Event Handler Utility is now Generally Available (GA)</h3> <blockquote> <p><a href="https://docs.aws.amazon.com/powertools/typescript/latest/features/event-handler/rest/">Docs</a></p> </blockquote> <p>We're excited to announce that the Event Handler utility is now production-ready! 🚀 Event Handler provides lightweight routing to reduce boilerplate for API Gateway REST/HTTP API, ALB and Lambda Function URLs.</p> <blockquote> <p>⭐ Congratulations to <a href="https://github.com/yoshi-taka"><code>@yoshi-taka</code></a>, <a href="https://github.com/iamgerg"><code>@iamgerg</code></a>, <a href="https://github.com/fidelisojeah"><code>@fidelisojeah</code></a>, and <a href="https://github.com/benthorner"><code>@benthorner</code></a> for their first PR merged in the project 🎉</p> </blockquote> <h3>Import path update</h3> <p>With Event Handler moving to GA, the import path has changed from the experimental namespace to a stable one.</p> <pre lang="typescript"><code>// Before import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest'; <p>// Now import { Router } from '<code>@aws-lambda-powertools/event-handler/</code>http'; </code></pre></p> <h3>Support for HTTP APIs, ALB, and Function URL</h3> <p>Event Handler now supports HTTP APIs (API Gateway v2), Application Load Balancers (ALB) and Lambda Function URL in addition to the existing REST API and support. This means you can use the same routing API across different AWS services, making it easier to build and migrate serverless applications regardless of your chosen architecture.</p> <pre lang="typescript"><code>import { Router } from '@aws-lambda-powertools/event-handler/http'; import type { ALBEvent, APIGatewayProxyEvent, APIGatewayProxyEventV2, Context, LambdaFunctionURLEvent, } from 'aws-lambda'; <p>const app = new Router(); app.get('/hello', () => { return { message: 'Hello Event Handler!', }; });</p> <p>// Works across different services without any changes export const restApiHandler = (event: APIGatewayProxyEvent, context: Context) => app.resolve(event, context);</p> <p>export const httpApiHandler = ( </tr></table> </code></pre></p> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/aws-powertools/powertools-lambda-typescript/blob/main/CHANGELOG.md"><code>@aws-lambda-powertools/logger</code>'s changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.28.1...v2.29.0">2.29.0</a> (2025-11-21)</h2> <h3>Improvements</h3> <ul> <li><strong>commons</strong> Make trace ID access more robust (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4693">#4693</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/b26cd2c7395e55fb33a6ce719bc69b1a11004446">b26cd2c</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li><strong>logger</strong> infinite loop on log buffer when item size is max bytes (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4741">#4741</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/f0677d4f1220df6f68f9fd8ece221306fdd9b154">f0677d4</a>)</li> <li><strong>logger</strong> not passing persistent keys to children (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4740">#4740</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/eafbe13aa6ca7067c2c8329150fdf600ebca12a7">eafbe13</a>)</li> <li><strong>event-handler</strong> moved the response mutation logic to the <code>composeMiddleware</code> function (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4773">#4773</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/2fe04e351aa4f8a104a145d3fcef7bb6d856506f">2fe04e3</a>)</li> <li><strong>event-handler</strong> handle repeated queryString values (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4755">#4755</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/5d3cf2de5821171e968577fcb1c74d5198e153d6">5d3cf2d</a>)</li> <li><strong>event-handler</strong> allow event handler response to return array (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4725">#4725</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/eef92ca929cd7a2551e228b20deae3b59044a0ee">eef92ca</a>)</li> </ul> <h3>Features</h3> <ul> <li><strong>logger</strong> use async local storage for logger (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4668">#4668</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/4507fccb8872975f4a3e683ec9034e7f71e67d30">4507fcc</a>)</li> <li><strong>metrics</strong> use async local storage for metrics (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4663">#4663</a>) (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4694">#4694</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/2e08f74cfe86571ef7f2388d3a028763561c11e9">2e08f74</a>)</li> <li><strong>parser</strong> add type for values parsed by DynamoDBStreamRecord (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4793">#4793</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/c2bd8499c38f2e9048782d717613a721b3e8ccc8">c2bd849</a>)</li> <li><strong>batch</strong> use async local storage for batch processing (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4700">#4700</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/67a8de7baec4a240bc5f22493a13c75289397d7c">67a8de7</a>)</li> <li><strong>event-handler</strong> add support for ALB (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4759">#4759</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/a4708925fb08da09044ea1592ea7df58e46f383d">a470892</a>)</li> <li><strong>event-handler</strong> expose response streaming in public API (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4743">#4743</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/be4e4e2b9f0a39210f972f22d03a382aea304f60">be4e4e2</a>)</li> <li><strong>event-handler</strong> add first-class support for binary responses (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4723">#4723</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/13dbcdccc3626d442f66c6037af7df88626dd9c2">13dbcdc</a>)</li> <li><strong>event-handler</strong> Add support for HTTP APIs (API Gateway v2) (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4714">#4714</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/2f700189aef42445a229da8a0d1446e1d63423fa">2f70018</a>)</li> </ul> <h3>Maintenance</h3> <ul> <li><strong>tracer</strong> bump aws-xray-sdk-core from 3.11.0 to 3.12.0 (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4792">#4792</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/afb5678ed6176d9d2e0a759993af0054a2c80b05">afb5678</a>)</li> <li><strong>event-handler</strong> unflag http handler from experimental (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4801">#4801</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/a2deb8d702bb305bbf017882ce16beb6b3c809aa">a2deb8d</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/fa726e0a56f738c62fe253d96fd1f70ae696cabf"><code>fa726e0</code></a> chore(ci): bump version to 2.29.0 (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4802">#4802</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/a2deb8d702bb305bbf017882ce16beb6b3c809aa"><code>a2deb8d</code></a> chore(event-handler): unflag http handler from experimental (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4801">#4801</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/c2bd8499c38f2e9048782d717613a721b3e8ccc8"><code>c2bd849</code></a> feat(parser): add type for values parsed by DynamoDBStreamRecord (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4793">#4793</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/afb5678ed6176d9d2e0a759993af0054a2c80b05"><code>afb5678</code></a> chore(deps): bump aws-xray-sdk-core from 3.11.0 to 3.12.0 (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4792">#4792</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/8806cadcfada8e76ca44ec64aa5b86f2853e3e65"><code>8806cad</code></a> docs(event-handler): added documentation for support for HTTP API, ALB and FU...</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/d2e0fcc504de8011fe91217976d2afcf99c1bed2"><code>d2e0fcc</code></a> chore(deps): upgrade InvokeStore to v0.2.1 (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4794">#4794</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/bccd0b178aa971af8fce755001178beea1316d4b"><code>bccd0b1</code></a> docs(event-handler): add response streaming docs (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4786">#4786</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/2279f9b0fa1dbb6f9fa3ea7a5de076bc9edc649f"><code>2279f9b</code></a> chore(deps): bump mkdocs-llmstxt from 0.4.0 to 0.5.0 in /docs (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4789">#4789</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/12c5e63cd36c574109f343e35591eacc8f2e6f2c"><code>12c5e63</code></a> chore(deps): bump actions/checkout from 5.0.1 to 6.0.0 (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4788">#4788</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/943bb4ff23bb125170e6b62b21f193d3fb8f7318"><code>943bb4f</code></a> docs(event-handler): update binary response docs (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4783">#4783</a>)</li> <li>Additional commits viewable in <a href="https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.28.1...v2.29.0">compare view</a></li> </ul> </details> <details> <summary>Maintainer changes</summary> <p>This version was pushed to npm by [GitHub Actions](<a href="https://www.npmjs.com/~GitHub">https://www.npmjs.com/~GitHub</a> Actions), a new releaser for <code>@aws-lambda-powertools/logger</code> since your current version.</p> </details> <br /> Updates `@aws-lambda-powertools/metrics` from 2.28.1 to 2.29.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/aws-powertools/powertools-lambda-typescript/releases"><code>@aws-lambda-powertools/metrics</code>'s releases</a>.</em></p> <blockquote> <h2>v2.29.0</h2> <h2>Summary</h2> <h3>🎉 Powertools for AWS Lambda (Typescript) - Event Handler Utility is now Generally Available (GA)</h3> <blockquote> <p><a href="https://docs.aws.amazon.com/powertools/typescript/latest/features/event-handler/rest/">Docs</a></p> </blockquote> <p>We're excited to announce that the Event Handler utility is now production-ready! 🚀 Event Handler provides lightweight routing to reduce boilerplate for API Gateway REST/HTTP API, ALB and Lambda Function URLs.</p> <blockquote> <p>⭐ Congratulations to <a href="https://github.com/yoshi-taka"><code>@yoshi-taka</code></a>, <a href="https://github.com/iamgerg"><code>@iamgerg</code></a>, <a href="https://github.com/fidelisojeah"><code>@fidelisojeah</code></a>, and <a href="https://github.com/benthorner"><code>@benthorner</code></a> for their first PR merged in the project 🎉</p> </blockquote> <h3>Import path update</h3> <p>With Event Handler moving to GA, the import path has changed from the experimental namespace to a stable one.</p> <pre lang="typescript"><code>// Before import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest'; <p>// Now import { Router } from '<code>@aws-lambda-powertools/event-handler/</code>http'; </code></pre></p> <h3>Support for HTTP APIs, ALB, and Function URL</h3> <p>Event Handler now supports HTTP APIs (API Gateway v2), Application Load Balancers (ALB) and Lambda Function URL in addition to the existing REST API and support. This means you can use the same routing API across different AWS services, making it easier to build and migrate serverless applications regardless of your chosen architecture.</p> <pre lang="typescript"><code>import { Router } from '@aws-lambda-powertools/event-handler/http'; import type { ALBEvent, APIGatewayProxyEvent, APIGatewayProxyEventV2, Context, LambdaFunctionURLEvent, } from 'aws-lambda'; <p>const app = new Router(); app.get('/hello', () => { return { message: 'Hello Event Handler!', }; });</p> <p>// Works across different services without any changes export const restApiHandler = (event: APIGatewayProxyEvent, context: Context) => app.resolve(event, context);</p> <p>export const httpApiHandler = ( </tr></table> </code></pre></p> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/aws-powertools/powertools-lambda-typescript/blob/main/CHANGELOG.md"><code>@aws-lambda-powertools/metrics</code>'s changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.28.1...v2.29.0">2.29.0</a> (2025-11-21)</h2> <h3>Improvements</h3> <ul> <li><strong>commons</strong> Make trace ID access more robust (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4693">#4693</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/b26cd2c7395e55fb33a6ce719bc69b1a11004446">b26cd2c</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li><strong>logger</strong> infinite loop on log buffer when item size is max bytes (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4741">#4741</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/f0677d4f1220df6f68f9fd8ece221306fdd9b154">f0677d4</a>)</li> <li><strong>logger</strong> not passing persistent keys to children (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4740">#4740</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/eafbe13aa6ca7067c2c8329150fdf600ebca12a7">eafbe13</a>)</li> <li><strong>event-handler</strong> moved the response mutation logic to the <code>composeMiddleware</code> function (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4773">#4773</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/2fe04e351aa4f8a104a145d3fcef7bb6d856506f">2fe04e3</a>)</li> <li><strong>event-handler</strong> handle repeated queryString values (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4755">#4755</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/5d3cf2de5821171e968577fcb1c74d5198e153d6">5d3cf2d</a>)</li> <li><strong>event-handler</strong> allow event handler response to return array (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4725">#4725</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/eef92ca929cd7a2551e228b20deae3b59044a0ee">eef92ca</a>)</li> </ul> <h3>Features</h3> <ul> <li><strong>logger</strong> use async local storage for logger (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4668">#4668</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/4507fccb8872975f4a3e683ec9034e7f71e67d30">4507fcc</a>)</li> <li><strong>metrics</strong> use async local storage for metrics (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4663">#4663</a>) (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4694">#4694</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/2e08f74cfe86571ef7f2388d3a028763561c11e9">2e08f74</a>)</li> <li><strong>parser</strong> add type for values parsed by DynamoDBStreamRecord (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4793">#4793</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/c2bd8499c38f2e9048782d717613a721b3e8ccc8">c2bd849</a>)</li> <li><strong>batch</strong> use async local storage for batch processing (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4700">#4700</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/67a8de7baec4a240bc5f22493a13c75289397d7c">67a8de7</a>)</li> <li><strong>event-handler</strong> add support for ALB (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4759">#4759</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/a4708925fb08da09044ea1592ea7df58e46f383d">a470892</a>)</li> <li><strong>event-handler</strong> expose response streaming in public API (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4743">#4743</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/be4e4e2b9f0a39210f972f22d03a382aea304f60">be4e4e2</a>)</li> <li><strong>event-handler</strong> add first-class support for binary responses (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4723">#4723</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/13dbcdccc3626d442f66c6037af7df88626dd9c2">13dbcdc</a>)</li> <li><strong>event-handler</strong> Add support for HTTP APIs (API Gateway v2) (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4714">#4714</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/2f700189aef42445a229da8a0d1446e1d63423fa">2f70018</a>)</li> </ul> <h3>Maintenance</h3> <ul> <li><strong>tracer</strong> bump aws-xray-sdk-core from 3.11.0 to 3.12.0 (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4792">#4792</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/afb5678ed6176d9d2e0a759993af0054a2c80b05">afb5678</a>)</li> <li><strong>event-handler</strong> unflag http handler from experimental (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4801">#4801</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/a2deb8d702bb305bbf017882ce16beb6b3c809aa">a2deb8d</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/fa726e0a56f738c62fe253d96fd1f70ae696cabf"><code>fa726e0</code></a> chore(ci): bump version to 2.29.0 (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4802">#4802</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/a2deb8d702bb305bbf017882ce16beb6b3c809aa"><code>a2deb8d</code></a> chore(event-handler): unflag http handler from experimental (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4801">#4801</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/c2bd8499c38f2e9048782d717613a721b3e8ccc8"><code>c2bd849</code></a> feat(parser): add type for values parsed by DynamoDBStreamRecord (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4793">#4793</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/afb5678ed6176d9d2e0a759993af0054a2c80b05"><code>afb5678</code></a> chore(deps): bump aws-xray-sdk-core from 3.11.0 to 3.12.0 (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4792">#4792</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/8806cadcfada8e76ca44ec64aa5b86f2853e3e65"><code>8806cad</code></a> docs(event-handler): added documentation for support for HTTP API, ALB and FU...</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/d2e0fcc504de8011fe91217976d2afcf99c1bed2"><code>d2e0fcc</code></a> chore(deps): upgrade InvokeStore to v0.2.1 (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4794">#4794</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/bccd0b178aa971af8fce755001178beea1316d4b"><code>bccd0b1</code></a> docs(event-handler): add response streaming docs (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4786">#4786</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/2279f9b0fa1dbb6f9fa3ea7a5de076bc9edc649f"><code>2279f9b</code></a> chore(deps): bump mkdocs-llmstxt from 0.4.0 to 0.5.0 in /docs (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4789">#4789</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/12c5e63cd36c574109f343e35591eacc8f2e6f2c"><code>12c5e63</code></a> chore(deps): bump actions/checkout from 5.0.1 to 6.0.0 (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4788">#4788</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/943bb4ff23bb125170e6b62b21f193d3fb8f7318"><code>943bb4f</code></a> docs(event-handler): update binary response docs (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4783">#4783</a>)</li> <li>Additional commits viewable in <a href="https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.28.1...v2.29.0">compare view</a></li> </ul> </details> <details> <summary>Maintainer changes</summary> <p>This version was pushed to npm by [GitHub Actions](<a href="https://www.npmjs.com/~GitHub">https://www.npmjs.com/~GitHub</a> Actions), a new releaser for <code>@aws-lambda-powertools/metrics</code> since your current version.</p> </details> <br /> Updates `@aws-lambda-powertools/tracer` from 2.28.1 to 2.29.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/aws-powertools/powertools-lambda-typescript/releases"><code>@aws-lambda-powertools/tracer</code>'s releases</a>.</em></p> <blockquote> <h2>v2.29.0</h2> <h2>Summary</h2> <h3>🎉 Powertools for AWS Lambda (Typescript) - Event Handler Utility is now Generally Available (GA)</h3> <blockquote> <p><a href="https://docs.aws.amazon.com/powertools/typescript/latest/features/event-handler/rest/">Docs</a></p> </blockquote> <p>We're excited to announce that the Event Handler utility is now production-ready! 🚀 Event Handler provides lightweight routing to reduce boilerplate for API Gateway REST/HTTP API, ALB and Lambda Function URLs.</p> <blockquote> <p>⭐ Congratulations to <a href="https://github.com/yoshi-taka"><code>@yoshi-taka</code></a>, <a href="https://github.com/iamgerg"><code>@iamgerg</code></a>, <a href="https://github.com/fidelisojeah"><code>@fidelisojeah</code></a>, and <a href="https://github.com/benthorner"><code>@benthorner</code></a> for their first PR merged in the project 🎉</p> </blockquote> <h3>Import path update</h3> <p>With Event Handler moving to GA, the import path has changed from the experimental namespace to a stable one.</p> <pre lang="typescript"><code>// Before import { Router } from '@aws-lambda-powertools/event-handler/experimental-rest'; <p>// Now import { Router } from '<code>@aws-lambda-powertools/event-handler/</code>http'; </code></pre></p> <h3>Support for HTTP APIs, ALB, and Function URL</h3> <p>Event Handler now supports HTTP APIs (API Gateway v2), Application Load Balancers (ALB) and Lambda Function URL in addition to the existing REST API and support. This means you can use the same routing API across different AWS services, making it easier to build and migrate serverless applications regardless of your chosen architecture.</p> <pre lang="typescript"><code>import { Router } from '@aws-lambda-powertools/event-handler/http'; import type { ALBEvent, APIGatewayProxyEvent, APIGatewayProxyEventV2, Context, LambdaFunctionURLEvent, } from 'aws-lambda'; <p>const app = new Router(); app.get('/hello', () => { return { message: 'Hello Event Handler!', }; });</p> <p>// Works across different services without any changes export const restApiHandler = (event: APIGatewayProxyEvent, context: Context) => app.resolve(event, context);</p> <p>export const httpApiHandler = ( </tr></table> </code></pre></p> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/aws-powertools/powertools-lambda-typescript/blob/main/CHANGELOG.md"><code>@aws-lambda-powertools/tracer</code>'s changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.28.1...v2.29.0">2.29.0</a> (2025-11-21)</h2> <h3>Improvements</h3> <ul> <li><strong>commons</strong> Make trace ID access more robust (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4693">#4693</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/b26cd2c7395e55fb33a6ce719bc69b1a11004446">b26cd2c</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li><strong>logger</strong> infinite loop on log buffer when item size is max bytes (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4741">#4741</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/f0677d4f1220df6f68f9fd8ece221306fdd9b154">f0677d4</a>)</li> <li><strong>logger</strong> not passing persistent keys to children (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4740">#4740</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/eafbe13aa6ca7067c2c8329150fdf600ebca12a7">eafbe13</a>)</li> <li><strong>event-handler</strong> moved the response mutation logic to the <code>composeMiddleware</code> function (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4773">#4773</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/2fe04e351aa4f8a104a145d3fcef7bb6d856506f">2fe04e3</a>)</li> <li><strong>event-handler</strong> handle repeated queryString values (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4755">#4755</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/5d3cf2de5821171e968577fcb1c74d5198e153d6">5d3cf2d</a>)</li> <li><strong>event-handler</strong> allow event handler response to return array (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4725">#4725</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/eef92ca929cd7a2551e228b20deae3b59044a0ee">eef92ca</a>)</li> </ul> <h3>Features</h3> <ul> <li><strong>logger</strong> use async local storage for logger (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4668">#4668</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/4507fccb8872975f4a3e683ec9034e7f71e67d30">4507fcc</a>)</li> <li><strong>metrics</strong> use async local storage for metrics (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4663">#4663</a>) (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4694">#4694</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/2e08f74cfe86571ef7f2388d3a028763561c11e9">2e08f74</a>)</li> <li><strong>parser</strong> add type for values parsed by DynamoDBStreamRecord (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4793">#4793</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/c2bd8499c38f2e9048782d717613a721b3e8ccc8">c2bd849</a>)</li> <li><strong>batch</strong> use async local storage for batch processing (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4700">#4700</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/67a8de7baec4a240bc5f22493a13c75289397d7c">67a8de7</a>)</li> <li><strong>event-handler</strong> add support for ALB (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4759">#4759</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/a4708925fb08da09044ea1592ea7df58e46f383d">a470892</a>)</li> <li><strong>event-handler</strong> expose response streaming in public API (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4743">#4743</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/be4e4e2b9f0a39210f972f22d03a382aea304f60">be4e4e2</a>)</li> <li><strong>event-handler</strong> add first-class support for binary responses (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4723">#4723</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/13dbcdccc3626d442f66c6037af7df88626dd9c2">13dbcdc</a>)</li> <li><strong>event-handler</strong> Add support for HTTP APIs (API Gateway v2) (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4714">#4714</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/2f700189aef42445a229da8a0d1446e1d63423fa">2f70018</a>)</li> </ul> <h3>Maintenance</h3> <ul> <li><strong>tracer</strong> bump aws-xray-sdk-core from 3.11.0 to 3.12.0 (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4792">#4792</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/afb5678ed6176d9d2e0a759993af0054a2c80b05">afb5678</a>)</li> <li><strong>event-handler</strong> unflag http handler from experimental (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4801">#4801</a>) (<a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/a2deb8d702bb305bbf017882ce16beb6b3c809aa">a2deb8d</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/fa726e0a56f738c62fe253d96fd1f70ae696cabf"><code>fa726e0</code></a> chore(ci): bump version to 2.29.0 (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4802">#4802</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/a2deb8d702bb305bbf017882ce16beb6b3c809aa"><code>a2deb8d</code></a> chore(event-handler): unflag http handler from experimental (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4801">#4801</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/c2bd8499c38f2e9048782d717613a721b3e8ccc8"><code>c2bd849</code></a> feat(parser): add type for values parsed by DynamoDBStreamRecord (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4793">#4793</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/afb5678ed6176d9d2e0a759993af0054a2c80b05"><code>afb5678</code></a> chore(deps): bump aws-xray-sdk-core from 3.11.0 to 3.12.0 (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4792">#4792</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/8806cadcfada8e76ca44ec64aa5b86f2853e3e65"><code>8806cad</code></a> docs(event-handler): added documentation for support for HTTP API, ALB and FU...</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/d2e0fcc504de8011fe91217976d2afcf99c1bed2"><code>d2e0fcc</code></a> chore(deps): upgrade InvokeStore to v0.2.1 (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4794">#4794</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/bccd0b178aa971af8fce755001178beea1316d4b"><code>bccd0b1</code></a> docs(event-handler): add response streaming docs (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4786">#4786</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/2279f9b0fa1dbb6f9fa3ea7a5de076bc9edc649f"><code>2279f9b</code></a> chore(deps): bump mkdocs-llmstxt from 0.4.0 to 0.5.0 in /docs (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4789">#4789</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/12c5e63cd36c574109f343e35591eacc8f2e6f2c"><code>12c5e63</code></a> chore(deps): bump actions/checkout from 5.0.1 to 6.0.0 (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4788">#4788</a>)</li> <li><a href="https://github.com/aws-powertools/powertools-lambda-typescript/commit/943bb4ff23bb125170e6b62b21f193d3fb8f7318"><code>943bb4f</code></a> docs(event-handler): update binary response docs (<a href="https://redirect.github.com/aws-powertools/powertools-lambda-typescript/issues/4783">#4783</a>)</li> <li>Additional commits viewable in <a href="https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.28.1...v2.29.0">compare view</a></li> </ul> </details> <details> <summary>Maintainer changes</summary> <p>This version was pushed to npm by [GitHub Actions](<a href="https://www.npmjs.com/~GitHub">https://www.npmjs.com/~GitHub</a> Actions), a new releaser for <code>@aws-lambda-powertools/tracer</code> since your current version.</p> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
26dfb11 to
4f827de
Compare
npalm
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@iainlane @guicaulada Thanks a lot!!!
…ingle invocation (#4603) Currently we restrict the `scale-up` Lambda to only handle a single event at a time. In very busy environments this can prove to be a bottleneck: there are calls to GitHub and AWS APIs that happen each time, and they can end up taking long enough that we can't process job queued events faster than they arrive. In our environment we are also using a pool, and typically we have responded to the alerts generated by this (SQS queue length growing) by expanding the size of the pool. This helps because we will more frequently find that we don't need to scale up, which allows the lambdas to exit a bit earlier, so we can get through the queue faster. But it makes the environment much less responsive to changes in usage patterns. At its core, this Lambda's task is to construct an EC2 `CreateFleet` call to create instances, after working out how many are needed. This is a job that can be batched. We can take any number of events, calculate the diff between our current state and the number of jobs we have, capping at the maximum, and then issue a single call. The thing to be careful about is how to handle partial failures, if EC2 creates some of the instances we wanted but not all of them. Lambda has a configurable function response type which can be set to `ReportBatchItemFailures`. In this mode, we return a list of failed messages from our handler and those are retried. We can make use of this to give back as many events as we failed to process. Now we're potentially processing multiple events in a single Lambda, one thing we should optimise for is not recreating GitHub API clients. We need one client for the app itself, which we use to find out installation IDs, and then one client for each installation which is relevant to the batch of events we are processing. This is done by creating a new client the first time we see an event for a given installation. We also remove the same `batch_size = 1` constraint from the `job-retry` Lambda. This Lambda is used to retry events that previously failed. However, instead of reporting failures to be retried, here we maintain the pre-existing fault-tolerant behaviour where errors are logged but explicitly do not cause message retries, avoiding infinite loops from persistent GitHub API issues or malformed events. Tests are added for all of this. Tests in a private repo (sorry) look good. This was running ephemeral runners with no pool, SSM high throughput enabled, the job queued check \_dis_abled, batch size of 200, wait time of 10 seconds. The workflow runs are each a matrix with 250 jobs.  --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Niek Palm <npalm@users.noreply.github.com> Co-authored-by: Niek Palm <niek.palm@philips.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>




Currently we restrict the
scale-upLambda to only handle a single event at a time. In very busy environments this can prove to be a bottleneck: there are calls to GitHub and AWS APIs that happen each time, and they can end up taking long enough that we can't process job queued events faster than they arrive.In our environment we are also using a pool, and typically we have responded to the alerts generated by this (SQS queue length growing) by expanding the size of the pool. This helps because we will more frequently find that we don't need to scale up, which allows the lambdas to exit a bit earlier, so we can get through the queue faster. But it makes the environment much less responsive to changes in usage patterns.
At its core, this Lambda's task is to construct an EC2
CreateFleetcall to create instances, after working out how many are needed. This is a job that can be batched. We can take any number of events, calculate the diff between our current state and the number of jobs we have, capping at the maximum, and then issue a single call.The thing to be careful about is how to handle partial failures, if EC2 creates some of the instances we wanted but not all of them. Lambda has a configurable function response type which can be set to
ReportBatchItemFailures. In this mode, we return a list of failed messages from our handler and those are retried. We can make use of this to give back as many events as we failed to process.Now we're potentially processing multiple events in a single Lambda, one thing we should optimise for is not recreating GitHub API clients. We need one client for the app itself, which we use to find out installation IDs, and then one client for each installation which is relevant to the batch of events we are processing. This is done by creating a new client the first time we see an event for a given installation.
We also remove the same
batch_size = 1constraint from thejob-retryLambda. This Lambda is used to retry events that previously failed. However, instead of reporting failures to be retried, here we maintain the pre-existing fault-tolerant behaviour where errors are logged but explicitly do not cause message retries, avoiding infinite loops from persistent GitHub API issues or malformed events.Tests are added for all of this.
Tests in a private repo (sorry) look good. This was running ephemeral runners with no pool, SSM high throughput enabled, the job queued check _dis_abled, batch size of 200, wait time of 10 seconds. The workflow runs are each a matrix with 250 jobs.