问题标签 [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.
python - 是否可以通过 serverless.yml 将路径添加到 PATH 环境变量?
当我创建 AWS Lambda 层时,我的 zip 文件的所有内容/模块都会/opt/
在 AWS Lambda 执行时转到。这很容易变得麻烦和令人沮丧,因为我必须在我的所有 lambdas 上使用绝对导入。例子:
所以我想知道,是否可以通过 serverless.yml 预先将这些 /opt/paths 添加到 PATH 环境变量中?这样一来,我就可以from dynamodb_layer.customer import CustomerManager
,而不是那种怪异的丑陋。
python - 在 lambda 层中导入库
我想在我的 AWS Lambda 中导入 jsonschema 库以执行请求验证。我没有将依赖项与我的应用程序捆绑在一起,而是希望通过 Lambda 层来做到这一点。我将所有依赖项压缩在venv/lib/python3.6/site-packages/
. 我将其作为 lambda 层上传,并分别使用publish-layer-version
和aws lambda update-function-configuration
命令将其添加到我的 aws lambda 中。zip 文件夹的名称为“lambda-dep.zip”,所有文件都在其下。但是,当我尝试在我的 lambda_function 中导入 jsonschema 时,我看到以下错误 -
amazon-web-services - 最新的 Lambda 层 ARN
我有一个不断更新的 lambda 层。这个 lambda 层有多个版本。如何使用 aws cli 找到最新版本的 lambda 层 ARN?
logging - AWS lambda:如果 log4j.xml 中不存在环境变量,有没有办法设置默认值?
我有使用 java 的 aws lambda 函数实现。我正在使用标准 log4j 配置登录 cloudwatch 。我可以将 aws lambda 环境运行时变量访问到我的 log4j 以设置我的日志级别。我唯一的问题 - 在 log4j.xml 中没有环境变量值的情况下,有没有一种方法可以将日志级别默认为某个值?
下面是我的 log4j.xml 配置。
python - 如何在 AWS Lambda 函数中降级 boto3 版本
我需要在 Lambda (Python 3.7) 中使用我自己的 boto3 版本。由于某种原因,Lambda 默认 Python 3.7 env (1.9.42) 中包含的版本不支持使用 Textract。
为此,我根据指南执行了以下操作:
- 使用以下命令创建自定义包:
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 使用的版本),所以我的导入没有覆盖它。
我只想知道如何将我的自定义层导入我的代码!谢谢
编辑:尝试建议:
对于尝试完成相同任务的其他用户:
virtualenv python --python=python3.7
source python/bin/activate
接着pip3 install boto3
zip -r boto3_layer.zip python/lib/
- 使用 Lambda 函数创建新的 Lambda 层
boto3_layer.zip
并将层添加到 Lambda 函数 - 试图运行上面的代码保存失败
"errorMessage": "Unable to import module 'lambda_function': No module named 'boto3_layer'",
这最终通过导入boto3
而不是我的自定义名称来工作。
node.js - 如何防止 lambda 中的代码重复?
我有一些包含重复代码块的 Nodejs 函数。我知道我们可以将 lambda 层用于共享库,但我想知道,是否也可以共享代码?例如,重复代码之一如下所示
我想把这个块导入多个函数而不是一遍又一遍地写
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(即使该文件确实存在)
python-3.x - 让 pyodbc 在 AWS Lambda 层中连接
我已经构建了部署包以通过 pyodbc 连接到 AWS RDS 实例,在压缩并上传到 AWS lambda 之后,此连接有效。
尝试通过 AWS 层连接时,会显示以下错误。
尝试在 odbcinst.ini 文件中更改驱动程序的路径,但没有成功
odbcinst.ini 文件中的文本示例
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 映像:
两者都因错误而失败:
.
php - AWS Lambda php:放置 php.ini 的位置
我正在尝试在 stackery 层的基础上为 AWS Lambda 创建一个 php 7.3.6 层。[见这里]
我尝试通过将添加和添加到模块文件夹并进入 php.ini 来使mysqli.so
mySQLpdo_mysql.so
可用mysqlnd.so
。
该层本身可以正常工作,但不会加载 mySQL 扩展。如果我创建一个仅由它组成的简单 lambda 函数,phpinfo()
会告诉我,我的 ini 文件没有找到,它应该在/etc
.
phpinfo() 的输出:
我用于 php 层的 .zip 文件的文件夹结构如下:
我是否必须更改我的文件夹结构,或者我可以告诉 php 在哪里搜索php.ini
?