Skip to content

Commit 81b533c

Browse files
authored
feat: add support for Step Functions (#827)
Adds a construct library to model state machines in AWS Step Functions. Integrates with AWS Lambda to make it easy to build serverless workflows.
1 parent 5558fff commit 81b533c

30 files changed

+4000
-12
lines changed

packages/@aws-cdk/aws-lambda/lib/lambda-ref.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import events = require('@aws-cdk/aws-events');
55
import iam = require('@aws-cdk/aws-iam');
66
import logs = require('@aws-cdk/aws-logs');
77
import s3n = require('@aws-cdk/aws-s3-notifications');
8+
import stepfunctions = require('@aws-cdk/aws-stepfunctions');
89
import cdk = require('@aws-cdk/cdk');
910
import { cloudformation } from './lambda.generated';
1011
import { Permission } from './permission';
@@ -39,7 +40,7 @@ export interface FunctionRefProps {
3940

4041
export abstract class FunctionRef extends cdk.Construct
4142
implements events.IEventRuleTarget, logs.ILogSubscriptionDestination, s3n.IBucketNotificationDestination,
42-
ec2.IConnectable {
43+
ec2.IConnectable, stepfunctions.IStepFunctionsTaskResource {
4344

4445
/**
4546
* Creates a Lambda function object which represents a function not defined
@@ -352,6 +353,19 @@ export abstract class FunctionRef extends cdk.Construct
352353
};
353354
}
354355

356+
public asStepFunctionsTaskResource(_callingTask: stepfunctions.Task): stepfunctions.StepFunctionsTaskResourceProps {
357+
return {
358+
resourceArn: this.functionArn,
359+
metricPrefixSingular: 'LambdaFunction',
360+
metricPrefixPlural: 'LambdaFunctions',
361+
metricDimensions: { LambdaFunctionArn: this.functionArn },
362+
policyStatements: [new iam.PolicyStatement()
363+
.addResource(this.functionArn)
364+
.addActions("lambda:InvokeFunction")
365+
]
366+
};
367+
}
368+
355369
private parsePermissionPrincipal(principal?: iam.PolicyPrincipal) {
356370
if (!principal) {
357371
return undefined;

packages/@aws-cdk/aws-lambda/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@
7272
"@aws-cdk/aws-s3": "^0.12.0",
7373
"@aws-cdk/aws-s3-notifications": "^0.12.0",
7474
"@aws-cdk/aws-sqs": "^0.12.0",
75+
"@aws-cdk/aws-stepfunctions": "^0.12.0",
7576
"@aws-cdk/cdk": "^0.12.0",
7677
"@aws-cdk/cx-api": "^0.12.0"
7778
},

0 commit comments

Comments
 (0)