跳至内容

如何使用 Amazon ECR 映像和 Docker 创建 Lambda 层?

2 分钟阅读
0

我想使用 Amazon Elastic Container Registry (Amazon ECR) 映像和 Docker 来创建与我的环境运行时兼容的 AWS Lambda 层。

解决方案

**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。以下解决方法使用 Python 和 Linux。对于其他编码语言和操作系统 (OS),步骤可能会有所不同。

**先决条件:**在计算机上安装 Docker。有关安装步骤,请参阅 Docker 文档网站上的 Get Docker(获取 Docker)Install Docker Engine(安装 Docker 引擎)(仅限 Linux)。

创建目录结构并指定依赖项

创建目录结构,并在 requirements.txt pip 要求文件中指定您的依赖项。有关如何指定依赖项的详细信息,请参阅 pip 网站上的 Requirements files(要求文件)

以下示例目录结构适用于与 Python 3.x 兼容的 Lambda 层:

my-layer/
├── requirements.txt
└── python/

**注意:**该函数连同所有 Lambda 层解压缩后的总大小不得超出解压缩部署包大小的上限 (250 MB)。有关 Lambda 中 Python 版本支持的信息,请参阅使用 Python 构建 Lambda 函数

将库依赖项安装到其子文件夹

对于在目录结构中指定的每个运行时,运行以下命令一次:

docker run -v "$PWD":/var/task "public.ecr.aws/sam/build-python3.x" /bin/sh -c "pip install -r requirements.txt -t python/; exit"

**注意:**请将 3.x 替换为您要安装的兼容 Python 库。

为 Lambda 层创建 .zip 文件存档

要压缩 python 文件夹并创建 Lambda 层包,请运行以下命令:

zip -r mypythonlibs.zip python > /dev/null

**注意:**请将 mypythonlibs 替换为 Lambda 层包的名称。

创建或更新 Lambda 层

运行以下 publish-layer-version AWS CLI 命令:

aws lambda publish-layer-version --layer-name mypythonlibs --description "My python libs" --zip-file fileb://mypythonlibs.zip --compatible-runtimes "python3.x"

**注意:**请将 mypythonlibs 替换为您的 Lambda 层包名称,将 My python libs 替换为 Lambda 层包的描述,将 python3.x 替换为已安装的 Python 库。

在输出中,记下 Lambda 层的 Amazon 资源名称 (ARN)

更新 Lambda 函数配置以使用该层

运行以下 update-function-configuration 命令:

aws lambda update-function-configuration --layers arn:aws:lambda:us-east-2:123456789012:layer:mypythonlibs:1 --function-name my-function

**注意:**请将 arn:aws:lambda:us-east-2:123456789012:layer:mypythonlibs:1 替换为 Lambda 层 ARN,将 my-function 替换为您的函数名称。上述命令会将层放置在 Lambda 环境的 /opt 文件夹中。您可以通过 Lambda 函数代码访问 /opt 文件夹。

相关信息

如何解决 Python (Boto3) Lambda 函数中的"unknown service"、"parameter validation failed"或"object has no attribute"错误?

New for AWS Lambda – use any programming language and share common components(AWS Lambda 的新增功能 – 支持使用任意编程语言并可共享通用组件)

Amazon ECR 公开映像浏览馆

AWS 官方已更新 4 个月前