konokenj.cdk-api-mcp-server 0.48.0__py3-none-any.whl → 0.50.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (79) hide show
  1. cdk_api_mcp_server/__about__.py +1 -1
  2. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-amplify-alpha/README.md +12 -0
  3. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-bedrock-agentcore-alpha/README.md +796 -0
  4. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-eks-v2-alpha/README.md +116 -29
  5. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-msk-alpha/README.md +8 -8
  6. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/mixins-preview/README.md +16 -0
  7. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ.api-with-authorizer-and-proxy.ts +1 -1
  8. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ.lambda-api.ts +1 -1
  9. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-authorizers/integ.iam.ts +1 -1
  10. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-authorizers/integ.lambda.ts +2 -2
  11. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-authorizers/integ.user-pool.ts +1 -1
  12. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.add-subroute-integration.ts +7 -4
  13. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.http-proxy.ts +1 -1
  14. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.lambda-proxy.ts +1 -1
  15. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.lambda.ts +4 -4
  16. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-appsync/integ.graphql-lambda-permission.ts +1 -1
  17. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-appsync/integ.js-resolver.ts +1 -1
  18. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-batch/README.md +15 -1
  19. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-batch/integ.managed-compute-environment-default-instance-class.ts +20 -0
  20. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudformation/integ.core-custom-resources-node-18.ts +1 -1
  21. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudformation/integ.core-custom-resources-service-timeout.ts +1 -1
  22. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudfront-origins/README.md +33 -0
  23. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudfront-origins/integ.function-url-origin-ip-address-type.ts +84 -0
  24. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudfront-origins/integ.origin-response-completion-timeout.ts +1 -1
  25. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudtrail/integ.cloudtrail-data-events-only.ts +1 -1
  26. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/README.md +1 -1
  27. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/integ.anomaly-detection-alarm.ts +44 -2
  28. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/README.md +15 -0
  29. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/integ.client-vpn-endpoint-disconnect-on-session-timeout.ts +65 -0
  30. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecr/README.md +40 -1
  31. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecr/integ.tag-mutability-exclusion.ts +30 -0
  32. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/README.md +3 -0
  33. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.managedinstances-capacity-provider.ts +5 -3
  34. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.managedinstances-no-default-capacity-provider.ts +107 -0
  35. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs-patterns/integ.alb-fargate-service-public-private-switch.ts +45 -0
  36. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/README.md +20 -0
  37. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-cluster-removal-policy.ts +31 -0
  38. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-elasticloadbalancingv2/integ.alb-lambda-multi-value-headers.ts +1 -1
  39. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-elasticloadbalancingv2/integ.alb.oidc.ts +1 -1
  40. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-elasticloadbalancingv2-actions/integ.cognito.ts +1 -1
  41. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesis/README.md +42 -0
  42. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesis/integ.stream-shard-level-monitoring.ts +47 -0
  43. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/README.md +96 -0
  44. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/integ.record-format-conversion-schema.ts +154 -0
  45. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/integ.record-format-conversion.ts +178 -0
  46. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/README.md +9 -0
  47. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.binary-payload.ts +1 -1
  48. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.logging-config.ts +8 -8
  49. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.params-and-secrets.ts +1 -1
  50. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.runtime-management.ts +1 -1
  51. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.runtime.inlinecode.ts +0 -7
  52. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-nodejs/integ.dependencies-pnpm.ts +1 -1
  53. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-nodejs/integ.function-exclude-smithy-models.ts +2 -2
  54. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-nodejs/integ.nodejs.build.images.ts +1 -1
  55. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/README.md +4 -0
  56. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.metricfilter-apply-on-transformed-logs.ts +29 -0
  57. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.subscriptionfilter.ts +1 -1
  58. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.min.ts +1 -0
  59. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-data-api-to-imported-cluster.ts +1 -1
  60. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-data-api.ts +1 -1
  61. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53/README.md +12 -0
  62. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53/integ.private-hosted-zone-from-attributes.ts +41 -0
  63. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-data.ts +4 -0
  64. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/README.md +1 -1
  65. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.call-aws-service-cross-region-lambda.ts +1 -1
  66. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.invoke-json-path.ts +102 -0
  67. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-synthetics/README.md +17 -1
  68. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-synthetics/integ.canary-runtime-validation.ts +43 -0
  69. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-synthetics/integ.canary.ts +2 -0
  70. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.aws-custom-resource.ts +1 -1
  71. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.custom-resource-config-lambda-node-runtime.ts +1 -1
  72. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.invoke-function-payload.ts +1 -1
  73. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/FEATURE_FLAGS.md +43 -1
  74. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/README.md +32 -1
  75. {konokenj_cdk_api_mcp_server-0.48.0.dist-info → konokenj_cdk_api_mcp_server-0.50.0.dist-info}/METADATA +2 -2
  76. {konokenj_cdk_api_mcp_server-0.48.0.dist-info → konokenj_cdk_api_mcp_server-0.50.0.dist-info}/RECORD +79 -63
  77. {konokenj_cdk_api_mcp_server-0.48.0.dist-info → konokenj_cdk_api_mcp_server-0.50.0.dist-info}/WHEEL +0 -0
  78. {konokenj_cdk_api_mcp_server-0.48.0.dist-info → konokenj_cdk_api_mcp_server-0.50.0.dist-info}/entry_points.txt +0 -0
  79. {konokenj_cdk_api_mcp_server-0.48.0.dist-info → konokenj_cdk_api_mcp_server-0.50.0.dist-info}/licenses/LICENSE.txt +0 -0
