@andybalham/state-machine-with-graph
TypeScript icon, indicating that this package has built-in type declarations

1.0.8 • Public • Published

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]

Readme

Keywords

Package Sidebar

Install

npm i @andybalham/state-machine-with-graph

Weekly Downloads

4

Version

1.0.8

License

ISC

Unpacked Size

9.35 kB

Total Files

10

Last publish

Collaborators

  • andybalham