lambdafunction-属性变量的值必须是具有字符串(或简单类型)属性的对象



我正在使用无服务器来部署基于lambda的应用程序。它部署正好,然后出于某种原因停止。我将整个软件包与下面的server.yml配对,并在处理程序中有一个功能 - 但是我一直遇到此错误:

Serverless Error ---------------------------------------
An error occurred: TestLambdaFunction - Value of property Variables must be an object with String (or simple type) properties.
Stack Trace --------------------------------------------

这是server.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语法中 -表示数组,因此,下面的代码解释为数组,而不是对象。

这就是为什么错误告诉"属性变量的价值"必须是一个具有字符串(或简单类型(属性的对象。

可以通过在所有密钥前删除-轻松修复。

相关内容

  • 没有找到相关文章

最新更新