I am using serverless to deploy my Lambda based application. It was deploying just fine, and then it stopped for some reason. I paired down the entire package to the serverless.yml below and one function in the handler - but I keep getting this error:
Serverless Error ---------------------------------------
An error occurred: TestLambdaFunction - Value of property Variables must be an object with String (or simple type) properties.
Stack Trace --------------------------------------------
Here is the 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
Test Lambda Function in Package
#handler.test
module.exports.test = (event, context, callback) => {
  callback(null, {
    statusCode: 200,
    body: JSON.stringify({
      message: 'sadfasd',
      input: event
    })
  })
}
                Turns out, this issue does not have any relationship to the Lambda function. Here is the issue that caused the error.
This does NOT work:
  environment:
    config:
      region: us-east-1
This DOES work:
  environment:
    region: us-east-1
Simply put, I don't think you can have more than one level in your yaml environment variables.
Even if you try sls print as a sanity check, this issue will not pop up. Only in sls deploy.
You have been warned, and hopefully saved!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With