ste*_*esu 5 amazon-web-services aws-sam-cli
当使用 AWS SAM CLI 构建无服务器应用程序时,它神奇地定位依赖项并将它们全部安装为“构建”步骤。例如,使用 NodeJS 应用程序:
$> sam build
Building resource 'HelloWorldFunction'
Running NodejsNpmBuilder:NpmPack
Running NodejsNpmBuilder:CopyNpmrc
Running NodejsNpmBuilder:CopySource
Running NodejsNpmBuilder:NpmInstall
Running NodejsNpmBuilder:CleanUpNpmrc
Build Succeeded
Built Artifacts : .aws-sam/build
Built Template : .aws-sam/build/template.yaml
Commands you can use next
=========================
[*] Invoke Function: sam local invoke
[*] Deploy: sam deploy --guided
$>
Run Code Online (Sandbox Code Playgroud)
查看官方文档,他们很乐意简单地将其视为魔术,并说:
遍历应用程序中的函数,查找
requirements.txt包含依赖项的清单文件(例如),并自动创建可以部署到 Lambda 的部署工件
但是,如果我有一个超出清单文件中指定的依赖项怎么办?如果我的代码依赖于编译的二进制文件或静态数据文件怎么办?
我想添加额外的构建步骤,以便在我运行sam build时编译这些文件或适当地复制它们。有没有办法做到这一点?
小智 6
sam build在跑npm install。因此,如果您将自己的脚本插入到某个步骤(例如preinstallpackage.json 中),sam build也将执行该步骤。
包.json
{
...
"preinstall": "cp -r ../../../common ./"
...
}
Run Code Online (Sandbox Code Playgroud)
上面的预安装脚本是一个 hack,它将公共目录嵌入到每个 lambda 处理程序的 zip 中的 sam 初始化项目的根文件夹中,以便可以从每个处理程序中引用它。
您还应该在本地 lambda 处理程序目录中创建一个符号链接,例如ln -s ../common ./common,以便本地和 lambda 使用相同的代码。
| 归档时间: |
|
| 查看次数: |
1562 次 |
| 最近记录: |