使用 Docker 创建 AWS 层

使用 docker 创建 aws 层

当我们需要在 aws 中为 lambda 函数创建一个层,并且该层对其操作有一些 so 依赖项时,因此我们遇到了问题,aws 文档可能不够。

因此,在这种情况下,我们可以在所需的层中构建缺少的二进制文件。

好吧,对于这个例子,我们将使用 python 3.x 和 pdf2image 库来制作演示

先决条件

docker 安装python 3.xaws cli 配置(可选)访问 aws lambda

1.准备环境

mkdir lambda-layercd lambda-layermkdir pythoncd python

2.安装python依赖项

pip3 install [your_dependencies]     --platform manylinux2014_x86_64     --target .     --only-binary=:all:     --implementation cp     --python-version [tu_version_python]     --no-deps

pdf2image 示例:

pip3 install pdf2image pillow     --platform manylinux2014_x86_64     --target .     --only-binary=:all:     --implementation cp     --python-version 3.10     --no-deps

3.dockerfile基础

from ubuntu:22.04 as builderenv debian_frontend=noninteractiverun apt-get update && apt-get install -y     python3.10     python3-pip     binutils     zip     [tus_paquetes_adicionales]     --no-install-recommends     && rm -rf /var/lib/apt/lists/*workdir /lambdarun mkdir -p /opt/python/lib/python3.10/site-packages/bincopy python/ /opt/python/lib/python3.10/site-packages/run cp [tus_binarios] /opt/python/lib/python3.10/site-packages/bin/ &&     chmod 755 /opt/python/lib/python3.10/site-packages/bin/*run cd /opt && zip -r9 /lambda/layer.zip python/from alpine:3.18copy --from=builder /lambda/layer.zip /cmd ["/bin/sh"]

4. 构建和提取

# image builddocker build -t lambda-layer .# extract layer.zipdocker run --rm -v "$(pwd)":/out lambda-layer cp /layer.zip /out/

5.使用图层

完成前面的步骤后,我们可以像往常一样上传图层并将其导入到我们的项目中

import osimport sys#Configuring pathsSITE_PACKAGES = '/opt/python/lib/python3.10/site-packages'BIN_DIR = os.path.join(SITE_PACKAGES, 'bin')os.environ['PATH'] = f"{BIN_DIR}:{os.environ['PATH']}"sys.path.append(SITE_PACKAGES)#importing dependenciesfrom pdf2image import [your_import]def lambda_handler(event, context):    try:        # your code here        return {            'statusCode': 200,            'body': 'Success'        }    except Exception as e:        return {            'statusCode': 500,            'body': f'Error: {str(e)}'        }

参考

aws lambda 层文档python 包管理docker 文档

以上就是使用 Docker 创建 AWS 层的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1351624.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月13日 16:07:49
下一篇 2025年12月13日 16:08:02

相关推荐

发表回复

登录后才能评论
关注微信