问题标签 [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 回答
6675 浏览

python - 在 AWS Lambda 中使用 Python SQLAlchemy 是个好主意吗?

亚马逊建议不要在 lambda 函数中包含大型库/依赖项。据我所知,SQLAlchemy 是一个相当大的 Python 库。你认为在 lambda 函数中使用它是个好主意吗?一种选择是将其作为 Lambda 层包含在所有相关的 Lambda 函数中。

无论如何,最好的做法是什么?

0 投票
5 回答
6863 浏览

aws-lambda - SAM 构建 - 它还构建层吗?

我对 lambda 和 SAM 都是新手 - 所以如果我搞砸了任何简单的事情,请不要大喊:D。

摘要:我无法sam build构建中指定的层template.yaml,它只构建 lambda 函数。

背景:我正在尝试在 python3.7 中构建一个使用 skimage ( scikit-image) 模块的 lambda 函数。为此,我正在尝试使用 SAM 来构建和部署它。 ...这是工作

我正在尝试将 scikit-image 模块部署为一个层(并且还使用 SAM 构建),而不是将其包含在 lambda 函数方向 中......这不起作用


首先,我只是扩展了标准的 SAMHello World应用程序。

我只需将 skimage 添加到requirements.txt,然后使用sam build -u,然后从构建的包目录中手动删除 numpy/scipy 依赖项(我已经包含了 AWS scipy/numpy 层),就可以让 skimage 正常工作。

(我将 import numpy、scipy.ndimage 和 skimage.draw 添加到标准的 hello world 应用程序中,并为每个应用程序添加了一些测试函数调用)

要求.txt:

之后,一切正常(在本地和/或 AWS 上运行)。


但是,我现在想将 skimage 模块从我的应用程序中移出并移到一个新的自定义层中(我想将 skimage 放在一个层中以重新用于一些功能)

为了设置它,我创建了一个依赖目录并将 requirements.txt 移到那里(在 app 目录中留下空的 requirements.txt)。然后我更新了 template.yaml 以指定新层:

目录结构:

但是,当我使用该模板文件运行时,不会为 template.yml 文件中:中sam build -u指定的层构建任何内容。但是仍然可以正确构建(现在当然没有任何包含的模块)./dependenciesSkimageLayerHelloWorldFunction

0 投票
0 回答
536 浏览

amazon-web-services - SAM AWS - 测试依赖于层的 AWS Lambda

我正在使用 AWS SAM 框架来构建耦合服务 Lambda 和 api 网关。我在为我的 lambdas 函数运行单元和集成测试时遇到了一些困难,这些函数正在使用层(实用程序函数、模型、控制器、配置......)

我可以存根一些函数,但其​​他函数是必需的,特别是一些我想放在图层上的库(例如 lodash,...)。

预先感谢您的帮助。

澄清

我有一个项目,其结构如下

  • 无服务器-poi
    • events/ => 包含本地测试的所有事件
    • lambda-create-poi
      • 测试/单元/lambda-create-poi-spec
      • 指数
      • 包裹
    • lambda-删除-poi
    • lambda-更新-poi
    • lambda-list-poi
    • lambda-list-poi
    • 层点
      • 节点/
        • 包裹
        • 会议
        • 楷模
        • 控制器
        • 实用程序
        • 一些共享库(例如:lodash、bluebird、...)

所有其他 lambda 具有与 lambda-create-poi 相同的结构。

我计划通过 bitbucket-ci 将部署工业化。我的管道看起来像:

我的问题是在并行步骤中找不到单元测试的层。所有的单元测试都失败了(我必须存根我使用的所有层事件)

谢谢你的帮助。

0 投票
2 回答
2309 浏览

amazon-web-services - 如何将 AWS Lambda 配置更新到特定层的最新版本?

我正在尝试使用 AWS CLI 实现一些自动化,
其中我可以使用 cli 命令更新我的 AWS Lambda 函数 -

并使用以下命令向图层添加版本 -

我想要实现的是,将特定层的最新版本链接到函数,
比如 -

我该怎么做?

0 投票
1 回答
880 浏览

amazon-web-services - aws-lambda-layer-kubectl 配置错误

我需要在 lambda 函数中针对 EKS 集群运行一些 kubectl 命令。这个函数最终需要查询 ECR 来获取图像。我在使用aws-lambda-layer-kubectl时遇到了下面描述的错误

我相信我已经正确部署了 lambda 层,因为我可以看到它的 ARN arn:aws:lambda:us-east-1:xxxxxxxx:layer:kubelambda:1

使用 aws-lambda-layer-kubectl 的 lambda 函数的屏幕截图

lambda 函数代码如下所示

拉姆达函数代码

但是,当我运行 lambda 函数时,出现以下错误

问题

  1. 这里有什么问题?
  2. 是否有从 ECR 检索图像的特定策略?

先感谢您。

0 投票
2 回答
838 浏览

node.js - Testing module that requires a module from a layer in AWS Lambda

So, I am using Layers in my Serverless Framework Node JS project. I add all commonly used npm packages to a layer because I don't want every Lambda function to have huge packages.

The problem is that when running unit tests (locally), it can't find these modules.

Is there any way to handle this problem?

0 投票
1 回答
1511 浏览

amazon-web-services - lambda 层是否包含 aws-sdk

我正在使用无服务器框架以及 lambda 层和一些 lambdas 函数。为了支持某些功能,我必须包含 aws-sdk。

aws-sdk 的 lambda 层大小为 80MB,而 aws-sdk 单独占用 40MB。

我所知道的是 Lambda 函数默认包含 aws-sdk。但这是否也意味着 lambda 层?

笔记

  • 我试图删除 aws-sdk 并部署,但 lambda 函数显示错误“找不到模块 aws-sdk”
  • NODE_PATH: "./:/opt/node_modules" 包含在 serverless.yml 中(这是否会导致 aws-sdk 默认不包含在内)?
  • 运行时是 nodejs10.x
0 投票
1 回答
1150 浏览

javascript - 如何配置 Visual Studio Code 以解析 AWS Lambda 层的输入路径 (javascript)

我使用 VS Code 开发我的 AWS 托管的无服务器应用程序。该应用程序使用 Lambda。最近,我决定开始使用 Lambda 层来提取和重用通用代码。我遇到的问题是 AWS Lambda 需要以下 Lambda 层导入:

我想在层导出函数上获得 Intellisense:

尽管我同时拥有 lambda 和 lambda 层代码,但 VS Code 自然无法解析层文件的路径,因此 Intellisense 不起作用。

我发现如果我将下一个 jsconfig.json 文件放在我的项目中的任何位置:

要求语句停止以红色显示,并且允许一些基本的文本自动完成。但它并没有真正正确地显示带有参数的图层导出函数。

我不想创建解决方案,例如在开发期间使用自定义导入,然后在部署到 AWS 期间用“require(”/opt/layer")”替换它们(或者至少有一些自动化的东西)。

可以做什么?

0 投票
1 回答
194 浏览

amazon-web-services - 计算应更新 Lambda 层的时间

我有一个来自 Github 的 CodePipeline 项目,它根据文件更改更新图层。我们不想在每次提交时自动更新层,因为它们不一定会改变。由于没有与要更新的 lambda 图层的内置比较,因此确定是否应更新图层的负担落在了用户身上。我尝试了几种不同的选择:

  1. 散列层文件的本地表示并将其与 AWS 上最新的 lambda 层进行比较。如果哈希值不同,您就知道您有文件更改,并且应该更新。
  2. 查看您的 git 文件更改(即使用 PythonGit)并查看您的任何层是否已更改文件。如果是这样,您应该更新您的图层。

2 是 CodePipeline 中的一个问题,特别是因为从 github 获取 repo 时,Download Zip使用的是功能,而不是 git clone,因此删除了 .git 文件夹。您可以通过重命名它来取回它,但它会变得混乱。

我很想听听其他人是如何处理这个问题的。

0 投票
1 回答
814 浏览

amazon-web-services - AWS Lambda 层如何与私有 conda 存储库一起使用?

我使用 conda 并有一个私人 conda repo

一个函数可以使用的最大层数是五层。所以我不能把我的每一个私有 conda 包都上传为一个单独的层——因为函数可能需要使用超过 5 个

我不清楚层应该如何解决这个问题,或者它们是否不是为这类事情而设计的

我是否只有一个用于基本 conda 环境的 lambda 层,然后让 lambda 使用该层来导入我的私有 conda 包?或者我应该将我的整个函数作为一个新层本身上传,在那里我将使用我所有的私有 conda deps 在本地构建我的 conda python 应用程序,将它作为一个新层上传,然后有一个不同的函数调用它?