konokenj.cdk-api-mcp-server 0.64.0__py3-none-any.whl → 0.66.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 (70) hide show
  1. cdk_api_mcp_server/__about__.py +1 -1
  2. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-elasticache-alpha/README.md +2 -0
  3. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-imagebuilder-alpha/README.md +20 -20
  4. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch-actions/integ.lambda-alarm-action.ts +0 -1
  5. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codebuild/README.md +1 -1
  6. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codebuild/{integ.project-macos-fleet.ts → integ.project-macos-fleet-base14.ts} +2 -2
  7. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codebuild/integ.project-macos-fleet-base15.ts +62 -0
  8. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.app-mesh-proxy-config.ts +0 -2
  9. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.capacity-provider-managed-draining.ts +0 -2
  10. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.capacity-provider.ts +0 -2
  11. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.clb-host-nw.ts +9 -2
  12. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.cloudmap-container-port.ts +9 -2
  13. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.cluster-amazonlinux2-neuron-ami.ts +0 -2
  14. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.cluster-imported.ts +0 -2
  15. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.cluster-windows-server-ami.ts +0 -2
  16. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.cluster.amazonlinux2023-ami.ts +0 -2
  17. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.default-capacity-provider.ts +0 -2
  18. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.deployment-alarms.ts +0 -2
  19. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.enable-execute-command.ts +0 -2
  20. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.environment-file.ts +0 -2
  21. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.exec-command.ts +0 -2
  22. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.firelens-s3-config.ts +8 -2
  23. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.graviton.ts +0 -2
  24. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.lb-awsvpc-nw.ts +9 -2
  25. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.lb-bridge-nw.ts +9 -2
  26. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.managedinstances-capacity-provider.ts +0 -2
  27. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.managedinstances-no-default-capacity-provider.ts +0 -2
  28. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.placement-constraint-default-empty.ts +0 -2
  29. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.placement-strategies.ts +0 -2
  30. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.pseudo-terminal.ts +0 -2
  31. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.sd-awsvpc-nw.ts +0 -2
  32. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.sd-bridge-nw.ts +0 -2
  33. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.spot-drain.ts +0 -2
  34. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.swap-parameters.ts +0 -2
  35. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.task-definition-placement-constraints.ts +0 -2
  36. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs-patterns/integ.alb-ecs-service-command-entry-point.ts +12 -2
  37. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs-patterns/integ.application-load-balanced-ecs-service.ts +13 -3
  38. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs-patterns/integ.healthchecks-multiple-application-load-balanced-ecs-service.ts +15 -3
  39. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs-patterns/integ.healthchecks-multiple-network-load-balanced-ecs-service.ts +8 -3
  40. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs-patterns/integ.multiple-application-load-balanced-ecs-service-idle-timeout.ts +12 -4
  41. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs-patterns/integ.multiple-application-load-balanced-ecs-service.ts +10 -4
  42. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs-patterns/integ.network-load-balanced-ecs-service.ts +7 -3
  43. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs-patterns/integ.scheduled-ecs-task.ts +0 -2
  44. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs-patterns/integ.tls-network-load-balanced-ecs-service.ts +0 -2
  45. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-events-targets/README.md +46 -0
  46. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-events-targets/integ.event-ec2-task.ts +0 -2
  47. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-events-targets/integ.events.ts +0 -1
  48. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-events-targets/integ.sqs-event-rule-target.ts +37 -2
  49. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.lambda-adot.ts +0 -1
  50. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.lambda-insights-mapping.ts +0 -1
  51. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.runtimes.ts +8 -0
  52. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.kinesiswithdlq.ts +0 -1
  53. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.s3-onfailuire-destination.ts +0 -1
  54. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53-patterns/README.md +6 -0
  55. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53-patterns/integ.hosted-redirect-same-region.ts +15 -6
  56. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53-patterns/integ.hosted-redirect.ts +15 -6
  57. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-notifications/integ.bucket-notifications.ts +0 -1
  58. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-sns-subscriptions/integ.sns-lambda-cross-region.ts +0 -1
  59. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-sns-subscriptions/integ.sns-lambda.ts +0 -1
  60. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.ec2-run-task-ref-definition.ts +0 -2
  61. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.ec2-run-task.ts +0 -2
  62. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.ec2-task.ts +0 -2
  63. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/FEATURE_FLAGS.md +21 -48
  64. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/README.md +0 -42
  65. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.pipeline-with-variables.ts +13 -0
  66. {konokenj_cdk_api_mcp_server-0.64.0.dist-info → konokenj_cdk_api_mcp_server-0.66.0.dist-info}/METADATA +2 -2
  67. {konokenj_cdk_api_mcp_server-0.64.0.dist-info → konokenj_cdk_api_mcp_server-0.66.0.dist-info}/RECORD +70 -69
  68. {konokenj_cdk_api_mcp_server-0.64.0.dist-info → konokenj_cdk_api_mcp_server-0.66.0.dist-info}/WHEEL +0 -0
  69. {konokenj_cdk_api_mcp_server-0.64.0.dist-info → konokenj_cdk_api_mcp_server-0.66.0.dist-info}/entry_points.txt +0 -0
  70. {konokenj_cdk_api_mcp_server-0.64.0.dist-info → konokenj_cdk_api_mcp_server-0.66.0.dist-info}/licenses/LICENSE.txt +0 -0
