您的位置 首页 知识分享

使用 Docker 创建 AWS 层

当我们需要在 aws 中为 lambda 函数创建一个层,并且该层对其操作有一些 so 依赖项时,因此我们遇到…

使用 Docker 创建 AWS 层

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

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

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

先决条件

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

1.准备环境

mkdir lambda-layer cd lambda-layer mkdir python cd 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 builder  env debian_frontend=noninteractive  run 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 /lambda run mkdir -p /opt/python/lib/python3.10/site-packages/bin  copy 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.18 copy --from=builder /lambda/layer.zip / cmd ["/bin/sh"] 
登录后复制

4. 构建和提取

# image build docker build -t lambda-layer .  # extract layer.zip docker run --rm -v "$(pwd)":/out lambda-layer cp /layer.zip /out/ 
登录后复制

5.使用图层

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

 import os import sys  #Configuring paths SITE_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 dependencies from 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 层的详细内容,更多请关注php中文网其它相关文章!

本文来自网络,不代表甲倪知识立场,转载请注明出处:http://www.spjiani.cn/wp/4582.html

作者: nijia

发表评论

您的电子邮箱地址不会被公开。

联系我们

联系我们

0898-88881688

在线咨询: QQ交谈

邮箱: email@wangzhan.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部