首页 > 解决方案 > 无服务器:使用来自其他 AWS 账户的层,怎么做?

问题描述

我正在尝试部署和使用无服务器函数,该函数使用由 AWS 创建的层,其中包括NumPy 和 SciPy

我的 Serverless.yml 文件的相关部分:

functions:
  pricing:
    handler: handler.pricing
    layers:
      - arn:aws:lambda:eu-west-1:399891621064:layer:AWSLambda-Python36-SciPy1x:2

当我运行sls deploy然后检查 Lambda 控制台时,我可以看到该层在我的函数旁边,但是当我尝试调用我的 lambda 时,我得到了错误:

[ERROR] Runtime.ImportModuleError: Unable to import module 'handler': No module named 'numpy'

我的 handler.py 文件的相关行:

import numpy as np

编辑: 更奇怪的是,在 Lambda 控制台中,如果我删除了对 AWS 发布层的(看起来完全相同的)引用,然后选择“添加层”按钮并选择完全相同的层(相同的 ARN) ,一切正常。 在此处输入图像描述

标签: python-3.xaws-lambdaserverless-frameworkserverless

解决方案


好的,所以我已经设法让它工作了,我认为问题是 python 版本不匹配,我用 3.6 引用了基于 arn 的 scipy 库,而在我的 serverless.yml 文件中我引用了 3.7。

下一步是弄清楚如何获得

无服务器调用本地 -f myfunction --docker

在我的虚拟环境中实际工作,以便我可以在本地运行和测试它。


推荐阅读