0.1.582 • Published 11 days ago

@dontirun/state-machine-semaphore v0.1.582

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
11 days 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

11 days ago

0.1.581

12 days ago

0.1.580

13 days ago

0.1.579

14 days ago

0.1.578

15 days ago

0.1.577

16 days ago

0.1.576

17 days ago

0.1.575

18 days ago

0.1.574

19 days ago

0.1.573

20 days ago

0.1.572

21 days ago

0.1.571

22 days ago

0.1.569

25 days ago

0.1.570

23 days ago

0.1.568

26 days ago

0.1.567

27 days ago

0.1.566

28 days ago

0.1.565

29 days ago

0.1.564

1 month ago

0.1.563

1 month ago

0.1.562

1 month ago

0.1.561

1 month ago

0.1.560

1 month ago

0.1.559

1 month ago

0.1.558

1 month ago

0.1.557

1 month ago

0.1.556

1 month ago

0.1.555

1 month ago

0.1.554

1 month ago

0.1.553

1 month ago

0.1.552

2 months ago

0.1.551

2 months ago

0.1.550

2 months ago

0.1.549

2 months ago

0.1.548

2 months ago

0.1.547

2 months ago

0.1.546

2 months ago

0.1.545

2 months ago

0.1.543

2 months ago

0.1.542

2 months ago

0.1.544

2 months ago

0.1.541

2 months ago

0.1.540

2 months ago

0.1.539

2 months ago

0.1.538

2 months ago

0.1.537

2 months ago

0.1.536

2 months ago

0.1.535

2 months ago

0.1.534

2 months ago

0.1.532

2 months ago

0.1.533

2 months ago

0.1.531

2 months ago

0.1.529

2 months ago

0.1.528

2 months ago

0.1.530

2 months ago

0.1.527

2 months ago

0.1.525

2 months ago

0.1.524

3 months ago

0.1.526

2 months ago

0.1.523

3 months ago

0.1.522

3 months ago

0.1.519

3 months ago

0.1.521

3 months ago

0.1.520

3 months ago

0.1.518

3 months ago

0.1.517

3 months ago

0.1.516

3 months ago

0.1.515

3 months ago

0.1.514

3 months ago

0.1.513

3 months ago

0.1.512

3 months ago

0.1.511

3 months ago

0.1.509

3 months ago

0.1.510

3 months ago

0.1.508

3 months ago

0.1.507

3 months ago

0.1.506

3 months ago

0.1.505

3 months ago

0.1.504

3 months ago

0.1.503

3 months ago

0.1.502

3 months ago

0.1.501

3 months ago

0.1.500

4 months ago

0.1.499

4 months ago

0.1.498

4 months ago

0.1.497

4 months ago

0.1.496

4 months ago

0.1.495

4 months ago

0.1.494

4 months ago

0.1.493

4 months ago

0.1.492

4 months ago

0.1.491

4 months ago

0.1.490

4 months ago

0.1.489

4 months ago

0.1.488

4 months ago

0.1.487

4 months ago

0.1.486

4 months ago

0.1.485

4 months ago

0.1.484

4 months ago

0.1.483

4 months ago

0.1.482

4 months ago

0.1.481

4 months ago

0.1.480

4 months ago

0.1.479

4 months ago

0.1.478

4 months ago

0.1.477

4 months ago

0.1.476

4 months ago

0.1.475

5 months ago

0.1.474

5 months ago

0.1.473

5 months ago

0.1.472

5 months ago

0.1.471

5 months ago

0.1.470

5 months ago

0.1.469

5 months ago

0.1.468

5 months ago

0.1.466

5 months ago

0.1.467

5 months ago

0.1.465

5 months ago

0.1.464

5 months ago

0.1.463

5 months ago

0.1.462

5 months ago

0.1.461

5 months ago

0.1.460

5 months ago

0.1.359

9 months ago

0.1.356

9 months ago

0.1.355

9 months ago

0.1.358

9 months ago

0.1.357

9 months ago

0.1.352

9 months ago

0.1.351

9 months ago

0.1.354

9 months ago

0.1.353

9 months ago

0.1.350

9 months ago

0.1.367

9 months ago

0.1.366

9 months ago

0.1.369

8 months ago

0.1.368

8 months ago

0.1.363

9 months ago

0.1.362

9 months ago

0.1.365

9 months ago

0.1.364

9 months ago

0.1.361

9 months ago

0.1.360

9 months ago

