amazon-web-services - SAM CLI 的自定义构建步骤

标签 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

$>

the official documentation他们很乐意简单地将其视为魔术,并说:

iterates through the functions in your application, looks for a manifest file (such as requirements.txt) that contains the dependencies, and automatically creates deployment artifacts that you can deploy to Lambda



但是如果我有一个超出 list 文件中指定的依赖项怎么办?如果我的代码依赖于已编译的二进制文件或静态数据文件怎么办?

我想添加额外的构建步骤,以便在运行 sam build 时它编译这些文件或适本地复制它们。有没有办法做到这一点?

最佳答案

sam build正在运行 npm install .因此,如果您将自己的脚本插入到诸如 preinstall 这样的步骤中在 package.json 中,sam build也将执行该步骤。

包.json

{
  ...
  "preinstall": "cp -r ../../../common ./"
  ...
}

上面的预安装脚本是一个 hack,它将公共(public)目录嵌入到每个 lambda 处理程序的 zip 中的 sam inited 项目的根文件夹中,以便可以从每个处理程序中引用它。

您还应该在本地 lambda 处理程序目录中创建一个符号链接(symbolic link),例如 ln -s ../common ./common ,以便本地和 lambda 使用相同的代码。

关于amazon-web-services - SAM CLI 的自定义构建步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60175691/

相关文章:

aws-lambda - aws-sam-本地环境变量

amazon-web-services - AWS Elastic Beanstalk-Go示例应用程序

javascript - AWS Cloudsearch Ruby SDK 在提供表达式时出现错误 : Found invalid value where JavaScript Object was expected

amazon-web-services - VPCId 未指定 : No default VPC for this user error when doing terraform apply

aws-lambda - 启动 api 测试时如何访问 AWS SAM LOCAL 中的私有(private) AWS 资源

go - 无法进行查询API调用,ResourceNotFoundException:无法对不存在的表执行操作

.net - 即使设置了策略,对 SQS 队列的访问也会被拒绝

amazon-web-services - AWS : Associate already assigned Elastic IP to a new instance

amazon-web-services - 使用 SQS、SNS 和 APIGW 进行无服务器或 SAM 和本地开发

amazon-web-services - 部署 SAM 教程应用程序时找不到需求文件