From a9657e8c4ae3c37c6b37c31509c3ea59998dab44 Mon Sep 17 00:00:00 2001 From: Andrea Amorosi Date: Thu, 6 Mar 2025 16:41:08 +0100 Subject: [PATCH] chore: add deprecation notice --- README.md | 149 +++++++++--------------------------------------------- 1 file changed, 23 insertions(+), 126 deletions(-) diff --git a/README.md b/README.md index 3e44ecf..53edc39 100644 --- a/README.md +++ b/README.md @@ -1,138 +1,35 @@ -# Powertools for AWS Lambda Layer +> [!important] +> This repository will be archived on April 5, 2025 together with the `cdk-aws-lambda-powertools-layer` CDK constructs for Python and Node.js -## Why this project exists +Powertools for AWS will continue to provide official Lambda Layers for [Python](https://docs.powertools.aws.dev/lambda/python/latest/) and [TypeScript](https://docs.powertools.aws.dev/lambda/typescript/latest/) in all commercial regions and GovCloud, as well as future regions as they become available. -This is a custom construct that will create AWS Lambda Layer with Powertools for AWS Lambda for Python or NodeJS library. There are different -ways how to create a layer and when working with CDK you need to install the library, create a zip file and wire it -correctly. With this construct you don't have to care about packaging and dependency management. Create a construct -and add it to your function. The construct is an extension of the -existing [`LayerVersion`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.LayerVersion.html) construct -from the CDK library, so you have access to all fields and methods. +### Your options -> ⚠️ **This construct uses docker to build and bundle the dependencies!** +**1. Use Managed Lambda layers (Recommended)** -See the [API](API.md) for details. +Powertools for AWS managed Lambda layers offer: + +- Optimization for each runtime and architecture +- Ongoing support and updates +- Availability across all commercial regions and GovCloud +- Simplified workflow that lets you focus on function code -```typescript -import {LambdaPowertoolsLayer} from 'cdk-aws-lambda-powertools-layer'; -import {RuntimeFamily } from "aws-cdk-lib/aws-lambda"; +**2. Build Custom Lambda Layers** - const powertoolsLayerPython = new LambdaPowertoolsLayer(this, 'TestLayer', {runtimeFamily: RuntimeFamily.PYTHON}); - const powertoolsLayerNodeJS = new LambdaPowertoolsLayer(this, 'TestLayer', {runtimeFamily: RuntimeFamily.NODEJS}); -``` +If you need custom layers: -Python +- Use the open-source build pipeline from the main repositories +- Reference our implementation for your own deployment process -```python -from cdk_aws_lambda_powertools_layer import LambdaPowertoolsLayer -powertoolsLayer = LambdaPowertoolsLayer(self, 'PowertoolsLayer') -``` +### Migration tips -The layer will be created during the CDK `synth` step and thus requires Docker. +- Plan your transition before the April 5, 2025 archival date +- Test thoroughly with the managed layers before migrating production workloads +- Review the documentation for [Python](https://docs.powertools.aws.dev/lambda/python/latest/) and [TypeScript](https://docs.powertools.aws.dev/lambda/typescript/latest/) implementations -## Install - -TypeSript/JavaScript: - -```shell -npm i cdk-aws-lambda-powertools-layer -``` - -Python: - -```shell -pip install cdk-aws-lambda-powertools-layer -``` - -## Usage - -### Python - -A single line will create a layer with Powertools for AWS Lambda (Python). For NodeJS you need to specifically set the `runtimeFamily: Runtime.NODEJS` property. - -```python -from cdk_aws_lambda_powertools_layer import LambdaPowertoolsLayer - -powertoolsLayer = LambdaPowertoolsLayer(self, 'PowertoolsLayer') -``` - -You can then add the layer to your funciton: - -```python -from aws_cdk import aws_lambda - -aws_lambda.Function(self, 'LambdaFunction', - code=aws_lambda.Code.from_asset('function'), - handler='app.handler', - layers=[powertoolsLayer]) -``` - -You can specify the powertools version by passing the optional `version` paramter, otherwise the construct will take the -latest version from pypi repository. - -```python -LambdaPowertoolsLayer(self, 'PowertoolsLayer', version='1.24.0') -``` - -Additionally, powertools have extras depenedncies such as -Pydantic, [documented here](https://awslabs.github.io/aws-lambda-powertools-python/latest/#lambda-layer). This is not -included by default, and you have to set this option in the construct definition if you need it: - -```python -LambdaPowertoolsLayer(self, 'PowertoolsLayer', include_extras=True) -``` - -Full example: - -```python -from aws_cdk import Stack, aws_lambda -from cdk_aws_lambda_powertools_layer import LambdaPowertoolsLayer -from constructs import Construct - - -class LayerTestStack(Stack): - - def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None: - super().__init__(scope, construct_id, **kwargs) - - powertoolsLayer = LambdaPowertoolsLayer( - self, 'PowertoolsLayer', include_extras=True, version='1.24.0') - - aws_lambda.Function(self, 'LambdaFunction', - code=aws_lambda.Code.from_asset('function'), - handler='app.handler', - layers=[powertoolsLayer]) - -``` - -### TypeScript - -Full example for TypeScript: - -```typescript -import { Stack, StackProps } from 'aws-cdk-lib'; -import { Construct } from 'constructs'; -import { LambdaPowertoolsLayer } from 'cdk-aws-lambda-powertools-layer'; -import { Code, Function, Runtime } from 'aws-cdk-lib/aws-lambda'; -import * as path from 'path'; - -export class CdkPowertoolsExampleStack extends Stack { - constructor(scope: Construct, id: string, props?: StackProps) { - super(scope, id, props); - - const powertoolsLayer = new LambdaPowertoolsLayer(this, 'TestLayer', { - version: '1.22.0', - includeExtras: true - }); - - new Function(this, 'LambdaFunction', { - code: Code.fromAsset(path.join('./function')), - handler: 'app.handler', - layers: [powertoolsLayer], - }); - } -} - -``` +### Connect +If you have questions about the notice or about the migration to our managed Lambda layers, please reach out to +- [aws-powertools-maintainers@amazon.com](mailto:aws-powertools-maintainers@amazon.com) +- Powertools for AWS Lambda on Discord: #general - [Invite link](https://discord.gg/B8zZKbbyET)