-
Notifications
You must be signed in to change notification settings - Fork 3.9k
/
state-machine.ts
42 lines (39 loc) · 1.3 KB
/
state-machine.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import * as events from '@aws-cdk/aws-events';
import * as iam from '@aws-cdk/aws-iam';
import * as sfn from '@aws-cdk/aws-stepfunctions';
import { singletonEventRole } from './util';
/**
* Customize the Step Functions State Machine target
*/
export interface SfnStateMachineProps {
/**
* The input to the state machine execution
*
* @default the entire EventBridge event
*/
readonly input?: events.RuleTargetInput;
}
/**
* Use a StepFunctions state machine as a target for Amazon EventBridge rules.
*/
export class SfnStateMachine implements events.IRuleTarget {
constructor(public readonly machine: sfn.IStateMachine, private readonly props: SfnStateMachineProps = {}) {
}
/**
* Returns a properties that are used in an Rule to trigger this State Machine
*
* @see https://docs.aws.amazon.com/eventbridge/latest/userguide/resource-based-policies-eventbridge.html#sns-permissions
*/
public bind(_rule: events.IRule, _id?: string): events.RuleTargetConfig {
return {
id: '',
arn: this.machine.stateMachineArn,
role: singletonEventRole(this.machine, [new iam.PolicyStatement({
actions: ['states:StartExecution'],
resources: [this.machine.stateMachineArn],
})]),
input: this.props.input,
targetResource: this.machine,
};
}
}