konokenj.cdk-api-mcp-server 0.39.0__py3-none-any.whl → 0.41.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/custom-resource-handlers/README.md +78 -15
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/README.md/README.md +364 -16
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/README.md +144 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.api-dualstack.ts +4 -3
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.api.ts +4 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.stage.ts +20 -7
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.usage-plan.ts +80 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-authorizers/integ.iam.ts +38 -34
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.sqs.ts +71 -58
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-autoscaling/README.md +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codedeploy/integ.deployment-config.ts +15 -4
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codedeploy/integ.deployment-group.ts +40 -218
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/README.md +21 -68
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.availability-zone-rebalancing.ts +4 -14
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.blue-green-deployment-strategy.ts +13 -71
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.enable-execute-command.ts +29 -35
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.exec-command.ts +22 -16
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.lb-awsvpc-nw.ts +16 -26
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.pseudo-terminal.ts +8 -18
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/README.md +2 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53/integ.delete-existing-record-set.ts +0 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-cross-stack-ssm-source.ts +91 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-notifications/integ.bucket-notifications.ts +80 -42
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-signer/integ.signing-profile.ts +5 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/README.md +9 -3
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.invoke-jsonata.ts +80 -87
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.invoke.ts +69 -87
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.start-job-run.ts +104 -102
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/core/README.md +2 -1893
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/FEATURE_FLAGS.md +25 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/README.md +24 -1
- {konokenj_cdk_api_mcp_server-0.39.0.dist-info → konokenj_cdk_api_mcp_server-0.41.0.dist-info}/METADATA +2 -2
- {konokenj_cdk_api_mcp_server-0.39.0.dist-info → konokenj_cdk_api_mcp_server-0.41.0.dist-info}/RECORD +37 -35
- {konokenj_cdk_api_mcp_server-0.39.0.dist-info → konokenj_cdk_api_mcp_server-0.41.0.dist-info}/WHEEL +0 -0
- {konokenj_cdk_api_mcp_server-0.39.0.dist-info → konokenj_cdk_api_mcp_server-0.41.0.dist-info}/entry_points.txt +0 -0
- {konokenj_cdk_api_mcp_server-0.39.0.dist-info → konokenj_cdk_api_mcp_server-0.41.0.dist-info}/licenses/LICENSE.txt +0 -0
|
@@ -3,16 +3,11 @@ import * as kms from 'aws-cdk-lib/aws-kms';
|
|
|
3
3
|
import * as logs from 'aws-cdk-lib/aws-logs';
|
|
4
4
|
import * as s3 from 'aws-cdk-lib/aws-s3';
|
|
5
5
|
import * as cdk from 'aws-cdk-lib';
|
|
6
|
+
import { Duration } from 'aws-cdk-lib';
|
|
7
|
+
import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
6
8
|
import * as ecs from 'aws-cdk-lib/aws-ecs';
|
|
7
9
|
|
|
8
|
-
const app = new cdk.App(
|
|
9
|
-
postCliContext: {
|
|
10
|
-
'@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
|
|
11
|
-
'@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
|
|
12
|
-
'@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
|
|
13
|
-
'@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy': false,
|
|
14
|
-
},
|
|
15
|
-
});
|
|
10
|
+
const app = new cdk.App();
|
|
16
11
|
const stack = new cdk.Stack(app, 'aws-ecs-integ-exec-command');
|
|
17
12
|
|
|
18
13
|
const vpc = new ec2.Vpc(stack, 'Vpc', { maxAzs: 2, restrictDefaultSecurityGroup: false });
|
|
@@ -27,7 +22,7 @@ const execBucket = new s3.Bucket(stack, 'EcsExecBucket', {
|
|
|
27
22
|
encryptionKey: kmsKey,
|
|
28
23
|
});
|
|
29
24
|
|
|
30
|
-
const cluster = new ecs.Cluster(stack, '
|
|
25
|
+
const cluster = new ecs.Cluster(stack, 'FargateCluster', {
|
|
31
26
|
vpc,
|
|
32
27
|
executeCommandConfiguration: {
|
|
33
28
|
kmsKey,
|
|
@@ -41,21 +36,32 @@ const cluster = new ecs.Cluster(stack, 'Ec2Cluster', {
|
|
|
41
36
|
logging: ecs.ExecuteCommandLogging.OVERRIDE,
|
|
42
37
|
},
|
|
43
38
|
});
|
|
44
|
-
cluster.addCapacity('DefaultAutoScalingGroup', {
|
|
45
|
-
instanceType: new ec2.InstanceType('t2.micro'),
|
|
46
|
-
});
|
|
47
39
|
|
|
48
|
-
const taskDefinition = new ecs.
|
|
40
|
+
const taskDefinition = new ecs.FargateTaskDefinition(stack, 'TaskDef');
|
|
49
41
|
|
|
50
42
|
taskDefinition.addContainer('web', {
|
|
51
43
|
image: ecs.ContainerImage.fromRegistry('amazon/amazon-ecs-sample'),
|
|
52
|
-
|
|
44
|
+
healthCheck: {
|
|
45
|
+
command: ['CMD-SHELL', 'curl localhost:8000'],
|
|
46
|
+
interval: Duration.seconds(60),
|
|
47
|
+
timeout: Duration.seconds(40),
|
|
48
|
+
},
|
|
53
49
|
});
|
|
54
50
|
|
|
55
|
-
new ecs.
|
|
51
|
+
new ecs.FargateService(stack, 'FargateService', {
|
|
56
52
|
cluster,
|
|
57
53
|
taskDefinition,
|
|
58
54
|
enableExecuteCommand: true,
|
|
59
55
|
});
|
|
60
56
|
|
|
61
|
-
|
|
57
|
+
new integ.IntegTest(app, 'exec-command-integ-test', {
|
|
58
|
+
testCases: [stack],
|
|
59
|
+
diffAssets: true,
|
|
60
|
+
cdkCommandOptions: {
|
|
61
|
+
deploy: {
|
|
62
|
+
args: {
|
|
63
|
+
rollback: true,
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
});
|
|
@@ -3,48 +3,38 @@ 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
5
|
|
|
6
|
-
const app = new cdk.App(
|
|
7
|
-
postCliContext: {
|
|
8
|
-
'@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
|
|
9
|
-
'@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
|
|
10
|
-
'@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
|
|
11
|
-
'@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy': false,
|
|
12
|
-
},
|
|
13
|
-
});
|
|
6
|
+
const app = new cdk.App();
|
|
14
7
|
const stack = new cdk.Stack(app, 'aws-ecs-integ');
|
|
15
8
|
|
|
16
9
|
const vpc = new ec2.Vpc(stack, 'Vpc', { maxAzs: 2, restrictDefaultSecurityGroup: false });
|
|
17
10
|
|
|
18
|
-
const cluster = new ecs.Cluster(stack, '
|
|
19
|
-
cluster.addCapacity('DefaultAutoScalingGroup', {
|
|
20
|
-
instanceType: new ec2.InstanceType('t2.micro'),
|
|
21
|
-
});
|
|
11
|
+
const cluster = new ecs.Cluster(stack, 'FargateCluster', { vpc });
|
|
22
12
|
|
|
23
|
-
const taskDefinition = new ecs.
|
|
24
|
-
|
|
13
|
+
const taskDefinition = new ecs.FargateTaskDefinition(stack, 'TaskDef', {
|
|
14
|
+
memoryLimitMiB: 1024,
|
|
15
|
+
cpu: 512,
|
|
25
16
|
});
|
|
26
17
|
|
|
27
|
-
|
|
18
|
+
taskDefinition.addContainer('web', {
|
|
28
19
|
image: ecs.ContainerImage.fromRegistry('amazon/amazon-ecs-sample'),
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
},
|
|
20
|
+
portMappings: [{
|
|
21
|
+
containerPort: 80,
|
|
22
|
+
protocol: ecs.Protocol.TCP,
|
|
23
|
+
}],
|
|
33
24
|
});
|
|
34
25
|
|
|
35
|
-
|
|
36
|
-
containerPort: 80,
|
|
37
|
-
protocol: ecs.Protocol.TCP,
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
const service = new ecs.Ec2Service(stack, 'Service', {
|
|
26
|
+
const service = new ecs.FargateService(stack, 'Service', {
|
|
41
27
|
cluster,
|
|
42
28
|
taskDefinition,
|
|
43
29
|
});
|
|
44
30
|
|
|
31
|
+
const scaling = service.autoScaleTaskCount({ maxCapacity: 10 });
|
|
32
|
+
// Quite low to try and force it to scale
|
|
33
|
+
scaling.scaleOnCpuUtilization('ReasonableCpu', { targetUtilizationPercent: 10 });
|
|
34
|
+
|
|
45
35
|
const lb = new elbv2.ApplicationLoadBalancer(stack, 'LB', { vpc, internetFacing: true });
|
|
46
36
|
const listener = lb.addListener('PublicListener', { port: 80, open: true });
|
|
47
|
-
listener.addTargets('
|
|
37
|
+
listener.addTargets('Fargate', {
|
|
48
38
|
port: 80,
|
|
49
39
|
targets: [service],
|
|
50
40
|
});
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.pseudo-terminal.ts
CHANGED
|
@@ -3,35 +3,25 @@ import * as cdk from 'aws-cdk-lib';
|
|
|
3
3
|
import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
4
4
|
import * as ecs from 'aws-cdk-lib/aws-ecs';
|
|
5
5
|
|
|
6
|
-
const app = new cdk.App(
|
|
7
|
-
|
|
8
|
-
'@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
|
|
9
|
-
'@aws-cdk/aws-ecs:enableImdsBlockingDeprecatedFeature': false,
|
|
10
|
-
'@aws-cdk/aws-ecs:disableEcsImdsBlocking': false,
|
|
11
|
-
'@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy': false,
|
|
12
|
-
},
|
|
13
|
-
});
|
|
14
|
-
const stack = new cdk.Stack(app, 'aws-ecs-integ-pseudo-terminal');
|
|
6
|
+
const app = new cdk.App();
|
|
7
|
+
const stack = new cdk.Stack(app, 'integ-pseudo-terminal');
|
|
15
8
|
|
|
16
9
|
// Create a cluster
|
|
17
10
|
const vpc = new ec2.Vpc(stack, 'Vpc', { maxAzs: 2, restrictDefaultSecurityGroup: false });
|
|
18
11
|
|
|
19
12
|
const cluster = new ecs.Cluster(stack, 'EcsCluster', { vpc });
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef', {
|
|
25
|
-
networkMode: ecs.NetworkMode.AWS_VPC,
|
|
13
|
+
const taskDefinition = new ecs.FargateTaskDefinition(stack, 'TaskDef', {
|
|
14
|
+
cpu: 256,
|
|
15
|
+
memoryLimitMiB: 512,
|
|
26
16
|
});
|
|
27
|
-
|
|
28
17
|
taskDefinition.addContainer('web', {
|
|
29
18
|
image: ecs.ContainerImage.fromRegistry('amazon/amazon-ecs-sample'),
|
|
30
|
-
memoryLimitMiB:
|
|
19
|
+
memoryLimitMiB: 512,
|
|
20
|
+
cpu: 256,
|
|
31
21
|
pseudoTerminal: true,
|
|
32
22
|
});
|
|
33
23
|
|
|
34
|
-
new ecs.
|
|
24
|
+
new ecs.FargateService(stack, 'Service', {
|
|
35
25
|
cluster,
|
|
36
26
|
taskDefinition,
|
|
37
27
|
});
|
|
@@ -1177,7 +1177,7 @@ const version = fn.currentVersion;
|
|
|
1177
1177
|
You can use Application AutoScaling to automatically configure the provisioned concurrency for your functions. AutoScaling can be set to track utilization or be based on a schedule. To configure AutoScaling on a function alias:
|
|
1178
1178
|
|
|
1179
1179
|
```ts
|
|
1180
|
-
import * as
|
|
1180
|
+
import * as appscaling from 'aws-cdk-lib/aws-applicationautoscaling';
|
|
1181
1181
|
|
|
1182
1182
|
declare const fn: lambda.Function;
|
|
1183
1183
|
const alias = fn.addAlias('prod');
|
|
@@ -1192,7 +1192,7 @@ as.scaleOnUtilization({
|
|
|
1192
1192
|
|
|
1193
1193
|
// Configure Scheduled Scaling
|
|
1194
1194
|
as.scaleOnSchedule('ScaleUpInTheMorning', {
|
|
1195
|
-
schedule:
|
|
1195
|
+
schedule: appscaling.Schedule.cron({ hour: '8', minute: '0'}),
|
|
1196
1196
|
minCapacity: 20,
|
|
1197
1197
|
});
|
|
1198
1198
|
```
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import * as cdk from 'aws-cdk-lib';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
3
|
+
import * as s3 from 'aws-cdk-lib/aws-s3';
|
|
4
|
+
import * as s3deploy from 'aws-cdk-lib/aws-s3-deployment';
|
|
5
|
+
import * as ssm from 'aws-cdk-lib/aws-ssm';
|
|
6
|
+
import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
7
|
+
|
|
8
|
+
class SsmStack extends cdk.NestedStack {
|
|
9
|
+
public readonly ssmParam: ssm.StringListParameter;
|
|
10
|
+
|
|
11
|
+
constructor(scope: Construct, id: string, props?: cdk.NestedStackProps) {
|
|
12
|
+
super(scope, id, props);
|
|
13
|
+
|
|
14
|
+
const testSubnets = ['subnet-12345', 'subnet-67890'];
|
|
15
|
+
|
|
16
|
+
this.ssmParam = new ssm.StringListParameter(this, 'TestParam', {
|
|
17
|
+
parameterName: '/repro/subnets',
|
|
18
|
+
stringListValue: testSubnets,
|
|
19
|
+
description: 'Test parameter for reproduction',
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
class S3Stack extends cdk.NestedStack {
|
|
25
|
+
public readonly bucket: s3.Bucket;
|
|
26
|
+
|
|
27
|
+
constructor(scope: Construct, id: string, props?: cdk.NestedStackProps) {
|
|
28
|
+
super(scope, id, props);
|
|
29
|
+
|
|
30
|
+
const readParam = ssm.StringListParameter.fromStringListParameterName(
|
|
31
|
+
this,
|
|
32
|
+
'ReadParam',
|
|
33
|
+
'/repro/subnets',
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
this.bucket = new s3.Bucket(this, 'ReproBucket', {
|
|
37
|
+
removalPolicy: cdk.RemovalPolicy.DESTROY,
|
|
38
|
+
autoDeleteObjects: true,
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
new s3deploy.BucketDeployment(this, 'ReproDeployment', {
|
|
42
|
+
sources: [
|
|
43
|
+
s3deploy.Source.jsonData('config.json', {
|
|
44
|
+
subnets: readParam.stringListValue,
|
|
45
|
+
expectedValues: ['subnet-12345', 'subnet-67890'],
|
|
46
|
+
version: '2.207.0',
|
|
47
|
+
issue: 'StringListParameter tokens not resolved in Source.jsonData',
|
|
48
|
+
timestamp: new Date().toISOString(),
|
|
49
|
+
}),
|
|
50
|
+
],
|
|
51
|
+
destinationBucket: this.bucket,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export class MainStack extends cdk.Stack {
|
|
57
|
+
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
|
|
58
|
+
super(scope, id, props);
|
|
59
|
+
|
|
60
|
+
const ssmStack = new SsmStack(this, 'SsmStack');
|
|
61
|
+
const s3Stack = new S3Stack(this, 'S3Stack');
|
|
62
|
+
s3Stack.addDependency(ssmStack);
|
|
63
|
+
|
|
64
|
+
new cdk.CfnOutput(this, 'BucketName', {
|
|
65
|
+
value: s3Stack.bucket.bucketName,
|
|
66
|
+
description: 'Check config.json in this bucket',
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
new cdk.CfnOutput(this, 'ParameterName', {
|
|
70
|
+
value: ssmStack.ssmParam.parameterName,
|
|
71
|
+
description: 'SSM parameter name',
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
new cdk.CfnOutput(this, 'ExpectedValues', {
|
|
75
|
+
value: JSON.stringify(['subnet-12345', 'subnet-67890']),
|
|
76
|
+
description: 'Expected subnet values in config.json',
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
new cdk.CfnOutput(this, 'VerificationCommand', {
|
|
80
|
+
value: `aws s3 cp s3://${s3Stack.bucket.bucketName}/config.json - | jq .`,
|
|
81
|
+
description: 'Command to check the deployed JSON',
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const app = new cdk.App();
|
|
87
|
+
const stack = new MainStack(app, 'integ-bucket-deployment-cross-stack-ssm');
|
|
88
|
+
|
|
89
|
+
new integ.IntegTest(app, 'integ-bucket-deployment-cross-stack-ssm-source', {
|
|
90
|
+
testCases: [stack],
|
|
91
|
+
});
|
|
@@ -1,68 +1,106 @@
|
|
|
1
|
+
import * as lambda from 'aws-cdk-lib/aws-lambda';
|
|
1
2
|
import * as s3 from 'aws-cdk-lib/aws-s3';
|
|
2
|
-
import * as sqs from 'aws-cdk-lib/aws-sqs';
|
|
3
3
|
import * as cdk from 'aws-cdk-lib';
|
|
4
|
-
import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
5
4
|
import * as s3n from 'aws-cdk-lib/aws-s3-notifications';
|
|
5
|
+
import { STANDARD_NODEJS_RUNTIME } from '../../../config';
|
|
6
|
+
import * as constructs from 'constructs';
|
|
7
|
+
import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
6
8
|
|
|
7
9
|
const app = new cdk.App({
|
|
8
10
|
postCliContext: {
|
|
11
|
+
'@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
|
|
9
12
|
'@aws-cdk/aws-s3:keepNotificationInImportedBucket': false,
|
|
10
13
|
},
|
|
11
14
|
});
|
|
12
15
|
|
|
13
|
-
const stack = new cdk.Stack(app, '
|
|
16
|
+
const stack = new cdk.Stack(app, 'cdk-integ-lambda-bucket-s3-notifications');
|
|
14
17
|
|
|
15
|
-
const
|
|
18
|
+
const bucketA = new s3.Bucket(stack, 'MyBucket', {
|
|
16
19
|
removalPolicy: cdk.RemovalPolicy.DESTROY,
|
|
17
20
|
});
|
|
18
|
-
const queue = new sqs.Queue(stack, 'MyQueue');
|
|
19
21
|
|
|
20
|
-
|
|
22
|
+
const fn = new lambda.Function(stack, 'MyFunction', {
|
|
23
|
+
runtime: STANDARD_NODEJS_RUNTIME,
|
|
24
|
+
handler: 'index.handler',
|
|
25
|
+
code: lambda.Code.fromInline(`exports.handler = ${handler.toString()}`),
|
|
26
|
+
});
|
|
21
27
|
|
|
22
|
-
const
|
|
28
|
+
const bucketB = new s3.Bucket(stack, 'YourBucket', {
|
|
23
29
|
removalPolicy: cdk.RemovalPolicy.DESTROY,
|
|
24
|
-
autoDeleteObjects: true,
|
|
25
30
|
});
|
|
26
|
-
bucket2.addObjectCreatedNotification(new s3n.SqsDestination(queue), { suffix: '.png' });
|
|
27
31
|
|
|
28
|
-
|
|
29
|
-
bucket1.addObjectRemovedNotification(new s3n.SqsDestination(encryptedQueue));
|
|
32
|
+
bucketB.addEventNotification(s3.EventType.OBJECT_REMOVED, new s3n.LambdaDestination(fn));
|
|
30
33
|
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
removalPolicy: cdk.RemovalPolicy.DESTROY,
|
|
34
|
-
});
|
|
35
|
-
const queueWithIncorrectS3Permissions = new sqs.Queue(stack, 'MyQueueWithIncorrectS3Permissions');
|
|
36
|
-
queueWithIncorrectS3Permissions.addToResourcePolicy(
|
|
37
|
-
new cdk.aws_iam.PolicyStatement({
|
|
38
|
-
effect: cdk.aws_iam.Effect.DENY,
|
|
39
|
-
actions: ['sqs:SendMessage'],
|
|
40
|
-
principals: [new cdk.aws_iam.ServicePrincipal('s3.amazonaws.com')],
|
|
41
|
-
resources: [queueWithIncorrectS3Permissions.queueArn],
|
|
42
|
-
}));
|
|
43
|
-
bucket3.addEventNotification(s3.EventType.OBJECT_TAGGING_PUT, new s3n.SqsDestination(queueWithIncorrectS3Permissions));
|
|
34
|
+
const c1 = new constructs.Construct(stack, 'Construct1');
|
|
35
|
+
const unmanagedBucket = s3.Bucket.fromBucketName(c1, 'IntegUnmanagedBucket1', bucketA.bucketName);
|
|
44
36
|
|
|
45
|
-
|
|
37
|
+
unmanagedBucket.addObjectCreatedNotification(new s3n.LambdaDestination(fn), { prefix: 'TEST1/', suffix: '.png' });
|
|
38
|
+
unmanagedBucket.addEventNotification(s3.EventType.OBJECT_CREATED, new s3n.LambdaDestination(fn), { prefix: 'TEST2/' });
|
|
39
|
+
|
|
40
|
+
/* eslint-disable no-console */
|
|
41
|
+
function handler(event: any, _context: any, callback: any) {
|
|
42
|
+
console.log(JSON.stringify(event, undefined, 2));
|
|
43
|
+
return callback(null, event);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const integTest = new integ.IntegTest(app, 'LambdaBucketNotificationsTest', {
|
|
47
|
+
cdkCommandOptions: {
|
|
48
|
+
deploy: {
|
|
49
|
+
args: {
|
|
50
|
+
rollback: false,
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
},
|
|
46
54
|
testCases: [stack],
|
|
47
55
|
diffAssets: true,
|
|
48
56
|
});
|
|
49
57
|
|
|
50
|
-
integTest.assertions
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
Body: 'Some content',
|
|
60
|
-
}))
|
|
61
|
-
.next(integTest.assertions
|
|
62
|
-
.awsApiCall('SQS', 'receiveMessage', {
|
|
63
|
-
QueueUrl: queue.queueUrl,
|
|
64
|
-
WaitTimeSeconds: 20,
|
|
65
|
-
})
|
|
66
|
-
.assertAtPath('Messages.0.Body.Records.0.s3.object.key', integ.ExpectedResult.stringLikeRegexp('image\\.png')));
|
|
58
|
+
const getNotifications = integTest.assertions
|
|
59
|
+
.awsApiCall('S3', 'getBucketNotificationConfiguration', {
|
|
60
|
+
Bucket: unmanagedBucket.bucketName,
|
|
61
|
+
});
|
|
62
|
+
getNotifications.provider.addToRolePolicy({
|
|
63
|
+
Effect: 'Allow',
|
|
64
|
+
Action: ['s3:GetBucketNotification'],
|
|
65
|
+
Resource: ['*'],
|
|
66
|
+
});
|
|
67
67
|
|
|
68
|
+
getNotifications.expect(integ.ExpectedResult.objectLike({
|
|
69
|
+
LambdaFunctionConfigurations: [
|
|
70
|
+
{
|
|
71
|
+
Events: [
|
|
72
|
+
's3:ObjectCreated:*',
|
|
73
|
+
],
|
|
74
|
+
Filter: {
|
|
75
|
+
Key: {
|
|
76
|
+
FilterRules: [
|
|
77
|
+
{
|
|
78
|
+
Name: 'Prefix',
|
|
79
|
+
Value: 'TEST1/',
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
Name: 'Suffix',
|
|
83
|
+
Value: '.png',
|
|
84
|
+
},
|
|
85
|
+
],
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
Events: [
|
|
91
|
+
's3:ObjectCreated:*',
|
|
92
|
+
],
|
|
93
|
+
Filter: {
|
|
94
|
+
Key: {
|
|
95
|
+
FilterRules: [
|
|
96
|
+
{
|
|
97
|
+
Name: 'Prefix',
|
|
98
|
+
Value: 'TEST2/',
|
|
99
|
+
},
|
|
100
|
+
],
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
],
|
|
105
|
+
}));
|
|
68
106
|
app.synth();
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-signer/integ.signing-profile.ts
CHANGED
|
@@ -16,6 +16,11 @@ new signer.SigningProfile(stack, 'SigningProfileOCI', {
|
|
|
16
16
|
signatureValidity: cdk.Duration.days(60),
|
|
17
17
|
});
|
|
18
18
|
|
|
19
|
+
new signer.SigningProfile(stack, 'SigningProfileWithName', {
|
|
20
|
+
platform: signer.Platform.AWS_LAMBDA_SHA384_ECDSA,
|
|
21
|
+
signingProfileName: 'test-signing-profile-name',
|
|
22
|
+
});
|
|
23
|
+
|
|
19
24
|
new IntegTest(app, 'cdk-integ-signer-signing-profile', {
|
|
20
25
|
testCases: [stack],
|
|
21
26
|
});
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/README.md
CHANGED
|
@@ -34,6 +34,8 @@ This module is part of the [AWS Cloud Development Kit](https://github.com/aws/aw
|
|
|
34
34
|
- [SubmitJob](#submitjob)
|
|
35
35
|
- [Bedrock](#bedrock)
|
|
36
36
|
- [InvokeModel](#invokemodel)
|
|
37
|
+
- [Using Input Path for S3 URI](#using-input-path-for-s3-uri)
|
|
38
|
+
- [Using Input Path](#using-input-path)
|
|
37
39
|
- [createModelCustomizationJob](#createmodelcustomizationjob)
|
|
38
40
|
- [CodeBuild](#codebuild)
|
|
39
41
|
- [StartBuild](#startbuild)
|
|
@@ -47,6 +49,7 @@ This module is part of the [AWS Cloud Development Kit](https://github.com/aws/aw
|
|
|
47
49
|
- [RunTask](#runtask)
|
|
48
50
|
- [EC2](#ec2)
|
|
49
51
|
- [Fargate](#fargate)
|
|
52
|
+
- [Override CPU and Memory Parameter](#override-cpu-and-memory-parameter)
|
|
50
53
|
- [ECS enable Exec](#ecs-enable-exec)
|
|
51
54
|
- [EMR](#emr)
|
|
52
55
|
- [Create Cluster](#create-cluster)
|
|
@@ -64,15 +67,18 @@ This module is part of the [AWS Cloud Development Kit](https://github.com/aws/aw
|
|
|
64
67
|
- [Call](#call)
|
|
65
68
|
- [EventBridge](#eventbridge)
|
|
66
69
|
- [Put Events](#put-events)
|
|
70
|
+
- [EventBridge Scheduler](#eventbridge-scheduler)
|
|
71
|
+
- [Create Scheduler](#create-scheduler)
|
|
67
72
|
- [Glue](#glue)
|
|
68
73
|
- [StartJobRun](#startjobrun)
|
|
69
74
|
- [StartCrawlerRun](#startcrawlerrun)
|
|
70
75
|
- [Glue DataBrew](#glue-databrew)
|
|
71
76
|
- [Start Job Run](#start-job-run-1)
|
|
77
|
+
- [Invoke HTTP API](#invoke-http-api)
|
|
72
78
|
- [Lambda](#lambda)
|
|
73
79
|
- [Invoke](#invoke)
|
|
74
80
|
- [MediaConvert](#mediaconvert)
|
|
75
|
-
- [
|
|
81
|
+
- [CreateJob](#createjob)
|
|
76
82
|
- [SageMaker](#sagemaker)
|
|
77
83
|
- [Create Training Job](#create-training-job)
|
|
78
84
|
- [Create Transform Job](#create-transform-job)
|
|
@@ -1315,12 +1321,12 @@ The following code snippet includes a Task state that uses eks:call to list the
|
|
|
1315
1321
|
|
|
1316
1322
|
```ts
|
|
1317
1323
|
import * as eks from 'aws-cdk-lib/aws-eks';
|
|
1318
|
-
import {
|
|
1324
|
+
import { KubectlV33Layer } from '@aws-cdk/lambda-layer-kubectl-v33';
|
|
1319
1325
|
|
|
1320
1326
|
const myEksCluster = new eks.Cluster(this, 'my sample cluster', {
|
|
1321
1327
|
version: eks.KubernetesVersion.V1_32,
|
|
1322
1328
|
clusterName: 'myEksCluster',
|
|
1323
|
-
kubectlLayer: new
|
|
1329
|
+
kubectlLayer: new KubectlV33Layer(this, 'kubectl'),
|
|
1324
1330
|
});
|
|
1325
1331
|
|
|
1326
1332
|
new tasks.EksCall(this, 'Call a EKS Endpoint', {
|