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.
- 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
cdk_api_mcp_server/__about__.py
CHANGED
|
@@ -199,8 +199,8 @@ Use AWS-managed workflows for common pipeline phases:
|
|
|
199
199
|
const workflowPipeline = new imagebuilder.ImagePipeline(this, 'WorkflowPipeline', {
|
|
200
200
|
recipe: exampleImageRecipe,
|
|
201
201
|
workflows: [
|
|
202
|
-
{ workflow: imagebuilder.
|
|
203
|
-
{ workflow: imagebuilder.
|
|
202
|
+
{ workflow: imagebuilder.AmazonManagedWorkflow.buildImage(this, 'BuildWorkflow') },
|
|
203
|
+
{ workflow: imagebuilder.AmazonManagedWorkflow.testImage(this, 'TestWorkflow') }
|
|
204
204
|
]
|
|
205
205
|
});
|
|
206
206
|
```
|
|
@@ -211,9 +211,9 @@ For container pipelines, use container-specific workflows:
|
|
|
211
211
|
const containerWorkflowPipeline = new imagebuilder.ImagePipeline(this, 'ContainerWorkflowPipeline', {
|
|
212
212
|
recipe: exampleContainerRecipe,
|
|
213
213
|
workflows: [
|
|
214
|
-
{ workflow: imagebuilder.
|
|
215
|
-
{ workflow: imagebuilder.
|
|
216
|
-
{ workflow: imagebuilder.
|
|
214
|
+
{ workflow: imagebuilder.AmazonManagedWorkflow.buildContainer(this, 'BuildContainer') },
|
|
215
|
+
{ workflow: imagebuilder.AmazonManagedWorkflow.testContainer(this, 'TestContainer') },
|
|
216
|
+
{ workflow: imagebuilder.AmazonManagedWorkflow.distributeContainer(this, 'DistributeContainer') }
|
|
217
217
|
]
|
|
218
218
|
});
|
|
219
219
|
```
|
|
@@ -430,8 +430,8 @@ Use workflows for custom build, test, and distribution processes:
|
|
|
430
430
|
const imageWithWorkflows = new imagebuilder.Image(this, 'ImageWithWorkflows', {
|
|
431
431
|
recipe: exampleImageRecipe,
|
|
432
432
|
workflows: [
|
|
433
|
-
{ workflow: imagebuilder.
|
|
434
|
-
{ workflow: imagebuilder.
|
|
433
|
+
{ workflow: imagebuilder.AmazonManagedWorkflow.buildImage(this, 'BuildWorkflow') },
|
|
434
|
+
{ workflow: imagebuilder.AmazonManagedWorkflow.testImage(this, 'TestWorkflow') }
|
|
435
435
|
]
|
|
436
436
|
});
|
|
437
437
|
```
|
|
@@ -603,12 +603,12 @@ const imageRecipe = new imagebuilder.ImageRecipe(this, 'AmazonManagedImageRecipe
|
|
|
603
603
|
),
|
|
604
604
|
components: [
|
|
605
605
|
{
|
|
606
|
-
component: imagebuilder.
|
|
606
|
+
component: imagebuilder.AmazonManagedComponent.updateOs(this, 'UpdateOS', {
|
|
607
607
|
platform: imagebuilder.Platform.LINUX
|
|
608
608
|
})
|
|
609
609
|
},
|
|
610
610
|
{
|
|
611
|
-
component: imagebuilder.
|
|
611
|
+
component: imagebuilder.AmazonManagedComponent.awsCliV2(this, 'AwsCli', {
|
|
612
612
|
platform: imagebuilder.Platform.LINUX
|
|
613
613
|
})
|
|
614
614
|
}
|
|
@@ -790,19 +790,19 @@ const containerRecipe = new imagebuilder.ContainerRecipe(this, 'ComponentContain
|
|
|
790
790
|
Use pre-built AWS components:
|
|
791
791
|
|
|
792
792
|
```ts
|
|
793
|
-
const containerRecipe = new imagebuilder.ContainerRecipe(this, '
|
|
793
|
+
const containerRecipe = new imagebuilder.ContainerRecipe(this, 'AmazonManagedContainerRecipe', {
|
|
794
794
|
baseImage: imagebuilder.BaseContainerImage.fromDockerHub('amazonlinux', 'latest'),
|
|
795
795
|
targetRepository: imagebuilder.Repository.fromEcr(
|
|
796
796
|
ecr.Repository.fromRepositoryName(this, 'Repository', 'my-container-repo')
|
|
797
797
|
),
|
|
798
798
|
components: [
|
|
799
799
|
{
|
|
800
|
-
component: imagebuilder.
|
|
800
|
+
component: imagebuilder.AmazonManagedComponent.updateOs(this, 'UpdateOS', {
|
|
801
801
|
platform: imagebuilder.Platform.LINUX
|
|
802
802
|
})
|
|
803
803
|
},
|
|
804
804
|
{
|
|
805
|
-
component: imagebuilder.
|
|
805
|
+
component: imagebuilder.AmazonManagedComponent.awsCliV2(this, 'AwsCli', {
|
|
806
806
|
platform: imagebuilder.Platform.LINUX
|
|
807
807
|
})
|
|
808
808
|
}
|
|
@@ -1070,17 +1070,17 @@ AWS provides a collection of managed components for common tasks:
|
|
|
1070
1070
|
|
|
1071
1071
|
```ts
|
|
1072
1072
|
// Install AWS CLI v2
|
|
1073
|
-
const awsCliComponent = imagebuilder.
|
|
1073
|
+
const awsCliComponent = imagebuilder.AmazonManagedComponent.awsCliV2(this, 'AwsCli', {
|
|
1074
1074
|
platform: imagebuilder.Platform.LINUX
|
|
1075
1075
|
});
|
|
1076
1076
|
|
|
1077
1077
|
// Update the operating system
|
|
1078
|
-
const updateComponent = imagebuilder.
|
|
1078
|
+
const updateComponent = imagebuilder.AmazonManagedComponent.updateOs(this, 'UpdateOS', {
|
|
1079
1079
|
platform: imagebuilder.Platform.LINUX
|
|
1080
1080
|
});
|
|
1081
1081
|
|
|
1082
1082
|
// Reference any AWS-managed component by name
|
|
1083
|
-
const customAwsComponent = imagebuilder.
|
|
1083
|
+
const customAwsComponent = imagebuilder.AmazonManagedComponent.fromAmazonManagedComponentName(
|
|
1084
1084
|
this,
|
|
1085
1085
|
'CloudWatchAgent',
|
|
1086
1086
|
'amazon-cloudwatch-agent-linux'
|
|
@@ -1517,15 +1517,15 @@ AWS provides a collection of workflows for common scenarios:
|
|
|
1517
1517
|
|
|
1518
1518
|
```ts
|
|
1519
1519
|
// Build workflows
|
|
1520
|
-
const buildImageWorkflow = imagebuilder.
|
|
1521
|
-
const buildContainerWorkflow = imagebuilder.
|
|
1520
|
+
const buildImageWorkflow = imagebuilder.AmazonManagedWorkflow.buildImage(this, 'BuildImage');
|
|
1521
|
+
const buildContainerWorkflow = imagebuilder.AmazonManagedWorkflow.buildContainer(this, 'BuildContainer');
|
|
1522
1522
|
|
|
1523
1523
|
// Test workflows
|
|
1524
|
-
const testImageWorkflow = imagebuilder.
|
|
1525
|
-
const testContainerWorkflow = imagebuilder.
|
|
1524
|
+
const testImageWorkflow = imagebuilder.AmazonManagedWorkflow.testImage(this, 'TestImage');
|
|
1525
|
+
const testContainerWorkflow = imagebuilder.AmazonManagedWorkflow.testContainer(this, 'TestContainer');
|
|
1526
1526
|
|
|
1527
1527
|
// Distribution workflows
|
|
1528
|
-
const distributeContainerWorkflow = imagebuilder.
|
|
1528
|
+
const distributeContainerWorkflow = imagebuilder.AmazonManagedWorkflow.distributeContainer(this, 'DistributeContainer');
|
|
1529
1529
|
```
|
|
1530
1530
|
|
|
1531
1531
|
### Lifecycle Policy
|
|
@@ -239,7 +239,7 @@ For more information, see [Amazon MSK Express Brokers](https://docs.aws.amazon.c
|
|
|
239
239
|
|
|
240
240
|
**Note:** When using Express Brokers, the following constraints apply:
|
|
241
241
|
|
|
242
|
-
- Apache Kafka version must be 3.6.x or 3.
|
|
242
|
+
- Apache Kafka version must be 3.6.x, 3.8.x, or 3.9.x
|
|
243
243
|
- You must specify the `instanceType`
|
|
244
244
|
- The VPC must have at least 3 subnets (across 3 AZs)
|
|
245
245
|
- `ebsStorageInfo` is not supported
|
|
@@ -9,6 +9,7 @@ import { App, Fn, RemovalPolicy, ResourceEnvironment, Stack, UnscopedValidationE
|
|
|
9
9
|
import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
10
10
|
import * as cpactions from 'aws-cdk-lib/aws-codepipeline-actions';
|
|
11
11
|
import { Node } from 'constructs';
|
|
12
|
+
import { SOLUTION_STACK_NAME } from '../../utils/aws-elasticbeanstalk';
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
15
|
* To validate that the deployment actually succeeds, perform the following actions:
|
|
@@ -93,8 +94,7 @@ const beanstalkApp = new elasticbeanstalk.CfnApplication(stack, 'beastalk-app',
|
|
|
93
94
|
const beanstalkEnv = new elasticbeanstalk.CfnEnvironment(stack, 'beanstlk-env', {
|
|
94
95
|
applicationName: beanstalkApp.applicationName!,
|
|
95
96
|
environmentName: 'codepipeline-test-env',
|
|
96
|
-
|
|
97
|
-
solutionStackName: '64bit Amazon Linux 2023 v6.6.2 running Node.js 20',
|
|
97
|
+
solutionStackName: SOLUTION_STACK_NAME.NODEJS_20,
|
|
98
98
|
optionSettings: [
|
|
99
99
|
{
|
|
100
100
|
namespace: 'aws:autoscaling:launchconfiguration',
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/integ.vpc-endpoint-eusc.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import * as cdk from 'aws-cdk-lib';
|
|
2
|
+
import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
3
|
+
import { IntegTest } from '@aws-cdk/integ-tests-alpha';
|
|
4
|
+
import { EC2_RESTRICT_DEFAULT_SECURITY_GROUP } from 'aws-cdk-lib/cx-api';
|
|
5
|
+
|
|
6
|
+
class EuscVpcEndpointStack extends cdk.Stack {
|
|
7
|
+
constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
|
|
8
|
+
super(scope, id, props);
|
|
9
|
+
this.node.setContext(EC2_RESTRICT_DEFAULT_SECURITY_GROUP, false);
|
|
10
|
+
|
|
11
|
+
const vpc = new ec2.Vpc(this, 'EuscVpc');
|
|
12
|
+
|
|
13
|
+
// Test VPC endpoints for eusc-de-east-1 region services
|
|
14
|
+
vpc.addInterfaceEndpoint('EcrDkrEndpoint', {
|
|
15
|
+
service: ec2.InterfaceVpcEndpointAwsService.ECR_DOCKER,
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
vpc.addInterfaceEndpoint('EcrApiEndpoint', {
|
|
19
|
+
service: ec2.InterfaceVpcEndpointAwsService.ECR,
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
vpc.addInterfaceEndpoint('ApiGatewayEndpoint', {
|
|
23
|
+
service: ec2.InterfaceVpcEndpointAwsService.APIGATEWAY,
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
vpc.addInterfaceEndpoint('SecurityHubEndpoint', {
|
|
27
|
+
service: ec2.InterfaceVpcEndpointAwsService.SECURITYHUB,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const app = new cdk.App();
|
|
33
|
+
|
|
34
|
+
const testCase = new EuscVpcEndpointStack(app, 'aws-cdk-ec2-vpc-endpoint-eusc', {
|
|
35
|
+
env: { region: 'eusc-de-east-1' },
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
new IntegTest(app, 'vpc-endpoint-eusc', {
|
|
39
|
+
testCases: [testCase],
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
app.synth();
|
|
@@ -1665,26 +1665,21 @@ Managed Instances Capacity Providers allow you to use AWS-managed EC2 instances
|
|
|
1665
1665
|
|
|
1666
1666
|
See [ECS documentation for Managed Instances Capacity Provider](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/managed-instances-capacity-providers-concept.html) for more documentation.
|
|
1667
1667
|
|
|
1668
|
+
#### IAM Roles Setup
|
|
1669
|
+
Managed instances require an infrastructure and an EC2 instance profile. You can either provide your own infrastructure role and/or instance profile, or let the construct create them automatically.
|
|
1670
|
+
|
|
1671
|
+
Option 1: Let CDK create the role and instance profile automatically
|
|
1668
1672
|
```ts
|
|
1669
1673
|
declare const vpc: ec2.Vpc;
|
|
1670
|
-
declare const infrastructureRole: iam.Role;
|
|
1671
|
-
declare const instanceProfile: iam.InstanceProfile;
|
|
1672
1674
|
|
|
1673
1675
|
const cluster = new ecs.Cluster(this, 'Cluster', { vpc });
|
|
1674
1676
|
|
|
1675
|
-
// Create a Managed Instances Capacity Provider
|
|
1676
1677
|
const miCapacityProvider = new ecs.ManagedInstancesCapacityProvider(this, 'MICapacityProvider', {
|
|
1677
|
-
infrastructureRole,
|
|
1678
|
-
ec2InstanceProfile: instanceProfile,
|
|
1679
1678
|
subnets: vpc.privateSubnets,
|
|
1680
|
-
securityGroups: [new ec2.SecurityGroup(this, 'MISecurityGroup', { vpc })],
|
|
1681
1679
|
instanceRequirements: {
|
|
1682
1680
|
vCpuCountMin: 1,
|
|
1683
1681
|
memoryMin: Size.gibibytes(2),
|
|
1684
|
-
cpuManufacturers: [ec2.CpuManufacturer.INTEL],
|
|
1685
|
-
acceleratorManufacturers: [ec2.AcceleratorManufacturer.NVIDIA],
|
|
1686
1682
|
},
|
|
1687
|
-
propagateTags: ecs.PropagateManagedInstancesTags.CAPACITY_PROVIDER,
|
|
1688
1683
|
});
|
|
1689
1684
|
|
|
1690
1685
|
// Optionally configure security group rules using IConnectable interface
|
|
@@ -1718,16 +1713,83 @@ new ecs.FargateService(this, 'FargateService', {
|
|
|
1718
1713
|
});
|
|
1719
1714
|
```
|
|
1720
1715
|
|
|
1716
|
+
Option 2: If you don't want to use the `AmazonECSInfrastructureRolePolicyForManagedInstances` managed policy for the ECS infrastructure role, you can create a custom infrastructure role with the required permissions. See [documentation](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/infrastructure_IAM_role.html) for what permissions are needed for the ECS infrastructure role.
|
|
1717
|
+
|
|
1718
|
+
You can also choose not to use the automatically created ec2InstanceProfile. See [ECS documentation](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/managed-instances-instance-profile.html) for what permissions are required for the profile's role.
|
|
1719
|
+
|
|
1720
|
+
```ts
|
|
1721
|
+
declare const vpc: ec2.Vpc;
|
|
1722
|
+
|
|
1723
|
+
const cluster = new ecs.Cluster(this, 'Cluster', { vpc });
|
|
1724
|
+
|
|
1725
|
+
// Add your custom policies to the role.
|
|
1726
|
+
const customInstanceRole = new iam.Role(this, 'CustomInstanceRole', {
|
|
1727
|
+
assumedBy: new iam.ServicePrincipal('ec2.amazonaws.com'),
|
|
1728
|
+
});
|
|
1729
|
+
|
|
1730
|
+
const customInstanceProfile = new iam.InstanceProfile(this, 'CustomInstanceProfile', {
|
|
1731
|
+
role: customInstanceRole,
|
|
1732
|
+
});
|
|
1733
|
+
|
|
1734
|
+
// Add your custom policies to the role.
|
|
1735
|
+
const customInfrastructureRole = new iam.Role(this, 'CustomInfrastructureRole', {
|
|
1736
|
+
assumedBy: new iam.ServicePrincipal('ecs.amazonaws.com'),
|
|
1737
|
+
});
|
|
1738
|
+
|
|
1739
|
+
// Add PassRole permission to allow ECS to pass the instance role to EC2.
|
|
1740
|
+
customInfrastructureRole.addToPolicy(new iam.PolicyStatement({
|
|
1741
|
+
effect: iam.Effect.ALLOW,
|
|
1742
|
+
actions: ['iam:PassRole'],
|
|
1743
|
+
resources: [customInstanceRole.roleArn],
|
|
1744
|
+
conditions: {
|
|
1745
|
+
StringEquals: {
|
|
1746
|
+
'iam:PassedToService': 'ec2.amazonaws.com',
|
|
1747
|
+
},
|
|
1748
|
+
},
|
|
1749
|
+
}));
|
|
1750
|
+
|
|
1751
|
+
const miCapacityProviderCustom = new ecs.ManagedInstancesCapacityProvider(this, 'MICapacityProviderCustomRoles', {
|
|
1752
|
+
infrastructureRole: customInfrastructureRole,
|
|
1753
|
+
ec2InstanceProfile: customInstanceProfile,
|
|
1754
|
+
subnets: vpc.privateSubnets,
|
|
1755
|
+
});
|
|
1756
|
+
|
|
1757
|
+
// Add the capacity provider to the cluster
|
|
1758
|
+
cluster.addManagedInstancesCapacityProvider(miCapacityProviderCustom);
|
|
1759
|
+
|
|
1760
|
+
const taskDefinition = new ecs.TaskDefinition(this, 'TaskDef', {
|
|
1761
|
+
memoryMiB: '512',
|
|
1762
|
+
cpu: '256',
|
|
1763
|
+
networkMode: ecs.NetworkMode.AWS_VPC,
|
|
1764
|
+
compatibility: ecs.Compatibility.MANAGED_INSTANCES,
|
|
1765
|
+
});
|
|
1766
|
+
|
|
1767
|
+
taskDefinition.addContainer('web', {
|
|
1768
|
+
image: ecs.ContainerImage.fromRegistry('amazon/amazon-ecs-sample'),
|
|
1769
|
+
memoryReservationMiB: 256,
|
|
1770
|
+
});
|
|
1771
|
+
|
|
1772
|
+
|
|
1773
|
+
new ecs.FargateService(this, 'FargateService', {
|
|
1774
|
+
|
|
1775
|
+
cluster,
|
|
1776
|
+
taskDefinition,
|
|
1777
|
+
minHealthyPercent: 100,
|
|
1778
|
+
capacityProviderStrategies: [
|
|
1779
|
+
{
|
|
1780
|
+
capacityProvider: miCapacityProviderCustom.capacityProviderName,
|
|
1781
|
+
weight: 1,
|
|
1782
|
+
},
|
|
1783
|
+
],
|
|
1784
|
+
});
|
|
1785
|
+
```
|
|
1786
|
+
|
|
1721
1787
|
You can specify detailed instance requirements to control which types of instances are used:
|
|
1722
1788
|
|
|
1723
1789
|
```ts
|
|
1724
|
-
declare const infrastructureRole: iam.Role;
|
|
1725
|
-
declare const instanceProfile: iam.InstanceProfile;
|
|
1726
1790
|
declare const vpc: ec2.Vpc;
|
|
1727
1791
|
|
|
1728
1792
|
const miCapacityProvider = new ecs.ManagedInstancesCapacityProvider(this, 'MICapacityProvider', {
|
|
1729
|
-
infrastructureRole,
|
|
1730
|
-
ec2InstanceProfile: instanceProfile,
|
|
1731
1793
|
subnets: vpc.privateSubnets,
|
|
1732
1794
|
instanceRequirements: {
|
|
1733
1795
|
// Required: CPU and memory constraints
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.app-mesh-proxy-config.ts
CHANGED
|
@@ -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
|
});
|
|
@@ -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-ec2-capacity-provider-managed-draining');
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.capacity-provider.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
|
});
|
|
@@ -2,12 +2,11 @@ import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
|
2
2
|
import * as elb from 'aws-cdk-lib/aws-elasticloadbalancing';
|
|
3
3
|
import * as cdk from 'aws-cdk-lib';
|
|
4
4
|
import * as ecs from 'aws-cdk-lib/aws-ecs';
|
|
5
|
+
import { CfnResource } from 'aws-cdk-lib';
|
|
5
6
|
|
|
6
7
|
const app = new cdk.App({
|
|
7
8
|
postCliContext: {
|
|
8
9
|
'@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
|
|
9
|
-
'@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
|
|
10
|
-
'@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
|
|
11
10
|
'@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy': false,
|
|
12
11
|
},
|
|
13
12
|
});
|
|
@@ -45,6 +44,14 @@ const lb = new elb.LoadBalancer(stack, 'LB', { vpc });
|
|
|
45
44
|
lb.addListener({ externalPort: 80 });
|
|
46
45
|
lb.addTarget(service);
|
|
47
46
|
|
|
47
|
+
// Suppress security guardian rule for CLB default behavior
|
|
48
|
+
lb.connections.securityGroups.forEach(sg => {
|
|
49
|
+
const cfnSg = sg.node.defaultChild as CfnResource;
|
|
50
|
+
cfnSg.addMetadata('guard', {
|
|
51
|
+
SuppressedRules: ['EC2_NO_OPEN_SECURITY_GROUPS'],
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
|
|
48
55
|
new cdk.CfnOutput(stack, 'LoadBalancerDNS', { value: lb.loadBalancerDnsName });
|
|
49
56
|
|
|
50
57
|
app.synth();
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.cloudmap-container-port.ts
CHANGED
|
@@ -2,12 +2,11 @@ import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
|
2
2
|
import * as cloudmap from 'aws-cdk-lib/aws-servicediscovery';
|
|
3
3
|
import * as cdk from 'aws-cdk-lib';
|
|
4
4
|
import * as ecs from 'aws-cdk-lib/aws-ecs';
|
|
5
|
+
import { CfnResource } from 'aws-cdk-lib';
|
|
5
6
|
|
|
6
7
|
const app = new cdk.App({
|
|
7
8
|
postCliContext: {
|
|
8
9
|
'@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
|
|
9
|
-
'@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
|
|
10
|
-
'@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
|
|
11
10
|
'@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy': false,
|
|
12
11
|
},
|
|
13
12
|
});
|
|
@@ -33,6 +32,14 @@ const capacity = cluster.addCapacity('capacity', {
|
|
|
33
32
|
});
|
|
34
33
|
capacity.connections.allowFromAnyIpv4(ec2.Port.tcpRange(32768, 61000));
|
|
35
34
|
|
|
35
|
+
// Suppress security guardian rule for intentional test setup
|
|
36
|
+
capacity.connections.securityGroups.forEach(sg => {
|
|
37
|
+
const cfnSg = sg.node.defaultChild as CfnResource;
|
|
38
|
+
cfnSg.addMetadata('guard', {
|
|
39
|
+
SuppressedRules: ['EC2_NO_OPEN_SECURITY_GROUPS'],
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
|
|
36
43
|
cluster.addDefaultCloudMapNamespace({ name: 'aws-ecs-integ' });
|
|
37
44
|
|
|
38
45
|
const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef', {});
|
|
@@ -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.cluster-imported.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
|
});
|
|
@@ -8,8 +8,6 @@ import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
|
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
|
});
|
|
@@ -8,8 +8,6 @@ import * as iam from 'aws-cdk-lib/aws-iam';
|
|
|
8
8
|
const app = new cdk.App({
|
|
9
9
|
postCliContext: {
|
|
10
10
|
'@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
|
|
11
|
-
'@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': true,
|
|
12
|
-
'@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
|
|
13
11
|
'@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy': false,
|
|
14
12
|
},
|
|
15
13
|
});
|
|
@@ -7,8 +7,6 @@ import * as ecs 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
|
});
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.deployment-alarms.ts
CHANGED
|
@@ -8,8 +8,6 @@ import * as ecs from 'aws-cdk-lib/aws-ecs';
|
|
|
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
|
});
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.enable-execute-command.ts
CHANGED
|
@@ -10,8 +10,6 @@ const app = new cdk.App({
|
|
|
10
10
|
postCliContext: {
|
|
11
11
|
'@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
|
|
12
12
|
'@aws-cdk/aws-ecs:reduceEc2FargateCloudWatchPermissions': true,
|
|
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
|
});
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.environment-file.ts
CHANGED
|
@@ -10,8 +10,6 @@ import { IntegTest } from '@aws-cdk/integ-tests-alpha';
|
|
|
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
|
});
|
|
@@ -8,8 +8,6 @@ import * as ecs from 'aws-cdk-lib/aws-ecs';
|
|
|
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
|
});
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.firelens-s3-config.ts
CHANGED
|
@@ -3,12 +3,11 @@ import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
|
3
3
|
import * as s3_assets from 'aws-cdk-lib/aws-s3-assets';
|
|
4
4
|
import * as cdk from 'aws-cdk-lib';
|
|
5
5
|
import * as ecs from 'aws-cdk-lib/aws-ecs';
|
|
6
|
+
import { CfnResource } from 'aws-cdk-lib';
|
|
6
7
|
|
|
7
8
|
const app = new cdk.App({
|
|
8
9
|
postCliContext: {
|
|
9
10
|
'@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
|
|
10
|
-
'@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
|
|
11
|
-
'@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
|
|
12
11
|
'@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy': false,
|
|
13
12
|
},
|
|
14
13
|
});
|
|
@@ -69,6 +68,13 @@ container.addPortMappings({
|
|
|
69
68
|
// Create a security group that allows tcp @ port 80
|
|
70
69
|
const securityGroup = new ec2.SecurityGroup(stack, 'websvc-sg', { vpc });
|
|
71
70
|
securityGroup.addIngressRule(ec2.Peer.anyIpv4(), ec2.Port.tcp(80));
|
|
71
|
+
|
|
72
|
+
// Suppress security guardian rule for intentional test setup
|
|
73
|
+
const cfnSecurityGroup = securityGroup.node.defaultChild as CfnResource;
|
|
74
|
+
cfnSecurityGroup.addMetadata('guard', {
|
|
75
|
+
SuppressedRules: ['EC2_NO_OPEN_SECURITY_GROUPS'],
|
|
76
|
+
});
|
|
77
|
+
|
|
72
78
|
new ecs.Ec2Service(stack, 'Service', {
|
|
73
79
|
cluster,
|
|
74
80
|
taskDefinition,
|
|
@@ -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
|
});
|
|
@@ -2,12 +2,11 @@ import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
|
2
2
|
import * as elbv2 from 'aws-cdk-lib/aws-elasticloadbalancingv2';
|
|
3
3
|
import * as cdk from 'aws-cdk-lib';
|
|
4
4
|
import * as ecs from 'aws-cdk-lib/aws-ecs';
|
|
5
|
+
import { CfnResource } from 'aws-cdk-lib';
|
|
5
6
|
|
|
6
7
|
const app = new cdk.App({
|
|
7
8
|
postCliContext: {
|
|
8
9
|
'@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
|
|
9
|
-
'@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
|
|
10
|
-
'@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
|
|
11
10
|
'@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy': false,
|
|
12
11
|
},
|
|
13
12
|
});
|
|
@@ -49,6 +48,14 @@ listener.addTargets('ECS', {
|
|
|
49
48
|
targets: [service],
|
|
50
49
|
});
|
|
51
50
|
|
|
51
|
+
// Suppress security guardian rule for ALB default behavior (open: true)
|
|
52
|
+
lb.connections.securityGroups.forEach(sg => {
|
|
53
|
+
const cfnSg = sg.node.defaultChild as CfnResource;
|
|
54
|
+
cfnSg.addMetadata('guard', {
|
|
55
|
+
SuppressedRules: ['EC2_NO_OPEN_SECURITY_GROUPS'],
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
|
|
52
59
|
new cdk.CfnOutput(stack, 'LoadBalancerDNS', { value: lb.loadBalancerDnsName });
|
|
53
60
|
|
|
54
61
|
app.synth();
|
|
@@ -3,12 +3,11 @@ import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
|
3
3
|
import * as elbv2 from 'aws-cdk-lib/aws-elasticloadbalancingv2';
|
|
4
4
|
import * as cdk from 'aws-cdk-lib';
|
|
5
5
|
import * as ecs from 'aws-cdk-lib/aws-ecs';
|
|
6
|
+
import { CfnResource } from 'aws-cdk-lib';
|
|
6
7
|
|
|
7
8
|
const app = new cdk.App({
|
|
8
9
|
postCliContext: {
|
|
9
10
|
'@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
|
|
10
|
-
'@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
|
|
11
|
-
'@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
|
|
12
11
|
'@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy': false,
|
|
13
12
|
},
|
|
14
13
|
});
|
|
@@ -49,6 +48,14 @@ listener.addTargets('ECS', {
|
|
|
49
48
|
targets: [service],
|
|
50
49
|
});
|
|
51
50
|
|
|
51
|
+
// Suppress security guardian rule for ALB default behavior (open: true)
|
|
52
|
+
lb.connections.securityGroups.forEach(sg => {
|
|
53
|
+
const cfnSg = sg.node.defaultChild as CfnResource;
|
|
54
|
+
cfnSg.addMetadata('guard', {
|
|
55
|
+
SuppressedRules: ['EC2_NO_OPEN_SECURITY_GROUPS'],
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
|
|
52
59
|
new cdk.CfnOutput(stack, 'LoadBalancerDNS', { value: lb.loadBalancerDnsName });
|
|
53
60
|
|
|
54
61
|
app.synth();
|