konokenj.cdk-api-mcp-server 0.29.0__py3-none-any.whl → 0.30.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.

Potentially problematic release.


This version of konokenj.cdk-api-mcp-server might be problematic. Click here for more details.

Files changed (31) hide show
  1. cdk_api_mcp_server/__about__.py +1 -1
  2. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.api-dualstack.ts +4 -3
  3. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.api.ts +4 -2
  4. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.stage.ts +20 -7
  5. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-authorizers/integ.iam.ts +38 -34
  6. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.sqs.ts +71 -58
  7. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-backup/README.md +2 -0
  8. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-backup/integ.backup.ts +12 -1
  9. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/README.md +32 -0
  10. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/integ.alarm-and-dashboard.ts +1 -0
  11. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/integ.math-alarm-and-dashboard.ts +4 -0
  12. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codedeploy/integ.deployment-config.ts +4 -15
  13. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codedeploy/integ.deployment-group.ts +218 -40
  14. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codepipeline-actions/integ.pipeline-elastic-beanstalk-deploy.ts +1 -1
  15. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/README.md +13 -0
  16. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/integ.client-vpn-endpoint-client-route-enforcement.ts +68 -0
  17. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.helm-chart-logging.ts +55 -0
  18. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/README.md +15 -0
  19. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.log-retention.ts +8 -2
  20. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/README.md +23 -13
  21. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-snapshot.ts +3 -71
  22. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.instance-engine-lifecycle-support.ts +53 -0
  23. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-notifications/integ.bucket-notifications.ts +42 -80
  24. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.call-aws-service-cross-region-lambda.ts +97 -0
  25. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.start-job-run.ts +51 -106
  26. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/FEATURE_FLAGS.md +2 -2
  27. {konokenj_cdk_api_mcp_server-0.29.0.dist-info → konokenj_cdk_api_mcp_server-0.30.0.dist-info}/METADATA +2 -2
  28. {konokenj_cdk_api_mcp_server-0.29.0.dist-info → konokenj_cdk_api_mcp_server-0.30.0.dist-info}/RECORD +31 -27
  29. {konokenj_cdk_api_mcp_server-0.29.0.dist-info → konokenj_cdk_api_mcp_server-0.30.0.dist-info}/WHEEL +0 -0
  30. {konokenj_cdk_api_mcp_server-0.29.0.dist-info → konokenj_cdk_api_mcp_server-0.30.0.dist-info}/entry_points.txt +0 -0
  31. {konokenj_cdk_api_mcp_server-0.29.0.dist-info → konokenj_cdk_api_mcp_server-0.30.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();
@@ -103,7 +103,7 @@ Flags come in three types:
103
103
  | [@aws-cdk/s3-notifications:addS3TrustKeyPolicyForSnsSubscriptions](#aws-cdks3-notificationsadds3trustkeypolicyforsnssubscriptions) | Add an S3 trust policy to a KMS key resource policy for SNS subscriptions. | 2.195.0 | fix |
104
104
  | [@aws-cdk/aws-ec2:requirePrivateSubnetsForEgressOnlyInternetGateway](#aws-cdkaws-ec2requireprivatesubnetsforegressonlyinternetgateway) | When enabled, the EgressOnlyGateway resource is only created if private subnets are defined in the dual-stack VPC. | 2.196.0 | fix |
105
105
  | [@aws-cdk/aws-s3:publicAccessBlockedByDefault](#aws-cdkaws-s3publicaccessblockedbydefault) | When enabled, setting any combination of options for BlockPublicAccess will automatically set true for any options not defined. | 2.196.0 | fix |
106
- | [@aws-cdk/aws-kms:applyImportedAliasPermissionsToPrincipal](#aws-cdkaws-kmsapplyimportedaliaspermissionstoprincipal) | Enable grant methods on Aliases imported by name to use kms:ResourceAliases condition | V2NEXT | fix |
106
+ | [@aws-cdk/aws-kms:applyImportedAliasPermissionsToPrincipal](#aws-cdkaws-kmsapplyimportedaliaspermissionstoprincipal) | Enable grant methods on Aliases imported by name to use kms:ResourceAliases condition | 2.202.0 | fix |
107
107
 
108
108
  <!-- END table -->
109
109
 
@@ -2191,7 +2191,7 @@ When disabled, grant calls on imported aliases will be dropped (no-op) to mainta
2191
2191
  | Since | Default | Recommended |
2192
2192
  | ----- | ----- | ----- |
2193
2193
  | (not in v1) | | |
2194
- | V2NEXT | `false` | `true` |
2194
+ | 2.202.0 | `false` | `true` |
2195
2195
 
2196
2196
  **Compatibility with old behavior:** Remove calls to the grant* methods on the aliases referenced by name
2197
2197
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: konokenj.cdk-api-mcp-server
3
- Version: 0.29.0
3
+ Version: 0.30.0
4
4
  Summary: An MCP server provides AWS CDK API Reference
5
5
  Project-URL: Documentation, https://github.com/konokenj/cdk-api-mcp-server#readme
6
6
  Project-URL: Issues, https://github.com/konokenj/cdk-api-mcp-server/issues
@@ -26,7 +26,7 @@ Description-Content-Type: text/markdown
26
26
  [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/konokenj.cdk-api-mcp-server.svg)](https://pypi.org/project/konokenj.cdk-api-mcp-server)
27
27
 
28
28
  <!-- DEP-VERSIONS-START -->
29
- [![aws-cdk](https://img.shields.io/badge/aws%20cdk-v2.201.0-blue.svg)](https://github.com/konokenj/cdk-api-mcp-server/blob/main/current-versions/aws-cdk.txt)
29
+ [![aws-cdk](https://img.shields.io/badge/aws%20cdk-v2.202.0-blue.svg)](https://github.com/konokenj/cdk-api-mcp-server/blob/main/current-versions/aws-cdk.txt)
30
30
  <!-- DEP-VERSIONS-END -->
31
31
 
32
32
  ---