serverless-step-functions-offline

    2.1.4 • Public • Published

    serverless npm version Known Vulnerabilities Maintainability NPM

    serverless-step-functions-offline

    ⚠️ Version 2.0 with breaking changes see usage ⚠️

    Documentation

    Install

    Using NPM:

    npm install serverless-step-functions-offline --save-dev

    or Yarn:

    yarn add serverless-step-functions-offline --dev

    Setup

    Add the plugin to your serverless.yml:

    # serverless.yml 
     
    plugins:
      - serverless-step-functions-offline

    To verify that the plugin works, run this in your command line:

    sls step-functions-offline

    It should rise an error like that:

    Serverless plugin "serverless-step-functions-offline" initialization errored: Please add ENV_VARIABLES to section "custom"

    Requirements

    This plugin works only with serverless-step-functions.

    You must have this plugin installed and correctly specified statemachine definition using Amazon States Language.

    Example of statemachine definition you can see here.

    Usage

    After all steps are done, need to add to section custom in serverless.yml the key stepFunctionsOffline with properties stateName: name of lambda function.

    For example:

    service: ServerlessStepPlugin
    frameworkVersion: ">=1.13.0 <2.0.0"
    plugins:
       - serverless-step-functions-offline
     
    # ... 
     
    custom:
      stepFunctionsOffline:
        FirstLambda: firstLambda #(v2.0) 
        # ... 
        # ... 
        SecondLambda: secondLambda #(v2.0) 
     
    functions:
        firstLambda:
            handler: firstLambda/index.handler
            name: TheFirstLambda
        secondLambda:
            handler: secondLambda/index.handler
            name: TheSecondLambda
    stepFunctions:
      stateMachines:
        foo:
          definition:
            Comment: "An example of the Amazon States Language using wait states"
            StartAt: FirstLambda
            States:
                FirstLambda:
                  Type: Task
                  Resource: arn:aws:lambda:eu-west-1:123456789:function:TheFirstLambda
                  Next: SecondLambda
                SecondLambda:
                  Type: Task
                  Resource: arn:aws:lambda:eu-west-1:123456789:function:TheSecondLambda
                  End: true

    Where:

    • StepOne is the name of step in state machine
    • firstLambda is the name of function in section functions

    Run Plugin

    sls step-functions-offline --stateMachine={{name}} --event={{path to event file}}
    • name: name of state machine in section state functions. In example above it's foo.
    • event: input values for execution in JSON format (optional)

    If you want to know where you are (in offline mode or not) you can use env variable STEP_IS_OFFLINE.

    By default process.env.STEP_IS_OFFLINE = true.

    What does plugin support?

    States Support
    Task At this moment plugin does not support fields Retry, Catch, TimeoutSeconds, HeartbeatSeconds
    Choice All comparison operators except: And, Not, Or
    Wait All following fields: Seconds, SecondsPath, Timestamp, TimestampPath
    Parallel Only Branches
    Pass Result, ResultPath
    Fail Cause, Error
    Succeed

    Usage with serverless-webpack

    The plugin integrates very well with serverless-webpack.

    Add the plugins serverless-webpack to your serverless.yml file and make sure that serverless-webpack precedes serverless-step-functions-offline as the order is important:

      plugins:
        ...
        - serverless-webpack
        ...
        - serverless-step-functions-offline
        ...

    TODOs

    • Support context object
    • Improve performance
    • Fixing bugs
    • Support Pass, Fail, Succeed
    • Integration with serverless-webpack
    • Add unit tests - to make plugin stable (next step)
    • Support fields Retry, Catch
    • Support other languages except node.js

    Install

    npm i serverless-step-functions-offline

    DownloadsWeekly Downloads

    1,181

    Version

    2.1.4

    License

    MIT

    Unpacked Size

    160 kB

    Total Files

    18

    Last publish

    Collaborators

    • viktor.kis