Skip to content

Bug - scripts added to the serverless.yml are running twice #422

@sagar-cws

Description

@sagar-cws

This is a Bug Report

Description

There are 2 issues after plugin version 1.4.0

  1. use of ${self:} throws error
    ServerlessError: Trying to populate non string value into a string for variable ${self:}. Please make sure the value of the property is a string
    using ${self} works

  2. serverless plugin (version 2.29.0) does the variables.populateService on start which runs the scripts from serverless.yml
    link: https://github.com/serverless/serverless/blob/f5b2b9be395c9c2d3de4c4f91f991276bc22dc33/lib/Serverless.js#L296

also the serverless-step-functions plugin (version 2.30.0) tries to populate the variables before setting up step functions
link:

.then(serverlessFileParam => this.serverless.variables.populateObject(serverlessFileParam)

because of this scripts are running twice, which is not expected.

this is a link to a PR after which these issues are coming
#116

sharing a sample example to reproduce the issue

service: test-step-function
provider:
  name: aws
  onStart: ${file(./on_start.js):onStart}

frameworkVersion: '2'

stepFunctions:
  stateMachines:
    hellostepfunc1:
      definition:
        StartAt: HelloWorld1
        States:
          HelloWorld1:
            Type: Task
            Next: ToSqsQueue
            Resource: "arn:aws:lambda:#{AWS::Region}:#{AWS::AccountId}:function:hello-world"
            End: true
          ToSqsQueue:
            Type: Task
            Resource: arn:aws:states:::sqs:sendMessage
            Parameters:
              QueueUrl: https://sqs.#{AWS::Region}.amazonaws.com/#{AWS::AccountId}/hello-world-queue
              MessageBody.$: "$"
              MessageGroupId: "1"
            End: true

plugins:
  - serverless-step-functions

custom:
  servicename: ${self:} # first issue, ${self:} doesn't work after version 1.4.0, works for ${self}, error is ServerlessError: Trying to populate non string value into a string for variable ${self:}. Please make sure the value of the property is a string
  add_resources: ${file(./resources.js)}
  export:
    statics:
      - service: ${self:custom.servicename}

Additional Data

sample project to reproduce the issues:
step_functions_example.zip

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions