小编sdu*_*gan的帖子

在 AWS 上部署无服务器 Flask 应用程序时出错,没有名为“werkzeug._compat”的模块

我创建了一个简单的 Flask 应用程序并成功将其部署到 AWS Lambda。我正在遵循本教程的第一步。

运行Lambda时,日志中出现以下错误:

Unable to import module 'wsgi_handler': No module named 'werkzeug._compat'
Run Code Online (Sandbox Code Playgroud)

我已经安装了 serverless-python-requirements 和 serverless-wsgi。这些文件夹位于上传到 AWS 的 zip 文件夹中。

我在 serverless_wsgi.py 中找到了对 werkzeug._compat 的引用:

from werkzeug._compat import BytesIO, string_types, to_bytes, wsgi_encoding_dance
Run Code Online (Sandbox Code Playgroud)

但是,我似乎无法在可能找到此函数的 Werkzeug 文件夹中的任何位置找到“_compat”。我是否缺少包裹或其他东西?

这是我的 serverless.yml:

# serverless.yml

service: serverless-flask

plugins:
  - serverless-python-requirements
  - serverless-wsgi

custom:
  wsgi:
    app: app.app
    packRequirements: false
  pythonRequirements:
    dockerizePip: non-linux

provider:
  name: aws
  runtime: python3.6
  stage: dev
  region: us-east-1

functions:
  app:
    handler: wsgi_handler.handler
    events:
      - http: ANY /
      - http: …
Run Code Online (Sandbox Code Playgroud)

python werkzeug flask aws-lambda serverless-framework

12
推荐指数
1
解决办法
1539
查看次数

AWS Lambda Python 加密 - 无法打开共享对象文件

我正在开发一个部署到 AWS Lambda 的无服务器 Flask 应用程序。该程序使用密码学库(使用版本3.4.7)。在本地,程序运行良好,没有任何问题。但是,每当部署在 Lambda 上时,都会出现以下错误:

from cryptography.fernet import Fernet

File "/var/task/cryptography/fernet.py", line 16, in <module>

from cryptography.hazmat.primitives import hashes, padding

File "/var/task/cryptography/hazmat/primitives/padding.py", line 11, in <module>

from cryptography.hazmat.bindings._padding import lib

ImportError: /var/task/cryptography/hazmat/bindings/_padding.abi3.so: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

当使用“危险材料”模块中的一些必需功能时,会出现非常相似的错误:

File "/var/task/cryptography/hazmat/primitives/kdf/pbkdf2.py", line 28, in __init__
    backend = _get_backend(backend)
File "/var/task/cryptography/hazmat/backends/__init__.py", line 23, in _get_backend
    return default_backend()
File "/var/task/cryptography/hazmat/backends/__init__.py", line 14, in default_backend
    from cryptography.hazmat.backends.openssl.backend import backend
File "/var/task/cryptography/hazmat/backends/openssl/__init__.py", line 6, in <module>
    from …
Run Code Online (Sandbox Code Playgroud)

python amazon-web-services aws-lambda serverless-framework python-cryptography

5
推荐指数
1
解决办法
1万
查看次数