@aws-amplify/graphql-model-transformer
Version:
Amplify graphql @model transformer
50 lines • 1.98 kB
JavaScript
;
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