AWSTemplateFormatVersion: '2010-09-09' Description: An example template for a Step Functions state machine. Parameters: timeout: Type: Number Resources: MyStateMachine: Type: AWS::StepFunctions::StateMachine Properties: StateMachineName: HelloWorld-StateMachine DefinitionString: |- { "StartAt": "HelloWorld", "States": { "HelloWorld": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:111122223333:function:HelloFunction", "Next": "CreatePublishedRequest" }, "CreatePublishedRequest": { "Type": "Task", "Resource": "{$createPublishedRequest}", "ResultPath":"$.publishedRequest", "OutputPath":"$.publishedRequest", "Next": "PutRequest" }, "PutRequest": { "Type": "Task", "Resource": "{$updateKey}", "ResultPath":"$.response", "End": true } } } RoleArn: arn:aws:iam::111122223333:role/service-role/StatesExecutionRole-us-east-1 # doesn't fail on sub that can't be parsed MyStateMachine2: Type: AWS::StepFunctions::StateMachine Properties: StateMachineName: HelloWorld-StateMachine DefinitionString: Fn::Sub: - | { "StartAt": "HelloWorld", "States": { "HelloWorld": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:111122223333:function:HelloFunction", "Next": "CreatePublishedRequest" }, "CreatePublishedRequest": { "Type": "Task", "Resource": "{$createPublishedRequest}", "ResultPath":"$.publishedRequest", "OutputPath":"$.publishedRequest", "Next": "Read Next Message from DynamoDB" }, "Read Next Message from DynamoDB": { "Type": "Task", "Resource": "arn:aws:states:::dynamodb:getItem", "Parameters": { "TableName": "sqsconnector-DDBTable-1CAFOJWP8QD6I", "Key": { "MessageId": {"S.$": "$.List[0]"} } }, "ResultPath": "$.DynamoDB", "Next": "CreatePublishedRequest" }, "Sleep": { "Type": "Wait", "Seconds": ${TestParam}, "Next": "Stop" }, "PutRequest": { "Type": "Task", "Resource": "{$updateKey}", "ResultPath":"$.response", "End": true } } } - TestParam: !Ref timeout RoleArn: arn:aws:iam::111122223333:role/service-role/StatesExecutionRole-us-east-1 MyStateMachineNewTypes: Type: AWS::StepFunctions::StateMachine Properties: StateMachineName: HelloWorld-StateMachine DefinitionString: |- { "StartAt": "ValidatePayment", "States": { "ValidatePayment": { "Type": "Task", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:validatePayment", "Next": "CheckPayment" }, "CheckPayment": { "Type": "Choice", "Choices": [ { "Not": { "Variable": "$.payment", "StringEquals": "Ok" }, "Next": "PaymentFailed" } ], "Default": "ProcessAllItems" }, "PaymentFailed": { "Type": "Task", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:paymentFailed", "End": true }, "ProcessAllItems": { "Type": "Map", "InputPath": "$.detail", "ItemsPath": "$.items", "MaxConcurrency": 3, "Iterator": { "StartAt": "CheckAvailability", "States": { "CheckAvailability": { "Type": "Task", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:checkAvailability", "Retry": [ { "ErrorEquals": [ "TimeOut" ], "IntervalSeconds": 1, "BackoffRate": 2, "MaxAttempts": 3 } ], "Next": "PrepareForDelivery" }, "PrepareForDelivery": { "Type": "Task", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:prepareForDelivery", "Next": "StartDelivery" }, "StartDelivery": { "Type": "Task", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:startDelivery", "End": true } } }, "ResultPath": "$.detail.processedItems", "Next": "SendOrderSummary" }, "SendOrderSummary": { "Type": "Task", "InputPath": "$.detail.processedItems", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:sendOrderSummary", "ResultPath": "$.detail.summary", "End": true } } } RoleArn: arn:aws:iam::111122223333:role/service-role/StatesExecutionRole-us-east-1