AWS powertools documentation change
Summary
Updated Lambda runtime from nodejs22.x to nodejs24.x in multiple code examples
Security assessment
Runtime version update is routine maintenance with no specific security context mentioned.
Diff
diff --git a/powertools/typescript/latest/features/idempotency.md b/powertools/typescript/latest/features/idempotency.md index f9c7f7c71..b0112636c 100644 --- a//powertools/typescript/latest/features/idempotency.md +++ b//powertools/typescript/latest/features/idempotency.md @@ -46 +46 @@ Event Handler - * [ HTTP API ](../event-handler/rest/) + * [ HTTP API ](../event-handler/http/) @@ -385 +385 @@ template.yaml - Runtime: nodejs22.x + Runtime: nodejs24.x @@ -772 +772 @@ template.ts - compatibleRuntimes: [Runtime.NODEJS_22_X], + compatibleRuntimes: [Runtime.NODEJS_22_X, Runtime.NODEJS_24_X], @@ -785 +785 @@ template.ts - runtime: Runtime.NODEJS_22_X, + runtime: Runtime.NODEJS_24_X, @@ -876 +876 @@ template.ts - Runtime: nodejs22.x + Runtime: nodejs24.x @@ -2289,11 +2289 @@ When using DynamoDB as a persistence layer, you can alter the attribute names by -Parameter | Required | Default | Description ----|---|---|--- -**tableName** |  | | Table name to store state -**keyAttr** | | `id` | Partition key of the table. Hashed representation of the payload (unless **sort_key_attr** is specified) -**expiryAttr** | | `expiration` | Unix timestamp of when record expires -**inProgressExpiryAttr** | | `in_progress_expiration` | Unix timestamp of when record expires while in progress (in case of the invocation times out) -**statusAttr** | | `status` | Stores status of the lambda execution during and after invocation -**dataAttr** | | `data` | Stores results of successfully executed Lambda handlers -**validationKeyAttr** | | `validation` | Hashed representation of the parts of the event used for validation -**sortKeyAttr** | | | Sort key of the table (if table is configured with a sort key). -**staticPkValue** | | `idempotency#{LAMBDA_FUNCTION_NAME}` | Static value to use as the partition key. Only used when **sort_key_attr** is set. +||Parameter |Required |Default |Description || | ------------------------ | ------------------ | ------------------------------------ | -------------------------------------------------------------------------------------------------------- | ||**tableName** | | |Table name to store state || ||**keyAttr** | |`id` |Partition key of the table. Hashed representation of the payload (unless **sort_key_attr** is specified) || ||**expiryAttr** | |`expiration` |Unix timestamp of when record expires || ||**inProgressExpiryAttr** | |`in_progress_expiration` |Unix timestamp of when record expires while in progress (in case of the invocation times out) || ||**statusAttr** | |`status` |Stores status of the lambda execution during and after invocation || ||**dataAttr** | |`data` |Stores results of successfully executed Lambda handlers || ||**validationKeyAttr** | |`validation` |Hashed representation of the parts of the event used for validation || ||**sortKeyAttr** | | |Sort key of the table (if table is configured with a sort key). || ||**staticPkValue** | |`idempotency#{LAMBDA_FUNCTION_NAME}` |Static value to use as the partition key. Only used when **sort_key_attr** is set. || @@ -2457,8 +2447 @@ When using Cache as a persistence layer, you can alter the attribute names by pa -Parameter | Required | Default | Description ----|---|---|--- -**client** |  | | A connected Redis-compatible client instance -**expiryAttr** | | `expiration` | Unix timestamp of when record expires -**inProgressExpiryAttr** | | `in_progress_expiration` | Unix timestamp of when record expires while in progress (in case of the invocation times out) -**statusAttr** | | `status` | Stores status of the lambda execution during and after invocation -**dataAttr** | | `data` | Stores results of successfully executed Lambda handlers -**validationKeyAttr** | | `validation` | Hashed representation of the parts of the event used for validation +||Parameter |Required |Default |Description || | ------------------------ | ------------------ | ------------------------------------ | -------------------------------------------------------------------------------------------------------- | ||**client** | | |A connected Redis-compatible client instance || ||**expiryAttr** | |`expiration` |Unix timestamp of when record expires || ||**inProgressExpiryAttr** | |`in_progress_expiration` |Unix timestamp of when record expires while in progress (in case of the invocation times out) || ||**statusAttr** | |`status` |Stores status of the lambda execution during and after invocation || ||**dataAttr** | |`data` |Stores results of successfully executed Lambda handlers || ||**validationKeyAttr** | |`validation` |Hashed representation of the parts of the event used for validation || @@ -2561,11 +2544 @@ Idempotent decorator can be further configured with **`IdempotencyConfig`** as s -Parameter | Default | Description ----|---|--- -**eventKeyJmespath** | `''` | JMESPath expression to extract the idempotency key from the event record using [built-in functions](../jmespath/#built-in-jmespath-functions) -**payloadValidationJmespath** | `''` | JMESPath expression to validate that the specified fields haven't changed across requests for the same idempotency key _e.g., payload tampering._ -**jmesPathOptions** | `undefined` | Custom JMESPath functions to use when parsing the JMESPath expressions. See [Custom JMESPath Functions](./#custom-jmespath-functions) -**throwOnNoIdempotencyKey** | `false` | Throw an error if no idempotency key was found in the request -**expiresAfterSeconds** | 3600 | The number of seconds to wait before a record is expired, allowing a new transaction with the same idempotency key -**useLocalCache** | `false` | Whether to cache idempotency results in-memory to save on persistence storage latency and costs -**localCacheMaxItems** | 256 | Max number of items to store in local cache -**hashFunction** | `md5` | Function to use for calculating hashes, as provided by the [crypto](https://nodejs.org/api/crypto.html#cryptocreatehashalgorithm-options) module in the standard library. -**responseHook** | `undefined` | Function to use for processing the stored Idempotent response. This function hook is called when an existing idempotent response is found. See [Manipulating The Idempotent Response](./#manipulating-the-idempotent-response) +||Parameter |Default |Description || | ----------------------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||**eventKeyJmespath** |`''` |JMESPath expression to extract the idempotency key from the event record using [built-in functions](../jmespath/#built-in-jmespath-functions){target="_blank"} || ||**payloadValidationJmespath** |`''` |JMESPath expression to validate that the specified fields haven't changed across requests for the same idempotency key _e.g., payload tampering._ || ||**jmesPathOptions** |`undefined` |Custom JMESPath functions to use when parsing the JMESPath expressions. See [Custom JMESPath Functions](./#custom-jmespath-functions) || ||**throwOnNoIdempotencyKey** |`false` |Throw an error if no idempotency key was found in the request || ||**expiresAfterSeconds** |3600 |The number of seconds to wait before a record is expired, allowing a new transaction with the same idempotency key || ||**useLocalCache** |`false` |Whether to cache idempotency results in-memory to save on persistence storage latency and costs || ||**localCacheMaxItems** |256 |Max number of items to store in local cache || ||**hashFunction** |`md5` |Function to use for calculating hashes, as provided by the [crypto](https://nodejs.org/api/crypto.html#cryptocreatehashalgorithm-options) module in the standard library. || ||**responseHook** |`undefined` |Function to use for processing the stored Idempotent response. This function hook is called when an existing idempotent response is found. See [Manipulating The Idempotent Response](./#manipulating-the-idempotent-response) || @@ -3676,5 +3649 @@ The example function above would cause data to be stored in DynamoDB like this: -id | sort_key | expiration | status | data ----|---|---|---|--- -idempotency#MyLambdaFunction | 1e956ef7da78d0cb890be999aecc0c9e | 1636549553 | COMPLETED | {"paymentId": "12345, "message": "success", "statusCode": 200} -idempotency#MyLambdaFunction | 2b2cdb5f86361e97b4383087c1ffdf27 | 1636549571 | COMPLETED | {"paymentId": "527212", "message": "success", "statusCode": 200} -idempotency#MyLambdaFunction | f091d2527ad1c78f05d54cc3f363be80 | 1636549585 | IN_PROGRESS | +||id |sort_key |expiration |status |data || | ---------------------------- | -------------------------------- | ---------- | ----------- | ---------------------------------------------------------------- | ||idempotency#MyLambdaFunction |1e956ef7da78d0cb890be999aecc0c9e |1636549553 |COMPLETED |{"paymentId": "12345, "message": "success", "statusCode": 200} || ||idempotency#MyLambdaFunction |2b2cdb5f86361e97b4383087c1ffdf27 |1636549571 |COMPLETED |{"paymentId": "527212", "message": "success", "statusCode": 200} || ||idempotency#MyLambdaFunction |f091d2527ad1c78f05d54cc3f363be80 |1636549585 |IN_PROGRESS | || @@ -4684 +4653 @@ If you're interested in a deep dive on how Amazon uses idempotency when building -2025-10-23 +2025-11-21