Skip to content

Commit ad66fd2

Browse files
authored
docs: clarify version mismatch risks (#4103)
1 parent 54b0863 commit ad66fd2

File tree

2 files changed

+60
-35
lines changed

2 files changed

+60
-35
lines changed

docs/getting-started/installation.md

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ The toolkit is compatible with both TypeScript and JavaScript code bases, and su
1212
All features are available as individual packages, so you can install only the ones you need, for example:
1313

1414
* **Logger**: `npm i @aws-lambda-powertools/logger`{.copyMe}
15+
* **Event Handler**: `npm i @aws-lambda-powertools/event-handler`{.copyMe}
1516
* **Metrics**: `npm i @aws-lambda-powertools/metrics`{.copyMe}
1617
* **Tracer**: `npm i @aws-lambda-powertools/tracer`{.copyMe}
1718

@@ -21,12 +22,14 @@ See the [Features](../features/index.md) page for a complete list of available u
2122

2223
Some features use additional dependencies like the AWS SDK for JavaScript v3, which might you need to install separately. Below is a list of utilities that use external dependencies, and the packages you need to install to use them.
2324

24-
| Feature | Install | Default dependency |
25-
| -------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ------------------- |
26-
| **[Tracer](../features/tracer.md)** | **`npm i @aws-lambda-powertools/tracer`**{.copyMe} | `aws-xray-sdk-core` |
27-
| **[Idempotency](../features/idempotency.md)** | **`npm i @aws-lambda-powertools/idempotency @aws-sdk/client-dynamodb @aws-sdk/lib-dynamodb`**{.copyMe} | |
28-
| **[Parameters (SSM)](../features/parameters.md)** | **`npm i @aws-lambda-powertools/parameters @aws-sdk/client-ssm`**{.copyMe} | |
29-
| **[Parameters (Secrets Manager)](../features/parameters.md)** | **`npm i @aws-lambda-powertools/parameters @aws-sdk/client-secrets-manager`**{.copyMe} | |
30-
| **[Parameters (AppConfig)](../features/parameters.md)** | **`npm i @aws-lambda-powertools/parameters @aws-sdk/client-appconfigdata`**{.copyMe} | |
31-
| **[Parser](../features/parser.md)** | **`npm i @aws-lambda-powertools/parser zod@~3`**{.copyMe} | |
32-
| **[Validation](../features/validation.md)** | **`npm i @aws-lambda-powertools/validation`**{.copyMe} | `ajv` |
25+
| Feature | Install | Default dependency |
26+
| -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | ------------------- |
27+
| **[Tracer](../features/tracer.md)** | **`npm i @aws-lambda-powertools/tracer`**{.copyMe} | `aws-xray-sdk-core` |
28+
| **[Idempotency](../features/idempotency.md)** | **`npm i @aws-lambda-powertools/idempotency @aws-sdk/client-dynamodb @aws-sdk/lib-dynamodb`**{.copyMe} | |
29+
| **[Parameters (SSM)](../features/parameters.md)** | **`npm i @aws-lambda-powertools/parameters @aws-sdk/client-ssm`**{.copyMe} | |
30+
| **[Parameters (Secrets Manager)](../features/parameters.md)** | **`npm i @aws-lambda-powertools/parameters @aws-sdk/client-secrets-manager`**{.copyMe} | |
31+
| **[Parameters (AppConfig)](../features/parameters.md)** | **`npm i @aws-lambda-powertools/parameters @aws-sdk/client-appconfigdata`**{.copyMe} | |
32+
| **[Parser](../features/parser.md)** | **`npm i @aws-lambda-powertools/parser zod@~3`**{.copyMe} | |
33+
| **[Validation](../features/validation.md)** | **`npm i @aws-lambda-powertools/validation`**{.copyMe} | `ajv` |
34+
| **[Kafka (Protocol Buffers)](../features/kafka.md)** | **`npm i @aws-lambda-powertools/kafka protobufjs`**{.copyMe} | |
35+
| **[Kafka (Avro)](../features/kafka.md)** | **`npm i @aws-lambda-powertools/kafka avro-js`**{.copyMe} | |

docs/getting-started/lambda-layers.md

Lines changed: 48 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -88,33 +88,38 @@ The pre-signed URL to download this Lambda Layer will be within `Location` key i
8888

8989
Change `{aws::region}` to your AWS region, e.g. `eu-west-1`, and run the following command:
9090

91-
```bash title="AWS CLI command to download Lambda Layer content"
92-
aws lambda get-layer-version-by-arn --arn arn:aws:lambda:{aws::region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29 --region {aws::region}
91+
=== "AWS CLI command to download Lambda Layer content"
9392

94-
# output
95-
{
96-
"Content": {,
97-
"Location": "https://awslambda-eu-west-1-layers.s3.eu-west-1.amazonaws.com/...",
98-
"CodeSha256": "gwGIE8w0JckdDeDCTX6FbWObb2uIDwgiaAq78gMWDyA=",
99-
"CodeSize": 3548324
100-
},
101-
"LayerArn": "arn:aws:lambda:eu-west-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2",
102-
"LayerVersionArn": "arn:aws:lambda:eu-west-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29",
103-
"Description": "Powertools for AWS Lambda (TypeScript) version 2.18.0",
104-
"CreatedDate": "2025-04-08T07:38:30.424+0000",
105-
"Version": 24,
106-
"CompatibleRuntimes": [
107-
"nodejs18.x",
108-
"nodejs20.x",
109-
"nodejs22.x"
110-
],
111-
"LicenseInfo": "MIT-0",
112-
"CompatibleArchitectures": [
113-
"arm64",
114-
"x86_64"
115-
]
116-
}
117-
```
93+
```bash
94+
aws lambda get-layer-version-by-arn --arn arn:aws:lambda:{aws::region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29 --region {aws::region}
95+
```
96+
97+
=== "AWS CLI output"
98+
99+
```json
100+
{
101+
"Content": {
102+
"Location": "https://awslambda-eu-west-1-layers.s3.eu-west-1.amazonaws.com/...",
103+
"CodeSha256": "gwGIE8w0JckdDeDCTX6FbWObb2uIDwgiaAq78gMWDyA=",
104+
"CodeSize": 3548324
105+
},
106+
"LayerArn": "arn:aws:lambda:eu-west-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2",
107+
"LayerVersionArn": "arn:aws:lambda:eu-west-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29",
108+
"Description": "Powertools for AWS Lambda (TypeScript) version 2.18.0",
109+
"CreatedDate": "2025-04-08T07:38:30.424+0000",
110+
"Version": 24,
111+
"CompatibleRuntimes": [
112+
"nodejs18.x",
113+
"nodejs20.x",
114+
"nodejs22.x"
115+
],
116+
"LicenseInfo": "MIT-0",
117+
"CompatibleArchitectures": [
118+
"arm64",
119+
"x86_64"
120+
]
121+
}
122+
```
118123

119124
### How to use with Infrastructure as Code
120125

@@ -341,3 +346,20 @@ aws lambda get-layer-version-by-arn --arn arn:aws:lambda:{aws::region}:094274105
341346
},
342347
});
343348
```
349+
350+
### Dependency management
351+
352+
When using the Lambda Layer, the Powertools for AWS Lambda packages are already included in your Lambda runtime environment. However, you still need to [install these packages](./installation.md) locally for development, testing, and IDE support.
353+
354+
Since the packages are provided by the Lambda Layer at runtime, install them as `devDependencies` in your `package.json` file:
355+
356+
```bash title="Install Powertools for AWS Lambda packages"
357+
npm i -D @aws-lambda-powertools/logger
358+
```
359+
360+
**Important considerations:**
361+
362+
- **Exclude from bundling**: Ensure your build process excludes these packages from your deployment bundle since they're provided by the layer
363+
- **Version synchronization**: Keep your local development dependencies in sync with the Lambda Layer version to maintain consistency
364+
365+
Following these practices prevents version conflicts that can cause unexpected behavior, such as failed `instanceof` checks or inconsistent behavior between your local development environment and the Lambda execution environment.

0 commit comments

Comments
 (0)