0.1.582 • Published 1 year ago

@dontirun/state-machine-semaphore v0.1.582

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
1 year ago

@dontirun/state-machine-semaphore

npm version PyPI version NuGet version Maven version Go version

View on Construct Hub

An aws-cdk construct that enables you to use AWS Step Functions to control concurrency in your distributed system. You can use this construct to distributed state machine semaphores to control concurrent invocations of contentious work.

This construct is based off of Justin Callison's example code. Make sure to check out Justin's blogpost to learn about how the system works.

Examples

Example 1) A state machine with a controlled job

import { Function } from 'aws-cdk-lib/aws-lambda'; 
import { Duration, Stack, StackProps } from 'aws-cdk-lib';
import { StateMachine, Succeed, Wait, WaitTime } from 'aws-cdk-lib/aws-stepfunctions';
import { LambdaInvoke } from 'aws-cdk-lib/aws-stepfunctions-tasks';
import { Construct } from 'constructs';
import { Semaphore } from '@dontirun/state-machine-semaphore';


export class CdkTestStack extends Stack {
  constructor(scope: Construct, id: string, props?: StackProps) {
    super(scope, id, props);

    const contestedJob = new LambdaInvoke(this, 'ContestedJobPart1', {
      lambdaFunction: Function.fromFunctionName(this, 'JobFunctionPart1', 'cool-function'),
    }).next(new Wait(this, 'Wait', { time: WaitTime.duration(Duration.seconds(7)) }))
      .next(new Wait(this, 'AnotherWait', { time: WaitTime.duration(Duration.seconds(7)) }))
      .next(new Wait(this, 'YetAnotherWait', { time: WaitTime.duration(Duration.seconds(7)) }));

    const afterContestedJob = new Succeed(this, 'Succeed');

    const stateMachineFragment = new Semaphore(stack, 'Semaphore', { lockName: 'life', limit: 42, job: contestedJob, nextState: afterContestedJob });
    
    new StateMachine(this, 'StateMachine', {
      definition: stateMachineFragment,
    });
  }
}

Example 1 Definition

Example 2) A state machine with multiple semaphores

import { Function } from 'aws-cdk-lib/aws-lambda'; 
import { Duration, Stack, StackProps } from 'aws-cdk-lib';
import { StateMachine, Succeed, Wait, WaitTime } from 'aws-cdk-lib/aws-stepfunctions';
import { LambdaInvoke } from 'aws-cdk-lib/aws-stepfunctions-tasks';
import { Construct } from 'constructs';
import { Semaphore } from '@dontirun/state-machine-semaphore';


export class CdkTestStack extends Stack {
  constructor(scope: Construct, id: string, props?: StackProps) {
    super(scope, id, props);

    const contestedJob = new LambdaInvoke(this, 'ContestedJobPart1', {
      lambdaFunction: Function.fromFunctionName(this, 'JobFunctionPart1', 'cool-function'),
    })
    const notContestedJob = new LambdaInvoke(this, 'NotContestedJob', {
      lambdaFunction: Function.fromFunctionName(this, 'NotContestedJobFunction', 'cooler-function'),
    })
    const contestedJob2 = new LambdaInvoke(this, 'ContestedJobPart2', {
      lambdaFunction: Function.fromFunctionName(this, 'JobFunctionPart2', 'coolest-function'),
    })
    const afterContestedJob2 = new Succeed(this, 'Succeed');

    const definition = new Semaphore(stack, 'Semaphore', { lockName: 'life', limit: 42, job: contestedJob, nextState: notContestedJob })
      .next(new Semaphore(stack, 'Semaphore2', { lockName: 'liberty', limit: 7, job: contestedJob2, nextState: afterContestedJob2 }));

    new StateMachine(this, 'StateMachine', {
      definition: definition,
    });
  }
}

Example 2 Definition

API Reference

See API.md.

License

This project is licensed under the Apache-2.0 License.

0.1.582

1 year ago

0.1.581

1 year ago

0.1.580

1 year ago

0.1.579

1 year ago

0.1.578

1 year ago

0.1.577

1 year ago

0.1.576

1 year ago

0.1.575

1 year ago

0.1.574

1 year ago

0.1.573

1 year ago

0.1.572

1 year ago

0.1.571

1 year ago

0.1.569

1 year ago

0.1.570

