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

python - 是否可以通过 serverless.yml 将路径添加到 PATH 环境变量?

当我创建 AWS Lambda 层时,我的 zip 文件的所有内容/模块都会/opt/在 AWS Lambda 执行时转到。这很容易变得麻烦和令人沮丧,因为我必须在我的所有 lambdas 上使用绝对导入。例子:

所以我想知道,是否可以通过 serverless.yml 预先将这些 /opt/paths 添加到 PATH 环境变量中?这样一来,我就可以from dynamodb_layer.customer import CustomerManager,而不是那种怪异的丑陋。

0 投票
3 回答
26744 浏览

python - 在 lambda 层中导入库

我想在我的 AWS Lambda 中导入 jsonschema 库以执行请求验证。我没有将依赖项与我的应用程序捆绑在一起,而是希望通过 Lambda 层来做到这一点。我将所有依赖项压缩在venv/lib/python3.6/site-packages/. 我将其作为 lambda 层上传,并分别使用publish-layer-versionaws lambda update-function-configuration命令将其添加到我的 aws lambda 中。zip 文件夹的名称为“lambda-dep.zip”,所有文件都在其下。但是,当我尝试在我的 lambda_function 中导入 jsonschema 时,我看到以下错误 -

0 投票
3 回答
4396 浏览

amazon-web-services - 最新的 Lambda 层 ARN

我有一个不断更新的 lambda 层。这个 lambda 层有多个版本。如何使用 aws cli 找到最新版本的 lambda 层 ARN?

0 投票
1 回答
353 浏览

logging - AWS lambda:如果 log4j.xml 中不存在环境变量,有没有办法设置默认值?

我有使用 java 的 aws lambda 函数实现。我正在使用标准 log4j 配置登录 cloudwatch 。我可以将 aws lambda 环境运行时变量访问到我的 log4j 以设置我的日志级别。我唯一的问题 - 在 log4j.xml 中没有环境变量值的情况下,有没有一种方法可以将日志级别默认为某个值?

下面是我的 log4j.xml 配置。

0 投票
2 回答
1802 浏览

python - 如何在 AWS Lambda 函数中降级 boto3 版本

我需要在 Lambda (Python 3.7) 中使用我自己的 boto3 版本。由于某种原因,Lambda 默认 Python 3.7 env (1.9.42) 中包含的版本不支持使用 Textract。

为此,我根据指南执行了以下操作:

  1. 使用以下命令创建自定义包:
    • pip freeze > requirements.txt这将产生这个文件:
  • mkdir build
  • pip3 install -r requirements.txt -t build/
  • cd build
  • zip -r ../boto3_layer.zip .

然后我使用 GUI 上传了一个新的 Lambda 层(称为 boto3Layer)。然后我成功地将该层添加到我的 Lambda 函数中。

问题是,我不知道如何使用内联代码编辑器将所述层导入我的代码中。

我有以下代码:

我得到错误"errorMessage": "Unable to import module 'lambda_function': No module named 'boto3_layer'"

我也尝试导入 just boto3,但确认它是错误的版本(它是 Lambda 使用的版本),所以我的导入没有覆盖它。

我只想知道如何将我的自定义层导入我的代码!谢谢

编辑:尝试建议:

对于尝试完成相同任务的其他用户:

  1. virtualenv python --python=python3.7
  2. source python/bin/activate接着pip3 install boto3
  3. zip -r boto3_layer.zip python/lib/
  4. 使用 Lambda 函数创建新的 Lambda 层boto3_layer.zip并将层添加到 Lambda 函数
  5. 试图运行上面的代码保存失败"errorMessage": "Unable to import module 'lambda_function': No module named 'boto3_layer'",

这最终通过导入boto3而不是我的自定义名称来工作。

0 投票
2 回答
621 浏览

node.js - 如何防止 lambda 中的代码重复?

我有一些包含重复代码块的 Nodejs 函数。我知道我们可以将 lambda 层用于共享库,但我想知道,是否也可以共享代码?例如,重复代码之一如下所示

我想把这个块导入多个函数而不是一遍又一遍地写

0 投票
1 回答
1027 浏览

linux - 使用 Python AWS Lambda 层连接到 MS SQL Server 的问题 - SQL Server 的 ODBC 驱动程序 13

我正在设置 AWS lambda 函数以使用 pyodbc 从表中提取记录来连接到 MS SQL Server 数据库。

我收到一条错误消息

我已经在 linux EC2 实例上构建了一个部署包)使用以下帖子中详述的过程: https ://gist.github.com/carlochess/658a98589709f46dbb3d20502e48556b

我对此进行了广泛阅读,并更改了 odbcinst.ini 文件中的路径以匹配 lambda 层的目录结构,但没有运气。

我还引用了驱动程序文件的位置(libmsodbcsql-13.1.so.9.2)。

错误消息略有变化,表明它无法在特定位置找到驱动程序 efile(即使该文件确实存在)

0 投票
1 回答
2882 浏览

python-3.x - 让 pyodbc 在 AWS Lambda 层中连接

我已经构建了部署包以通过 pyodbc 连接到 AWS RDS 实例,在压缩并上传到 AWS lambda 之后,此连接有效。

尝试通过 AWS 层连接时,会显示以下错误。

尝试在 odbcinst.ini 文件中更改驱动程序的路径,但没有成功

odbcinst.ini 文件中的文本示例

0 投票
1 回答
1124 浏览

docker - 如何在 Docker 容器中运行 AWS Lambda 层?

我想运行一个 Docker 容器来查看公共 Lambda 层中的内容。

按照aws sam layers docs使用仅具有 pytorch 层的 sam 应用程序,我生成了 Docker 标签,然后我尝试拉取 Docker 映像,该映像因拉取访问被拒绝/repo 可能需要身份验证而失败。

我确实尝试aws ecr get-login --no-include-email正确进行身份验证,但仍然无法访问图像。

所以我认为问题可能是我无权拉取 lambda 层的图像或图像不存在。我不清楚

或者,最好下载公共 Lambda 层,然后我可以使用https://github.com/lambci/docker-lambda来检查它

关于我尝试过的更多内容

所以我想研究的 Lambda 层是:

我生产的 docker 标签是:

然后我尝试使用以下方法拉取 Docker 映像:

两者都因错误而失败:

.

0 投票
0 回答
494 浏览

php - AWS Lambda php:放置 php.ini 的位置

我正在尝试在 stackery 层的基础上为 AWS Lambda 创建一个 php 7.3.6 层。[见这里]

我尝试通过将添加和添加到模块文件夹并进入 php.ini 来使mysqli.somySQLpdo_mysql.so可用mysqlnd.so

该层本身可以正常工作,但不会加载 mySQL 扩展。如果我创建一个仅由它组成的简单 lambda 函数,phpinfo()会告诉我,我的 ini 文件没有找到,它应该在/etc.

phpinfo() 的输出:

我用于 php 层的 .zip 文件的文件夹结构如下:

我是否必须更改我的文件夹结构,或者我可以告诉 php 在哪里搜索php.ini