AWS Lambda:通过无服务器框架部署时,“ ELF加载命令地址/偏移未正确对齐”

hkjhadj1

我在python3.6中有一个Lambda函数,它使用以下软件包:

opencv-python
imutils
numpy
joblib
mahotas
scikit-image
scikit-learn==0.22.1
sklearn
pymongo==3.10.1

我正在使用无服务器框架来最小化部署大小并部署到lambda。我已经使用该serverless-python-requirements插件来管理软件包。这是我的template.yml文件的样子:

functions:
  hello:
    handler: handler.hello

plugins:
  - serverless-python-requirements

custom:
  pythonRequirements:
    dockerizePip: non-linux
    zip: true
    slim: true
    noDeploy:
      - boto3
      - botocore
      - docutils
      - jmespath
      - pip
      - python-dateutil
      - s3transfer
      - setuptools
      - six
      - tensorboard
package:
  exclude:
    - node_modules/**
    - model/**
    - .vscode/**

我需要使用slimzip选项,因为否则部署包将太大(〜350mb)。

出于某种原因,如果我不包括pymongorequirements.txt,该功能运行正常。不包括sls deploywhen的输出pymongo是:

Serverless: Adding Python requirements helper...
Serverless: Generated requirements from /home/amman/Desktop/serverless-hello-world/requirements.txt in /home/amman/Desktop/serverless-hello-world/.serverless/requirements.txt...
Serverless: Using static cache of requirements found at /home/amman/.cache/serverless-python-requirements/3967fa669ece2345132bfe2a31be4287e2d61deedfb8b6006997a2192cea5753_slspyc ...
Serverless: Zipping required Python packages...
Serverless: Packaging service...
Serverless: Excluding development dependencies...
Serverless: Removing Python requirements helper...
Serverless: Injecting required Python packages to package...
Serverless: Uploading CloudFormation file to S3...
Serverless: Uploading artifacts...
Serverless: Uploading service hello-world.zip file to S3 (128.52 MB)...
Serverless: Validating template...
Serverless: Updating Stack...
Serverless: Checking Stack update progress...
.........
Serverless: Stack update finished...

因此,.zip的总大小为〜128 MB,并且该函数运行良好。但是,如果包含在内pymongo,则输出sls deploy为:

Serverless: Adding Python requirements helper...
Serverless: Generated requirements from /home/amman/Desktop/serverless-hello-world/requirements.txt in /home/amman/Desktop/serverless-hello-world/.serverless/requirements.txt...
Serverless: Installing requirements from /home/amman/.cache/serverless-python-requirements/279b0240a975ac6ad3c96e3b0ed81eec7981a8e66e0216037484878bfcaf4479_slspyc/requirements.txt ...
Serverless: Using download cache directory /home/amman/.cache/serverless-python-requirements/downloadCacheslspyc
Serverless: Running ...
Serverless: Zipping required Python packages...
Serverless: Packaging service...
Serverless: Excluding development dependencies...
Serverless: Removing Python requirements helper...
Serverless: Injecting required Python packages to package...
Serverless: Uploading CloudFormation file to S3...
Serverless: Uploading artifacts...
Serverless: Uploading service hello-world.zip file to S3 (109.37 MB)...
Serverless: Validating template...
Serverless: Updating Stack...
Serverless: Checking Stack update progress...
.........
Serverless: Stack update finished...

现在,大小已减少至〜109 MB。我是否添加了新的依赖关系,大小是否应该增加?当我运行lambda函数时,出现错误:

无法导入模块“处理程序”:/tmp/sls-py-req/cv2/cv2.cpython-36m-x86_64-linux-gnu.so:ELF加载命令地址/偏移未正确对齐

我认为这可能是无服务器框架问题。我该怎么做才能解决此问题?我尝试安装其他版本,pymongo但没有运气。

我正在使用以下Serverless Framework版本:

> serverless --version
Framework Core: 1.73.1
Plugin: 3.6.13
SDK: 2.3.1
Components: 2.31.2

编辑:pymongo有替代品吗?我见过一些,但他们使用pymongo作为基础依赖。

hkjhadj1

我无法使用无服务器解决此问题。因此,我决定sls deploy不使用pymongo.requirements.zip文件,并且一旦无服务器生成文件,便将该文件复制到其他位置,然后再次运行,sls deploy但是这次只包含pymongo(和pymongo[srv]requirements.txt生成的.requirements.zip包含pymongo及其依赖项。我合并了这个文件.requirments.ziprequirements.zip从第一个文件生成的文件sls deploy这样,我将所有其他依赖项(opencv2,numpy,joblib等)和pymongo放在一个.requirements.zip文件中。

之后,我压缩了源代码和合并的.requirements.zip文件,然后将zip手动上传到s3。它压缩到128MB。指出了我的lambda函数以使用S3中的此部署程序包,并且该方法有效。我得到了pymongo以及opencv2和其他依赖项。

但是,缺点是您必须上传到S3并自己更新功能。在解决此问题之前,我将不得不使用此“ hack”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用无服务器框架时如何从AWS Lambda访问DynamoDB?

来自分类Dev

AWS无服务器框架使用GIT进行协作

来自分类Dev

如何使用无服务器框架通过AWS Lambda函数环境变量访问SSM参数存储值?

来自分类Dev

使用graphql,aws lambda和无服务器框架的多个URL路径选项错误

来自分类Dev

在AWS中的无服务器部署上自动运行功能

来自分类Dev

在AWS中删除对象后无服务器部署的问题

来自分类Dev

如何在无lambda的无服务器框架配置(适用于AWS)中实现重定向(301代码)模拟

来自分类Dev

如何引用使用无服务器框架创建的Arn和AWS lambda函数的名称

来自分类Dev

使用无服务器框架(AWS Lambda / Gateway),Express,Mongoose / MongoDB Atlas的应用频繁超时

来自分类Dev

AWS Lambda SNS事件未使用无服务器yml绑定到正确的SNS主题ARN

来自分类Dev

如何通过无服务器创建AWS StateMachine活动

来自分类Dev

无服务器-如何在AWS Lambda函数中定期运行Flask命令?

来自分类Dev

如何使用适用于AWS Lambda的无服务器框架获取最新的Layer版本

来自分类Dev

如何使用无服务器框架在AWS Aurora无服务器中自动创建表

来自分类Dev

psycopg2不适用于AWS Lambda上的无服务器框架部署

来自分类Dev

使用无服务器部署,如何将对一个AWS Lambda的访问限制为一部分IP地址

来自分类Dev

调用RDS无服务器时AWS Lambda超时

来自分类Dev

可以通过DataGrip中的AWS Explorer配置AWS Aurora无服务器群集吗?

来自分类Dev

通过结合使用无服务器框架和AWS,Sequelize的自动生成的表别名会根据环境(脱机与Lambda)而有所不同。

来自分类Dev

AWS无服务器框架使用GIT进行协作

来自分类Dev

在服务器AWS中加载图像时出错

来自分类Dev

如何将MS bot作为无服务器服务部署到AWS

来自分类Dev

AWS 移动中心 - 无服务器?

来自分类Dev

将 Identity Server4 部署为 AWS 无服务器 Lambda 函数

来自分类Dev

无服务器部署到 AWS、Azure 或 GCP

来自分类Dev

AWS 策略允许仅对特定用户/组进行无服务器部署到生产

来自分类Dev

无服务器框架 AWS 跨账户自定义授权器

来自分类Dev

如何通过命令行在不同阶段部署无服务器代码?

来自分类Dev

带有 webpack 构建模块的 AWS 无服务器部署失败

Related 相关文章

  1. 1

    使用无服务器框架时如何从AWS Lambda访问DynamoDB?

  2. 2

    AWS无服务器框架使用GIT进行协作

  3. 3

    如何使用无服务器框架通过AWS Lambda函数环境变量访问SSM参数存储值?

  4. 4

    使用graphql,aws lambda和无服务器框架的多个URL路径选项错误

  5. 5

    在AWS中的无服务器部署上自动运行功能

  6. 6

    在AWS中删除对象后无服务器部署的问题

  7. 7

    如何在无lambda的无服务器框架配置(适用于AWS)中实现重定向(301代码)模拟

  8. 8

    如何引用使用无服务器框架创建的Arn和AWS lambda函数的名称

  9. 9

    使用无服务器框架(AWS Lambda / Gateway),Express,Mongoose / MongoDB Atlas的应用频繁超时

  10. 10

    AWS Lambda SNS事件未使用无服务器yml绑定到正确的SNS主题ARN

  11. 11

    如何通过无服务器创建AWS StateMachine活动

  12. 12

    无服务器-如何在AWS Lambda函数中定期运行Flask命令?

  13. 13

    如何使用适用于AWS Lambda的无服务器框架获取最新的Layer版本

  14. 14

    如何使用无服务器框架在AWS Aurora无服务器中自动创建表

  15. 15

    psycopg2不适用于AWS Lambda上的无服务器框架部署

  16. 16

    使用无服务器部署,如何将对一个AWS Lambda的访问限制为一部分IP地址

  17. 17

    调用RDS无服务器时AWS Lambda超时

  18. 18

    可以通过DataGrip中的AWS Explorer配置AWS Aurora无服务器群集吗?

  19. 19

    通过结合使用无服务器框架和AWS,Sequelize的自动生成的表别名会根据环境(脱机与Lambda)而有所不同。

  20. 20

    AWS无服务器框架使用GIT进行协作

  21. 21

    在服务器AWS中加载图像时出错

  22. 22

    如何将MS bot作为无服务器服务部署到AWS

  23. 23

    AWS 移动中心 - 无服务器?

  24. 24

    将 Identity Server4 部署为 AWS 无服务器 Lambda 函数

  25. 25

    无服务器部署到 AWS、Azure 或 GCP

  26. 26

    AWS 策略允许仅对特定用户/组进行无服务器部署到生产

  27. 27

    无服务器框架 AWS 跨账户自定义授权器

  28. 28

    如何通过命令行在不同阶段部署无服务器代码?

  29. 29

    带有 webpack 构建模块的 AWS 无服务器部署失败

热门标签

归档