1 year ago

0.1.568

1 year ago

0.1.567

1 year ago

0.1.566

1 year ago

0.1.565

1 year ago

0.1.564

1 year ago

0.1.563

1 year ago

0.1.562

1 year ago

0.1.561

1 year ago

0.1.560

1 year ago

0.1.559

1 year ago

0.1.558

1 year ago

0.1.557

1 year ago

0.1.556

1 year ago

0.1.555

1 year ago

0.1.554

1 year ago

0.1.553

1 year ago

0.1.552

1 year ago

0.1.551

1 year ago

0.1.550

1 year ago

0.1.549

1 year ago

0.1.548

1 year ago

0.1.547

1 year ago

0.1.546

1 year ago

0.1.545

1 year ago

0.1.543

1 year ago

0.1.542

1 year ago

0.1.544

1 year ago

0.1.541

1 year ago

0.1.540

1 year ago

0.1.539

1 year ago

0.1.538

1 year ago

0.1.537

1 year ago

0.1.536

1 year ago

0.1.535

1 year ago

0.1.534

1 year ago

0.1.532

1 year ago

0.1.533

1 year ago

0.1.531

1 year ago

0.1.529

1 year ago

0.1.528

1 year ago

0.1.530

1 year ago

0.1.527

1 year ago

0.1.525

1 year ago

0.1.524

1 year ago

0.1.526

1 year ago

0.1.523

1 year ago

0.1.522

1 year ago

0.1.519

1 year ago

0.1.521

1 year ago

0.1.520

1 year ago

0.1.518

1 year ago

0.1.517

1 year ago

0.1.516

1 year ago

0.1.515

1 year ago

0.1.514

1 year ago

0.1.513

1 year ago

0.1.512

1 year ago

0.1.511

1 year ago

0.1.509

1 year ago

0.1.510

1 year ago

0.1.508

1 year ago

0.1.507

1 year ago

0.1.506

1 year ago

0.1.505

1 year ago

0.1.504

1 year ago

0.1.503

1 year ago

0.1.502

1 year ago

0.1.501

1 year ago

0.1.500

1 year ago

0.1.499

1 year ago

0.1.498

1 year ago

0.1.497

1 year ago

0.1.496

1 year ago

0.1.495

1 year ago

0.1.494

1 year ago

0.1.493

1 year ago

0.1.492

1 year ago

0.1.491

1 year ago

0.1.490

1 year ago

0.1.489

1 year ago

0.1.488

1 year ago

0.1.487

1 year ago

0.1.486

1 year ago

0.1.485

1 year ago

0.1.484

1 year ago

0.1.483

1 year ago

0.1.482

1 year ago

0.1.481

1 year ago

0.1.480

1 year ago

0.1.479

1 year ago

0.1.478

1 year ago

0.1.477

2 years ago

0.1.476

2 years ago

0.1.475

2 years ago

0.1.474

2 years ago

0.1.473

2 years ago

0.1.472

2 years ago

0.1.471

2 years ago

0.1.470

2 years ago

0.1.469

2 years ago

0.1.468

2 years ago

0.1.466

2 years ago

0.1.467

2 years ago

0.1.465

2 years ago

0.1.464

2 years ago

0.1.463

2 years ago

0.1.462

2 years ago

0.1.461

2 years ago

0.1.460

2 years ago

0.1.359

2 years ago

0.1.356

2 years ago

0.1.355

2 years ago

0.1.358

2 years ago

0.1.357

2 years ago

0.1.352

2 years ago

0.1.351

2 years ago

0.1.354

2 years ago

0.1.353

2 years ago

0.1.350

2 years ago

0.1.367

2 years ago

0.1.366

2 years ago

0.1.369

2 years ago

0.1.368

2 years ago

0.1.363

2 years ago

0.1.362

2 years ago

0.1.365

2 years ago

0.1.364

2 years ago

0.1.361

2 years ago

0.1.360

2 years ago

0.1.378

2 years ago

0.1.377

2 years ago

0.1.379

2 years ago

0.1.374

2 years ago

0.1.373

2 years ago

0.1.376

2 years ago

0.1.375

2 years ago

0.1.370

2 years ago

0.1.372

2 years ago

0.1.371

2 years ago

0.1.389

2 years ago

0.1.388

2 years ago

0.1.385

2 years ago

0.1.384