@@ -14,7 +14,7 @@ const stack = new cdk.Stack(app, 'cluster-data-api');
14
14
  const vpc = new ec2.Vpc(stack, 'VPC');
15
15
 
16
16
  const fucntion = new lambda.Function(stack, 'Function', {
17
- runtime: lambda.Runtime.NODEJS_18_X,
17
+ runtime: lambda.Runtime.NODEJS_20_X,
18
18
  handler: 'index.handler',
19
19
  code: lambda.Code.fromInline('exports.handler = async (event) => { return "hello"; }'),
20
20
  });
@@ -558,6 +558,18 @@ const zoneFromAttributes = route53.PublicHostedZone.fromPublicHostedZoneAttribut
558
558
  const zoneFromId = route53.PublicHostedZone.fromPublicHostedZoneId(this, 'MyZone', 'ZOJJZC49E0EPZ');
559
559
  ```
560
560
 
561
+ You can import a Private Hosted Zone with `PrivateHostedZone.fromPrivateHostedZoneId` and `PrivateHostedZone.fromPrivateHostedZoneAttributes` methods:
562
+
563
+ ```ts
564
+ const privateZoneFromAttributes = route53.PrivateHostedZone.fromPrivateHostedZoneAttributes(this, 'MyPrivateZone', {
565
+ zoneName: 'example.local',
566
+ hostedZoneId: 'ZOJJZC49E0EPZ',
567
+ });
568
+
569
+ // Does not know zoneName
570
+ const privateZoneFromId = route53.PrivateHostedZone.fromPrivateHostedZoneId(this, 'MyPrivateZone', 'ZOJJZC49E0EPZ');
571
+ ```
572
+
561
573
  You can use `CrossAccountZoneDelegationRecord` on imported Hosted Zones with the `grantDelegation` method:
562
574
 
563
575
  ```ts
@@ -0,0 +1,41 @@
1
+ import * as ec2 from 'aws-cdk-lib/aws-ec2';
2
+ import * as cdk from 'aws-cdk-lib';
3
+ import * as route53 from 'aws-cdk-lib/aws-route53';
4
+ import { PrivateHostedZone } from 'aws-cdk-lib/aws-route53';
5
+ import { ExpectedResult, IntegTest } from '@aws-cdk/integ-tests-alpha';
6
+
7
+ const app = new cdk.App();
8
+
9
+ const stack = new cdk.Stack(app, 'aws-cdk-route53-integ');
10
+
11
+ const vpc = new ec2.Vpc(stack, 'VPC', { maxAzs: 1, restrictDefaultSecurityGroup: false });
12
+
13
+ const privateZone = new PrivateHostedZone(stack, 'PrivateZone', {
14
+ zoneName: 'aws-cdk.dev', vpc,
15
+ });
16
+
17
+ const expectPrivateHostedZone = route53.PrivateHostedZone.fromHostedZoneAttributes(stack, 'ExpectPrivateHostedZone', {
18
+ hostedZoneId: privateZone.hostedZoneId,
19
+ zoneName: privateZone.zoneName,
20
+ });
21
+
22
+ const integTest = new IntegTest(app, 'AwsCdkRoute53IntegTest', {
23
+ testCases: [stack],
24
+ diffAssets: false,
25
+ });
26
+
27
+ const hostedZoneApiCall = integTest.assertions.awsApiCall('Route53', 'getHostedZone', {
28
+ Id: expectPrivateHostedZone.hostedZoneId,
29
+ });
30
+
31
+ hostedZoneApiCall.expect(
32
+ ExpectedResult.objectLike({
33
+ HostedZone: {
34
+ Id: expectPrivateHostedZone.hostedZoneId,
35
+ Name: expectPrivateHostedZone.zoneName,
36
+ },
37
+ }),
38
+ );
39
+
40
+ app.synth();
41
+
@@ -50,6 +50,9 @@ const file7 = Source.yamlData('my-yaml/secret-config.yaml', {
50
50
  secret_value: tokenizedValue,
51
51
  });
