报错"Unable to import module 'lambda_function': No module named 'charset_normalizer'"

0

【以下的问题经过翻译处理】 我正在按照“教程:使用 Amazon Serv OpenSearch ice 创建搜索应用程序”(网址:https://docs.aws.amazon.com/opensearch-service/latest/developerguide/search-example.html)进行操作。 现在,在Lambda函数界面下的函数列表里,我有一个名为testFunction的函数。我在其中上传了包含“packages”文件夹和“lambda_function.py”文件的zip文件。如果我在浏览器中测试该文件,我会收到“Unable to import module 'lambda_function': No module named 'charset_normalizer'”的错误。在package文件夹中是否有一个名为“charset_normalizer”的文件夹呢? 如果我本地运行代码,则不会出现任何错误...

1 Antwort
0

【以下的回答经过翻译处理】 您好,robbe,

我认为导致错误的原因是Lambda无法找到模块“charset_normalizer”。我认为您可以通过为Lambda创建一个layer来解决它。尝试按照以下步骤操作:

  1. 前往 pypi charset-normalizer 下载页面:https://pypi.org/project/charset-normalizer/#files
  2. 下载所需 Python 版本的 whl 文件 x86_64(例如 charset_normalizer-3.0.1-cp311-cp311-musllinux_1_1_x86_64.whl)。您需要检查package的兼容版本与Lambda函数的运行时相匹配。
  3. 创建一个名为“python”的文件夹,请不要使用“python”以外的其他名称,因为它不会起作用。
  4. 将所有从 whl 中提取的文件移动到“python”文件夹中。
  5. zip压缩此“python”文件夹。

现在您可以上传zip文件到Lambda,通过按照以下步骤创建layer:

  1. 进入 Lambda
  2. 在左侧窗格中转到“其他资源”->“Layers”。
  3. 单击右侧的“创建Layer”。
  4. 给您的layer命名
  5. 上传您创建的zip文件
  6. 在“兼容架构”中选择 x86_64
  7. 在“兼容运行时”中选择您在 Lambda 函数中使用的code runtime
  8. 单击“创建”

现在您可以将Layer添加到您的 Lambda 中:

  1. 转到 Lambda 函数
  2. 向下滚动到底部,直到看到“Layers”banner界面
  3. 单击“添加层”
  4. 选择“自定义层”
  5. 在下拉菜单中选择之前创建的层名称
  6. 在“版本”下拉菜单中选择层的版本
  7. 单击“添加”

现在可以再次测试您的函数,看是否错误已经被解决。

如果我的回答不够清晰,您也可以参考这篇来自medium的文章,文章里解释了如何为Lambda创建包含pandas和numpy的layer, 希望可以帮到您。: < https://medium.com/@shimo164/lambda-layer-to-use-numpy-and-pandas-in-aws-lambda-function-8a0e040faa18>

profile picture
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen