AWS Security ChangesHomeSearch

AWS powertools documentation change

Service: powertools · 2026-04-19 · Documentation low

File: powertools/typescript/latest/features/idempotency.md

Summary

Updated table formatting in markdown documentation for idempotency feature configuration parameters and example data, and updated the document date from 2026-03-19 to 2026-04-14.

Security assessment

The changes are purely cosmetic and formatting updates to improve markdown table readability. No security-related content was added, removed, or modified. The changes include updating table syntax and a version bump for an emoji asset (from 15.1.0 to 16.0.1). There is no evidence of addressing a security vulnerability, weakness, or incident.

Diff

diff --git a/powertools/typescript/latest/features/idempotency.md b/powertools/typescript/latest/features/idempotency.md
index 3d682a90b..f9d7bac22 100644
--- a//powertools/typescript/latest/features/idempotency.md
+++ b//powertools/typescript/latest/features/idempotency.md
@@ -2290 +2290,11 @@ When using DynamoDB as a persistence layer, you can alter the attribute names by
-||Parameter |Required |Default |Description || | ------------------------ | ------------------ | ------------------------------------ | -------------------------------------------------------------------------------------------------------- | ||**tableName** |![✔](../../assets/external/cdn.jsdelivr.net/gh/jdecked/[email protected]/assets/svg/2714.svg) | |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** | ![✔](../../assets/external/cdn.jsdelivr.net/gh/jdecked/[email protected]/assets/svg/2714.svg) |  | 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.  
@@ -2448 +2458,8 @@ When using Cache as a persistence layer, you can alter the attribute names by pa
-||Parameter |Required |Default |Description || | ------------------------ | ------------------ | ------------------------------------ | -------------------------------------------------------------------------------------------------------- | ||**client** |![✔](../../assets/external/cdn.jsdelivr.net/gh/jdecked/[email protected]/assets/svg/2714.svg) | |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** | ![✔](../../assets/external/cdn.jsdelivr.net/gh/jdecked/[email protected]/assets/svg/2714.svg) |  | 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  
@@ -2545 +2562,11 @@ 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){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) ||
+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)  
@@ -3650 +3677,5 @@ 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 |   
@@ -4654 +4685 @@ If you're interested in a deep dive on how Amazon uses idempotency when building
-2026-03-19 
+2026-04-14