【问题标题】:LambdaFunction - Value of property Variables must be an object with String (or simple type) propertiesLambdaFunction - 属性变量的值必须是具有字符串(或简单类型)属性的对象
【发布时间】:2021-02-05 23:37:21
【问题描述】:

我正在使用无服务器来部署我的基于 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
    })
  })
}

【问题讨论】:

    标签: node.js deployment serverless


    【解决方案1】:

    事实证明,这个问题与 Lambda 函数没有任何关系。这是导致错误的问题。

    工作:

      environment:
        config:
          region: us-east-1
    

    确实有效:

      environment:
        region: us-east-1
    

    简单地说,我认为您的 yaml 环境变量中不能有多个级别。

    即使您尝试sls print 作为健全性检查,也不会弹出此问题。仅限sls deploy

    你已经被警告了,希望你得救了!

    【讨论】:

    • 同样的问题。谢谢。
    • 有人将 Refs 放入我项目的环境变量中。奇怪的是,故障是间歇性的!
    【解决方案2】:

    可能导致此类错误的其他原因是使用了无效的 yaml 语法。

    很容易对此感到困惑。

    环境变量的有效语法

    environment:
      key: value
    

    环境变量的语法无效

    environment:
      - key: value
    

    注意到下面代码中的小破折号了吗?

    在 yaml 语法中,- 表示数组,因此,下面的代码被解释为数组,而不是对象。

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

    这可以通过删除所有键前面的- 轻松解决。

    【讨论】:

      猜你喜欢
      • 2021-03-09
      • 2020-03-27
      • 2019-10-24
      • 2016-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-24
      • 1970-01-01
      相关资源
      最近更新 更多