konokenj.cdk-api-mcp-server 0.28.0__py3-none-any.whl → 0.29.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-amplify-alpha/README.md +71 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/integ-tests-alpha/README.md +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudfront/README.md +18 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/README.md +83 -83
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-al2023-nodegroup.ts +1 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.fargate-cluster.ts +1 -3
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kms/README.md +4 -3
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kms/integ.alias-from-alias-name.ts +26 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/README.md +68 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.kafka-schema-registry.ts +186 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3/README.md +16 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/FEATURE_FLAGS.md +21 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/README.md +14 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/README.md +7 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.newpipeline-single-publisher.ts +53 -0
- {konokenj_cdk_api_mcp_server-0.28.0.dist-info → konokenj_cdk_api_mcp_server-0.29.0.dist-info}/METADATA +2 -2
- {konokenj_cdk_api_mcp_server-0.28.0.dist-info → konokenj_cdk_api_mcp_server-0.29.0.dist-info}/RECORD +21 -18
- {konokenj_cdk_api_mcp_server-0.28.0.dist-info → konokenj_cdk_api_mcp_server-0.29.0.dist-info}/WHEEL +0 -0
- {konokenj_cdk_api_mcp_server-0.28.0.dist-info → konokenj_cdk_api_mcp_server-0.29.0.dist-info}/entry_points.txt +0 -0
- {konokenj_cdk_api_mcp_server-0.28.0.dist-info → konokenj_cdk_api_mcp_server-0.29.0.dist-info}/licenses/LICENSE.txt +0 -0
cdk_api_mcp_server/__about__.py
CHANGED
|
@@ -238,6 +238,68 @@ const amplifyApp = new amplify.App(this, 'App', {
|
|
|
238
238
|
});
|
|
239
239
|
```
|
|
240
240
|
|
|
241
|
+
If the app uses a monorepo structure, define which appRoot from the build spec the custom response headers should apply to by using the `appRoot` property:
|
|
242
|
+
|
|
243
|
+
```ts
|
|
244
|
+
import * as codebuild from 'aws-cdk-lib/aws-codebuild';
|
|
245
|
+
|
|
246
|
+
const amplifyApp = new amplify.App(this, 'App', {
|
|
247
|
+
sourceCodeProvider: new amplify.GitHubSourceCodeProvider({
|
|
248
|
+
owner: '<user>',
|
|
249
|
+
repository: '<repo>',
|
|
250
|
+
oauthToken: SecretValue.secretsManager('my-github-token'),
|
|
251
|
+
}),
|
|
252
|
+
buildSpec: codebuild.BuildSpec.fromObjectToYaml({
|
|
253
|
+
version: '1.0',
|
|
254
|
+
applications: [
|
|
255
|
+
{
|
|
256
|
+
appRoot: 'frontend',
|
|
257
|
+
frontend: {
|
|
258
|
+
phases: {
|
|
259
|
+
preBuild: {
|
|
260
|
+
commands: ['npm install'],
|
|
261
|
+
},
|
|
262
|
+
build: {
|
|
263
|
+
commands: ['npm run build'],
|
|
264
|
+
},
|
|
265
|
+
},
|
|
266
|
+
},
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
appRoot: 'backend',
|
|
270
|
+
backend: {
|
|
271
|
+
phases: {
|
|
272
|
+
preBuild: {
|
|
273
|
+
commands: ['npm install'],
|
|
274
|
+
},
|
|
275
|
+
build: {
|
|
276
|
+
commands: ['npm run build'],
|
|
277
|
+
},
|
|
278
|
+
},
|
|
279
|
+
},
|
|
280
|
+
},
|
|
281
|
+
],
|
|
282
|
+
}),
|
|
283
|
+
customResponseHeaders: [
|
|
284
|
+
{
|
|
285
|
+
appRoot: 'frontend',
|
|
286
|
+
pattern: '*.json',
|
|
287
|
+
headers: {
|
|
288
|
+
'custom-header-name-1': 'custom-header-value-1',
|
|
289
|
+
'custom-header-name-2': 'custom-header-value-2',
|
|
290
|
+
},
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
appRoot: 'backend',
|
|
294
|
+
pattern: '/path/*',
|
|
295
|
+
headers: {
|
|
296
|
+
'custom-header-name-1': 'custom-header-value-2',
|
|
297
|
+
},
|
|
298
|
+
},
|
|
299
|
+
],
|
|
300
|
+
});
|
|
301
|
+
```
|
|
302
|
+
|
|
241
303
|
## Configure server side rendering when hosting app
|
|
242
304
|
|
|
243
305
|
Setting the `platform` field on the Amplify `App` construct can be used to control whether the app will host only static assets or server side rendered assets in addition to static. By default, the value is set to `WEB` (static only), however, server side rendering can be turned on by setting to `WEB_COMPUTE` as follows:
|
|
@@ -268,6 +330,15 @@ const amplifyApp = new amplify.App(this, 'MyApp', {
|
|
|
268
330
|
});
|
|
269
331
|
```
|
|
270
332
|
|
|
333
|
+
It is also possible to override the compute role for a specific branch by setting `computeRole` in `Branch`:
|
|
334
|
+
|
|
335
|
+
```ts
|
|
336
|
+
declare const computeRole: iam.Role;
|
|
337
|
+
declare const amplifyApp: amplify.App
|
|
338
|
+
|
|
339
|
+
const branch = amplifyApp.addBranch("dev", { computeRole });
|
|
340
|
+
```
|
|
341
|
+
|
|
271
342
|
## Cache Config
|
|
272
343
|
|
|
273
344
|
Amplify uses Amazon CloudFront to manage the caching configuration for your hosted applications. A cache configuration is applied to each app to optimize for the best performance.
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
## Overview
|
|
20
20
|
|
|
21
|
-
This library is meant to be used in combination with the [integ-runner](https://github.com/aws/aws-cdk/tree/main/packages/%40aws-cdk/integ-runner) CLI
|
|
21
|
+
This library is meant to be used in combination with the [integ-runner](https://github.com/aws/aws-cdk-cli/tree/main/packages/%40aws-cdk/integ-runner) CLI
|
|
22
22
|
to enable users to write and execute integration tests for AWS CDK Constructs.
|
|
23
23
|
|
|
24
24
|
An integration test should be defined as a CDK application, and
|
|
@@ -1252,7 +1252,24 @@ When using a CloudFront PublicKey, only the `comment` field can be updated after
|
|
|
1252
1252
|
Resource handler returned message: "Invalid request provided: AWS::CloudFront::PublicKey"
|
|
1253
1253
|
```
|
|
1254
1254
|
|
|
1255
|
-
To update the `encodedKey`, you must change the
|
|
1255
|
+
To update the `encodedKey`, you must change the ID of the public key resource in your template. This causes CloudFormation to create a new `cloudfront.PublicKey` resource and delete the old one during the next deployment.
|
|
1256
|
+
|
|
1257
|
+
Example:
|
|
1258
|
+
|
|
1259
|
+
```ts
|
|
1260
|
+
// Step 1: Original deployment
|
|
1261
|
+
const originalKey = new cloudfront.PublicKey(this, 'MyPublicKeyV1', {
|
|
1262
|
+
encodedKey: '...', // contents of original public_key.pem file
|
|
1263
|
+
});
|
|
1264
|
+
```
|
|
1265
|
+
|
|
1266
|
+
Regenerate a new key and change the construct id in the code:
|
|
1267
|
+
```ts
|
|
1268
|
+
// Step 2: In a subsequent deployment, create a new key with a different ID
|
|
1269
|
+
const updatedKey = new cloudfront.PublicKey(this, 'MyPublicKeyV2', {
|
|
1270
|
+
encodedKey: '...', // contents of new public_key.pem file
|
|
1271
|
+
});
|
|
1272
|
+
```
|
|
1256
1273
|
|
|
1257
1274
|
|
|
1258
1275
|
See:
|
|
@@ -69,12 +69,12 @@ This example defines an Amazon EKS cluster with the following configuration:
|
|
|
69
69
|
* A Kubernetes pod with a container based on the [paulbouwer/hello-kubernetes](https://github.com/paulbouwer/hello-kubernetes) image.
|
|
70
70
|
|
|
71
71
|
```ts
|
|
72
|
-
import {
|
|
72
|
+
import { KubectlV33Layer } from '@aws-cdk/lambda-layer-kubectl-v33';
|
|
73
73
|
|
|
74
74
|
// provisioning a cluster
|
|
75
75
|
const cluster = new eks.Cluster(this, 'hello-eks', {
|
|
76
|
-
version: eks.KubernetesVersion.
|
|
77
|
-
kubectlLayer: new
|
|
76
|
+
version: eks.KubernetesVersion.V1_33,
|
|
77
|
+
kubectlLayer: new KubectlV33Layer(this, 'kubectl'),
|
|
78
78
|
});
|
|
79
79
|
|
|
80
80
|
// apply a kubernetes manifest to the cluster
|
|
@@ -139,22 +139,22 @@ A more detailed breakdown of each is provided further down this README.
|
|
|
139
139
|
Creating a new cluster is done using the `Cluster` or `FargateCluster` constructs. The only required properties are the kubernetes `version` and `kubectlLayer`.
|
|
140
140
|
|
|
141
141
|
```ts
|
|
142
|
-
import {
|
|
142
|
+
import { KubectlV33Layer } from '@aws-cdk/lambda-layer-kubectl-v33';
|
|
143
143
|
|
|
144
144
|
new eks.Cluster(this, 'HelloEKS', {
|
|
145
|
-
version: eks.KubernetesVersion.
|
|
146
|
-
kubectlLayer: new
|
|
145
|
+
version: eks.KubernetesVersion.V1_33,
|
|
146
|
+
kubectlLayer: new KubectlV33Layer(this, 'kubectl'),
|
|
147
147
|
});
|
|
148
148
|
```
|
|
149
149
|
|
|
150
150
|
You can also use `FargateCluster` to provision a cluster that uses only fargate workers.
|
|
151
151
|
|
|
152
152
|
```ts
|
|
153
|
-
import {
|
|
153
|
+
import { KubectlV33Layer } from '@aws-cdk/lambda-layer-kubectl-v33';
|
|
154
154
|
|
|
155
155
|
new eks.FargateCluster(this, 'HelloEKS', {
|
|
156
|
-
version: eks.KubernetesVersion.
|
|
157
|
-
kubectlLayer: new
|
|
156
|
+
version: eks.KubernetesVersion.V1_33,
|
|
157
|
+
kubectlLayer: new KubectlV33Layer(this, 'kubectl'),
|
|
158
158
|
});
|
|
159
159
|
```
|
|
160
160
|
|
|
@@ -177,13 +177,13 @@ By default, this library will allocate a managed node group with 2 *m5.large* in
|
|
|
177
177
|
At cluster instantiation time, you can customize the number of instances and their type:
|
|
178
178
|
|
|
179
179
|
```ts
|
|
180
|
-
import {
|
|
180
|
+
import { KubectlV33Layer } from '@aws-cdk/lambda-layer-kubectl-v33';
|
|
181
181
|
|
|
182
182
|
new eks.Cluster(this, 'HelloEKS', {
|
|
183
|
-
version: eks.KubernetesVersion.
|
|
183
|
+
version: eks.KubernetesVersion.V1_33,
|
|
184
184
|
defaultCapacity: 5,
|
|
185
185
|
defaultCapacityInstance: ec2.InstanceType.of(ec2.InstanceClass.M5, ec2.InstanceSize.SMALL),
|
|
186
|
-
kubectlLayer: new
|
|
186
|
+
kubectlLayer: new KubectlV33Layer(this, 'kubectl'),
|
|
187
187
|
});
|
|
188
188
|
```
|
|
189
189
|
|
|
@@ -192,12 +192,12 @@ To access the node group that was created on your behalf, you can use `cluster.d
|
|
|
192
192
|
Additional customizations are available post instantiation. To apply them, set the default capacity to 0, and use the `cluster.addNodegroupCapacity` method:
|
|
193
193
|
|
|
194
194
|
```ts
|
|
195
|
-
import {
|
|
195
|
+
import { KubectlV33Layer } from '@aws-cdk/lambda-layer-kubectl-v33';
|
|
196
196
|
|
|
197
197
|
const cluster = new eks.Cluster(this, 'HelloEKS', {
|
|
198
|
-
version: eks.KubernetesVersion.
|
|
198
|
+
version: eks.KubernetesVersion.V1_33,
|
|
199
199
|
defaultCapacity: 0,
|
|
200
|
-
kubectlLayer: new
|
|
200
|
+
kubectlLayer: new KubectlV33Layer(this, 'kubectl'),
|
|
201
201
|
});
|
|
202
202
|
|
|
203
203
|
cluster.addNodegroupCapacity('custom-node-group', {
|
|
@@ -273,7 +273,7 @@ Node groups are available with IPv6 configured networks. For custom roles assig
|
|
|
273
273
|
> For more details visit [Configuring the Amazon VPC CNI plugin for Kubernetes to use IAM roles for service accounts](https://docs.aws.amazon.com/eks/latest/userguide/cni-iam-role.html#cni-iam-role-create-role)
|
|
274
274
|
|
|
275
275
|
```ts
|
|
276
|
-
import {
|
|
276
|
+
import { KubectlV33Layer } from '@aws-cdk/lambda-layer-kubectl-v33';
|
|
277
277
|
|
|
278
278
|
const ipv6Management = new iam.PolicyDocument({
|
|
279
279
|
statements: [new iam.PolicyStatement({
|
|
@@ -299,9 +299,9 @@ const eksClusterNodeGroupRole = new iam.Role(this, 'eksClusterNodeGroupRole', {
|
|
|
299
299
|
});
|
|
300
300
|
|
|
301
301
|
const cluster = new eks.Cluster(this, 'HelloEKS', {
|
|
302
|
-
version: eks.KubernetesVersion.
|
|
302
|
+
version: eks.KubernetesVersion.V1_33,
|
|
303
303
|
defaultCapacity: 0,
|
|
304
|
-
kubectlLayer: new
|
|
304
|
+
kubectlLayer: new KubectlV33Layer(this, 'kubectl'),
|
|
305
305
|
});
|
|
306
306
|
|
|
307
307
|
cluster.addNodegroupCapacity('custom-node-group', {
|
|
@@ -413,12 +413,12 @@ has been changed. As a workaround, you need to add a temporary policy to the clu
|
|
|
413
413
|
successful replacement. Consider this example if you are renaming the cluster from `foo` to `bar`:
|
|
414
414
|
|
|
415
415
|
```ts
|
|
416
|
-
import {
|
|
416
|
+
import { KubectlV33Layer } from '@aws-cdk/lambda-layer-kubectl-v33';
|
|
417
417
|
|
|
418
418
|
const cluster = new eks.Cluster(this, 'cluster-to-rename', {
|
|
419
419
|
clusterName: 'foo', // rename this to 'bar'
|
|
420
|
-
kubectlLayer: new
|
|
421
|
-
version: eks.KubernetesVersion.
|
|
420
|
+
kubectlLayer: new KubectlV33Layer(this, 'kubectl'),
|
|
421
|
+
version: eks.KubernetesVersion.V1_33,
|
|
422
422
|
});
|
|
423
423
|
|
|
424
424
|
// allow the cluster admin role to delete the cluster 'foo'
|
|
@@ -471,11 +471,11 @@ To create an EKS cluster that **only** uses Fargate capacity, you can use `Farga
|
|
|
471
471
|
The following code defines an Amazon EKS cluster with a default Fargate Profile that matches all pods from the "kube-system" and "default" namespaces. It is also configured to [run CoreDNS on Fargate](https://docs.aws.amazon.com/eks/latest/userguide/fargate-getting-started.html#fargate-gs-coredns).
|
|
472
472
|
|
|
473
473
|
```ts
|
|
474
|
-
import {
|
|
474
|
+
import { KubectlV33Layer } from '@aws-cdk/lambda-layer-kubectl-v33';
|
|
475
475
|
|
|
476
476
|
const cluster = new eks.FargateCluster(this, 'MyCluster', {
|
|
477
|
-
version: eks.KubernetesVersion.
|
|
478
|
-
kubectlLayer: new
|
|
477
|
+
version: eks.KubernetesVersion.V1_33,
|
|
478
|
+
kubectlLayer: new KubectlV33Layer(this, 'kubectl'),
|
|
479
479
|
});
|
|
480
480
|
```
|
|
481
481
|
|
|
@@ -551,12 +551,12 @@ To disable bootstrapping altogether (i.e. to fully customize user-data), set `bo
|
|
|
551
551
|
You can also configure the cluster to use an auto-scaling group as the default capacity:
|
|
552
552
|
|
|
553
553
|
```ts
|
|
554
|
-
import {
|
|
554
|
+
import { KubectlV33Layer } from '@aws-cdk/lambda-layer-kubectl-v33';
|
|
555
555
|
|
|
556
556
|
const cluster = new eks.Cluster(this, 'HelloEKS', {
|
|
557
|
-
version: eks.KubernetesVersion.
|
|
557
|
+
version: eks.KubernetesVersion.V1_33,
|
|
558
558
|
defaultCapacityType: eks.DefaultCapacityType.EC2,
|
|
559
|
-
kubectlLayer: new
|
|
559
|
+
kubectlLayer: new KubectlV33Layer(this, 'kubectl'),
|
|
560
560
|
});
|
|
561
561
|
```
|
|
562
562
|
|
|
@@ -658,12 +658,12 @@ AWS Identity and Access Management (IAM) and native Kubernetes [Role Based Acces
|
|
|
658
658
|
You can configure the [cluster endpoint access](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) by using the `endpointAccess` property:
|
|
659
659
|
|
|
660
660
|
```ts
|
|
661
|
-
import {
|
|
661
|
+
import { KubectlV33Layer } from '@aws-cdk/lambda-layer-kubectl-v33';
|
|
662
662
|
|
|
663
663
|
const cluster = new eks.Cluster(this, 'hello-eks', {
|
|
664
|
-
version: eks.KubernetesVersion.
|
|
664
|
+
version: eks.KubernetesVersion.V1_33,
|
|
665
665
|
endpointAccess: eks.EndpointAccess.PRIVATE, // No access outside of your VPC.
|
|
666
|
-
kubectlLayer: new
|
|
666
|
+
kubectlLayer: new KubectlV33Layer(this, 'kubectl'),
|
|
667
667
|
});
|
|
668
668
|
```
|
|
669
669
|
|
|
@@ -683,31 +683,31 @@ From the docs:
|
|
|
683
683
|
To deploy the controller on your EKS cluster, configure the `albController` property:
|
|
684
684
|
|
|
685
685
|
```ts
|
|
686
|
-
import {
|
|
686
|
+
import { KubectlV33Layer } from '@aws-cdk/lambda-layer-kubectl-v33';
|
|
687
687
|
|
|
688
688
|
new eks.Cluster(this, 'HelloEKS', {
|
|
689
|
-
version: eks.KubernetesVersion.
|
|
689
|
+
version: eks.KubernetesVersion.V1_33,
|
|
690
690
|
albController: {
|
|
691
691
|
version: eks.AlbControllerVersion.V2_8_2,
|
|
692
692
|
},
|
|
693
|
-
kubectlLayer: new
|
|
693
|
+
kubectlLayer: new KubectlV33Layer(this, 'kubectl'),
|
|
694
694
|
});
|
|
695
695
|
```
|
|
696
696
|
|
|
697
697
|
To provide additional Helm chart values supported by `albController` in CDK, use the `additionalHelmChartValues` property. For example, the following code snippet shows how to set the `enableWafV2` flag:
|
|
698
698
|
|
|
699
699
|
```ts
|
|
700
|
-
import {
|
|
700
|
+
import { KubectlV33Layer } from '@aws-cdk/lambda-layer-kubectl-v33';
|
|
701
701
|
|
|
702
702
|
new eks.Cluster(this, 'HelloEKS', {
|
|
703
|
-
version: eks.KubernetesVersion.
|
|
703
|
+
version: eks.KubernetesVersion.V1_33,
|
|
704
704
|
albController: {
|
|
705
705
|
version: eks.AlbControllerVersion.V2_8_2,
|
|
706
706
|
additionalHelmChartValues: {
|
|
707
707
|
enableWafv2: false
|
|
708
708
|
}
|
|
709
709
|
},
|
|
710
|
-
kubectlLayer: new
|
|
710
|
+
kubectlLayer: new KubectlV33Layer(this, 'kubectl'),
|
|
711
711
|
});
|
|
712
712
|
```
|
|
713
713
|
|
|
@@ -744,15 +744,15 @@ if (cluster.albController) {
|
|
|
744
744
|
You can specify the VPC of the cluster using the `vpc` and `vpcSubnets` properties:
|
|
745
745
|
|
|
746
746
|
```ts
|
|
747
|
-
import {
|
|
747
|
+
import { KubectlV33Layer } from '@aws-cdk/lambda-layer-kubectl-v33';
|
|
748
748
|
|
|
749
749
|
declare const vpc: ec2.Vpc;
|
|
750
750
|
|
|
751
751
|
new eks.Cluster(this, 'HelloEKS', {
|
|
752
|
-
version: eks.KubernetesVersion.
|
|
752
|
+
version: eks.KubernetesVersion.V1_33,
|
|
753
753
|
vpc,
|
|
754
754
|
vpcSubnets: [{ subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS }],
|
|
755
|
-
kubectlLayer: new
|
|
755
|
+
kubectlLayer: new KubectlV33Layer(this, 'kubectl'),
|
|
756
756
|
});
|
|
757
757
|
```
|
|
758
758
|
|
|
@@ -795,11 +795,11 @@ The `ClusterHandler` is a set of Lambda functions (`onEventHandler`, `isComplete
|
|
|
795
795
|
You can configure the environment of the Cluster Handler functions by specifying it at cluster instantiation. For example, this can be useful in order to configure an http proxy:
|
|
796
796
|
|
|
797
797
|
```ts
|
|
798
|
-
import {
|
|
798
|
+
import { KubectlV33Layer } from '@aws-cdk/lambda-layer-kubectl-v33';
|
|
799
799
|
|
|
800
800
|
declare const proxyInstanceSecurityGroup: ec2.SecurityGroup;
|
|
801
801
|
const cluster = new eks.Cluster(this, 'hello-eks', {
|
|
802
|
-
version: eks.KubernetesVersion.
|
|
802
|
+
version: eks.KubernetesVersion.V1_33,
|
|
803
803
|
clusterHandlerEnvironment: {
|
|
804
804
|
https_proxy: 'http://proxy.myproxy.com',
|
|
805
805
|
},
|
|
@@ -808,7 +808,7 @@ const cluster = new eks.Cluster(this, 'hello-eks', {
|
|
|
808
808
|
* Cluster Handler Lambdas so that it can reach the proxy.
|
|
809
809
|
*/
|
|
810
810
|
clusterHandlerSecurityGroup: proxyInstanceSecurityGroup,
|
|
811
|
-
kubectlLayer: new
|
|
811
|
+
kubectlLayer: new KubectlV33Layer(this, 'kubectl'),
|
|
812
812
|
});
|
|
813
813
|
```
|
|
814
814
|
|
|
@@ -817,7 +817,7 @@ const cluster = new eks.Cluster(this, 'hello-eks', {
|
|
|
817
817
|
You can optionally choose to configure your cluster to use IPv6 using the [`ipFamily`](https://docs.aws.amazon.com/eks/latest/APIReference/API_KubernetesNetworkConfigRequest.html#AmazonEKS-Type-KubernetesNetworkConfigRequest-ipFamily) definition for your cluster. Note that this will require the underlying subnets to have an associated IPv6 CIDR.
|
|
818
818
|
|
|
819
819
|
```ts
|
|
820
|
-
import {
|
|
820
|
+
import { KubectlV33Layer } from '@aws-cdk/lambda-layer-kubectl-v33';
|
|
821
821
|
declare const vpc: ec2.Vpc;
|
|
822
822
|
|
|
823
823
|
function associateSubnetWithV6Cidr(vpc: ec2.Vpc, count: number, subnet: ec2.ISubnet) {
|
|
@@ -843,11 +843,11 @@ for (let subnet of subnets) {
|
|
|
843
843
|
}
|
|
844
844
|
|
|
845
845
|
const cluster = new eks.Cluster(this, 'hello-eks', {
|
|
846
|
-
version: eks.KubernetesVersion.
|
|
846
|
+
version: eks.KubernetesVersion.V1_33,
|
|
847
847
|
vpc: vpc,
|
|
848
848
|
ipFamily: eks.IpFamily.IP_V6,
|
|
849
849
|
vpcSubnets: [{ subnets: vpc.publicSubnets }],
|
|
850
|
-
kubectlLayer: new
|
|
850
|
+
kubectlLayer: new KubectlV33Layer(this, 'kubectl'),
|
|
851
851
|
});
|
|
852
852
|
```
|
|
853
853
|
|
|
@@ -878,14 +878,14 @@ const cluster = eks.Cluster.fromClusterAttributes(this, 'Cluster', {
|
|
|
878
878
|
You can configure the environment of this function by specifying it at cluster instantiation. For example, this can be useful in order to configure an http proxy:
|
|
879
879
|
|
|
880
880
|
```ts
|
|
881
|
-
import {
|
|
881
|
+
import { KubectlV33Layer } from '@aws-cdk/lambda-layer-kubectl-v33';
|
|
882
882
|
|
|
883
883
|
const cluster = new eks.Cluster(this, 'hello-eks', {
|
|
884
|
-
version: eks.KubernetesVersion.
|
|
884
|
+
version: eks.KubernetesVersion.V1_33,
|
|
885
885
|
kubectlEnvironment: {
|
|
886
886
|
'http_proxy': 'http://proxy.myproxy.com',
|
|
887
887
|
},
|
|
888
|
-
kubectlLayer: new
|
|
888
|
+
kubectlLayer: new KubectlV33Layer(this, 'kubectl'),
|
|
889
889
|
});
|
|
890
890
|
```
|
|
891
891
|
|
|
@@ -902,11 +902,11 @@ Depending on which version of kubernetes you're targeting, you will need to use
|
|
|
902
902
|
the `@aws-cdk/lambda-layer-kubectl-vXY` packages.
|
|
903
903
|
|
|
904
904
|
```ts
|
|
905
|
-
import {
|
|
905
|
+
import { KubectlV33Layer } from '@aws-cdk/lambda-layer-kubectl-v33';
|
|
906
906
|
|
|
907
907
|
const cluster = new eks.Cluster(this, 'hello-eks', {
|
|
908
|
-
version: eks.KubernetesVersion.
|
|
909
|
-
kubectlLayer: new
|
|
908
|
+
version: eks.KubernetesVersion.V1_33,
|
|
909
|
+
kubectlLayer: new KubectlV33Layer(this, 'kubectl'),
|
|
910
910
|
});
|
|
911
911
|
```
|
|
912
912
|
|
|
@@ -941,7 +941,7 @@ const cluster1 = new eks.Cluster(this, 'MyCluster', {
|
|
|
941
941
|
kubectlLayer: layer,
|
|
942
942
|
vpc,
|
|
943
943
|
clusterName: 'cluster-name',
|
|
944
|
-
version: eks.KubernetesVersion.
|
|
944
|
+
version: eks.KubernetesVersion.V1_33,
|
|
945
945
|
});
|
|
946
946
|
|
|
947
947
|
// or
|
|
@@ -957,12 +957,12 @@ const cluster2 = eks.Cluster.fromClusterAttributes(this, 'MyCluster', {
|
|
|
957
957
|
By default, the kubectl provider is configured with 1024MiB of memory. You can use the `kubectlMemory` option to specify the memory size for the AWS Lambda function:
|
|
958
958
|
|
|
959
959
|
```ts
|
|
960
|
-
import {
|
|
960
|
+
import { KubectlV33Layer } from '@aws-cdk/lambda-layer-kubectl-v33';
|
|
961
961
|
|
|
962
962
|
new eks.Cluster(this, 'MyCluster', {
|
|
963
963
|
kubectlMemory: Size.gibibytes(4),
|
|
964
|
-
version: eks.KubernetesVersion.
|
|
965
|
-
kubectlLayer: new
|
|
964
|
+
version: eks.KubernetesVersion.V1_33,
|
|
965
|
+
kubectlLayer: new KubectlV33Layer(this, 'kubectl'),
|
|
966
966
|
});
|
|
967
967
|
|
|
968
968
|
// or
|
|
@@ -999,13 +999,13 @@ cluster.addAutoScalingGroupCapacity('self-ng-arm', {
|
|
|
999
999
|
When you create a cluster, you can specify a `mastersRole`. The `Cluster` construct will associate this role with the `system:masters` [RBAC](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) group, giving it super-user access to the cluster.
|
|
1000
1000
|
|
|
1001
1001
|
```ts
|
|
1002
|
-
import {
|
|
1002
|
+
import { KubectlV33Layer } from '@aws-cdk/lambda-layer-kubectl-v33';
|
|
1003
1003
|
|
|
1004
1004
|
declare const role: iam.Role;
|
|
1005
1005
|
new eks.Cluster(this, 'HelloEKS', {
|
|
1006
|
-
version: eks.KubernetesVersion.
|
|
1006
|
+
version: eks.KubernetesVersion.V1_33,
|
|
1007
1007
|
mastersRole: role,
|
|
1008
|
-
kubectlLayer: new
|
|
1008
|
+
kubectlLayer: new KubectlV33Layer(this, 'kubectl'),
|
|
1009
1009
|
});
|
|
1010
1010
|
```
|
|
1011
1011
|
|
|
@@ -1051,26 +1051,26 @@ You can use the `secretsEncryptionKey` to configure which key the cluster will u
|
|
|
1051
1051
|
> This setting can only be specified when the cluster is created and cannot be updated.
|
|
1052
1052
|
|
|
1053
1053
|
```ts
|
|
1054
|
-
import {
|
|
1054
|
+
import { KubectlV33Layer } from '@aws-cdk/lambda-layer-kubectl-v33';
|
|
1055
1055
|
|
|
1056
1056
|
const secretsKey = new kms.Key(this, 'SecretsKey');
|
|
1057
1057
|
const cluster = new eks.Cluster(this, 'MyCluster', {
|
|
1058
1058
|
secretsEncryptionKey: secretsKey,
|
|
1059
|
-
version: eks.KubernetesVersion.
|
|
1060
|
-
kubectlLayer: new
|
|
1059
|
+
version: eks.KubernetesVersion.V1_33,
|
|
1060
|
+
kubectlLayer: new KubectlV33Layer(this, 'kubectl'),
|
|
1061
1061
|
});
|
|
1062
1062
|
```
|
|
1063
1063
|
|
|
1064
1064
|
You can also use a similar configuration for running a cluster built using the FargateCluster construct.
|
|
1065
1065
|
|
|
1066
1066
|
```ts
|
|
1067
|
-
import {
|
|
1067
|
+
import { KubectlV33Layer } from '@aws-cdk/lambda-layer-kubectl-v33';
|
|
1068
1068
|
|
|
1069
1069
|
const secretsKey = new kms.Key(this, 'SecretsKey');
|
|
1070
1070
|
const cluster = new eks.FargateCluster(this, 'MyFargateCluster', {
|
|
1071
1071
|
secretsEncryptionKey: secretsKey,
|
|
1072
|
-
version: eks.KubernetesVersion.
|
|
1073
|
-
kubectlLayer: new
|
|
1072
|
+
version: eks.KubernetesVersion.V1_33,
|
|
1073
|
+
kubectlLayer: new KubectlV33Layer(this, 'kubectl'),
|
|
1074
1074
|
});
|
|
1075
1075
|
```
|
|
1076
1076
|
|
|
@@ -1088,11 +1088,11 @@ When you create an Amazon EKS cluster, you can configure it to leverage the [EKS
|
|
|
1088
1088
|
Once you have identified the on-premises node and pod (optional) CIDRs you will use for your hybrid nodes and the workloads running on them, you can specify them during cluster creation using the `remoteNodeNetworks` and `remotePodNetworks` (optional) properties:
|
|
1089
1089
|
|
|
1090
1090
|
```ts
|
|
1091
|
-
import {
|
|
1091
|
+
import { KubectlV33Layer } from '@aws-cdk/lambda-layer-kubectl-v33';
|
|
1092
1092
|
|
|
1093
1093
|
new eks.Cluster(this, 'Cluster', {
|
|
1094
|
-
version: eks.KubernetesVersion.
|
|
1095
|
-
kubectlLayer: new
|
|
1094
|
+
version: eks.KubernetesVersion.V1_33,
|
|
1095
|
+
kubectlLayer: new KubectlV33Layer(this, 'KubectlLayer'),
|
|
1096
1096
|
remoteNodeNetworks: [
|
|
1097
1097
|
{
|
|
1098
1098
|
cidrs: ['10.0.0.0/16'],
|
|
@@ -1145,7 +1145,7 @@ To access the Kubernetes resources from the console, make sure your viewing prin
|
|
|
1145
1145
|
in the `aws-auth` ConfigMap. Some options to consider:
|
|
1146
1146
|
|
|
1147
1147
|
```ts
|
|
1148
|
-
import {
|
|
1148
|
+
import { KubectlV33Layer } from '@aws-cdk/lambda-layer-kubectl-v33';
|
|
1149
1149
|
declare const cluster: eks.Cluster;
|
|
1150
1150
|
declare const your_current_role: iam.Role;
|
|
1151
1151
|
declare const vpc: ec2.Vpc;
|
|
@@ -1165,7 +1165,7 @@ your_current_role.addToPolicy(new iam.PolicyStatement({
|
|
|
1165
1165
|
|
|
1166
1166
|
```ts
|
|
1167
1167
|
// Option 2: create your custom mastersRole with scoped assumeBy arn as the Cluster prop. Switch to this role from the AWS console.
|
|
1168
|
-
import {
|
|
1168
|
+
import { KubectlV33Layer } from '@aws-cdk/lambda-layer-kubectl-v33';
|
|
1169
1169
|
declare const vpc: ec2.Vpc;
|
|
1170
1170
|
|
|
1171
1171
|
|
|
@@ -1175,8 +1175,8 @@ const mastersRole = new iam.Role(this, 'MastersRole', {
|
|
|
1175
1175
|
|
|
1176
1176
|
const cluster = new eks.Cluster(this, 'EksCluster', {
|
|
1177
1177
|
vpc,
|
|
1178
|
-
version: eks.KubernetesVersion.
|
|
1179
|
-
kubectlLayer: new
|
|
1178
|
+
version: eks.KubernetesVersion.V1_33,
|
|
1179
|
+
kubectlLayer: new KubectlV33Layer(this, 'KubectlLayer'),
|
|
1180
1180
|
mastersRole,
|
|
1181
1181
|
});
|
|
1182
1182
|
|
|
@@ -1220,13 +1220,13 @@ AWS IAM principals from both Amazon EKS access entry APIs and the aws-auth confi
|
|
|
1220
1220
|
To specify the `authenticationMode`:
|
|
1221
1221
|
|
|
1222
1222
|
```ts
|
|
1223
|
-
import {
|
|
1223
|
+
import { KubectlV33Layer } from '@aws-cdk/lambda-layer-kubectl-v33';
|
|
1224
1224
|
declare const vpc: ec2.Vpc;
|
|
1225
1225
|
|
|
1226
1226
|
new eks.Cluster(this, 'Cluster', {
|
|
1227
1227
|
vpc,
|
|
1228
|
-
version: eks.KubernetesVersion.
|
|
1229
|
-
kubectlLayer: new
|
|
1228
|
+
version: eks.KubernetesVersion.V1_33,
|
|
1229
|
+
kubectlLayer: new KubectlV33Layer(this, 'KubectlLayer'),
|
|
1230
1230
|
authenticationMode: eks.AuthenticationMode.API_AND_CONFIG_MAP,
|
|
1231
1231
|
});
|
|
1232
1232
|
```
|
|
@@ -1271,7 +1271,7 @@ eks.AccessPolicy.fromAccessPolicyName('AmazonEKSAdminPolicy', {
|
|
|
1271
1271
|
Use `grantAccess()` to grant the AccessPolicy to an IAM principal:
|
|
1272
1272
|
|
|
1273
1273
|
```ts
|
|
1274
|
-
import {
|
|
1274
|
+
import { KubectlV33Layer } from '@aws-cdk/lambda-layer-kubectl-v33';
|
|
1275
1275
|
declare const vpc: ec2.Vpc;
|
|
1276
1276
|
|
|
1277
1277
|
const clusterAdminRole = new iam.Role(this, 'ClusterAdminRole', {
|
|
@@ -1289,8 +1289,8 @@ const eksAdminViewRole = new iam.Role(this, 'EKSAdminViewRole', {
|
|
|
1289
1289
|
const cluster = new eks.Cluster(this, 'Cluster', {
|
|
1290
1290
|
vpc,
|
|
1291
1291
|
mastersRole: clusterAdminRole,
|
|
1292
|
-
version: eks.KubernetesVersion.
|
|
1293
|
-
kubectlLayer: new
|
|
1292
|
+
version: eks.KubernetesVersion.V1_33,
|
|
1293
|
+
kubectlLayer: new KubectlV33Layer(this, 'KubectlLayer'),
|
|
1294
1294
|
authenticationMode: eks.AuthenticationMode.API_AND_CONFIG_MAP,
|
|
1295
1295
|
});
|
|
1296
1296
|
|
|
@@ -1622,12 +1622,12 @@ Pruning is enabled by default but can be disabled through the `prune` option
|
|
|
1622
1622
|
when a cluster is defined:
|
|
1623
1623
|
|
|
1624
1624
|
```ts
|
|
1625
|
-
import {
|
|
1625
|
+
import { KubectlV33Layer } from '@aws-cdk/lambda-layer-kubectl-v33';
|
|
1626
1626
|
|
|
1627
1627
|
new eks.Cluster(this, 'MyCluster', {
|
|
1628
|
-
version: eks.KubernetesVersion.
|
|
1628
|
+
version: eks.KubernetesVersion.V1_33,
|
|
1629
1629
|
prune: false,
|
|
1630
|
-
kubectlLayer: new
|
|
1630
|
+
kubectlLayer: new KubectlV33Layer(this, 'kubectl'),
|
|
1631
1631
|
});
|
|
1632
1632
|
```
|
|
1633
1633
|
|
|
@@ -2030,17 +2030,17 @@ You can enable logging for each one separately using the `clusterLogging`
|
|
|
2030
2030
|
property. For example:
|
|
2031
2031
|
|
|
2032
2032
|
```ts
|
|
2033
|
-
import {
|
|
2033
|
+
import { KubectlV33Layer } from '@aws-cdk/lambda-layer-kubectl-v33';
|
|
2034
2034
|
|
|
2035
2035
|
const cluster = new eks.Cluster(this, 'Cluster', {
|
|
2036
2036
|
// ...
|
|
2037
|
-
version: eks.KubernetesVersion.
|
|
2037
|
+
version: eks.KubernetesVersion.V1_33,
|
|
2038
2038
|
clusterLogging: [
|
|
2039
2039
|
eks.ClusterLoggingTypes.API,
|
|
2040
2040
|
eks.ClusterLoggingTypes.AUTHENTICATOR,
|
|
2041
2041
|
eks.ClusterLoggingTypes.SCHEDULER,
|
|
2042
2042
|
],
|
|
2043
|
-
kubectlLayer: new
|
|
2043
|
+
kubectlLayer: new KubectlV33Layer(this, 'kubectl'),
|
|
2044
2044
|
});
|
|
2045
2045
|
```
|
|
2046
2046
|
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-al2023-nodegroup.ts
CHANGED
|
@@ -27,7 +27,7 @@ class EksClusterStack extends Stack {
|
|
|
27
27
|
vpc: this.vpc,
|
|
28
28
|
mastersRole,
|
|
29
29
|
defaultCapacity: 0,
|
|
30
|
-
...getClusterVersionConfig(this, eks.KubernetesVersion.
|
|
30
|
+
...getClusterVersionConfig(this, eks.KubernetesVersion.V1_33),
|
|
31
31
|
});
|
|
32
32
|
|
|
33
33
|
// create nodegroup with AL2023_X86_64_STANDARD
|
|
@@ -65,4 +65,3 @@ new integ.IntegTest(app, 'aws-cdk-eks-cluster-al2023-nodegroup', {
|
|
|
65
65
|
// Test includes assets that are updated weekly. If not disabled, the upgrade PR will fail.
|
|
66
66
|
diffAssets: false,
|
|
67
67
|
});
|
|
68
|
-
app.synth();
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.fargate-cluster.ts
CHANGED
|
@@ -17,7 +17,7 @@ class EksFargateClusterStack extends Stack {
|
|
|
17
17
|
this.node.setContext(EC2_RESTRICT_DEFAULT_SECURITY_GROUP, false);
|
|
18
18
|
this.vpc = props?.vpc ?? this.createDummyVpc();
|
|
19
19
|
new eks.FargateCluster(this, 'FargateCluster', {
|
|
20
|
-
...getClusterVersionConfig(this, eks.KubernetesVersion.
|
|
20
|
+
...getClusterVersionConfig(this, eks.KubernetesVersion.V1_33),
|
|
21
21
|
prune: false,
|
|
22
22
|
authenticationMode: props?.authMode,
|
|
23
23
|
vpc: this.vpc,
|
|
@@ -50,5 +50,3 @@ new integ.IntegTest(app, 'aws-cdk-eks-fargate-cluster', {
|
|
|
50
50
|
// Test includes assets that are updated weekly. If not disabled, the upgrade PR will fail.
|
|
51
51
|
diffAssets: false,
|
|
52
52
|
});
|
|
53
|
-
|
|
54
|
-
app.synth();
|
|
@@ -91,9 +91,10 @@ const trail = new cloudtrail.Trail(this, 'myCloudTrail', {
|
|
|
91
91
|
});
|
|
92
92
|
```
|
|
93
93
|
|
|
94
|
-
Note that calls to `addToResourcePolicy`
|
|
95
|
-
|
|
96
|
-
|
|
94
|
+
Note that calls to `addToResourcePolicy` method on `myKeyAlias` will be a no-op, `addAlias` and `aliasTargetKey` will fail.
|
|
95
|
+
The `grant*` methods will not modify the key policy, as the imported alias does not have a reference to the underlying KMS Key.
|
|
96
|
+
For the `grant*` methods to modify the principal's IAM policy, the feature flag `@aws-cdk/aws-kms:applyImportedAliasPermissionsToPrincipal`
|
|
97
|
+
must be set to `true`. By default, this flag is `false` and `grant*` calls on an imported alias are a no-op.
|
|
97
98
|
|
|
98
99
|
### Lookup key by alias
|
|
99
100
|
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kms/integ.alias-from-alias-name.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { App, Stack } from 'aws-cdk-lib';
|
|
2
|
+
import { Alias } from 'aws-cdk-lib/aws-kms';
|
|
3
|
+
import { IntegTest } from '@aws-cdk/integ-tests-alpha';
|
|
4
|
+
import { ServicePrincipal, Role } from 'aws-cdk-lib/aws-iam';
|
|
5
|
+
import * as cxapi from 'aws-cdk-lib/cx-api';
|
|
6
|
+
|
|
7
|
+
const app = new App({
|
|
8
|
+
context: { [cxapi.KMS_APPLY_IMPORTED_ALIAS_PERMISSIONS_TO_PRINCIPAL]: true },
|
|
9
|
+
});
|
|
10
|
+
const stack = new Stack(app, 'aws-cdk-kms');
|
|
11
|
+
const alias = Alias.fromAliasName(stack, 'alias', 'alias/MyKey');
|
|
12
|
+
|
|
13
|
+
const role = new Role(stack, 'Role', {
|
|
14
|
+
assumedBy: new ServicePrincipal('lambda.amazonaws.com'),
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
alias.grantVerifyMac(role);
|
|
18
|
+
alias.grantEncryptDecrypt(role);
|
|
19
|
+
alias.grantSignVerify(role);
|
|
20
|
+
alias.grantGenerateMac(role);
|
|
21
|
+
|
|
22
|
+
new IntegTest(app, 'kms-alias-from-alias-name', {
|
|
23
|
+
testCases: [stack],
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
app.synth();
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/README.md
CHANGED
|
@@ -445,6 +445,74 @@ myFunction.addEventSource(new ManagedKafkaEventSource({
|
|
|
445
445
|
}));
|
|
446
446
|
```
|
|
447
447
|
|
|
448
|
+
Set a confluent or self-managed schema registry to de-serialize events from the event source. Note, this will similarly work for `SelfManagedKafkaEventSource` but the example only shows setup for `ManagedKafkaEventSource`.
|
|
449
|
+
|
|
450
|
+
```ts
|
|
451
|
+
import { ManagedKafkaEventSource, ConfluentSchemaRegistry } from 'aws-cdk-lib/aws-lambda-event-sources';
|
|
452
|
+
import { Secret } from 'aws-cdk-lib/aws-secretsmanager';
|
|
453
|
+
|
|
454
|
+
// Your MSK cluster arn
|
|
455
|
+
declare const clusterArn: string;
|
|
456
|
+
|
|
457
|
+
// The Kafka topic you want to subscribe to
|
|
458
|
+
const topic = 'some-cool-topic';
|
|
459
|
+
|
|
460
|
+
const secret = new Secret(this, 'Secret', { secretName: 'AmazonMSK_KafkaSecret' });
|
|
461
|
+
|
|
462
|
+
declare const myFunction: lambda.Function;
|
|
463
|
+
myFunction.addEventSource(new ManagedKafkaEventSource({
|
|
464
|
+
clusterArn,
|
|
465
|
+
topic,
|
|
466
|
+
startingPosition: lambda.StartingPosition.TRIM_HORIZON,
|
|
467
|
+
provisionedPollerConfig: {
|
|
468
|
+
minimumPollers: 1,
|
|
469
|
+
maximumPollers: 3,
|
|
470
|
+
},
|
|
471
|
+
schemaRegistryConfig: new ConfluentSchemaRegistry({
|
|
472
|
+
schemaRegistryUri: 'https://example.com',
|
|
473
|
+
eventRecordFormat: lambda.EventRecordFormat.JSON,
|
|
474
|
+
authenticationType: lambda.KafkaSchemaRegistryAccessConfigType.BASIC_AUTH,
|
|
475
|
+
secret: secret,
|
|
476
|
+
schemaValidationConfigs: [{ attribute: lambda.KafkaSchemaValidationAttribute.KEY }],
|
|
477
|
+
}),
|
|
478
|
+
}));
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
Set Glue schema registry to de-serialize events from the event source. Note, this will similarly work for `SelfManagedKafkaEventSource` but the example only shows setup for `ManagedKafkaEventSource`.
|
|
482
|
+
|
|
483
|
+
```ts
|
|
484
|
+
import { CfnRegistry } from 'aws-cdk-lib/aws-glue';
|
|
485
|
+
import { ManagedKafkaEventSource, GlueSchemaRegistry } from 'aws-cdk-lib/aws-lambda-event-sources';
|
|
486
|
+
|
|
487
|
+
// Your MSK cluster arn
|
|
488
|
+
declare const clusterArn: string;
|
|
489
|
+
|
|
490
|
+
// The Kafka topic you want to subscribe to
|
|
491
|
+
const topic = 'some-cool-topic';
|
|
492
|
+
|
|
493
|
+
// Your Glue Schema Registry
|
|
494
|
+
const glueRegistry = new CfnRegistry(this, 'Registry', {
|
|
495
|
+
name: 'schema-registry',
|
|
496
|
+
description: 'Schema registry for event source',
|
|
497
|
+
});
|
|
498
|
+
|
|
499
|
+
declare const myFunction: lambda.Function;
|
|
500
|
+
myFunction.addEventSource(new ManagedKafkaEventSource({
|
|
501
|
+
clusterArn,
|
|
502
|
+
topic,
|
|
503
|
+
startingPosition: lambda.StartingPosition.TRIM_HORIZON,
|
|
504
|
+
provisionedPollerConfig: {
|
|
505
|
+
minimumPollers: 1,
|
|
506
|
+
maximumPollers: 3,
|
|
507
|
+
},
|
|
508
|
+
schemaRegistryConfig: new GlueSchemaRegistry({
|
|
509
|
+
schemaRegistry: glueRegistry,
|
|
510
|
+
eventRecordFormat: lambda.EventRecordFormat.JSON,
|
|
511
|
+
schemaValidationConfigs: [{ attribute: lambda.KafkaSchemaValidationAttribute.KEY }],
|
|
512
|
+
}),
|
|
513
|
+
}));
|
|
514
|
+
```
|
|
515
|
+
|
|
448
516
|
## Roadmap
|
|
449
517
|
|
|
450
518
|
Eventually, this module will support all the event sources described under
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { TestFunction } from './test-function';
|
|
2
|
+
import { IntegTest } from '@aws-cdk/integ-tests-alpha';
|
|
3
|
+
import {
|
|
4
|
+
SelfManagedKafkaEventSource,
|
|
5
|
+
AuthenticationMethod,
|
|
6
|
+
GlueSchemaRegistry,
|
|
7
|
+
ConfluentSchemaRegistry,
|
|
8
|
+
} from 'aws-cdk-lib/aws-lambda-event-sources';
|
|
9
|
+
import * as lambda from 'aws-cdk-lib/aws-lambda';
|
|
10
|
+
import { App, StackProps, Stack, SecretValue } from 'aws-cdk-lib';
|
|
11
|
+
import * as secretsmanager from 'aws-cdk-lib/aws-secretsmanager';
|
|
12
|
+
import { CfnRegistry } from 'aws-cdk-lib/aws-glue';
|
|
13
|
+
|
|
14
|
+
// Self-Managed Kafka Stack with Schema Registry
|
|
15
|
+
export class SmkGlueSchemaRegistryStack extends Stack {
|
|
16
|
+
constructor(scope: App, id: string, props?: StackProps) {
|
|
17
|
+
super(scope, id, props);
|
|
18
|
+
|
|
19
|
+
// Create a Lambda function
|
|
20
|
+
const testLambdaFunction = new TestFunction(this, 'GlueFunction');
|
|
21
|
+
|
|
22
|
+
// Create dummy certificates for authentication
|
|
23
|
+
const dummyCertString = `-----BEGIN CERTIFICATE-----
|
|
24
|
+
MIIE5DCCAsygAwIBAgIRAPJdwaFaNRrytHBto0j5BA0wDQYJKoZIhvcNAQELBQAw
|
|
25
|
+
cmUuiAii9R0=
|
|
26
|
+
-----END CERTIFICATE-----
|
|
27
|
+
-----BEGIN CERTIFICATE-----
|
|
28
|
+
MIIFgjCCA2qgAwIBAgIQdjNZd6uFf9hbNC5RdfmHrzANBgkqhkiG9w0BAQsFADBb
|
|
29
|
+
c8PH3PSoAaRwMMgOSA2ALJvbRz8mpg==
|
|
30
|
+
-----END CERTIFICATE-----"
|
|
31
|
+
`;
|
|
32
|
+
|
|
33
|
+
const dummyPrivateKey = `-----BEGIN ENCRYPTED PRIVATE KEY-----
|
|
34
|
+
zp2mwJn2NYB7AZ7+imp0azDZb+8YG2aUCiyqb6PnnA==
|
|
35
|
+
-----END ENCRYPTED PRIVATE KEY-----`;
|
|
36
|
+
|
|
37
|
+
// Create secrets for Kafka authentication
|
|
38
|
+
const rootCASecret = new secretsmanager.Secret(this, 'GlueRootCASecret', {
|
|
39
|
+
secretObjectValue: {
|
|
40
|
+
certificate: SecretValue.unsafePlainText(dummyCertString),
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
const clientCertificatesSecret = new secretsmanager.Secret(this, 'GlueClientCertSecret', {
|
|
45
|
+
secretObjectValue: {
|
|
46
|
+
certificate: SecretValue.unsafePlainText(dummyCertString),
|
|
47
|
+
privateKey: SecretValue.unsafePlainText(dummyPrivateKey),
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
// Grant read permissions to the Lambda function
|
|
52
|
+
rootCASecret.grantRead(testLambdaFunction);
|
|
53
|
+
clientCertificatesSecret.grantRead(testLambdaFunction);
|
|
54
|
+
|
|
55
|
+
// Create a Glue Schema Registry
|
|
56
|
+
const glueRegistry = new CfnRegistry(this, 'SchemaRegistry', {
|
|
57
|
+
name: 'smk-glue-test-schema-registry',
|
|
58
|
+
description: 'Schema registry for SMK integration tests',
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
// Define Kafka bootstrap servers
|
|
62
|
+
const bootstrapServers = [
|
|
63
|
+
'kafka-broker-1:9092',
|
|
64
|
+
'kafka-broker-2:9092',
|
|
65
|
+
'kafka-broker-3:9092',
|
|
66
|
+
];
|
|
67
|
+
|
|
68
|
+
// Common configuration for SMK event sources
|
|
69
|
+
const commonConfig = {
|
|
70
|
+
bootstrapServers,
|
|
71
|
+
secret: clientCertificatesSecret,
|
|
72
|
+
authenticationMethod: AuthenticationMethod.CLIENT_CERTIFICATE_TLS_AUTH,
|
|
73
|
+
rootCACertificate: rootCASecret,
|
|
74
|
+
startingPosition: lambda.StartingPosition.TRIM_HORIZON,
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
// SMK with Glue Schema Registry
|
|
78
|
+
testLambdaFunction.addEventSource(new SelfManagedKafkaEventSource({
|
|
79
|
+
...commonConfig,
|
|
80
|
+
topic: 'test-topic-smk-glue',
|
|
81
|
+
consumerGroupId: 'test-consumer-group-smk-glue',
|
|
82
|
+
provisionedPollerConfig: {
|
|
83
|
+
minimumPollers: 1,
|
|
84
|
+
maximumPollers: 3,
|
|
85
|
+
},
|
|
86
|
+
schemaRegistryConfig: new GlueSchemaRegistry({
|
|
87
|
+
schemaRegistry: glueRegistry,
|
|
88
|
+
eventRecordFormat: lambda.EventRecordFormat.JSON,
|
|
89
|
+
schemaValidationConfigs: [{ attribute: lambda.KafkaSchemaValidationAttribute.KEY }],
|
|
90
|
+
}),
|
|
91
|
+
}));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// Self-Managed Kafka Stack with Schema Registry
|
|
96
|
+
export class SmkConfluentSchemaRegistryStack extends Stack {
|
|
97
|
+
constructor(scope: App, id: string, props?: StackProps) {
|
|
98
|
+
super(scope, id, props);
|
|
99
|
+
|
|
100
|
+
// Create a Lambda function
|
|
101
|
+
const testLambdaFunction = new TestFunction(this, 'ConfluentFunction');
|
|
102
|
+
|
|
103
|
+
// Create dummy certificates for authentication
|
|
104
|
+
const dummyCertString = `-----BEGIN CERTIFICATE-----
|
|
105
|
+
MIIE5DCCAsygAwIBAgIRAPJdwaFaNRrytHBto0j5BA0wDQYJKoZIhvcNAQELBQAw
|
|
106
|
+
cmUuiAii9R0=
|
|
107
|
+
-----END CERTIFICATE-----
|
|
108
|
+
-----BEGIN CERTIFICATE-----
|
|
109
|
+
MIIFgjCCA2qgAwIBAgIQdjNZd6uFf9hbNC5RdfmHrzANBgkqhkiG9w0BAQsFADBb
|
|
110
|
+
c8PH3PSoAaRwMMgOSA2ALJvbRz8mpg==
|
|
111
|
+
-----END CERTIFICATE-----"
|
|
112
|
+
`;
|
|
113
|
+
|
|
114
|
+
const dummyPrivateKey = `-----BEGIN ENCRYPTED PRIVATE KEY-----
|
|
115
|
+
zp2mwJn2NYB7AZ7+imp0azDZb+8YG2aUCiyqb6PnnA==
|
|
116
|
+
-----END ENCRYPTED PRIVATE KEY-----`;
|
|
117
|
+
|
|
118
|
+
// Create secrets for Kafka authentication
|
|
119
|
+
const rootCASecret = new secretsmanager.Secret(this, 'ConfluentRootCASecret', {
|
|
120
|
+
secretObjectValue: {
|
|
121
|
+
certificate: SecretValue.unsafePlainText(dummyCertString),
|
|
122
|
+
},
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
const clientCertificatesSecret = new secretsmanager.Secret(this, 'ConfluentClientCertSecret', {
|
|
126
|
+
secretObjectValue: {
|
|
127
|
+
certificate: SecretValue.unsafePlainText(dummyCertString),
|
|
128
|
+
privateKey: SecretValue.unsafePlainText(dummyPrivateKey),
|
|
129
|
+
},
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
// Grant read permissions to the Lambda function
|
|
133
|
+
rootCASecret.grantRead(testLambdaFunction);
|
|
134
|
+
clientCertificatesSecret.grantRead(testLambdaFunction);
|
|
135
|
+
|
|
136
|
+
// Define Kafka bootstrap servers
|
|
137
|
+
const bootstrapServers = [
|
|
138
|
+
'kafka-broker-1:9092',
|
|
139
|
+
'kafka-broker-2:9092',
|
|
140
|
+
'kafka-broker-3:9092',
|
|
141
|
+
];
|
|
142
|
+
|
|
143
|
+
// Common configuration for SMK event sources
|
|
144
|
+
const commonConfig = {
|
|
145
|
+
bootstrapServers,
|
|
146
|
+
secret: clientCertificatesSecret,
|
|
147
|
+
authenticationMethod: AuthenticationMethod.CLIENT_CERTIFICATE_TLS_AUTH,
|
|
148
|
+
rootCACertificate: rootCASecret,
|
|
149
|
+
startingPosition: lambda.StartingPosition.TRIM_HORIZON,
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
// SMK with Confluent Schema Registry
|
|
153
|
+
testLambdaFunction.addEventSource(new SelfManagedKafkaEventSource({
|
|
154
|
+
...commonConfig,
|
|
155
|
+
topic: 'test-topic-smk-confluent',
|
|
156
|
+
consumerGroupId: 'test-consumer-group-smk-confluent',
|
|
157
|
+
provisionedPollerConfig: {
|
|
158
|
+
minimumPollers: 1,
|
|
159
|
+
maximumPollers: 3,
|
|
160
|
+
},
|
|
161
|
+
schemaRegistryConfig: new ConfluentSchemaRegistry({
|
|
162
|
+
schemaRegistryUri: 'https://schema-registry.example.com',
|
|
163
|
+
eventRecordFormat: lambda.EventRecordFormat.JSON,
|
|
164
|
+
authenticationType: lambda.KafkaSchemaRegistryAccessConfigType.BASIC_AUTH,
|
|
165
|
+
secret: clientCertificatesSecret,
|
|
166
|
+
schemaValidationConfigs: [{ attribute: lambda.KafkaSchemaValidationAttribute.KEY }],
|
|
167
|
+
}),
|
|
168
|
+
}));
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// Create the app and stacks
|
|
173
|
+
const app = new App({
|
|
174
|
+
postCliContext: {
|
|
175
|
+
'@aws-cdk/aws-lambda:createNewPoliciesWithAddToRolePolicy': false,
|
|
176
|
+
},
|
|
177
|
+
});
|
|
178
|
+
const glueStack = new SmkGlueSchemaRegistryStack(app, 'lambda-event-source-glue-schema-registry');
|
|
179
|
+
const confluentStack = new SmkConfluentSchemaRegistryStack(app, 'lambda-event-source-confluent-schema-registry');
|
|
180
|
+
|
|
181
|
+
// Create the integration tests
|
|
182
|
+
new IntegTest(app, 'SchemaRegistryInteg', {
|
|
183
|
+
testCases: [glueStack, confluentStack],
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
app.synth();
|
|
@@ -156,6 +156,22 @@ bucket.grantReadWrite(myLambda);
|
|
|
156
156
|
Will give the Lambda's execution role permissions to read and write
|
|
157
157
|
from the bucket.
|
|
158
158
|
|
|
159
|
+
### Understanding "grant" Methods
|
|
160
|
+
|
|
161
|
+
The S3 construct library provides several grant methods for the `Bucket` resource, but two of them have a special behavior. This two accept an `objectsKeyPattern` parameter to restrict granted permissions to specific resources:
|
|
162
|
+
- `grantRead`
|
|
163
|
+
- `grantReadWrite`
|
|
164
|
+
|
|
165
|
+
When examining the synthesized policy, you'll notice it includes both your specified object key patterns and the bucket itself.
|
|
166
|
+
This is by design. Some permissions (like `s3:ListBucket`) apply at the bucket level, while others (like `s3:GetObject`) apply to specific objects.
|
|
167
|
+
|
|
168
|
+
Specifically, the [`s3:ListBucket` action operates on bucket resources](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#amazons3-bucket)
|
|
169
|
+
and requires the bucket ARN to work properly. This might be seen as a bug, giving the impression that more permissions were granted than the ones you intended, but the reality is that the policy does not ignore your `objectsKeyPattern` - object-specific actions like `s3:GetObject`
|
|
170
|
+
will still be limited to the resources defined in your pattern.
|
|
171
|
+
|
|
172
|
+
If you need to restrict the `s3:ListBucket` action to specific paths, you can add a `Condition` to your policy that limits the `objectsKeyPattern` to specific folders. For more details and examples, see the [AWS documentation on bucket policies](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html#example-bucket-policies-folders).
|
|
173
|
+
|
|
174
|
+
|
|
159
175
|
## AWS Foundational Security Best Practices
|
|
160
176
|
|
|
161
177
|
### Enforcing SSL
|
|
@@ -103,6 +103,7 @@ Flags come in three types:
|
|
|
103
103
|
| [@aws-cdk/s3-notifications:addS3TrustKeyPolicyForSnsSubscriptions](#aws-cdks3-notificationsadds3trustkeypolicyforsnssubscriptions) | Add an S3 trust policy to a KMS key resource policy for SNS subscriptions. | 2.195.0 | fix |
|
|
104
104
|
| [@aws-cdk/aws-ec2:requirePrivateSubnetsForEgressOnlyInternetGateway](#aws-cdkaws-ec2requireprivatesubnetsforegressonlyinternetgateway) | When enabled, the EgressOnlyGateway resource is only created if private subnets are defined in the dual-stack VPC. | 2.196.0 | fix |
|
|
105
105
|
| [@aws-cdk/aws-s3:publicAccessBlockedByDefault](#aws-cdkaws-s3publicaccessblockedbydefault) | When enabled, setting any combination of options for BlockPublicAccess will automatically set true for any options not defined. | 2.196.0 | fix |
|
|
106
|
+
| [@aws-cdk/aws-kms:applyImportedAliasPermissionsToPrincipal](#aws-cdkaws-kmsapplyimportedaliaspermissionstoprincipal) | Enable grant methods on Aliases imported by name to use kms:ResourceAliases condition | V2NEXT | fix |
|
|
106
107
|
|
|
107
108
|
<!-- END table -->
|
|
108
109
|
|
|
@@ -146,6 +147,7 @@ The following json shows the current recommended set of flags, as `cdk init` wou
|
|
|
146
147
|
"@aws-cdk/aws-ec2:restrictDefaultSecurityGroup": true,
|
|
147
148
|
"@aws-cdk/aws-apigateway:requestValidatorUniqueId": true,
|
|
148
149
|
"@aws-cdk/aws-kms:aliasNameRef": true,
|
|
150
|
+
"@aws-cdk/aws-kms:applyImportedAliasPermissionsToPrincipal": true,
|
|
149
151
|
"@aws-cdk/aws-autoscaling:generateLaunchTemplateInsteadOfLaunchConfig": true,
|
|
150
152
|
"@aws-cdk/core:includePrefixInUniqueNameGeneration": true,
|
|
151
153
|
"@aws-cdk/aws-efs:denyAnonymousAccess": true,
|
|
@@ -2175,4 +2177,23 @@ The new behavior from this feature will allow a user, for example, to set 1 of t
|
|
|
2175
2177
|
| 2.196.0 | `false` | `true` |
|
|
2176
2178
|
|
|
2177
2179
|
|
|
2180
|
+
### @aws-cdk/aws-kms:applyImportedAliasPermissionsToPrincipal
|
|
2181
|
+
|
|
2182
|
+
*Enable grant methods on Aliases imported by name to use kms:ResourceAliases condition*
|
|
2183
|
+
|
|
2184
|
+
Flag type: Backwards incompatible bugfix
|
|
2185
|
+
|
|
2186
|
+
This flag enables the grant methods (grant, grantDecrypt, grantEncrypt, etc.) on Aliases imported
|
|
2187
|
+
by name to grant permissions based on the 'kms:ResourceAliases' condition rather than no-op grants.
|
|
2188
|
+
When disabled, grant calls on imported aliases will be dropped (no-op) to maintain compatibility.
|
|
2189
|
+
|
|
2190
|
+
|
|
2191
|
+
| Since | Default | Recommended |
|
|
2192
|
+
| ----- | ----- | ----- |
|
|
2193
|
+
| (not in v1) | | |
|
|
2194
|
+
| V2NEXT | `false` | `true` |
|
|
2195
|
+
|
|
2196
|
+
**Compatibility with old behavior:** Remove calls to the grant* methods on the aliases referenced by name
|
|
2197
|
+
|
|
2198
|
+
|
|
2178
2199
|
<!-- END details -->
|
|
@@ -310,6 +310,20 @@ _cdk.json_
|
|
|
310
310
|
}
|
|
311
311
|
```
|
|
312
312
|
|
|
313
|
+
* `@aws-cdk/aws-kms:applyImportedAliasPermissionsToPrincipal`
|
|
314
|
+
|
|
315
|
+
Enable grant methods on imported KMS Aliases to apply permissions scoped by the alias using the `kms:ResourceAliases` condition key. When this flag is disabled, grant* methods on `Alias.fromAliasName` remain no-ops to preserve existing behavior.
|
|
316
|
+
|
|
317
|
+
_cdk.json_
|
|
318
|
+
|
|
319
|
+
```json
|
|
320
|
+
{
|
|
321
|
+
"context": {
|
|
322
|
+
"@aws-cdk/aws-kms:applyImportedAliasPermissionsToPrincipal": true
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
```
|
|
326
|
+
|
|
313
327
|
* `@aws-cdk/aws-eks:nodegroupNameAttribute`
|
|
314
328
|
|
|
315
329
|
When enabled, nodegroupName attribute of the provisioned EKS NodeGroup will not have the cluster name prefix.
|
|
@@ -565,6 +565,7 @@ pass in order to promote from the `PreProd` to the `Prod` environment:
|
|
|
565
565
|
declare const pipeline: pipelines.CodePipeline;
|
|
566
566
|
const preprod = new MyApplicationStage(this, 'PreProd');
|
|
567
567
|
const prod = new MyApplicationStage(this, 'Prod');
|
|
568
|
+
const topic = new sns.Topic(this, 'ChangeApprovalTopic');
|
|
568
569
|
|
|
569
570
|
pipeline.addStage(preprod, {
|
|
570
571
|
post: [
|
|
@@ -574,7 +575,12 @@ pipeline.addStage(preprod, {
|
|
|
574
575
|
],
|
|
575
576
|
});
|
|
576
577
|
pipeline.addStage(prod, {
|
|
577
|
-
pre: [new pipelines.ManualApprovalStep('PromoteToProd'
|
|
578
|
+
pre: [new pipelines.ManualApprovalStep('PromoteToProd', {
|
|
579
|
+
//All options below are optional
|
|
580
|
+
comment: 'Please validate changes',
|
|
581
|
+
reviewUrl: 'https://my.webservice.com/',
|
|
582
|
+
notificationTopic: topic,
|
|
583
|
+
})],
|
|
578
584
|
});
|
|
579
585
|
```
|
|
580
586
|
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
import * as s3 from 'aws-cdk-lib/aws-s3';
|
|
3
|
+
import * as s3_assets from 'aws-cdk-lib/aws-s3-assets';
|
|
4
|
+
import * as sqs from 'aws-cdk-lib/aws-sqs';
|
|
5
|
+
import * as pipelines from 'aws-cdk-lib/pipelines';
|
|
6
|
+
import { App, RemovalPolicy, Stack, StackProps, Stage, StageProps } from 'aws-cdk-lib';
|
|
7
|
+
import { Construct } from 'constructs';
|
|
8
|
+
import { IntegTest } from '@aws-cdk/integ-tests-alpha';
|
|
9
|
+
|
|
10
|
+
class PipelineStack extends Stack {
|
|
11
|
+
constructor(scope: Construct, id: string, props?: StackProps) {
|
|
12
|
+
super(scope, id, props);
|
|
13
|
+
|
|
14
|
+
const bucket = new s3.Bucket(this, 'Source', {
|
|
15
|
+
removalPolicy: RemovalPolicy.DESTROY,
|
|
16
|
+
});
|
|
17
|
+
const pipeline = new pipelines.CodePipeline(this, 'Pipeline', {
|
|
18
|
+
synth: new pipelines.ShellStep('Synth', {
|
|
19
|
+
input: pipelines.CodePipelineSource.s3(bucket, 'source.zip'),
|
|
20
|
+
commands: [
|
|
21
|
+
'npm ci',
|
|
22
|
+
'npm run build',
|
|
23
|
+
'npx cdk synth',
|
|
24
|
+
],
|
|
25
|
+
}),
|
|
26
|
+
publishAssetsInParallel: false,
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
pipeline.addStage(new AppStage(this, 'Beta'));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
class AppStage extends Stage {
|
|
34
|
+
constructor(scope: Construct, id: string, props?: StageProps) {
|
|
35
|
+
super(scope, id, props);
|
|
36
|
+
|
|
37
|
+
const stack = new Stack(this, 'Stack1');
|
|
38
|
+
new s3_assets.Asset(stack, 'Asset', {
|
|
39
|
+
path: path.join(__dirname, 'testhelpers/assets/test-file-asset.txt'),
|
|
40
|
+
});
|
|
41
|
+
new s3_assets.Asset(stack, 'Asset2', {
|
|
42
|
+
path: path.join(__dirname, 'testhelpers/assets/test-file-asset-two.txt'),
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
new sqs.Queue(stack, 'OtherQueue');
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const app = new App();
|
|
50
|
+
const stack = new PipelineStack(app, 'PipelineStackSinglePublisher');
|
|
51
|
+
new IntegTest(app, 'PipelineStackSinglePublisher-integ', {
|
|
52
|
+
testCases: [stack],
|
|
53
|
+
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: konokenj.cdk-api-mcp-server
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.29.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
|
---
|
{konokenj_cdk_api_mcp_server-0.28.0.dist-info → konokenj_cdk_api_mcp_server-0.29.0.dist-info}/RECORD
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
cdk_api_mcp_server/__about__.py,sha256=
|
|
1
|
+
cdk_api_mcp_server/__about__.py,sha256=9S13DyABPe2B3vTF5X18DqNAAQQ25aIIJrzmwh5oIZU,129
|
|
2
2
|
cdk_api_mcp_server/__init__.py,sha256=yJA6yIEhJviC-qNlB-nC6UR1JblQci_d84i-viHZkc0,187
|
|
3
3
|
cdk_api_mcp_server/models.py,sha256=cMS1Hi29M41YjuBxqqrzNrNvyG3MgnUBb1SqYpMCJ30,692
|
|
4
4
|
cdk_api_mcp_server/resources.py,sha256=R7LVwn29I4BJzU5XAwKbX8j6uy-3ZxcB1b0HzZ_Z2PI,6689
|
|
@@ -6,7 +6,7 @@ cdk_api_mcp_server/server.py,sha256=uN5SE6PHpiOYY8QlNID1a0j2hLdeO61QX3kgC_oTODg,
|
|
|
6
6
|
cdk_api_mcp_server/resources/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
7
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/app-staging-synthesizer-alpha/README.md,sha256=rAatqlr_JE06sjgcBVdXszpwh3grV4aFkkb9L2s8IIU,16492
|
|
8
8
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/app-staging-synthesizer-alpha/resource-names.md,sha256=oSTmVHH2AZ9cd-KiITtuS0nJMOWGC0FpVg3t7p6UPMM,1323
|
|
9
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-amplify-alpha/README.md,sha256=
|
|
9
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-amplify-alpha/README.md,sha256=gwkmgfklAjRLDG8uegSV68kxNKvG9YW1Ym8ZH5V9ezE,12236
|
|
10
10
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-applicationsignals-alpha/README.md,sha256=6nqc-WbHB1iFE3vXDr6hyQs8tYS6wwnWutXePY4EF4w,10873
|
|
11
11
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-apprunner-alpha/README.md,sha256=Jtm3RbnP4jQy8BYXwHvaRbMKizUjr4SqvimVMYhu6WQ,11982
|
|
12
12
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-bedrock-alpha/README.md,sha256=vdiDc1bjueXbwQp3h_1xCrk6eCiOFZ74oIAMug43QVY,26658
|
|
@@ -42,7 +42,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-servicecatalogappre
|
|
|
42
42
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/cfnspec/README.md,sha256=nnoF99zdHuBLVTMCVB9k3-eLiqjS6XTETxnIi5hW0Y8,164
|
|
43
43
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/custom-resource-handlers/README.md,sha256=QctOoyGt6AqVWeFhRwpkCSxHZ1XFWj_nCKlkJHDFock,965
|
|
44
44
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/example-construct-library/README.md,sha256=vnVXyvtN9ICph68sw2y6gkdD_gmas0PiUa9TkwNckWQ,4501
|
|
45
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/integ-tests-alpha/README.md,sha256=
|
|
45
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/integ-tests-alpha/README.md,sha256=VifKLrR404_yLVT0E3ai8f3R5K0h22VNwQplpSUSZqc,17489
|
|
46
46
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/README.md/README.md,sha256=--qULBmqJB9AEPhZvZePzgS6c14VtlAclTtgSYWMPNQ,62385
|
|
47
47
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/assertions/MIGRATING.md,sha256=SYGX8QNB1Pm_rVYDBp4QRWkqwnxOb3CHzeFglUy_53k,3347
|
|
48
48
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/assertions/README.md,sha256=3yo3D05n5explTIgnuF-vkk01MTYeAYe7_3rcsD2baE,18299
|
|
@@ -232,7 +232,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudformation/i
|
|
|
232
232
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudformation/integ.nested-stacks-refs1.ts,sha256=DPzU8mAOqbwCB2zQERq2O-XbkfDeExcJShVp2RKRYb8,1045
|
|
233
233
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudformation/integ.nested-stacks-refs2.ts,sha256=ffjUAflZ0gvH7rDOpds2wG3m9HJoTgNj6g-e0L37Upc,1178
|
|
234
234
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudformation/integ.nested-stacks-refs3.ts,sha256=yMjla3H8kO3FNlshOtm7KojhoiesyPRaBb0GFmthCqE,1047
|
|
235
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudfront/README.md,sha256=
|
|
235
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudfront/README.md,sha256=3uIR4OWiq_6bffv0vFl9LgdqdiyoQQQg6q5s0-8bfJU,50161
|
|
236
236
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudfront/integ.cloudfront-bucket-logging.ts,sha256=R_6hlp4mZ3laXosJhz7fTqKqZgCj-oEggBaA8Sm--DI,1178
|
|
237
237
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudfront/integ.cloudfront-cross-region-cert.ts,sha256=f774j3lIB3xUsszX5xoo9x5zas-W9O0ZBXLIWmeTQos,2096
|
|
238
238
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudfront/integ.cloudfront-custom-s3.ts,sha256=_O3hXQD5N4vlOStBisGe-MAQ5nl7w3cb_UswFxrP20k,1380
|
|
@@ -684,12 +684,12 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-efs/integ.efs-tr
|
|
|
684
684
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-efs/integ.efs.permission.ts,sha256=bzH7koi5t2FgkDhEp-6ZtXgoteiCDTNd2igab4bXytA,3338
|
|
685
685
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-efs/integ.efs.ts,sha256=NmhtimqEUqH6Tu9sksWLmn8e9QcrlF-J1dn0B-9eVqw,837
|
|
686
686
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/MANUAL_TEST.md,sha256=uObwqDllAUYBGkoNEAQGioL6JuKqh5ScVbq9KC3x89Q,1862
|
|
687
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/README.md,sha256=
|
|
687
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/README.md,sha256=20F9MXScfbNlHhzEwIegmhFQ96JyKiRS8JgFzGz_LYw,81337
|
|
688
688
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.alb-controller-authapi.ts,sha256=L9dF26-F2Fw-O1iGAnT-AYnkq4JmO_IQoQn0RsOhLVY,1355
|
|
689
689
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.alb-controller.ts,sha256=cbL2kY-t0LAWLkK1Lb3RUPBeMUpw8xHWjDhkroD_Rb4,3314
|
|
690
690
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.custom-addons.ts,sha256=ZXsXljCokHOA_JubQ7ZsLT-tGy-28mg1gZ_bmNX_F-k,1475
|
|
691
691
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-addon.ts,sha256=27QObP5R7S6wvr_r7iwYhPxvU8_OSDjoCRIH3l8ak9o,1076
|
|
692
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-al2023-nodegroup.ts,sha256=
|
|
692
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-al2023-nodegroup.ts,sha256=C8fdvN5Xa7tvkV8SEqlSoE1rXYx_KKb3mNEsfmwn82s,2449
|
|
693
693
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-bottlerocket-ng.ts,sha256=gxc3SRUusX7GywuCFI8C9zng7Fza-3_c-7dNuUnUWBU,1965
|
|
694
694
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-cluster-handlers-vpc.ts,sha256=5ziP_cDA4Gvc0ZTEYsezSIw1XRi-JY3bIXB4MS9RP3c,1142
|
|
695
695
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-cluster-imported.ts,sha256=VcOdMfU2jCukU63bL1DJ03npPLyI8Xwr-vAtO3xFNMA,7448
|
|
@@ -707,7 +707,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-se
|
|
|
707
707
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-standard-access-entry.ts,sha256=upWuIZ41tsmF0n80W0jo82GYV7jXXYe8LBFTyUgON0k,1864
|
|
708
708
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-subnet-updates.ts,sha256=zVEcn14vZuvsj3IuzRjV5iSFSZdKmQJEoQHIfEyxa5c,1156
|
|
709
709
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-windows-ng.ts,sha256=yUFEU6FBn3WQcOJweV_p3KqJpyml_CkQdItcRo0HSiA,2118
|
|
710
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.fargate-cluster.ts,sha256=
|
|
710
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.fargate-cluster.ts,sha256=Vl3pLV36u-EbqG9PbhJiABA_18PJIsMpKtJFk2SVErE,1992
|
|
711
711
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.nodegroup-repair-config.ts,sha256=hgKsbhgAaXS73GTQGOcVnmI_-gReoTuPEgCOeBpwuBA,1654
|
|
712
712
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-elasticloadbalancing/README.md,sha256=TvRV54AcSiSZ3uOENOGmzkiBBRuHSG3DeEqgW_8FkZs,1795
|
|
713
713
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-elasticloadbalancing/integ.elb.ts,sha256=6qAybkYElxtfNefo1IpFo8MgrCubixLs2hTUUPeZoRg,555
|
|
@@ -840,7 +840,8 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/
|
|
|
840
840
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/integ.delivery-stream.ts,sha256=DXJlTu1eJOs7bFW35Tl-JCan6Eg1dUJMom6PU0mFTB8,1490
|
|
841
841
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/integ.kinesis-stream-events-target.ts,sha256=bLE3v9K0_V2KbR5oTGiePpoLOo_bpjkloqF3eNcKBOQ,2138
|
|
842
842
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/integ.s3-bucket.lit.ts,sha256=QU_0D7Q7ES3bubcRXvZTLo7zABTixDSVql9IYzIEFlw,3514
|
|
843
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kms/README.md,sha256=
|
|
843
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kms/README.md,sha256=QZHTsP5DaV6RDpKVc6l4EQ25krt6M1fJ0b0ft-e-fic,10072
|
|
844
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kms/integ.alias-from-alias-name.ts,sha256=_OpjM8RpN5QdXqj1-EdWCEeR51n_7W-NjliiFx2fwWE,783
|
|
844
845
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kms/integ.key-alias.ts,sha256=M7JE2iQtwYuLIZheSZ7a2v63xMmA8fw_lOJdFwVX4LE,458
|
|
845
846
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kms/integ.key-from-lookup-dummy.ts,sha256=hu1OyvieepuNXBq8e3bgyZf92Z_cSqOYlM7LxSe4D5g,671
|
|
846
847
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kms/integ.key-grants.ts,sha256=4ZweTN8R6fWKzEsjPwi7AjY92WmscKmiwbBeFXIWCYs,571
|
|
@@ -890,11 +891,12 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.vpc
|
|
|
890
891
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-destinations/README.md,sha256=_6ZqM3kbkZCmN-9BtU3FbERs82Shv4D2QiWuq47T_VI,5453
|
|
891
892
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-destinations/integ.destinations.ts,sha256=bCxe7DTOSIRyxe2iStWRdl0_J-tQZ8n-715uo9gMHvE,4187
|
|
892
893
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-destinations/integ.lambda-chain.ts,sha256=vqRxTBuBaAZqeN1AQ4l0Z9b4dsOVTkYMXKIlil_yyCg,3381
|
|
893
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/README.md,sha256
|
|
894
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/README.md,sha256=-hknVrQdnowd5D4HNWKqt4fxY5ahza0V6c7tmLJwTsI,23869
|
|
894
895
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.dynamodb-with-boolean-filter.ts,sha256=bGvfF5RgMbK9W2DO0HsKVoAK5KV5a0kLKYZKeOOFcx0,1217
|
|
895
896
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.dynamodb-with-filter-criteria.ts,sha256=7RrxbpLll7YIY-sNFp4reML6mA5ptC05K6DRmww32rY,1897
|
|
896
897
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.dynamodb-with-metrics-config.ts,sha256=_HEgmdb8iDBNWqDWo8RJHbbRtacdPp4V8LkS2U3DkI8,1286
|
|
897
898
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.dynamodb.ts,sha256=5Qas_PPDvTb8sHl3AiNnv-k7XaazG5nDNVNbmJ6Wwfo,1205
|
|
899
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.kafka-schema-registry.ts,sha256=mN1-eMpDDvEjqRqFB3WwDMAWtr1JhFt61ndeYMw3XlI,6640
|
|
898
900
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.kafka-selfmanaged.ts,sha256=B85zVhxNs9IVcWHnxlYi9knhEPwfxKHmCpXigjk0xJs,4805
|
|
899
901
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.kinesis-at-timestamp.ts,sha256=coNqlm5wKzy4jViKmzto6umHXcKzqVQFoosqgO_kaEI,832
|
|
900
902
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.kinesis-stream-consumer.ts,sha256=-wWHWes3tTpArZIzVKBPS-MFyQc5ZHJjMzG_2BnGAZ0,1199
|
|
@@ -1050,7 +1052,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53-targets/
|
|
|
1050
1052
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53-targets/integ.interface-vpc-endpoint-target.ts,sha256=8PlAPtbxMr8TQezAMykKCgZx8QicPtu30GvGsTtt2tY,999
|
|
1051
1053
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53-targets/integ.route53-record.ts,sha256=x8gFRbKDGjmQOpjZgErQcnGlyf9o2NgvCQ56Ae7eBbw,849
|
|
1052
1054
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53-targets/integ.userpool-domain-alias-target.ts,sha256=DR4O77TLlzhlLj3cpB6YHygNt4vSDfXKS0b2sglsEEo,1248
|
|
1053
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3/README.md,sha256=
|
|
1055
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3/README.md,sha256=BSQK7Ku34qKf_9xBY3GRa2zrWBhVg9MmnrBjif_GOH4,38695
|
|
1054
1056
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3/integ.bucket-acls.ts,sha256=LgbnWxF3plTNPjyGKIl6eyaI7xTXMh4rvcDi-57hOpc,802
|
|
1055
1057
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3/integ.bucket-auto-delete-objects.ts,sha256=7x0Q_tQEIb5Cil3ARDg6YHFbepk8CKGHlPh0P3Xzo-8,2434
|
|
1056
1058
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3/integ.bucket-block-access.ts,sha256=kIIkpvAA71D-y00yEhYSQHSXH3HBEDhIwqJSQV1VEz4,1120
|
|
@@ -1337,18 +1339,19 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/int
|
|
|
1337
1339
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.provider-with-waiter-state-machine-custom-role.ts,sha256=60mjzf_2NI9zO30B2Guye5sA7kxIl4yrLMXUEWIDO9I,2401
|
|
1338
1340
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.provider-with-waiter-state-machine.ts,sha256=6Ci2_ABcu5azSj1f0EzY1VD4lQUg9KI5l1Q7ieejI-0,2058
|
|
1339
1341
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.provider.ts,sha256=u_YVV0YZk6hyIxo5JOOSwwUORbqS3BVbJU6DIAwxuk0,1814
|
|
1340
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/FEATURE_FLAGS.md,sha256=
|
|
1342
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/FEATURE_FLAGS.md,sha256=A5U_vRN77DgEuwACJEl9E2tNnNF0Sopvw1yKQLXB3yA,102943
|
|
1341
1343
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/NESTED_ASSEMBLIES.md,sha256=P8PNyr4hIC_i-9aUxa301-5-N4tLcoHYnELBp3C6SQQ,4949
|
|
1342
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/README.md,sha256=
|
|
1344
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/README.md,sha256=ZCeTKvVasVTvIDaY1cuVqCEWMR3P_Lndtl32kJeFUUU,25588
|
|
1343
1345
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/lambda-layer-awscli/README.md,sha256=kMrrptXZcAiK_TXRQD4XcaNRa3RXaIoIUQRZYi29b30,681
|
|
1344
1346
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/lambda-layer-awscli/integ.awscli-layer.ts,sha256=KHmEY9P_oqKm8uNRHEVSi0OajnFw92LdCJZZe22BYXc,1491
|
|
1345
1347
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/lambda-layer-kubectl/integ.kubectl-layer.ts,sha256=lp8Jv0sePcfotHCAspdtoqZVgAWhha9hciDVI5w6Ps4,1513
|
|
1346
1348
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/lambda-layer-node-proxy-agent/README.md,sha256=eWYOUl_BRExsSMY1mzF5V1oGsCuxVR-6MSIuapbOS4Y,632
|
|
1347
1349
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/lambda-layer-node-proxy-agent/integ.node-proxy-agent.ts,sha256=YSEuo5dS-TMKovqWBuW9uWeJj0NOJd1UgOTt-2wZVMc,1545
|
|
1348
1350
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/ORIGINAL_API.md,sha256=JUo88_SWhqnKC3ObhkMwGTNOma-BniqBMhoBnxpifE4,26756
|
|
1349
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/README.md,sha256=
|
|
1351
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/README.md,sha256=uHIk5psamSGELoHrrSMPBO5Tr0E6dMCPCrOHKT82dIk,71460
|
|
1350
1352
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.cross-account-pipeline-action.ts,sha256=A18UXJLsi5tyYfCp4Dw6SxI1Vk5JikNX1F0NbfEnICw,4804
|
|
1351
1353
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.newpipeline-reduce-stagerole-scope.ts,sha256=IqBDpjPHyU8Uk91YISZm-1I_ERD8fbQObiMd6ekOyKQ,2543
|
|
1354
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.newpipeline-single-publisher.ts,sha256=QzRNUoZ2n7_vq4HLxkvDHt7y5ce71KjQHVFVIEDxiC4,1705
|
|
1352
1355
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.newpipeline-with-codebuild-logging.ts,sha256=7SuokmiayilFwdHU68_X5ZinfDt_Kj75quML_yHcdYQ,2557
|
|
1353
1356
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.newpipeline-with-codestar-connection.ts,sha256=x9DCirWauwW9hD7iCzMEoKcsVnKP1XJxJoq2Gfvxvvc,1772
|
|
1354
1357
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.newpipeline-with-cross-account-keys.ts,sha256=Yu9URWWtrr_QJg5FhJ-Py4gQZSlEd-mPXZX76dsaZ4M,1960
|
|
@@ -1366,8 +1369,8 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.pipe
|
|
|
1366
1369
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/region-info/README.md,sha256=vewWkV3ds9o9iyyYaJBNTkaKJ2XA6K2yF17tAxUnujg,2718
|
|
1367
1370
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/triggers/README.md,sha256=hYIx7DbG_7p4LYLUfxDwgIQjw9UNdz1GLrqDe8_Dbko,4132
|
|
1368
1371
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/triggers/integ.triggers.ts,sha256=4OHplMoBOgHGkktAzoU-TuNmJQS5wGAUvBfj5bGSe_Y,2807
|
|
1369
|
-
konokenj_cdk_api_mcp_server-0.
|
|
1370
|
-
konokenj_cdk_api_mcp_server-0.
|
|
1371
|
-
konokenj_cdk_api_mcp_server-0.
|
|
1372
|
-
konokenj_cdk_api_mcp_server-0.
|
|
1373
|
-
konokenj_cdk_api_mcp_server-0.
|
|
1372
|
+
konokenj_cdk_api_mcp_server-0.29.0.dist-info/METADATA,sha256=uIYHznTjVybWBNTP2Mc1TJdxaAeKCq6c0JgbKpdYnMM,2646
|
|
1373
|
+
konokenj_cdk_api_mcp_server-0.29.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
1374
|
+
konokenj_cdk_api_mcp_server-0.29.0.dist-info/entry_points.txt,sha256=bVDhMdyCC1WNMPOMbmB82jvWII2CIrwTZDygdCf0cYQ,79
|
|
1375
|
+
konokenj_cdk_api_mcp_server-0.29.0.dist-info/licenses/LICENSE.txt,sha256=5OIAASeg1HM22mVZ1enz9bgZ7TlsGfWXnj02P9OgFyk,1098
|
|
1376
|
+
konokenj_cdk_api_mcp_server-0.29.0.dist-info/RECORD,,
|
{konokenj_cdk_api_mcp_server-0.28.0.dist-info → konokenj_cdk_api_mcp_server-0.29.0.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|