amazon-web-services - 如何从 serverless.yml 中的多个 yml 文件中加入或合并 provider.patterns 数组,以及如何在预定事件上设置启用标志
问题描述
我有 serverless_common.yml 文件,用于所有 lambdas 中的所有共享内容,当我尝试导入package.patterns
个人服务 yml 文件时,我的个人服务中有 serverless.yml 执行时出现以下错误sls print
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
#serverless_common.yml
package:
patterns:
- '!target/**'
- '!tests/**'
- '!test/**'
- '!tools/**'
- '!README.md'
- '!node_modules/.bin/**'
- '!serverless/**'
- '!.*'
#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
serverless_common.yml
/service1
|- package.json
|- index.js
|- serverless.yml
/service2
|- package.json
|- index.js
|- serverless.yml
解决方案
这些错误警告您有两个缩进问题。第一个在您的serverless_common.yml
文件中。数组项应进一步缩进一位:
#serverless_common.yml
package:
patterns:
- '!target/**'
- '!tests/**'
- '!test/**'
- '!tools/**'
- '!README.md'
- '!node_modules/.bin/**'
- '!serverless/**'
- '!.*'
第二个是在你的 cron 表达式中。单行语法仅适用于不使用其他参数的情况。既然你想通过enabled: false
,你需要使用多行语法:
#service1/serverless.yml
functions:
app:
handler: index.handler
name: service1
events:
- schedule:
rate: cron(0 09 * * ? *)
enabled: false
不幸的是,您选择的语法不会合并这两个数组。您必须单独引用数组中的每个项目,或者将您的项目重写serverless.yml
到一个serverless.js
文件中,这样您就可以更加程序化。
package:
individually: true
patterns:
- something-specific-to-service1
- ${file(../serverless_common.yml):package.patterns.foo}
- ${file(../serverless_common.yml):package.patterns.bar}
# ... etc
推荐阅读
- c++ - 如何正确读取镶木地板文件中的固定长度数组小数?
- php - Wordpress ajax 搜索也在自定义帖子类型中
- java - 根据对象的旋转移动对象
- openedge - 进度警告:在过程中超出 -s 堆栈。这意味着什么?
- robotframework - 获取元素状态以检查没有重复,并且下拉列表中只出现一个值
- java - 创建一个连接到我的 android 应用程序的目录
- python - 使用 Python OpenCV 缩小和放大轮廓图像
- flutter - Flutter setState 动态添加项目
- tensorflow - Triplet Loss Network 收敛到恒定结果(Constant Embeddings)
- node.js - Node.JS,如何让代码等待管道完成创建文件?