0.1.378

8 months ago

0.1.377

8 months ago

0.1.379

8 months ago

0.1.374

8 months ago

0.1.373

8 months ago

0.1.376

8 months ago

0.1.375

8 months ago

0.1.370

8 months ago

0.1.372

8 months ago

0.1.371

8 months ago

0.1.389

8 months ago

0.1.388

8 months ago

0.1.385

8 months ago

0.1.384

8 months ago

0.1.387

8 months ago

0.1.386

8 months ago

0.1.381

8 months ago

0.1.380

8 months ago

0.1.383

8 months ago

0.1.382

8 months ago

0.1.309

10 months ago

0.1.429

6 months ago

0.1.308

10 months ago

0.1.437

6 months ago

0.1.316

10 months ago

0.1.436

6 months ago

0.1.315

10 months ago

0.1.439

6 months ago

0.1.318

10 months ago

0.1.438

6 months ago

0.1.317

10 months ago

0.1.433

6 months ago

0.1.312

10 months ago

0.1.432

6 months ago

0.1.311

10 months ago

0.1.435

6 months ago

0.1.314

10 months ago

0.1.434

6 months ago

0.1.313

10 months ago

0.1.431

6 months ago

0.1.310

10 months ago

0.1.430

6 months ago

0.1.319

10 months ago

0.1.448

6 months ago

0.1.327

10 months ago

0.1.447

6 months ago

0.1.326

10 months ago

0.1.329

10 months ago

0.1.449

6 months ago

0.1.328

10 months ago

0.1.444

6 months ago

0.1.323

10 months ago

0.1.443

6 months ago

0.1.322

10 months ago

0.1.446

6 months ago

0.1.325

10 months ago

0.1.445

6 months ago

0.1.324

10 months ago

0.1.440

6 months ago

0.1.442

6 months ago

0.1.321

10 months ago

0.1.441

6 months ago

0.1.320

10 months ago

0.1.459

5 months ago

0.1.338

9 months ago

0.1.458

5 months ago

0.1.337

10 months ago

0.1.339

9 months ago

0.1.455

6 months ago

0.1.334

10 months ago

0.1.454

6 months ago

0.1.333

10 months ago

0.1.457

5 months ago

0.1.336

10 months ago

0.1.456

5 months ago

0.1.335

10 months ago

0.1.451

6 months ago

0.1.330

10 months ago

0.1.450

6 months ago

0.1.453

6 months ago

0.1.332

10 months ago

0.1.452

6 months ago

0.1.331

10 months ago

0.1.349

9 months ago

0.1.348

9 months ago

0.1.345

9 months ago

0.1.344

9 months ago

0.1.347

9 months ago

0.1.346

9 months ago

0.1.341

9 months ago

0.1.340

9 months ago

0.1.343

9 months ago

0.1.342

9 months ago

0.1.404

7 months ago

0.1.403

7 months ago

0.1.406

7 months ago

0.1.405

7 months ago

0.1.400

7 months ago

0.1.402

7 months ago

0.1.401

7 months ago

0.1.408

7 months ago

0.1.407

7 months ago

0.1.409

7 months ago

0.1.415

7 months ago

0.1.414

7 months ago

0.1.417

7 months ago

0.1.416

7 months ago

0.1.411

7 months ago

0.1.410

7 months ago

0.1.413

7 months ago

0.1.412

7 months ago

0.1.419

7 months ago

0.1.418

7 months ago

0.1.426

7 months ago

0.1.425

7 months ago

0.1.428

6 months ago

0.1.427

6 months ago

0.1.422

7 months ago

0.1.421

7 months ago

0.1.424

7 months ago

0.1.423

7 months ago

0.1.420

7 months ago

0.1.390

8 months ago

0.1.396

8 months ago

0.1.395

8 months ago

0.1.398

7 months ago

0.1.397

7 months ago

0.1.392

8 months ago

0.1.391

8 months ago

0.1.394

8 months ago

0.1.393

8 months ago

0.1.307

11 months ago

0.1.306

11 months ago

0.1.305

11 months ago

0.1.304

11 months ago

0.1.303

11 months ago

0.1.268

12 months ago

0.1.267

12 months ago

0.1.269

12 months ago

0.1.266

12 months ago

0.1.301

11 months ago

0.1.300

11 months ago

0.1.302

11 months ago

0.1.279

11 months ago

0.1.278

12 months ago

0.1.275

12 months ago

