问题标签 [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.
node.js - AWS Lambda - 无法访问捆绑在层 (Node.js) 中的 JS 文件
我在 node.js 上创建了一个 lambda 函数并用它附加了一个层。但是当我执行我的 lambda 函数时,它没有读取捆绑在层中的 JS。如果我在这里犯了任何错误,请告诉我。
关注这篇文章并创建了一个图层“my-utility”并上传了 nodejs.zip。
AWS 控制台 > Lambda > 层 > 创建层
层结构
myutil.js
Lambda 代码 (Node.js 10.x)
在上面的 lambda 测试之后,它给出了以下结果:
如果您注意到,当我尝试打印“myutil”常量时,它会打印为空。这意味着,在 lambda 执行期间不会注入层代码。
信息层代码:{}
node.js - AWS Lambda 层和 Lerna.js
我正在尝试使用 Lerna.js 与 AWS Lambda 层一起创建无服务器 monorepo。从技术上讲,我想在 Lambda 之间共享我的根 node_modules 作为层。
但是我遇到了我自己的 lerna 子包作为符号链接存在于 node_modules 中的问题,这是一个问题。在 lerna.js 使用的上下文中,您是否有任何指南、建议、如何将符号链接替换为 node_modules 中的“真实”文件夹?
*** 我刚刚在 lerna.js 存储库中创建了问题,但这里的 smbd 可能有任何建议(https://github.com/lerna/lerna/issues/2154)。
python - 如何将 Python 库“matplotlib”部署为 AWS 中的 Lambda 层?
我已经尝试在 python/lib/python3.7/site-packages/{matplotlib here} 中压缩和构建 zip 但它说无法导入 matplotlib/ init_.py中的ft2font
有趣的是,我的包中没有其他具有该名称的文件。我在不同的操作系统上尝试了 pip install 和 pip3 install 但没有运气
amazon-web-services - libtensorflow.so:无法打开共享对象文件:没有这样的文件或目录
我使用以下命令创建了一个 AWS Lambda 层:
这是生成的 ARN:`arn:aws:lambda:us-east-1:757767972066:layer:TensorflowLambdaLayer:1
当我尝试通过 AWS SAM 运行使用Tesnroflow库的 Lambda 函数时,它卡在“安装”步骤:
一旦我终止它,Ctrl + C
我会收到以下消息:
这是我的template.yml的关键部分:
我不确定是什么原因造成的
amazon-web-services - 转换失败:某些目录没有执行权限
我正在尝试在AWS CloudFormation中创建AWS Lambda 层,但发生错误:
图层转换失败:部分目录没有执行权限;(服务:AWSLambdaInternal;状态代码:400;错误代码:InvalidParameterValueException;请求 ID:eff63297-bf71-4578-a665-c493a9fbdb40)
CloudFormation 模板中的 Lambda 层定义:
LambdaLayerTest.zip 是一个名为“nodejs”的文件夹,其中包含 node_modules 文件夹、package.json 文件和 yarn.lock 文件。
包.json:
php - aws lambda php 运行时偶尔出现核心转储
我尝试按照 Amazon Lambda Customer Runtime for PHP中的说明设置 php 运行时,但有时当我调用它时,它会产生核心转储。奇怪的是,并非每次都这样做。(实际上,它似乎在将更改保存到 lambda 脚本后的一两分钟内完成,最终当它开始按预期工作时,它不会再这样做了 - 但是,我要多久似乎并不重要发布更改后等待,即使在等待更长的时间后,它仍然会在前几次尝试中偶尔出现核心转储)
我试过不同版本的php。我尝试了不同的引导文件。我尝试将内存增加到 1024Mb(它很少说它使用超过 50Mb)
我如何才能弄清楚它为什么要进行核心转储和/或阻止它这样做?
编辑:
amazon-web-services - AWS Lambda 层没有执行权限
我为 Python 运行时(3.6 和 3.7 兼容)创建了一个 lambda lambda,其中包含一个 bin 可执行文件(texlive)
但是当我尝试通过它执行它时,subprocess.run
它说它没有执行权限!
我怎样才能使这一层具有执行权限?我在 Windows 10 上压缩了图层文件,所以我不确定如何添加 Linux 执行权限。
另外,据我所知,当您解压缩文件时,它会“重置”权限,所以如果 AWS 在解压缩我的图层时没有设置执行权限,我该怎么办?
顺便说一句,我正在通过 aws 控制台上传我的图层
typescript - 我可以从 Lambda 层导入 typescript 类型吗?
我在构建 Lambda 函数时尝试使用 TypeScript,但在使用也是用 TypeScript 编写的 Lambda 层时遇到了问题。
TypeScript 无法识别我的层的 /opt/nodejs/... 导入(因为它将在 SAM 或 AWS 中运行),因此我无法将我在层中定义的类型导入到我的 Lambda 函数。
我试图查看是否能够以某种方式 npm 链接该层,但我似乎无法使其正常工作,因为导入是本地路径 '/opt/nodejs ...' 而不仅仅是模块名称。
层:
拉姆达:
我只是收到错误消息:Cannot find module '/opt/nodejs/myLayer'.ts(2307)
我发现自己不得不用它来抑制它,// @ts-ignore can be ignored as this is a Lambda layer
但这意味着我无法使用图层中的 TypeScript 类型。
firebase - AWS Lambda,添加 firebase 模块及其依赖项以与 Angular Universal 一起使用
我有一个 Angular Universal 项目使用 SSR 部署到 AWS Lambda,但我还没有设法让 firebase 作为它的依赖项工作。控制台中的所有错误都与 firebase 依赖项及其依赖项有关。
方法 #1:包含 firebase 模块
这增加了firebase,现在错误转移到无法找到firebase的依赖项等等。
方法#2:只包含所有节点模块
这是一个 Angular 项目,我有 600mb+ 的依赖项来构建应用程序,
方法 #3:在我的 Angular 'dist' 文件夹中安装 firebase。
这将引发运行时错误:
方法 #4:serverless-webpack
这会在sls deploy
说它找不到 webpack 配置时抛出错误,但它就在 serverlesss.yml 旁边的根目录中,并且它已经被 angular Universal 使用,我不能用不同的配置覆盖它 serverless-webpack 插件.
方法 #5:手动 Lambda 层
我尝试使用具有firebase作为依赖项的package.json创建一个层,运行npm install,制作包含该nodejs
文件夹的文件夹的存档node_modules
并将其作为层上传+手动添加到我的函数中。
与 #1 相同的错误,找不到 firebase 模块,这也将在我下次部署时被无服务器框架覆盖。
方法 #6:通过无服务器的 Lambda 层
我试图将这些文章拼凑在一起,以获得 第 1条、第 2条、第 3条的工作,并使用了这个 github中的示例,但用 firebase 切换了时刻。
但是它们都不起作用,无服务器配置:
会抛出:No file matches include / exclude patterns
const firebase = require('firebase');
我的端点处理程序内部也有。
我一直试图让这个工作整整两天,这已经令人沮丧了。任何帮助表示赞赏。
aws-lambda - 从用 go 编写的 lambda 调用 python 应用程序
我正在完全在 golang 中开发基于 aws 的应用程序,尽管我有一段 python 代码需要在 lambda 函数中作为单独的子进程调用。
python 代码是作为 CLI 应用程序编写的,很难从中制作 lambda,所以我想在我的基于 golang 的 lambda 函数中将它作为子进程运行。
有没有办法做到这一点?据我所知,我可以创建一个图层,但是如何将 python 安装到该图层?