开发者社区 > 云原生 > Serverless > 正文

我们有遇到一个技术问题,就是在使用SeverlessDevs的时候,不知道如何去参数化不同环境(de

我们有遇到一个技术问题,就是在使用SeverlessDevs的时候,不知道如何去参数化不同环境(dev/test/pro),用一套模版适配多种环境,请问怎么实现呢?

展开
收起
码字王 2023-03-13 09:34:15 540 0
5 条回答
写回答
取消 提交回答
  • 您可以考虑使用 Serverless Framework 的变量和环境配置功能来实现参数化不同环境的需求。具体来说,您可以在 serverless.yml 文件中定义不同环境的变量和配置,然后在部署时指定相应的环境变量和配置即可。例如:

    # serverless.yml
    
    service: my-service
    
    provider:
      name: aws
      runtime: nodejs12.x
      stage: ${opt:stage, 'dev'} # 使用 --stage 参数指定环境,默认为 dev
    
    custom:
      myVar: ${self:provider.stage}-value # 定义一个变量,根据环境动态生成值
    
    functions:
      hello:
        handler: handler.hello
        environment:
          MY_ENV_VAR: ${self:custom.myVar} # 使用变量设置环境变量
    

    在部署时,您可以使用以下命令指定不同的环境:

    sls deploy --stage dev # 部署到 dev 环境
    sls deploy --stage test # 部署到 test 环境
    sls deploy --stage pro # 部署到 pro 环境
    

    这样,您就可以使用一套模板适配多种环境了。

    2023-03-13 11:40:30
    赞同 展开评论 打赏
  • 十年摸盘键,代码未曾试。 今日码示君,谁有上云事。

    2020年11月份,阿里云智能开源了Serverless 社区的开发者工具Serverless Devs(后简称S) 弥补了国内在Serverless 开发者工具的一个空白。通过高度灵活的配置设定,实现了无厂商锁定的支持;直观易懂的可视化配套也带来了极致的开发者使用体验。

    Serverless Devs 是一款面向 Serverless 应用全生命周期的管理工具,其模型规范中存在应用和服务的概念,但目前缺少对环境的内在支持,代码+基础设施共同维护在一个 s.yaml 下。

    2023-03-13 11:11:41
    赞同 展开评论 打赏
  • 月移花影,暗香浮动

    在使用ServerlessDevs进行部署时,我们可以使用动态配置、环境变量等技术实现参数化不同环境,使用一套模板适配多种环境的部署方式。具体实现如下:

    1. 在配置文件中使用变量替换相关配置

    在配置文件中,我们可以使用类似{{env}}这样的变量占位符,用具体的环境值替换。例如:

    inputs:
      bucketName: {{env}}-example-bucket
      functionName: example-function-{{env}}
      region: cn-beijing
      runtime: nodejs10
    

    这样我们就可以通过指定不同的环境值,实现参数化部署到不同的环境。

    1. 设置环境变量

    在许多场景下,通过设置环境变量来传递参数是更加方便的一种方式。ServerlessDevs也支持在命令行中设置环境变量。例如:

    $ sls deploy --env=dev --var env=dev
    

    这样就可以在部署过程中,将env变量的值替换为dev,达到适配dev环境的目的。

    通过上述方式,我们可以实现一套模板适配多种环境的部署。实际使用时,我们可以根据实际情况,选择适合自己需求的方式进行参数化配置。

    2023-03-13 10:46:44
    赞同 展开评论 打赏
  • 可以配置不同环境变量,参考这个:https://docs.serverless-devs.com/fc/command/env

    此答案来自钉钉群“Serverless 开发者技术学习群"

    2023-03-13 10:35:18
    赞同 展开评论 打赏
  • 十分耕耘,一定会有一分收获!

    楼主你好,你可以采用分层的模板化方案,即: 平台管理员将网络、日志服务、存储、数据库等基础设施资源根据测试/生产隔离的要求,封装成环境模板;

    将阿里云函数计算函数、Serverless 应用引擎应用封装成服务模板; 将 CI/CD 的基础流程封装成流水线模板;

    平台管理员持有子账号选择环境模板创建不同的测试、预发、生产环境,然后授予研发子账号访问权限,或者授予研发写权限来自助创建环境;

    开发人员选择流水线模板,通过主动触发或者代码提交自动触发 CI/CD 的执行。

    2023-03-13 10:01:28
    赞同 1 展开评论 打赏
问答地址:

快速交付实现商业价值。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载