0.1.274

12 months ago

0.1.277

12 months ago

0.1.276

12 months ago

0.1.271

12 months ago

0.1.270

12 months ago

0.1.273

12 months ago

0.1.272

12 months ago

0.1.280

11 months ago

0.1.289

11 months ago

0.1.286

11 months ago

0.1.285

11 months ago

0.1.288

11 months ago

0.1.287

11 months ago

0.1.282

11 months ago

0.1.281

11 months ago

0.1.284

11 months ago

0.1.283

11 months ago

0.1.291

11 months ago

0.1.290

11 months ago

0.1.297

11 months ago

0.1.296

11 months ago

0.1.299

11 months ago

0.1.298

11 months ago

0.1.293

11 months ago

0.1.292

11 months ago

0.1.295

11 months ago

0.1.294

11 months ago

0.1.239

1 year ago

0.1.238

1 year ago

0.1.235

1 year ago

0.1.234

1 year ago

0.1.237

1 year ago

0.1.236

1 year ago

0.1.231

1 year ago

0.1.230

1 year ago

0.1.233

1 year ago

0.1.232

1 year ago

0.1.249

1 year ago

0.1.246

1 year ago

0.1.245

1 year ago

0.1.248

1 year ago

0.1.247

1 year ago

0.1.242

1 year ago

0.1.241

1 year ago

0.1.244

1 year ago

0.1.243

1 year ago

0.1.240

1 year ago

0.1.257

1 year ago

0.1.256

1 year ago

0.1.259

1 year ago

0.1.258

1 year ago

0.1.253

1 year ago

0.1.252

1 year ago

0.1.255

1 year ago

0.1.254

1 year ago

0.1.251

1 year ago

0.1.250

1 year ago

0.1.264

12 months ago

0.1.263

12 months ago

0.1.265

12 months ago

0.1.260

1 year ago

0.1.262

12 months ago

0.1.261

12 months ago

0.1.206

1 year ago

0.1.205

1 year ago

0.1.208

1 year ago

0.1.207

1 year ago

0.1.202

1 year ago

0.1.201

1 year ago

0.1.204

1 year ago

0.1.203

1 year ago

0.1.200

1 year ago

0.1.209

1 year ago

0.1.217

1 year ago

0.1.216

1 year ago

0.1.219

1 year ago

0.1.218

1 year ago

0.1.213

1 year ago

0.1.212

1 year ago

0.1.215

1 year ago

0.1.214

1 year ago

0.1.211

1 year ago

0.1.210

1 year ago

0.1.228

1 year ago

0.1.227

1 year ago

0.1.229

1 year ago

0.1.224

1 year ago

0.1.223

1 year ago

0.1.226

1 year ago

0.1.225

1 year ago

0.1.220

1 year ago

0.1.222

1 year ago

0.1.221

1 year ago

0.1.190

1 year ago

0.1.192

1 year ago

0.1.191

1 year ago

0.1.198

1 year ago

0.1.197

1 year ago

0.1.199

1 year ago

0.1.194

1 year ago

0.1.193

1 year ago

0.1.196

1 year ago

0.1.195

1 year ago

0.1.169

1 year ago

0.1.168

1 year ago

0.1.165

1 year ago

0.1.164

1 year ago

0.1.167

1 year ago

0.1.166

1 year ago

0.1.163

1 year ago

0.1.170

1 year ago

0.1.179

1 year ago

0.1.176

1 year ago

0.1.175

1 year ago

0.1.178

1 year ago

0.1.177

1 year ago

0.1.172

1 year ago

0.1.171

1 year ago

0.1.174

1 year ago

0.1.173

1 year ago

0.1.181

1 year ago

0.1.180

1 year ago

0.1.187

1 year ago

0.1.186

1 year ago

0.1.189

1 year ago

0.1.188

1 year ago

0.1.183

1 year ago

0.1.182

1 year ago

0.1.185

1 year ago

0.1.184

1 year ago

0.1.118

1 year ago

0.1.117

1 year ago

0.1.119

1 year ago

0.1.114

1 year ago

0.1.113

1 year ago

0.1.116

1 year ago

0.1.115

1 year ago

0.1.110

1 year ago

0.1.112

1 year ago

0.1.111

1 year ago

0.1.129

1 year ago

0.1.128

1 year ago

0.1.125

1 year ago

0.1.124

1 year ago

0.1.127

1 year ago

0.1.126

1 year ago

