cdk-lambda-fleet
cdk-lambda-fleet copied to clipboard
Deploy AWS Lambda functions using docker images to ECR with AWS CDK
AWS CDK: Lambda Fleet
Deploy multiple AWS Lambda functions as container images to Amazon ECR with CDK.
Examples
src/lambda-node-examplesrc/lambda-python-examplesrc/lambda-typescript-example
CDK Construct
When using the AWS CDK in TypeScript, you can use the published LambdaFleet construct:
$ > yarn install cdk-lambda-fleet
import * as path from "path";
import * as cdk from "@aws-cdk/core";
import { LambdaFleet } from "cdk-lambda-fleet";
export class FleetStack extends cdk.Stack {
constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
super(scope, id, props);
new LambdaFleet(this, "Fleet", {
path: path.resolve(__dirname, "../src"),
});
}
}
Configuration
You can fork this repository and create a folder like src/lambda-python-example and store a Dockerfile there:
FROM amazon/aws-lambda-python:3.8
COPY requirements.txt ./
RUN pip install -r requirements.txt
COPY handler.py ./
CMD [ "handler.run" ]
Using the AWS CDK, a docker image will be created and deployed to Amazon ECR for every folder in src/. After uploading the image, an AWS Lambda will be created or updated to use the latest image.
Deployment
# Deploy all functions
$ > yarn deploy
[…]
Fleet.FleetLambdaNodeExampleArnXYZ = "arn:aws:lambda:eu-central-1:123:function:Fleet-FleetLambdaNodeExampleXYZ-XYZ"
Fleet.FleetLambdaPythonExampleArnXYZ = "arn:aws:lambda:eu-central-1:123:function:Fleet-FleetLambdaPythonExampleXYZ-XYZ"
Fleet.FleetLambdaTypescriptExampleArnXYZ = "arn:aws:lambda:eu-central-1:123:function:Fleet-FleetLambdaTypescriptExampleXYZ-XYZ"