konokenj.cdk-api-mcp-server 0.58.0__py3-none-any.whl → 0.60.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.
@@ -1,4 +1,4 @@
1
1
  # SPDX-FileCopyrightText: 2025-present Kenji Kono <konoken@amazon.co.jp>
2
2
  #
3
3
  # SPDX-License-Identifier: MIT
4
- __version__ = "0.58.0"
4
+ __version__ = "0.60.0"
@@ -279,6 +279,10 @@ You can write Lambda functions to process data either from [Amazon MSK](https://
279
279
  * __maxBatchingWindow__: The maximum amount of time to gather records before invoking the lambda. This increases the likelihood of a full batch at the cost of possibly delaying processing.
280
280
  * __onFailure__: In the event a record fails and consumes all retries, the record will be sent to SQS queue or SNS topic that is specified here
281
281
  * __enabled__: If the Kafka event source mapping should be enabled. The default is true.
282
+ * __bisectBatchOnError__: If a batch encounters an error, this will cause the batch to be split in two and have each new smaller batch retried, allowing the records in error to be isolated. Available in provisioned mode only.
283
+ * __reportBatchItemFailures__: Allow functions to return partially successful responses for a batch of records. Available in provisioned mode only.
284
+ * __retryAttempts__: The maximum number of times a record should be retried in the event of failure. Available in provisioned mode only.
285
+ * __maxRecordAge__: The maximum age of a record that will be sent to the function for processing. Records that exceed the max age will be treated as failures. Available in provisioned mode only.
282
286
 
283
287
  The following code sets up Amazon MSK as an event source for a lambda function. Credentials will need to be configured to access the
284
288
  MSK cluster, as described in [Username/Password authentication](https://docs.aws.amazon.com/msk/latest/developerguide/msk-password.html).
@@ -294,7 +298,6 @@ const clusterArn = 'arn:aws:kafka:us-east-1:0123456789019:cluster/SalesCluster/a
294
298
  const topic = 'some-cool-topic';
295
299
 
296
300
  // The secret that allows access to your MSK cluster
297
- // You still have to make sure that it is associated with your cluster as described in the documentation
298
301
  const secret = new Secret(this, 'Secret', { secretName: 'AmazonMSK_KafkaSecret' });
299
302
 
300
303
  declare const myFunction: lambda.Function;
@@ -304,6 +307,14 @@ myFunction.addEventSource(new ManagedKafkaEventSource({
304
307
  secret: secret,
305
308
  batchSize: 100, // default
306
309
  startingPosition: lambda.StartingPosition.TRIM_HORIZON,
310
+ bisectBatchOnError: true,
311
+ reportBatchItemFailures: true,
312
+ retryAttempts: 3,
313
+ maxRecordAge: Duration.hours(24),
314
+ provisionedPollerConfig: {
315
+ minimumPollers: 1,
316
+ maximumPollers: 3,
317
+ },
307
318
  }));
308
319
  ```
309
320
 
@@ -334,6 +345,14 @@ myFunction.addEventSource(new SelfManagedKafkaEventSource({
334
345
  secret: secret,
335
346
  batchSize: 100, // default
336
347
  startingPosition: lambda.StartingPosition.TRIM_HORIZON,
348
+ bisectBatchOnError: true,
349
+ reportBatchItemFailures: true,
350
+ retryAttempts: 3,
351
+ maxRecordAge: Duration.hours(24),
352
+ provisionedPollerConfig: {
353
+ minimumPollers: 1,
354
+ maximumPollers: 3,
355
+ },
337
356
  }));
338
357
  ```
339
358
 
@@ -397,6 +416,64 @@ myFunction.addEventSource(new ManagedKafkaEventSource({
397
416
  }));
398
417
  ```
399
418
 
419
+ ### Failure Destinations
420
+
421
+ You can specify failure destinations for records that fail processing. Kafka event sources support Kafka Topic Destinations, S3 Bucket Destinations, SQS Queue and SNS topic:
422
+
423
+ #### Kafka Topic Destination
424
+
425
+ For Kafka event sources, you can send failed records to another Kafka topic using `KafkaDlq`:
426
+
427
+ ```ts
428
+ import { ManagedKafkaEventSource, KafkaDlq } from 'aws-cdk-lib/aws-lambda-event-sources';
429
+
430
+ // Your MSK cluster arn
431
+ const clusterArn = 'arn:aws:kafka:us-east-1:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4';
432
+
433
+ // The Kafka topic you want to subscribe to
434
+ const topic = 'some-cool-topic';
435
+
436
+ declare const myFunction: lambda.Function;
437
+
438
+ // Create a Kafka DLQ destination
439
+ const kafkaDlq = new KafkaDlq('failure-topic');
440
+
441
+ myFunction.addEventSource(new ManagedKafkaEventSource({
442
+ clusterArn,
443
+ topic,
444
+ startingPosition: lambda.StartingPosition.TRIM_HORIZON,
445
+ onFailure: kafkaDlq,
446
+ provisionedPollerConfig: {
447
+ minimumPollers: 1,
448
+ maximumPollers: 1,
449
+ },
450
+ }));
451
+ ```
452
+
453
+ The same approach works with self-managed Kafka:
454
+
455
+ ```ts
456
+ import { SelfManagedKafkaEventSource, KafkaDlq } from 'aws-cdk-lib/aws-lambda-event-sources';
457
+
458
+ const bootstrapServers = ['kafka-broker:9092'];
459
+ const topic = 'some-cool-topic';
460
+
461
+ declare const myFunction: lambda.Function;
462
+
463
+ myFunction.addEventSource(new SelfManagedKafkaEventSource({
464
+ bootstrapServers,
465
+ topic,
466
+ startingPosition: lambda.StartingPosition.TRIM_HORIZON,
467
+ onFailure: new KafkaDlq('error-topic'),
468
+ provisionedPollerConfig: {
469
+ minimumPollers: 1,
470
+ maximumPollers: 1,
471
+ },
472
+ }));
473
+ ```
474
+
475
+ #### S3 Bucket Destination
476
+
400
477
  You can also specify an S3 bucket as an "on failure" destination:
401
478
 
402
479
  ```ts
@@ -428,7 +505,7 @@ Set configuration for provisioned pollers that read from the event source.
428
505
  import { ManagedKafkaEventSource } from 'aws-cdk-lib/aws-lambda-event-sources';
429
506
 
430
507
  // Your MSK cluster arn
431
- declare const clusterArn: string
508
+ declare const clusterArn: string;
432
509
 
433
510
  // The Kafka topic you want to subscribe to
434
511
  const topic = 'some-cool-topic';
@@ -445,6 +522,28 @@ myFunction.addEventSource(new ManagedKafkaEventSource({
445
522
  }));
446
523
  ```
447
524
 
525
+ You can reduce costs by sharing provisioned pollers across multiple Kafka event sources using the `pollerGroupName` property. This is particularly useful when you have multiple Kafka topics that don't require dedicated polling capacity.
526
+
527
+ ```ts
528
+ import { ManagedKafkaEventSource } from 'aws-cdk-lib/aws-lambda-event-sources';
529
+
530
+ declare const clusterArn: string;
531
+ declare const ordersFunction: lambda.Function;
532
+
533
+ // Orders processing function
534
+ ordersFunction.addEventSource(new ManagedKafkaEventSource({
535
+ clusterArn,
536
+ topic: 'orders-topic',
537
+ startingPosition: lambda.StartingPosition.LATEST,
538
+ provisionedPollerConfig: {
539
+ minimumPollers: 2,
540
+ maximumPollers: 10,
541
+ pollerGroupName: 'shared-kafka-pollers',
542
+ },
543
+ }));
544
+
545
+ ```
546
+
448
547
  Set a confluent or self-managed schema registry to de-serialize events from the event source. Note, this will similarly work for `SelfManagedKafkaEventSource` but the example only shows setup for `ManagedKafkaEventSource`.
449
548
 
450
549
  ```ts
@@ -0,0 +1,92 @@
1
+ import * as lambda from 'aws-cdk-lib/aws-lambda';
2
+ import * as secretsmanager from 'aws-cdk-lib/aws-secretsmanager';
3
+ import * as cdk from 'aws-cdk-lib';
4
+ import * as integ from '@aws-cdk/integ-tests-alpha';
5
+ import { TestFunction } from './test-function';
6
+ import {
7
+ AuthenticationMethod,
8
+ SelfManagedKafkaEventSource,
9
+ KafkaDlq,
10
+ } from 'aws-cdk-lib/aws-lambda-event-sources';
11
+
12
+ /**
13
+ * Integration test stack for SelfManagedKafka with KafkaDlq destination
14
+ */
15
+ class SelfManagedKafkaWithKafkaDlqStack extends cdk.Stack {
16
+ constructor(scope: cdk.App, id: string) {
17
+ super(scope, id);
18
+
19
+ const dummyCertString = `-----BEGIN CERTIFICATE-----
20
+ MIIE5DCCAsygAwIBAgIRAPJdwaFaNRrytHBto0j5BA0wDQYJKoZIhvcNAQELBQAw
21
+ cmUuaAii9R0=
22
+ -----END CERTIFICATE-----
23
+ -----BEGIN CERTIFICATE-----
24
+ MIIFgjCCA2qgAwIBAgIQdjNZd6uFf9hbNC5RdfmHrzANBgkqhkiG9w0BAQsFADBb
25
+ c8PH3PSoAaRwMMgOSA2ALJvbRz8mpg==
26
+ -----END CERTIFICATE-----`;
27
+
28
+ const dummyPrivateKey = `-----BEGIN ENCRYPTED PRIVATE KEY-----
29
+ zp2mwJn2NYB7AZ7+imp0azDZb+8YG2aUCiyqb6PnnA==
30
+ -----END ENCRYPTED PRIVATE KEY-----`;
31
+
32
+ const fn = new TestFunction(this, 'SelfManagedKafkaFunction');
33
+
34
+ const rootCASecret = new secretsmanager.Secret(this, 'RootCASecret', {
35
+ secretObjectValue: {
36
+ certificate: cdk.SecretValue.unsafePlainText(dummyCertString),
37
+ },
38
+ });
39
+
40
+ const clientCertificatesSecret = new secretsmanager.Secret(this, 'ClientCertSecret', {
41
+ secretObjectValue: {
42
+ certificate: cdk.SecretValue.unsafePlainText(dummyCertString),
43
+ privateKey: cdk.SecretValue.unsafePlainText(dummyPrivateKey),
44
+ },
45
+ });
46
+
47
+ rootCASecret.grantRead(fn);
48
+ clientCertificatesSecret.grantRead(fn);
49
+
50
+ const bootstrapServers = [
51
+ 'self-managed-kafka-broker-1:9092',
52
+ 'self-managed-kafka-broker-2:9092',
53
+ 'self-managed-kafka-broker-3:9092',
54
+ ];
55
+
56
+ // Create KafkaDlq destination
57
+ const kafkaDlq = new KafkaDlq('self-managed-kafka-failure-topic');
58
+
59
+ // Add SelfManagedKafka event source with KafkaDlq destination
60
+ fn.addEventSource(new SelfManagedKafkaEventSource({
61
+ bootstrapServers,
62
+ topic: 'self-managed-test-topic',
63
+ consumerGroupId: 'self-managed-test-consumer-group',
64
+ secret: clientCertificatesSecret,
65
+ authenticationMethod: AuthenticationMethod.CLIENT_CERTIFICATE_TLS_AUTH,
66
+ rootCACertificate: rootCASecret,
67
+ startingPosition: lambda.StartingPosition.TRIM_HORIZON,
68
+ onFailure: kafkaDlq,
69
+ provisionedPollerConfig: {
70
+ minimumPollers: 1,
71
+ maximumPollers: 1,
72
+ },
73
+ }));
74
+ }
75
+ }
76
+
77
+ const app = new cdk.App({
78
+ postCliContext: {
79
+ '@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
80
+ },
81
+ });
82
+
83
+ const selfManagedKafkaStack = new SelfManagedKafkaWithKafkaDlqStack(
84
+ app,
85
+ 'lambda-event-source-self-managed-kafka-dlq',
86
+ );
87
+
88
+ new integ.IntegTest(app, 'LambdaEventSourceKafkaDlqTest', {
89
+ testCases: [selfManagedKafkaStack],
90
+ });
91
+
92
+ app.synth();
@@ -0,0 +1,78 @@
1
+ import * as lambda from 'aws-cdk-lib/aws-lambda';
2
+ import * as secretsmanager from 'aws-cdk-lib/aws-secretsmanager';
3
+ import * as cdk from 'aws-cdk-lib';
4
+ import * as integ from '@aws-cdk/integ-tests-alpha';
5
+ import { TestFunction } from './test-function';
6
+ import { AuthenticationMethod, SelfManagedKafkaEventSource } from 'aws-cdk-lib/aws-lambda-event-sources';
7
+
8
+ class KafkaPollerGroupNameTest extends cdk.Stack {
9
+ constructor(scope: cdk.App, id: string) {
10
+ super(scope, id);
11
+
12
+ const dummyCertString = `-----BEGIN CERTIFICATE-----
13
+ MIIE5DCCAsygAwIBAgIRAPJdwaFaNRrytHBto0j5BA0wDQYJKoZIhvcNAQELBQAw
14
+ cmUuaAii9R0=
15
+ -----END CERTIFICATE-----
16
+ -----BEGIN CERTIFICATE-----
17
+ MIIFgjCCA2qgAwIBAgIQdjNZd6uFf9hbNC5RdfmHrzANBgkqhkiG9w0BAQsFADBb
18
+ c8PH3PSoAaRwMMgOSA2ALJvbRz8mpg==
19
+ -----END CERTIFICATE-----"
20
+ `;
21
+
22
+ const dummyPrivateKey = `-----BEGIN ENCRYPTED PRIVATE KEY-----
23
+ zp2mwJn2NYB7AZ7+imp0azDZb+8YG2aUCiyqb6PnnA==
24
+ -----END ENCRYPTED PRIVATE KEY-----`;
25
+
26
+ const fn1 = new TestFunction(this, 'SelfManagedFunction');
27
+ const rootCASecret = new secretsmanager.Secret(this, 'RootCASecret', {
28
+ secretObjectValue: {
29
+ certificate: cdk.SecretValue.unsafePlainText(dummyCertString),
30
+ },
31
+ });
32
+ const clientCertificatesSecret = new secretsmanager.Secret(this, 'ClientCertSecret', {
33
+ secretObjectValue: {
34
+ certificate: cdk.SecretValue.unsafePlainText(dummyCertString),
35
+ privateKey: cdk.SecretValue.unsafePlainText(dummyPrivateKey),
36
+ },
37
+ });
38
+ rootCASecret.grantRead(fn1);
39
+ clientCertificatesSecret.grantRead(fn1);
40
+
41
+ const bootstrapServers = [
42
+ 'my-self-hosted-kafka-broker-1:9092',
43
+ 'my-self-hosted-kafka-broker-2:9092',
44
+ 'my-self-hosted-kafka-broker-3:9092',
45
+ ];
46
+
47
+ fn1.addEventSource(
48
+ new SelfManagedKafkaEventSource({
49
+ bootstrapServers,
50
+ topic: 'my-test-topic-with-poller-group',
51
+ consumerGroupId: 'myTestConsumerGroupWithPollerGroup',
52
+ secret: clientCertificatesSecret,
53
+ authenticationMethod: AuthenticationMethod.CLIENT_CERTIFICATE_TLS_AUTH,
54
+ rootCACertificate: rootCASecret,
55
+ startingPosition: lambda.StartingPosition.TRIM_HORIZON,
56
+ provisionedPollerConfig: {
57
+ minimumPollers: 1,
58
+ maximumPollers: 3,
59
+ pollerGroupName: 'test-poller-group-self-managed',
60
+ },
61
+ }),
62
+ );
63
+ }
64
+ }
65
+
66
+ const app = new cdk.App({
67
+ postCliContext: {
68
+ '@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
69
+ },
70
+ });
71
+ const stack = new KafkaPollerGroupNameTest(
72
+ app,
73
+ 'lambda-event-source-kafka-poller-group-name',
74
+ );
75
+ new integ.IntegTest(app, 'LambdaEventSourceKafkaPollerGroupNameTest', {
76
+ testCases: [stack],
77
+ });
78
+ app.synth();
@@ -0,0 +1,83 @@
1
+ import * as lambda from 'aws-cdk-lib/aws-lambda';
2
+ import * as secretsmanager from 'aws-cdk-lib/aws-secretsmanager';
3
+ import * as cdk from 'aws-cdk-lib';
4
+ import * as integ from '@aws-cdk/integ-tests-alpha';
5
+ import { TestFunction } from './test-function';
6
+ import { AuthenticationMethod, SelfManagedKafkaEventSource } from 'aws-cdk-lib/aws-lambda-event-sources';
7
+
8
+ class KafkaSelfManagedErrorHandlingTest extends cdk.Stack {
9
+ constructor(scope: cdk.App, id: string) {
10
+ super(scope, id);
11
+
12
+ const dummyCertString = `-----BEGIN CERTIFICATE-----
13
+ MIIE5DCCAsygAwIBAgIRAPJdwaFaNRrytHBto0j5BA0wDQYJKoZIhvcNAQELBQAw
14
+ cmUuiAii9R0=
15
+ -----END CERTIFICATE-----
16
+ -----BEGIN CERTIFICATE-----
17
+ MIIFgjCCA2qgAwIBAgIQdjNZd6uFf9hbNC5RdfmHrzANBgkqhkiG9w0BAQsFADBb
18
+ c8PH3PSoAaRwMMgOSA2ALJvbRz8mpg==
19
+ -----END CERTIFICATE-----"
20
+ `;
21
+
22
+ const dummyPrivateKey = `-----BEGIN ENCRYPTED PRIVATE KEY-----
23
+ zp2mwJn2NYB7AZ7+imp0azDZb+8YG2aUCiyqb6PnnA==
24
+ -----END ENCRYPTED PRIVATE KEY-----`;
25
+
26
+ const rootCASecret = new secretsmanager.Secret(this, 'RootCASecret', {
27
+ secretObjectValue: {
28
+ certificate: cdk.SecretValue.unsafePlainText(dummyCertString),
29
+ },
30
+ });
31
+
32
+ const clientCertificatesSecret = new secretsmanager.Secret(this, 'ClientCertSecret', {
33
+ secretObjectValue: {
34
+ certificate: cdk.SecretValue.unsafePlainText(dummyCertString),
35
+ privateKey: cdk.SecretValue.unsafePlainText(dummyPrivateKey),
36
+ },
37
+ });
38
+
39
+ const bootstrapServers = [
40
+ 'my-self-hosted-kafka-broker-1:9092',
41
+ 'my-self-hosted-kafka-broker-2:9092',
42
+ 'my-self-hosted-kafka-broker-3:9092',
43
+ ];
44
+
45
+ // Test with function response type and retry configuration
46
+ const fn = new TestFunction(this, 'ErrorHandlingFunction');
47
+ rootCASecret.grantRead(fn);
48
+ clientCertificatesSecret.grantRead(fn);
49
+
50
+ fn.addEventSource(new SelfManagedKafkaEventSource({
51
+ bootstrapServers,
52
+ topic: 'error-handling-topic',
53
+ consumerGroupId: 'errorHandlingConsumerGroup',
54
+ secret: clientCertificatesSecret,
55
+ authenticationMethod: AuthenticationMethod.CLIENT_CERTIFICATE_TLS_AUTH,
56
+ rootCACertificate: rootCASecret,
57
+ startingPosition: lambda.StartingPosition.TRIM_HORIZON,
58
+ retryAttempts: 3,
59
+ maxBatchingWindow: cdk.Duration.seconds(10),
60
+ batchSize: 50,
61
+ maxRecordAge: cdk.Duration.hours(24),
62
+ reportBatchItemFailures: true,
63
+ provisionedPollerConfig: {
64
+ minimumPollers: 1,
65
+ maximumPollers: 1,
66
+ },
67
+ }));
68
+ }
69
+ }
70
+
71
+ const app = new cdk.App({
72
+ postCliContext: {
73
+ '@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
74
+ },
75
+ });
76
+ const stack = new KafkaSelfManagedErrorHandlingTest(
77
+ app,
78
+ 'lambda-event-source-kafka-error-handling',
79
+ );
80
+ new integ.IntegTest(app, 'LambdaEventSourceKafkaErrorHandlingTest', {
81
+ testCases: [stack],
82
+ });
83
+ app.synth();
@@ -39,10 +39,12 @@ const stateMachine = new sfn.StateMachine(stack, 'StateMachine', {
39
39
  jsonPathPass // 1 -> 2
40
40
  .next(jsonataPass) // 2 -> 3
41
41
  .next(choice
42
- .when(sfn.Condition.jsonata('{% $states.input.count % 2 = 1 %}'),
43
- wait // 3 -> 4
44
- .next(succeed),
45
- increment, // 4 -> 5
42
+ .when(sfn.Condition.jsonata(`{%
43
+ $states.input.count % 2 = 1
44
+ %}`),
45
+ wait // 3 -> 4
46
+ .next(succeed),
47
+ increment, // 4 -> 5
46
48
  )
47
49
  .otherwise(succeed), // 5 -> 6
48
50
  ),
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: konokenj.cdk-api-mcp-server
3
- Version: 0.58.0
3
+ Version: 0.60.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.227.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.229.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
  ---
@@ -1,4 +1,4 @@
1
- cdk_api_mcp_server/__about__.py,sha256=eUNb59SBVIRhBraEuu53qorrrMclnsSMuyCTRYnNwis,129
1
+ cdk_api_mcp_server/__about__.py,sha256=qJgWfWRLAHoroEG77CLQ2oAiZTOb4aM-sDJpKVMHlTk,129
2
2
  cdk_api_mcp_server/__init__.py,sha256=yJA6yIEhJviC-qNlB-nC6UR1JblQci_d84i-viHZkc0,187
3
3
  cdk_api_mcp_server/models.py,sha256=cMS1Hi29M41YjuBxqqrzNrNvyG3MgnUBb1SqYpMCJ30,692
4
4
  cdk_api_mcp_server/resources.py,sha256=R7LVwn29I4BJzU5XAwKbX8j6uy-3ZxcB1b0HzZ_Z2PI,6689
@@ -939,12 +939,15 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.vpc
939
939
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-destinations/README.md,sha256=_6ZqM3kbkZCmN-9BtU3FbERs82Shv4D2QiWuq47T_VI,5453
940
940
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-destinations/integ.destinations.ts,sha256=bCxe7DTOSIRyxe2iStWRdl0_J-tQZ8n-715uo9gMHvE,4187
941
941
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-destinations/integ.lambda-chain.ts,sha256=vqRxTBuBaAZqeN1AQ4l0Z9b4dsOVTkYMXKIlil_yyCg,3381
942
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/README.md,sha256=-hknVrQdnowd5D4HNWKqt4fxY5ahza0V6c7tmLJwTsI,23869
942
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/README.md,sha256=AC1foN2OcEPMPuLsIxecdDJgY_fG1p9aZmazw4_FRvI,27199
943
943
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.dynamodb-with-boolean-filter.ts,sha256=bGvfF5RgMbK9W2DO0HsKVoAK5KV5a0kLKYZKeOOFcx0,1217
944
944
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.dynamodb-with-filter-criteria.ts,sha256=7RrxbpLll7YIY-sNFp4reML6mA5ptC05K6DRmww32rY,1897
945
945
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.dynamodb-with-metrics-config.ts,sha256=_HEgmdb8iDBNWqDWo8RJHbbRtacdPp4V8LkS2U3DkI8,1286
946
946
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.dynamodb.ts,sha256=5Qas_PPDvTb8sHl3AiNnv-k7XaazG5nDNVNbmJ6Wwfo,1205
947
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.kafka-dlq.ts,sha256=PSv9cxqyEMq2Sa6WxhaD2Qq_OrBpZR07ePjG8sYmTrM,2897
948
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.kafka-poller-group-name.ts,sha256=_skHFN8P5MSzdgGF9pGQU1MOBPsz9rlr_pt7MMkHfTs,2670
947
949
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.kafka-schema-registry.ts,sha256=mN1-eMpDDvEjqRqFB3WwDMAWtr1JhFt61ndeYMw3XlI,6640
950
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.kafka-selfmanaged-error-handling.ts,sha256=nO4Q2SJx2JQdPlLE93icXYWfTp6NphKUzjuadZsZBXg,2807
948
951
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.kafka-selfmanaged.ts,sha256=B85zVhxNs9IVcWHnxlYi9knhEPwfxKHmCpXigjk0xJs,4805
949
952
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.kinesis-at-timestamp.ts,sha256=coNqlm5wKzy4jViKmzto6umHXcKzqVQFoosqgO_kaEI,832
950
953
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.kinesis-stream-consumer.ts,sha256=-wWHWes3tTpArZIzVKBPS-MFyQc5ZHJjMzG_2BnGAZ0,1199
@@ -1292,7 +1295,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/in
1292
1295
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/integ.state-machine-cmk-with-cwl-encryption.ts,sha256=C_i-uCFHEbHN250pKHrYCxVEkWtplnn1QXoceNVzpsQ,2839
1293
1296
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/integ.state-machine-credentials.ts,sha256=MXRGlYvodgYQuE4A4lcf1WfvNGRcHWpB8VZLADlQusk,1552
1294
1297
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/integ.state-machine-disable-xray.ts,sha256=1XSpdVEobuV-cQ5GhtCy9HRvVCaEukZFABu9hSH58So,473
1295
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/integ.state-machine-jsonata.ts,sha256=_gyNBqsBMsmmTsdmF26M5xMlzGtuEGbFkGGzev8oY24,1848
1298
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/integ.state-machine-jsonata.ts,sha256=aH0m0zYrRxwzdVp08DXyk-EoQp88bTXTwdIc1waHSls,1860
1296
1299
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/integ.state-machine-logging.ts,sha256=md0pY4Gd9OXvAq28Sc4opzyWJB3_7JijeLlvtEMlnJE,1172
1297
1300
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/integ.state-machine-string.ts,sha256=SyMS-NCYiG438NnMDgT6NyGzGBYb3IWNPex6FEhr28I,652
1298
1301
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/integ.state-machine-variables.ts,sha256=pwYfPpS-BYl-rj8raj4e2MDFLhxneEqXRZa1XyoK86g,1592
@@ -1462,8 +1465,8 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.pipe
1462
1465
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/region-info/README.md,sha256=vewWkV3ds9o9iyyYaJBNTkaKJ2XA6K2yF17tAxUnujg,2718
1463
1466
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/triggers/README.md,sha256=hYIx7DbG_7p4LYLUfxDwgIQjw9UNdz1GLrqDe8_Dbko,4132
1464
1467
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/triggers/integ.triggers.ts,sha256=LfeVru_CggiFXKPVa8vwt6Uv43SV3oAioDGmd8PyMHc,2859
1465
- konokenj_cdk_api_mcp_server-0.58.0.dist-info/METADATA,sha256=_XvQ3RCHrfXhQxhvR0CpSLqMkmlnl0TaBPydX3khORM,2646
1466
- konokenj_cdk_api_mcp_server-0.58.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
1467
- konokenj_cdk_api_mcp_server-0.58.0.dist-info/entry_points.txt,sha256=bVDhMdyCC1WNMPOMbmB82jvWII2CIrwTZDygdCf0cYQ,79
1468
- konokenj_cdk_api_mcp_server-0.58.0.dist-info/licenses/LICENSE.txt,sha256=5OIAASeg1HM22mVZ1enz9bgZ7TlsGfWXnj02P9OgFyk,1098
1469
- konokenj_cdk_api_mcp_server-0.58.0.dist-info/RECORD,,
1468
+ konokenj_cdk_api_mcp_server-0.60.0.dist-info/METADATA,sha256=76tCTaQpibDQgKHPDcm89DLmh7ygWIKJ5wx1XxQ7F4M,2646
1469
+ konokenj_cdk_api_mcp_server-0.60.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
1470
+ konokenj_cdk_api_mcp_server-0.60.0.dist-info/entry_points.txt,sha256=bVDhMdyCC1WNMPOMbmB82jvWII2CIrwTZDygdCf0cYQ,79
1471
+ konokenj_cdk_api_mcp_server-0.60.0.dist-info/licenses/LICENSE.txt,sha256=5OIAASeg1HM22mVZ1enz9bgZ7TlsGfWXnj02P9OgFyk,1098
1472
+ konokenj_cdk_api_mcp_server-0.60.0.dist-info/RECORD,,