AWS powertools documentation change
Summary
Reformatted IdempotencyConfig parameter table with new markdown syntax
Security assessment
Presentation change only, preserves existing security-related parameters like hash functions and validation.
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