如何在 serverless.yml 中使用 lambda 的条件配置?

2024-01-20

我需要通过配置 lambdaserverless.yml为不同的环境使用不同的配置并发。下面是我的 lambda 配置:

 myLambda:
   handler: src/lambdas
   name: myLambda
   provisionedConcurrency: ${self:custom.pc}

...

custom:
  pc: ${env:PC}

PC 值是从环境变量加载的。它适用于大于 0 的值,但我无法设置值0在一个环境中。我想做的是禁用配置并发dev环境。

我已阅读此文档https://forum.serverless.com/t/conditional-serverless-yml-based-on-stage/1763/3 https://forum.serverless.com/t/conditional-serverless-yml-based-on-stage/1763/3但这似乎对我的情况没有帮助。

我该如何设置provisionedConcurrency有条件的基于环境?


方法 1:通过默认值实现基于阶段的变量

这是使用级联值变量的相当简单的技巧。第一个值是您想要的值,第二个值是默认值或后备值。也称为级联变量。

// serverless.yml
provider:
  stage: "dev"

custom:
  provisionedConcurrency:
    live: 100
    staging: 50
    other: 10

 myLambda:
   handler: src/lambdas
   name: myLambda
   provisionedConcurrency: ${self:custom.provisionedConcurrency.${self:provider.stage}, self:custom.provisionedConcurrency.other}

上面的阶段设置为 dev 将默认为“其他”值 10,但是如果您通过以下方式设置阶段serverless deploy --stage live那么它将使用实时值 100。

请参阅此处了解更多详细信息:https://www.serverless.com/framework/docs/providers/aws/guide/variables#syntax https://www.serverless.com/framework/docs/providers/aws/guide/variables#syntax

方法 2:通过 Javascript 异步值

您可以使用 js include 并将条件逻辑放在那里。这称为“异步值支持”。基本上,这允许您将逻辑放入您包含的 JavaScript 文件中,并且它可以根据各种情况返回不同的值(例如,您所在的 AWS 账户,或者是否设置了某些变量,等等)。基本上,它允许你这样做......

provisionedConcurrency: ${file(./detect_env.js):get_provisioned_concurrency}

如果您在此文件夹中创建一个名为 detector_env.js 的 javascript 文件,并且它的内容类似于...

module.exports.get_provisioned_concurrency = () => {
  if ("put logic to detect which env you are deploying to, eg for live") {
    return Promise.resolve('100');
  } else {
    // Otherwise fallback to 10
    return Promise.resolve('10');
  }
}

欲了解更多信息,请参阅:https://www.serverless.com/framework/docs/providers/aws/guide/variables#with-a-new-variables-resolver https://www.serverless.com/framework/docs/providers/aws/guide/variables#with-a-new-variables-resolver

我觉得我必须在这里回复,尽管这是几个月前提出的,因为没有一个答案与正确答案相差甚远,我真的为作者或来到这里的任何人感到抱歉。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 serverless.yml 中使用 lambda 的条件配置? 的相关文章

