Skip to content

Commit 0cde795

Browse files
committed
make policies and metrics properties
1 parent 375ae58 commit 0cde795

File tree

4 files changed

+19
-56
lines changed

4 files changed

+19
-56
lines changed

packages/@aws-cdk/aws-stepfunctions-tasks/lib/lambda/invoke.ts

+2-19
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,6 @@ export class LambdaInvoke extends sfn.TaskStateBase {
5757
];
5858

5959
private readonly integrationPattern: sfn.IntegrationPattern;
60-
private readonly metricsConfig: sfn.TaskMetricsConfig;
61-
private readonly policies: iam.PolicyStatement[];
6260

6361
constructor(scope: cdk.Construct, id: string, private readonly props: LambdaInvokeProps) {
6462
super(scope, id, props);
@@ -71,13 +69,13 @@ export class LambdaInvoke extends sfn.TaskStateBase {
7169
throw new Error('Task Token is required in `payload` for callback. Use Context.taskToken to set the token.');
7270
}
7371

74-
this.metricsConfig = {
72+
this.taskMetrics = {
7573
metricPrefixSingular: 'LambdaFunction',
7674
metricPrefixPlural: 'LambdaFunctions',
7775
metricDimensions: { LambdaFunctionArn: this.props.lambdaFunction.functionArn },
7876
};
7977

80-
this.policies = [
78+
this.taskPolicies = [
8179
new iam.PolicyStatement({
8280
resources: [this.props.lambdaFunction.functionArn],
8381
actions: ['lambda:InvokeFunction'],
@@ -102,21 +100,6 @@ export class LambdaInvoke extends sfn.TaskStateBase {
102100

103101
return taskStateJson(taskStateConfig);
104102
}
105-
106-
/**
107-
* Additional policy statements that will be added to the state machine's
108-
* execution role
109-
*/
110-
protected taskPolicies(): iam.PolicyStatement[] {
111-
return this.policies;
112-
}
113-
114-
/**
115-
* metrics configuration properties for the task
116-
*/
117-
protected taskMetrics(): sfn.TaskMetricsConfig {
118-
return this.metricsConfig;
119-
}
120103
}
121104

122105
/**

packages/@aws-cdk/aws-stepfunctions-tasks/lib/sns/publish.ts

+1-11
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,6 @@ export class SnsPublish extends sfn.TaskStateBase {
6262
];
6363

6464
private readonly integrationPattern: sfn.IntegrationPattern;
65-
private readonly metricsConfig: sfn.TaskMetricsConfig = {};
66-
private readonly policies: iam.PolicyStatement[];
6765

6866
constructor(scope: cdk.Construct, id: string, private readonly props: SnsPublishProps) {
6967
super(scope, id, props);
@@ -77,7 +75,7 @@ export class SnsPublish extends sfn.TaskStateBase {
7775
}
7876
}
7977

80-
this.policies = [
78+
this.taskPolicies = [
8179
new iam.PolicyStatement({
8280
actions: ['sns:Publish'],
8381
resources: [this.props.topic.topicArn],
@@ -98,12 +96,4 @@ export class SnsPublish extends sfn.TaskStateBase {
9896

9997
return taskStateJson(taskConfig);
10098
}
101-
102-
protected taskMetrics(): sfn.TaskMetricsConfig {
103-
return this.metricsConfig;
104-
}
105-
106-
protected taskPolicies(): iam.PolicyStatement[] {
107-
return this.policies;
108-
}
10999
}

packages/@aws-cdk/aws-stepfunctions-tasks/lib/sqs/send-message.ts

+1-11
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,6 @@ export class SqsSendMessage extends sfn.TaskStateBase {
6767
];
6868

6969
private readonly integrationPattern: sfn.IntegrationPattern;
70-
private readonly metricsConfig: sfn.TaskMetricsConfig = {};
71-
private readonly policies: iam.PolicyStatement[];
7270

7371
constructor(scope: cdk.Construct, id: string, private readonly props: SqsSendMessageProps) {
7472
super(scope, id, props);
@@ -82,7 +80,7 @@ export class SqsSendMessage extends sfn.TaskStateBase {
8280
}
8381
}
8482

85-
this.policies = [
83+
this.taskPolicies = [
8684
new iam.PolicyStatement({
8785
actions: ['sqs:SendMessage'],
8886
resources: [this.props.queue.queueArn],
@@ -104,12 +102,4 @@ export class SqsSendMessage extends sfn.TaskStateBase {
104102

105103
return taskStateJson(taskConfig);
106104
}
107-
108-
protected taskMetrics(): sfn.TaskMetricsConfig {
109-
return this.metricsConfig;
110-
}
111-
112-
protected taskPolicies(): iam.PolicyStatement[] {
113-
return this.policies;
114-
}
115105
}

packages/@aws-cdk/aws-stepfunctions/lib/states/task-base.ts

+15-15
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,10 @@ export abstract class TaskStateBase extends State implements INextable {
8989

9090
public readonly endStates: INextable[];
9191

92+
protected taskMetrics: TaskMetricsConfig = {};
93+
94+
protected taskPolicies: iam.PolicyStatement[] | undefined;
95+
9296
constructor(scope: cdk.Construct, id: string, props: TaskStateBaseProps) {
9397
super(scope, id, props);
9498
this.endStates = [this];
@@ -144,7 +148,7 @@ export abstract class TaskStateBase extends State implements INextable {
144148
return new cloudwatch.Metric({
145149
namespace: 'AWS/States',
146150
metricName,
147-
dimensions: this.taskMetrics().metricDimensions,
151+
dimensions: this.taskMetrics?.metricDimensions,
148152
statistic: 'sum',
149153
...props,
150154
}).attachTo(this);
@@ -156,7 +160,7 @@ export abstract class TaskStateBase extends State implements INextable {
156160
* @default average over 5 minutes
157161
*/
158162
public metricRunTime(props?: cloudwatch.MetricOptions): cloudwatch.Metric {
159-
return this.taskMetric(this.taskMetrics().metricPrefixSingular, 'RunTime', { statistic: 'avg', ...props });
163+
return this.taskMetric(this.taskMetrics?.metricPrefixSingular, 'RunTime', { statistic: 'avg', ...props });
160164
}
161165

162166
/**
@@ -165,7 +169,7 @@ export abstract class TaskStateBase extends State implements INextable {
165169
* @default average over 5 minutes
166170
*/
167171
public metricScheduleTime(props?: cloudwatch.MetricOptions): cloudwatch.Metric {
168-
return this.taskMetric(this.taskMetrics().metricPrefixSingular, 'ScheduleTime', { statistic: 'avg', ...props });
172+
return this.taskMetric(this.taskMetrics?.metricPrefixSingular, 'ScheduleTime', { statistic: 'avg', ...props });
169173
}
170174

171175
/**
@@ -174,7 +178,7 @@ export abstract class TaskStateBase extends State implements INextable {
174178
* @default average over 5 minutes
175179
*/
176180
public metricTime(props?: cloudwatch.MetricOptions): cloudwatch.Metric {
177-
return this.taskMetric(this.taskMetrics().metricPrefixSingular, 'Time', { statistic: 'avg', ...props });
181+
return this.taskMetric(this.taskMetrics?.metricPrefixSingular, 'Time', { statistic: 'avg', ...props });
178182
}
179183

180184
/**
@@ -183,7 +187,7 @@ export abstract class TaskStateBase extends State implements INextable {
183187
* @default sum over 5 minutes
184188
*/
185189
public metricScheduled(props?: cloudwatch.MetricOptions): cloudwatch.Metric {
186-
return this.taskMetric(this.taskMetrics().metricPrefixPlural, 'Scheduled', props);
190+
return this.taskMetric(this.taskMetrics?.metricPrefixPlural, 'Scheduled', props);
187191
}
188192

189193
/**
@@ -192,7 +196,7 @@ export abstract class TaskStateBase extends State implements INextable {
192196
* @default sum over 5 minutes
193197
*/
194198
public metricTimedOut(props?: cloudwatch.MetricOptions): cloudwatch.Metric {
195-
return this.taskMetric(this.taskMetrics().metricPrefixPlural, 'TimedOut', props);
199+
return this.taskMetric(this.taskMetrics?.metricPrefixPlural, 'TimedOut', props);
196200
}
197201

198202
/**
@@ -201,7 +205,7 @@ export abstract class TaskStateBase extends State implements INextable {
201205
* @default sum over 5 minutes
202206
*/
203207
public metricStarted(props?: cloudwatch.MetricOptions): cloudwatch.Metric {
204-
return this.taskMetric(this.taskMetrics().metricPrefixPlural, 'Started', props);
208+
return this.taskMetric(this.taskMetrics?.metricPrefixPlural, 'Started', props);
205209
}
206210

207211
/**
@@ -210,7 +214,7 @@ export abstract class TaskStateBase extends State implements INextable {
210214
* @default sum over 5 minutes
211215
*/
212216
public metricSucceeded(props?: cloudwatch.MetricOptions): cloudwatch.Metric {
213-
return this.taskMetric(this.taskMetrics().metricPrefixPlural, 'Succeeded', props);
217+
return this.taskMetric(this.taskMetrics?.metricPrefixPlural, 'Succeeded', props);
214218
}
215219

216220
/**
@@ -219,7 +223,7 @@ export abstract class TaskStateBase extends State implements INextable {
219223
* @default sum over 5 minutes
220224
*/
221225
public metricFailed(props?: cloudwatch.MetricOptions): cloudwatch.Metric {
222-
return this.taskMetric(this.taskMetrics().metricPrefixPlural, 'Failed', props);
226+
return this.taskMetric(this.taskMetrics?.metricPrefixPlural, 'Failed', props);
223227
}
224228

225229
/**
@@ -228,20 +232,16 @@ export abstract class TaskStateBase extends State implements INextable {
228232
* @default sum over 5 minutes
229233
*/
230234
public metricHeartbeatTimedOut(props?: cloudwatch.MetricOptions): cloudwatch.Metric {
231-
return this.taskMetric(this.taskMetrics().metricPrefixPlural, 'HeartbeatTimedOut', props);
235+
return this.taskMetric(this.taskMetrics?.metricPrefixPlural, 'HeartbeatTimedOut', props);
232236
}
233237

234238
protected whenBoundToGraph(graph: StateGraph) {
235239
super.whenBoundToGraph(graph);
236-
for (const policyStatement of this.taskPolicies() || []) {
240+
for (const policyStatement of this.taskPolicies || []) {
237241
graph.registerPolicyStatement(policyStatement);
238242
}
239243
}
240244

241-
protected abstract taskMetrics(): TaskMetricsConfig;
242-
243-
protected abstract taskPolicies(): iam.PolicyStatement[];
244-
245245
protected abstract renderTask(): any;
246246

247247
private taskMetric(prefix: string | undefined, suffix: string, props?: cloudwatch.MetricOptions): cloudwatch.Metric {

0 commit comments

Comments
 (0)