@@ -1,15 +1,13 @@
1
1
  import { AutoScalingGroup } from 'aws-cdk-lib/aws-autoscaling';
2
2
  import { InstanceType, Vpc, SecurityGroup, Peer, Port } from 'aws-cdk-lib/aws-ec2';
3
3
  import { Cluster, ContainerImage, AsgCapacityProvider, EcsOptimizedImage } from 'aws-cdk-lib/aws-ecs';
4
- import { App, Stack } from 'aws-cdk-lib';
4
+ import { App, Stack, CfnResource } from 'aws-cdk-lib';
5
5
  import * as integ from '@aws-cdk/integ-tests-alpha';
6
6
  import { ApplicationLoadBalancedEc2Service } from 'aws-cdk-lib/aws-ecs-patterns';
7
7
  import * as elbv2 from 'aws-cdk-lib/aws-elasticloadbalancingv2';
8
8
 
9
9
  const app = new App({
10
10
  postCliContext: {
11
- '@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
12
- '@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
13
11
  },
14
12
  });
15
13
  const stack = new Stack(app, 'aws-ecs-integ-alb');
@@ -20,6 +18,11 @@ const securityGroup = new SecurityGroup(stack, 'SecurityGroup', {
20
18
  allowAllOutbound: true,
21
19
  });
22
20
  securityGroup.addIngressRule(Peer.anyIpv4(), Port.tcpRange(32768, 65535));
21
+ // Suppress security guardian rule - intentionally allowing public access for load balancer testing
22
+ const cfnSecurityGroup = securityGroup.node.defaultChild as CfnResource;
23
+ cfnSecurityGroup.addMetadata('guard', {
24
+ SuppressedRules: ['EC2_NO_OPEN_SECURITY_GROUPS'],
25
+ });
23
26
 
