问题标签 [aws-lambda-layers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
23111 浏览

python-3.x - 无法导入模块“lambda_function”:没有名为“pandas”的模块

START RequestId:3d5691d9-ad79-4eed-a26c-5bc3f1a23a99 版本:$LATEST 无法导入模块“lambda_function”:没有名为“pandas”的模块
END RequestId:3d5691d9-ad79-4eed-a26c-5bc3f1a23a99

我使用 Windows 7 64 位作为主机操作系统。

我想做的事

我只是想在 AWS-Lambda 环境中使用 pandas。就像我在 windows 环境中使用它一样,我正在为 Lambda 寻找一个简单的解决方案。

到目前为止我尝试过的

  • 在虚拟盒子上安装了 Xubuntu。
  • myvenv在虚拟盒上创建一个名为 Xubuntu 的虚拟环境。
  • 然后我在myvenv.
  • 此后,我将文件夹内容复制myvenv'/usr/local/lib/python3.6/site-packages/'我的主机操作系统。
  • 在主机操作系统(Windows 7)中,我创建了一个名为 的文件夹packs,粘贴了myvenv.
  • 在主机操作系统(Windows 7)中创建了一个lambda_function.py脚本packs
  • 然后我使用 7zip 软件压缩文件夹并packs上传zipLambda
  • 在 Lambda 中,lambda 函数处理程序名称为lambda_handler(). 代码片段看起来像,

将熊猫导入为 pd

  • 处理程序被命名为lambda_function.lambda_handler. 我已授予 lambda-roleAWSLambdaFullAccess权限。
  • 超时设置为 4 分 3 秒。
  • 测试事件看起来像

    { "key1": "如果一切正常,这将被打印出来" }

我尝试了以下解决方案:

  • 从这里为 pandas 和 numpy 尝试了预编译的与 linux 兼容的二进制文件——没有运气。
  • 在 Lambda 中,将其更改Handler infopython_filename.function_name。就我而言,它是lambda_function.lambda_handler - failed with no module named 'pandas' error
  • 将 lambda 函数放在根文件夹中,使用 7zip 软件压缩文件夹并将文件夹上传到 S3 存储桶。就我而言,我将函数放置在 location python\lib\python3.6\site_packages\lambda_function.pyfailed with no module named 'pandas' error
  • 已经尝试过发布在 SO, 1 , 2 , 3 , 4 , 5 , 6上的这些相关解决方案

注意:我不想使用 Docker,因为我不知道如何使用它,我也不愿意学习它,因为我现在很生气。我来自 Windows 环境(这很糟糕,我现在知道了。

关于如何让它发挥作用的任何想法。

0 投票
1 回答
751 浏览

mongoose - Lambda:找不到模块 './drivers/node-mongodb-native/connection'”,虽然添加了 mongoose 层

我有一个 NestJS 应用程序,在我的处理程序文件中我导入猫鼬来创建连接:

然后,在我的处理函数中:

现在我已经在没有猫鼬的情况下完全部署并测试了我的应用程序,并且一切正常。

相关无服务器配置:

我添加了一个 mongoose 层,在 zip 中我有一个名为“nodejs”的文件夹,其中有 package.json 和“node_modules”文件夹,其中包含 npm 安装的所有依赖项。

在此之前我使用过层,并且没有以相同的方式安装问题。

但是,在尝试任何端点时,我仍然在控制台上得到这个:

0 投票
1 回答
434 浏览

amazon-web-services - 异步调用 AWS Lambda 不会产生任何日志

我已按照以下说明操作:https ://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#dlq为了从命令行异步调用我的 Lambda 函数:

我确实被status code 202退回,但我没有看到任何有关执行的日志。

我怎样才能解决这个问题?

编辑:

以下是我的 JSON 格式的执行策略:

0 投票
0 回答
1065 浏览

amazon-web-services - 将 Tensroflow 库部署为 AWS Lambda 层

我正在尝试将Tensorflow(特别是:)部署libtensorflow.so.1, libtensorflow.so.1.14.0, libtensorflow_framework.so.1, libtensorflow_framework.so.1.14.0AWS Lambda Layer。我收到以下错误:

如何通过删除与我使用 Tensorflow Lambda 层的 Lambda 函数无关的一些内容来更改这些 .so 文件?

0 投票
1 回答
316 浏览

python - yara-python 无法导入 AWS Lambda

我正在尝试将 yara 库导入 AWS Lambda 函数,但始终出现以下错误:

我尝试添加一个包含请求库和 yara 库的层,导入请求有效,但导入 yara 无效。

我正在使用的 lambda 函数如下。它在这个阶段除了导入 yara 什么都不做。

我也尝试过创建一个虚拟环境,安装软件包,创建 lambda 函数并将其作为 lambda 函数上传到 AWS,这会产生相同的错误。

您不能在 AWS Lambda 中创建符号链接,/var/lang/lib/libyara.so因为 lambda 只允许写入/tmp.

有没有人有这个工作?

0 投票
0 回答
156 浏览

node.js - AWS Lambda 层和本地结构

我在如何配置我的本地环境以重现 prod env 的行为方面遇到问题。

我的 prod env 的简化视图:

ABC是经典的 node.js lambda 函数。A & B共享一些lodash.js我想在 lambda 层下分组的常见依赖项(比方说):L

对于我的开发环境,我使用 Lerna(但这不是强制性的)作为具有这种结构的单声道存储库工作:

要发布L,我所要做的就是安装它的依赖项并将node_modules文件夹的内容复制到nodejs/node_modules我层的路径中。

但我目前无法做到的是让模块AB解决它们在标准node_modules路径L node_modules文件夹中的依赖关系。


一些不可接受的解决方案:

  • 复制依赖项
  • 在 lerna package.json中全局添加L依赖项(因为在我的真实环境中我有多个层)
0 投票
1 回答
2630 浏览

node.js - 如何将 lambda 层中的文件复制到 /opt/bin 目录?

我正在使用 AWS Lambda 中的 PDF 到图像转换项目,但遇到了一些问题,因为 AWS lambda 没有像ImageMagick环境中那样的相关二进制文件,然后我按照一些链接和 StackOverflow 问题并将相关二进制文件作为一个层,对于这项工作,我不得不使用已Ghostscript编译的二进制文件。

层 zip 包含这样的文件

GhostScript.zip > bin > gs

我有一个包装库调用pdf2png,它将执行一个进行转换的子进程,这个子进程使用的命令是上面提到的实用程序gs,但我的问题是我提到的实用程序的路径是错误的,它会抛出一个错误说,

错误:spawn /opt/bin/bin/gs ENOENT

所以我想知道的是 lambda 层文件将如何复制到/opt/bin/目录中?我应该如何替换路径?

对应的代码,

0 投票
2 回答
299 浏览

javascript - 如何在子目录中包含nodejs模块

对于 AWS Lambda 层,我有一个这样的目录结构。

test.js在上传到 AWS 之前,我有一个文件来测试功能。是否可以将我的test.js文件放在Main文件夹而不是nodejs文件夹中,并且仍然让它拾取nodejs文件夹中的模块?

我问是因为您压缩nodejs要为 AWS Lambda 层上传的文件夹,但我不想将我test.js的文件包含在存档中。

更新:下面的答案帮助我找到了解决方案。您只需在 require 中输入模块的完整路径。

0 投票
2 回答
3054 浏览

node.js - 无法从 aws-lambda 解析“nodejs/”目录下的自定义依赖项

我正在尝试从 lambda 层导入自定义依赖项,但无法正常工作。

环境:nodejs8.10

我有一个包含以下目录结构的层:

在这里,util.js 有以下代码:

在 myLambda.js 中,我尝试SomeFunction使用以下代码进行调用:

但是,我收到了这个错误:

提前致谢。

0 投票
1 回答
8043 浏览

amazon-web-services - 旧的 AWS Lambda 层会自动删除吗?如果没有,如何删除它们?

在阅读了这篇讨论使用 AWS Lambda 函数的主要缺点的文章后,我试图避免作者必须处理的事情,并对我自己的代码进行一些清理:

Lambda 版本每个函数。我们使用无服务器框架开发 Lambda 应用程序。这意味着无服务器创建 Lambda 函数。我们的平均 Lambda 函数约为 60MB。[...]
当您将 CI/CD 与快速开发和 Lambda 函数结合时,你会得到很多版本,甚至上百个。而 Lambda 代码存储限制为 75GB。我们达到了这个限制,而且我们很努力。经过两年的 CI/CD 驱动开发,我们缺乏版本清理导致我们的开发完全陷入僵局过程。”

(强调我的)

关于我的架构。我有 lambda 函数,它们从存储在layers中的自制 python 包中调用方法。目标是避免在 lambda 中包含太多代码并轻松重用其中的功能。

现在,我找到了如何删除旧版本的 lambda 函数(我也在使用无服务器框架,它提供了一个很好的插件,可以在部署堆栈时自动修剪它们)。但是,我不知道 AWS 是否会自动删除旧层:我还没有找到一个可以汇总所有层版本的总代码大小的仪表板,也找不到自动删除它们的插件。

旧的 AWS Lambda 层会自动删除吗?如果没有,我怎么能批量删除它们?