konokenj.cdk-api-mcp-server 0.29.0__py3-none-any.whl → 0.31.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. cdk_api_mcp_server/__about__.py +1 -1
  2. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-lambda-python-alpha/README.md +17 -4
  3. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.api-dualstack.ts +4 -3
  4. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.api.ts +4 -2
  5. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.stage.ts +20 -7
  6. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-authorizers/integ.iam.ts +38 -34
  7. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.sqs.ts +71 -58
  8. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-backup/README.md +2 -0
  9. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-backup/integ.backup.ts +12 -1
  10. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/README.md +32 -0
  11. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/integ.alarm-and-dashboard.ts +1 -0
  12. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/integ.math-alarm-and-dashboard.ts +4 -0
  13. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codedeploy/integ.deployment-config.ts +4 -15
  14. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codedeploy/integ.deployment-group.ts +218 -40
  15. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codepipeline-actions/integ.pipeline-elastic-beanstalk-deploy.ts +1 -1
  16. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/README.md +13 -0
  17. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/integ.client-vpn-endpoint-client-route-enforcement.ts +68 -0
  18. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.helm-chart-logging.ts +55 -0
  19. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/README.md +15 -0
  20. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.log-retention.ts +8 -2
  21. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/README.md +23 -13
  22. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-snapshot.ts +3 -71
  23. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.instance-engine-lifecycle-support.ts +53 -0
  24. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-notifications/integ.bucket-notifications.ts +42 -80
  25. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.call-aws-service-cross-region-lambda.ts +97 -0
  26. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.start-job-run.ts +51 -106
  27. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/FEATURE_FLAGS.md +156 -156
  28. {konokenj_cdk_api_mcp_server-0.29.0.dist-info → konokenj_cdk_api_mcp_server-0.31.0.dist-info}/METADATA +2 -2
  29. {konokenj_cdk_api_mcp_server-0.29.0.dist-info → konokenj_cdk_api_mcp_server-0.31.0.dist-info}/RECORD +32 -28
  30. {konokenj_cdk_api_mcp_server-0.29.0.dist-info → konokenj_cdk_api_mcp_server-0.31.0.dist-info}/WHEEL +0 -0
  31. {konokenj_cdk_api_mcp_server-0.29.0.dist-info → konokenj_cdk_api_mcp_server-0.31.0.dist-info}/entry_points.txt +0 -0
  32. {konokenj_cdk_api_mcp_server-0.29.0.dist-info → konokenj_cdk_api_mcp_server-0.31.0.dist-info}/licenses/LICENSE.txt +0 -0
@@ -0,0 +1,53 @@
1
+ import * as ec2 from 'aws-cdk-lib/aws-ec2';
2
+ import { App, RemovalPolicy, Stack } from 'aws-cdk-lib';
3
+ import * as rds from 'aws-cdk-lib/aws-rds';
4
+ import { IntegTest } from '@aws-cdk/integ-tests-alpha';
5
+ import { InstanceSnapshoter } from './snapshoter';
6
+
7
+ const app = new App({
8
+ postCliContext: {
9
+ '@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy': true,
10
+ '@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
11
+ },
12
+ });
13
+
14
+ const stack = new Stack(app, 'cdk-instance-engine-lifecycle-support');
15
+
16
+ const vpc = new ec2.Vpc(stack, 'Vpc', { maxAzs: 2, natGateways: 1, restrictDefaultSecurityGroup: false });
17
+
18
+ const engine = rds.DatabaseInstanceEngine.mysql({ version: rds.MysqlEngineVersion.VER_8_4_5 });
19
+ const instanceType = ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE3, ec2.InstanceSize.SMALL);
20
+
21
+ const sourceInstance = new rds.DatabaseInstance(stack, 'Instance', {
22
+ engine,
23
+ instanceType,
24
+ vpc,
25
+ removalPolicy: RemovalPolicy.DESTROY,
26
+ engineLifecycleSupport: rds.EngineLifecycleSupport.OPEN_SOURCE_RDS_EXTENDED_SUPPORT,
27
+ });
28
+
29
+ const snapshoter = new InstanceSnapshoter(stack, 'Snapshoter', {
30
+ instance: sourceInstance,
31
+ snapshotIdentifier: 'cdk-instance-engine-lifecycle-support-snapshot',
32
+ });
33
+
34
+ const restoredInstance = new rds.DatabaseInstanceFromSnapshot(stack, 'FromSnapshot', {
35
+ snapshotIdentifier: snapshoter.snapshotArn,
36
+ engine,
37
+ instanceType,
38
+ vpc,
39
+ removalPolicy: RemovalPolicy.DESTROY,
40
+ engineLifecycleSupport: rds.EngineLifecycleSupport.OPEN_SOURCE_RDS_EXTENDED_SUPPORT_DISABLED,
41
+ });
42
+
43
+ new rds.DatabaseInstanceReadReplica(stack, 'ReadReplica', {
44
+ sourceDatabaseInstance: restoredInstance,
45
+ instanceType,
46
+ vpc,
47
+ removalPolicy: RemovalPolicy.DESTROY,
48
+ engineLifecycleSupport: rds.EngineLifecycleSupport.OPEN_SOURCE_RDS_EXTENDED_SUPPORT_DISABLED,
49
+ });
50
+
51
+ new IntegTest(app, 'cdk-instance-engine-lifecycle-support-test', {
52
+ testCases: [stack],
53
+ });
@@ -1,106 +1,68 @@
1
- import * as lambda from 'aws-cdk-lib/aws-lambda';
2
1
  import * as s3 from 'aws-cdk-lib/aws-s3';
