报错"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”的文件夹呢? 如果我本地运行代码,则不会出现任何错误...

profile picture
专家
已提问 5 个月前38 查看次数
1 回答
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
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则