1.0.8 • Published 2 years ago

@andybalham/state-machine-with-graph v1.0.8

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

State Machine With Graph

An extension of the CDK StateMachine class that can output the underlying graph as JSON.

Two versions are supported:

Usage

StateMachineWithGraph can be used in place of the CDK StateMachine, the only difference in usage is that a function must be supplied to return the state machine definition. This function is passed a scope parameter that must be used to create the states within the definition.

For example:

const stack = new cdk.Stack();

const stateMachine = new StateMachineWithGraph(stack, 'Test', {
  getDefinition: (scope): sfn.IChainable =>
    sfn.Chain.start(new sfn.Pass(scope, 'Pass')),
});

console.log(stateMachine.graphJson);

Outputs:

{
  "StartAt": "Pass",
  "States": {
    "Pass": {
      "Type": "Pass",
      "End": true
    }
  }
}

Replacing CDK tokens

If you want the output to be consistent, e.g. for use in snapshot testing, then you can use the replaceCdkTokens property as shown below:

const stateMachine = new StateMachineWithGraph(stack, 'TestWithResources', {
  replaceCdkTokens: true,
  getDefinition: (definitionScope): sfn.IChainable => {

With this set to true, the placeholder tokens generated by CDK are replaced with the constant value CDK_TOKEN. For example, if the output was being rendered as follows:

  "Type": "Task",
  "Resource": "arn:${Token[AWS.Partition.7]}:states:::lambda:invoke",
  "Parameters": {
    "FunctionName": "${Token[TOKEN.245]}",

Then setting replaceCdkTokens to true would result in the following:

  "Type": "Task",
  "Resource": "arn:CDK_TOKEN:states:::lambda:invoke",
  "Parameters": {
    "FunctionName": "CDK_TOKEN",

Troubleshooting

If you see an error message like the following, check that the scope parameter passed to getDefinition is being used to create the states in the definition:

Error: There is already a Construct with name 'Pass' in Stack [Default]
1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago