EventBridge for Amazon SWF execution status changes
You use Amazon EventBridge to respond to state changes or events in an Amazon resource. When Amazon SWF
emits an event, it always goes to the default EventBridge event bus for your account. You can create a
rule for events, associate it with the default event bus, and specify a target action to take
when EventBridge receives an event that matches the rule. In this way, you can monitor your workflows
without having to constantly poll using the GetWorkflowExecutionHistory
API. Based on changes in workflow
executions, you can use an EventBridge target to call Amazon Lambda functions, publish messages to
Amazon Simple Notification Service (Amazon SNS) topics, and more.
You can see the full contents of an execution status change event using DescribeWorkflowExecution
.
For more information, see the Amazon EventBridge User Guide.
EventBridge events
The history event types contain the execution state changes. The detail
section of each event contains at least the following parameters:
-
eventId
: the event ID shown by GetWorkflowExecutionHistory. -
workflowExecutionDetail
: the state of the workflow when the event was emitted. -
eventType
: the history event type, one of the following:-
ActivityTaskCanceled
-
ActivityTaskFailed
-
ActivityTaskTimedOut
-
WorkflowExecutionCanceled
-
WorkflowExecutionCompleted
-
WorkflowExecutionFailed
-
WorkflowExecutionStarted
-
WorkflowExecutionTerminated
-
WorkflowExecutionTimedOut
-
WorkflowExecutionContinuedAsNew
-
CancelTimerFailed
-
CancelWorkflowExecutionFailed
-
ChildWorkflowExecutionFailed
-
ChildWorkflowExecutionTimedOut
-
CompleteWorkflowExecutionFailed
-
ContinueAsNewWorkflowExecutionFailed
-
DecisionTaskTimedOut
-
FailWorkflowExecutionFailed
-
RecordMarkerFailed
-
RequestCancelActivityTaskFailed
-
RequestCancelExternalWorkflowExecutionFailed
-
ScheduleActivityTaskFailed
-
SignalExternalWorkflowExecutionFailed
-
StartActivityTaskFailed
-
StartChildWorkflowExecutionFailed
-
StartTimerFailed
-
TimerCanceled
-
LambdaFunctionFailed
-
LambdaFunctionTimedOut
-
StartLambdaFunctionFailed
-
ScheduleLambdaFunctionFailed
-
Amazon SWF event examples
The following are examples of Amazon SWF sending events to EventBridge:
In each case, the detail
section in the event data provides
the same information as the DescribeWorkflowExecution
API. The executionStatus
field indicates the status of the execution at the time the event was sent, either
OPEN
or CLOSED
.
Execution started
{ "version": "0", "id": "444444444444", "detail-type": "Simple Workflow Execution State Change", "source": "aws.swf", "account": "444444444444", "time": "2020-05-08T15:57:38Z", "region": "us-east-1", "resources": [ "arn:aws:swf:us-east-1:444444444444:/domain/SimpleWorkflowUserSimulator" ], "detail": { "eventId": 1, "eventType": "WorkflowExecutionStarted", "workflowExecutionDetail": { "executionInfo": { "execution": { "workflowId": "123456789012", "runId": "AKIAIOSFODNN7EXAMPLE" }, "workflowType": { "name": "SimpleWorkflowUserSimulator", "version": "myWorkflow" }, "startTimestamp": 1588953458484, "closeTimestamp": null, "executionStatus": "OPEN", "closeStatus": null, "parent": null, "parentExecutionArn": null, "tagList": null, "cancelRequested": false }, "executionConfiguration": { "taskStartToCloseTimeout": "60", "executionStartToCloseTimeout": "1000", "taskList": { "name": "444444444444" }, "taskPriority": null, "childPolicy": "ABANDON", "lambdaRole": "arn:aws:iam::444444444444:role/BasicSWFLambdaExecution" }, "openCounts": { "openActivityTasks": 0, "openDecisionTasks": 1, "openTimers": 0, "openChildWorkflowExecutions": 0, "openLambdaFunctions": 0 }, "latestActivityTaskTimestamp": null, } } }
Execution completed
{ "version": "0", "id": "1111-2222-3333", "detail-type": "Simple Workflow Execution State Change", "source": "aws.swf", "account": "444455556666", "time": "2020-05-08T15:57:39Z", "region": "us-east-1", "resources": [ "arn:aws:swf:us-east-1:444455556666:/domain/SimpleWorkflowUserSimulator" ], "detail": { "eventId": 35, "eventType": "WorkflowExecutionCompleted", "workflowExecutionDetail": { "executionInfo": { "execution": { "workflowId": "1234-5678-9012", "runId": "777788889999" }, "workflowType": { "name": "SimpleWorkflowUserSimulator", "version": "myWorkflow" }, "startTimestamp": 1588953458820, "closeTimestamp": 1588953459448, "executionStatus": "CLOSED", "closeStatus": "COMPLETED", "parent": null, "parentExecutionArn": null, "tagList": null, "cancelRequested": false }, "executionConfiguration": { "taskStartToCloseTimeout": "60", "executionStartToCloseTimeout": "1000", "taskList": { "name": "1111-1111-1111" }, "taskPriority": null, "childPolicy": "ABANDON", "lambdaRole": "arn:aws:iam::444455556666:role/BasicSWFLambdaExecution" }, "openCounts": { "openActivityTasks": 0, "openDecisionTasks": 0, "openTimers": 0, "openChildWorkflowExecutions": 0, "openLambdaFunctions": 0 }, "latestActivityTaskTimestamp": 1588953459402, } } }
Execution failed
{ "version": "0", "id": "1111-2222-3333", "detail-type": "Simple Workflow Execution State Change", "source": "aws.swf", "account": "444455556666", "time": "2020-05-08T15:57:38Z", "region": "us-east-1", "resources": [ "arn:aws:swf:us-east-1:444455556666:/domain/SimpleWorkflowUserSimulator" ], "detail": { "eventId": 11, "eventType": "WorkflowExecutionFailed", "workflowExecutionDetail": { "executionInfo": { "execution": { "workflowId": "1234-5678-9012", "runId": "777788889999" }, "workflowType": { "name": "SimpleWorkflowUserSimulator", "version": "myWorkflow" }, "startTimestamp": 1588953158481, "closeTimestamp": 1588953458560, "executionStatus": "CLOSED", "closeStatus": "FAILED", "parent": null, "parentExecutionArn": null, "tagList": null, "cancelRequested": false }, "executionConfiguration": { "taskStartToCloseTimeout": "60", "executionStartToCloseTimeout": "1000", "taskList": { "name": "1111-1111-1111" }, "taskPriority": null, "childPolicy": "ABANDON", "lambdaRole": "arn:aws:iam::444455556666:role/BasicSWFLambdaExecution" }, "openCounts": { "openActivityTasks": 0, "openDecisionTasks": 0, "openTimers": 0, "openChildWorkflowExecutions": 0, "openLambdaFunctions": 0 }, "latestActivityTaskTimestamp": null, } } }
Execution timed out
{ "version": "0", "id": "1111-2222-3333", "detail-type": "Simple Workflow Execution State Change", "source": "aws.swf", "account": "444455556666", "time": "2020-05-05T17:26:30Z", "region": "us-east-1", "resources": [ "arn:aws:swf:us-east-1:444455556666:/domain/SimpleWorkflowUserSimulator" ], "detail": { "eventId": 6, "eventType": "WorkflowExecutionTimedOut", "workflowExecutionDetail": { "executionInfo": { "execution": { "workflowId": "1234-5678-9012", "runId": "777788889999" }, "workflowType": { "name": "SimpleWorkflowUserSimulator", "version": "myWorkflow" }, "startTimestamp": 1588698073748, "closeTimestamp": 1588699590745, "executionStatus": "CLOSED", "closeStatus": "TIMED_OUT", "parent": null, "parentExecutionArn": null, "tagList": null, "cancelRequested": false }, "executionConfiguration": { "taskStartToCloseTimeout": "60", "executionStartToCloseTimeout": "1000", "taskList": { "name": "1111-1111-1111" }, "taskPriority": null, "childPolicy": "ABANDON", "lambdaRole": "arn:aws:iam::444455556666:role/BasicSWFLambdaExecution" }, "openCounts": { "openActivityTasks": 1, "openDecisionTasks": 0, "openTimers": 0, "openChildWorkflowExecutions": 0, "openLambdaFunctions": 0 }, "latestActivityTaskTimestamp": 1588699585802, } } }
Execution terminated
{ "version": "0", "id": "1111-2222-3333", "detail-type": "Simple Workflow Execution State Change", "source": "aws.swf", "account": "444455556666", "time": "2020-05-08T22:37:26Z", "region": "us-east-1", "resources": [ "arn:aws:swf:us-east-1:444455556666:/domain/canary" ], "detail": { "eventId": 48, "eventType": "WorkflowExecutionTerminated", "workflowExecutionDetail": { "executionInfo": { "execution": { "workflowId": "1234-5678-9012", "runId": "777788889999" }, "workflowType": { "name": "1111-1111-1111", "version": "1.3" }, "startTimestamp": 1588977445279, "closeTimestamp": 1588977446062, "executionStatus": "CLOSED", "closeStatus": "TERMINATED", "parent": null, "parentExecutionArn": null, "tagList": null, "cancelRequested": false }, "executionConfiguration": { "taskStartToCloseTimeout": "60", "executionStartToCloseTimeout": "120", "taskList": { "name": "1111-1111-1111-2222-2222-2222" }, "taskPriority": null, "childPolicy": "TERMINATE", "lambdaRole": null }, "openCounts": { "openActivityTasks": 0, "openDecisionTasks": 1, "openTimers": 0, "openChildWorkflowExecutions": 0, "openLambdaFunctions": 0 }, "latestActivityTaskTimestamp": 1588977445882, } } }