如何在 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 的条件配置? 的相关文章

  • 自动缩放时如何更改新实例标签名称

    我在我的设备上创建了一个新闹钟AWS基于我也创建的指标的帐户 我用这个警报来自动缩放 当启动我正在使用的新实例时User Data字段来设置这个新实例 我面临的唯一问题是我无法修改标签 特别是标签Name 这个新实例 如果我不更改它 所有新
  • 使用 AWS Lambda 从 AWS S3 读取并提取巨大的 zip 文件

    我正在开发数据管理应用程序 客户可以上传zip file approx 250 MB 与多个text files approx 1500 MB on AWS S3 但由于记忆有限aws lamda 最大 1536MB 大小 我能够提取 50
  • 使用 Ruby 获取 AWS 区域名称

    我正在为 AWS 开发 Rails 应用程序 并希望为区域名称创建下拉菜单 例如 us east 1 等 如果有人已经创建了 gem 来获取它们 我想使用它 有人知道这样的 gem 或有用的 API 吗 适用于 Ruby 的 AWS 开发工
  • 如何使用 aws-cli 访问 Google Cloud Storage 存储桶

    我可以访问 aws 和 Google Cloud Platform 是否可以执行以下操作 使用 aws cli 列出 Google Cloud Storage 存储桶 使用 aws cli 将 CSV 文件放入 Google Cloud S
  • 由于配置错误而执行失败:Lambda 函数的权限无效

    我正在通过 Visual Studio 使用 AWS Lambda 和 API Gateway 构建无服务器应用程序 我正在使用 C 工作 并使用无服务器应用程序模型 SAM 来部署我的 API 我在 Visual Studio 中构建代码
  • 如何找到 api gateway stage 的 arn?

    我正在尝试使用 awscli 将标签添加到我的 api 网关阶段https docs aws amazon com cli latest reference apigateway tag resource html https docs a
  • AWS EMR 引导操作为 sudo

    我需要更新 etc hosts适用于我的 EMR 集群 EMR AMI 4 3 中的所有实例 整个脚本无非就是 bin bash echo e ip1 uri1 gt gt etc hosts echo e ip2 uri2 gt gt e
  • 使用 python 写入 aws lambda 中的 /tmp 目录

    Goal 我正在尝试将 zip 文件写入 python aws lambda 中的 tmp 文件夹 因此我可以在压缩之前提取操作 并将其放入 s3 存储桶中 Problem 操作系统 Errno30 只读文件系统 这段代码在我的计算机上进行
  • 为什么从浏览器上传到 S3 时出现 403 错误?

    因此 我尝试查看此处之前的答案 但似乎没有任何效果 我正在使用 Dropzone 它似乎发出 OPTIONS 请求来获取所有允许的 CORS 相关信息 但它似乎没有正确返回 因此 通过查看 Chrome 开发工具 我有以下请求标头 Host
  • AWS SES模板html部分是多行

    我正在使用 AWS SES 按照文档发送电子邮件https docs aws amazon com ses latest DeveloperGuide send personalized email api html https docs
  • 在describe-vpcs中按标签过滤的正确语法是什么?

    我试图理解 aws ec2 cli 调用 我希望描述所有 VPC 然后在自定义标记上描述文件管理器 vpcname myvpc 但是在尝试多种组合后 我不断收到有关 filters 的格式和使用的冲突错误 使用作为参考 http docs
  • AWS Lambda。延迟调用

    我需要使用亚马逊工具构建 任务调度程序 主要问题是我需要执行一次任务 延迟很大 可能是几个小时或几周 我尝试研究如何使用 CloudWatch 和 Lambda 函数构建它 据我了解 我需要使用单独的规则来执行一次超时 但 AWS 只允许我
  • 正确的 aws cli 语法以在非默认 VPC 中查找 VPC 安全组

    这是来自的后续问题在describe vpcs中按标签过滤的正确语法是什么 https stackoverflow com questions 27057932 what is the correct syntax for filterin
  • 查询CloudSearch中字段是否存在

    假设我在 CloudSearch 中索引的文档列表中有一个名为 xyz 的可选字段 如何查询 CloudSearch 以使其仅返回包含 xyz 的文档 如果我预先知道它是一个正整数 我可能可以这样做来获取所需的列表 q xyz 0 q pa
  • CNAME 速度慢吗?

    我将 CNAME 与 S3 CloudFront 一起使用来提供一些静态文件 例如 js css 图像等 我这样做是为了使存储桶的 URL 更漂亮 因为我认为最好将所有内容都定位到我的网站 以防万一将来我想移动这些文件 更改应该是透明的 今
  • PHP Amazon SDK,S3 存储桶访问被拒绝

    我第一次尝试使用 PHP AWS SDK aws aws sdk php 3 19 来使用 S3 我创建了一个存储桶 myfirstbucket jeremyc 我制定了一项政策 Version 2012 10 17 Statement E
  • 如何导入 boto3 ssm ParameterNotFound 异常?

    我想import the exception当一个boto3 ssm找不到参数get parameter 我正在尝试添加一些额外的内容ssm的功能moto图书馆 但我现在很困惑 gt gt gt import boto3 gt gt gt
  • 删除aws beanstalk上的uuid python包

    这是针对所提出问题的后续帖子 问题here https stackoverflow com questions 44421761 flask beanstalk deployment errors 以防万一对其他人有用 自从第一篇文章以来
  • 使用 AWS Elastic Beanstalk 在 AWS 上部署 Spring Boot 应用程序

    我想使用 AWS Elastic Beanstalk 在 AWS 上部署 Spring Boot 应用程序 但我没有看到上传 jar 文件的选项 只有 zip 和 war 在本教程中 他们将部署一个 jar 文件 https aws ama
  • 使用 Boto3 超时的 AWS Lambda 函数

    我已经解决了我自己的问题 但无论如何我都会发布它 希望能节省其他人几个小时 我在 AWS 上有一个无服务器项目 使用 Python 将记录插入到 kinesis 队列中 但是 当我使用 boto3 client kinesis 或 put

随机推荐

  • 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