konokenj.cdk-api-mcp-server 0.51.0__py3-none-any.whl → 0.53.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-bedrock-agentcore-alpha/README.md +325 -3
- cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-lambda-go-alpha/README.md +102 -4
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/README.md +9 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ.spec-restapi.ts +1 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/README.md +93 -81
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.stage.ts +20 -4
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codebuild/README.md +0 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.managed-policy.ts +9 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.policy.ts +9 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/README.md +60 -3
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/integ.cloudwatch-logs-processors.ts +45 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.runtime.fromasset.ts +19 -4
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.runtime.inlinecode.ts +7 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/README.md +65 -4
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-big-response.ts +13 -6
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-cloudfront.ts +20 -18
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-cross-nested-stack-source.ts +7 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-cross-stack-source.ts +6 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-cross-stack-ssm-source.ts +7 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-data.ts +83 -62
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-deployed-bucket.ts +10 -4
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-large-file.ts +20 -12
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-loggroup.ts +7 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-security-groups-efs.ts +77 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-security-groups-empty.ts +69 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-security-groups-multiple.ts +89 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-security-groups-single.ts +77 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-signcontent.ts +11 -7
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-substitution-with-destination-key.ts +15 -8
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-substitution-with-role.ts +29 -14
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-substitution.ts +16 -8
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-vpc-basic.ts +65 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-vpc-config.ts +66 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-vpc-custom-subnets.ts +66 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-vpc-efs.ts +66 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-vpc-security-groups.ts +72 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-vpc-subnet-selection.ts +70 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment.ts +47 -69
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/integ.sm-jsonpath-with-distributed-map-jsonata.ts +105 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/FEATURE_FLAGS.md +11 -11
- {konokenj_cdk_api_mcp_server-0.51.0.dist-info → konokenj_cdk_api_mcp_server-0.53.0.dist-info}/METADATA +2 -2
- {konokenj_cdk_api_mcp_server-0.51.0.dist-info → konokenj_cdk_api_mcp_server-0.53.0.dist-info}/RECORD +46 -34
- {konokenj_cdk_api_mcp_server-0.51.0.dist-info → konokenj_cdk_api_mcp_server-0.53.0.dist-info}/WHEEL +0 -0
- {konokenj_cdk_api_mcp_server-0.51.0.dist-info → konokenj_cdk_api_mcp_server-0.53.0.dist-info}/entry_points.txt +0 -0
- {konokenj_cdk_api_mcp_server-0.51.0.dist-info → konokenj_cdk_api_mcp_server-0.53.0.dist-info}/licenses/LICENSE.txt +0 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
3
|
+
import * as s3 from 'aws-cdk-lib/aws-s3';
|
|
4
|
+
import * as cdk from 'aws-cdk-lib';
|
|
5
|
+
import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
6
|
+
import { Construct } from 'constructs';
|
|
7
|
+
import * as s3deploy from 'aws-cdk-lib/aws-s3-deployment';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Integration test for bucket deployment with VPC and custom security groups:
|
|
11
|
+
* - Lambda function runs in VPC with custom security group
|
|
12
|
+
* - Security group allows all outbound traffic for S3 access
|
|
13
|
+
*/
|
|
14
|
+
class TestBucketDeploymentVpcSecurityGroups extends cdk.Stack {
|
|
15
|
+
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
|
|
16
|
+
super(scope, id, props);
|
|
17
|
+
|
|
18
|
+
// VPC with specific security groups
|
|
19
|
+
// Use isolated subnets with S3 VPC endpoint - no NAT Gateway or Elastic IP needed
|
|
20
|
+
const vpc = new ec2.Vpc(this, 'SgVpc', {
|
|
21
|
+
restrictDefaultSecurityGroup: false,
|
|
22
|
+
natGateways: 0,
|
|
23
|
+
subnetConfiguration: [
|
|
24
|
+
{
|
|
25
|
+
cidrMask: 24,
|
|
26
|
+
name: 'Isolated',
|
|
27
|
+
subnetType: ec2.SubnetType.PRIVATE_ISOLATED,
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
// Add S3 Gateway endpoint so Lambda can access S3 without NAT Gateway
|
|
33
|
+
vpc.addGatewayEndpoint('S3Endpoint', {
|
|
34
|
+
service: ec2.GatewayVpcEndpointAwsService.S3,
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
const securityGroup = new ec2.SecurityGroup(this, 'CustomSecurityGroup', {
|
|
38
|
+
vpc: vpc,
|
|
39
|
+
description: 'Custom security group for bucket deployment',
|
|
40
|
+
allowAllOutbound: true,
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
const bucket = new s3.Bucket(this, 'Destination', {
|
|
44
|
+
removalPolicy: cdk.RemovalPolicy.DESTROY,
|
|
45
|
+
autoDeleteObjects: true,
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
new s3deploy.BucketDeployment(this, 'DeployWithVpcAndSecurityGroup', {
|
|
49
|
+
sources: [s3deploy.Source.asset(path.join(__dirname, 'my-website'))],
|
|
50
|
+
destinationBucket: bucket,
|
|
51
|
+
destinationKeyPrefix: 'sg-vpc/',
|
|
52
|
+
vpc: vpc,
|
|
53
|
+
securityGroups: [securityGroup],
|
|
54
|
+
retainOnDelete: false,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const app = new cdk.App({
|
|
60
|
+
postCliContext: {
|
|
61
|
+
'@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
const testCase = new TestBucketDeploymentVpcSecurityGroups(app, 'test-bucket-deployment-vpc-security-groups');
|
|
66
|
+
|
|
67
|
+
new integ.IntegTest(app, 'integ-test-bucket-deployment-vpc-security-groups', {
|
|
68
|
+
testCases: [testCase],
|
|
69
|
+
diffAssets: false,
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
app.synth();
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
3
|
+
import * as s3 from 'aws-cdk-lib/aws-s3';
|
|
4
|
+
import * as cdk from 'aws-cdk-lib';
|
|
5
|
+
import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
6
|
+
import { Construct } from 'constructs';
|
|
7
|
+
import * as s3deploy from 'aws-cdk-lib/aws-s3-deployment';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Integration test for bucket deployment with VPC and explicit subnet selection:
|
|
11
|
+
* - Lambda function runs in VPC with explicit subnet type selection
|
|
12
|
+
* - Tests vpcSubnets property for controlling which subnets Lambda uses
|
|
13
|
+
*/
|
|
14
|
+
class TestBucketDeploymentVpcSubnetSelection extends cdk.Stack {
|
|
15
|
+
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
|
|
16
|
+
super(scope, id, props);
|
|
17
|
+
|
|
18
|
+
// VPC with specific subnets
|
|
19
|
+
// Use isolated subnets with S3 VPC endpoint - no NAT Gateway or Elastic IP needed
|
|
20
|
+
// Use a different CIDR to avoid conflicts with existing stacks
|
|
21
|
+
const vpc = new ec2.Vpc(this, 'SubnetVpc', {
|
|
22
|
+
restrictDefaultSecurityGroup: false,
|
|
23
|
+
natGateways: 0,
|
|
24
|
+
ipAddresses: ec2.IpAddresses.cidr('10.1.0.0/16'),
|
|
25
|
+
subnetConfiguration: [
|
|
26
|
+
{
|
|
27
|
+
cidrMask: 24,
|
|
28
|
+
name: 'Isolated',
|
|
29
|
+
subnetType: ec2.SubnetType.PRIVATE_ISOLATED,
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
// Add S3 Gateway endpoint so Lambda can access S3 without NAT Gateway
|
|
35
|
+
vpc.addGatewayEndpoint('S3Endpoint', {
|
|
36
|
+
service: ec2.GatewayVpcEndpointAwsService.S3,
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
const bucket = new s3.Bucket(this, 'Destination', {
|
|
40
|
+
removalPolicy: cdk.RemovalPolicy.DESTROY,
|
|
41
|
+
autoDeleteObjects: true,
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
new s3deploy.BucketDeployment(this, 'DeployWithVpcAndSubnets', {
|
|
45
|
+
sources: [s3deploy.Source.asset(path.join(__dirname, 'my-website'))],
|
|
46
|
+
destinationBucket: bucket,
|
|
47
|
+
destinationKeyPrefix: 'subnet-vpc/',
|
|
48
|
+
vpc: vpc,
|
|
49
|
+
vpcSubnets: {
|
|
50
|
+
subnetType: ec2.SubnetType.PRIVATE_ISOLATED,
|
|
51
|
+
},
|
|
52
|
+
retainOnDelete: false,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const app = new cdk.App({
|
|
58
|
+
postCliContext: {
|
|
59
|
+
'@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
const testCase = new TestBucketDeploymentVpcSubnetSelection(app, 'test-bucket-deployment-vpc-subnet-selection');
|
|
64
|
+
|
|
65
|
+
new integ.IntegTest(app, 'integ-test-bucket-deployment-vpc-subnet-selection', {
|
|
66
|
+
testCases: [testCase],
|
|
67
|
+
diffAssets: false,
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
app.synth();
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import * as path from 'path';
|
|
2
|
-
import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
3
2
|
import * as s3 from 'aws-cdk-lib/aws-s3';
|
|
4
3
|
import * as cdk from 'aws-cdk-lib';
|
|
5
4
|
import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
@@ -7,115 +6,93 @@ import { Match } from '@aws-cdk/integ-tests-alpha';
|
|
|
7
6
|
import { Construct } from 'constructs';
|
|
8
7
|
import * as s3deploy from 'aws-cdk-lib/aws-s3-deployment';
|
|
9
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Integration test for core bucket deployment features:
|
|
11
|
+
* - Basic deployment functionality
|
|
12
|
+
* - Prune behavior (deleting files not in source)
|
|
13
|
+
* - Exclude filters
|
|
14
|
+
* - Extract behavior (extracting vs keeping zip files)
|
|
15
|
+
* - addSource() method for dynamically adding sources
|
|
16
|
+
* - objectKeys output property and outputObjectKeys flag
|
|
17
|
+
*/
|
|
10
18
|
class TestBucketDeployment extends cdk.Stack {
|
|
11
|
-
public readonly
|
|
19
|
+
public readonly bucketWithAddSource: s3.IBucket;
|
|
12
20
|
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
|
|
13
21
|
super(scope, id, props);
|
|
14
22
|
|
|
15
|
-
const
|
|
16
|
-
websiteIndexDocument: 'index.html',
|
|
17
|
-
publicReadAccess: false,
|
|
23
|
+
const commonBucketProps = {
|
|
18
24
|
removalPolicy: cdk.RemovalPolicy.DESTROY,
|
|
19
25
|
autoDeleteObjects: true, // needed for integration test cleanup
|
|
20
|
-
}
|
|
26
|
+
};
|
|
21
27
|
|
|
22
|
-
new
|
|
23
|
-
|
|
24
|
-
destinationBucket,
|
|
25
|
-
retainOnDelete: false, // default is true, which will block the integration test cleanup
|
|
28
|
+
const destinationBucket = new s3.Bucket(this, 'Destination', {
|
|
29
|
+
...commonBucketProps,
|
|
26
30
|
});
|
|
27
31
|
|
|
28
|
-
|
|
32
|
+
// Test basic deployment functionality
|
|
33
|
+
new s3deploy.BucketDeployment(this, 'DeployWithBasic', {
|
|
29
34
|
sources: [s3deploy.Source.asset(path.join(__dirname, 'my-website'))],
|
|
30
35
|
destinationBucket,
|
|
31
|
-
|
|
32
|
-
useEfs: true,
|
|
33
|
-
vpc: new ec2.Vpc(this, 'InlineVpc', { restrictDefaultSecurityGroup: false }),
|
|
34
|
-
retainOnDelete: false, // default is true, which will block the integration test cleanup
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
const bucket2 = new s3.Bucket(this, 'Destination2', {
|
|
38
|
-
removalPolicy: cdk.RemovalPolicy.DESTROY,
|
|
39
|
-
autoDeleteObjects: true, // needed for integration test cleanup
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
new s3deploy.BucketDeployment(this, 'DeployWithPrefix', {
|
|
43
|
-
sources: [s3deploy.Source.asset(path.join(__dirname, 'my-website'))],
|
|
44
|
-
destinationBucket: bucket2,
|
|
45
|
-
destinationKeyPrefix: 'deploy/here/',
|
|
46
|
-
retainOnDelete: false, // default is true, which will block the integration test cleanup
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
const bucket3 = new s3.Bucket(this, 'Destination3', {
|
|
50
|
-
removalPolicy: cdk.RemovalPolicy.DESTROY,
|
|
51
|
-
autoDeleteObjects: true, // needed for integration test cleanup
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
new s3deploy.BucketDeployment(this, 'DeployWithMetadata', {
|
|
55
|
-
sources: [s3deploy.Source.asset(path.join(__dirname, 'my-website'))],
|
|
56
|
-
destinationBucket: bucket3,
|
|
57
|
-
retainOnDelete: false, // default is true, which will block the integration test cleanup
|
|
58
|
-
cacheControl: [s3deploy.CacheControl.setPublic(), s3deploy.CacheControl.maxAge(cdk.Duration.minutes(1))],
|
|
59
|
-
contentType: 'text/html',
|
|
60
|
-
metadata: { A: 'aaa', B: 'bbb', C: 'ccc' },
|
|
36
|
+
retainOnDelete: false,
|
|
61
37
|
});
|
|
62
38
|
|
|
63
|
-
|
|
39
|
+
// Test that files not in source are preserved when prune is disabled
|
|
40
|
+
new s3deploy.BucketDeployment(this, 'DeployWithPruneDisabled', {
|
|
64
41
|
sources: [s3deploy.Source.asset(path.join(__dirname, 'my-website'))],
|
|
65
42
|
destinationBucket,
|
|
66
43
|
prune: false,
|
|
67
44
|
retainOnDelete: false,
|
|
68
45
|
});
|
|
69
46
|
|
|
70
|
-
|
|
47
|
+
// Test exclude filters to skip certain files from deployment
|
|
48
|
+
new s3deploy.BucketDeployment(this, 'DeployWithExclude', {
|
|
71
49
|
sources: [s3deploy.Source.asset(path.join(__dirname, 'my-website'))],
|
|
72
50
|
destinationBucket,
|
|
73
51
|
exclude: ['*.gif'],
|
|
74
52
|
retainOnDelete: false,
|
|
75
53
|
});
|
|
76
54
|
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
removalPolicy: cdk.RemovalPolicy.DESTROY,
|
|
80
|
-
autoDeleteObjects: true, // needed for integration test cleanup
|
|
55
|
+
const bucketWithoutExtract = new s3.Bucket(this, 'BucketWithoutExtract', {
|
|
56
|
+
...commonBucketProps,
|
|
81
57
|
});
|
|
82
58
|
|
|
83
|
-
|
|
59
|
+
// Test that zip files are uploaded as-is when extract is disabled
|
|
60
|
+
new s3deploy.BucketDeployment(this, 'DeployWithoutExtract', {
|
|
84
61
|
sources: [s3deploy.Source.asset(path.join(__dirname, 'my-website'))],
|
|
85
|
-
destinationBucket:
|
|
62
|
+
destinationBucket: bucketWithoutExtract,
|
|
86
63
|
extract: false,
|
|
87
64
|
retainOnDelete: false,
|
|
88
65
|
});
|
|
89
66
|
|
|
90
|
-
this.
|
|
91
|
-
|
|
92
|
-
removalPolicy: cdk.RemovalPolicy.DESTROY,
|
|
93
|
-
autoDeleteObjects: true, // needed for integration test cleanup
|
|
67
|
+
this.bucketWithAddSource = new s3.Bucket(this, 'BucketWithAddSource', {
|
|
68
|
+
...commonBucketProps,
|
|
94
69
|
});
|
|
95
70
|
|
|
96
|
-
|
|
71
|
+
// Test addSource() method for dynamically adding sources after construction
|
|
72
|
+
// and validate objectKeys output property returns both asset files and added sources
|
|
73
|
+
const deployWithAddSource = new s3deploy.BucketDeployment(this, 'DeployWithAddSource', {
|
|
97
74
|
sources: [s3deploy.Source.asset(path.join(__dirname, 'my-website-second'))],
|
|
98
|
-
destinationBucket: this.
|
|
99
|
-
retainOnDelete: false,
|
|
75
|
+
destinationBucket: this.bucketWithAddSource,
|
|
76
|
+
retainOnDelete: false,
|
|
100
77
|
});
|
|
101
|
-
|
|
78
|
+
deployWithAddSource.addSource(s3deploy.Source.data('some-key', 'helloworld'));
|
|
102
79
|
|
|
80
|
+
// Output objectKeys to validate they are returned in CloudFormation outputs
|
|
103
81
|
new cdk.CfnOutput(this, 'customResourceData', {
|
|
104
82
|
value: cdk.Fn.sub('Object Keys are ${keys}', {
|
|
105
|
-
keys: cdk.Fn.join(',',
|
|
83
|
+
keys: cdk.Fn.join(',', deployWithAddSource.objectKeys),
|
|
106
84
|
}),
|
|
107
85
|
});
|
|
108
86
|
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
removalPolicy: cdk.RemovalPolicy.DESTROY,
|
|
112
|
-
autoDeleteObjects: true, // needed for integration test cleanup
|
|
87
|
+
const bucketWithoutObjectKeys = new s3.Bucket(this, 'BucketWithoutObjectKeys', {
|
|
88
|
+
...commonBucketProps,
|
|
113
89
|
});
|
|
114
90
|
|
|
115
|
-
|
|
91
|
+
// Test that objectKeys are not returned when outputObjectKeys is disabled
|
|
92
|
+
new s3deploy.BucketDeployment(this, 'DeployWithoutObjectKeys', {
|
|
116
93
|
sources: [s3deploy.Source.asset(path.join(__dirname, 'my-website-second'))],
|
|
117
|
-
destinationBucket:
|
|
118
|
-
retainOnDelete: false,
|
|
94
|
+
destinationBucket: bucketWithoutObjectKeys,
|
|
95
|
+
retainOnDelete: false,
|
|
119
96
|
outputObjectKeys: false,
|
|
120
97
|
});
|
|
121
98
|
}
|
|
@@ -128,13 +105,14 @@ const app = new cdk.App({
|
|
|
128
105
|
});
|
|
129
106
|
const testCase = new TestBucketDeployment(app, 'test-bucket-deployments');
|
|
130
107
|
|
|
131
|
-
// Assert that DeployMeWithoutExtractingFilesOnDestination deploys a zip file to bucket4
|
|
132
108
|
const integTest = new integ.IntegTest(app, 'integ-test-bucket-deployments', {
|
|
133
109
|
testCases: [testCase],
|
|
134
110
|
diffAssets: true,
|
|
135
111
|
});
|
|
112
|
+
|
|
113
|
+
// Assert that addSource() successfully adds the data source alongside the asset source
|
|
136
114
|
const listObjectsCall = integTest.assertions.awsApiCall('S3', 'listObjects', {
|
|
137
|
-
Bucket: testCase.
|
|
115
|
+
Bucket: testCase.bucketWithAddSource.bucketName,
|
|
138
116
|
});
|
|
139
117
|
listObjectsCall.provider.addToRolePolicy({
|
|
140
118
|
Effect: 'Allow',
|
|
@@ -154,12 +132,12 @@ listObjectsCall.expect(integ.ExpectedResult.objectLike({
|
|
|
154
132
|
),
|
|
155
133
|
}));
|
|
156
134
|
|
|
157
|
-
// Assert that
|
|
135
|
+
// Assert that objectKeys output contains the deployed object keys when outputObjectKeys is enabled (default)
|
|
158
136
|
const describe = integTest.assertions.awsApiCall('CloudFormation', 'describeStacks', {
|
|
159
137
|
StackName: 'test-bucket-deployments',
|
|
160
138
|
});
|
|
161
139
|
|
|
162
140
|
describe.assertAtPath('Stacks.0.Outputs.0.OutputKey', integ.ExpectedResult.stringLikeRegexp('customResourceData'));
|
|
163
|
-
describe.assertAtPath('Stacks.0.Outputs.0.OutputValue', integ.ExpectedResult.stringLikeRegexp('Object Keys are ([0-9a-f])
|
|
141
|
+
describe.assertAtPath('Stacks.0.Outputs.0.OutputValue', integ.ExpectedResult.stringLikeRegexp('Object Keys are ([0-9a-f])+\\.zip(,([0-9a-f])+\\.zip)*'));
|
|
164
142
|
|
|
165
143
|
app.synth();
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import * as cdk from 'aws-cdk-lib/core';
|
|
2
|
+
import { ExpectedResult, IntegTest } from '@aws-cdk/integ-tests-alpha';
|
|
3
|
+
import * as sfn from 'aws-cdk-lib/aws-stepfunctions';
|
|
4
|
+
import * as s3 from 'aws-cdk-lib/aws-s3';
|
|
5
|
+
import { STEPFUNCTIONS_USE_DISTRIBUTED_MAP_RESULT_WRITER_V2 } from 'aws-cdk-lib/cx-api';
|
|
6
|
+
|
|
7
|
+
const CSV_KEY = 'my-key.csv';
|
|
8
|
+
const RESULT_BUCKET_PREFIX = 'my-prefix';
|
|
9
|
+
|
|
10
|
+
class DistributedMapStack extends cdk.Stack {
|
|
11
|
+
readonly stateMachine: sfn.StateMachine;
|
|
12
|
+
readonly bucket: s3.Bucket;
|
|
13
|
+
|
|
14
|
+
constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
|
|
15
|
+
super(scope, id, props);
|
|
16
|
+
|
|
17
|
+
this.bucket = new s3.Bucket(this, 'Bucket', {
|
|
18
|
+
autoDeleteObjects: true,
|
|
19
|
+
removalPolicy: cdk.RemovalPolicy.DESTROY,
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
const distributedMap = sfn.DistributedMap.jsonata(this, 'DistributedMap', {
|
|
23
|
+
itemReader: new sfn.S3CsvItemReader({
|
|
24
|
+
bucket: this.bucket,
|
|
25
|
+
key: CSV_KEY,
|
|
26
|
+
csvHeaders: sfn.CsvHeaders.useFirstRow(),
|
|
27
|
+
}),
|
|
28
|
+
resultWriterV2: new sfn.ResultWriterV2({
|
|
29
|
+
bucket: this.bucket,
|
|
30
|
+
prefix: RESULT_BUCKET_PREFIX,
|
|
31
|
+
}),
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
distributedMap.itemProcessor(sfn.Pass.jsonata(this, 'Pass'), {
|
|
35
|
+
mode: sfn.ProcessorMode.DISTRIBUTED,
|
|
36
|
+
executionType: sfn.ProcessorType.STANDARD,
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
this.stateMachine = new sfn.StateMachine(this, 'StateMachine', {
|
|
40
|
+
definition: distributedMap,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const app = new cdk.App({
|
|
46
|
+
context: {
|
|
47
|
+
[STEPFUNCTIONS_USE_DISTRIBUTED_MAP_RESULT_WRITER_V2]: true,
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
const stack = new DistributedMapStack(app, 'sm-jsonpath-with-distributed-map-jsonata');
|
|
51
|
+
|
|
52
|
+
const testCase = new IntegTest(app, 'integ-sm-jsonpath-with-distributed-map-jsonata', {
|
|
53
|
+
testCases: [stack],
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
testCase.assertions
|
|
57
|
+
.awsApiCall('StepFunctions', 'describeStateMachine', {
|
|
58
|
+
stateMachineArn: stack.stateMachine.stateMachineArn,
|
|
59
|
+
})
|
|
60
|
+
.expect(ExpectedResult.objectLike({ status: 'ACTIVE' }))
|
|
61
|
+
.waitForAssertions({
|
|
62
|
+
interval: cdk.Duration.seconds(10),
|
|
63
|
+
totalTimeout: cdk.Duration.minutes(5),
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
// Put an object in the bucket
|
|
67
|
+
const putObject = testCase.assertions.awsApiCall('S3', 'putObject', {
|
|
68
|
+
Bucket: stack.bucket.bucketName,
|
|
69
|
+
Key: CSV_KEY,
|
|
70
|
+
Body: 'a,b,c\n1,2,3\n4,5,6',
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
// Start an execution
|
|
74
|
+
const start = testCase.assertions.awsApiCall('StepFunctions', 'startExecution', {
|
|
75
|
+
stateMachineArn: stack.stateMachine.stateMachineArn,
|
|
76
|
+
});
|
|
77
|
+
putObject.next(start);
|
|
78
|
+
|
|
79
|
+
// describe the results of the execution
|
|
80
|
+
const describe = testCase.assertions.awsApiCall('StepFunctions', 'describeExecution', {
|
|
81
|
+
executionArn: start.getAttString('executionArn'),
|
|
82
|
+
});
|
|
83
|
+
start.next(describe);
|
|
84
|
+
|
|
85
|
+
// assert the results
|
|
86
|
+
const describeExecution = describe.expect(ExpectedResult.objectLike({
|
|
87
|
+
status: 'SUCCEEDED',
|
|
88
|
+
})).waitForAssertions({
|
|
89
|
+
interval: cdk.Duration.seconds(10),
|
|
90
|
+
totalTimeout: cdk.Duration.minutes(5),
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
const s3ApiCall = testCase.assertions.awsApiCall('S3', 'listObjectsV2', {
|
|
94
|
+
Bucket: stack.bucket.bucketName,
|
|
95
|
+
MaxKeys: 2,
|
|
96
|
+
Prefix: RESULT_BUCKET_PREFIX,
|
|
97
|
+
}).expect(ExpectedResult.objectLike({
|
|
98
|
+
KeyCount: 2,
|
|
99
|
+
}));
|
|
100
|
+
s3ApiCall.provider.addToRolePolicy({
|
|
101
|
+
Effect: 'Allow',
|
|
102
|
+
Action: ['s3:GetObject', 's3:ListBucket'],
|
|
103
|
+
Resource: ['*'],
|
|
104
|
+
});
|
|
105
|
+
describeExecution.next(s3ApiCall);
|
|
@@ -38,7 +38,7 @@ Flags come in three types:
|
|
|
38
38
|
| [@aws-cdk/core:enablePartitionLiterals](#aws-cdkcoreenablepartitionliterals) | Make ARNs concrete if AWS partition is known | 2.38.0 | fix |
|
|
39
39
|
| [@aws-cdk/aws-ecs:disableExplicitDeploymentControllerForCircuitBreaker](#aws-cdkaws-ecsdisableexplicitdeploymentcontrollerforcircuitbreaker) | Avoid setting the "ECS" deployment controller when adding a circuit breaker | 2.51.0 | fix |
|
|
40
40
|
| [@aws-cdk/aws-events:eventsTargetQueueSameAccount](#aws-cdkaws-eventseventstargetqueuesameaccount) | Event Rules may only push to encrypted SQS queues in the same account | 2.51.0 | fix |
|
|
41
|
-
| [@aws-cdk/aws-iam:importedRoleStackSafeDefaultPolicyName](#aws-cdkaws-iamimportedrolestacksafedefaultpolicyname) | Enable this feature to
|
|
41
|
+
| [@aws-cdk/aws-iam:importedRoleStackSafeDefaultPolicyName](#aws-cdkaws-iamimportedrolestacksafedefaultpolicyname) | Enable this feature to create default policy names for imported roles that depend on the stack the role is in. | 2.60.0 | fix |
|
|
42
42
|
| [@aws-cdk/aws-s3:serverAccessLogsUseBucketPolicy](#aws-cdkaws-s3serveraccesslogsusebucketpolicy) | Use S3 Bucket Policy instead of ACLs for Server Access Logging | 2.60.0 | fix |
|
|
43
43
|
| [@aws-cdk/customresources:installLatestAwsSdkDefault](#aws-cdkcustomresourcesinstalllatestawssdkdefault) | Whether to install the latest SDK by default in AwsCustomResource | 2.60.0 | new default |
|
|
44
44
|
| [@aws-cdk/aws-route53-patters:useCertificate](#aws-cdkaws-route53-pattersusecertificate) | Use the official `Certificate` resource instead of `DnsValidatedCertificate` | 2.61.0 | new default |
|
|
@@ -109,7 +109,7 @@ Flags come in three types:
|
|
|
109
109
|
| [@aws-cdk/aws-ecs-patterns:secGroupsDisablesImplicitOpenListener](#aws-cdkaws-ecs-patternssecgroupsdisablesimplicitopenlistener) | Disable implicit openListener when custom security groups are provided | 2.214.0 | new default |
|
|
110
110
|
| [@aws-cdk/aws-ecs-patterns:uniqueTargetGroupId](#aws-cdkaws-ecs-patternsuniquetargetgroupid) | When enabled, ECS patterns will generate unique target group IDs to prevent conflicts during load balancer replacement | 2.221.0 | fix |
|
|
111
111
|
| [@aws-cdk/aws-stepfunctions-tasks:httpInvokeDynamicJsonPathEndpoint](#aws-cdkaws-stepfunctions-taskshttpinvokedynamicjsonpathendpoint) | When enabled, allows using a dynamic apiEndpoint with JSONPath format in HttpInvoke tasks. | 2.221.0 | fix |
|
|
112
|
-
| [@aws-cdk/aws-elasticloadbalancingv2:networkLoadBalancerWithSecurityGroupByDefault](#aws-cdkaws-elasticloadbalancingv2networkloadbalancerwithsecuritygroupbydefault) | When enabled, Network Load Balancer will be created with a security group by default. |
|
|
112
|
+
| [@aws-cdk/aws-elasticloadbalancingv2:networkLoadBalancerWithSecurityGroupByDefault](#aws-cdkaws-elasticloadbalancingv2networkloadbalancerwithsecuritygroupbydefault) | When enabled, Network Load Balancer will be created with a security group by default. | 2.222.0 | new default |
|
|
113
113
|
|
|
114
114
|
<!-- END table -->
|
|
115
115
|
|
|
@@ -879,7 +879,7 @@ always apply, regardless of the value of this flag.
|
|
|
879
879
|
|
|
880
880
|
### @aws-cdk/aws-iam:importedRoleStackSafeDefaultPolicyName
|
|
881
881
|
|
|
882
|
-
*Enable this feature to
|
|
882
|
+
*Enable this feature to create default policy names for imported roles that depend on the stack the role is in.*
|
|
883
883
|
|
|
884
884
|
Flag type: Backwards incompatible bugfix
|
|
885
885
|
|
|
@@ -902,7 +902,7 @@ This new implementation creates default policy names based on the constructs nod
|
|
|
902
902
|
|
|
903
903
|
Flag type: Backwards incompatible bugfix
|
|
904
904
|
|
|
905
|
-
Enable this feature flag to use S3 Bucket Policy for granting permission
|
|
905
|
+
Enable this feature flag to use S3 Bucket Policy for granting permission for Server Access Logging
|
|
906
906
|
rather than using the canned `LogDeliveryWrite` ACL. ACLs do not work when Object Ownership is
|
|
907
907
|
enabled on the bucket.
|
|
908
908
|
|
|
@@ -1282,7 +1282,7 @@ Set this flag to false for existing mount targets.
|
|
|
1282
1282
|
Flag type: New default behavior
|
|
1283
1283
|
|
|
1284
1284
|
If this is set, and a `runtime` prop is not passed to, Lambda NodeJs
|
|
1285
|
-
functions will
|
|
1285
|
+
functions will use the latest version of the runtime provided by the Lambda
|
|
1286
1286
|
service. Do not use this if you your lambda function is reliant on dependencies
|
|
1287
1287
|
shipped as part of the runtime environment.
|
|
1288
1288
|
|
|
@@ -1504,7 +1504,7 @@ When this feature flag is disabled, it will keep the root account principal in t
|
|
|
1504
1504
|
|
|
1505
1505
|
Flag type: New default behavior
|
|
1506
1506
|
|
|
1507
|
-
When this
|
|
1507
|
+
When this feature flag is enabled, remove the default deployment alarm settings when creating a AWS ECS service.
|
|
1508
1508
|
|
|
1509
1509
|
|
|
1510
1510
|
| Since | Unset behaves like | Recommended value |
|
|
@@ -1755,8 +1755,8 @@ the latest Amazon Linux 2023 version will be used instead of Amazon Linux 2.
|
|
|
1755
1755
|
|
|
1756
1756
|
Flag type: Configuration option
|
|
1757
1757
|
|
|
1758
|
-
|
|
1759
|
-
This
|
|
1758
|
+
Previously, Aspects were invoked in a single pass of the construct tree.
|
|
1759
|
+
This meant that Aspects which created other Aspects were not run, and Aspects that created new nodes in the tree sometimes did not inherit their parent Aspects.
|
|
1760
1760
|
|
|
1761
1761
|
When this feature flag is enabled, a stabilization loop is run to recurse the construct tree multiple times when invoking Aspects.
|
|
1762
1762
|
|
|
@@ -1995,7 +1995,7 @@ When enabled, table replica will be default to the removal policy of source tabl
|
|
|
1995
1995
|
|
|
1996
1996
|
Flag type: New default behavior
|
|
1997
1997
|
|
|
1998
|
-
When this feature flag is enabled, the SDK API call response to
|
|
1998
|
+
When this feature flag is enabled, the SDK API call response to describe user pool client values will be logged in the custom
|
|
1999
1999
|
resource lambda function logs.
|
|
2000
2000
|
|
|
2001
2001
|
When this feature flag is disabled, the SDK API call response to describe user pool client values will not be logged in the custom
|
|
@@ -2174,7 +2174,7 @@ When this feature flag is disabled, a loggroup is created by Lambda service on f
|
|
|
2174
2174
|
of the function (existing behavior).
|
|
2175
2175
|
LogGroups created in this way do not support Tag propagation, Property Injectors, Aspects.
|
|
2176
2176
|
|
|
2177
|
-
DO NOT ENABLE: If you have
|
|
2177
|
+
DO NOT ENABLE: If you have an existing app defining a lambda function and
|
|
2178
2178
|
have not supplied a logGroup or logRetention prop and your lambda function has
|
|
2179
2179
|
executed at least once, the logGroup has been already created with the same name
|
|
2180
2180
|
so your deployment will start failing.
|
|
@@ -2333,7 +2333,7 @@ When this feature flag is enabled, Network Load Balancer will be created with a
|
|
|
2333
2333
|
| Since | Unset behaves like | Recommended value |
|
|
2334
2334
|
| ----- | ----- | ----- |
|
|
2335
2335
|
| (not in v1) | | |
|
|
2336
|
-
|
|
|
2336
|
+
| 2.222.0 | `false` | `true` |
|
|
2337
2337
|
|
|
2338
2338
|
**Compatibility with old behavior:** Disable the feature flag to create Network Load Balancer without a security group by default.
|
|
2339
2339
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: konokenj.cdk-api-mcp-server
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.53.0
|
|
4
4
|
Summary: An MCP server provides AWS CDK API Reference
|
|
5
5
|
Project-URL: Documentation, https://github.com/konokenj/cdk-api-mcp-server#readme
|
|
6
6
|
Project-URL: Issues, https://github.com/konokenj/cdk-api-mcp-server/issues
|
|
@@ -26,7 +26,7 @@ Description-Content-Type: text/markdown
|
|
|
26
26
|
[](https://pypi.org/project/konokenj.cdk-api-mcp-server)
|
|
27
27
|
|
|
28
28
|
<!-- DEP-VERSIONS-START -->
|
|
29
|
-
[](https://github.com/konokenj/cdk-api-mcp-server/blob/main/current-versions/aws-cdk.txt)
|
|
30
30
|
<!-- DEP-VERSIONS-END -->
|
|
31
31
|
|
|
32
32
|
---
|