AWSTemplateFormatVersion: "2010-09-09" Description: "An example template with an IAM role for a Lambda state machine." Resources: StatesExecutionRole: Type: "AWS::IAM::Role" Properties: AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Principal: Service: - !Sub states.${AWS::Region}.amazonaws.com Action: "sts:AssumeRole" Path: "/" Policies: - PolicyName: StatesExecutionPolicy PolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Action: - "lambda:InvokeFunction" Resource: "*" CallCenterStateMachine: Type: "AWS::StepFunctions::StateMachine" Properties: StateMachineName: "CallCenter" DefinitionString: !Sub - |- { "Comment": "AWS Step Functions state machine that automates a call center support session.", "StartAt": "Open Case", "States": { "Open Case": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-2:AWS_ACCOUNT_ID:function:OpenCase", "Next": "Assign Case" }, "Assign Case": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-2:AWS_ACCOUNT_ID:function:AssignCase", "Next": "Work on Case" }, "Work on Case": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-2:AWS_ACCOUNT_ID:function:WorkOnCase", "Next": "Is Case Resolved" }, "Is Case Resolved": { "Type" : "Choice", "Choices": [ { "Variable": "$.Status", "NumericEquals": 1, "Next": "Close Case" }, { "Variable": "$.Status", "NumericEquals": 0, "Next": "Escalate Case" } ] }, "Close Case": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-2:AWS_ACCOUNT_ID:function:CloseCase", "End": true }, "Escalate Case": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-2:AWS_ACCOUNT_ID:function:EscalateCase", "Next": "Fail" }, "Fail": { "Type": "Fail", "Cause": "Engage Tier 2 Support." } } } - {} RoleArn: !GetAtt [ StatesExecutionRole, Arn ]