konokenj.cdk-api-mcp-server 0.68.0__py3-none-any.whl → 0.70.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 (26) hide show
  1. cdk_api_mcp_server/__about__.py +1 -1
  2. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-iot-actions-alpha/README.md +20 -0
  3. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/mixins-preview/README.md +4 -3
  4. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/README.md +52 -0
  5. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.eventbridge.ts +48 -0
  6. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecr-assets/README.md +23 -0
  7. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/README.md +111 -0
  8. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.canary-deployment-strategy.ts +117 -0
  9. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.linear-deployment-strategy.ts +117 -0
  10. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.none-log-driver.ts +23 -0
  11. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-events/README.md +6 -1
  12. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/README.md +1 -1
  13. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/README.md +13 -0
  14. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.loggroup-deletionprotection.ts +14 -0
  15. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/README.md +33 -1
  16. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/README.md +65 -0
  17. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-volume-iops-metric.ts +47 -0
  18. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.instance-iops-metric.ts +36 -0
  19. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.proxy-default-auth-scheme.ts +37 -0
  20. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/README.md +13 -0
  21. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/integ.map-jsonata-maxconcurrency.ts +34 -0
  22. {konokenj_cdk_api_mcp_server-0.68.0.dist-info → konokenj_cdk_api_mcp_server-0.70.0.dist-info}/METADATA +2 -2
  23. {konokenj_cdk_api_mcp_server-0.68.0.dist-info → konokenj_cdk_api_mcp_server-0.70.0.dist-info}/RECORD +26 -17
  24. {konokenj_cdk_api_mcp_server-0.68.0.dist-info → konokenj_cdk_api_mcp_server-0.70.0.dist-info}/WHEEL +0 -0
  25. {konokenj_cdk_api_mcp_server-0.68.0.dist-info → konokenj_cdk_api_mcp_server-0.70.0.dist-info}/entry_points.txt +0 -0
  26. {konokenj_cdk_api_mcp_server-0.68.0.dist-info → konokenj_cdk_api_mcp_server-0.70.0.dist-info}/licenses/LICENSE.txt +0 -0
@@ -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.68.0"
4
+ __version__ = "0.70.0"
@@ -371,6 +371,26 @@ topicRule.addAction(
371
371
  );
372
372
  ```
373
373
 
374
+ You can enable batching to reduce costs and improve efficiency:
375
+
376
+ ```ts
377
+ import { Size } from 'aws-cdk-lib';
378
+
379
+ declare const topicRule: iot.TopicRule;
380
+
381
+ topicRule.addAction(
382
+ new actions.HttpsAction('https://example.com/endpoint', {
383
+ batchConfig: {
384
+ maxBatchOpenDuration: Duration.millis(100),
385
+ maxBatchSize: 5,
386
+ maxBatchSizeBytes: Size.kibibytes(1),
387
+ },
388
+ }),
389
+ );
390
+ ```
391
+
392
+ For more information about the batching configuration, see the [AWS IoT Core documentation](https://docs.aws.amazon.com/iot/latest/developerguide/http_batching.html).
393
+
374
394
  ## Write Data to Open Search Service
375
395
 
376
396
  The code snippet below creates an AWS IoT Rule that writes data
@@ -236,7 +236,7 @@ declare const fn: lambda.Function;
236
236
 
237
237
  new events.Rule(scope, 'Rule', {
238
238
  eventPattern: bucketEvents.objectCreatedPattern({
239
- object: { key: ['uploads/*'] }
239
+ object: { key: events.Match.wildcard('uploads/*') },
240
240
  }),
241
241
  targets: [new targets.LambdaFunction(fn)]
242
242
  });
@@ -248,7 +248,7 @@ const cfnBucketEvents = BucketEvents.fromBucket(cfnBucket);
248
248
  new events.CfnRule(scope, 'CfnRule', {
249
249
  state: 'ENABLED',
250
250
  eventPattern: cfnBucketEvents.objectCreatedPattern({
251
- object: { key: ['uploads/*'] }
251
+ object: { key: events.Match.wildcard('uploads/*') },
252
252
  }),
253
253
  targets: [{ arn: fn.functionArn, id: 'L1' }]
254
254
  });
@@ -273,13 +273,14 @@ const pattern = bucketEvents.objectCreatedPattern();
273
273
 
274
274
  ```typescript
275
275
  import { BucketEvents } from '@aws-cdk/mixins-preview/aws-s3/events';
276
+ import * as events from 'aws-cdk-lib/aws-events';
276
277
 
277
278
  declare const bucket: s3.Bucket;
278
279
  const bucketEvents = BucketEvents.fromBucket(bucket);
279
280
 
280
281
  const pattern = bucketEvents.objectCreatedPattern({
281
282
  eventMetadata: {
282
- region: ['us-east-1', 'us-west-2'],
283
+ region: events.Match.prefix('us-'),
283
284
  version: ['0']
284
285
  }
285
286
  });
