使用AWS SAM时,我曾运行build
命令,该命令将遍历我的所有Lambda函数包并安装它们的依赖项(在它们上运行npm install
)。
如何使用AWS CDK实现相同的行为?它似乎不是自动完成的,还是我遗漏了什么?
它不会自动完成,您需要打包这些。然后,您将能够使用fromAsset或fromBucket将代码连接到函数
使用如下本地构建脚本,您可以非常轻松地执行此操作:
const websiteRedirectFunction = new lambda.Function(
this,
"RedirectFunction",
{
code: lambda.Code.fromAsset(path.resolve(__dirname, "../../redirect"), {
bundling: {
command: [
"bash",
"-c",
"npm install && npm run build && cp -rT /asset-input/dist/ /asset-output/",
],
image: lambda.Runtime.NODEJS_12_X.bundlingDockerImage,
user: "root",
},
}),
handler: "index.redirect",
tracing: lambda.Tracing.ACTIVE,
runtime: lambda.Runtime.NODEJS_12_X,
}
);
假设您有一个要构建的文件夹,并上传Lambda的处理程序和node_modules。
从文档中:
使用lambda时。密码fromAsset(path)可以通过在Docker容器中运行命令来捆绑代码。资产路径将安装在/资产输入处。Docker容器负责将内容放入/asset输出。/asset输出的内容将被压缩并用作Lambda代码。
这个功能确实缺失了。你需要自己编写包装。请记住,如果任何依赖项(如Numpy)使用带有本机C代码的共享库,则lambda依赖项必须构建在与AWS(Linux)中的目标系统具有相同体系结构的系统上。
有一个Docker镜像,旨在提供一个尽可能接近AWS的环境:lambci/lambda:build-python3。7
因此,如果您是在任何非Linux体系结构上构建,那么对于一些更复杂的lambda函数,您可能需要这个。
编辑:我为lambda打包打开了Python代码:https://gitlab.com/josef.stach/aws-cdk-lambda-asset
我正在试用AWS Codestar。我的目标是部署一个非平凡的lambdaendpoint,即处理程序具有依赖关系的地方。理想情况下,我希望能够在文件,但这似乎不是那么简单。具体地说,我想部署一个依赖于nltk的lambda处理程序,其中nltk标记器“punkt”的文件作为代码构建过程的一部分下载,并为lambda打包。 如何通过和?下面,我试图将依赖项安装到子目录,并将其包含在zip工件中。
我在Eclipse内部使用Eclipse Maven(m2e),并且运行我的项目如下所示: 我的如下所示: 在我运行maven安装后,它正在工作... null 我没有办法...谁能告诉我一个正确的方法来添加我的依赖项在JAR?我不敢相信这么复杂,而且我到处都找不到我的问题的答案… 事先谢谢你
问题内容: 我正在尝试使用Google Cloud Container Builder使用GCP构建触发器来自动构建容器 我的代码在Go中,并且在项目根目录中有一个文件夹,其中包含我所有的Go依赖项(我使用)。但是,此文件夹未签入到源代码管理中。 我有一个文件,首先将Go源代码构建为可执行文件,然后使用此可执行文件构建Docker映像。Container Builder确保这些构建步骤可以访问我的
问题内容: 我已经建立了两个RPM套件 取决于存在的文件,它在RPM软件包中正确反映,如下所示: 由于缺少依赖项,安装失败。 如何确保在安装过程中自动安装? 我确实按照此处所述尝试了该选项,但对我而言不起作用。 还有其他办法吗? 谢谢你的帮助。 问题答案: 创建一个(本地)存储库,并使用它来为您解决依赖关系。 CentOS Wiki有一个漂亮的页面,提供有关此操作方法的信息。CentOS Wiki
我有一个场景,需要使用AWS CDK python语言创建多个lambda函数。 当我尝试为每个函数创建多个堆栈时,它创建了第一个函数和显示该函数已经存在的其余函数。 如果我们调试cdk。对于创建的模板,两个堆栈Lambda函数显示相同的资源ID,如下所示: 如何为创建多个函数的资源获取唯一ID?你能建议如何克服这个问题吗?我想创建多个lambda函数,即使解决方案是通过创建循环来实现的,也很好
If you have just checked out a package from version control, you will need to install those dependencies. If you are adding dependencies for your project, then those dependencies are automatically ins