# To Build a Lambda from a Dockerfile in CDK
up:: [[AWS Lambda MOC]]
## Creating the Dockerfile
To set up a Dockerfile for a Lambda function that relies on non-AWS base images, you have to include the Python package `awslambdaric` in your requirements and install it. Then, do the following in the Dockerfile:
```dockerfile
ENTRYPOINT [ "/usr/local/bin/python", "-m", "awslambdaric" ]
CMD ["lambda_code.function_name"]
```
### Example
```dockerfile
ARG FUNCTION_DIR="/function"
FROM tensorflow/tensorflow:2.4.3 as DEV
ARG FUNCTION_DIR
RUN mkdir -p ${FUNCTION_DIR}
# copies python code into container's FUNCTION_DIR
COPY lambda_code.py ${FUNCTION_DIR}
# copies lambda_requirements.txt into container's requirements.txt
COPY lambda_requirements.txt ./requirements.txt
# copies dataset into container's FUNCTION_DIR/dataset/
COPY dataset ${FUNCTION_DIR}/dataset/
RUN pip install --no-cache-dir --upgrade pip && \
pip install -r requirements.txt --target ${FUNCTION_DIR}
WORKDIR ${FUNCTION_DIR}
ENTRYPOINT [ "python", "-m", "awslambdaric" ]
CMD ["lambda_code.function_name"]
```
## Setting Up the Lambda in CDK
To create a Lambda from a Dockerfile in CDK, use `cdk.aws-lambda.DockerImageFunction` when defining your Lambda:
```python
dockerized_lambda = _lambda.DockerImageFunction(
self,
f"dockerized-lambda-{stage}",
code=_lambda.DockerImageCode.from_image_asset(
"./dockerfile_directory", target="DEV"
),
)
```
## Sources
- https://aws.amazon.com/blogs/aws/new-for-aws-lambda-container-image-support/