【问题标题】:Claudia.js with multiple AWS lambda functions具有多个 AWS lambda 函数的 Claudia.js
【发布时间】:2017-04-04 14:50:40
【问题描述】:

我正在使用 claudia.js CLI 将函数和 Web API 部署到 AWS lambda 和 API 网关。 我的项目文件结构如下:

functions
--function1
---- node_modules
---- package.json
---- index.js
---- claudia.json
--function2
---- node_modules
---- package.json
---- index.js
---- claudia.json

问题是,为了更新新版本,我必须在每个函数文件夹中运行“克劳迪娅更新”......所以我必须为每个函数(在每个文件夹中)运行一次。有没有办法告诉 claudia.js 一次更新我的所有功能?

【问题讨论】:

  • Claudia 无法立即更新多个功能。问题是您是否真的需要同时更新所有功能?在我从事的具有多个 Lambda 函数的大多数项目中,函数是独立的,我只部署了我更改的函数。如果您确实需要同时更新多个功能,您可以创建一个脚本来为您执行此操作,或者如果您有很多功能,使用 CloudFormation 可能对您有意义(Claudia 不支持它)。

标签: amazon-web-services aws-lambda serverless-architecture claudiajs


【解决方案1】:

与其让 ClaudiaJS 来完成这项工作,不如使用一个工具来运行 ClaudiaJS。 大多数 monorepo 工具就足够了,例如 Lerna,但如果你不关心 Lerna 提供的东西,还有很多不那么自以为是的工具 - Lolaus 是相当低级的。

使用 Lerna,您需要使用规定的 repo 结构,获取链接的 node_modules,lerna run deploy 将运行每个包含它的包的 npm deploy 脚本。

使用 Lolaus,您可以搜索所有函数,然后在每个目录中运行任意命令:lolaus "*/*/caudia.json" claudia update

【讨论】:

    【解决方案2】:

    我们有一个包含多个 replate lambdas 的 lambda repo,每个 replate lambdas 都在自己的子文件夹中。

    > lambdas 
    > |_lambda1
    > |___main.js
    > |___main.spec.js
    > |___claudia.json
    > |___package.json
    > |_lambda2
    > |___main.js
    > |___main.spec.js
    > |___claudia.json
    > |___package.json
    > |_helpers
    > |_test.sh
    > |_deploy.sh
    

    我们使用 npm 和 bash 脚本来迭代每个 lambda 并在它们上运行一组一致的 npm/eslint 命令。如果这通过了构建过程,我们在每个 lambda 上以相同的方式运行 claudia 命令。有一些剪切和粘贴

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-29
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多