From 04e3784a4fe8871db81f5c1dc19f7fa8c7d98fe4 Mon Sep 17 00:00:00 2001 From: Rehan Haider Date: Fri, 6 Dec 2024 15:07:59 +0000 Subject: [PATCH] new article --- .vscode/settings.json | 5 +- content/aws/27500000-mount-fsx-lustre-ec2.md | 2 +- .../aws/50001040-cdk-fn-lambda-aws-docker.md | 148 +++++++++++++++++- .../aws/50001040-01-aws-lambda-output.png | Bin 0 -> 43654 bytes 4 files changed, 146 insertions(+), 9 deletions(-) create mode 100644 content/images/aws/50001040-01-aws-lambda-output.png diff --git a/.vscode/settings.json b/.vscode/settings.json index c307cde..8e2c1a7 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,8 +1,9 @@ { - "python.languageServer": "Pylance", + "python.languageServer": "Default", "python.testing.pytestArgs": [ "tests" ], "python.testing.unittestEnabled": false, - "python.testing.pytestEnabled": true + "python.testing.pytestEnabled": true, + "makefile.configureOnOpen": false } \ No newline at end of file diff --git a/content/aws/27500000-mount-fsx-lustre-ec2.md b/content/aws/27500000-mount-fsx-lustre-ec2.md index 24a11df..0c0c4f7 100644 --- a/content/aws/27500000-mount-fsx-lustre-ec2.md +++ b/content/aws/27500000-mount-fsx-lustre-ec2.md @@ -264,7 +264,7 @@ FSX_ID=$(aws fsx create-file-system \ First, we need to get the latest Amazon Linux 2023 AMI ID. You can go the the AWS Console, go to **EC2 -> Instances -> Launch instances**. In the **Application and OS Images** section, select `Amazon Linux 2023 AMI`. Note the AMI ID at the bottom. -![Amazon Linux 2023 AMI ID]({static}/images/aws/27500000-08-amazon-linux-ami-id) +![Amazon Linux 2023 AMI ID]({static}/images/aws/27500000-08-amazon-linux-ami-id.png) Alternatively, you can use the below command to get the latest Amazon Linux 2023 AMI ID: diff --git a/content/aws/50001040-cdk-fn-lambda-aws-docker.md b/content/aws/50001040-cdk-fn-lambda-aws-docker.md index c256409..eea3cd9 100644 --- a/content/aws/50001040-cdk-fn-lambda-aws-docker.md +++ b/content/aws/50001040-cdk-fn-lambda-aws-docker.md @@ -1,12 +1,148 @@ -Title: Run a lambda function in a custom docker image using AWS CDK in Python -Date: 2023-11-09 +Title: How to create a Lambda function in a ECR Docker image using AWS CDK in Python +Date: 2024-12-06 Category: AWS Academy Series: AWS CDK series_index: 1040 -Tags: aws, cdk, python +Tags: aws, cdk, python, lambda, docker Author: Rehan Haider -Summary: This article provides a walkthrough on how to deploy an AWS Lambda function using a custom Docker image with AWS CDK in Python -Keywords: lambda, cdk, docker -Status: Draft +Summary: This article provides a walkthrough on how to deploy an AWS Lambda function using a AWS provided ECR Docker image with AWS CDK in Python +Keywords: lambda, cdk, docker, python, aws + +In previous posts we looked at how to create using AWS CDK: + +1. [Default Lambda function]({filename}50001000-cdk-fn-create-lambda.md), +2. [Lambda function with Python dependencies using a Lambda layer]({filename}50001020-cdk-fn-lambda_layers.md) +3. [Lambda function with Python dependencies that uses AWS provided Docker image]({filename}50001030-cdk-fn-lambda-python-deps.md) + +But in some cases, you may need to modify the Docker image that AWS Lambda uses. E.g. you may need to install additional dependencies or modify the runtime. + +In this post, we'll look at how to create a Lambda function using a AWS provided Docker image. + + +## Prerequisites + +1. Ensure that you have [AWS CDK and SAM CLI installed]({filename}00000100-cdk-installing-cdk-sam-cli.md). +2. If needed [create a new CDK application]({filename}50000020-cdk-create-new-app.md). + + +## Create a Lambda function using a ECR Docker image + +We will need to do the following: + + +1. Create the `Dockerfile` +2. Create a `requirements.txt` file to specify the Python packages to be installed. +3. Write the lambda function. +4. Create the lambda stack. + + +### 1. Create the Dockerfile + +Let's create a `lambda` directory in `cdk_app` to store the files for this function. + +```Dockerfile +# filename: cdk_app/lambda/Dockerfile + +FROM public.ecr.aws/lambda/python:3.12 + +# Copy requirements.txt +COPY requirements.txt ${LAMBDA_TASK_ROOT} + +# Install the specified packages +RUN pip install -r requirements.txt + +# Copy function code +COPY index.py ${LAMBDA_TASK_ROOT} + +# Set the CMD to your handler +CMD [ "index.handler" ] +``` + +Within this image we have: + +1. Identified the image that we want to use. In this case we are using the AWS provided Python 3.12 image. +2. Copied the `requirements.txt` file to the image. +3. Installed the specified packages. +4. Copied the function code to the image. +5. Set the command to be executed when the container starts. + +### 2. Create a requirements.txt file + +Create a new file called `requirements.txt` in the `cdk_app/lambda` directory. Any Python packages that you may need to install can be added to this file. + +``` +requests +``` + +### 3. Create the lambda function + +Within the `lambda` directory create a new file called `index.py`. This is the main Python file that will be executed by the Lambda function. + +```python +# filename: cdk_app/lambda/index.py + +import requests + +def handler(event, context): + response = requests.get("https://jsonplaceholder.typicode.com/todos/1") + + return {"statusCode": 200, "body": response.json()} +``` + + +### 4. Create a lambda_stack.py file + +We modify the `lambda_stack.py` file to create the CDK stack. + +```python +# filename: cdk_app/lambda_stack.py + +from aws_cdk import ( + Stack, + aws_lambda as _lambda, +) +from constructs import Construct + +class LambdaStack(Stack): + + def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None: + super().__init__(scope, construct_id, **kwargs) + + fn = _lambda.DockerImageFunction( + self, + "LambdaFunction", + code=_lambda.DockerImageCode.from_image_asset("cdk_app/lambda"), + ) +``` + +In the above code we use the `DockerImageFunction` construct to create the Lambda function. It takes the following arguments: + +1. `self`: The construct itself. +2. `id`: The unique identifier for the function. +3. `code`: The Docker image code. In this case we are using the `DockerImageCode.from_image_asset` method to specify the path to the Docker image. +4. `environment`: The environment variables for the function. This is not required but is useful for testing purposes. + +Compared to previous examples, we don't need to identify the handler function as this is specified in the `Dockerfile`. + +Now finally, let's initialise the stack by creating the `app.py` file. + +```python +# filename: app.py + +import aws_cdk as cdk + +from cdk_app.lambda_stack import LambdaStack + +app = cdk.App() +lambda_stack = LambdaStack(app, "LambdaStack") + +app.synth() +``` + +To deploy the stack, run `cdk deploy`. + +When the lambda function is deployed, you can go to the console and test the function. It should show the below output. + +![Lambda function output]({static}/images/aws/50001040-01-aws-lambda-output.png) \ No newline at end of file diff --git a/content/images/aws/50001040-01-aws-lambda-output.png b/content/images/aws/50001040-01-aws-lambda-output.png new file mode 100644 index 0000000000000000000000000000000000000000..652b32dcb7785385db6e2803292453f883f9c290 GIT binary patch literal 43654 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
9EB?OE=ygc#njzo5~u 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 Kx>C+G=)VAV<#|~E literal 0 HcmV?d00001