问题标签 [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 投票
0 回答
526 浏览

python-3.x - 如何在 Amazon Linux 环境中安装 Python mariadb 模块

我的目标是构建一个 AWS Lambda 层,为运行 python 3.8 的 AWS Lambda 提供 mariadb 模块。

按照这些说明,我需要在与 AWS Lambda 平台兼容的实例上安装 mariadb 模块。像这样安装模块...

...失败并显示错误消息...

我需要什么来解决这个问题?

我假设安装“MariaDB Connector/C”是先决条件?但如何做到这一点?以及如何以可以将其打包成可用于定义 AWS Lambda 层的 zip 的方式进行操作?

一些上下文

我在一个 Amazon 实例上运行了它,我认为它与 Lamba 主机相同,以显示“Amazon Linux AMI 2018.03.0 (HVM), SSD Volume Type - ami-02769748522663066”。cat /etc/os-release返回...

不同的实例 AMI 是否更适合打包 python3.8 Lambda 层?

我用这个设置了python3(盒子里没有python 3.8):


更新和自我回答

所以简短的回答是,目前这是不可能的。MariaDb 连接器不支持亚马逊风格的 linux。但是,有一个备用 python 库 PyMySQL 将连接到 mariadb 服务器。

这是一个 python3.8 AWS Lambda 函数的内容,它为 Lambda 制造 AWS 函数层。

工厂 (AWS Lambda) 函数

在客户端,可以像这样调用(再次使用python脚本)......工厂函数函数接受python pip冻结要求并制造一个层,而不是为指定的模块提供服务。就我而言, requirements.txt 将包括 PyMySQL 。

0 投票
1 回答
147 浏览

python - “lambda_function”:没有名为“ask_sdk_core”的模块

希望你一切顺利 :)

我 pip 将所有外部库安装到一个文件夹中。压缩安装的库。将其上传到 lambda 的图层。但是,我最终遇到了这样的错误。有谁知道为什么?让我知道是否有任何其他有用的信息可供我提供。在此处输入图像描述

这是已安装库的目录树视图:

0 投票
3 回答
3747 浏览

amazon-web-services - 如何在 AWS Lambda 函数中使用 ImageMagick

我正在尝试创建一个利用 ImageMagick 将 PDF 转换为图像的 lambda。

为此,我可以上传 ImageMagick 的二进制文件。

这种方法失败了,因为似乎有一些 IM 依赖的共享库。

有没有办法将 ImageMagick 安装为一个层或将其全部与它的依赖项打包在一起?
或者也许一个不同的解决方案是正确的。

现在,我已经验证我可以将二进制文件作为 Lambda 包的一部分上传并调用它们。

0 投票
1 回答
385 浏览

python - 无法在 aws 层中添加熊猫并出现错误

在 lambda 函数中导入 pandas/numpy 时出现错误:

我添加了 pandas/numpy 作为 aws 层,我也以同样的方式添加了 pymysql,它工作正常。

在 Windows 10 上工作,
在 lambda 中使用相同的 python3.7 也
使用 pip install pandas -t
在目录中构建 zip 包 - python\lib\python3.7\site-packages

0 投票
2 回答
2551 浏览

python - Python层图像失败:“无法导入模块'lambda_function':无法从'PIL'导入名称'_imaging'”

我只是想在我的 Python 3.8 Lambda 中使用 PIL。

我正在尝试以下步骤:

  1. 基于此回购:https ://github.com/hidekuma/lambda-layers-for-python-runtime
  1. 基于此指南:https ://www.splunk.com/en_us/blog/cloud/sharing-code-dependencies-with-aws-lambda-layers.html

然后我在 Lamda 配置中选择我的层,但是当我运行此代码时:

...我得到错误:

我到底哪里错了?!?

0 投票
1 回答
858 浏览

snowflake-cloud-data-platform - 雪花的 Lambda 层函数

我遵循了在雪花中创建 Lambda 层的标准方法。

[在 AWS EC2 实例中] rm -rf snowflake mkdir -p snowflake/python/lib/python3.7/site-packages pip3 install --no-cache-dir --ignore-installed --upgrade snowflake-connector-python - t 雪花/python/lib/python3.7/site-packages cd 雪花;rm -f 雪花.zip;zip -r 雪花.zip。