2
+ import * as sqs from 'aws-cdk-lib/aws-sqs';
3
3
  import * as cdk from 'aws-cdk-lib';
4
- import * as s3n from 'aws-cdk-lib/aws-s3-notifications';
5
- import { STANDARD_NODEJS_RUNTIME } from '../../../config';
6
- import * as constructs from 'constructs';
7
4
  import * as integ from '@aws-cdk/integ-tests-alpha';
5
+ import * as s3n from 'aws-cdk-lib/aws-s3-notifications';
8
6
 
9
7
  const app = new cdk.App({
10
8
  postCliContext: {
11
- '@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
12
9
  '@aws-cdk/aws-s3:keepNotificationInImportedBucket': false,
13
10
  },
14
11
  });
15
12
 
16
- const stack = new cdk.Stack(app, 'cdk-integ-lambda-bucket-s3-notifications');
13
+ const stack = new cdk.Stack(app, 'sqs-bucket-notifications');
17
14
 
18
- const bucketA = new s3.Bucket(stack, 'MyBucket', {
15
+ const bucket1 = new s3.Bucket(stack, 'Bucket1', {
19
16
  removalPolicy: cdk.RemovalPolicy.DESTROY,
20
17
  });
18
+ const queue = new sqs.Queue(stack, 'MyQueue');
21
19
 
22
- const fn = new lambda.Function(stack, 'MyFunction', {
23
- runtime: STANDARD_NODEJS_RUNTIME,
24
- handler: 'index.handler',
25
- code: lambda.Code.fromInline(`exports.handler = ${handler.toString()}`),
26
- });
20
+ bucket1.addObjectCreatedNotification(new s3n.SqsDestination(queue));
27
21
 
28
- const bucketB = new s3.Bucket(stack, 'YourBucket', {
22
+ const bucket2 = new s3.Bucket(stack, 'Bucket2', {
29
23
  removalPolicy: cdk.RemovalPolicy.DESTROY,
24
+ autoDeleteObjects: true,
30
25
  });
26
+ bucket2.addObjectCreatedNotification(new s3n.SqsDestination(queue), { suffix: '.png' });
31
27
 
32
- bucketB.addEventNotification(s3.EventType.OBJECT_REMOVED, new s3n.LambdaDestination(fn));
33
-
34
- const c1 = new constructs.Construct(stack, 'Construct1');
35
- const unmanagedBucket = s3.Bucket.fromBucketName(c1, 'IntegUnmanagedBucket1', bucketA.bucketName);
36
-
37
- unmanagedBucket.addObjectCreatedNotification(new s3n.LambdaDestination(fn), { prefix: 'TEST1/', suffix: '.png' });
38
- unmanagedBucket.addEventNotification(s3.EventType.OBJECT_CREATED, new s3n.LambdaDestination(fn), { prefix: 'TEST2/' });
28
+ const encryptedQueue = new sqs.Queue(stack, 'EncryptedQueue', { encryption: sqs.QueueEncryption.KMS });
29
+ bucket1.addObjectRemovedNotification(new s3n.SqsDestination(encryptedQueue));
39
30
 
40
- /* eslint-disable no-console */
41
- function handler(event: any, _context: any, callback: any) {
42
- console.log(JSON.stringify(event, undefined, 2));
43
- return callback(null, event);
44
- }
31
+ const bucket3 = new s3.Bucket(stack, 'Bucket3WithSkipDestinationValidation', {
32
+ notificationsSkipDestinationValidation: true,
33
+ removalPolicy: cdk.RemovalPolicy.DESTROY,
34
+ });
35
+ const queueWithIncorrectS3Permissions = new sqs.Queue(stack, 'MyQueueWithIncorrectS3Permissions');
36
+ queueWithIncorrectS3Permissions.addToResourcePolicy(
37
+ new cdk.aws_iam.PolicyStatement({
38
+ effect: cdk.aws_iam.Effect.DENY,
39
+ actions: ['sqs:SendMessage'],
40
+ principals: [new cdk.aws_iam.ServicePrincipal('s3.amazonaws.com')],
41
+ resources: [queueWithIncorrectS3Permissions.queueArn],
42
+ }));
43
+ bucket3.addEventNotification(s3.EventType.OBJECT_TAGGING_PUT, new s3n.SqsDestination(queueWithIncorrectS3Permissions));
45
44
 
46
- const integTest = new integ.IntegTest(app, 'LambdaBucketNotificationsTest', {
47
- cdkCommandOptions: {
48
- deploy: {
49
- args: {
50
- rollback: false,
51
- },
52
- },
53
- },
45
+ const integTest = new integ.IntegTest(app, 'SQSBucketNotificationsTest', {
54
46
  testCases: [stack],
55
47
  diffAssets: true,
56
48
  });
57
49
 
58
- const getNotifications = integTest.assertions
59
- .awsApiCall('S3', 'getBucketNotificationConfiguration', {
60
- Bucket: unmanagedBucket.bucketName,
61
- });
62
- getNotifications.provider.addToRolePolicy({
63
- Effect: 'Allow',
64
- Action: ['s3:GetBucketNotification'],
65
- Resource: ['*'],
66
- });
50
+ integTest.assertions
51
+ // First remove the test notifications
52
+ .awsApiCall('SQS', 'purgeQueue', {
53
+ QueueUrl: queue.queueUrl,
54
+ })
55
+ .next(integTest.assertions
56
+ .awsApiCall('S3', 'putObject', {
57
+ Bucket: bucket2.bucketName,
58
+ Key: 'image.png',
59
+ Body: 'Some content',
60
+ }))
61
+ .next(integTest.assertions
62
+ .awsApiCall('SQS', 'receiveMessage', {
63
+ QueueUrl: queue.queueUrl,
64
+ WaitTimeSeconds: 20,
65
+ })
66
+ .assertAtPath('Messages.0.Body.Records.0.s3.object.key', integ.ExpectedResult.stringLikeRegexp('image\\.png')));
67
67
 
68
- getNotifications.expect(integ.ExpectedResult.objectLike({
69
- LambdaFunctionConfigurations: [
70
- {
71
- Events: [
72
- 's3:ObjectCreated:*',
73
- ],
74
- Filter: {
75
- Key: {
76
- FilterRules: [
77
- {
78
- Name: 'Prefix',
79
- Value: 'TEST1/',
80
- },
81
- {
82
- Name: 'Suffix',
83
- Value: '.png',
84
- },
85
- ],
86
- },
87
- },
88
- },
89
- {
90
- Events: [
91
- 's3:ObjectCreated:*',
92
- ],
93
- Filter: {
94
- Key: {
95
- FilterRules: [
96
- {
97
- Name: 'Prefix',
98
- Value: 'TEST2/',
99
- },
100
- ],
101
- },
102
- },
103
- },
104
- ],
105
- }));
106
68
  app.synth();
@@ -0,0 +1,97 @@
1
+ import * as cdk from 'aws-cdk-lib';
2
+ import * as lambda from 'aws-cdk-lib/aws-lambda';
3
+ import * as tasks from 'aws-cdk-lib/aws-stepfunctions-tasks';
4
+ import { ExpectedResult, IntegTest, Match } from '@aws-cdk/integ-tests-alpha';
5
+ import * as sfn from 'aws-cdk-lib/aws-stepfunctions';
6
+
7
+ class TestStack extends cdk.Stack {
8
+ public readonly stateMachine: sfn.StateMachine;
9
+ constructor(scope: cdk.App, id: string, props: cdk.StackProps = {}) {
10
+ super(scope, id, props);
11
+ // Create a target Lambda function that returns JSON response
12
+ const targetLambda = new lambda.Function(this, 'TargetLambda', {
13
+ runtime: lambda.Runtime.NODEJS_18_X,
14
+ handler: 'index.handler',
15
+ code: lambda.Code.fromInline(`
16
+ exports.handler = async (event) => {
17
+ console.log('Target Lambda received event:', JSON.stringify(event, null, 2));
18
+
19
+ // Return a JSON response that should be properly serialized
20
+ return {
21
+ statusCode: 200,
22
+ body: {
23
+ status: 'success',
24
+ message: 'Hello from target Lambda',
25
+ receivedData: event
26
+ }
27
+ };
28
+ };
29
+ `),
30
+ description: 'Target Lambda function for CallAwsServiceCrossRegion testing',
31
+ });
32
+
33
+ // Create a cross-region Lambda invoke task using CallAwsServiceCrossRegion
34
+ const crossRegionInvokeTask = tasks.CallAwsServiceCrossRegion.jsonata(this, 'CrossRegionLambdaInvoke', {
35
+ service: 'lambda',
36
+ action: 'invoke',
37
+ region: 'us-east-1',
38
+ parameters: {
39
+ FunctionName: targetLambda.functionArn,
40
+ Payload: JSON.stringify({
41
+ hello: 'world',
42
+ testData: 'reproduction',
43
+ }),
44
+ },
45
+ iamResources: [targetLambda.functionArn],
46
+ iamAction: 'lambda:InvokeFunction',
47
+ });
48
+
49
+ // Create a Step Functions state machine to execute the cross-region task
50
+ this.stateMachine = new sfn.StateMachine(this, 'TestStateMachine', {
51
+ definitionBody: sfn.DefinitionBody.fromChainable(crossRegionInvokeTask),
52
+ timeout: cdk.Duration.minutes(5),
53
+ comment: 'State machine to reproduce issue 34768 - CallAwsServiceCrossRegion byte array bug',
54
+ });
55
+ }
56
+ }
57
+
58
+ const app = new cdk.App({
59
+ postCliContext: {
60
+ '@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
61
+ '@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy': false,
62
+ },
63
+ });
64
+
65
+ const stack = new TestStack(app, 'aws-stepfunctions-call-aws-service-cross-region-lambda-integ');
66
+
67
+ const integ = new IntegTest(app, 'IntegTest', {
68
+ testCases: [stack],
69
+ });
70
+
71
+ // Start the Step Functions execution
72
+ const res = integ.assertions.awsApiCall('StepFunctions', 'startExecution', {
73
+ stateMachineArn: stack.stateMachine.stateMachineArn,
74
+ });
75
+
76
+ const executionArn = res.getAttString('executionArn');
77
+
78
+ // Describe the execution to see the output
79
+ const describe = integ.assertions
80
+ .awsApiCall('StepFunctions', 'describeExecution', {
81
+ executionArn,
82
+ })
83
+ .expect(ExpectedResult.objectLike({
84
+ status: 'SUCCEEDED',
85
+ }))
86
+ .waitForAssertions({
87
+ totalTimeout: cdk.Duration.minutes(5),
88
+ interval: cdk.Duration.seconds(10),
89
+ });
90
+
91
+ // Verify that the output contains the expected Lambda response structure as JSON
92
+ // This ensures the response is properly serialized as JSON, not as byte array
93
+ describe.expect(ExpectedResult.objectLike({
94
+ output: Match.stringLikeRegexp('.*"statusCode":200.*"status":"success".*"message":"Hello from target Lambda".*'),
95
+ }));
96
+
97
+ app.synth();
@@ -1,124 +1,69 @@
1
- import * as databrew from 'aws-cdk-lib/aws-databrew';
1
+ import * as path from 'path';
2
+ import * as glue from 'aws-cdk-lib/aws-glue';
2
3
  import * as iam from 'aws-cdk-lib/aws-iam';
3
- import * as s3 from 'aws-cdk-lib/aws-s3';
4
+ import * as assets from 'aws-cdk-lib/aws-s3-assets';
4
5
  import * as sfn from 'aws-cdk-lib/aws-stepfunctions';
5
6
  import * as cdk from 'aws-cdk-lib';
6
- import { GlueDataBrewStartJobRun } from 'aws-cdk-lib/aws-stepfunctions-tasks';
7
+ import { GlueStartJobRun } from 'aws-cdk-lib/aws-stepfunctions-tasks';
8
+ import { IntegTest } from '@aws-cdk/integ-tests-alpha';
7
9
 
8
10
  /*
9
11
  * Stack verification steps:
10
- * * aws stepfunctions start-execution --state-machine-arn <deployed state machine arn> : should return execution arn
11
- * * aws stepfunctions describe-execution --execution-arn <exection-arn generated before> : should return status as SUCCEEDED
12
+ * * aws stepfunctions start-execution --state-machine-arn <deployed state machine arn>
13
+ * * aws stepfunctions describe-execution --execution-arn <execution arn created above>
14
+ * The "describe-execution" call should eventually return status "SUCCEEDED".
15
+ * NOTE: It will take up to 15 minutes for the step function to complete due to the cold start time
16
+ * for AWS Glue, which as of 02/2020, is around 10-15 minutes.
12
17
  */
13
18
 
14
- class GlueDataBrewJobStack extends cdk.Stack {
15
- constructor(scope: cdk.App, id: string, props: cdk.StackProps = {}) {
16
- super(scope, id, props);
17
-
18
- const region = this.region;
19
-
20
- const outputBucket = new s3.Bucket(this, 'JobOutputBucket', {
21
- removalPolicy: cdk.RemovalPolicy.DESTROY,
22
- });
23
-
24
- const role = new iam.Role(this, 'DataBrew Role', {
25
- managedPolicies: [{
26
- managedPolicyArn: 'arn:aws:iam::aws:policy/service-role/AWSGlueDataBrewServiceRole',
27
- }],
28
- path: '/',
29
- assumedBy: new iam.ServicePrincipal('databrew.amazonaws.com'),
30
- inlinePolicies: {
31
- DataBrewPolicy: iam.PolicyDocument.fromJson({
32
- Statement: [{
33
- Effect: 'Allow',
34
- Action: [
35
- 's3:GetObject',
36
- 's3:PutObject',
37
- 's3:DeleteObject',
38
- 's3:ListBucket',
39
- ],
40
- Resource: [
41
- `arn:aws:s3:::databrew-public-datasets-${region}/*`,
42
- `arn:aws:s3:::databrew-public-datasets-${region}`,
43
- `${outputBucket.bucketArn}/*`,
44
- `${outputBucket.bucketArn}`,
45
- ],
46
- }],
47
- }),
48
- },
49
- });
19
+ const app = new cdk.App();
20
+ const stack = new cdk.Stack(app, 'aws-stepfunctions-integ');
50
21
 
51
- const recipe = new databrew.CfnRecipe(this, 'DataBrew Recipe', {
52
- name: 'recipe-1',
53
- steps: [
54
- {
55
- action: {
56
- operation: 'UPPER_CASE',
57
- parameters: {
58
- sourceColumn: 'description',
59
- },
60
- },
61
- },
62
- {
63
- action: {
64
- operation: 'DELETE',
65
- parameters: {
66
- sourceColumn: 'doc_id',
67
- },
68
- },
69
- },
70
- ],
71
- });
22
+ const codeAsset = new assets.Asset(stack, 'Glue Job Script', {
23
+ path: path.join(__dirname, 'my-glue-script/job.py'),
24
+ });
72
25
 
73
- const dataset = new databrew.CfnDataset(this, 'DataBrew Dataset', {
74
- input: {
75
- s3InputDefinition: {
76
- bucket: `databrew-public-datasets-${region}`,
77
- key: 'votes.csv',
78
- },
79
- },
80
- name: 'dataset-1',
81
- });
26
+ const jobRole = new iam.Role(stack, 'Glue Job Role', {
27
+ assumedBy: new iam.ServicePrincipal('glue'),
28
+ managedPolicies: [
29
+ iam.ManagedPolicy.fromAwsManagedPolicyName('service-role/AWSGlueServiceRole'),
30
+ ],
31
+ });
32
+ codeAsset.grantRead(jobRole);
82
33
 
83
- const project = new databrew.CfnProject(this, 'DataBrew Project', {
84
- name: 'project-1',
85
- roleArn: role.roleArn,
86
- datasetName: dataset.name,
87
- recipeName: recipe.name,
88
- });
89
- project.addDependency(dataset);
90
- project.addDependency(recipe);
34
+ const job = new glue.CfnJob(stack, 'Glue Job', {
35
+ name: 'My Glue Job',
36
+ glueVersion: '1.0',
37
+ command: {
38
+ name: 'glueetl',
39
+ pythonVersion: '3',
40
+ scriptLocation: `s3://${codeAsset.s3BucketName}/${codeAsset.s3ObjectKey}`,
41
+ },
42
+ role: jobRole.roleArn,
43
+ });
91
44
 
92
- const job = new databrew.CfnJob(this, 'DataBrew Job', {
93
- name: 'job-1',
94
- type: 'RECIPE',
95
- projectName: project.name,
96
- roleArn: role.roleArn,
97
- outputs: [{
98
- location: {
99
- bucket: outputBucket.bucketName,
100
- },
101
- }],
102
- });
103
- job.addDependency(project);
45
+ const jobTask = new GlueStartJobRun(stack, 'Glue Job Task', {
46
+ glueJobName: job.name!,
47
+ integrationPattern: sfn.IntegrationPattern.RUN_JOB,
48
+ arguments: sfn.TaskInput.fromObject({
49
+ '--enable-metrics': 'true',
50
+ }),
51
+ });
104
52
 
105
- const startGlueDataBrewJob = new GlueDataBrewStartJobRun(this, 'Start DataBrew Job run', {
106
- name: job.name,
107
- });
53
+ const startTask = new sfn.Pass(stack, 'Start Task');
54
+ const endTask = new sfn.Pass(stack, 'End Task');
108
55
 
109
- const chain = sfn.Chain.start(startGlueDataBrewJob);
56
+ const stateMachine = new sfn.StateMachine(stack, 'State Machine', {
57
+ definition: sfn.Chain.start(startTask).next(jobTask).next(endTask),
58
+ });
110
59
 
111
- const sm = new sfn.StateMachine(this, 'StateMachine', {
112
- definition: chain,
113
- timeout: cdk.Duration.seconds(30),
114
- });
60
+ new cdk.CfnOutput(stack, 'State Machine ARN Output', {
61
+ value: stateMachine.stateMachineArn,
62
+ });
115
63
 
116
- new cdk.CfnOutput(this, 'stateMachineArn', {
117
- value: sm.stateMachineArn,
118
- });
119
- }
120
- }
64
+ new IntegTest(app, 'AwsSfnIntegTest', {
65
+ testCases: [stack],
66
+ diffAssets: true,
67
+ });
121
68
 
122
- const app = new cdk.App();
123
- new GlueDataBrewJobStack(app, 'aws-stepfunctions-tasks-databrew-start-job-run-integ');
124
69
  app.synth();