首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在serverless.yml中加入或合并来自多个yml文件的provider.patterns数组,以及如何在预定事件上设置启用标志

如何在serverless.yml中加入或合并来自多个yml文件的provider.patterns数组,以及如何在预定事件上设置启用标志
EN

Stack Overflow用户
提问于 2021-06-17 22:51:32
回答 1查看 103关注 0票数 1

我为所有lambda中的所有共享内容创建了serverless_common.yml文件,并在我的单个服务中包含了serverless.yml。当我尝试将package.patterns导入到我的单个服务yml文件中时,我在执行sls print操作时遇到以下错误

代码语言:javascript
复制
Serverless Error ----------------------------------------
 
  Configuration error: 
       at 'functions.app.events[0]': unrecognized property 'enabled'
       at 'package.patterns[0]': should be string

Your Environment Information ---------------------------
     Operating System:          darwin
     Node Version:              14.16.1
     Framework Version:         2.46.0 (local)
     Plugin Version:            5.4.0
     SDK Version:               4.2.3
     Components Version:        3.12.0
代码语言:javascript
复制
#serverless_common.yml
package:
  patterns:
  - '!target/**'
  - '!tests/**'
  - '!test/**'
  - '!tools/**'
  - '!README.md'
  - '!node_modules/.bin/**'
  - '!serverless/**'
  - '!.*'
代码语言:javascript
复制
#service1/serverless.yml
package:
  individually: true
  patterns: 
    - something-specific-to-service1
    - ${file(../serverless_common.yml):package.patterns}
functions:
  app:
    handler: index.handler
    name: service1
    events:
      - schedule: cron(0 09 * * ? *)
        enabled: false
代码语言:javascript
复制
serverless_common.yml        
/service1
  |- package.json     
  |- index.js
  |- serverless.yml   
/service2
  |- package.json    
  |- index.js
  |- serverless.yml   
EN

回答 1

Stack Overflow用户

发布于 2021-06-18 03:19:30

这些错误警告您有两个缩进问题。第一个是在您的serverless_common.yml文件中。数组项应该再缩进一个位置:

代码语言:javascript
复制
#serverless_common.yml
package:
  patterns:
    - '!target/**'
    - '!tests/**'
    - '!test/**'
    - '!tools/**'
    - '!README.md'
    - '!node_modules/.bin/**'
    - '!serverless/**'
    - '!.*'

第二个是在cron表达式中。只有在不使用其他参数的情况下,才会使用一行语法。由于您希望传递enabled: false,因此需要使用多行语法:

代码语言:javascript
复制
#service1/serverless.yml
functions:
  app:
    handler: index.handler
    name: service1
    events:
      - schedule:
          rate: cron(0 09 * * ? *)
          enabled: false

不幸的是,您选择的语法不会合并这两个数组。您必须单独引用数组中的每一项,或者将serverless.yml重写为serverless.js文件,这将使您更具编程性。

代码语言:javascript
复制
package:
  individually: true
  patterns: 
    - something-specific-to-service1
    - ${file(../serverless_common.yml):package.patterns.foo}
    - ${file(../serverless_common.yml):package.patterns.bar}
    # ... etc
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68021722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档