我可以创建 Lambda 层,然后将其添加到我的 Lambda 函数中。以及验证库是否已附加,但是当我调用 Lambda 函数时,它失败了

导入雪花连接器

[错误] Runtime.ImportModuleError:无法导入模块“lambda_function”:没有名为“雪花”的模块

是否有任何雪花 Lambda 库或关于此处可能出现问题的详细指南。我一直以这种方式构建 lambda 层,通常上述过程有效。

0 投票
1 回答
938 浏览

node.js - 使用 Yarn Workspaces 在 monorepo 中可重复构建 Lambda 层

我有相当大的 monorepo,完全由Yarn Workspaces(没有 Lerna)管理。其中一个包(“工作区”)包含一组第 3 方 NodeJS 包,我们将它们用作Lambda 函数的共享层dependencies,在package.json此包中收集。该包的构建脚本应该将所有依赖项收集到一个 zip 文件中,该文件稍后将由 Terraform 发布。不幸的是,Yarn 无法从 monorepo 构建单个工作区,因此我们必须直接使用 NPM。

目前我们大致做了以下工作——

  1. 复制package.jsonbuild文件夹
  2. npm install --production在这个文件夹中运行
  3. 压缩生成的node_modules

我对这种方法的主要问题(除了混合构建工具)是构建不可重复 - 每次我们运行时,npm install我们可能会获得任何依赖包的更新兼容版本,因为该版本被 Yarn 在顶层“锁定”yarn.lock文件和 NPM(显然)不知道它。

我很确定我们并不孤单。有没有更好的方法可用?

0 投票
2 回答
1737 浏览

python - 如何在 lambda 层中本地调试依赖项?

我正在从一个 dockerfile 创建一个 lambda 层,它将 python 包安装到一个目录并压缩结果。

对于这个 Dockerfile,我可以成功部署。
现在我想添加更多库¹,但尽管 docker 构建和上传成功,但在执行 lambda 函数时出现错误(找不到 numpy)。我想要一种比更改 Docker 文件、构建、提取和上传 zip 文件并在 AWS 管理控制台中按“测试”更简单的方法来调试它。

我尝试在本地运行 docker 容器并在那里安装软件包,看看是否可以将所有内容导入 python shell,但我什至无法以这种方式重新创建原始文件:

如何找出本地机器上的正确依赖关系?

更新

我使它适用于以下版本,但知道如何在本地测试它仍然很有趣。

¹ 特别是我想要以下软件包:

0 投票
1 回答
562 浏览

amazon-web-services - 模块化 aws lambda 代码的最佳实践

我一直在检查互联网上的一些资源,AWS 中的所有 lambda 示例都非常基础,但我不确定我们将如何模块化具有多个依赖项的应用程序,例如在 java 中,我们通常有这样的结构

我们将与每个逻辑相关的代码放在包中,但现在在 AWS 中,这似乎更像是脚本,它将粘合各个部分,而不是我习惯的 OOP,所以我的问题是我们如何处理(如果应用)这种关系,因为我已经看到所有逻辑都在一个 lambda 中的代码,这似乎不是最好的方法,例如,如果我们有一些功能首先进行身份验证、授权、转换、调用外部 api、获取响应然后执行调用最终的休息端点,我们如何拆分它,例如将是相同的 lambda,其中包含包(目录)并且我们互相调用?或者我们有多个 lambda,每个都有一个目的?这将为每个 lambda 生成冷启动?

我在考虑使用层,但似乎很新,不确定这是否是生产就绪功能,并且似乎与重用代码更相关

0 投票
1 回答
498 浏览

node.js - AWS lambda 层调用说 opt/ffmpeg 不是目录

我按照本教程制作 ffmpeg lambda 层https://www.serverless.com/blog/publish-aws-lambda-layers-serverless-framework

我使用 spawnsync 在我的目录中运行 ls 并且 opt 目录为空,因此 ffmpeg 没有触发。

关于我可能做错了什么的任何指示?

我使用 node.js12.x 作为无服务器框架的运行时。