@@ -7,6 +7,7 @@
7
7
  - [HTTP Proxy Integration](#http-proxy)
8
8
  - [StepFunctions Integration](#stepfunctions-integration)
9
9
  - [SQS Integration](#sqs-integration)
10
+ - [EventBridge Integration](#eventbridge-integration)
10
11
  - [Private Integration](#private-integration)
11
12
  - [Request Parameters](#request-parameters)
12
13
  - [WebSocket APIs](#websocket-apis)
@@ -249,6 +250,57 @@ new apigwv2.ParameterMapping()
249
250
  .custom('QueueUrl', queue.queueUrl);
250
251
  ```
251
252
 
253
+ ### EventBridge Integration
254
+
255
+ EventBridge integrations enable integrating an HTTP API route with Amazon EventBridge using the PutEvents API.
256
+ This allows the HTTP API to forward requests as events to an EventBridge event bus.
257
+
258
+ The following code configures EventBridge integrations:
259
+
260
+ ```ts
261
+ import * as events from 'aws-cdk-lib/aws-events';
262
+ import { HttpEventBridgeIntegration } from 'aws-cdk-lib/aws-apigatewayv2-integrations';
263
+
264
+ declare const bus: events.IEventBus;
265
+ declare const httpApi: apigwv2.HttpApi;
266
+
267
+ // default integration (PutEvents)
268
+ httpApi.addRoutes({
269
+ path: '/default',
270
+ methods: [apigwv2.HttpMethod.POST],
271
+ integration: new HttpEventBridgeIntegration('DefaultEventBridgeIntegration', {
272
+ eventBusRef: bus.eventBusRef,
273
+ }),
274
+ });
275
+
276
+ // explicit subtype
277
+ httpApi.addRoutes({
278
+ path: '/put-events',
279
+ methods: [apigwv2.HttpMethod.POST],
280
+ integration: new HttpEventBridgeIntegration('ExplicitSubtypeIntegration', {
281
+ eventBusRef: bus.eventBusRef,
282
+ subtype: apigwv2.HttpIntegrationSubtype.EVENTBRIDGE_PUT_EVENTS,
283
+ }),
284
+ });
285
+ ```
286
+
287
+ #### EventBridge integration parameter mappings
288
+
289
+ You can configure the custom parameter mappings of the EventBridge integration using the `parameterMapping` property of the `HttpEventBridgeIntegration` object.
290
+
291
+ By default, the integration expects the request body to contain `Detail`, `DetailType`, and `Source` fields.
292
+
293
+ ```ts
294
+ import * as events from 'aws-cdk-lib/aws-events';
295
+ declare const bus: events.IEventBus;
296
+
297
+ new apigwv2.ParameterMapping()
298
+ // The following fields are required for the EventBridge PutEvents integration
299
+ .custom('Detail', '$request.body.Detail')
300
+ .custom('DetailType', '$request.body.DetailType')
301
+ .custom('Source', '$request.body.Source');
302
+ ```
303
+
252
304
  ### Private Integration
253
305
 
254
306
  Private integrations enable integrating an HTTP API route with private resources in a VPC, such as Application Load Balancers or
@@ -0,0 +1,48 @@
1
+ import * as apigwv2 from 'aws-cdk-lib/aws-apigatewayv2';
2
+ import * as events from 'aws-cdk-lib/aws-events';
3
+ import { App, Stack } from 'aws-cdk-lib';
4
+ import { HttpEventBridgeIntegration } from 'aws-cdk-lib/aws-apigatewayv2-integrations';
5
+ import * as integ from '@aws-cdk/integ-tests-alpha';
6
+
7
+ const app = new App();
8
+ const stack = new Stack(app, 'eventbridge-integration');
9
+
10
+ const bus = new events.EventBus(stack, 'Bus');
11
+
12
+ const httpApi = new apigwv2.HttpApi(stack, 'Api');
13
+ httpApi.addRoutes({
14
+ path: '/default',
15
+ methods: [apigwv2.HttpMethod.POST],
16
+ integration: new HttpEventBridgeIntegration('defaultIntegration', {
17
+ eventBusRef: bus.eventBusRef,
18
+ }),
19
+ });
20
+
21
+ httpApi.addRoutes({
22
+ path: '/put-events',
23
+ methods: [apigwv2.HttpMethod.POST],
24
+ integration: new HttpEventBridgeIntegration('putEventsIntegration', {
25
+ eventBusRef: bus.eventBusRef,
26
+ subtype: apigwv2.HttpIntegrationSubtype.EVENTBRIDGE_PUT_EVENTS,
27
+ }),
28
+ });
29
+
30
+ const integTest = new integ.IntegTest(app, 'EventBridgeIntegrationIntegTest', {
31
+ testCases: [stack],
32
+ });
33
+
34
+ const defaultAssertion = integTest.assertions.httpApiCall(
35
+ `${httpApi.apiEndpoint}/default`, {
36
+ body: JSON.stringify({ Detail: JSON.stringify({ message: 'Hello World!' }), DetailType: 'MyDetailType', Source: 'my.source' }),
37
+ method: 'POST',
38
+ },
39
+ );
40
+ defaultAssertion.expect(integ.ExpectedResult.objectLike({ status: 200, statusText: 'OK' }));
41
+
42
+ const putEventsAssertion = integTest.assertions.httpApiCall(
43
+ `${httpApi.apiEndpoint}/put-events`, {
44
+ body: JSON.stringify({ Detail: JSON.stringify({ message: 'Hello Again!' }), DetailType: 'MyDetailType', Source: 'my.source' }),
45
+ method: 'POST',
46
+ },
47
+ );
48
+ putEventsAssertion.expect(integ.ExpectedResult.objectLike({ status: 200, statusText: 'OK' }));
@@ -59,6 +59,29 @@ variable in order to provide a custom Docker executable command or path. This ma
59
59
  be needed when building in environments where the standard docker cannot be executed
60
60
  (see https://github.com/aws/aws-cdk/issues/8460 for details).
61
61
 
62
+ ### Docker Alternatives
63
+
64
+ The CDK supports several Docker alternatives through the `CDK_DOCKER` environment variable:
65
+
66
+ #### Finch (AWS-supported)
67
+
68
+ ```bash
69
+ export CDK_DOCKER=finch
70
+ ```
71
+
72
+ **Note**: For Finch, you may also need to set the `DOCKER_HOST` environment variable. The socket path is OS-specific (e.g., on macOS: `unix:///Applications/Finch/lima/data/finch/sock/finch.sock`).
73
+
74
+ #### Podman (Community-tested)
75
+
76
+ ```bash
77
+ export CDK_DOCKER=podman
78
+ export DOCKER_HOST=$(podman machine inspect --format 'unix://{{.ConnectionInfo.PodmanSocket.Path}}')
79
+ ```
80
+
81
+ **Note**: While Finch receives official AWS support, Podman is community-tested and may work for many use cases. The CDK doesn't check which Docker replacement you are using to determine if it's supported. If the tool has equivalent Docker commands and behaves similarly, it should work.
82
+
83
+ For some container runtimes, you may need to set the `DOCKER_HOST` environment variable to specify the correct socket path for the CDK to communicate with the container daemon.
84
+
62
85
  SSH agent sockets or keys may be passed to docker build via `buildSsh`.
63
86
 
64
87
  ```ts
@@ -1291,6 +1291,7 @@ Currently Supported Log Drivers:
1291
1291
  - syslog
1292
1292
  - awsfirelens
1293
1293
  - Generic
1294
+ - none
1294
1295
 
1295
1296
  ### awslogs Log Driver
1296
1297
 
@@ -1469,6 +1470,20 @@ taskDefinition.addContainer('TheContainer', {
1469
1470
  });
1470
1471
  ```
1471
1472
 
1473
+ ### none Log Driver
1474
+
1475
+ The none log driver disables logging for the container (Docker `none` driver).
1476
+
1477
+ ```ts
1478
+ // Create a Task Definition for the container to start
1479
+ const taskDefinition = new ecs.Ec2TaskDefinition(this, 'TaskDef');
1480
+ taskDefinition.addContainer('TheContainer', {
1481
+ image: ecs.ContainerImage.fromRegistry('example-image'),
1482
+ memoryLimitMiB: 256,
1483
+ logging: ecs.LogDrivers.none(),
1484
+ });
1485
+ ```
1486
+
1472
1487
  ## CloudMap Service Discovery
1473
1488
 
1474
1489
  To register your ECS service with a CloudMap Service Registry, you may add the
@@ -1674,8 +1689,14 @@ declare const vpc: ec2.Vpc;
1674
1689
 
1675
1690
  const cluster = new ecs.Cluster(this, 'Cluster', { vpc });
1676
1691
 
1692
+ const securityGroup = new ec2.SecurityGroup(this, 'SecurityGroup', {
1693
+ vpc,
1694
+ description: 'Security group for managed instances',
1695
+ });
1696
+
1677
1697
  const miCapacityProvider = new ecs.ManagedInstancesCapacityProvider(this, 'MICapacityProvider', {
1678
1698
  subnets: vpc.privateSubnets,
1699
+ securityGroups: [securityGroup],
1679
1700
  instanceRequirements: {
1680
1701
  vCpuCountMin: 1,
1681
1702
  memoryMin: Size.gibibytes(2),
@@ -1748,10 +1769,16 @@ customInfrastructureRole.addToPolicy(new iam.PolicyStatement({
1748
1769
  },
1749
1770
  }));
1750
1771
 
1772
+ const securityGroup = new ec2.SecurityGroup(this, 'SecurityGroup', {
1773
+ vpc,
1774
+ description: 'Security group for managed instances',
1775
+ });
1776
+
1751
1777
  const miCapacityProviderCustom = new ecs.ManagedInstancesCapacityProvider(this, 'MICapacityProviderCustomRoles', {
1752
1778
  infrastructureRole: customInfrastructureRole,
1753
1779
  ec2InstanceProfile: customInstanceProfile,
1754
1780
  subnets: vpc.privateSubnets,
1781
+ securityGroups: [securityGroup],
1755
1782
  });
1756
1783
 
1757
1784
  // Add the capacity provider to the cluster
@@ -1789,8 +1816,14 @@ You can specify detailed instance requirements to control which types of instanc
1789
1816
  ```ts
1790
1817
  declare const vpc: ec2.Vpc;
1791
1818
 
1819
+ const securityGroup = new ec2.SecurityGroup(this, 'SecurityGroup', {
1820
+ vpc,
1821
+ description: 'Security group for managed instances',
1822
+ });
1823
+
1792
1824
  const miCapacityProvider = new ecs.ManagedInstancesCapacityProvider(this, 'MICapacityProvider', {
1793
1825
  subnets: vpc.privateSubnets,
1826
+ securityGroups: [securityGroup],
1794
1827
  instanceRequirements: {
1795
1828
  // Required: CPU and memory constraints
1796
1829
  vCpuCountMin: 2,
@@ -2320,6 +2353,84 @@ const target = service.loadBalancerTarget({
2320
2353
  target.attachToApplicationTargetGroup(blueTargetGroup);
2321
2354
  ```
2322
2355
 
2356
+ ## Buil-in Linear and Canary Deployments
2357
+
2358
+ Amazon ECS supports progressive deployment strategies that allow you to validate new service revisions before shifting all production traffic. Both strategies require an Application Load Balancer (ALB) with target groups for traffic routing.
2359
+
2360
+ ### Linear Deployment
2361
+
2362
+ Linear deployment strategy shifts production traffic in equal percentage increments with configurable wait times between each step:
2363
+
2364
+ ```ts
2365
+ declare const cluster: ecs.Cluster;
2366
+ declare const taskDefinition: ecs.TaskDefinition;
2367
+ declare const blueTargetGroup: elbv2.ApplicationTargetGroup;
2368
+ declare const greenTargetGroup: elbv2.ApplicationTargetGroup;
2369
+ declare const prodListenerRule: elbv2.ApplicationListenerRule;
2370
+
2371
+ const service = new ecs.FargateService(this, 'Service', {
2372
+ cluster,
2373
+ taskDefinition,
2374
+ deploymentStrategy: ecs.DeploymentStrategy.LINEAR,
2375
+ linearConfiguration: {
2376
+ stepPercent: 10.0,
2377
+ stepBakeTime: Duration.minutes(5),
2378
+ },
2379
+ });
2380
+
2381
+ const target = service.loadBalancerTarget({
2382
+ containerName: 'web',
2383
+ containerPort: 80,
2384
+ alternateTarget: new ecs.AlternateTarget('AlternateTarget', {
2385
+ alternateTargetGroup: greenTargetGroup,
2386
+ productionListener: ecs.ListenerRuleConfiguration.applicationListenerRule(prodListenerRule),
2387
+ }),
2388
+ });
2389
+
2390
+ target.attachToApplicationTargetGroup(blueTargetGroup);
2391
+ ```
2392
+
2393
+ Valid values:
2394
+ - `stepPercent`: 3.0 to 100.0 (multiples of 0.1). Default: 10.0
2395
+ - `stepBakeTime`: 0 to 1440 minutes (24 hours). Default: 6 minutes
2396
+
2397
+ ### Canary Deployment
2398
+
2399
+ Canary deployment strategy shifts a fixed percentage of traffic to the new service revision for testing, then shifts the remaining traffic after a bake period:
2400
+
2401
+ ```ts
2402
+ declare const cluster: ecs.Cluster;
2403
+ declare const taskDefinition: ecs.TaskDefinition;
2404
+ declare const blueTargetGroup: elbv2.ApplicationTargetGroup;
2405
+ declare const greenTargetGroup: elbv2.ApplicationTargetGroup;
2406
+ declare const prodListenerRule: elbv2.ApplicationListenerRule;
2407
+
2408
+ const service = new ecs.FargateService(this, 'Service', {
2409
+ cluster,
2410
+ taskDefinition,
2411
+ deploymentStrategy: ecs.DeploymentStrategy.CANARY,
2412
+ canaryConfiguration: {
2413
+ stepPercent: 5.0,
2414
+ stepBakeTime: Duration.minutes(10),
2415
+ },
2416
+ });
2417
+
2418
+ const target = service.loadBalancerTarget({
2419
+ containerName: 'web',
2420
+ containerPort: 80,
2421
+ alternateTarget: new ecs.AlternateTarget('AlternateTarget', {
2422
+ alternateTargetGroup: greenTargetGroup,
2423
+ productionListener: ecs.ListenerRuleConfiguration.applicationListenerRule(prodListenerRule),
2424
+ }),
2425
+ });
2426
+
2427
+ target.attachToApplicationTargetGroup(blueTargetGroup);
2428
+ ```
2429
+
2430
+ Valid values:
2431
+ - `stepPercent`: 0.1 to 100.0 (multiples of 0.1). Default: 5.0
2432
+ - `stepBakeTime`: 0 to 1440 minutes (24 hours). Default: 10 minutes
2433
+
2323
2434
  ## Daemon Scheduling Strategy
2324
2435
  You can specify whether service use Daemon scheduling strategy by specifying `daemon` option in Service constructs. See [differences between Daemon and Replica scheduling strategy](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html)
2325
2436
 
@@ -0,0 +1,117 @@
1
+ import * as ec2 from 'aws-cdk-lib/aws-ec2';
2
+ import * as elbv2 from 'aws-cdk-lib/aws-elasticloadbalancingv2';
3
+ import * as cdk from 'aws-cdk-lib';
4
+ import * as ecs from 'aws-cdk-lib/aws-ecs';
5
+ import * as integ from '@aws-cdk/integ-tests-alpha';
6
+
7
+ const app = new cdk.App();
8
+ const stack = new cdk.Stack(app, 'aws-ecs-canary-deployment');
9
+
10
+ const vpc = new ec2.Vpc(stack, 'Vpc', { maxAzs: 2, restrictDefaultSecurityGroup: false });
11
+ const cluster = new ecs.Cluster(stack, 'FargateCluster', { vpc });
12
+
13
+ const blueTargetGroup = new elbv2.ApplicationTargetGroup(stack, 'BlueTG', {
14
+ vpc: cluster.vpc,
15
+ port: 80,
16
+ protocol: elbv2.ApplicationProtocol.HTTP,
17
+ targetType: elbv2.TargetType.IP,
18
+ healthCheck: {
19
+ path: '/',
20
+ healthyHttpCodes: '200',
21
+ },
22
+ });
23
+
24
+ const greenTargetGroup = new elbv2.ApplicationTargetGroup(stack, 'GreenTG', {
25
+ vpc: cluster.vpc,
26
+ port: 80,
27
+ protocol: elbv2.ApplicationProtocol.HTTP,
28
+ targetType: elbv2.TargetType.IP,
29
+ healthCheck: {
30
+ path: '/',
31
+ healthyHttpCodes: '200',
32
+ },
33
+ });
34
+
35
+ const lbSecurityGroup = new ec2.SecurityGroup(stack, 'LBSecurityGroup', {
36
+ vpc: cluster.vpc,
37
+ allowAllOutbound: true,
38
+ });
39
+
40
+ const ecsSecurityGroup = new ec2.SecurityGroup(stack, 'ECSSecurityGroup', {
41
+ vpc: cluster.vpc,
42
+ allowAllOutbound: true,
43
+ });
44
+ ecsSecurityGroup.addIngressRule(lbSecurityGroup, ec2.Port.tcp(80));
45
+
46
+ const alb = new elbv2.ApplicationLoadBalancer(stack, 'ALB', {
47
+ vpc: cluster.vpc,
48
+ internetFacing: true,
49
+ securityGroup: lbSecurityGroup,
50
+ idleTimeout: cdk.Duration.seconds(60),
51
+ });
52
+
53
+ const listener = alb.addListener('ALBListener', {
54
+ port: 80,
55
+ defaultAction: elbv2.ListenerAction.fixedResponse(404),
56
+ open: false,
57
+ });
58
+
59
+ const prodListenerRule = new elbv2.ApplicationListenerRule(stack, 'ALBProductionListenerRule', {
60
+ listener: listener,
61
+ priority: 1,
62
+ conditions: [
63
+ elbv2.ListenerCondition.pathPatterns(['/*']),
64
+ ],
65
+ action: elbv2.ListenerAction.weightedForward([
66
+ {
67
+ targetGroup: blueTargetGroup,
68
+ weight: 100,
69
+ },
70
+ {
71
+ targetGroup: greenTargetGroup,
72
+ weight: 0,
73
+ },
74
+ ]),
75
+ });
76
+
77
+ const taskDefinition = new ecs.FargateTaskDefinition(stack, 'TaskDef', {
78
+ memoryLimitMiB: 512,
79
+ cpu: 256,
80
+ });
81
+
82
+ taskDefinition.addContainer('container', {
83
+ containerName: 'nginx',
84
+ image: ecs.ContainerImage.fromRegistry('public.ecr.aws/nginx/nginx:latest'),
85
+ portMappings: [{
86
+ name: 'api',
87
+ containerPort: 80,
88
+ appProtocol: ecs.AppProtocol.http,
89
+ }],
90
+ });
91
+
92
+ const service = new ecs.FargateService(stack, 'Service', {
93
+ cluster,
94
+ taskDefinition,
95
+ securityGroups: [ecsSecurityGroup],
96
+ deploymentStrategy: ecs.DeploymentStrategy.CANARY,
97
+ canaryConfiguration: {
98
+ stepPercent: 5.0,
99
+ stepBakeTime: cdk.Duration.minutes(10),
100
+ },
101
+ });
102
+
103
+ const target = service.loadBalancerTarget({
104
+ containerName: 'nginx',
105
+ containerPort: 80,
106
+ protocol: ecs.Protocol.TCP,
107
+ alternateTarget: new ecs.AlternateTarget('LBAlternateOptions', {
108
+ alternateTargetGroup: greenTargetGroup,
109
+ productionListener: ecs.ListenerRuleConfiguration.applicationListenerRule(prodListenerRule),
110
+ }),
111
+ });
112
+
113
+ target.attachToApplicationTargetGroup(blueTargetGroup);
114
+
115
+ new integ.IntegTest(app, 'aws-ecs-canary', {
116
+ testCases: [stack],
117
+ });
@@ -0,0 +1,117 @@
1
+ import * as ec2 from 'aws-cdk-lib/aws-ec2';
2
+ import * as elbv2 from 'aws-cdk-lib/aws-elasticloadbalancingv2';
3
+ import * as cdk from 'aws-cdk-lib';
4
+ import * as ecs from 'aws-cdk-lib/aws-ecs';
5
+ import * as integ from '@aws-cdk/integ-tests-alpha';
6
+
7
+ const app = new cdk.App();
8
+ const stack = new cdk.Stack(app, 'aws-ecs-linear-deployment');
9
+
10
+ const vpc = new ec2.Vpc(stack, 'Vpc', { maxAzs: 2, restrictDefaultSecurityGroup: false });
11
+ const cluster = new ecs.Cluster(stack, 'FargateCluster', { vpc });
12
+
13
+ const blueTargetGroup = new elbv2.ApplicationTargetGroup(stack, 'BlueTG', {
14
+ vpc: cluster.vpc,
15
+ port: 80,
16
+ protocol: elbv2.ApplicationProtocol.HTTP,
17
+ targetType: elbv2.TargetType.IP,
18
+ healthCheck: {
19
+ path: '/',
20
+ healthyHttpCodes: '200',
21
+ },
22
+ });
23
+
24
+ const greenTargetGroup = new elbv2.ApplicationTargetGroup(stack, 'GreenTG', {
25
+ vpc: cluster.vpc,
26
+ port: 80,
27
+ protocol: elbv2.ApplicationProtocol.HTTP,
28
+ targetType: elbv2.TargetType.IP,
29
+ healthCheck: {
30
+ path: '/',
31
+ healthyHttpCodes: '200',
32
+ },
33
+ });
34
+
35
+ const lbSecurityGroup = new ec2.SecurityGroup(stack, 'LBSecurityGroup', {
36
+ vpc: cluster.vpc,
37
+ allowAllOutbound: true,
38
+ });
39
+
40
+ const ecsSecurityGroup = new ec2.SecurityGroup(stack, 'ECSSecurityGroup', {
41
+ vpc: cluster.vpc,
42
+ allowAllOutbound: true,
43
+ });
44
+ ecsSecurityGroup.addIngressRule(lbSecurityGroup, ec2.Port.tcp(80));
45
+
46
+ const alb = new elbv2.ApplicationLoadBalancer(stack, 'ALB', {
47
+ vpc: cluster.vpc,
48
+ internetFacing: true,
49
+ securityGroup: lbSecurityGroup,
50
+ idleTimeout: cdk.Duration.seconds(60),
51
+ });
52
+
53
+ const listener = alb.addListener('ALBListener', {
54
+ port: 80,
55
+ defaultAction: elbv2.ListenerAction.fixedResponse(404),
56
+ open: false,
57
+ });
58
+
59
+ const prodListenerRule = new elbv2.ApplicationListenerRule(stack, 'ALBProductionListenerRule', {
60
+ listener: listener,
61
+ priority: 1,
62
+ conditions: [
63
+ elbv2.ListenerCondition.pathPatterns(['/*']),
64
+ ],
65
+ action: elbv2.ListenerAction.weightedForward([
66
+ {
67
+ targetGroup: blueTargetGroup,
68
+ weight: 100,
69
+ },
70
+ {
71
+ targetGroup: greenTargetGroup,
72
+ weight: 0,
73
+ },
74
+ ]),
75
+ });
76
+
77
+ const taskDefinition = new ecs.FargateTaskDefinition(stack, 'TaskDef', {
78
+ memoryLimitMiB: 512,
79
+ cpu: 256,
80
+ });
81
+
82
+ taskDefinition.addContainer('container', {
83
+ containerName: 'nginx',
84
+ image: ecs.ContainerImage.fromRegistry('public.ecr.aws/nginx/nginx:latest'),
85
+ portMappings: [{
86
+ name: 'api',
87
+ containerPort: 80,
88
+ appProtocol: ecs.AppProtocol.http,
89
+ }],
90
+ });
91
+
92
+ const service = new ecs.FargateService(stack, 'Service', {
93
+ cluster,
94
+ taskDefinition,
95
+ securityGroups: [ecsSecurityGroup],
96
+ deploymentStrategy: ecs.DeploymentStrategy.LINEAR,
97
+ linearConfiguration: {
98
+ stepPercent: 10.0,
99
+ stepBakeTime: cdk.Duration.minutes(5),
100
+ },
101
+ });
102
+
103
+ const target = service.loadBalancerTarget({
104
+ containerName: 'nginx',
105
+ containerPort: 80,
106
+ protocol: ecs.Protocol.TCP,
107
+ alternateTarget: new ecs.AlternateTarget('LBAlternateOptions', {
108
+ alternateTargetGroup: greenTargetGroup,
109
+ productionListener: ecs.ListenerRuleConfiguration.applicationListenerRule(prodListenerRule),
110
+ }),
111
+ });
112
+
113
+ target.attachToApplicationTargetGroup(blueTargetGroup);
114
+
115
+ new integ.IntegTest(app, 'aws-ecs-linear', {
116
+ testCases: [stack],
117
+ });
@@ -0,0 +1,23 @@
1
+ import { App, Stack } from 'aws-cdk-lib';
2
+ import * as ecs from 'aws-cdk-lib/aws-ecs';
3
+ import * as integ from '@aws-cdk/integ-tests-alpha';
4
+
5
+ const app = new App({
6
+ postCliContext: {
7
+ '@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
8
+ },
9
+ });
10
+ const stack = new Stack(app, 'cdk-ecs-none-log-driver');
11
+
12
+ const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef', {});
13
+
14
+ taskDefinition.addContainer('web', {
15
+ image: ecs.ContainerImage.fromRegistry('amazon/amazon-ecs-sample'),
16
+ memoryLimitMiB: 256,
17
+ logging: new ecs.NoneLogDriver(),
18
+ });
19
+
20
+ new integ.IntegTest(app, 'cdk-ecs-none-log-driver-test', {
21
+ testCases: [stack],
22
+ });
23
+
@@ -54,7 +54,12 @@ declare const project: codebuild.Project;
54
54
 
55
55
  const onCommitRule = repo.onCommit('OnCommit', {
56
56
  target: new targets.CodeBuildProject(project),
57
- branches: ['master']
57
+ eventPattern: {
58
+ detail: {
59
+ referenceType: ['branch'],
60
+ }
61
+ },
62
+ branches: events.Match.prefix('main')
58
63
  });
59
64
  ```
60
65
 
@@ -703,7 +703,7 @@ The following examples defines an OpenID Connect provider. Two client IDs
703
703
  (audiences) are will be able to send authentication requests to
704
704
  <https://openid/connect>.
705
705
 
706
- It is recommended to use the new `OidcProviderNative` which native CloudFormation resource `AWS::IAM::OIDCProvider` over the old `OpenIdConnectProvider` which uses a custom resource.
706
+ The older `OpenIdConnectProvider` is still supported, but for new stacks, it is recommended to use the new `OidcProviderNative` which uses the native CloudFormation resource `AWS::IAM::OIDCProvider` over the old `OpenIdConnectProvider` which uses a custom resource. While `OidcProviderNative` does not provide new features compared to `OpenIdConnectProvider`, it offers a simpler implementation using native CloudFormation resources instead of custom resources.
707
707
 
708
708
  ```ts
709
709
  const nativeProvider = new iam.OidcProviderNative(this, 'MyProvider', {
@@ -462,6 +462,19 @@ new logs.LogGroup(this, 'LogGroupLambda', {
462
462
  });
463
463
  ```
464
464
 
465
+ ## Configure Deletion Protection
466
+
467
+ Indicates whether deletion protection is enabled for this log group. When enabled, deletion protection blocks all deletion operations until it is explicitly disabled.
468
+
469
+ For more information, see [Protecting log groups from deletion](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/protecting-log-groups-from-deletion.html).
470
+
471
+ ```ts
472
+ new logs.LogGroup(this, 'LogGroup', {
473
+ deletionProtectionEnabled: true,
474
+ });
475
+ ```
476
+
477
+
465
478
  ## Field Index Policies
466
479
 
467
480
  Creates or updates a field index policy for the specified log group. You can use field index policies to create field indexes on fields found in log events in the log group. Creating field indexes lowers the costs for CloudWatch Logs Insights queries that reference those field indexes, because these queries attempt to skip the processing of log events that are known to not match the indexed field. Good fields to index are fields that you often need to query for and fields that have high cardinality of values.
@@ -0,0 +1,14 @@
1
+ import { App, Stack } from 'aws-cdk-lib';
2
+ import { IntegTest } from '@aws-cdk/integ-tests-alpha';
3
+ import { LogGroup } from 'aws-cdk-lib/aws-logs';
4
+
5
+ const app = new App();
6
+ const stack = new Stack(app, 'aws-cdk-loggroup-grantreads-integ');
7
+
8
+ new LogGroup(stack, 'LogGroup', {
9
+ deletionProtectionEnabled: true,
10
+ });
11
+
12
+ new IntegTest(app, 'loggroup-grantreads', {
13
+ testCases: [stack],
14
+ });
@@ -149,7 +149,39 @@ const domain = new Domain(this, 'Domain', {
149
149
 
150
150
  This sets up the domain with node to node encryption and encryption at
151
151
  rest. You can also choose to supply your own KMS key to use for encryption at
152
- rest.
152
+ rest:
153
+
154
+ ```ts
155
+ import * as kms from 'aws-cdk-lib/aws-kms';
156
+
157
+ const encryptionKey = new kms.Key(this, 'EncryptionKey');
158
+
159
+ const domain = new Domain(this, 'Domain', {
160
+ version: EngineVersion.OPENSEARCH_1_0,
161
+ encryptionAtRest: {
162
+ kmsKey: encryptionKey,
163
+ },
164
+ });
165
+ ```
166
+
167
+ The construct also supports using cross-account KMS keys for encryption at rest:
168
+
169
+ ```ts
170
+ import * as kms from 'aws-cdk-lib/aws-kms';
171
+
172
+ const crossAccountKey = kms.Key.fromKeyArn(
173
+ this,
174
+ 'CrossAccountKey',
175
+ 'arn:aws:kms:us-east-1:111111111111:key/12345678-1234-1234-1234-123456789012',
176
+ );
177
+
178
+ const domain = new Domain(this, 'Domain', {
179
+ version: EngineVersion.OPENSEARCH_1_0,
180
+ encryptionAtRest: {
181
+ kmsKey: crossAccountKey,
182
+ },
183
+ });
184
+ ```
153
185
 
154
186
  ## VPC Support
155
187
 
@@ -203,6 +203,10 @@ v2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverle
203
203
  capacity of all the instances in the cluster.
204
204
  - `ACUUtilization`: Value of the `ServerlessDatabaseCapacity`/ max ACU of the
205
205
  cluster.
206
+ - `VolumeReadIOPs`: Cluster-level metric that represents the average number of disk read I/O operations per second.
207
+ - `VolumeWriteIOPs`: Cluster-level metric that represents the average number of disk write I/O operations per second.
208
+ - `ReadIOPS`: Instance-level metric that represents the average read I/O operations per second. This metric is supported by DatabaseCluster and DatabaseClusterFromSnapshot both.
209
+ - `WriteIOPS`: Instance-level metric that represents the average write I/O operations per second. This metric is supported by DatabaseCluster and DatabaseClusterFromSnapshot both.
206
210
 
207
211
  ```ts
208
212
  declare const vpc: ec2.Vpc;
@@ -221,12 +225,46 @@ cluster.metricServerlessDatabaseCapacity({
221
225
  threshold: 1.5,
222
226
  evaluationPeriods: 3,
223
227
  });
228
+
224
229
  cluster.metricACUUtilization({
225
230
  period: Duration.minutes(10),
226
231
  }).createAlarm(this, 'alarm', {
227
232
  evaluationPeriods: 3,
228
233
  threshold: 90,
229
234
  });
235
+
236
+ cluster.metricVolumeReadIOPs({
237
+ period: Duration.minutes(10),
238
+ }).createAlarm(this, 'VolumeReadIOPsAlarm', {
239
+ threshold: 1000,
240
+ evaluationPeriods: 3,
241
+ });
242
+
243
+ cluster.metricVolumeWriteIOPs({
244
+ period: Duration.minutes(10),
245
+ }).createAlarm(this, 'VolumeWriteIOPsAlarm', {
246
+ threshold: 1000,
247
+ evaluationPeriods: 3,
248
+ });
249
+
250
+ const instance = new rds.DatabaseInstance(this, 'Instance', {
251
+ engine: rds.DatabaseInstanceEngine.postgres({ version: rds.PostgresEngineVersion.VER_17_6 }),
252
+ vpc
253
+ });
254
+
255
+ instance.metricReadIOPS({
256
+ period: Duration.minutes(10),
257
+ }).createAlarm(this, 'ReadIOPSAlarm', {
258
+ threshold: 1000,
259
+ evaluationPeriods: 3,
260
+ });
261
+
262
+ instance.metricWriteIOPS({
263
+ period: Duration.minutes(10),
264
+ }).createAlarm(this, 'WriteIOPSAlarm', {
265
+ threshold: 1000,
266
+ evaluationPeriods: 3,
267
+ });
230
268
  ```
231
269
 
232
270
  #### Capacity & Scaling
@@ -1009,6 +1047,33 @@ const proxy = new rds.DatabaseProxy(this, 'Proxy', {
1009
1047
  });
1010
1048
  ```
1011
1049
 
1050
+ ### Default Authentication Scheme
1051
+
1052
+ RDS Proxy supports different authentication schemes to connect to your database. You can configure the default authentication scheme using the `defaultAuthScheme` property.
1053
+
1054
+ When using `DefaultAuthScheme.IAM_AUTH`, the proxy uses end-to-end IAM authentication to connect to the database, eliminating the need for secrets stored in AWS Secrets Manager:
1055
+
1056
+ ```ts
1057
+ declare const vpc: ec2.Vpc;
1058
+ const instance = new rds.DatabaseInstance(this, 'Database', {
1059
+ engine: rds.DatabaseInstanceEngine.postgres({
1060
+ version: rds.PostgresEngineVersion.VER_17_7,
1061
+ }),
1062
+ vpc,
1063
+ iamAuthentication: true,
1064
+ });
1065
+
1066
+ const proxy = new rds.DatabaseProxy(this, 'Proxy', {
1067
+ proxyTarget: rds.ProxyTarget.fromInstance(instance),
1068
+ vpc,
1069
+ defaultAuthScheme: rds.DefaultAuthScheme.IAM_AUTH, // No secrets required
1070
+ });
1071
+
1072
+ // Grant IAM permissions for database connection
1073
+ const role = new iam.Role(this, 'DBRole', { assumedBy: new iam.AccountPrincipal(this.account) });
1074
+ proxy.grantConnect(role, 'database-user'); // Database user must be specified when using IAM auth
1075
+ ```
1076
+
1012
1077
  ### Cluster
1013
1078
 
1014
1079
  The following example shows granting connection access for an IAM role to an Aurora Cluster.
@@ -0,0 +1,47 @@
1
+ import * as ec2 from 'aws-cdk-lib/aws-ec2';
2
+ import * as cdk from 'aws-cdk-lib';
3
+ import { AuroraMysqlEngineVersion, ClusterInstance, Credentials, DatabaseCluster, DatabaseClusterEngine } from 'aws-cdk-lib/aws-rds';
4
+ import { IntegTest } from '@aws-cdk/integ-tests-alpha';
5
+
6
+ const app = new cdk.App();
7
+ const stack = new cdk.Stack(app, 'aws-cdk-rds-cluster-volume-iops-metric');
8
+
9
+ const vpc = new ec2.Vpc(stack, 'VPC', { maxAzs: 2, restrictDefaultSecurityGroup: false });
10
+
11
+ const cluster = new DatabaseCluster(stack, 'Database', {
12
+ engine: DatabaseClusterEngine.auroraMysql({
13
+ version: AuroraMysqlEngineVersion.VER_3_10_0,
14
+ }),
15
+ credentials: Credentials.fromUsername('admin', { password: cdk.SecretValue.unsafePlainText('7959866cacc02c2d243ecfe177464fe6') }),
16
+ vpcSubnets: { subnetType: ec2.SubnetType.PUBLIC },
17
+ vpc,
18
+ writer: ClusterInstance.provisioned('Instance1', {
19
+ instanceType: ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE3, ec2.InstanceSize.MEDIUM),
20
+ }),
21
+ readers: [
22
+ ClusterInstance.provisioned('Instance2', {
23
+ instanceType: ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE3, ec2.InstanceSize.MEDIUM),
24
+ }),
25
+ ],
26
+ removalPolicy: cdk.RemovalPolicy.DESTROY,
27
+ });
28
+
29
+ // Test that metricVolumeReadIOPs can be used to create an alarm
30
+ cluster.metricVolumeReadIOPs({
31
+ period: cdk.Duration.minutes(10),
32
+ }).createAlarm(stack, 'VolumeReadIOPsAlarm', {
33
+ threshold: 1000,
34
+ evaluationPeriods: 3,
35
+ });
36
+
37
+ // Test that metricVolumeWriteIOPs can be used to create an alarm
38
+ cluster.metricVolumeWriteIOPs({
39
+ period: cdk.Duration.minutes(10),
40
+ }).createAlarm(stack, 'VolumeWriteIOPsAlarm', {
41
+ threshold: 1000,
42
+ evaluationPeriods: 3,
43
+ });
44
+
45
+ new IntegTest(app, 'rds-cluster-volume-iops-metric-integ-test', {
46
+ testCases: [stack],
47
+ });
@@ -0,0 +1,36 @@
1
+ import * as ec2 from 'aws-cdk-lib/aws-ec2';
2
+ import * as cdk from 'aws-cdk-lib';
3
+ import * as rds from 'aws-cdk-lib/aws-rds';
4
+ import { IntegTest } from '@aws-cdk/integ-tests-alpha';
5
+
6
+ const app = new cdk.App();
7
+ const stack = new cdk.Stack(app, 'aws-cdk-rds-instance-iops-metric');
8
+
9
+ const vpc = new ec2.Vpc(stack, 'VPC', { maxAzs: 2, restrictDefaultSecurityGroup: false });
10
+
11
+ const instance = new rds.DatabaseInstance(stack, 'Instance', {
12
+ engine: rds.DatabaseInstanceEngine.postgres({ version: rds.PostgresEngineVersion.VER_17_6 }),
13
+ vpc,
14
+ multiAz: false,
15
+ removalPolicy: cdk.RemovalPolicy.DESTROY,
16
+ });
17
+
18
+ // Test that metricReadIOPS can be used to create an alarm
19
+ instance.metricReadIOPS({
20
+ period: cdk.Duration.minutes(10),
21
+ }).createAlarm(stack, 'ReadIOPSAlarm', {
22
+ threshold: 1000,
23
+ evaluationPeriods: 3,
24
+ });
25
+
26
+ // Test that metricWriteIOPS can be used to create an alarm
27
+ instance.metricWriteIOPS({
28
+ period: cdk.Duration.minutes(10),
29
+ }).createAlarm(stack, 'WriteIOPSAlarm', {
30
+ threshold: 1000,
31
+ evaluationPeriods: 3,
32
+ });
33
+
34
+ new IntegTest(app, 'rds-instance-iops-metric-integ-test', {
35
+ testCases: [stack],
36
+ });
@@ -0,0 +1,37 @@
1
+ import * as ec2 from 'aws-cdk-lib/aws-ec2';
2
+ import * as iam from 'aws-cdk-lib/aws-iam';
3
+ import * as cdk from 'aws-cdk-lib';
4
+ import { RemovalPolicy } from 'aws-cdk-lib';
5
+ import * as integ from '@aws-cdk/integ-tests-alpha';
6
+ import * as rds from 'aws-cdk-lib/aws-rds';
7
+
8
+ const app = new cdk.App();
9
+ const stack = new cdk.Stack(app, 'aws-cdk-rds-proxy');
10
+
11
+ const vpc = new ec2.Vpc(stack, 'vpc', { maxAzs: 2, restrictDefaultSecurityGroup: false });
12
+
13
+ const dbInstance = new rds.DatabaseInstance(stack, 'dbInstance', {
14
+ engine: rds.DatabaseInstanceEngine.postgres({
15
+ version: rds.PostgresEngineVersion.VER_17_7,
16
+ }),
17
+ instanceType: ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE3, ec2.InstanceSize.MEDIUM),
18
+ vpc,
19
+ removalPolicy: RemovalPolicy.DESTROY,
20
+ iamAuthentication: true,
21
+ });
22
+
23
+ const proxy = new rds.DatabaseProxy(stack, 'dbProxy', {
24
+ borrowTimeout: cdk.Duration.seconds(30),
25
+ maxConnectionsPercent: 50,
26
+ proxyTarget: rds.ProxyTarget.fromInstance(dbInstance),
27
+ vpc,
28
+ defaultAuthScheme: rds.DefaultAuthScheme.IAM_AUTH,
29
+ });
30
+
31
+ // Grant IAM permissions for database connection
32
+ const role = new iam.Role(stack, 'DBRole', { assumedBy: new iam.AccountPrincipal(stack.account) });
33
+ proxy.grantConnect(role, 'database-user');
34
+
35
+ new integ.IntegTest(app, 'database-proxy-default-auth-scheme-integ-test', {
36
+ testCases: [stack],
37
+ });
@@ -861,6 +861,19 @@ const map = new sfn.Map(this, 'Map State', {
861
861
  });
862
862
  ```
863
863
 
864
+ When using `JSONata`, you can also specify the `maxConcurrency` dynamically using a JSONata expression with the `jsonataMaxConcurrency` property. This allows you to determine the concurrency limit based on state input or other runtime values:
865
+
866
+ ```ts
867
+ const map = new sfn.Map(this, 'Map State', {
868
+ jsonataMaxConcurrency: '{% $states.input.maxConcurrency %}',
869
+ itemSelector: {
870
+ item: '{% $states.context.Map.Item.Value %}',
871
+ }
872
+ });
873
+ ```
874
+
875
+ Note that `jsonataMaxConcurrency` is mutually exclusive with `maxConcurrency` and `maxConcurrencyPath`.
876
+
864
877
  To define a distributed `Map` state set `itemProcessors` mode to `ProcessorMode.DISTRIBUTED`.
865
878
  An `executionType` must be specified for the distributed `Map` workflow.
866
879
 
@@ -0,0 +1,34 @@
1
+ import { IntegTest, ExpectedResult } from '@aws-cdk/integ-tests-alpha';
2
+ import * as cdk from 'aws-cdk-lib';
3
+ import * as sfn from 'aws-cdk-lib/aws-stepfunctions';
4
+
5
+ /**
6
+ * Stack verification steps:
7
+ *
8
+ * -- aws stepfunctions describe-state-machine --state-machine-arn <stack-output> has a status of `ACTIVE`
9
+ */
10
+ const app = new cdk.App();
11
+ const stack = new cdk.Stack(app, 'cdk-stepfunctions-map-jsonata-maxconcurrency-stack');
12
+
13
+ const map = new sfn.Map(stack, 'Map', {
14
+ queryLanguage: sfn.QueryLanguage.JSONATA,
15
+ stateName: 'My-Map-State',
16
+ jsonataMaxConcurrency: '{% $states.input.maxConcurrency %}',
17
+ items: sfn.ProvideItems.jsonata('{% $states.input.items %}'),
18
+ });
19
+ map.itemProcessor(new sfn.Pass(stack, 'Pass State'));
20
+
21
+ const sm = new sfn.StateMachine(stack, 'StateMachine', {
22
+ definition: map,
23
+ timeout: cdk.Duration.seconds(30),
24
+ });
25
+
26
+ const testCase = new IntegTest(app, 'cdk-stepfunctions-map-jsonata-maxconcurrency-integ', {
27
+ testCases: [stack],
28
+ });
29
+
30
+ testCase.assertions.awsApiCall('StepFunctions', 'describeStateMachine', {
31
+ stateMachineArn: sm.stateMachineArn,
32
+ }).expect(ExpectedResult.objectLike({
33
+ status: 'ACTIVE',
34
+ }));
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: konokenj.cdk-api-mcp-server
3
- Version: 0.68.0
3
+ Version: 0.70.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.234.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.235.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=RnJCYoUKmHNyDzJlB28Uadn9LT5PX5z7bhMqoAWh2Yk,129
1
+ cdk_api_mcp_server/__about__.py,sha256=H-AYNZf-Fm2vnGGoJRTt2qlGssreZUzu_DT_V-7TayI,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
@@ -21,7 +21,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-elasticache-alpha/R
21
21
  cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-gamelift-alpha/README.md,sha256=pZqlGXpIekT05CmRYo99QPI-7S1iGtKoNESGryLQFxQ,28324
22
22
  cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-glue-alpha/README.md,sha256=0DUUl5AU9qy-x3P4cCIStFMcav2hSQMwZuI3aTq9Q2Q,32235
23
23
  cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-imagebuilder-alpha/README.md,sha256=9Kc8-eJ5wjZBMZuXAvKbTn6gEHjEwT4AKJvknmxWtJU,56869
24
- cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-iot-actions-alpha/README.md,sha256=R6vkGxu-JjfB1IfGVquiD6Gcn4RQQpgbGo36njBdJe4,11947
24
+ cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-iot-actions-alpha/README.md,sha256=eS4UGpk6_8TJDLeFBTHvXyTxnE89CizoGn8xoFUyH3Y,12502
25
25
  cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-iot-alpha/README.md,sha256=18MkQScFBUO_qZnfYj9wfsdY_vRvvEyar2OT_QbO_N4,6909
26
26
  cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-iotevents-actions-alpha/README.md,sha256=0Al2K5gHcEce_cH07YM1GuFFrJ0mrr85ZWGVrj2cs9s,4477
27
27
  cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-iotevents-alpha/README.md,sha256=VV3S1skroh5LRVWWPeRo_MhYb6f29ee6ScmmuLVd8v4,3835
@@ -46,7 +46,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/cfnspec/README.md,sha25
46
46
  cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/custom-resource-handlers/README.md,sha256=QctOoyGt6AqVWeFhRwpkCSxHZ1XFWj_nCKlkJHDFock,965
47
47
  cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/example-construct-library/README.md,sha256=vnVXyvtN9ICph68sw2y6gkdD_gmas0PiUa9TkwNckWQ,4501
48
48
  cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/integ-tests-alpha/README.md,sha256=VifKLrR404_yLVT0E3ai8f3R5K0h22VNwQplpSUSZqc,17489
49
- cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/mixins-preview/README.md,sha256=y7igoLdo-VB0bEMA4eM-Z_BjuoSpry3-DTrPJqUfI2A,9618
49
+ cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/mixins-preview/README.md,sha256=8mVA_3LB6T8h3abhZQNhbWteqk_ZcjWXvX2C5X_eOTg,9712
50
50
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/README.md/README.md,sha256=fDaQqPonfLmfQpukU4aAJcjQI5xHI40D3Li0I056Q7s,76468
51
51
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/assertions/MIGRATING.md,sha256=SYGX8QNB1Pm_rVYDBp4QRWkqwnxOb3CHzeFglUy_53k,3347
52
52
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/assertions/README.md,sha256=3yo3D05n5explTIgnuF-vkk01MTYeAYe7_3rcsD2baE,18299
@@ -108,10 +108,11 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-aut
108
108
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-authorizers/integ.iam.ts,sha256=lvRtxBcfeAd_hWzp4y2XjUrBaXvrTvTlbenZPrTVjm4,1879
109
109
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-authorizers/integ.lambda.ts,sha256=fn7xHE9FRWiezUfUcXj6h2WEsBwoVlovgAJebdmoJ7o,2553
110
110
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-authorizers/integ.user-pool.ts,sha256=lNnicrKmHinBkb5LHF8TNGbSh0m7Fq_9kqi7wWIF11c,2243
111
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/README.md,sha256=wWtyVytGyyPHS4VfUdf72UUeKTxa51yNR4ogh_2ziL8,18195
111
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/README.md,sha256=OzDeGBd34EtDh2dUAQEFH-0ef940--I-aXq42iZRDEI,19965
112
112
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.add-subroute-integration.ts,sha256=QQN3KurT-XG7uFqvFPfraDkaGvN9RAudo1kW3wKc4eg,4545
113
113
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.alb.ts,sha256=M37eb1eaG_p-me9AwxJ5Ug1nsBdOtqMloYNW0bELDak,1816
114
114
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.aws.ts,sha256=z-Kjet7OZOc3pR9ReqDEvVFjqdYTgS3ZJprEgt2y9l8,2444
115
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.eventbridge.ts,sha256=bUA6go9j5cZgpK7QGrTJIvF9-I9KkCz2SyQmKBmGN2Y,1745
115
116
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.http-proxy.ts,sha256=RbFxD1auiyVyYM9DscPm9xzhDsYPMQPeQTKcgmxAZ0o,1326
116
117
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.lambda-connect-disconnect-trigger.ts,sha256=oC__vtPWhU0EgRbtoixIondliCWhybviK35eQ4HIwZA,2533
117
118
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.lambda-permission-consolidation.ts,sha256=ZDRoNQzKQaIU5TZc2CkTKbBdZoDoBqDbNMRqO9pstN8,1669
@@ -596,12 +597,12 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecr/integ.images
596
597
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecr/integ.repository-auto-delete-images.ts,sha256=3GYqoRSUUJ53ZpAvfypp0IOd7Z-uWTGGQ3aJgqsfKyg,577
597
598
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecr/integ.repository-lookup.ts,sha256=UQZz00DFMZaFnvbT2FWqk5uBeZGl9MY3IUIKyUFukkY,1424
598
599
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecr/integ.tag-mutability-exclusion.ts,sha256=F_-zt6vvVTQN19nQAHQrX6lqSRaifg5MgSTYAjwDp4U,1060
599
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecr-assets/README.md,sha256=nwDqg2M2NMEqMcI2-b1yIMjyZgnBGaIHSbiq-6PGG1s,9146
600
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecr-assets/README.md,sha256=R_S6BWtb-L-In7oPQfphdJBFfk-YSSI5CHVenOcrPTw,10165
600
601
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecr-assets/integ.assets-docker.ts,sha256=EF_hWgLhIKucTjMe6G7VyxixpQgm82ElvunshuWoEhA,2570
601
602
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecr-assets/integ.assets-tarball.ts,sha256=pSbNMWSorKT7lUTXxnzkxpcRumKPYWUmcbqRSwwWOgI,937
602
603
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecr-assets/integ.nested-stacks-docker.ts,sha256=4hDobse34oIG2r0mjbYXzsEXXLEqv077jUh3pjoYmcc,981
603
604
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/CONTRIBUTING.md,sha256=TlNwpeYemLdYq4jdo24v7nwDIj3RmZ7u2j_LCQiQR74,2634
604
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/README.md,sha256=Utp30UIi79tpWxwKHDJJTpDDlhvUDkgYHmEKVI5vse4,83639
605
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/README.md,sha256=RQVRi-ONxIf185i1ijECm2hQ16WI40EtF56uhE-_LII,87240
605
606
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.add-docker-label.ts,sha256=avHktilCBVPuVelquVaY2ylRkSLraWn7vUIIIFPsbyI,1375
606
607
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.add-environment-variable.ts,sha256=sIdwJl7LYh5wlv_EDLPSGCavC2OF6W8IBwZ_hMOnCfw,1143
607
608
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.app-mesh-proxy-config.ts,sha256=qhtztZPppP98wdEneOEDI3p0P608q0DtS_Nv-6grLHM,1596
@@ -609,6 +610,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.availa
609
610
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.awslogs-driver.ts,sha256=js3ZnGoPKDVQl5NhZqF-acS5BTNeRkKWBjHUYVJkV0Q,1322
610
611
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.blue-green-deployment-strategy.ts,sha256=Rh8t4oub7rWxHATyTpwIbSjQwRAR8R8bpUXgAckK_mE,4222
611
612
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.bottlerocket.ts,sha256=pio8vLSNlFeokyocKepVUq1ZJXhhrC7iH2ZVJiJxatg,728
613
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.canary-deployment-strategy.ts,sha256=M05Nst_ZXx4KQQMcoI3lo5DIAMTd3LU87v4taHxJplI,3175
612
614
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.capacity-provider-managed-draining.ts,sha256=K_eRJ9thQNqqo1TrA_dOzgieYkuJnhGEbZQcR0hyBzo,1907
613
615
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.capacity-provider.ts,sha256=i4ybZBXakmn9EOHwGKidhqPDOZlkWQcRxVOt4QoOA_k,1514
614
616
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.capacity-providers.ts,sha256=1JfeuquUWRLNw-FThuQac5sePyc_j4Gjx5iNjV9cbZM,892
@@ -643,10 +645,12 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.gravit
643
645
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.graviton.ts,sha256=-L0L2_uXEpuszWK0FNPNErOVzYj6jLz_GN__t3-IUJo,719
644
646
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.lb-awsvpc-nw.ts,sha256=VGnwETVmq2owapn3crFeJ187sqNYjb1afkBcNZaRNzs,1813
645
647
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.lb-bridge-nw.ts,sha256=0nlq9ShB7EeFK-6OE6-id-5PCfhGaDf5snnzYNUnHCQ,1822
648
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.linear-deployment-strategy.ts,sha256=CjogKM6GaQu-5pqM-D2jTAd4FCJ_xS6MRTpqX24ma28,3175
646
649
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.managedinstances-capacity-provider-default-roles.ts,sha256=CuvR4P7pA9IYH_7SPDMMwXOeMyWlCkaaL4JBuuRLf0Y,2824
647
650
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.managedinstances-capacity-provider.ts,sha256=v15lSJEI71zG-MPupT3UeWM0bgvI-TWjwaX7dDvLNO0,3631
648
651
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.managedinstances-no-default-capacity-provider.ts,sha256=2Fc943-G8gfENka_oSUmasxiA-qrTuget9URJhnSFa8,3330
649
652
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.nlb-awsvpc-nw.ts,sha256=vXdMwV8Ythm3Qa4cHX_mg0WjRESCMYe0GgA3tX_uqTk,1474
653
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.none-log-driver.ts,sha256=R_rAbncMvE7_vP397EaDSb0-e9C7_SXtGktw1l8i0lM,635
650
654
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.placement-constraint-default-empty.ts,sha256=ANXNlnTGzAmBQsw41D6uDk4ZKPriV_al4MtXQ7I_1Hg,1369
651
655
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.placement-strategies.ts,sha256=pADTKzHjHiYoEbZ6JK5oE4-ufRc41zmQ6mmmno34xKo,2175
652
656
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.pseudo-terminal.ts,sha256=ElbIYMh9SD5nUkl6v3fx02egE6wfhZHMCuU3urmnZVg,1137
@@ -801,7 +805,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-elasticsearch/in
801
805
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-elasticsearch/integ.elasticsearch.ts,sha256=gG2zi0UswICJm09yzQDjydOojZ70akV5dClYcTcoPkQ,1680
802
806
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-elasticsearch/integ.elasticsearch.ultrawarm.ts,sha256=y6MU1pvPFpYQpJe0foV4WdFvOSGSinABAGQa1gK_yKk,597
803
807
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-elasticsearch/integ.elasticsearch.unsignedbasicauth.ts,sha256=qTmKzrWQSlUUSRmV2qOQ_PpZskV4YHgQH9lI0Dltnkk,826
804
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-events/README.md,sha256=zQLpjkTuk55A4ONa3EdlKYlWDWs0jnSDJJN68FTlJRU,13401
808
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-events/README.md,sha256=x3ZcCnS7R1TNqGuRC6CMJPy8cWx7DabArJF3j97opQM,13494
805
809
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-events/integ.api-destination.ts,sha256=BG-rRLNMUyb0OurfMENJKVcUgU2Pz_x8-Jim7ygz8bg,1551
806
810
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-events/integ.archive-customer-managed-key.ts,sha256=bPlvGpGjSXGO5afmFwQqWJI1L5Eb7iF-dlh-7zRw9BA,661
807
811
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-events/integ.archive.ts,sha256=reNAFunkaCHQ8-fhFfmKtrDaUYUQq8XeXuCfslnxkSY,570
@@ -851,7 +855,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-globalaccelerato
851
855
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-globalaccelerator/integ.globalaccelerator-unique-name.ts,sha256=LO9qlrFoOyrqUbi1H_eufzIccMZntbEKPI_p3ODrK1Y,383
852
856
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-globalaccelerator-endpoints/README.md,sha256=ldPU_ydEQx_MPMu_3hTa9hc7JHLtjbnTIWGTvVOpUZA,407
853
857
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-globalaccelerator-endpoints/integ.globalaccelerator.ts,sha256=uk9vhUCdpJUJjWHwURRrPD7PexkbQJ8vBiVgK8PZBEw,2416
854
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/README.md,sha256=DOL_fHL0njrqeNWg1lTpC81yGRXOlMPOK08_jghDb4Q,32879
858
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/README.md,sha256=mJ_z-HxZ9x2BOM3vgwKXHebIAz99Ov9flrO5-GdWwpU,33158
855
859
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.access-key.ts,sha256=22q0DLYwDlurvFK4sErOqJgVliGyz28Xa0TKqGXHrmI,508
856
860
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.composite-principal.ts,sha256=geaeoyLvnbbSc6qtwGbVur9frN_Ff4fgHNZG7Yah0Rk,624
857
861
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.condition-with-ref.ts,sha256=yqu0BUZ2WDmMnwO2XKaFhsji4Cp_sqCDolDnDCfcHWw,925
@@ -989,13 +993,14 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-nodejs/in
989
993
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-nodejs/integ.modules.ts,sha256=etsjdg80JJb_gag1tC0I2DgOcARVOCrRZsQYr46sQv0,2323
990
994
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-nodejs/integ.nodejs.build.images.ts,sha256=6gF-Mb9LgF8E5PpGwkBmaWqepqEqzbTuSpnnqKZ1_sU,1721
991
995
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-nodejs/integ.specifycode.ts,sha256=JdlBTKpPf5xlQlfTYlXUMbMVwGD0a-heEYPx0ZNFO9U,1938
992
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/README.md,sha256=_JHu8-Ff-ib19WShFFPnEBy-LDPsRq1aiixJEg37fIk,24587
996
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/README.md,sha256=bj8HqK318cRTrSlYpLqQxWEnQxGlzuj-nbs-0AvK9Sg,25043
993
997
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.expose-metric.ts,sha256=nHHNSRyq2eGVZkZe1_UWwdr7vWnBDqdMWoiArzJleHI,1256
994
998
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.log-group-metrics.ts,sha256=3t37idu5s4B6dxhZWD_7pNeue7eJCume6MdEgtc1TTs,707
995
999
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.log-group.ts,sha256=ffml_7GAfXAFSr_qqzrBZ08eG_ZhLS1T-8d-hdsxNf4,1312
996
1000
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.log-resource-policy-any-principal.ts,sha256=koq7lWWdsPm9OJjkE6EWIiKZaEEuUhvQckp-7yIaqEo,829
997
1001
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.log-retention-retries.ts,sha256=b3uLWuEZZeOOkwno6y3yBFVT6AbcX9z1VITcyupKnfQ,1336
998
1002
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.log-retention.ts,sha256=KPWCfAezyRQ9KZR88gbnsIb9TUrjjUYLDMDjFc54XvU,900
1003
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.loggroup-deletionprotection.ts,sha256=Dm6vqjQDHA6P6cCWFsxpv3Dm8ML58FGrX34BdnFWrfI,383
999
1004
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.loggroup-grantread.ts,sha256=3Gjcq80bm6qeqjTmq_rbVVYvbWDTLkGWFclh3_XLY2Q,491
1000
1005
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.loggroup-transformer.ts,sha256=2DmUNPzqW5FOnYRckyW74XKJwbubhc2gdIT2YhUoi9E,1271
1001
1006
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.loggroupclass.ts,sha256=ZiJznICcvepDPf97FzReAD5l9FTnWtL6RsNw1cQABgg,2001
@@ -1011,7 +1016,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs-destination
1011
1016
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs-destinations/integ.firehose.ts,sha256=Gdtm0GoW-RozF_9eEbScyjk_4CLi01Rrr6tLy_V8tcs,1576
1012
1017
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs-destinations/integ.kinesis.ts,sha256=o3rBgalluFInomW7D0U6Q-mBKSFR5oEnQXTlRm8ZxOE,1306
1013
1018
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs-destinations/integ.lambda.ts,sha256=kViTEqJT9jF3p0Pwra-Sn8j7tQl9YAe88Lp2wl0dz4M,2914
1014
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/README.md,sha256=-6-rtOyDlgFxSwzLyjEVSsh73YvV4OcCHA06AXceZkQ,17148
1019
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/README.md,sha256=-op7Z9N5kTk8sbQG_3DM4LrC-89PX746n1irOQiARyU,17847
1015
1020
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.advancedsecurity-with-saml.ts,sha256=ErD33dAvKKCYg_PFoQCNijmVPbXTDHr-6QMimrxoSLI,1213
1016
1021
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.advancedsecurity.ts,sha256=eV_BTdrO2DY4PiCDAbkvznyzGTLp3hKB8WgYo1tK0rI,915
1017
1022
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.cognitodashboardsauth.ts,sha256=DWc0X9LRaepUoYuWI5IlC8EecTD6hLd2-Z4pw7_VrhA,1867
@@ -1030,7 +1035,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservic
1030
1035
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.unsignedbasicauth.ts,sha256=B13diAjHunM-L1w1FHgpDRup-j4Xnnb-rpn171bbjpw,925
1031
1036
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.vpc.ts,sha256=92FvTQd0U190KN53A8UU4eV3ggwm1GeVn4f3nRE56T0,1400
1032
1037
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.without-logs-resource-policy.ts,sha256=CTj7BjTXc_Q4J_NnK8C62vXGl3ZIWMbmcuPHjvW01vU,1971
1033
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/README.md,sha256=jy-sddaLY39Rz3PMXl0OWvhE0jttYxcHSoDvhKb9IsA,68098
1038
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/README.md,sha256=ZPpoabDUm39t-iDXwRne8pJ-TPJJCsoo6J3YDhhJ5UA,70542
1034
1039
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/aurora-serverless-v2.md,sha256=D4_EKB6d62nNN0LwL3XGX0YFjwdSBXE8namaBUqU9qw,10484
1035
1040
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-applyimmediately.ts,sha256=UB7bdVX6UD63SYroZRXs5V493f1lUX_3lD5W7EeU5AQ,1135
1036
1041
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-availability-zone.ts,sha256=59DvW_-fFQ2NPddJdbayEu7V-NVBAPvm3A05IvbBOAA,1765
@@ -1061,6 +1066,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluste
1061
1066
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-serverless-v2-autopause.ts,sha256=ia2s75dUp2LzDJCSeev-_WgvkmIgztp4x88YSyD_0rc,1063
1062
1067
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-serverless-v2.ts,sha256=kwzVT7GTWqaYSTtOmOANIqqUKPBvr2C8Y37NZptzF78,2196
1063
1068
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-snapshot.ts,sha256=DOxpSqy5xaZ_kVa8q02TSC8i9_Cv2UDlAFnQY0j2dYM,2338
1069
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-volume-iops-metric.ts,sha256=3TlMk5rj75XBwhmSKsuQtcZM1heq7dXBrJvZ2hrSp5c,1739
1064
1070
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster.ts,sha256=GOHrohYqQ4oEQxTXwlueW69vxIZxwmD6f5eN4ONsiIs,3509
1065
1071
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.instance-applyimmediately.ts,sha256=l5SXf5yZ1gMOA-kFdY9f2TKRyGufmVJuWG2rEpuo1Ps,931
1066
1072
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.instance-ca-certificate.ts,sha256=t0IwouXqbtdmyu6-hwMyai_uex_aenGKXAvg4-q8x9k,864
@@ -1072,6 +1078,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.instan
1072
1078
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.instance-from-generated-password.ts,sha256=wIXaK_wbr7BtZKQgp7JWeW9iSMo0EH4DKWkqel01Hxs,964
1073
1079
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.instance-gp3.ts,sha256=AzOuWCeScqhjKztXdqJ7W3rZp-USn2A6deLMT9hAb3g,1063
1074
1080
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.instance-io2.ts,sha256=NFgyH2HJeFl8gynGcbbOWA7D_0nXY3CN4Ft6RBfwXYA,922
1081
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.instance-iops-metric.ts,sha256=I-vGryxk9SUS60X02yPpjo0WcogpvjMeD3O6_UMsfOA,1113
1075
1082
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.instance-kerberos-without-domainRole.ts,sha256=2ujctrOCd8wIhmMqQC7uI0Ol_lBu7L3f9xr_eJP4A5E,1008
1076
1083
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.instance-kerberos.ts,sha256=OY5j56NvTStqKp5etrQbzg4Gu4KxvfMX-nX2pV4R-Go,1413
1077
1084
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.instance-lookup.ts,sha256=VbY1FQl8mZXx46mdusPdj71rXeYAVun2qR44zwddsPM,2799
@@ -1081,6 +1088,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.instan
1081
1088
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.instance-with-parameter-group.ts,sha256=BELAKjpQc5Rlu2kjpJk8PUhQk2UySlkPhuHdVRiwUpQ,1158
1082
1089
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.instance.lit.ts,sha256=n8XH1sJD_y2vAMXy2JlOEY4Pg58qA-IpurwwA6NQMpU,4182
1083
1090
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.option-group.ts,sha256=N1qNGMO7u7rgtQ_N_MZKwOgXXNeAF4Emk18QgvDIUws,1121
1091
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.proxy-default-auth-scheme.ts,sha256=4PYXnEgWu0SiorQJ9yznfeRRhvatZNsKYbMuedbrqfY,1328
1084
1092
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.proxy-endpoint.ts,sha256=DBXydbhQkqKYcwS7EHoBu0AG-FSJ5NdD6RP3r6cxlo4,1186
1085
1093
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.proxy-mariadb.ts,sha256=h9qrowwmonRVBW53bJVz3wneeErmrHjPdqAoV31WFfY,1391
1086
1094
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.proxy-sql-server.ts,sha256=8168nOsK3O0H9OCyZe3vdqj3ZwB9LUo8c_yOiGM7IZg,1607
@@ -1280,7 +1288,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ssm/integ.parame
1280
1288
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ssm/integ.parameter-store-string.ts,sha256=gS0ghSz-LqGHK62JAGXl1lpX2ZVRfKVL1xeJsUrIJWU,3228
1281
1289
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ssm/integ.parameter.ts,sha256=doRH6bL5H69NjudWjxLfIRPZ7KL3UrGGJFsRrFiQXXE,917
1282
1290
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ssm/integ.value-from-lookup-with-default.ts,sha256=NuuHvXnav4chWSJEm6gV_mQ-Md6DHfMY82NcoeukGVU,1561
1283
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/README.md,sha256=sZY2W9XlVddHRkM1iPF5PLxY5YS8M4y8k-khtWdGDps,71215
1291
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/README.md,sha256=2lnXJDVPw6BrYdKY3oNm0tN4umcCutUXjJHQJMnTE1g,71759
1284
1292
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/integ.custom-state.ts,sha256=fUJ2LNZcT-TNw4enUmLAu8TCzrvEZ9CxJDK4ZvKXuOI,1752
1285
1293
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/integ.distributed-map-csv-delimiter-with-result-writer-v2.ts,sha256=9sUCYE3Rn9OJsCc8GLWS3qTUYPDv1vH6iRHuMmG386Y,2670
1286
1294
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/integ.distributed-map-csv-delimiter.ts,sha256=f_ZUPr3pI1Cymj5NEBNiqJTeQPF7SJeI0wRTdB5L78Y,2476
@@ -1299,6 +1307,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/in
1299
1307
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/integ.map-inline.ts,sha256=vzCMkfobIPqMd94tOD2uxCi7CxEhxG9Po07LnrfV_q0,971
1300
1308
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/integ.map-itemselector.ts,sha256=n_Ovy855kjSCK-GFrNzhaz7T0cVHUXUeSt8QNngYz98,1115
1301
1309
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/integ.map-jsonata-itemselector.ts,sha256=_azQApIjXjJUDTTDrJHMqui_E3wOx2RR5_dkYn8AFPE,1113
1310
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/integ.map-jsonata-maxconcurrency.ts,sha256=LebG25DadsofbVpnRzKOg5wf219_t0ulvt5QOJ1lGiA,1138
1302
1311
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/integ.map-with-catch.ts,sha256=qs8xSUob6jZzeLTgKZmGGU5gY7Z7m-ZUcstI3AhNHNc,2824
1303
1312
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/integ.parallel-parameters.ts,sha256=xseArfY0EBjgh4X96w7yi7Xq4sWGzzzLwB2JAw9JXsk,1739
1304
1313
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/integ.s3-json-item-reader.ts,sha256=69K8O1x1sUkzGFfcf-KEmzzo19yvrdl0Po59k2grxXI,5773
@@ -1480,8 +1489,8 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.pipe
1480
1489
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/region-info/README.md,sha256=vewWkV3ds9o9iyyYaJBNTkaKJ2XA6K2yF17tAxUnujg,2718
1481
1490
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/triggers/README.md,sha256=hYIx7DbG_7p4LYLUfxDwgIQjw9UNdz1GLrqDe8_Dbko,4132
1482
1491
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/triggers/integ.triggers.ts,sha256=LfeVru_CggiFXKPVa8vwt6Uv43SV3oAioDGmd8PyMHc,2859
1483
- konokenj_cdk_api_mcp_server-0.68.0.dist-info/METADATA,sha256=t9iogwMltAAxxPA6_Qu5tx-V6x03ySOho_RBSWOtwvk,2646
1484
- konokenj_cdk_api_mcp_server-0.68.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
1485
- konokenj_cdk_api_mcp_server-0.68.0.dist-info/entry_points.txt,sha256=bVDhMdyCC1WNMPOMbmB82jvWII2CIrwTZDygdCf0cYQ,79
1486
- konokenj_cdk_api_mcp_server-0.68.0.dist-info/licenses/LICENSE.txt,sha256=5OIAASeg1HM22mVZ1enz9bgZ7TlsGfWXnj02P9OgFyk,1098
1487
- konokenj_cdk_api_mcp_server-0.68.0.dist-info/RECORD,,
1492
+ konokenj_cdk_api_mcp_server-0.70.0.dist-info/METADATA,sha256=jH-lWPiCse-acxprkStAlMhgor_2hEmFzIlF64tKsrA,2646
1493
+ konokenj_cdk_api_mcp_server-0.70.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
1494
+ konokenj_cdk_api_mcp_server-0.70.0.dist-info/entry_points.txt,sha256=bVDhMdyCC1WNMPOMbmB82jvWII2CIrwTZDygdCf0cYQ,79
1495
+ konokenj_cdk_api_mcp_server-0.70.0.dist-info/licenses/LICENSE.txt,sha256=5OIAASeg1HM22mVZ1enz9bgZ7TlsGfWXnj02P9OgFyk,1098
1496
+ konokenj_cdk_api_mcp_server-0.70.0.dist-info/RECORD,,