52
52
 
53
+ // case for empty string
54
+ const file8 = Source.data('file8.txt', '');
55
+
53
56
  const deployment = new BucketDeployment(stack, 'DeployMeHere', {
54
57
  destinationBucket: bucket,
55
58
  sources: [file1, file2],
@@ -61,6 +64,7 @@ deployment.addSource(file4);
61
64
  deployment.addSource(file5);
62
65
  deployment.addSource(file6);
63
66
  deployment.addSource(file7);
67
+ deployment.addSource(file8);
64
68
 
65
69
  new CfnOutput(stack, 'BucketName', { value: bucket.bucketName });
66
70
 
@@ -1582,7 +1582,7 @@ const connection = new events.Connection(this, 'Connection', {
1582
1582
 
1583
1583
  new tasks.HttpInvoke(this, 'Invoke HTTP API', {
1584
1584
  apiRoot: 'https://api.example.com',
1585
- apiEndpoint: sfn.TaskInput.fromText('path/to/resource'),
1585
+ apiEndpoint: sfn.TaskInput.fromText(sfn.JsonPath.format('resource/{}/details', sfn.JsonPath.stringAt('$.resourceId'))),
1586
1586
  body: sfn.TaskInput.fromObject({ foo: 'bar' }),
1587
1587
  connection,
1588
1588
  headers: sfn.TaskInput.fromObject({ 'Content-Type': 'application/json' }),
@@ -10,7 +10,7 @@ class TestStack extends cdk.Stack {
10
10
  super(scope, id, props);
11
11
  // Create a target Lambda function that returns JSON response
12
12
  const targetLambda = new lambda.Function(this, 'TargetLambda', {
13
- runtime: lambda.Runtime.NODEJS_18_X,
13
+ runtime: lambda.Runtime.NODEJS_20_X,
14
14
  handler: 'index.handler',
15
15
  code: lambda.Code.fromInline(`
16
16
  exports.handler = async (event) => {
@@ -0,0 +1,102 @@
1
+ /// !cdk-integ aws-stepfunctions-tasks-http-invoke-json-path-integ
2
+
3
+ import * as path from 'path';
4
+ import { IntegTest, ExpectedResult } from '@aws-cdk/integ-tests-alpha';
5
+ import * as cdk from 'aws-cdk-lib';
6
+ import * as apigateway from 'aws-cdk-lib/aws-apigateway';
7
+ import * as events from 'aws-cdk-lib/aws-events';
8
+ import * as sfn from 'aws-cdk-lib/aws-stepfunctions';
9
+ import * as lambda from 'aws-cdk-lib/aws-lambda-nodejs';
10
+ import * as tasks from 'aws-cdk-lib/aws-stepfunctions-tasks';
11
+ import { password, username } from './my-lambda-handler';
12
+
13
+ /*
14
+ * Creates an API Gateway instance with a GET method and mock integration,
15
+ * secured with basic auth. It then creates a matching Connection and uses it
16
+ * in a state machine with a task state to invoke the endpoint.
17
+ *
18
+ * Stack verification steps :
19
+ * * aws stepfunctions start-execution --state-machine-arn <deployed state machine arn> : should return execution arn
20
+ * * aws stepfunctions describe-execution --execution-arn <execution-arn generated before> : should return status as SUCCEEDED
21
+ */
22
+ const app = new cdk.App();
23
+ const stack = new cdk.Stack(app, 'aws-stepfunctions-tasks-http-invoke-json-path-integ');
24
+
25
+ const authorizerHandler = new lambda.NodejsFunction(stack, 'AuthorizerHandler', {
26
+ entry: path.resolve(__dirname, 'my-lambda-handler', 'index.ts'),
27
+ handler: 'handler',
28
+ });
29
+
30
+ const authorizer = new apigateway.TokenAuthorizer(stack, 'Authorizer', {
31
+ handler: authorizerHandler,
32
+ identitySource: 'method.request.header.Authorization',
33
+ resultsCacheTtl: cdk.Duration.seconds(0),
34
+ });
35
+
36
+ const api = new apigateway.RestApi(stack, 'IntegRestApi');
37
+
38
+ api.root.addResource('test-json-path').addMethod(
39
+ 'GET',
40
+ new apigateway.MockIntegration({
41
+ integrationResponses: [
42
+ {
43
+ statusCode: '200',
44
+ responseTemplates: {
45
+ 'application/json': JSON.stringify({ message: 'Hello, tester!' }),
46
+ },
47
+ },
48
+ ],
49
+ passthroughBehavior: apigateway.PassthroughBehavior.NEVER,
50
+ requestTemplates: {
51
+ 'application/json': '{ "statusCode": 200 }',
52
+ },
53
+ }),
54
+ {
55
+ authorizer,
56
+ methodResponses: [
57
+ {
58
+ statusCode: '200',
59
+ },
60
+ ],
61
+ },
62
+ );
63
+
64
+ const connection = new events.Connection(stack, 'Connection', {
65
+ authorization: events.Authorization.basic(username, cdk.SecretValue.unsafePlainText(password)),
66
+ });
67
+
68
+ const httpInvokeTask = new tasks.HttpInvoke(stack, 'Invoke HTTP Endpoint', {
69
+ apiRoot: api.urlForPath('/'),
70
+ apiEndpoint: sfn.TaskInput.fromJsonPathAt('$.endpointPath'),
71
+ connection,
72
+ method: sfn.TaskInput.fromText('GET'),
73
+ });
74
+
75
+ const sm = new sfn.StateMachine(stack, 'StateMachine', {
76
+ definition: httpInvokeTask,
77
+ timeout: cdk.Duration.seconds(30),
78
+ });
79
+
80
+ const testCase = new IntegTest(app, 'HttpInvokeTest', {
81
+ testCases: [stack],
82
+ });
83
+
84
+ // Start an execution
85
+ const start = testCase.assertions.awsApiCall('StepFunctions', 'startExecution', {
86
+ stateMachineArn: sm.stateMachineArn,
87
+ input: JSON.stringify({
88
+ endpointPath: 'test-json-path',
89
+ }),
90
+ });
91
+
92
+ // describe the results of the execution
93
+ const describe = testCase.assertions.awsApiCall('StepFunctions', 'describeExecution', {
94
+ executionArn: start.getAttString('executionArn'),
95
+ });
96
+
97
+ // assert the results
98
+ describe.expect(ExpectedResult.objectLike({
99
+ status: 'SUCCEEDED',
100
+ }));
101
+
102
+ app.synth();
@@ -267,7 +267,7 @@ new synthetics.Canary(this, 'Bucket Canary', {
267
267
  ```
268
268
 
269
269
  > **Note:** Synthetics have a specified folder structure for canaries.
270
- > For Node with puppeteer scripts supplied via `code.fromAsset()` or `code.fromBucket()`, the canary resource requires the following folder structure:
270
+ > For Node with puppeteer scripts supplied via `code.fromAsset()` or `code.fromBucket()`, the canary resource requires the following folder structure for runtime versions older than `syn-nodejs-puppeteer-11.0`:
271
271
  >
272
272
  > ```plaintext
273
273
  > canary/
@@ -276,6 +276,22 @@ new synthetics.Canary(this, 'Bucket Canary', {
276
276
  > ├── <filename>.js
277
277
  > ```
278
278
  >
279
+ > For puppeteer based runtime versions newer than or equal to `syn-nodejs-puppeteer-11.0`, `nodjs/node_modules` is not necessary but supported.
280
+ >
281
+ > Both
282
+ > ```plaintext
283
+ > canary/
284
+ > ├── nodejs/
285
+ > ├── node_modules/
286
+ > ├── <filename>.js
287
+ > ```
288
+ > And
289
+ > ```plaintext
290
+ > canary/
291
+ > ├── <filename>.js
292
+ > ```
293
+ > are supported.
294
+ >
279
295
  > For Node with playwright scripts supplied via `code.fromAsset()` or `code.fromBucket()`, the canary resource requires the following folder structure:
280
296
  >
281
297
  > ```plaintext
@@ -0,0 +1,43 @@
1
+ import * as path from 'node:path';
2
+ import { App, Duration, Size, Stack, StackProps } from 'aws-cdk-lib/core';
3
+ import { IntegTest } from '@aws-cdk/integ-tests-alpha';
4
+ import { Construct } from 'constructs';
5
+ import * as synthetics from 'aws-cdk-lib/aws-synthetics';
6
+
7
+ class TestStack extends Stack {
8
+ public puppeteer11RootCanary: synthetics.Canary;
9
+ public puppeteer11NodeModulesCanary: synthetics.Canary;
10
+
11
+ constructor(scope: Construct, id: string, props?: StackProps) {
12
+ super(scope, id, props);
13
+
14
+ // Test puppeteer 11.0+ with root-level files only
15
+ this.puppeteer11RootCanary = new synthetics.Canary(this, 'Puppeteer11RootCanary', {
16
+ runtime: synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_11_0,
17
+ test: synthetics.Test.custom({
18
+ handler: 'canary.handler',
19
+ code: synthetics.Code.fromAsset(path.join(__dirname, 'canaries-runtime-validation', 'root-only')),
20
+ }),
21
+ memory: Size.mebibytes(1024),
22
+ timeout: Duration.minutes(2),
23
+ });
24
+
25
+ // Test puppeteer 11.0+ also supports nodejs/node_modules structure
26
+ this.puppeteer11NodeModulesCanary = new synthetics.Canary(this, 'Puppeteer11NodeModulesCanary', {
27
+ runtime: synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_11_0,
28
+ test: synthetics.Test.custom({
29
+ handler: 'canary.handler',
30
+ code: synthetics.Code.fromAsset(path.join(__dirname, 'canaries')),
31
+ }),
32
+ memory: Size.mebibytes(1024),
33
+ timeout: Duration.minutes(2),
34
+ });
35
+ }
36
+ }
37
+
38
+ const app = new App();
39
+ const testStack = new TestStack(app, 'SyntheticsCanaryRuntimeValidationStack');
40
+
41
+ new IntegTest(app, 'SyntheticsCanaryRuntimeValidation', {
42
+ testCases: [testStack],
43
+ });
@@ -114,6 +114,7 @@ const selenium41 = createCanaryByRuntimes(Runtime.SYNTHETICS_PYTHON_SELENIUM_4_1
114
114
  const selenium50 = createCanaryByRuntimes(Runtime.SYNTHETICS_PYTHON_SELENIUM_5_0);
115
115
  const selenium51 = createCanaryByRuntimes(Runtime.SYNTHETICS_PYTHON_SELENIUM_5_1);
116
116
  const selenium60 = createCanaryByRuntimes(Runtime.SYNTHETICS_PYTHON_SELENIUM_6_0);
117
+ const selenium70 = createCanaryByRuntimes(Runtime.SYNTHETICS_PYTHON_SELENIUM_7_0);
117
118
 
118
119
  const test = new IntegTest(app, 'IntegCanaryTest', {
119
120
  testCases: [stack],
@@ -142,6 +143,7 @@ const test = new IntegTest(app, 'IntegCanaryTest', {
142
143
  selenium50,
143
144
  selenium51,
144
145
  selenium60,
146
+ selenium70,
145
147
  ].forEach((canary) => test.assertions
146
148
  .awsApiCall('Synthetics', 'getCanaryRuns', {
147
149
  Name: canary.canaryName,
@@ -121,7 +121,7 @@ const app = new cdk.App({
121
121
  },
122
122
  });
123
123
  const testStack = new AwsCdkSdkJsStack(app, 'aws-cdk-sdk-js-v3', {
124
- runtime: lambda.Runtime.NODEJS_18_X,
124
+ runtime: lambda.Runtime.NODEJS_20_X,
125
125
  });
126
126
  const integTest = new integ.IntegTest(app, 'AwsCustomResourceTest', {
127
127
  testCases: [testStack],
@@ -29,7 +29,7 @@ new lambda.Function(stack, 'nonCrLambda', {
29
29
  runtime: lambda.Runtime.NODEJS_20_X,
30
30
  });
31
31
 
32
- CustomResourceConfig.of(app).addLambdaRuntime(lambda.Runtime.NODEJS_18_X);
32
+ CustomResourceConfig.of(app).addLambdaRuntime(lambda.Runtime.NODEJS_20_X);
33
33
 
34
34
  new integ.IntegTest(app, 'integ-test-custom-resource-config-lambda-node-runtime', {
35
35
  testCases: [stack],
@@ -15,7 +15,7 @@ const stack = new cdk.Stack(app, 'AwsCustomResourceInvokePayloadStack');
15
15
  const fn = new lambda.Function(stack, 'Function', {
16
16
  code: lambda.Code.fromInline("exports.handler = async () => { return { statusCode: 200, body: 'Hello World' }; };"),
17
17
  handler: 'index.handler',
18
- runtime: lambda.Runtime.NODEJS_18_X,
18
+ runtime: lambda.Runtime.NODEJS_20_X,
19
19
  });
20
20
 
21
21
  const testCr = new cr.AwsCustomResource(stack, 'ListLambdaFunctions', {
@@ -107,6 +107,8 @@ Flags come in three types:
107
107
  | [@aws-cdk/core:explicitStackTags](#aws-cdkcoreexplicitstacktags) | When enabled, stack tags need to be assigned explicitly on a Stack. | 2.205.0 | new default |
108
108
  | [@aws-cdk/aws-signer:signingProfileNamePassedToCfn](#aws-cdkaws-signersigningprofilenamepassedtocfn) | Pass signingProfileName to CfnSigningProfile | 2.212.0 | fix |
109
109
  | [@aws-cdk/aws-ecs-patterns:secGroupsDisablesImplicitOpenListener](#aws-cdkaws-ecs-patternssecgroupsdisablesimplicitopenlistener) | Disable implicit openListener when custom security groups are provided | 2.214.0 | new default |
110
+ | [@aws-cdk/aws-ecs-patterns:uniqueTargetGroupId](#aws-cdkaws-ecs-patternsuniquetargetgroupid) | When enabled, ECS patterns will generate unique target group IDs to prevent conflicts during load balancer replacement | V2NEXT | fix |
111
+ | [@aws-cdk/aws-stepfunctions-tasks:httpInvokeDynamicJsonPathEndpoint](#aws-cdkaws-stepfunctions-taskshttpinvokedynamicjsonpathendpoint) | When enabled, allows using a dynamic apiEndpoint with JSONPath format in HttpInvoke tasks. | V2NEXT | fix |
110
112
 
111
113
  <!-- END table -->
112
114
 
@@ -197,7 +199,8 @@ The following json shows the current recommended set of flags, as `cdk init` wou
197
199
  "@aws-cdk/s3-notifications:addS3TrustKeyPolicyForSnsSubscriptions": true,
198
200
  "@aws-cdk/aws-ec2:requirePrivateSubnetsForEgressOnlyInternetGateway": true,
199
201
  "@aws-cdk/aws-s3:publicAccessBlockedByDefault": true,
200
- "@aws-cdk/aws-lambda:useCdkManagedLogGroup": true
202
+ "@aws-cdk/aws-lambda:useCdkManagedLogGroup": true,
203
+ "@aws-cdk/aws-ecs-patterns:uniqueTargetGroupId": true
201
204
  }
202
205
  }
203
206
  ```
@@ -245,6 +248,7 @@ are migrating a v1 CDK project to v2, explicitly set any of these flags which do
245
248
  | [@aws-cdk/core:aspectStabilization](#aws-cdkcoreaspectstabilization) | When enabled, a stabilization loop will be run when invoking Aspects during synthesis. | config | | `false` | `true` |
246
249
  | [@aws-cdk/pipelines:reduceStageRoleTrustScope](#aws-cdkpipelinesreducestageroletrustscope) | Remove the root account principal from Stage addActions trust policy | new default | | `false` | `true` |
247
250
  | [@aws-cdk/pipelines:reduceCrossAccountActionRoleTrustScope](#aws-cdkpipelinesreducecrossaccountactionroletrustscope) | When enabled, scopes down the trust policy for the cross-account action role | new default | | `false` | `true` |
251
+ | [@aws-cdk/aws-stepfunctions-tasks:httpInvokeDynamicJsonPathEndpoint](#aws-cdkaws-stepfunctions-taskshttpinvokedynamicjsonpathendpoint) | When enabled, allows using a dynamic apiEndpoint with JSONPath format in HttpInvoke tasks. | fix | | `false` | `true` |
248
252
 
249
253
  <!-- END diff -->
250
254
 
@@ -2277,4 +2281,42 @@ override this behavior.
2277
2281
  **Compatibility with old behavior:** You can pass `openListener: true` explicitly to maintain the old behavior.
2278
2282
 
2279
2283
 
2284
+ ### @aws-cdk/aws-ecs-patterns:uniqueTargetGroupId
2285
+
2286
+ *When enabled, ECS patterns will generate unique target group IDs to prevent conflicts during load balancer replacement*
2287
+
2288
+ Flag type: Backwards incompatible bugfix
2289
+
2290
+ When this feature flag is enabled, ECS patterns will generate unique target group IDs that include
2291
+ both the load balancer type (public/private) and load balancer name. This prevents CloudFormation
2292
+ conflicts when switching between public and private load balancers or when changing load balancer names.
2293
+
2294
+ Without this flag, target groups use generic IDs like 'ECS' which can cause conflicts when the
2295
+ underlying load balancer is replaced due to changes in internetFacing or loadBalancerName properties.
2296
+
2297
+ This is a breaking change as it will cause target group replacement when the flag is enabled.
2298
+
2299
+
2300
+ | Since | Unset behaves like | Recommended value |
2301
+ | ----- | ----- | ----- |
2302
+ | (not in v1) | | |
2303
+ | V2NEXT | `false` | `true` |
2304
+
2305
+
2306
+ ### @aws-cdk/aws-stepfunctions-tasks:httpInvokeDynamicJsonPathEndpoint
2307
+
2308
+ *When enabled, allows using a dynamic apiEndpoint with JSONPath format in HttpInvoke tasks.*
2309
+
2310
+ Flag type: Backwards incompatible bugfix
2311
+
2312
+ When this feature flag is enabled, the JSONPath apiEndpoint value will be resolved dynamically at runtime, while slightly increasing the size of the state machine definition.
2313
+ When disabled, the JSONPath apiEndpoint property will only support a static string value.
2314
+
2315
+
2316
+ | Since | Unset behaves like | Recommended value |
2317
+ | ----- | ----- | ----- |
2318
+ | (not in v1) | | |
2319
+ | V2NEXT | `true` | `true` |
2320
+
2321
+
2280
2322
  <!-- END details -->
@@ -763,6 +763,21 @@ _cdk.json_
763
763
  }
764
764
  ```
765
765
 
766
+ * `@aws-cdk/aws-stepfunctions-tasks:httpInvokeDynamicJsonPathEndpoint`
767
+
768
+ When this feature flag is enabled, the JSONPath apiEndpoint value will be resolved dynamically at runtime, while slightly increasing the size of the state machine definition.
769
+ When disabled, the JSONPath apiEndpoint property will only support a static string value.
770
+
771
+ _cdk.json
772
+
773
+ ```json
774
+ {
775
+ "context": {
776
+ "@aws-cdk/aws-stepfunctions-tasks:httpInvokeDynamicJsonPathEndpoint": true
777
+ }
778
+ }
779
+ ```
780
+
766
781
  * `@aws-cdk/aws-signer:signingProfileNamePassedToCfn`
767
782
 
768
783
  When this feature flag is enabled, the `signingProfileName` property is passed to the L1 `CfnSigningProfile` construct,
@@ -783,4 +798,20 @@ _cdk.json_
783
798
  "@aws-cdk/aws-signer:signingProfileNamePassedToCfn": true
784
799
  }
785
800
  }
786
- ```
801
+ ```
802
+
803
+ * `@aws-cdk/aws-ecs-patterns:uniqueTargetGroupId`
804
+
805
+ When enabled, ECS patterns will generate unique target group IDs that include the load balancer name and type (public/private). This prevents CloudFormation conflicts when switching between public and private load balancers.
806
+
807
+ Without this flag, switching an ApplicationLoadBalancedFargateService from public to private (or vice versa) fails with "target group cannot be associated with more than one load balancer" error.
808
+
809
+ _cdk.json_
810
+
811
+ ```json
812
+ {
813
+ "context": {
814
+ "@aws-cdk/aws-ecs-patterns:uniqueTargetGroupId": true
815
+ }
816
+ }
817
+ ```
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: konokenj.cdk-api-mcp-server
3
- Version: 0.48.0
3
+ Version: 0.50.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.218.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.220.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
  ---