0.1.121

1 year ago

0.1.120

1 year ago

0.1.123

1 year ago

0.1.122

1 year ago

0.1.139

1 year ago

0.1.136

1 year ago

0.1.135

1 year ago

0.1.138

1 year ago

0.1.137

1 year ago

0.1.132

1 year ago

0.1.131

1 year ago

0.1.134

1 year ago

0.1.133

1 year ago

0.1.130

1 year ago

0.1.147

1 year ago

0.1.146

1 year ago

0.1.149

1 year ago

0.1.148

1 year ago

0.1.143

1 year ago

0.1.142

1 year ago

0.1.145

1 year ago

0.1.144

1 year ago

0.1.141

1 year ago

0.1.140

1 year ago

0.1.158

1 year ago

0.1.157

1 year ago

0.1.159

1 year ago

0.1.154

1 year ago

0.1.153

1 year ago

0.1.156

1 year ago

0.1.155

1 year ago

0.1.150

1 year ago

0.1.152

1 year ago

0.1.151

1 year ago

0.1.161

1 year ago

0.1.160

1 year ago

0.1.162

1 year ago

0.1.109

1 year ago

0.1.108

1 year ago

0.1.55

2 years ago

0.1.56

2 years ago

0.1.57

2 years ago

0.1.58

2 years ago

0.1.59

2 years ago

0.1.96

1 year ago

0.1.97

1 year ago

0.1.98

1 year ago

0.1.99

1 year ago

0.1.90

1 year ago

0.1.91

1 year ago

0.1.92

1 year ago

0.1.93

1 year ago

0.1.94

1 year ago

0.1.95

1 year ago

0.1.85

2 years ago

0.1.86

2 years ago

0.1.87

2 years ago

0.1.88

2 years ago

0.1.89

1 year ago

0.1.80

2 years ago

0.1.81

2 years ago

0.1.82

2 years ago

0.1.83

2 years ago

0.1.84

2 years ago

0.1.74

2 years ago

0.1.75

2 years ago

0.1.76

2 years ago

0.1.77

2 years ago

0.1.78

2 years ago

0.1.79

2 years ago

0.1.70

2 years ago

0.1.71

2 years ago

0.1.72

2 years ago

0.1.73

2 years ago

0.1.63

2 years ago

0.1.64

2 years ago

0.1.65

2 years ago

0.1.66

2 years ago

0.1.67

2 years ago

0.1.68

2 years ago

0.1.69

2 years ago

0.1.60

2 years ago

0.1.61

2 years ago

0.1.62

2 years ago

0.1.107

1 year ago

0.1.106

1 year ago

0.1.103

1 year ago

0.1.102

1 year ago

0.1.105

1 year ago

0.1.104

1 year ago

0.1.101

1 year ago

0.1.100

1 year ago

0.1.52

2 years ago

0.1.53

2 years ago

0.1.54

2 years ago

0.1.50

2 years ago

0.1.51

2 years ago

0.1.49

2 years ago

0.1.41

2 years ago

0.1.42

2 years ago

0.1.43

2 years ago

0.1.44

2 years ago

0.1.45

2 years ago

0.1.46

2 years ago

0.1.47

2 years ago

0.1.48

2 years ago

0.1.40

2 years ago

0.1.38

2 years ago

0.1.39

2 years ago

0.1.30

2 years ago

0.1.31

2 years ago

0.1.32

2 years ago

0.1.33

2 years ago

0.1.34

2 years ago

0.1.35

2 years ago

0.1.36

2 years ago

0.1.37

2 years ago

0.1.27

2 years ago

0.1.28

2 years ago

0.1.29

2 years ago

0.1.24

2 years ago

0.1.25

2 years ago

0.1.26

2 years ago

0.1.23

2 years ago

0.1.22

2 years ago

0.1.21

2 years ago

0.1.20

2 years ago

0.1.19

2 years ago

0.1.18

2 years ago

0.1.17

2 years ago

0.1.16

2 years ago

0.1.15

2 years ago

0.1.14

2 years ago

0.1.13

2 years ago

0.1.12

2 years ago

0.1.11

2 years ago

0.1.10

2 years ago

0.1.9

2 years ago

0.1.8

2 years ago

0.1.7

2 years ago

0.1.6

2 years ago

0.1.5

2 years ago

0.1.4

2 years ago

0.1.3

2 years ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago

0.0.1

2 years ago

0.0.0

2 years ago