konokenj.cdk-api-mcp-server 0.65.0__py3-none-any.whl → 0.67.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.
- cdk_api_mcp_server/__about__.py +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-imagebuilder-alpha/README.md +20 -20
- cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-msk-alpha/README.md +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codepipeline-actions/integ.pipeline-elastic-beanstalk-deploy.ts +2 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/integ.vpc-endpoint-eusc.ts +42 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/README.md +75 -13
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.app-mesh-proxy-config.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.capacity-provider-managed-draining.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.capacity-provider.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.clb-host-nw.ts +9 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.cloudmap-container-port.ts +9 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.cluster-amazonlinux2-neuron-ami.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.cluster-imported.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.cluster-windows-server-ami.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.cluster.amazonlinux2023-ami.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.default-capacity-provider.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.deployment-alarms.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.enable-execute-command.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.environment-file.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.exec-command.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.firelens-s3-config.ts +8 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.graviton.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.lb-awsvpc-nw.ts +9 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.lb-bridge-nw.ts +9 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.managedinstances-capacity-provider-default-roles.ts +93 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.managedinstances-capacity-provider.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.managedinstances-no-default-capacity-provider.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.placement-constraint-default-empty.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.placement-strategies.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.pseudo-terminal.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.sd-awsvpc-nw.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.sd-bridge-nw.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.spot-drain.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.swap-parameters.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.task-definition-placement-constraints.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs-patterns/integ.alb-ecs-service-command-entry-point.ts +12 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs-patterns/integ.application-load-balanced-ecs-service.ts +13 -3
- 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
- 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
- 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
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs-patterns/integ.multiple-application-load-balanced-ecs-service.ts +10 -4
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs-patterns/integ.network-load-balanced-ecs-service.ts +7 -3
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs-patterns/integ.scheduled-ecs-task.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs-patterns/integ.tls-network-load-balanced-ecs-service.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/README.md +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-events-targets/README.md +46 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-events-targets/integ.event-ec2-task.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-events-targets/integ.sqs-event-rule-target.ts +37 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.runtimes.ts +8 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/README.md +4 -3
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/README.md +1 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.option-group.ts +40 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53-targets/integ.elastic-beanstalk-environment-target.ts +2 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53-targets/integ.elastic-beanstalk-hostedzoneid.ts +2 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53-targets/integ.elastic-beanstalk-token-endpoint.ts +2 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/README.md +47 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.ec2-run-task-capacity-provider.ts +145 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.ec2-run-task-ref-definition.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.ec2-run-task.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.ec2-task.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.fargate-run-task-capacity-provider.ts +125 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/FEATURE_FLAGS.md +2 -49
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/README.md +0 -42
- {konokenj_cdk_api_mcp_server-0.65.0.dist-info → konokenj_cdk_api_mcp_server-0.67.0.dist-info}/METADATA +2 -2
- {konokenj_cdk_api_mcp_server-0.65.0.dist-info → konokenj_cdk_api_mcp_server-0.67.0.dist-info}/RECORD +68 -63
- {konokenj_cdk_api_mcp_server-0.65.0.dist-info → konokenj_cdk_api_mcp_server-0.67.0.dist-info}/WHEEL +0 -0
- {konokenj_cdk_api_mcp_server-0.65.0.dist-info → konokenj_cdk_api_mcp_server-0.67.0.dist-info}/entry_points.txt +0 -0
- {konokenj_cdk_api_mcp_server-0.65.0.dist-info → konokenj_cdk_api_mcp_server-0.67.0.dist-info}/licenses/LICENSE.txt +0 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
2
|
+
import * as cdk from 'aws-cdk-lib';
|
|
3
|
+
import * as ecs from 'aws-cdk-lib/aws-ecs';
|
|
4
|
+
import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
5
|
+
|
|
6
|
+
const app = new cdk.App({
|
|
7
|
+
postCliContext: {
|
|
8
|
+
'@aws-cdk/aws-ecs:removeDefaultDeploymentAlarm': true,
|
|
9
|
+
'@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
|
|
10
|
+
'@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
|
|
11
|
+
},
|
|
12
|
+
});
|
|
13
|
+
const stack = new cdk.Stack(app, 'integ-managedinstances-capacity-provider-default-roles');
|
|
14
|
+
|
|
15
|
+
const vpc = new ec2.Vpc(stack, 'Vpc', { maxAzs: 2, restrictDefaultSecurityGroup: true });
|
|
16
|
+
const cluster = new ecs.Cluster(stack, 'ManagedInstancesCluster', {
|
|
17
|
+
vpc,
|
|
18
|
+
enableFargateCapacityProviders: true,
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
// Create a security group for FMI instances
|
|
22
|
+
const fmiSecurityGroup = new ec2.SecurityGroup(stack, 'ManagedInstancesSecurityGroup', {
|
|
23
|
+
vpc,
|
|
24
|
+
description: 'Security group for ManagedInstances capacity provider instances',
|
|
25
|
+
allowAllOutbound: false,
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
// Add specific outbound rule for HTTPS
|
|
29
|
+
fmiSecurityGroup.addEgressRule(
|
|
30
|
+
ec2.Peer.anyIpv4(),
|
|
31
|
+
ec2.Port.tcp(443),
|
|
32
|
+
'Allow HTTPS outbound',
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
// Create MI Capacity Provider without specifying infrastructureRole or ec2InstanceProfile
|
|
36
|
+
// This will test the default roles
|
|
37
|
+
const miCapacityProvider = new ecs.ManagedInstancesCapacityProvider(stack, 'ManagedInstancesCapacityProvider', {
|
|
38
|
+
subnets: vpc.privateSubnets,
|
|
39
|
+
securityGroups: [fmiSecurityGroup],
|
|
40
|
+
propagateTags: ecs.PropagateManagedInstancesTags.CAPACITY_PROVIDER,
|
|
41
|
+
instanceRequirements: {
|
|
42
|
+
vCpuCountMin: 1,
|
|
43
|
+
memoryMin: cdk.Size.gibibytes(2),
|
|
44
|
+
cpuManufacturers: [ec2.CpuManufacturer.INTEL],
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
// Add FMI capacity provider to cluster
|
|
49
|
+
cluster.addManagedInstancesCapacityProvider(miCapacityProvider);
|
|
50
|
+
cluster.addDefaultCapacityProviderStrategy([
|
|
51
|
+
{
|
|
52
|
+
capacityProvider: miCapacityProvider.capacityProviderName,
|
|
53
|
+
weight: 1,
|
|
54
|
+
},
|
|
55
|
+
]);
|
|
56
|
+
|
|
57
|
+
// Create a task definition compatible with Managed Instances and Fargate
|
|
58
|
+
const taskDefinition = new ecs.TaskDefinition(stack, 'TaskDef', {
|
|
59
|
+
compatibility: ecs.Compatibility.FARGATE_AND_MANAGED_INSTANCES,
|
|
60
|
+
cpu: '256',
|
|
61
|
+
memoryMiB: '512',
|
|
62
|
+
networkMode: ecs.NetworkMode.AWS_VPC,
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
taskDefinition.addContainer('web', {
|
|
66
|
+
image: ecs.ContainerImage.fromRegistry('public.ecr.aws/docker/library/httpd:2.4'),
|
|
67
|
+
memoryLimitMiB: 512,
|
|
68
|
+
portMappings: [
|
|
69
|
+
{
|
|
70
|
+
containerPort: 80,
|
|
71
|
+
protocol: ecs.Protocol.TCP,
|
|
72
|
+
},
|
|
73
|
+
],
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
// Create a service using the MI capacity provider
|
|
77
|
+
new ecs.FargateService(stack, 'ManagedInstancesService', {
|
|
78
|
+
cluster,
|
|
79
|
+
taskDefinition,
|
|
80
|
+
capacityProviderStrategies: [
|
|
81
|
+
{
|
|
82
|
+
capacityProvider: miCapacityProvider.capacityProviderName,
|
|
83
|
+
weight: 1,
|
|
84
|
+
},
|
|
85
|
+
],
|
|
86
|
+
desiredCount: 1,
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
new integ.IntegTest(app, 'ManagedInstancesCapacityProvidersDefaultRoles', {
|
|
90
|
+
testCases: [stack],
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
app.synth();
|
|
@@ -7,8 +7,6 @@ import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
|
7
7
|
const app = new cdk.App({
|
|
8
8
|
postCliContext: {
|
|
9
9
|
'@aws-cdk/aws-ecs:removeDefaultDeploymentAlarm': true,
|
|
10
|
-
'@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
|
|
11
|
-
'@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
|
|
12
10
|
},
|
|
13
11
|
});
|
|
14
12
|
const stack = new cdk.Stack(app, 'integ-managedinstances-capacity-provider');
|
|
@@ -7,8 +7,6 @@ import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
|
7
7
|
const app = new cdk.App({
|
|
8
8
|
postCliContext: {
|
|
9
9
|
'@aws-cdk/aws-ecs:removeDefaultDeploymentAlarm': true,
|
|
10
|
-
'@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
|
|
11
|
-
'@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
|
|
12
10
|
},
|
|
13
11
|
});
|
|
14
12
|
const stack = new cdk.Stack(app, 'integ-managedinstances-no-default-capacity-provider');
|
|
@@ -7,8 +7,6 @@ import { IntegTest } from '@aws-cdk/integ-tests-alpha';
|
|
|
7
7
|
const app = new cdk.App({
|
|
8
8
|
postCliContext: {
|
|
9
9
|
'@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
|
|
10
|
-
'@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
|
|
11
|
-
'@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
|
|
12
10
|
'@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy': false,
|
|
13
11
|
},
|
|
14
12
|
});
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.placement-strategies.ts
CHANGED
|
@@ -7,8 +7,6 @@ import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
|
7
7
|
const app = new cdk.App({
|
|
8
8
|
postCliContext: {
|
|
9
9
|
'@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
|
|
10
|
-
'@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
|
|
11
|
-
'@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
|
|
12
10
|
'@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy': false,
|
|
13
11
|
},
|
|
14
12
|
});
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.pseudo-terminal.ts
CHANGED
|
@@ -6,8 +6,6 @@ import * as ecs from 'aws-cdk-lib/aws-ecs';
|
|
|
6
6
|
const app = new cdk.App({
|
|
7
7
|
postCliContext: {
|
|
8
8
|
'@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
|
|
9
|
-
'@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
|
|
10
|
-
'@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
|
|
11
9
|
'@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy': false,
|
|
12
10
|
},
|
|
13
11
|
});
|
|
@@ -5,8 +5,6 @@ import * as ecs from 'aws-cdk-lib/aws-ecs';
|
|
|
5
5
|
const app = new cdk.App({
|
|
6
6
|
postCliContext: {
|
|
7
7
|
'@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
|
|
8
|
-
'@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
|
|
9
|
-
'@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
|
|
10
8
|
'@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy': false,
|
|
11
9
|
},
|
|
12
10
|
});
|
|
@@ -5,8 +5,6 @@ import * as ecs from 'aws-cdk-lib/aws-ecs';
|
|
|
5
5
|
const app = new cdk.App({
|
|
6
6
|
postCliContext: {
|
|
7
7
|
'@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
|
|
8
|
-
'@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
|
|
9
|
-
'@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
|
|
10
8
|
'@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy': false,
|
|
11
9
|
},
|
|
12
10
|
});
|
|
@@ -5,8 +5,6 @@ import * as ecs from 'aws-cdk-lib/aws-ecs';
|
|
|
5
5
|
const app = new cdk.App({
|
|
6
6
|
postCliContext: {
|
|
7
7
|
'@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
|
|
8
|
-
'@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
|
|
9
|
-
'@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
|
|
10
8
|
'@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy': false,
|
|
11
9
|
},
|
|
12
10
|
});
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.swap-parameters.ts
CHANGED
|
@@ -7,8 +7,6 @@ import { LinuxParameters } from 'aws-cdk-lib/aws-ecs';
|
|
|
7
7
|
const app = new cdk.App({
|
|
8
8
|
postCliContext: {
|
|
9
9
|
'@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
|
|
10
|
-
'@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
|
|
11
|
-
'@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
|
|
12
10
|
'@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy': false,
|
|
13
11
|
},
|
|
14
12
|
});
|
|
@@ -6,8 +6,6 @@ import { IntegTest } from '@aws-cdk/integ-tests-alpha';
|
|
|
6
6
|
const app = new cdk.App({
|
|
7
7
|
postCliContext: {
|
|
8
8
|
'@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
|
|
9
|
-
'@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
|
|
10
|
-
'@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
|
|
11
9
|
'@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy': false,
|
|
12
10
|
},
|
|
13
11
|
});
|
|
@@ -8,8 +8,6 @@ import * as ecsPatterns from 'aws-cdk-lib/aws-ecs-patterns';
|
|
|
8
8
|
const app = new cdk.App({
|
|
9
9
|
postCliContext: {
|
|
10
10
|
'@aws-cdk/aws-ecs:removeDefaultDeploymentAlarm': true,
|
|
11
|
-
'@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
|
|
12
|
-
'@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
|
|
13
11
|
},
|
|
14
12
|
});
|
|
15
13
|
const stack = new cdk.Stack(app, 'aws-ecs-integ-alb-ec2-cmd-entrypoint');
|
|
@@ -22,6 +20,11 @@ const securityGroup = new ec2.SecurityGroup(stack, 'SecurityGroup', {
|
|
|
22
20
|
allowAllOutbound: true,
|
|
23
21
|
});
|
|
24
22
|
securityGroup.addIngressRule(ec2.Peer.anyIpv4(), ec2.Port.tcpRange(32768, 65535));
|
|
23
|
+
// Suppress security guardian rule - intentionally allowing public access for load balancer testing
|
|
24
|
+
const cfnSecurityGroup = securityGroup.node.defaultChild as cdk.CfnResource;
|
|
25
|
+
cfnSecurityGroup.addMetadata('guard', {
|
|
26
|
+
SuppressedRules: ['EC2_NO_OPEN_SECURITY_GROUPS'],
|
|
27
|
+
});
|
|
25
28
|
|
|
26
29
|
const provider = new ecs.AsgCapacityProvider(stack, 'CapacityProvier', {
|
|
27
30
|
autoScalingGroup: new autoscaling.AutoScalingGroup(
|
|
@@ -61,6 +64,13 @@ const applicationLoadBalancedEc2Service = new ecsPatterns.ApplicationLoadBalance
|
|
|
61
64
|
},
|
|
62
65
|
);
|
|
63
66
|
applicationLoadBalancedEc2Service.loadBalancer.connections.addSecurityGroup(securityGroup);
|
|
67
|
+
// Suppress security guardian rule - load balancer intentionally needs public access for testing
|
|
68
|
+
applicationLoadBalancedEc2Service.loadBalancer.connections.securityGroups.forEach(sg => {
|
|
69
|
+
const cfnSg = sg.node.defaultChild as cdk.CfnResource;
|
|
70
|
+
cfnSg.addMetadata('guard', {
|
|
71
|
+
SuppressedRules: ['EC2_NO_OPEN_SECURITY_GROUPS'],
|
|
72
|
+
});
|
|
73
|
+
});
|
|
64
74
|
|
|
65
75
|
new integ.IntegTest(app, 'AlbEc2ServiceWithCommandAndEntryPoint', {
|
|
66
76
|
testCases: [stack],
|
|
@@ -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
|
});
|
|
@@ -282,7 +282,7 @@ cluster.addNodegroupCapacity('custom-node-group', {
|
|
|
282
282
|
});
|
|
283
283
|
```
|
|
284
284
|
|
|
285
|
-
> **NOTE:** If you add instances with the inferentia class (`inf1` or `inf2`) or trainium class (`trn1` or `
|
|
285
|
+
> **NOTE:** If you add instances with the inferentia class (`inf1` or `inf2`) or trainium class (`trn1`, `trn1n`, or `trn2`)
|
|
286
286
|
> the [neuron plugin](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/containers/dlc-then-eks-devflow.html)
|
|
287
287
|
> will be automatically installed in the kubernetes cluster.
|
|
288
288
|
|
|
@@ -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
|
});
|
|
@@ -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
|
-
|
|
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
|
+
});
|
|
@@ -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();
|
|
@@ -109,9 +109,10 @@ Log events matching a particular filter can be sent to either a Lambda function
|
|
|
109
109
|
or a Kinesis stream.
|
|
110
110
|
|
|
111
111
|
If the Kinesis stream lives in a different account, a `CrossAccountDestination`
|
|
112
|
-
object
|
|
113
|
-
for the remote Kinesis stream.
|
|
114
|
-
|
|
112
|
+
object must be explicitly created in the destination account which will act as a proxy
|
|
113
|
+
for the remote Kinesis stream.
|
|
114
|
+
|
|
115
|
+
Note: The aws-cdk-lib/aws-logs-destinations KinesisDestination construct does not automatically create a CrossAccountDestination for cross-account scenarios.
|
|
115
116
|
|
|
116
117
|
Create a `SubscriptionFilter`, initialize it with an appropriate `Pattern` (see
|
|
117
118
|
below) and supply the intended destination:
|