随机推荐

  • Shell执行多个文件

    我想知道是否可以通过某种方式使用 ShellExecute 使用默认动词处理程序一次打开多个文件 例如 如果一个文件夹中有多个 mp3 文件 我可以选择所有文件 然后右键单击并选择 播放 这将打开一个 WMP 实例 这是我的默认 mp3 播
  • 扭曲的 HTTPS 客户端

    我目前在使用扭曲的 python 库访问通过 https 托管的内容时遇到一些问题 我是这个库的新手 并且假设我缺少一些导致问题的概念 但可能不是基于示例 这是我收集示例的页面的链接 https twistedmatrix com docu
  • 如何创建比 Core Plot 生成的图表更好看的图表? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找适合 iPhone 绘制图表 饼图 条形图 的好库 我测试过很多人推荐的Coreplot 但我认为生成的图表看起来很差 I sa
  • 我如何确定哪些是 Facebook 应用程序用户最好的朋友?

    我目前正在尝试使用 Facebook PHP SDK 创建 Facebook 应用程序 我想检索用户的哪些朋友是他最好的朋友 或者是他最常交谈的朋友 您知道获取它们的算法或技巧吗 简单地说 寻找友谊的标记 给每项活动一个权重 合计 朋友分数
  • 将 GET 参数添加到 URL 的语法是什么?

    我在用Python https www python org and 谷歌应用引擎 https cloud google com appengine 我需要通过向网址添加一些元素来访问某些网页 将 GET 参数添加到 URL 的语法是什么
  • 双锚定正则表达式

    我想接受用户的任意正则表达式并将其锚定在两侧以强制完全匹配
  • Maven2 Eclipse 集成

    似乎有两个竞争对手的 Eclipse 插件可以与 Maven 集成 m2Eclipse http m2eclipse codehaus org and q4e http code google com p q4e 最近有人评估或使用过这些插
  • 在 iOS4.1 上保存带有照片的地理标签信息

    我在尝试在 iOS 4 1 上将带有地理标记信息的照片保存到相机胶卷时遇到重大问题 我正在使用以下资产库 API void writeImageDataToSavedPhotosAlbum NSData imageData metadata
  • 切换到内核转储中的用户堆栈

    有没有办法在进行事后调试时切换到内核转储中特定进程的用户模式 我记得在使用 process 命令进行实时调试时执行此操作 process也适用于内核转储 首先 您可以使用以下方式找到您的流程 process 0 0 myprocess ex
  • 多语言 PSGI-web 部署

    我计划使用 PSGI Plack 开发一个 Web 应用程序 可能与 舞者 但尚未决定 应用程序应该是 utf 8 多语言 使用 Locale Maketext 并且 ofc 将包含一些给定语言的静态页面 我的想法是将其部署在不同的语言域中
  • 将 Pyspark 中的 Dataframe 中的不同值转换为列表

    我试图获取 Pyspark 中数据帧中列的不同值 将它们保存在列表中 目前列表包含 Row no children 0 但我只需要该值 因为我将把它用于代码的另一部分 所以 理想情况下只有 all values 0 1 2 3 4 all
  • 如何包装 JUnit 5 测试

    在 JUnit 4 中 您可以使用规则来包装测试 以便您可以在测试运行之前和之后执行代码 在大多数情况下 这可以通过 Before 和 After 方法或ExternalResource 规则来完成 然而 某些控制流构造 例如 try wi
  • 它是一种具有某种特征的好风格,并且有一个扩展该特征的同名对象吗?

    当我浏览的时候保罗 菲利普斯 GitHub 存储库 https github com paulp我注意到他经常使用某种结构 trait A object A extends A 例如这里 scala 改进 字符串 https github
  • 如何在react-VR中将某些元素固定在屏幕上

    我想在 React VR 应用程序中保持分数或健康栏始终可见 我可以使用 VrHeadModel 旋转 yawPitchRoll 和位置 但必须计算它才能保持其固定 似乎我错过了一些东西 我该怎么做呢 更新的要点 由于订阅了 HM 延迟更小
  • 如何在perl中正确使用全局变量

    我是 perl 的新手 我试图通过编写一些程序来理解它 Perl 的范围界定让我很困难 我写了以下内容 use 5 16 3 use strict use Getopt Long Getopt Long Configure qw bundl
  • 如何将 Touch ID 与登录凭据关联?

    我能够成功验证用户 Touch ID 然而 一旦 Touch ID 身份验证成功 检索用户登录名和密码以执行登录的最安全方法是什么 对于 iTunes connect 应用程序 一旦 Touch ID 登录成功 它似乎会在本地检索密码并将其
  • iTextSharp 在现有 PDF 中嵌入子集字体

    我们使用旧的报告软件来创建 PDF 但它无法将使用的字体嵌入到文件中 现在我尝试使用 iTextSharp 根据这些示例将所有 非嵌入 字体嵌入现有 PDF 中嵌入字体事后 https sourceforge net p itextshar
  • Google Cloud Storage 文件写入流失败

    您好 我正在尝试使用 node js 在谷歌云存储中写入文件 当我尝试写入文件时 出现以下错误 errors domain global reason badRequest message Invalid Upload Request co
  • 在 AWS Glue 作业中写入 S3 时是否可以指定 SSE:KMS 密钥 ID?

    如果您按照 AWS Glue 添加作业向导创建一个脚本来将 parquet 文件写入 S3 您最终会生成类似这样的代码 datasink4 glueContext write dynamic frame from options frame
  • 如何在 serverless.yml 中使用 lambda 的条件配置?

    我需要通过配置 lambdaserverless yml为不同的环境使用不同的配置并发 下面是我的 lambda 配置 myLambda handler src lambdas name myLambda provisionedConcur