UNPKG

@aws-amplify/graphql-model-transformer

Version:
50 lines 1.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.WaiterStateMachine = void 0; const aws_cdk_lib_1 = require("aws-cdk-lib"); const constructs_1 = require("constructs"); class WaiterStateMachine extends constructs_1.Construct { constructor(scope, id, props) { super(scope, id); const role = new aws_cdk_lib_1.aws_iam.Role(this, 'Role', { assumedBy: new aws_cdk_lib_1.aws_iam.ServicePrincipal('states.amazonaws.com'), }); props.isCompleteHandler.grantInvoke(role); const definition = aws_cdk_lib_1.Stack.of(this).toJsonString({ StartAt: 'framework-isComplete-task', States: { 'framework-isComplete-task': { End: true, Retry: [ { ErrorEquals: ['States.ALL'], IntervalSeconds: props.queryInterval.toSeconds(), MaxAttempts: props.maxAttempts, BackoffRate: props.backoffRate, }, ], Type: 'Task', Resource: props.isCompleteHandler.functionArn, }, }, }); const resource = new aws_cdk_lib_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_cdk_lib_1.aws_iam.Grant.addToPrincipal({ grantee: identity, actions: ['states:StartExecution'], resourceArns: [this.stateMachineArn], }); } } exports.WaiterStateMachine = WaiterStateMachine; //# sourceMappingURL=waiter-state-machine.js.map