Skip to content

Commit f737a94

Browse files
authored
docs(homepage): revamp install UX & share how we build Lambda Layer (#1978)
1 parent 31b093a commit f737a94

File tree

1 file changed

+35
-38
lines changed

1 file changed

+35
-38
lines changed

docs/index.md

+35-38
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ description: AWS Lambda Powertools for Python
55

66
<!-- markdownlint-disable MD043 MD013 -->
77

8-
A suite of utilities for AWS Lambda functions to ease adopting best practices such as tracing, structured logging, custom metrics, idempotency, batching, [**and more**](#features).
8+
Powertools is a developer toolkit to implement Serverless best practices and increase developer velocity.
99

1010
???+ tip
1111
Powertools is also available for [Java](https://awslabs.github.io/aws-lambda-powertools-java/){target="_blank"}, [TypeScript](https://awslabs.github.io/aws-lambda-powertools-typescript/latest/){target="_blank"}, and [.NET](https://awslabs.github.io/aws-lambda-powertools-dotnet/){target="_blank"}
@@ -24,41 +24,52 @@ A suite of utilities for AWS Lambda functions to ease adopting best practices su
2424

2525
## Install
2626

27-
Powertools is available in the following formats:
27+
You can install Powertools using one of the following options:
2828

2929
* **Lambda Layer (x86_64)**: [**arn:aws:lambda:{region}:017000801446:layer:AWSLambdaPowertoolsPythonV2:23**](#){: .copyMe}:clipboard:
3030
* **Lambda Layer (arm64)**: [**arn:aws:lambda:{region}:017000801446:layer:AWSLambdaPowertoolsPythonV2-Arm64:23**](#){: .copyMe}:clipboard:
31-
* **PyPi**: **`pip install "aws-lambda-powertools"`**
31+
* **Pip**: **[`pip install "aws-lambda-powertools"`](#){: .copyMe}:clipboard:**
3232

33-
???+ info "Some utilities require additional dependencies"
34-
You can stop reading if you're using Lambda Layer.
35-
36-
[Tracer](./core/tracer.md){target="_blank"}, [Validation](./utilities/validation.md){target="_blank"} and [Parser](./utilities/parser.md){target="_blank"} require additional dependencies. If you prefer to install all of them, use `pip install "aws-lambda-powertools[all]"`.
33+
??? question "Using Pip? You might need to install additional dependencies."
34+
[**Tracer**](./core/tracer.md){target="_blank"}, [**Validation**](./utilities/validation.md){target="_blank"} and [**Parser**](./utilities/parser.md){target="_blank"} require additional dependencies. If you prefer to install all of them, use [**`pip install "aws-lambda-powertools[all]"`**](#){: .copyMe}:clipboard:.
3735

3836
For example:
3937

40-
* [Tracer](./core/tracer.md#install){target="_blank"}: **`pip install "aws-lambda-powertools[tracer]"`**
41-
* [Validation](./utilities/validation.md#install){target="_blank"}: **`pip install "aws-lambda-powertools[validation]"`**
42-
* [Parser](./utilities/parser.md#install){target="_blank"}: **`pip install "aws-lambda-powertools[parser]"`**
43-
* [Tracer](./core/tracer.md#install){target="_blank"} and [Parser](./utilities/parser.md#install){target="_blank"}: **`pip install "aws-lambda-powertools[tracer,parser]"`**
38+
* **Tracer**: **[`pip install "aws-lambda-powertools[tracer]"`](#){: .copyMe}:clipboard:**
39+
* **Validation**: **[`pip install "aws-lambda-powertools[validation]"`](#){: .copyMe}:clipboard:**
40+
* **Parser**: **[`pip install "aws-lambda-powertools[parser]"`](#){: .copyMe}:clipboard:**
41+
* **Tracer** and **Parser**: **[`pip install "aws-lambda-powertools[tracer,parser]"`](#){: .copyMe}:clipboard:**
4442

4543
### Local development
4644

47-
Powertools relies on the AWS SDK bundled in the Lambda runtime. This helps us achieve an optimal package size and initialization.
45+
!!! info "Using Powertools via Lambda Layer? Simply add [**`"aws-lambda-powertools[all]"`**](#){: .copyMe}:clipboard: as a development dependency."
46+
47+
Powertools relies on the [AWS SDK bundled in the Lambda runtime](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html){target="_blank"}. This helps us achieve an optimal package size and initialization. However, when developing locally, you need to install AWS SDK as a development dependency (not as a production dependency):
48+
49+
* **Pip**: [**`pip install "aws-lambda-powertools[aws-sdk]"`**](#){: .copyMe}:clipboard:
50+
* **Poetry**: [**`poetry add "aws-lambda-powertools[aws-sdk]" --group dev`**](#){: .copyMe}:clipboard:
51+
* **Pipenv**: [**`pipenv install --dev "aws-lambda-powertools[aws-sdk]"`**](#){: .copyMe}:clipboard:
52+
53+
??? question "Why is that necessary?"
54+
Powertools relies on the AWS SDK being available to use in the target runtime (AWS Lambda).
4855

49-
This means you need to add AWS SDK as a development dependency (not as a production dependency).
56+
As a result, it affects your favorite IDE in terms of code auto-completion, or running your tests suite locally with no Lambda emulation such as [AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html){target="_blank"}.
5057

51-
* **Pip**: `pip install "aws-lambda-powertools[aws-sdk]"`
52-
* **Poetry**: `poetry add "aws-lambda-powertools[aws-sdk]" --group dev`
53-
* **Pipenv**: `pipenv install --dev "aws-lambda-powertools[aws-sdk]"`
58+
**A word about dependency resolution**
5459

55-
???+ note "Local emulation"
56-
If you're running your code locally with [AWS SAM CLI](https://github.com/aws/aws-sam-cli){target="_blank"}, and not with your Python/IDE interpreter directly, this is not necessary. SAM CLI already brings the AWS SDK in its emulation image.
60+
In this context, `[aws-sdk]` is an alias to the `boto3` package. Due to dependency resolution, it'll either install:
61+
62+
* **(A)** the SDK version available in [Lambda runtime](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html){target="_blank"}
63+
* **(B)** a more up-to-date version if another package you use also depends on `boto3`, for example [Powertools Tracer](core/tracer.md){target="_blank"}
5764

5865
### Lambda Layer
5966

67+
???+ warning "As of now, Container Image deployment (OCI) or inline Lambda functions do not support Lambda Layers."
68+
6069
[Lambda Layer](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html){target="_blank"} is a .zip file archive that can contain additional code, pre-packaged dependencies, data, or configuration files. Layers promote code sharing and separation of responsibilities so that you can iterate faster on writing business logic.
6170

71+
For our Layers, we compile and optimize [all dependencies](https://github.com/awslabs/aws-lambda-powertools-python/blob/develop/pyproject.toml#L98){target="_blank"}, and [remove duplicate dependencies already available in the Lambda runtime](https://github.com/awslabs/cdk-aws-lambda-powertools-layer/blob/main/layer/Python/Dockerfile#L36){target="_blank"} to achieve the most optimal size.
72+
6273
You can include Powertools Lambda Layer using [AWS Lambda Console](https://docs.aws.amazon.com/lambda/latest/dg/invocation-layers.html#invocation-layers-using){target="_blank"}, or your preferred deployment framework.
6374

6475
??? note "Note: Click to expand and copy any regional Lambda Layer ARN"
@@ -271,16 +282,6 @@ You can include Powertools Lambda Layer using [AWS Lambda Console](https://docs.
271282
? Do you want to edit the local lambda function now? No
272283
```
273284

274-
=== "Get the Layer .zip contents"
275-
276-
Change {region} to your AWS region, e.g. `eu-west-1`
277-
278-
```bash title="AWS CLI"
279-
aws lambda get-layer-version-by-arn --arn arn:aws:lambda:{region}:017000801446:layer:AWSLambdaPowertoolsPythonV2:23 --region {region}
280-
```
281-
282-
The pre-signed URL to download this Lambda Layer will be within `Location` key.
283-
284285
=== "arm64"
285286

286287
=== "SAM"
@@ -439,18 +440,14 @@ You can include Powertools Lambda Layer using [AWS Lambda Console](https://docs.
439440
? Do you want to edit the local lambda function now? No
440441
```
441442

442-
=== "Get the Layer .zip contents"
443-
Change {region} to your AWS region, e.g. `eu-west-1`
443+
??? question "Want to inspect the contents of the Layer?"
444+
Change {region} to your AWS region, e.g. `eu-west-1`
444445

445-
```bash title="AWS CLI"
446-
aws lambda get-layer-version-by-arn --arn arn:aws:lambda:{region}:017000801446:layer:AWSLambdaPowertoolsPythonV2-Arm64:23 --region {region}
447-
```
448-
449-
The pre-signed URL to download this Lambda Layer will be within `Location` key.
450-
451-
???+ warning "Warning: Limitations"
446+
```bash title="AWS CLI"
447+
aws lambda get-layer-version-by-arn --arn arn:aws:lambda:{region}:017000801446:layer:AWSLambdaPowertoolsPythonV2:23 --region {region}
448+
```
452449

453-
Container Image deployment (OCI) or inline Lambda functions do not support Lambda Layers.
450+
The pre-signed URL to download this Lambda Layer will be within `Location` key.
454451

455452
#### SAR
456453

0 commit comments

Comments
 (0)