LambdaFunction - 属性 变量的值必须是具有字符串(或简单类型)属性的对象
LambdaFunction - Value of property Variables must be an object with String (or simple type) properties
我正在使用无服务器部署基于 Lambda 的应用程序。它部署得很好,然后由于某种原因停止了。我将整个包配对到下面的 serverless.yml 和处理程序中的一个函数 - 但我不断收到此错误:
Serverless Error ---------------------------------------
An error occurred: TestLambdaFunction - Value of property Variables must be an object with String (or simple type) properties.
Stack Trace --------------------------------------------
这是serverless.yml
# serverless.yml
service: some-api
provider:
name: aws
runtime: nodejs6.10
stage: prod
region: us-east-1
iamRoleStatements:
$ref: ./user-policy.json
environment:
config:
region: us-east-1
plugins:
- serverless-local-dev-server
- serverless-dynamodb-local
- serverless-step-functions
package:
exclude:
- .gitignore
- package.json
- README.md
- .git
- ./**.test.js
functions:
test:
handler: handler.test
events:
- http: GET test
resources:
Outputs:
NewOutput:
Description: Description for the output
Value: Some output value
测试包中的 Lambda 函数
#handler.test
module.exports.test = (event, context, callback) => {
callback(null, {
statusCode: 200,
body: JSON.stringify({
message: 'sadfasd',
input: event
})
})
}
事实证明,这个问题与Lambda函数没有任何关系。这是导致错误的问题。
这不工作:
environment:
config:
region: us-east-1
这确实有效:
environment:
region: us-east-1
简单地说,我认为你的yaml环境变量中不能有超过一层。
即使您尝试 sls print
作为完整性检查,也不会弹出此问题。仅在 sls deploy
.
您已收到警告,希望您能得救!
可能导致此类错误的其他原因是使用了无效的 yaml 语法。
这个很容易混淆。
环境变量的有效语法
environment:
key: value
环境变量语法无效
environment:
- key: value
注意到下面代码中的小破折号了吗?
在 yaml 语法中,-
表示数组,因此,下面的代码被解释为数组,而不是对象。
这就是为什么错误提示“属性 变量的值必须是具有字符串(或简单类型)属性的对象。”
这可以通过删除所有键前面的 -
轻松解决。
我正在使用无服务器部署基于 Lambda 的应用程序。它部署得很好,然后由于某种原因停止了。我将整个包配对到下面的 serverless.yml 和处理程序中的一个函数 - 但我不断收到此错误:
Serverless Error ---------------------------------------
An error occurred: TestLambdaFunction - Value of property Variables must be an object with String (or simple type) properties.
Stack Trace --------------------------------------------
这是serverless.yml
# serverless.yml
service: some-api
provider:
name: aws
runtime: nodejs6.10
stage: prod
region: us-east-1
iamRoleStatements:
$ref: ./user-policy.json
environment:
config:
region: us-east-1
plugins:
- serverless-local-dev-server
- serverless-dynamodb-local
- serverless-step-functions
package:
exclude:
- .gitignore
- package.json
- README.md
- .git
- ./**.test.js
functions:
test:
handler: handler.test
events:
- http: GET test
resources:
Outputs:
NewOutput:
Description: Description for the output
Value: Some output value
测试包中的 Lambda 函数
#handler.test
module.exports.test = (event, context, callback) => {
callback(null, {
statusCode: 200,
body: JSON.stringify({
message: 'sadfasd',
input: event
})
})
}
事实证明,这个问题与Lambda函数没有任何关系。这是导致错误的问题。
这不工作:
environment:
config:
region: us-east-1
这确实有效:
environment:
region: us-east-1
简单地说,我认为你的yaml环境变量中不能有超过一层。
即使您尝试 sls print
作为完整性检查,也不会弹出此问题。仅在 sls deploy
.
您已收到警告,希望您能得救!
可能导致此类错误的其他原因是使用了无效的 yaml 语法。
这个很容易混淆。
环境变量的有效语法
environment:
key: value
环境变量语法无效
environment:
- key: value
注意到下面代码中的小破折号了吗?
在 yaml 语法中,-
表示数组,因此,下面的代码被解释为数组,而不是对象。
这就是为什么错误提示“属性 变量的值必须是具有字符串(或简单类型)属性的对象。”
这可以通过删除所有键前面的 -
轻松解决。