2 years ago

0.1.387

2 years ago

0.1.386

2 years ago

0.1.381

2 years ago

0.1.380

2 years ago

0.1.383

2 years ago

0.1.382

2 years ago

0.1.309

2 years ago

0.1.429

2 years ago

0.1.308

2 years ago

0.1.437

2 years ago

0.1.316

2 years ago

0.1.436

2 years ago

0.1.315

2 years ago

0.1.439

2 years ago

0.1.318

2 years ago

0.1.438

2 years ago

0.1.317

2 years ago

0.1.433

2 years ago

0.1.312

2 years ago

0.1.432

2 years ago

0.1.311

2 years ago

0.1.435

2 years ago

0.1.314

2 years ago

0.1.434

2 years ago

0.1.313

2 years ago

0.1.431

2 years ago

0.1.310

2 years ago

0.1.430

2 years ago

0.1.319

2 years ago

0.1.448

2 years ago

0.1.327

2 years ago

0.1.447

2 years ago

0.1.326

2 years ago

0.1.329

2 years ago

0.1.449

2 years ago

0.1.328

2 years ago

0.1.444

2 years ago

0.1.323

2 years ago

0.1.443

2 years ago

0.1.322

2 years ago

0.1.446

2 years ago

0.1.325

2 years ago

0.1.445

2 years ago

0.1.324

2 years ago

0.1.440

2 years ago

0.1.442

2 years ago

0.1.321

2 years ago

0.1.441

2 years ago

0.1.320

2 years ago

0.1.459

2 years ago

0.1.338

2 years ago

0.1.458

2 years ago

0.1.337

2 years ago

0.1.339

2 years ago

0.1.455

2 years ago

0.1.334

2 years ago

0.1.454

2 years ago

0.1.333

2 years ago

0.1.457

2 years ago

0.1.336

2 years ago

0.1.456

2 years ago

0.1.335

2 years ago

0.1.451

2 years ago

0.1.330

2 years ago

0.1.450

2 years ago

0.1.453

2 years ago

0.1.332

2 years ago

0.1.452

2 years ago

0.1.331

2 years ago

0.1.349

2 years ago

0.1.348

2 years ago

0.1.345

2 years ago

0.1.344

2 years ago

0.1.347

2 years ago

0.1.346

2 years ago

0.1.341

2 years ago

0.1.340

2 years ago

0.1.343

2 years ago

0.1.342

2 years ago

0.1.404

2 years ago

0.1.403

2 years ago

0.1.406

2 years ago

0.1.405

2 years ago

0.1.400

2 years ago

0.1.402

2 years ago

0.1.401

2 years ago

0.1.408

2 years ago

0.1.407

2 years ago

0.1.409

2 years ago

0.1.415

2 years ago

0.1.414

2 years ago

0.1.417

2 years ago

0.1.416

2 years ago

0.1.411

2 years ago

0.1.410

2 years ago

0.1.413

2 years ago

0.1.412

2 years ago

0.1.419

2 years ago

0.1.418

2 years ago

0.1.426

2 years ago

0.1.425

2 years ago

0.1.428

2 years ago

0.1.427

2 years ago

0.1.422

2 years ago

0.1.421

2 years ago

0.1.424

2 years ago

0.1.423

2 years ago

0.1.420

2 years ago

0.1.390

2 years ago

0.1.396

2 years ago

0.1.395

2 years ago

0.1.398

2 years ago

0.1.397

2 years ago

0.1.392

2 years ago

0.1.391

2 years ago

0.1.394

2 years ago

0.1.393

2 years ago

0.1.307

2 years ago

0.1.306

2 years ago

0.1.305

2 years ago

0.1.304

2 years ago

0.1.303

2 years ago

0.1.268

2 years ago

0.1.267

2 years ago

0.1.269

2 years ago

0.1.266

2 years ago

0.1.301

2 years ago

0.1.300

2 years ago

0.1.302

2 years ago

0.1.279

2 years ago

0.1.278

2 years ago

0.1.275

2 years ago

0.1.274

2 years ago

0.1.277

2 years ago

0.1.276

2 years ago

0.1.271

2 years ago

0.1.270

2 years ago

0.1.273

2 years ago

0.1.272

2 years ago

0.1.280

2 years ago

0.1.289

2 years ago

0.1.286

2 years ago

