aws-cdk-lib
Version:
Version 2 of the AWS Cloud Development Kit library
2 lines (1 loc) • 1.57 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.WaiterStateMachine=void 0;var constructs_1=()=>{var tmp=require("constructs");return constructs_1=()=>tmp,tmp},aws_iam_1=()=>{var tmp=require("../../../aws-iam");return aws_iam_1=()=>tmp,tmp},core_1=()=>{var tmp=require("../../../core");return core_1=()=>tmp,tmp};class WaiterStateMachine extends constructs_1().Construct{constructor(scope,id,props){super(scope,id);const role=new(aws_iam_1()).Role(this,"Role",{assumedBy:new(aws_iam_1()).ServicePrincipal("states.amazonaws.com")});props.isCompleteHandler.grantInvoke(role),props.timeoutHandler.grantInvoke(role);const definition=core_1().Stack.of(this).toJsonString({StartAt:"framework-isComplete-task",States:{"framework-isComplete-task":{End:!0,Retry:[{ErrorEquals:["States.ALL"],IntervalSeconds:props.interval.toSeconds(),MaxAttempts:props.maxAttempts,BackoffRate:props.backoffRate}],Catch:[{ErrorEquals:["States.ALL"],Next:"framework-onTimeout-task"}],Type:"Task",Resource:props.isCompleteHandler.functionArn},"framework-onTimeout-task":{End:!0,Type:"Task",Resource:props.timeoutHandler.functionArn}}}),resource=new(core_1()).CfnResource(this,"Resource",{type:"AWS::StepFunctions::StateMachine",properties:{DefinitionString:definition,RoleArn:role.roleArn}});resource.node.addDependency(role),this.stateMachineArn=resource.ref}grantStartExecution(identity){return aws_iam_1().Grant.addToPrincipal({grantee:identity,actions:["states:StartExecution"],resourceArns:[this.stateMachineArn]})}}exports.WaiterStateMachine=WaiterStateMachine;