24
27
  const provider1 = new AsgCapacityProvider(stack, 'FirstCapacityProvier', {
25
28
  autoScalingGroup: new AutoScalingGroup(stack, 'FirstAutoScalingGroup', {
@@ -65,6 +68,13 @@ const applicationLoadBalancedEc2Service = new ApplicationLoadBalancedEc2Service(
65
68
  ipAddressType: elbv2.IpAddressType.IPV4,
66
69
  });
67
70
  applicationLoadBalancedEc2Service.loadBalancer.connections.addSecurityGroup(securityGroup);
71
+ // Suppress security guardian rule - load balancer intentionally needs public access for testing
72
+ applicationLoadBalancedEc2Service.loadBalancer.connections.securityGroups.forEach(sg => {
73
+ const cfnSg = sg.node.defaultChild as CfnResource;
74
+ cfnSg.addMetadata('guard', {
75
+ SuppressedRules: ['EC2_NO_OPEN_SECURITY_GROUPS'],
76
+ });
77
+ });
68
78
 
69
79
  new integ.IntegTest(app, 'applicationLoadBalancedEc2ServiceTest', {
70
80
  testCases: [stack],
@@ -2,15 +2,13 @@ import { InstanceType, Vpc, SecurityGroup, Peer, Port } from 'aws-cdk-lib/aws-ec
2
2
  import { Cluster, ContainerImage, AsgCapacityProvider, EcsOptimizedImage } from 'aws-cdk-lib/aws-ecs';
3
3
  import { AutoScalingGroup } from 'aws-cdk-lib/aws-autoscaling';
4
4
  import { Protocol } from 'aws-cdk-lib/aws-elasticloadbalancingv2';
5
- import { App, Duration, Stack } from 'aws-cdk-lib';
5
+ import { App, Duration, Stack, CfnResource } from 'aws-cdk-lib';
6
6
  import { IntegTest } from '@aws-cdk/integ-tests-alpha';
7
7
 
8
8
  import { ApplicationMultipleTargetGroupsEc2Service } from 'aws-cdk-lib/aws-ecs-patterns';
9
9
 
10
10
  const app = new App({
11
11
  postCliContext: {
12
- '@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
13
- '@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
14
12
  },
15
13
  });
16
14
  const stack = new Stack(app, 'aws-ecs-integ-multiple-alb-healthchecks');
@@ -21,6 +19,11 @@ const securityGroup = new SecurityGroup(stack, 'MyAutoScalingGroupSG', {
21
19
  allowAllOutbound: true,
22
20
  });
23
21
  securityGroup.addIngressRule(Peer.anyIpv4(), Port.tcpRange(32768, 65535));
22
+ // Suppress security guardian rule - intentionally allowing public access for load balancer testing
23
+ const cfnSecurityGroup = securityGroup.node.defaultChild as CfnResource;
24
+ cfnSecurityGroup.addMetadata('guard', {
25
+ SuppressedRules: ['EC2_NO_OPEN_SECURITY_GROUPS'],
26
+ });
24
27
  const provider = new AsgCapacityProvider(stack, 'MyProvider', {
25
28
  autoScalingGroup: new AutoScalingGroup(stack, 'MyAutoScalingGroup', {
26
29
  vpc,
@@ -70,6 +73,15 @@ const applicationMultipleTargetGroupsFargateService = new ApplicationMultipleTar
70
73
  });
71
74
  applicationMultipleTargetGroupsFargateService.loadBalancers[0].connections.addSecurityGroup(securityGroup);
72
75
  applicationMultipleTargetGroupsFargateService.loadBalancers[1].connections.addSecurityGroup(securityGroup);
76
+ // Suppress security guardian rule - load balancers intentionally need public access for testing
77
+ applicationMultipleTargetGroupsFargateService.loadBalancers.forEach(lb => {
78
+ lb.connections.securityGroups.forEach(sg => {
79
+ const cfnSg = sg.node.defaultChild as CfnResource;
80
+ cfnSg.addMetadata('guard', {
81
+ SuppressedRules: ['EC2_NO_OPEN_SECURITY_GROUPS'],
82
+ });
83
+ });
84
+ });
73
85
 
74
86
  applicationMultipleTargetGroupsFargateService.targetGroups[0].configureHealthCheck({
75
87
  protocol: Protocol.HTTP,
@@ -1,14 +1,12 @@
1
1
  import { InstanceType, Vpc, Peer, Port, SecurityGroup } from 'aws-cdk-lib/aws-ec2';
2
2
  import { AsgCapacityProvider, Cluster, ContainerImage, EcsOptimizedImage } from 'aws-cdk-lib/aws-ecs';
3
3
  import { AutoScalingGroup } from 'aws-cdk-lib/aws-autoscaling';
4
- import { App, Stack } from 'aws-cdk-lib';
4
+ import { App, Stack, CfnResource } from 'aws-cdk-lib';
5
5
  import { IntegTest } from '@aws-cdk/integ-tests-alpha';
6
6
  import { NetworkMultipleTargetGroupsEc2Service } from 'aws-cdk-lib/aws-ecs-patterns';
7
7
 
8
8
  const app = new App({
9
9
  postCliContext: {
10
- '@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
11
- '@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
12
10
  },
13
11
  });
14
12
  const stack = new Stack(app, 'aws-ecs-integ-nlb-healthchecks');
@@ -19,6 +17,13 @@ const securityGroup = new SecurityGroup(stack, 'MyAutoScalingGroupSG', {
19
17
  allowAllOutbound: true,
20
18
  });
21
19
  securityGroup.addIngressRule(Peer.anyIpv4(), Port.tcpRange(32768, 65535));
20
+
21
+ // Suppress security guardian rule for intentional test setup
22
+ const cfnSecurityGroup = securityGroup.node.defaultChild as CfnResource;
23
+ cfnSecurityGroup.addMetadata('guard', {
24
+ SuppressedRules: ['EC2_NO_OPEN_SECURITY_GROUPS'],
25
+ });
26
+
22
27
  const provider = new AsgCapacityProvider(stack, 'MyProvider', {
23
28
  autoScalingGroup: new AutoScalingGroup(stack, 'MyAutoScalingGroup', {
24
29
  vpc,
@@ -3,7 +3,7 @@ import { InstanceType, Vpc } from 'aws-cdk-lib/aws-ec2';
3
3
  import { Cluster, ContainerImage } from 'aws-cdk-lib/aws-ecs';
4
4
  import { ApplicationProtocol, SslPolicy } from 'aws-cdk-lib/aws-elasticloadbalancingv2';
5
5
  import { PublicHostedZone } from 'aws-cdk-lib/aws-route53';
6
- import { App, Duration, Stack } from 'aws-cdk-lib';
6
+ import { App, Duration, Stack, CfnResource } from 'aws-cdk-lib';
7
7
  import * as integ from '@aws-cdk/integ-tests-alpha';
8
8
  import { ApplicationMultipleTargetGroupsEc2Service } from 'aws-cdk-lib/aws-ecs-patterns';
9
9
  import { AUTOSCALING_GENERATE_LAUNCH_TEMPLATE } from 'aws-cdk-lib/cx-api';
@@ -13,8 +13,6 @@ const app = new App({
13
13
  '@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
14
14
  '@aws-cdk/aws-ecs:removeDefaultDeploymentAlarm': false,
15
15
  '@aws-cdk/aws-ecs:reduceEc2FargateCloudWatchPermissions': false,
16
- '@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
17
- '@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
18
16
  '@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy': false,
19
17
  },
20
18
  });
@@ -26,7 +24,7 @@ const cluster = new Cluster(stack, 'Cluster', { vpc });
26
24
  cluster.addCapacity('DefaultAutoScalingGroup', { instanceType: new InstanceType('t2.micro') });
27
25
 
28
26
  // Two load balancers with different idle timeouts.
29
- new ApplicationMultipleTargetGroupsEc2Service(stack, 'myService', {
27
+ const service = new ApplicationMultipleTargetGroupsEc2Service(stack, 'myService', {
30
28
  cluster,
31
29
  memoryLimitMiB: 256,
32
30
  taskImageOptions: {
@@ -87,6 +85,16 @@ new ApplicationMultipleTargetGroupsEc2Service(stack, 'myService', {
87
85
  ],
88
86
  });
89
87
 
88
+ // Suppress security guardian rule for ALB default behavior (open: true)
89
+ service.loadBalancers.forEach(lb => {
90
+ lb.connections.securityGroups.forEach(sg => {
91
+ const cfnSg = sg.node.defaultChild as CfnResource;
92
+ cfnSg.addMetadata('guard', {
93
+ SuppressedRules: ['EC2_NO_OPEN_SECURITY_GROUPS'],
94
+ });
95
+ });
96
+ });
97
+
90
98
  new integ.IntegTest(app, 'multiAlbEcsEc2Test', {
91
99
  testCases: [stack],
92
100
  });
@@ -1,6 +1,6 @@
1
1
  import { InstanceType, Vpc } from 'aws-cdk-lib/aws-ec2';
2
2
  import { Cluster, ContainerImage, Ec2TaskDefinition } from 'aws-cdk-lib/aws-ecs';
3
- import { App, Stack } from 'aws-cdk-lib';
3
+ import { App, Stack, CfnResource } from 'aws-cdk-lib';
4
4
  import * as integ from '@aws-cdk/integ-tests-alpha';
5
5
  import { ApplicationMultipleTargetGroupsEc2Service } from 'aws-cdk-lib/aws-ecs-patterns';
6
6
  import { REDUCE_EC2_FARGATE_CLOUDWATCH_PERMISSIONS } from 'aws-cdk-lib/cx-api';
@@ -9,8 +9,6 @@ const app = new App({
9
9
  postCliContext: {
10
10
  '@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
11
11
  [REDUCE_EC2_FARGATE_CLOUDWATCH_PERMISSIONS]: false,
12
- '@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
13
- '@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
14
12
  '@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy': false,
15
13
  },
16
14
  });
@@ -32,7 +30,7 @@ taskDefinition.addContainer('web', {
32
30
  });
33
31
 
34
32
  // One load balancer with one listener and two target groups.
35
- new ApplicationMultipleTargetGroupsEc2Service(stack, 'myService', {
33
+ const service = new ApplicationMultipleTargetGroupsEc2Service(stack, 'myService', {
36
34
  cluster,
37
35
  taskDefinition,
38
36
  enableExecuteCommand: true,
@@ -48,6 +46,14 @@ new ApplicationMultipleTargetGroupsEc2Service(stack, 'myService', {
48
46
  ],
49
47
  });
50
48
 
49
+ // Suppress security guardian rule for ALB default behavior (open: true)
50
+ service.loadBalancer.connections.securityGroups.forEach(sg => {
51
+ const cfnSg = sg.node.defaultChild as CfnResource;
52
+ cfnSg.addMetadata('guard', {
53
+ SuppressedRules: ['EC2_NO_OPEN_SECURITY_GROUPS'],
54
+ });
55
+ });
56
+
51
57
  new integ.IntegTest(app, 'applicationMultipleTargetGroupsEc2ServiceTest', {
52
58
  testCases: [stack],
53
59
  });
@@ -1,15 +1,13 @@
1
1
  import { AutoScalingGroup } from 'aws-cdk-lib/aws-autoscaling';
2
2
  import { InstanceType, Vpc, SecurityGroup, Peer, Port } from 'aws-cdk-lib/aws-ec2';
3
3
  import { Cluster, ContainerImage, AsgCapacityProvider, EcsOptimizedImage } from 'aws-cdk-lib/aws-ecs';
4
- import { App, Stack } from 'aws-cdk-lib';
4
+ import { App, Stack, CfnResource } from 'aws-cdk-lib';
5
5
  import * as integ from '@aws-cdk/integ-tests-alpha';
6
6
  import { NetworkLoadBalancedEc2Service } from 'aws-cdk-lib/aws-ecs-patterns';
7
7
  import { IpAddressType } from 'aws-cdk-lib/aws-elasticloadbalancingv2';
8
8
 
9
9
  const app = new App({
10
10
  postCliContext: {
11
- '@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
12
- '@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
13
11
  },
14
12
  });
15
13
  const stack = new Stack(app, 'aws-ecs-integ-nlb');
@@ -21,6 +19,12 @@ const securityGroup = new SecurityGroup(stack, 'SecurityGroup', {
21
19
  });
22
20
  securityGroup.addIngressRule(Peer.anyIpv4(), Port.tcpRange(32768, 65535));
23
21
 
22
+ // Suppress security guardian rule for intentional test setup
23
+ const cfnSecurityGroup = securityGroup.node.defaultChild as CfnResource;
24
+ cfnSecurityGroup.addMetadata('guard', {
25
+ SuppressedRules: ['EC2_NO_OPEN_SECURITY_GROUPS'],
26
+ });
27
+
24
28
  const provider1 = new AsgCapacityProvider(stack, 'FirstCapacityProvider', {
25
29
  autoScalingGroup: new AutoScalingGroup(stack, 'FirstAutoScalingGroup', {
26
30
  vpc,
@@ -8,8 +8,6 @@ import { ScheduledEc2Task } from 'aws-cdk-lib/aws-ecs-patterns';
8
8
  const app = new cdk.App({
9
9
  postCliContext: {
10
10
  '@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
11
- '@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
12
- '@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
13
11
  '@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy': false,
14
12
  },
15
13
  });
@@ -14,8 +14,6 @@ if (!certArn) throw new Error('For this test you must provide your own Certifica
14
14
  const app = new App({
15
15
  postCliContext: {
16
16
  '@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
17
- '@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
18
- '@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
19
17
  '@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy': false,
20
18
  },
21
19
  });
@@ -718,6 +718,52 @@ rule.addTarget(new targets.RedshiftQuery(workgroup.attrWorkgroupWorkgroupArn, {
718
718
  }));
719
719
  ```
720
720
 
721
+ ## Send events to an SQS queue
722
+
723
+ Use the `SqsQueue` target to send events to an SQS queue.
724
+
725
+ The code snippet below creates an event rule that sends events to an SQS queue every hour:
726
+
727
+ ```ts
728
+ const queue = new sqs.Queue(this, 'MyQueue');
729
+
730
+ const rule = new events.Rule(this, 'Rule', {
731
+ schedule: events.Schedule.rate(cdk.Duration.hours(1)),
732
+ });
733
+
734
+ rule.addTarget(new targets.SqsQueue(queue));
735
+ ```
736
+
737
+ ### Using Message Group IDs
738
+
739
+ You can specify a `messageGroupId` to ensure messages are processed in order. This parameter is required for FIFO queues and optional for standard queues:
740
+
741
+ ```ts
742
+ // FIFO queue - messageGroupId required
743
+ const fifoQueue = new sqs.Queue(this, 'MyFifoQueue', {
744
+ fifo: true,
745
+ });
746
+
747
+ const fifoRule = new events.Rule(this, 'FifoRule', {
748
+ schedule: events.Schedule.rate(cdk.Duration.hours(1)),
749
+ });
750
+
751
+ fifoRule.addTarget(new targets.SqsQueue(fifoQueue, {
752
+ messageGroupId: 'MyMessageGroupId',
753
+ }));
754
+
755
+ // Standard queue - messageGroupId optional (SQS Fair queue feature)
756
+ const standardQueue = new sqs.Queue(this, 'MyStandardQueue');
757
+
758
+ const standardRule = new events.Rule(this, 'StandardRule', {
759
+ schedule: events.Schedule.rate(cdk.Duration.hours(1)),
760
+ });
761
+
762
+ standardRule.addTarget(new targets.SqsQueue(standardQueue, {
763
+ messageGroupId: 'MyMessageGroupId', // Optional for standard queues
764
+ }));
765
+ ```
766
+
721
767
  ## Publish to an SNS Topic
722
768
 
723
769
  Use the `SnsTopic` target to publish to an SNS Topic.
@@ -10,8 +10,6 @@ import * as targets from 'aws-cdk-lib/aws-events-targets';
10
10
  const app = new cdk.App({
11
11
  postCliContext: {
12
12
  '@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
13
- '@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
14
- '@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
15
13
  '@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy': false,
16
14
  },
17
15
  });
@@ -43,7 +43,6 @@ timer3.addTarget(new targets.LambdaFunction(fn, {
43
43
 
44
44
  app.synth();
45
45
 
46
- /* eslint-disable no-console */
47
46
  function handler(event: any, _context: any, callback: any) {
48
47
  console.log(JSON.stringify(event, undefined, 2));
49
48
  return callback();
@@ -3,6 +3,7 @@ import * as kms from 'aws-cdk-lib/aws-kms';
3
3
  import * as sqs from 'aws-cdk-lib/aws-sqs';
4
4
  import * as cdk from 'aws-cdk-lib';
5
5
  import * as targets from 'aws-cdk-lib/aws-events-targets';
6
+ import { IntegTest } from '@aws-cdk/integ-tests-alpha';
6
7
 
7
8
  // ---------------------------------
8
9
  // Define a rule that triggers an SNS topic every 1min.
@@ -23,11 +24,45 @@ const queue = new sqs.Queue(stack, 'MyQueue', {
23
24
  encryption: sqs.QueueEncryption.KMS,
24
25
  encryptionMasterKey: key,
25
26
  });
27
+ // Suppress false positive: queue uses separate QueuePolicy resource (not inline), which is the correct pattern
28
+ (queue.node.defaultChild as cdk.CfnResource).addMetadata('guard', {
29
+ SuppressedRules: ['SQS_NO_WORLD_ACCESSIBLE_INLINE'],
30
+ });
26
31
 
27
- const deadLetterQueue = new sqs.Queue(stack, 'MyDeadLetterQueue');
32
+ const deadLetterQueue = new sqs.Queue(stack, 'MyDeadLetterQueue', {
33
+ encryption: sqs.QueueEncryption.SQS_MANAGED,
34
+ });
35
+ // Suppress false positive: queue uses separate QueuePolicy resource (not inline), which is the correct pattern
36
+ (deadLetterQueue.node.defaultChild as cdk.CfnResource).addMetadata('guard', {
37
+ SuppressedRules: ['SQS_NO_WORLD_ACCESSIBLE_INLINE'],
38
+ });
28
39
 
29
40
  event.addTarget(new targets.SqsQueue(queue, {
30
41
  deadLetterQueue,
31
42
  }));
32
43
 
33
- app.synth();
44
+ // Test messageGroupId support for standard (non-FIFO) queues
45
+ const standardQueue = new sqs.Queue(stack, 'StandardQueue', {
46
+ encryption: sqs.QueueEncryption.SQS_MANAGED,
47
+ });
48
+ // Suppress false positive: queue uses separate QueuePolicy resource (not inline), which is the correct pattern
49
+ (standardQueue.node.defaultChild as cdk.CfnResource).addMetadata('guard', {
50
+ SuppressedRules: ['SQS_NO_WORLD_ACCESSIBLE_INLINE'],
51
+ });
52
+
53
+ const standardQueueEvent = new events.Rule(stack, 'StandardQueueRule', {
54
+ schedule: events.Schedule.rate(cdk.Duration.minutes(1)),
55
+ });
56
+
57
+ standardQueueEvent.addTarget(new targets.SqsQueue(standardQueue, {
58
+ messageGroupId: 'MyMessageGroupId',
59
+ }));
60
+
61
+ new IntegTest(app, 'integ.sqs-event-rule-target', {
62
+ testCases: [stack],
63
+ allowDestroy: [
64
+ 'AWS::SQS::Queue',
65
+ 'AWS::SQS::QueuePolicy',
66
+ 'AWS::Events::Rule',
67
+ ],
68
+ });
@@ -85,7 +85,6 @@ class StackUnderTest extends Stack {
85
85
  }
86
86
  }
87
87
 
88
- /* eslint-disable no-console */
89
88
  function handler(event: any, _context: any, callback: any) {
90
89
  console.log(JSON.stringify(event, undefined, 2));
91
90
  return callback();
@@ -55,7 +55,6 @@ new lambda.Function(stack, 'MyFunc6', {
55
55
 
56
56
  app.synth();
57
57
 
58
- /* eslint-disable no-console */
59
58
  function handler(event: any, _context: any, callback: any) {
60
59
  console.log(JSON.stringify(event, undefined, 2));
61
60
  return callback();
@@ -17,6 +17,14 @@ new Function(stack, 'Lambda', {
17
17
  runtime: Runtime.DOTNET_8,
18
18
  });
19
19
 
20
+ new Function(stack, 'DotNet10Lambda', {
21
+ code: Code.fromAsset(path.join(__dirname, 'dotnet-handler')),
22
+ handler: 'Handler',
23
+ runtime: Runtime.DOTNET_10,
24
+ });
25
+
20
26
  new integ.IntegTest(app, 'lambda-runtime-management', {
21
27
  testCases: [stack],
22
28
  });
29
+
30
+ app.synth();
@@ -13,7 +13,6 @@ import { STANDARD_NODEJS_RUNTIME } from '../../config';
13
13
  */
14
14
 
15
15
  async function handler(event: any) {
16
- // eslint-disable-next-line no-console
17
16
  console.log('event:', JSON.stringify(event, undefined, 2));
18
17
  throw new Error();
19
18
  }
@@ -65,7 +65,6 @@ export class S3OnFailureDestinationStack extends Stack {
65
65
  }
66
66
  }
67
67
  async function handler(event: any) {
68
- // eslint-disable-next-line no-console
69
68
  console.log('event:', JSON.stringify(event, undefined, 2));
70
69
  throw new Error();
71
70
  }
@@ -72,3 +72,9 @@ new patterns.HttpsRedirect(this, 'Redirect', {
72
72
  It is safe to upgrade to `@aws-cdk/aws-route53-patterns:useCertificate` since
73
73
  the new certificate will be created and updated on the CloudFront distribution
74
74
  before the old certificate is deleted.
75
+
76
+ To have `HttpsRedirect` use the `Distribution` construct as the default
77
+ created CloudFront distribution instead of the deprecated `CloudFrontWebDistribution`
78
+ construct, enable the `@aws-cdk/aws-route53-patterns:useDistribution` [feature flag].
79
+
80
+ [feature flag]: https://docs.aws.amazon.com/cdk/latest/guide/featureflags.html
@@ -1,6 +1,7 @@
1
1
  import { PublicHostedZone } from 'aws-cdk-lib/aws-route53';
2
+ import { CfnBucket } from 'aws-cdk-lib/aws-s3';
2
3
  import { Stack, App } from 'aws-cdk-lib';
3
- // import { ROUTE53_PATTERNS_USE_CERTIFICATE } from '@aws-cdk/cx-api';
4
+ import { ROUTE53_PATTERNS_USE_DISTRIBUTION } from 'aws-cdk-lib/cx-api';
4
5
  import { IntegTest } from '@aws-cdk/integ-tests-alpha';
5
6
  import { HttpsRedirect } from 'aws-cdk-lib/aws-route53-patterns';
6
7
  const hostedZoneId = process.env.CDK_INTEG_HOSTED_ZONE_ID ?? process.env.HOSTED_ZONE_ID;
@@ -11,10 +12,9 @@ const domainName = process.env.CDK_INTEG_DOMAIN_NAME ?? process.env.DOMAIN_NAME;
11
12
  if (!domainName) throw new Error('For this test you must provide your own DomainName as an env var "DOMAIN_NAME". See framework-integ/README.md for details.');
12
13
 
13
14
  const app = new App({
14
- // uncomment this to test the old behavior
15
- // postCliContext: {
16
- // [ROUTE53_PATTERNS_USE_CERTIFICATE]: false,
17
- // },
15
+ postCliContext: {
16
+ [ROUTE53_PATTERNS_USE_DISTRIBUTION]: true,
17
+ },
18
18
  });
19
19
  const testCase = new Stack(app, 'integ-https-redirect-same-region', {
20
20
  env: { region: 'us-east-1' },
@@ -24,12 +24,21 @@ const hostedZone = PublicHostedZone.fromHostedZoneAttributes(testCase, 'HostedZo
24
24
  hostedZoneId,
25
25
  zoneName: hostedZoneName,
26
26
  });
27
- new HttpsRedirect(testCase, 'redirect', {
27
+ const redirect = new HttpsRedirect(testCase, 'redirect', {
28
28
  zone: hostedZone,
29
29
  recordNames: [`integ-same-region.${hostedZoneName}`],
30
30
  targetDomain: 'aws.amazon.com',
31
31
  });
32
32
 
33
+ const redirectBucket = redirect.node.findChild('RedirectBucket').node.defaultChild as CfnBucket;
34
+ redirectBucket.addPropertyOverride('BucketEncryption', {
35
+ ServerSideEncryptionConfiguration: [{
36
+ ServerSideEncryptionByDefault: {
37
+ SSEAlgorithm: 'aws:kms',
38
+ },
39
+ }],
40
+ });
41
+
33
42
  new IntegTest(app, 'integ-test', {
34
43
  testCases: [testCase],
35
44
  enableLookups: true,
@@ -1,6 +1,7 @@
1
1
  import { PublicHostedZone } from 'aws-cdk-lib/aws-route53';
2
+ import { CfnBucket } from 'aws-cdk-lib/aws-s3';
2
3
  import { Stack, App } from 'aws-cdk-lib';
3
- // import { ROUTE53_PATTERNS_USE_CERTIFICATE } from '@aws-cdk/cx-api';
4
+ import { ROUTE53_PATTERNS_USE_DISTRIBUTION } from 'aws-cdk-lib/cx-api';
4
5
  import { IntegTest } from '@aws-cdk/integ-tests-alpha';
5
6
  import { HttpsRedirect } from 'aws-cdk-lib/aws-route53-patterns';
6
7
  const hostedZoneId = process.env.CDK_INTEG_HOSTED_ZONE_ID ?? process.env.HOSTED_ZONE_ID;
@@ -11,10 +12,9 @@ const domainName = process.env.CDK_INTEG_DOMAIN_NAME ?? process.env.DOMAIN_NAME;
11
12
  if (!domainName) throw new Error('For this test you must provide your own DomainName as an env var "DOMAIN_NAME". See framework-integ/README.md for details.');
12
13
 
13
14
  const app = new App({
14
- // uncomment this to test the old behavior
15
- // postCliContext: {
16
- // [ROUTE53_PATTERNS_USE_CERTIFICATE]: false,
17
- // },
15
+ postCliContext: {
16
+ [ROUTE53_PATTERNS_USE_DISTRIBUTION]: true,
17
+ },
18
18
  });
19
19
  const testCase = new Stack(app, 'integ-https-redirect', {
20
20
  crossRegionReferences: true,
@@ -28,12 +28,21 @@ const hostedZone = PublicHostedZone.fromHostedZoneAttributes(testCase, 'HostedZo
28
28
  hostedZoneId,
29
29
  zoneName: hostedZoneName,
30
30
  });
31
- new HttpsRedirect(testCase, 'redirect', {
31
+ const redirect = new HttpsRedirect(testCase, 'redirect', {
32
32
  zone: hostedZone,
33
33
  recordNames: [`integ.${hostedZoneName}`],
34
34
  targetDomain: 'aws.amazon.com',
35
35
  });
36
36
 
37
+ const redirectBucket = redirect.node.findChild('RedirectBucket').node.defaultChild as CfnBucket;
38
+ redirectBucket.addPropertyOverride('BucketEncryption', {
39
+ ServerSideEncryptionConfiguration: [{
40
+ ServerSideEncryptionByDefault: {
41
+ SSEAlgorithm: 'aws:kms',
42
+ },
43
+ }],
44
+ });
45
+
37
46
  new IntegTest(app, 'integ-test', {
38
47
  testCases: [testCase],
39
48
  enableLookups: true,
@@ -37,7 +37,6 @@ const unmanagedBucket = s3.Bucket.fromBucketName(c1, 'IntegUnmanagedBucket1', bu
37
37
  unmanagedBucket.addObjectCreatedNotification(new s3n.LambdaDestination(fn), { prefix: 'TEST1/', suffix: '.png' });
38
38
  unmanagedBucket.addEventNotification(s3.EventType.OBJECT_CREATED, new s3n.LambdaDestination(fn), { prefix: 'TEST2/' });
39
39
 
40
- /* eslint-disable no-console */
41
40
  function handler(event: any, _context: any, callback: any) {
42
41
  console.log(JSON.stringify(event, undefined, 2));
43
42
  return callback(null, event);
@@ -31,7 +31,6 @@ topic.addSubscription(new subs.LambdaSubscription(fction));
31
31
  app.synth();
32
32
 
33
33
  function handler(event: any, _context: any, callback: any) {
34
- /* eslint-disable no-console */
35
34
  console.log('====================================================');
36
35
  console.log(JSON.stringify(event, undefined, 2));
37
36
  console.log('====================================================');
@@ -74,7 +74,6 @@ new SnsToLambda(app, 'aws-cdk-sns-lambda');
74
74
  app.synth();
75
75
 
76
76
  function handler(event: any, _context: any, callback: any) {
77
- /* eslint-disable no-console */
78
77
  console.log('====================================================');
79
78
  console.log(JSON.stringify(event, undefined, 2));
80
79
  console.log('====================================================');
@@ -10,8 +10,6 @@ import { EC2_RESTRICT_DEFAULT_SECURITY_GROUP, STEPFUNCTIONS_TASKS_FIX_RUN_ECS_TA
10
10
  const app = new cdk.App({
11
11
  postCliContext: {
12
12
  '@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
13
- '@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
14
- '@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
15
13
  '@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy': false,
16
14
  },
17
15
  });
@@ -20,8 +20,6 @@ import { IntegTest } from '@aws-cdk/integ-tests-alpha';
20
20
  const app = new cdk.App({
21
21
  postCliContext: {
22
22
  '@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
23
- '@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
24
- '@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
25
23
  '@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy': false,
26
24
  },
27
25
  });
@@ -20,8 +20,6 @@ import { IntegTest } from '@aws-cdk/integ-tests-alpha';
20
20
  const app = new cdk.App({
21
21
  postCliContext: {
22
22
  '@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
23
- '@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
24
- '@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
25
23
  '@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy': false,
26
24
  },
27
25
  });