2

请在阅读后特别查看屏幕截图。

我正在 AWS Lambda 上部署一个 python 脚本,它使用impyla依赖于包的包bitarray

from impala.dbapi import connect

我的 python 文件被调用,它有一个被正确配置authorize_ingress.py的函数。handle_authorize_ingress(event, context)请参阅下面的屏幕截图:

我的函数文件:

功能

lambda 中的处理程序指定:

处理程序

代码本身的处理程序:

处理程序

我的 zip 文件的所有内容都在根目录中(而不是嵌套在目录中):

文件

该软件包bitarray通过以下方式自动安装impyla

位数组

每一次,我都会收到这样的回应:

回复

截至目前,我已尝试:

  • 该软件包是使用zip -r选项生成的。
  • 这些文件位于 zip 的根目录中,而不是嵌套在目录中。
  • 该功能在本地运行良好。
  • 我已经尝试过virtualenv,只是在路径中安装依赖项,packages/但没有运气

有什么想法我可能做错了吗?我按照AWS 的 Lambda 部署指南生成了我的部署包。任何帮助将不胜感激,谢谢!

4

1 回答 1

1

干得好。您可以通过这个 gdrive链接下载这个 lambda 层。该层与 Python 3.8 兼容,因此请确保选择正确的 lambda 运行时。

如果你想知道我是如何生成这个 lambda 层的,下面是我所做的基本列表:

  • 无服务器框架
  • serverless-python-requirements 插件
  • 码头工人
  • 无服务器.yml
service: serverless-example

provider:
  name: aws
  runtime: python3.8
  region: us-east-1
  profile: dummy

functions:
  dummy:
    handler: dummy.handler

plugins:
  - serverless-python-requirements

custom:
  pythonRequirements:
    dockerizePip: non-linux
    layer: true
  • 要求.txt
impyla==0.16.2

然后干脆做sls package -p pkg。命名层pythonRequirements.zip将在一分钟内准备好在.serverless目录下。

于 2020-07-17T01:07:25.627 回答