0.1.285

2 years ago

0.1.288

2 years ago

0.1.287

2 years ago

0.1.282

2 years ago

0.1.281

2 years ago

0.1.284

2 years ago

0.1.283

2 years ago

0.1.291

2 years ago

0.1.290

2 years ago

0.1.297

2 years ago

0.1.296

2 years ago

0.1.299

2 years ago

0.1.298

2 years ago

0.1.293

2 years ago

0.1.292

2 years ago

0.1.295

2 years ago

0.1.294

2 years ago

0.1.239

2 years ago

0.1.238

2 years ago

0.1.235

2 years ago

0.1.234

2 years ago

0.1.237

2 years ago

0.1.236

2 years ago

0.1.231

2 years ago

0.1.230

2 years ago

0.1.233

2 years ago

0.1.232

2 years ago

0.1.249

2 years ago

0.1.246

2 years ago

0.1.245

2 years ago

0.1.248

2 years ago

0.1.247

2 years ago

0.1.242

2 years ago

0.1.241

2 years ago

0.1.244

2 years ago

0.1.243

2 years ago

0.1.240

2 years ago

0.1.257

2 years ago

0.1.256

2 years ago

0.1.259

2 years ago

0.1.258

2 years ago

0.1.253

2 years ago

0.1.252

2 years ago

0.1.255

2 years ago

0.1.254

2 years ago

0.1.251

2 years ago

0.1.250

2 years ago

0.1.264

2 years ago

0.1.263

2 years ago

0.1.265

2 years ago

0.1.260

2 years ago

0.1.262

2 years ago

0.1.261

2 years ago

0.1.206

2 years ago

0.1.205

2 years ago

0.1.208

2 years ago

0.1.207

2 years ago

0.1.202

2 years ago

0.1.201

2 years ago

0.1.204

2 years ago

0.1.203

2 years ago

0.1.200

2 years ago

0.1.209

2 years ago

0.1.217

2 years ago

0.1.216

2 years ago

0.1.219

2 years ago

0.1.218

2 years ago

0.1.213

2 years ago

0.1.212

2 years ago

0.1.215

2 years ago

0.1.214

2 years ago

0.1.211

2 years ago

0.1.210

2 years ago

0.1.228

2 years ago

0.1.227

2 years ago

0.1.229

2 years ago

0.1.224

2 years ago

0.1.223

2 years ago

0.1.226

2 years ago

0.1.225

2 years ago

0.1.220

2 years ago

0.1.222

2 years ago

0.1.221

2 years ago

0.1.190

2 years ago

0.1.192

2 years ago

0.1.191

2 years ago

0.1.198

2 years ago

0.1.197

2 years ago

0.1.199

2 years ago

0.1.194

2 years ago

0.1.193

2 years ago

0.1.196

2 years ago

0.1.195

2 years ago

0.1.169

2 years ago

0.1.168

2 years ago

0.1.165

2 years ago

0.1.164

2 years ago

0.1.167

2 years ago

0.1.166

2 years ago

0.1.163

2 years ago

0.1.170

2 years ago

0.1.179

2 years ago

0.1.176

2 years ago

0.1.175

2 years ago

0.1.178

2 years ago

0.1.177

2 years ago

0.1.172

2 years ago

0.1.171

2 years ago

0.1.174

2 years ago

0.1.173

2 years ago

0.1.181

2 years ago

0.1.180

2 years ago

0.1.187

2 years ago

0.1.186

2 years ago

0.1.189

2 years ago

0.1.188

2 years ago

0.1.183

2 years ago

0.1.182

2 years ago

0.1.185

2 years ago

0.1.184

2 years ago

0.1.118

3 years ago

0.1.117

3 years ago

0.1.119

3 years ago

0.1.114

3 years ago

0.1.113

3 years ago

0.1.116

3 years ago

0.1.115

3 years ago

0.1.110

3 years ago

0.1.112

3 years ago

0.1.111

3 years ago

0.1.129

3 years ago

0.1.128

3 years ago

0.1.125

3 years ago

0.1.124

3 years ago

0.1.127

3 years ago

0.1.126

3 years ago

0.1.121

3 years ago

0.1.120

3 years ago

0.1.123

3 years ago

0.1.122

3 years ago

0.1.139

2 years ago

0.1.136

3 years ago

0.1.135

