python-3.x - 无服务器:使用来自其他 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.6 引用了基于 arn 的 scipy 库,而在我的 serverless.yml 文件中我引用了 3.7。
下一步是弄清楚如何获得
无服务器调用本地 -f myfunction --docker
在我的虚拟环境中实际工作,以便我可以在本地运行和测试它。
推荐阅读
- python - 如何将 xml 动态转换为 csv
- javascript - 我有一组索引和品种,我想列出可能的排列
- wix - Wix 工具集 - 如何使用二进制文件
- detect - iOS14 - CMMotionActivityManager startActivityUpdatesToQueue 不工作
- node.js - Async callback was not invoked jest/supertest - simple endpoint
- r - 在 R 中的内核上循环的 SVM 回归错误
- java - Is Java thread a daemon 'if and only if' the creating thread is a daemon?
- sql - Azure SQL如何获取满足条件的数组中的第一个元素
- javascript - Javascript是否可以使用file.js和脚本
- c# - 使用 C# 创建与数据库值相关的动态文本框