3 years ago

0.1.138

3 years ago

0.1.137

3 years ago

0.1.132

3 years ago

0.1.131

3 years ago

0.1.134

3 years ago

0.1.133

3 years ago

0.1.130

3 years ago

0.1.147

2 years ago

0.1.146

2 years ago

0.1.149

2 years ago

0.1.148

2 years ago

0.1.143

2 years ago

0.1.142

2 years ago

0.1.145

2 years ago

0.1.144

2 years ago

0.1.141

2 years ago

0.1.140

2 years ago

0.1.158

2 years ago

0.1.157

2 years ago

0.1.159

2 years ago

0.1.154

2 years ago

0.1.153

2 years ago

0.1.156

2 years ago

0.1.155

2 years ago

0.1.150

2 years ago

0.1.152

2 years ago

0.1.151

2 years ago

0.1.161

2 years ago

0.1.160

2 years ago

0.1.162

2 years ago

0.1.109

3 years ago

0.1.108

3 years ago

0.1.55

3 years ago

0.1.56

3 years ago

0.1.57

3 years ago

0.1.58

3 years ago

0.1.59

3 years ago

0.1.96

3 years ago

0.1.97

3 years ago

0.1.98

3 years ago

0.1.99

3 years ago

0.1.90

3 years ago

0.1.91

3 years ago

0.1.92

3 years ago

0.1.93

3 years ago

0.1.94

3 years ago

0.1.95

3 years ago

0.1.85

3 years ago

0.1.86

3 years ago

0.1.87

3 years ago

0.1.88

3 years ago

0.1.89

3 years ago

0.1.80

3 years ago

0.1.81

3 years ago

0.1.82

3 years ago

0.1.83

3 years ago

0.1.84

3 years ago

0.1.74

3 years ago

0.1.75

3 years ago

0.1.76

3 years ago

0.1.77

3 years ago

0.1.78

3 years ago

0.1.79

3 years ago

0.1.70

3 years ago

0.1.71

3 years ago

0.1.72

3 years ago

0.1.73

3 years ago

0.1.63

3 years ago

0.1.64

3 years ago

0.1.65

3 years ago

0.1.66

3 years ago

0.1.67

3 years ago

0.1.68

3 years ago

0.1.69

3 years ago

0.1.60

3 years ago

0.1.61

3 years ago

0.1.62

3 years ago

0.1.107

3 years ago

0.1.106

3 years ago

0.1.103

3 years ago

0.1.102

3 years ago

0.1.105

3 years ago

0.1.104

3 years ago

0.1.101

3 years ago

0.1.100

3 years ago

0.1.52

3 years ago

0.1.53

3 years ago

0.1.54

3 years ago

0.1.50

3 years ago

0.1.51

3 years ago

0.1.49

3 years ago

0.1.41

3 years ago

0.1.42

3 years ago

0.1.43

3 years ago

0.1.44

3 years ago

0.1.45

3 years ago

0.1.46

3 years ago

0.1.47

3 years ago

0.1.48

3 years ago

0.1.40

3 years ago

0.1.38

3 years ago

0.1.39

3 years ago

0.1.30

3 years ago

0.1.31

3 years ago

0.1.32

3 years ago

0.1.33

3 years ago

0.1.34

3 years ago

0.1.35

3 years ago

0.1.36

3 years ago

0.1.37

3 years ago

0.1.27

3 years ago

0.1.28

3 years ago

0.1.29

3 years ago

0.1.24

3 years ago

0.1.25

3 years ago

0.1.26

3 years ago

0.1.23

3 years ago

0.1.22

3 years ago

0.1.21

3 years ago

0.1.20

3 years ago

0.1.19

3 years ago

0.1.18

3 years ago

0.1.17

3 years ago

0.1.16

3 years ago

0.1.15

3 years ago

0.1.14

3 years ago

0.1.13

3 years ago

0.1.12

3 years ago

0.1.11

3 years ago

0.1.10

3 years ago

0.1.9

3 years ago

0.1.8

3 years ago

0.1.7

3 years ago

0.1.6

3 years ago

0.1.5

3 years ago

0.1.4

3 years ago

0.1.3

3 years ago

0.1.2

3 years ago

0.1.1

3 years ago

0.1.0

3 years ago

0.0.1

3 years ago

0.0.0

3 years ago