konokenj.cdk-api-mcp-server 0.61.0__py3-none-any.whl → 0.62.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cdk_api_mcp_server/__about__.py +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-glue-alpha/README.md +3 -3
- cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-imagebuilder-alpha/README.md +216 -11
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb-v2.policy.ts +9 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb.ts +1 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/README.md +34 -7
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/integ.instance-metadata-options.ts +51 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/README.md +190 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.capacity-provider-all-fields.ts +61 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.capacity-provider-defaults.ts +34 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.function-capacity-provider-all-fields.ts +57 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.function-capacity-provider-minimal.ts +42 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.version-scaling-config-all-fields.ts +48 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.min.ts +1 -0
- {konokenj_cdk_api_mcp_server-0.61.0.dist-info → konokenj_cdk_api_mcp_server-0.62.0.dist-info}/METADATA +2 -2
- {konokenj_cdk_api_mcp_server-0.61.0.dist-info → konokenj_cdk_api_mcp_server-0.62.0.dist-info}/RECORD +19 -13
- {konokenj_cdk_api_mcp_server-0.61.0.dist-info → konokenj_cdk_api_mcp_server-0.62.0.dist-info}/WHEEL +1 -1
- {konokenj_cdk_api_mcp_server-0.61.0.dist-info → konokenj_cdk_api_mcp_server-0.62.0.dist-info}/entry_points.txt +0 -0
- {konokenj_cdk_api_mcp_server-0.61.0.dist-info → konokenj_cdk_api_mcp_server-0.62.0.dist-info}/licenses/LICENSE.txt +0 -0
cdk_api_mcp_server/__about__.py
CHANGED
|
@@ -113,7 +113,7 @@ new glue.PySparkEtlJob(stack, 'PySparkETLJob', {
|
|
|
113
113
|
description: 'This is a description',
|
|
114
114
|
role,
|
|
115
115
|
script,
|
|
116
|
-
glueVersion: glue.GlueVersion.
|
|
116
|
+
glueVersion: glue.GlueVersion.V5_1,
|
|
117
117
|
continuousLogging: { enabled: false },
|
|
118
118
|
workerType: glue.WorkerType.G_2X,
|
|
119
119
|
maxConcurrentRuns: 100,
|
|
@@ -169,7 +169,7 @@ new glue.PySparkStreamingJob(stack, 'PySparkStreamingJob', {
|
|
|
169
169
|
description: 'This is a description',
|
|
170
170
|
role,
|
|
171
171
|
script,
|
|
172
|
-
glueVersion: glue.GlueVersion.
|
|
172
|
+
glueVersion: glue.GlueVersion.V5_1,
|
|
173
173
|
continuousLogging: { enabled: false },
|
|
174
174
|
workerType: glue.WorkerType.G_2X,
|
|
175
175
|
maxConcurrentRuns: 100,
|
|
@@ -222,7 +222,7 @@ new glue.PySparkEtlJob(stack, 'pySparkEtlJob', {
|
|
|
222
222
|
description: 'This is a description',
|
|
223
223
|
role,
|
|
224
224
|
script,
|
|
225
|
-
glueVersion: glue.GlueVersion.
|
|
225
|
+
glueVersion: glue.GlueVersion.V5_1,
|
|
226
226
|
continuousLogging: { enabled: false },
|
|
227
227
|
workerType: glue.WorkerType.G_2X,
|
|
228
228
|
maxConcurrentRuns: 100,
|
|
@@ -38,7 +38,10 @@ test phase during the test stage.
|
|
|
38
38
|
|
|
39
39
|
### Image Pipeline
|
|
40
40
|
|
|
41
|
-
An image pipeline provides the automation framework for building secure AMIs and container images. The pipeline
|
|
41
|
+
An image pipeline provides the automation framework for building secure AMIs and container images. The pipeline
|
|
42
|
+
orchestrates the entire image creation process by combining an image recipe or container recipe with infrastructure
|
|
43
|
+
configuration and distribution configuration. Pipelines can run on a schedule or be triggered manually, and they manage
|
|
44
|
+
the build, test, and distribution phases automatically.
|
|
42
45
|
|
|
43
46
|
#### Image Pipeline Basic Usage
|
|
44
47
|
|
|
@@ -139,7 +142,7 @@ const advancedSchedulePipeline = new imagebuilder.ImagePipeline(this, 'AdvancedS
|
|
|
139
142
|
|
|
140
143
|
#### Image Pipeline Configuration
|
|
141
144
|
|
|
142
|
-
##### Infrastructure and Distribution
|
|
145
|
+
##### Infrastructure and Distribution in Image Pipelines
|
|
143
146
|
|
|
144
147
|
Configure custom infrastructure and distribution settings:
|
|
145
148
|
|
|
@@ -177,7 +180,7 @@ const pipelineLogGroup = new logs.LogGroup(this, 'PipelineLogGroup', {
|
|
|
177
180
|
});
|
|
178
181
|
|
|
179
182
|
const imageLogGroup = new logs.LogGroup(this, 'ImageLogGroup', {
|
|
180
|
-
logGroupName: '/custom/imagebuilder/image/logs',
|
|
183
|
+
logGroupName: '/custom/imagebuilder/image/logs',
|
|
181
184
|
retention: logs.RetentionDays.ONE_WEEK
|
|
182
185
|
});
|
|
183
186
|
|
|
@@ -188,7 +191,7 @@ const loggedPipeline = new imagebuilder.ImagePipeline(this, 'LoggedPipeline', {
|
|
|
188
191
|
});
|
|
189
192
|
```
|
|
190
193
|
|
|
191
|
-
##### Workflow Integration
|
|
194
|
+
##### Workflow Integration in Image Pipelines
|
|
192
195
|
|
|
193
196
|
Use AWS-managed workflows for common pipeline phases:
|
|
194
197
|
|
|
@@ -215,7 +218,7 @@ const containerWorkflowPipeline = new imagebuilder.ImagePipeline(this, 'Containe
|
|
|
215
218
|
});
|
|
216
219
|
```
|
|
217
220
|
|
|
218
|
-
##### Advanced Features
|
|
221
|
+
##### Advanced Features in Image Pipelines
|
|
219
222
|
|
|
220
223
|
Configure image scanning for container pipelines:
|
|
221
224
|
|
|
@@ -286,6 +289,204 @@ existingPipelineByName.grantStartExecution(automationRole);
|
|
|
286
289
|
existingPipelineByArn.grantRead(lambdaRole);
|
|
287
290
|
```
|
|
288
291
|
|
|
292
|
+
### Image
|
|
293
|
+
|
|
294
|
+
An image is the output resource created by Image Builder, consisting of an AMI or container image plus metadata such as
|
|
295
|
+
version, platform, and creation details. Images are used as base images for future builds and can be shared across AWS
|
|
296
|
+
accounts. While images are the output from image pipeline executions, they can also be created in an ad-hoc manner
|
|
297
|
+
outside a pipeline, defined as a standalone resource.
|
|
298
|
+
|
|
299
|
+
#### Image Basic Usage
|
|
300
|
+
|
|
301
|
+
Create a simple AMI-based image from an image recipe:
|
|
302
|
+
|
|
303
|
+
```ts
|
|
304
|
+
const imageRecipe = new imagebuilder.ImageRecipe(this, 'MyImageRecipe', {
|
|
305
|
+
baseImage: imagebuilder.BaseImage.fromSsmParameterName(
|
|
306
|
+
'/aws/service/ami-amazon-linux-latest/al2023-ami-minimal-kernel-default-x86_64'
|
|
307
|
+
)
|
|
308
|
+
});
|
|
309
|
+
|
|
310
|
+
const amiImage = new imagebuilder.Image(this, 'MyAmiImage', {
|
|
311
|
+
recipe: imageRecipe
|
|
312
|
+
});
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
Create a simple container image from a container recipe:
|
|
316
|
+
|
|
317
|
+
```ts
|
|
318
|
+
const containerRecipe = new imagebuilder.ContainerRecipe(this, 'MyContainerRecipe', {
|
|
319
|
+
baseImage: imagebuilder.BaseContainerImage.fromDockerHub('amazonlinux', 'latest'),
|
|
320
|
+
targetRepository: imagebuilder.Repository.fromEcr(
|
|
321
|
+
ecr.Repository.fromRepositoryName(this, 'Repository', 'my-container-repo')
|
|
322
|
+
)
|
|
323
|
+
});
|
|
324
|
+
|
|
325
|
+
const containerImage = new imagebuilder.Image(this, 'MyContainerImage', {
|
|
326
|
+
recipe: containerRecipe
|
|
327
|
+
});
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
#### AWS-Managed Images
|
|
331
|
+
|
|
332
|
+
##### Pre-defined OS Images
|
|
333
|
+
|
|
334
|
+
Use AWS-managed images for common operating systems:
|
|
335
|
+
|
|
336
|
+
```ts
|
|
337
|
+
// Amazon Linux 2023 AMI for x86_64
|
|
338
|
+
const amazonLinux2023Ami = imagebuilder.AmazonManagedImage.amazonLinux2023(this, 'AmazonLinux2023', {
|
|
339
|
+
imageType: imagebuilder.ImageType.AMI,
|
|
340
|
+
imageArchitecture: imagebuilder.ImageArchitecture.X86_64
|
|
341
|
+
});
|
|
342
|
+
|
|
343
|
+
// Ubuntu 22.04 AMI for ARM64
|
|
344
|
+
const ubuntu2204Ami = imagebuilder.AmazonManagedImage.ubuntuServer2204(this, 'Ubuntu2204', {
|
|
345
|
+
imageType: imagebuilder.ImageType.AMI,
|
|
346
|
+
imageArchitecture: imagebuilder.ImageArchitecture.ARM64
|
|
347
|
+
});
|
|
348
|
+
|
|
349
|
+
// Windows Server 2022 Full AMI
|
|
350
|
+
const windows2022Ami = imagebuilder.AmazonManagedImage.windowsServer2022Full(this, 'Windows2022', {
|
|
351
|
+
imageType: imagebuilder.ImageType.AMI,
|
|
352
|
+
imageArchitecture: imagebuilder.ImageArchitecture.X86_64
|
|
353
|
+
});
|
|
354
|
+
|
|
355
|
+
// Use as base image in recipe
|
|
356
|
+
const managedImageRecipe = new imagebuilder.ImageRecipe(this, 'ManagedImageRecipe', {
|
|
357
|
+
baseImage: amazonLinux2023Ami.toBaseImage()
|
|
358
|
+
});
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
##### Custom AWS-Managed Images
|
|
362
|
+
|
|
363
|
+
Import AWS-managed images by name or attributes:
|
|
364
|
+
|
|
365
|
+
```ts
|
|
366
|
+
// Import by name
|
|
367
|
+
const managedImageByName = imagebuilder.AmazonManagedImage.fromAmazonManagedImageName(
|
|
368
|
+
this,
|
|
369
|
+
'ManagedImageByName',
|
|
370
|
+
'amazon-linux-2023-x86'
|
|
371
|
+
);
|
|
372
|
+
|
|
373
|
+
// Import by attributes with specific version
|
|
374
|
+
const managedImageByAttributes = imagebuilder.AmazonManagedImage.fromAmazonManagedImageAttributes(this, 'ManagedImageByAttributes', {
|
|
375
|
+
imageName: 'ubuntu-server-22-lts-x86',
|
|
376
|
+
imageVersion: '2024.11.25'
|
|
377
|
+
});
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
#### Image Configuration
|
|
381
|
+
|
|
382
|
+
##### Infrastructure and Distribution in Images
|
|
383
|
+
|
|
384
|
+
Configure custom infrastructure and distribution settings:
|
|
385
|
+
|
|
386
|
+
```ts
|
|
387
|
+
const infrastructureConfiguration = new imagebuilder.InfrastructureConfiguration(this, 'Infrastructure', {
|
|
388
|
+
infrastructureConfigurationName: 'production-infrastructure',
|
|
389
|
+
instanceTypes: [
|
|
390
|
+
ec2.InstanceType.of(ec2.InstanceClass.COMPUTE7_INTEL, ec2.InstanceSize.LARGE)
|
|
391
|
+
],
|
|
392
|
+
vpc: vpc,
|
|
393
|
+
subnetSelection: { subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS }
|
|
394
|
+
});
|
|
395
|
+
|
|
396
|
+
const distributionConfiguration = new imagebuilder.DistributionConfiguration(this, 'Distribution');
|
|
397
|
+
distributionConfiguration.addAmiDistributions({
|
|
398
|
+
amiName: 'production-ami-{{ imagebuilder:buildDate }}',
|
|
399
|
+
amiTargetAccountIds: ['123456789012', '098765432109']
|
|
400
|
+
});
|
|
401
|
+
|
|
402
|
+
const productionImage = new imagebuilder.Image(this, 'ProductionImage', {
|
|
403
|
+
recipe: exampleImageRecipe,
|
|
404
|
+
infrastructureConfiguration: infrastructureConfiguration,
|
|
405
|
+
distributionConfiguration: distributionConfiguration
|
|
406
|
+
});
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
##### Logging Configuration
|
|
410
|
+
|
|
411
|
+
Configure custom CloudWatch log groups for image builds:
|
|
412
|
+
|
|
413
|
+
```ts
|
|
414
|
+
const logGroup = new logs.LogGroup(this, 'ImageLogGroup', {
|
|
415
|
+
logGroupName: '/custom/imagebuilder/image/logs',
|
|
416
|
+
retention: logs.RetentionDays.ONE_MONTH
|
|
417
|
+
});
|
|
418
|
+
|
|
419
|
+
const loggedImage = new imagebuilder.Image(this, 'LoggedImage', {
|
|
420
|
+
recipe: exampleImageRecipe,
|
|
421
|
+
logGroup: logGroup
|
|
422
|
+
});
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
##### Workflow Integration in Images
|
|
426
|
+
|
|
427
|
+
Use workflows for custom build, test, and distribution processes:
|
|
428
|
+
|
|
429
|
+
```ts
|
|
430
|
+
const imageWithWorkflows = new imagebuilder.Image(this, 'ImageWithWorkflows', {
|
|
431
|
+
recipe: exampleImageRecipe,
|
|
432
|
+
workflows: [
|
|
433
|
+
{ workflow: imagebuilder.AwsManagedWorkflow.buildImage(this, 'BuildWorkflow') },
|
|
434
|
+
{ workflow: imagebuilder.AwsManagedWorkflow.testImage(this, 'TestWorkflow') }
|
|
435
|
+
]
|
|
436
|
+
});
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
##### Advanced Features in Images
|
|
440
|
+
|
|
441
|
+
Configure image scanning, metadata collection, and testing:
|
|
442
|
+
|
|
443
|
+
```ts
|
|
444
|
+
const scanningRepository = new ecr.Repository(this, 'ScanningRepository');
|
|
445
|
+
|
|
446
|
+
const advancedContainerImage = new imagebuilder.Image(this, 'AdvancedContainerImage', {
|
|
447
|
+
recipe: exampleContainerRecipe,
|
|
448
|
+
imageScanningEnabled: true,
|
|
449
|
+
imageScanningEcrRepository: scanningRepository,
|
|
450
|
+
imageScanningEcrTags: ['security-scan', 'latest'],
|
|
451
|
+
enhancedImageMetadataEnabled: true,
|
|
452
|
+
imageTestsEnabled: false // Skip testing for faster builds
|
|
453
|
+
});
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
#### Importing Images
|
|
457
|
+
|
|
458
|
+
Reference existing images created outside CDK:
|
|
459
|
+
|
|
460
|
+
```ts
|
|
461
|
+
// Import by name
|
|
462
|
+
const existingImageByName = imagebuilder.Image.fromImageName(
|
|
463
|
+
this,
|
|
464
|
+
'ExistingImageByName',
|
|
465
|
+
'my-existing-image'
|
|
466
|
+
);
|
|
467
|
+
|
|
468
|
+
// Import by ARN
|
|
469
|
+
const existingImageByArn = imagebuilder.Image.fromImageArn(
|
|
470
|
+
this,
|
|
471
|
+
'ExistingImageByArn',
|
|
472
|
+
'arn:aws:imagebuilder:us-east-1:123456789012:image/imported-image/1.0.0'
|
|
473
|
+
);
|
|
474
|
+
|
|
475
|
+
// Import by attributes
|
|
476
|
+
const existingImageByAttributes = imagebuilder.Image.fromImageAttributes(this, 'ExistingImageByAttributes', {
|
|
477
|
+
imageName: 'shared-base-image',
|
|
478
|
+
imageVersion: '2024.11.25'
|
|
479
|
+
});
|
|
480
|
+
|
|
481
|
+
// Grant permissions to imported images
|
|
482
|
+
const role = new iam.Role(this, 'ImageAccessRole', {
|
|
483
|
+
assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com')
|
|
484
|
+
});
|
|
485
|
+
|
|
486
|
+
existingImageByName.grantRead(role);
|
|
487
|
+
existingImageByArn.grant(role, 'imagebuilder:GetImage', 'imagebuilder:ListImagePackages');
|
|
488
|
+
```
|
|
489
|
+
|
|
289
490
|
### Image Recipe
|
|
290
491
|
|
|
291
492
|
#### Image Recipe Basic Usage
|
|
@@ -396,7 +597,7 @@ const imageRecipe = new imagebuilder.ImageRecipe(this, 'ComponentImageRecipe', {
|
|
|
396
597
|
Use pre-built AWS components:
|
|
397
598
|
|
|
398
599
|
```ts
|
|
399
|
-
const imageRecipe = new imagebuilder.ImageRecipe(this, '
|
|
600
|
+
const imageRecipe = new imagebuilder.ImageRecipe(this, 'AmazonManagedImageRecipe', {
|
|
400
601
|
baseImage: imagebuilder.BaseImage.fromSsmParameterName(
|
|
401
602
|
'/aws/service/ami-amazon-linux-latest/al2023-ami-minimal-kernel-default-x86_64'
|
|
402
603
|
),
|
|
@@ -1103,7 +1304,8 @@ containerDistributionConfiguration.addContainerDistributions({
|
|
|
1103
1304
|
|
|
1104
1305
|
### Workflow
|
|
1105
1306
|
|
|
1106
|
-
Workflows define the sequence of steps that Image Builder performs during image creation. There are three workflow
|
|
1307
|
+
Workflows define the sequence of steps that Image Builder performs during image creation. There are three workflow
|
|
1308
|
+
types: BUILD (image building), TEST (testing images), and DISTRIBUTION (distributing container images).
|
|
1107
1309
|
|
|
1108
1310
|
#### Basic Workflow Usage
|
|
1109
1311
|
|
|
@@ -1264,7 +1466,8 @@ const workflowFromS3 = new imagebuilder.Workflow(this, 'S3Workflow', {
|
|
|
1264
1466
|
|
|
1265
1467
|
#### Encrypt workflow data with a KMS key
|
|
1266
1468
|
|
|
1267
|
-
You can encrypt workflow data with a KMS key, so that only principals with access to decrypt with the key are able to
|
|
1469
|
+
You can encrypt workflow data with a KMS key, so that only principals with access to decrypt with the key are able to
|
|
1470
|
+
access the workflow data.
|
|
1268
1471
|
|
|
1269
1472
|
```ts
|
|
1270
1473
|
const workflow = new imagebuilder.Workflow(this, 'EncryptedWorkflow', {
|
|
@@ -1327,7 +1530,9 @@ const distributeContainerWorkflow = imagebuilder.AwsManagedWorkflow.distributeCo
|
|
|
1327
1530
|
|
|
1328
1531
|
### Lifecycle Policy
|
|
1329
1532
|
|
|
1330
|
-
Lifecycle policies help you manage the retention and cleanup of Image Builder resources automatically. These policies
|
|
1533
|
+
Lifecycle policies help you manage the retention and cleanup of Image Builder resources automatically. These policies
|
|
1534
|
+
define rules for deprecating or deleting old image versions, managing AMI snapshots, and controlling resource costs by
|
|
1535
|
+
removing unused images based on age, count, or other criteria.
|
|
1331
1536
|
|
|
1332
1537
|
#### Lifecycle Policy Basic Usage
|
|
1333
1538
|
|
|
@@ -1642,7 +1847,7 @@ const disabledPolicy = new imagebuilder.LifecyclePolicy(this, 'DisabledPolicy',
|
|
|
1642
1847
|
|
|
1643
1848
|
##### Importing Lifecycle Policies
|
|
1644
1849
|
|
|
1645
|
-
Reference lifecycle policies created outside
|
|
1850
|
+
Reference lifecycle policies created outside CDK:
|
|
1646
1851
|
|
|
1647
1852
|
```ts
|
|
1648
1853
|
// Import by name
|
|
@@ -1660,5 +1865,5 @@ const importedByArn = imagebuilder.LifecyclePolicy.fromLifecyclePolicyArn(
|
|
|
1660
1865
|
);
|
|
1661
1866
|
|
|
1662
1867
|
importedByName.grantRead(lambdaRole);
|
|
1663
|
-
importedByArn.grant(lambdaRole, 'imagebuilder:
|
|
1868
|
+
importedByArn.grant(lambdaRole, 'imagebuilder:UpdateLifecyclePolicy');
|
|
1664
1869
|
```
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb-v2.policy.ts
CHANGED
|
@@ -33,10 +33,18 @@ class TestStack extends Stack {
|
|
|
33
33
|
removalPolicy: RemovalPolicy.DESTROY,
|
|
34
34
|
resourcePolicy: docu,
|
|
35
35
|
});
|
|
36
|
+
|
|
37
|
+
const table = new dynamodb.TableV2(this, 'TableTestV2-2', {
|
|
38
|
+
partitionKey: {
|
|
39
|
+
name: 'id',
|
|
40
|
+
type: dynamodb.AttributeType.STRING,
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
table.grantReadData(new iam.AccountRootPrincipal());
|
|
36
44
|
}
|
|
37
45
|
}
|
|
38
46
|
|
|
39
|
-
const stack = new TestStack(app, 'ResourcePolicyTest-v2'
|
|
47
|
+
const stack = new TestStack(app, 'ResourcePolicyTest-v2');
|
|
40
48
|
|
|
41
49
|
new IntegTest(app, 'table-v2-resource-policy-integ-test', {
|
|
42
50
|
testCases: [stack],
|
|
@@ -147,6 +147,7 @@ tableWithCMK.grantStreamRead(role);
|
|
|
147
147
|
|
|
148
148
|
const user = new iam.User(stack, 'User');
|
|
149
149
|
table.grantReadData(user);
|
|
150
|
+
table.grantReadData(new iam.AccountRootPrincipal());
|
|
150
151
|
tableWithGlobalAndLocalSecondaryIndex.grantReadData(user);
|
|
151
152
|
|
|
152
153
|
app.synth();
|
|
@@ -1939,30 +1939,57 @@ The `volumeInitializationRate` must be:
|
|
|
1939
1939
|
|
|
1940
1940
|
### Configuring Instance Metadata Service (IMDS)
|
|
1941
1941
|
|
|
1942
|
-
####
|
|
1942
|
+
#### Comprehensive Metadata Options
|
|
1943
1943
|
|
|
1944
|
-
You can configure [EC2 Instance Metadata Service](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) options
|
|
1945
|
-
allow both IMDSv1 and IMDSv2 or enforce IMDSv2 when interacting with the IMDS.
|
|
1946
|
-
|
|
1947
|
-
To do this for a single `Instance`, you can use the `requireImdsv2` property.
|
|
1948
|
-
The example below demonstrates IMDSv2 being required on a single `Instance`:
|
|
1944
|
+
You can configure [EC2 Instance Metadata Service](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) options using individual properties. This provides comprehensive control over all metadata service settings:
|
|
1949
1945
|
|
|
1950
1946
|
```ts
|
|
1951
1947
|
declare const vpc: ec2.Vpc;
|
|
1952
1948
|
declare const instanceType: ec2.InstanceType;
|
|
1953
1949
|
declare const machineImage: ec2.IMachineImage;
|
|
1954
1950
|
|
|
1951
|
+
// Example 1: Enforce IMDSv2 with comprehensive options
|
|
1955
1952
|
new ec2.Instance(this, 'Instance', {
|
|
1956
1953
|
vpc,
|
|
1957
1954
|
instanceType,
|
|
1958
1955
|
machineImage,
|
|
1956
|
+
httpEndpoint: true,
|
|
1957
|
+
httpProtocolIpv6: false,
|
|
1958
|
+
httpPutResponseHopLimit: 2,
|
|
1959
|
+
httpTokens: ec2.HttpTokens.REQUIRED,
|
|
1960
|
+
instanceMetadataTags: true,
|
|
1961
|
+
});
|
|
1959
1962
|
|
|
1960
|
-
|
|
1963
|
+
// Example 2: Enforce IMDSv2 with minimal configuration
|
|
1964
|
+
new ec2.Instance(this, 'SecureInstance', {
|
|
1965
|
+
vpc,
|
|
1966
|
+
instanceType,
|
|
1967
|
+
machineImage,
|
|
1968
|
+
httpTokens: ec2.HttpTokens.REQUIRED,
|
|
1969
|
+
});
|
|
1970
|
+
```
|
|
1971
|
+
|
|
1972
|
+
#### Simple IMDSv2 Enforcement
|
|
1973
|
+
|
|
1974
|
+
For simple IMDSv2 enforcement without additional configuration, you can use the `requireImdsv2` property:
|
|
1961
1975
|
|
|
1976
|
+
```ts
|
|
1977
|
+
declare const vpc: ec2.Vpc;
|
|
1978
|
+
declare const instanceType: ec2.InstanceType;
|
|
1979
|
+
declare const machineImage: ec2.IMachineImage;
|
|
1980
|
+
|
|
1981
|
+
new ec2.Instance(this, 'Instance', {
|
|
1982
|
+
vpc,
|
|
1983
|
+
instanceType,
|
|
1984
|
+
machineImage,
|
|
1985
|
+
|
|
1986
|
+
// Simple IMDSv2 enforcement
|
|
1962
1987
|
requireImdsv2: true,
|
|
1963
1988
|
});
|
|
1964
1989
|
```
|
|
1965
1990
|
|
|
1991
|
+
#### Applying to Multiple Instances
|
|
1992
|
+
|
|
1966
1993
|
You can also use the either the `InstanceRequireImdsv2Aspect` for EC2 instances or the `LaunchTemplateRequireImdsv2Aspect` for EC2 launch templates
|
|
1967
1994
|
to apply the operation to multiple instances or launch templates, respectively.
|
|
1968
1995
|
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import * as cdk from 'aws-cdk-lib';
|
|
2
|
+
import { IntegTest } from '@aws-cdk/integ-tests-alpha';
|
|
3
|
+
import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
4
|
+
|
|
5
|
+
const app = new cdk.App();
|
|
6
|
+
|
|
7
|
+
class TestStack extends cdk.Stack {
|
|
8
|
+
constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
|
|
9
|
+
super(scope, id, props);
|
|
10
|
+
|
|
11
|
+
const vpc = new ec2.Vpc(this, 'VPC', {
|
|
12
|
+
maxAzs: 3,
|
|
13
|
+
natGateways: 1,
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
// Test instance with comprehensive metadata options
|
|
17
|
+
new ec2.Instance(this, 'InstanceWithMetadataOptions', {
|
|
18
|
+
vpc,
|
|
19
|
+
instanceType: ec2.InstanceType.of(ec2.InstanceClass.T3, ec2.InstanceSize.NANO),
|
|
20
|
+
machineImage: new ec2.AmazonLinuxImage({ generation: ec2.AmazonLinuxGeneration.AMAZON_LINUX_2 }),
|
|
21
|
+
httpEndpoint: true,
|
|
22
|
+
httpProtocolIpv6: false,
|
|
23
|
+
httpPutResponseHopLimit: 2,
|
|
24
|
+
httpTokens: ec2.HttpTokens.REQUIRED,
|
|
25
|
+
instanceMetadataTags: true,
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
// Test instance with partial metadata options
|
|
29
|
+
new ec2.Instance(this, 'InstanceWithPartialMetadataOptions', {
|
|
30
|
+
vpc,
|
|
31
|
+
instanceType: ec2.InstanceType.of(ec2.InstanceClass.T3, ec2.InstanceSize.NANO),
|
|
32
|
+
machineImage: new ec2.AmazonLinuxImage({ generation: ec2.AmazonLinuxGeneration.AMAZON_LINUX_2 }),
|
|
33
|
+
httpTokens: ec2.HttpTokens.REQUIRED,
|
|
34
|
+
instanceMetadataTags: true,
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
// Test instance with backward compatibility (requireImdsv2)
|
|
38
|
+
new ec2.Instance(this, 'InstanceWithRequireImdsv2', {
|
|
39
|
+
vpc,
|
|
40
|
+
instanceType: ec2.InstanceType.of(ec2.InstanceClass.T3, ec2.InstanceSize.NANO),
|
|
41
|
+
machineImage: new ec2.AmazonLinuxImage({ generation: ec2.AmazonLinuxGeneration.AMAZON_LINUX_2 }),
|
|
42
|
+
requireImdsv2: true,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const testCase = new TestStack(app, 'integ-ec2-instance-metadata-options');
|
|
48
|
+
|
|
49
|
+
new IntegTest(app, 'instance-metadata-options-test', {
|
|
50
|
+
testCases: [testCase],
|
|
51
|
+
});
|
|
@@ -733,6 +733,196 @@ new lambda.LayerVersion(this, 'MyLayer', {
|
|
|
733
733
|
});
|
|
734
734
|
```
|
|
735
735
|
|
|
736
|
+
## Capacity Providers
|
|
737
|
+
|
|
738
|
+
Lambda capacity providers allow you to run Lambda functions on dedicated compute resources instead of the default serverless execution environment. Capacity providers can have multiple functions and function versions associated with them, but a function can be attached to at most one capacity provider.
|
|
739
|
+
|
|
740
|
+
### Creating a Capacity Provider
|
|
741
|
+
|
|
742
|
+
To create a capacity provider, you need to specify the VPC configuration and optionally configure permissions, scaling, and instance requirements:
|
|
743
|
+
|
|
744
|
+
```ts
|
|
745
|
+
import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
746
|
+
|
|
747
|
+
// Create a VPC for the capacity provider
|
|
748
|
+
const vpc = new ec2.Vpc(this, 'MyVpc');
|
|
749
|
+
const securityGroup = new ec2.SecurityGroup(this, 'SecurityGroup', { vpc });
|
|
750
|
+
|
|
751
|
+
// Create a basic capacity provider
|
|
752
|
+
const capacityProvider = new lambda.CapacityProvider(this, 'MyCapacityProvider', {
|
|
753
|
+
capacityProviderName: 'my-capacity-provider',
|
|
754
|
+
subnets: vpc.privateSubnets,
|
|
755
|
+
securityGroups: [securityGroup],
|
|
756
|
+
});
|
|
757
|
+
```
|
|
758
|
+
|
|
759
|
+
By default, permissions are granted to the capacity provider to manage instances using the AWS managed policy AWSLambdaManagedEC2ResourceOperator. You can also supply a custom role via the `operatorRole` parameter.
|
|
760
|
+
|
|
761
|
+
### Configuring Scaling Policies
|
|
762
|
+
|
|
763
|
+
You can configure target tracking scaling policies to automatically scale your capacity provider based on CPU utilization:
|
|
764
|
+
|
|
765
|
+
```ts
|
|
766
|
+
import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
767
|
+
|
|
768
|
+
const vpc = new ec2.Vpc(this, 'MyVpc');
|
|
769
|
+
const securityGroup = new ec2.SecurityGroup(this, 'SecurityGroup', { vpc });
|
|
770
|
+
|
|
771
|
+
const capacityProvider = new lambda.CapacityProvider(this, 'MyCapacityProvider', {
|
|
772
|
+
subnets: vpc.privateSubnets,
|
|
773
|
+
securityGroups: [securityGroup],
|
|
774
|
+
scalingOptions: lambda.ScalingOptions.manual([
|
|
775
|
+
lambda.TargetTrackingScalingPolicy.cpuUtilization(70),
|
|
776
|
+
]),
|
|
777
|
+
});
|
|
778
|
+
```
|
|
779
|
+
|
|
780
|
+
### Instance Type Configuration
|
|
781
|
+
|
|
782
|
+
You can control which EC2 instance types the capacity provider can use:
|
|
783
|
+
|
|
784
|
+
```ts
|
|
785
|
+
import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
786
|
+
|
|
787
|
+
const vpc = new ec2.Vpc(this, 'MyVpc');
|
|
788
|
+
const securityGroup = new ec2.SecurityGroup(this, 'SecurityGroup', { vpc });
|
|
789
|
+
|
|
790
|
+
// Allow only specific instance families
|
|
791
|
+
const allowCapacityProvider = new lambda.CapacityProvider(this, 'MyCapacityProviderAllowed', {
|
|
792
|
+
subnets: vpc.privateSubnets,
|
|
793
|
+
securityGroups: [securityGroup],
|
|
794
|
+
instanceTypeFilter: lambda.InstanceTypeFilter.allow([
|
|
795
|
+
ec2.InstanceType.of(ec2.InstanceClass.M5, ec2.InstanceSize.LARGE),
|
|
796
|
+
ec2.InstanceType.of(ec2.InstanceClass.M5, ec2.InstanceSize.XLARGE),
|
|
797
|
+
]),
|
|
798
|
+
});
|
|
799
|
+
|
|
800
|
+
// Or exclude specific instance types
|
|
801
|
+
const excludeCapacityProvider = new lambda.CapacityProvider(this, 'MyCapacityProviderExcluded', {
|
|
802
|
+
subnets: vpc.privateSubnets,
|
|
803
|
+
securityGroups: [securityGroup],
|
|
804
|
+
instanceTypeFilter: lambda.InstanceTypeFilter.exclude([
|
|
805
|
+
ec2.InstanceType.of(ec2.InstanceClass.T2, ec2.InstanceSize.MICRO),
|
|
806
|
+
]),
|
|
807
|
+
});
|
|
808
|
+
```
|
|
809
|
+
|
|
810
|
+
### Using a Capacity Provider with Lambda Functions
|
|
811
|
+
|
|
812
|
+
Once you have a capacity provider, you can configure Lambda functions to use it:
|
|
813
|
+
|
|
814
|
+
```ts
|
|
815
|
+
declare const capacityProvider: lambda.CapacityProvider;
|
|
816
|
+
|
|
817
|
+
const fn = new lambda.Function(this, 'MyFunction', {
|
|
818
|
+
// Runtime must be equal to or newer than NODEJS_22_X
|
|
819
|
+
runtime: lambda.Runtime.NODEJS_22_X,
|
|
820
|
+
handler: 'index.handler',
|
|
821
|
+
code: lambda.Code.fromAsset(path.join(__dirname, 'lambda-handler')),
|
|
822
|
+
});
|
|
823
|
+
|
|
824
|
+
// Associate the function with the capacity provider
|
|
825
|
+
capacityProvider.addFunction(fn, {
|
|
826
|
+
perExecutionEnvironmentMaxConcurrency: 10,
|
|
827
|
+
executionEnvironmentMemoryGiBPerVCpu: 4,
|
|
828
|
+
});
|
|
829
|
+
```
|
|
830
|
+
|
|
831
|
+
Note that once you use a capacity provider in a function, it cannot be removed, only changed.
|
|
832
|
+
|
|
833
|
+
#### CapacityProviderFunctionOptions (addFunction method)
|
|
834
|
+
|
|
835
|
+
| Name | Type | Required | Description |
|
|
836
|
+
|------|------|----------|-------------|
|
|
837
|
+
| perExecutionEnvironmentMaxConcurrency | number | No | Maximum concurrent invokes per execution environment. |
|
|
838
|
+
| executionEnvironmentMemoryGiBPerVCpu | number | No | Memory per VCPU in GiB. |
|
|
839
|
+
| publishToLatestPublished | boolean | No | Whether to automatically publish to $LATEST.PUBLISHED version. |
|
|
840
|
+
| latestPublishedScalingConfig | LatestPublishedScalingConfig | No | Scaling configuration for $LATEST.PUBLISHED version. |
|
|
841
|
+
|
|
842
|
+
#### LatestPublishedScalingConfig
|
|
843
|
+
|
|
844
|
+
| Name | Type | Required | Description |
|
|
845
|
+
|------|------|----------|-------------|
|
|
846
|
+
| minExecutionEnvironments | number | No | Minimum execution environments for $LATEST.PUBLISHED version. |
|
|
847
|
+
| maxExecutionEnvironments | number | No | Maximum execution environments for $LATEST.PUBLISHED version. |
|
|
848
|
+
|
|
849
|
+
### Capacity Provider Versions
|
|
850
|
+
|
|
851
|
+
When publishing Lambda versions that use capacity providers, you can configure scaling settings specific to each version.
|
|
852
|
+
|
|
853
|
+
To publish a permanent version with specific scaling properties, you can use the [`currentVersion`](#currentversion-updated-hashing-logic) property of the function:
|
|
854
|
+
|
|
855
|
+
```ts
|
|
856
|
+
const fn = new lambda.Function(this, 'MyFunction', {
|
|
857
|
+
runtime: lambda.Runtime.NODEJS_22_X,
|
|
858
|
+
handler: 'index.handler',
|
|
859
|
+
code: lambda.Code.fromAsset(path.join(__dirname, 'lambda-handler')),
|
|
860
|
+
currentVersionOptions: {
|
|
861
|
+
minExecutionEnvironments: 3,
|
|
862
|
+
}
|
|
863
|
+
});
|
|
864
|
+
|
|
865
|
+
const version = fn.latestVersion
|
|
866
|
+
```
|
|
867
|
+
|
|
868
|
+
You can also specify scaling properties for the special `$LATEST.PUBLISHED` version when attaching the function to the capacity provider.
|
|
869
|
+
|
|
870
|
+
`$LATEST.PUBLISHED` is a version that is automatically published when you deploy changes to your function.
|
|
871
|
+
|
|
872
|
+
```ts
|
|
873
|
+
declare const capacityProvider: lambda.CapacityProvider;
|
|
874
|
+
declare const fn: lambda.Function;
|
|
875
|
+
|
|
876
|
+
capacityProvider.addFunction(fn, {
|
|
877
|
+
latestPublishedScalingConfig: {
|
|
878
|
+
minExecutionEnvironments: 5,
|
|
879
|
+
maxExecutionEnvironments: 25,
|
|
880
|
+
},
|
|
881
|
+
});
|
|
882
|
+
```
|
|
883
|
+
|
|
884
|
+
#### VersionOptions (Capacity Provider Related Fields)
|
|
885
|
+
|
|
886
|
+
| Name | Type | Required | Description |
|
|
887
|
+
|------|------|----------|-------------|
|
|
888
|
+
| minExecutionEnvironments | number | No | Minimum execution environments to maintain for this version. |
|
|
889
|
+
| maxExecutionEnvironments | number | No | Maximum execution environments allowed for this version. |
|
|
890
|
+
|
|
891
|
+
### Security and Encryption
|
|
892
|
+
|
|
893
|
+
Capacity providers support encryption using AWS KMS keys:
|
|
894
|
+
|
|
895
|
+
```ts
|
|
896
|
+
import * as kms from 'aws-cdk-lib/aws-kms';
|
|
897
|
+
import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
898
|
+
|
|
899
|
+
const vpc = new ec2.Vpc(this, 'MyVpc');
|
|
900
|
+
const securityGroup = new ec2.SecurityGroup(this, 'SecurityGroup', { vpc });
|
|
901
|
+
const kmsKey = new kms.Key(this, 'MyKey');
|
|
902
|
+
|
|
903
|
+
const capacityProvider = new lambda.CapacityProvider(this, 'MyCapacityProvider', {
|
|
904
|
+
subnets: vpc.privateSubnets,
|
|
905
|
+
securityGroups: [securityGroup],
|
|
906
|
+
kmsKey: kmsKey,
|
|
907
|
+
});
|
|
908
|
+
```
|
|
909
|
+
|
|
910
|
+
### Capacity Provider Configuration Reference
|
|
911
|
+
|
|
912
|
+
#### CapacityProviderProps
|
|
913
|
+
|
|
914
|
+
| Name | Type | Required | Description |
|
|
915
|
+
|------|------|----------|-------------|
|
|
916
|
+
| capacityProviderName | string | No | Name of the capacity provider. Must be unique within the AWS account and region. |
|
|
917
|
+
| securityGroups | ISecurityGroup[] | Yes | Security groups to associate with EC2 instances. Up to 5 allowed. |
|
|
918
|
+
| subnets | ISubnet[] | Yes | Subnets where the capacity provider can launch EC2 instances. 1-16 subnets supported. |
|
|
919
|
+
| operatorRole | IRole | No | IAM role for Lambda to manage the capacity provider. Uses AWS Managed Policy AWSLambdaManagedEC2ResourceOperator by default. |
|
|
920
|
+
| architectures | Architecture[] | No | Instruction set architecture for compute instances. |
|
|
921
|
+
| instanceTypeFilter | InstanceTypeFilter | No | Filter for allowed or excluded instance types. |
|
|
922
|
+
| maxVCpuCount | number | No | Maximum number of EC2 instances for scaling. |
|
|
923
|
+
| scalingOptions | ScalingOptions | No | Scaling configuration including policies. |
|
|
924
|
+
| kmsKey | IKey | No | KMS key for encrypting capacity provider data. |
|
|
925
|
+
|
|
736
926
|
## Lambda Insights
|
|
737
927
|
|
|
738
928
|
Lambda functions can be configured to use CloudWatch [Lambda Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Lambda-Insights.html)
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
2
|
+
import * as iam from 'aws-cdk-lib/aws-iam';
|
|
3
|
+
import * as lambda from 'aws-cdk-lib/aws-lambda';
|
|
4
|
+
import * as cdk from 'aws-cdk-lib/core';
|
|
5
|
+
import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
6
|
+
|
|
7
|
+
const app = new cdk.App();
|
|
8
|
+
const stack = new cdk.Stack(app, 'CapacityProviderAllFieldsStack');
|
|
9
|
+
|
|
10
|
+
const vpc = new ec2.Vpc(stack, 'Vpc', { maxAzs: 2 });
|
|
11
|
+
const securityGroup = new ec2.SecurityGroup(stack, 'SecurityGroup', { vpc });
|
|
12
|
+
|
|
13
|
+
const operatorRole = new iam.Role(stack, 'OperatorRole', {
|
|
14
|
+
assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com'),
|
|
15
|
+
managedPolicies: [iam.ManagedPolicy.fromAwsManagedPolicyName('AmazonLambdaCapacityProviderOperatorRolePolicy')],
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
const capacityProvider = new lambda.CapacityProvider(stack, 'CapacityProvider', {
|
|
19
|
+
capacityProviderName: 'test-capacity-provider',
|
|
20
|
+
subnets: vpc.privateSubnets,
|
|
21
|
+
securityGroups: [securityGroup],
|
|
22
|
+
operatorRole: operatorRole,
|
|
23
|
+
architectures: [lambda.Architecture.X86_64],
|
|
24
|
+
instanceTypeFilter: lambda.InstanceTypeFilter.allow([ec2.InstanceType.of(ec2.InstanceClass.T2, ec2.InstanceSize.MICRO)]),
|
|
25
|
+
maxVCpuCount: 12,
|
|
26
|
+
scalingOptions: lambda.ScalingOptions.manual([
|
|
27
|
+
lambda.TargetTrackingScalingPolicy.cpuUtilization(70),
|
|
28
|
+
]),
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
const testCase = new integ.IntegTest(app, 'CapacityProviderAllFieldsTest', {
|
|
32
|
+
testCases: [stack],
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
const getCapacityProvider = testCase.assertions.awsApiCall('Lambda', 'GetCapacityProvider', {
|
|
36
|
+
CapacityProviderName: capacityProvider.capacityProviderName,
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
getCapacityProvider.expect(integ.ExpectedResult.objectLike({
|
|
40
|
+
CapacityProviderArn: capacityProvider.capacityProviderArn,
|
|
41
|
+
State: 'Active',
|
|
42
|
+
CapacityProviderScalingConfig: {
|
|
43
|
+
MaxVCpuCount: 12,
|
|
44
|
+
ScalingMode: 'Manual',
|
|
45
|
+
ScalingPolicies: [{
|
|
46
|
+
PredefinedMetricType: 'LambdaCapacityProviderAverageCPUUtilization',
|
|
47
|
+
TargetValue: 70,
|
|
48
|
+
}],
|
|
49
|
+
},
|
|
50
|
+
PermissionsConfig: {
|
|
51
|
+
CapacityProviderOperatorRoleArn: operatorRole.roleArn,
|
|
52
|
+
},
|
|
53
|
+
VpcConfig: {
|
|
54
|
+
SubnetIds: vpc.privateSubnets.map(subnet => subnet.subnetId),
|
|
55
|
+
SecurityGroupIds: [securityGroup.securityGroupId],
|
|
56
|
+
},
|
|
57
|
+
InstanceRequirements: {
|
|
58
|
+
Architectures: ['x86_64'],
|
|
59
|
+
AllowedInstanceTypes: ['t2.micro'],
|
|
60
|
+
},
|
|
61
|
+
}));
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
2
|
+
import * as lambda from 'aws-cdk-lib/aws-lambda';
|
|
3
|
+
import * as cdk from 'aws-cdk-lib/core';
|
|
4
|
+
import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
5
|
+
|
|
6
|
+
const app = new cdk.App();
|
|
7
|
+
const stack = new cdk.Stack(app, 'CapacityProviderDefaultsStack');
|
|
8
|
+
|
|
9
|
+
const vpc = new ec2.Vpc(stack, 'Vpc', { maxAzs: 2 });
|
|
10
|
+
const securityGroup = new ec2.SecurityGroup(stack, 'SecurityGroup', { vpc });
|
|
11
|
+
|
|
12
|
+
const capacityProvider = new lambda.CapacityProvider(stack, 'CapacityProvider', {
|
|
13
|
+
subnets: vpc.privateSubnets,
|
|
14
|
+
securityGroups: [securityGroup],
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
const testCase = new integ.IntegTest(app, 'CapacityProviderDefaultsTest', {
|
|
18
|
+
testCases: [stack],
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
const getCapacityProvider = testCase.assertions.awsApiCall('Lambda', 'GetCapacityProvider', {
|
|
22
|
+
CapacityProviderName: capacityProvider.capacityProviderName,
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
getCapacityProvider.expect(integ.ExpectedResult.objectLike({
|
|
26
|
+
State: 'Active',
|
|
27
|
+
PermissionsConfig: {
|
|
28
|
+
CapacityProviderOperatorRoleArn: integ.ExpectedResult.stringLikeRegexp('arn:aws:iam::\\d{12}:role/.+'),
|
|
29
|
+
},
|
|
30
|
+
VpcConfig: {
|
|
31
|
+
SubnetIds: vpc.privateSubnets.map(subnet => subnet.subnetId),
|
|
32
|
+
SecurityGroupIds: [securityGroup.securityGroupId],
|
|
33
|
+
},
|
|
34
|
+
}));
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
2
|
+
import * as lambda from 'aws-cdk-lib/aws-lambda';
|
|
3
|
+
import * as cdk from 'aws-cdk-lib/core';
|
|
4
|
+
import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
5
|
+
|
|
6
|
+
const app = new cdk.App();
|
|
7
|
+
const stack = new cdk.Stack(app, 'FunctionCapacityProviderAllFieldsStack');
|
|
8
|
+
|
|
9
|
+
const vpc = new ec2.Vpc(stack, 'Vpc', { maxAzs: 2 });
|
|
10
|
+
const securityGroup = new ec2.SecurityGroup(stack, 'SecurityGroup', { vpc });
|
|
11
|
+
|
|
12
|
+
const capacityProvider = new lambda.CapacityProvider(stack, 'CapacityProvider', {
|
|
13
|
+
subnets: vpc.privateSubnets,
|
|
14
|
+
securityGroups: [securityGroup],
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
const fn = new lambda.Function(stack, 'Function', {
|
|
18
|
+
runtime: lambda.Runtime.NODEJS_LATEST,
|
|
19
|
+
handler: 'index.handler',
|
|
20
|
+
code: lambda.Code.fromInline('exports.handler = async () => ({ statusCode: 200 });'),
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
capacityProvider.addFunction(fn, {
|
|
24
|
+
perExecutionEnvironmentMaxConcurrency: 10,
|
|
25
|
+
executionEnvironmentMemoryGiBPerVCpu: 2,
|
|
26
|
+
publishToLatestPublished: true,
|
|
27
|
+
latestPublishedScalingConfig: {
|
|
28
|
+
minExecutionEnvironments: 1,
|
|
29
|
+
maxExecutionEnvironments: 5,
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
const testCase = new integ.IntegTest(app, 'FunctionCapacityProviderAllFieldsTest', {
|
|
34
|
+
testCases: [stack],
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
const getFunction = testCase.assertions.awsApiCall('Lambda', 'GetFunction', {
|
|
38
|
+
FunctionName: fn.functionName,
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
getFunction.expect(integ.ExpectedResult.objectLike({
|
|
42
|
+
Configuration: {
|
|
43
|
+
State: 'Active',
|
|
44
|
+
PublishToLatestPublished: true,
|
|
45
|
+
CapacityProviderConfig: {
|
|
46
|
+
LambdaManagedInstancesCapacityProviderConfig: {
|
|
47
|
+
CapacityProviderArn: capacityProvider.capacityProviderArn,
|
|
48
|
+
PerExecutionEnvironmentMaxConcurrency: 10,
|
|
49
|
+
ExecutionEnvironmentMemoryGiBPerVCpu: 2,
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
FunctionScalingConfig: {
|
|
53
|
+
MinExecutionEnvironments: 1,
|
|
54
|
+
MaxExecutionEnvironments: 5,
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
}));
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
2
|
+
import * as lambda from 'aws-cdk-lib/aws-lambda';
|
|
3
|
+
import * as cdk from 'aws-cdk-lib/core';
|
|
4
|
+
import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
5
|
+
|
|
6
|
+
const app = new cdk.App();
|
|
7
|
+
const stack = new cdk.Stack(app, 'FunctionCapacityProviderMinimalStack');
|
|
8
|
+
|
|
9
|
+
const vpc = new ec2.Vpc(stack, 'Vpc', { maxAzs: 2 });
|
|
10
|
+
const securityGroup = new ec2.SecurityGroup(stack, 'SecurityGroup', { vpc });
|
|
11
|
+
|
|
12
|
+
const capacityProvider = new lambda.CapacityProvider(stack, 'CapacityProvider', {
|
|
13
|
+
subnets: vpc.privateSubnets,
|
|
14
|
+
securityGroups: [securityGroup],
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
const fn = new lambda.Function(stack, 'Function', {
|
|
18
|
+
runtime: lambda.Runtime.NODEJS_LATEST,
|
|
19
|
+
handler: 'index.handler',
|
|
20
|
+
code: lambda.Code.fromInline('exports.handler = async () => ({ statusCode: 200 });'),
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
capacityProvider.addFunction(fn);
|
|
24
|
+
|
|
25
|
+
const testCase = new integ.IntegTest(app, 'FunctionCapacityProviderMinimalTest', {
|
|
26
|
+
testCases: [stack],
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
const getFunction = testCase.assertions.awsApiCall('Lambda', 'GetFunction', {
|
|
30
|
+
FunctionName: fn.functionName,
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
getFunction.expect(integ.ExpectedResult.objectLike({
|
|
34
|
+
Configuration: {
|
|
35
|
+
State: 'Active',
|
|
36
|
+
CapacityProviderConfig: {
|
|
37
|
+
LambdaManagedInstancesCapacityProviderConfig: {
|
|
38
|
+
CapacityProviderArn: capacityProvider.capacityProviderArn,
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
}));
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
2
|
+
import * as lambda from 'aws-cdk-lib/aws-lambda';
|
|
3
|
+
import * as cdk from 'aws-cdk-lib/core';
|
|
4
|
+
import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
5
|
+
|
|
6
|
+
const app = new cdk.App();
|
|
7
|
+
const stack = new cdk.Stack(app, 'VersionScalingConfigAllFieldsStack');
|
|
8
|
+
|
|
9
|
+
const vpc = new ec2.Vpc(stack, 'Vpc', { maxAzs: 2 });
|
|
10
|
+
const securityGroup = new ec2.SecurityGroup(stack, 'SecurityGroup', { vpc });
|
|
11
|
+
|
|
12
|
+
const capacityProvider = new lambda.CapacityProvider(stack, 'CapacityProvider', {
|
|
13
|
+
subnets: vpc.privateSubnets,
|
|
14
|
+
securityGroups: [securityGroup],
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
const fn = new lambda.Function(stack, 'Function', {
|
|
18
|
+
runtime: lambda.Runtime.NODEJS_LATEST,
|
|
19
|
+
handler: 'index.handler',
|
|
20
|
+
code: lambda.Code.fromInline('exports.handler = async () => ({ statusCode: 200 });'),
|
|
21
|
+
currentVersionOptions: {
|
|
22
|
+
minExecutionEnvironments: 1,
|
|
23
|
+
maxExecutionEnvironments: 5,
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
capacityProvider.addFunction(fn);
|
|
28
|
+
|
|
29
|
+
const version = fn.currentVersion;
|
|
30
|
+
|
|
31
|
+
const testCase = new integ.IntegTest(app, 'VersionScalingConfigAllFieldsTest', {
|
|
32
|
+
testCases: [stack],
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
const listVersionsByFunction = testCase.assertions.awsApiCall('Lambda', 'listVersionsByFunction', {
|
|
36
|
+
FunctionName: version.functionArn,
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
listVersionsByFunction.expect(integ.ExpectedResult.objectLike({
|
|
40
|
+
Versions: [
|
|
41
|
+
{
|
|
42
|
+
FunctionScalingConfig: {
|
|
43
|
+
MinExecutionEnvironments: 1,
|
|
44
|
+
MaxExecutionEnvironments: 5,
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
],
|
|
48
|
+
}));
|
|
@@ -12,6 +12,7 @@ class TestStack extends Stack {
|
|
|
12
12
|
opensearch.EngineVersion.OPENSEARCH_2_15,
|
|
13
13
|
opensearch.EngineVersion.OPENSEARCH_2_17,
|
|
14
14
|
opensearch.EngineVersion.OPENSEARCH_3_1,
|
|
15
|
+
opensearch.EngineVersion.OPENSEARCH_3_3,
|
|
15
16
|
];
|
|
16
17
|
|
|
17
18
|
// deploy opensearch domain with minimal configuration
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: konokenj.cdk-api-mcp-server
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.62.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.61.0.dist-info → konokenj_cdk_api_mcp_server-0.62.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=1HnEdNbIjvzh5HqPPiuiu3VNk_w_4fL-cAZh7lzUeCg,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
|
|
@@ -19,8 +19,8 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-eks-v2-alpha/MANUAL
|
|
|
19
19
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-eks-v2-alpha/README.md,sha256=QaTmJ96HpXe5Iu32NOzqzHWi85jD73aCfo9Rks9za28,46202
|
|
20
20
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-elasticache-alpha/README.md,sha256=5rwHuZ0rekBgrFzF1ig9rAxqufypWy8XN8-7y3De0dA,15152
|
|
21
21
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-gamelift-alpha/README.md,sha256=pZqlGXpIekT05CmRYo99QPI-7S1iGtKoNESGryLQFxQ,28324
|
|
22
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-glue-alpha/README.md,sha256=
|
|
23
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-imagebuilder-alpha/README.md,sha256=
|
|
22
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-glue-alpha/README.md,sha256=0DUUl5AU9qy-x3P4cCIStFMcav2hSQMwZuI3aTq9Q2Q,32235
|
|
23
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-imagebuilder-alpha/README.md,sha256=twyVluzV90TomUEOoV77B6tLeBRh9iqsbuV-Km6Q7zE,56806
|
|
24
24
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-iot-actions-alpha/README.md,sha256=R6vkGxu-JjfB1IfGVquiD6Gcn4RQQpgbGo36njBdJe4,11947
|
|
25
25
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-iot-alpha/README.md,sha256=18MkQScFBUO_qZnfYj9wfsdY_vRvvEyar2OT_QbO_N4,6909
|
|
26
26
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-iotevents-actions-alpha/README.md,sha256=0Al2K5gHcEce_cH07YM1GuFFrJ0mrr85ZWGVrj2cs9s,4477
|
|
@@ -489,7 +489,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.d
|
|
|
489
489
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb-v2.ondemand.ts,sha256=d-ltWpXABBdM-K3vtMrM2lciwr7FxsZ11eLWkONqT5k,1996
|
|
490
490
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb-v2.pitr.ts,sha256=CqQDwGeWoLTJ2Ls48EwmBY2JeC07hA6RtNB5dN2O8Mo,1051
|
|
491
491
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb-v2.policy-ff.ts,sha256=-JKTlVKwPcY0tUgTubiDv4c8uhgPU62JaC4QPEoQ0MM,1257
|
|
492
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb-v2.policy.ts,sha256=
|
|
492
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb-v2.policy.ts,sha256=BTMc48qdl0ITSATzZm0NNaU6kS4XkTdhr8TbqgIrM54,1389
|
|
493
493
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb-v2.warm-throughput.ts,sha256=ehV4hj424r-8qGLZDubScpXvR8XVUcm_2Qjicez-mlE,1402
|
|
494
494
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb.add-to-resource-policy.ts,sha256=xxGjEw7a3ZtqQVXkM_rMt297wfE4jaGnbxGwwTYkMHc,4203
|
|
495
495
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb.alarm-metrics.ts,sha256=4hq2piVo7Kl_GdSfhQE7R48uLFXEqfsQN2wNJlODUa8,1321
|
|
@@ -503,7 +503,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.d
|
|
|
503
503
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb.pitr.ts,sha256=2KMxFcbPQ6nSrTmGZISPvLGtgFTrya9XTJExKMpP-mo,847
|
|
504
504
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb.policy.ts,sha256=p43hUlWISLo5slIxfAfH17n77bKiuxkjbcJYyC-yUqM,2580
|
|
505
505
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb.sse.ts,sha256=yhj0Uv2zqqRGo7YoQgAeYb2pdXOOgD9RQ7Li2M4IqqE,5086
|
|
506
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb.ts,sha256=
|
|
506
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb.ts,sha256=BNU9LISAUNgMEiHux_1AJhWuc_gty8aU67sLjsMRkHw,5383
|
|
507
507
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb.warm-throughput.ts,sha256=BvuRnpHDCTS5xJEPuN-7Ns18sLsDLyuaT8l1w04W4s4,1129
|
|
508
508
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.global-replicas-provisioned.ts,sha256=Tu-UKTQ0FMx9iwKK05wW9dZxsWXJKDFG7f06d6zeD2A,1017
|
|
509
509
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.global.ts,sha256=S6FSXFuhFFzq1SZpkk97DElfIaS4O6E9lrorDvTM3jg,1280
|
|
@@ -514,7 +514,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.t
|
|
|
514
514
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.table-v2-replica.ts,sha256=ZmN5tCVGuefUKdewkwcMC_vd1t8mYj0xowKTaAFq3P4,1613
|
|
515
515
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.table-v2.compound.ts,sha256=02z8ojStwkR4JEYiMHDD4VprWGuQQ2pKQMgq5_0rRmQ,1729
|
|
516
516
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.table-with-customized-role.ts,sha256=CDb1V4J2dg5-JCkFHBtF8wmMOoLaQ-6RDpZT9HnnTBg,2048
|
|
517
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/README.md,sha256=
|
|
517
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/README.md,sha256=jANhDBCatQGIdQ2kpH9OJyCuWoFFkKj1XdrDqqsHxK8,103790
|
|
518
518
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/integ.bastion-host-arm-support.ts,sha256=zgJ4WxeOAsMmxDW_kgxCUw9-i-hGFeBRX3Xd0-EMuFI,786
|
|
519
519
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/integ.bastion-host-disable-al2023-feature-flag.ts,sha256=9gX9xZZuubyUZxCAXqctMSymojJoh893yTgqD-Dfo-k,954
|
|
520
520
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/integ.bastion-host-userdatacausesreplacement.ts,sha256=5Vv0q_dk3vtXkam1V9tvu6HcoIv-cUK9pwIHSZvX0ro,1377
|
|
@@ -533,6 +533,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/integ.instan
|
|
|
533
533
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/integ.instance-init-multiple.ts,sha256=Mf0ALf03J4isAX8E5w6FE6_Ir_4DIHlsrQLYjnSjpf4,2295
|
|
534
534
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/integ.instance-init.ts,sha256=oKX_YSUcVuB4qU-hkXEWs3r6O5K4vG_APomQ489TnGc,2428
|
|
535
535
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/integ.instance-ipv6-address-count.ts,sha256=Vn9vBCZcIdMNxJ3ufvZnyWGGtc948o-bZoVjZN4BVhs,1037
|
|
536
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/integ.instance-metadata-options.ts,sha256=8AMpsB0_XUv5mLJhG-lQwyi3-EAhdGw4s6pVNWoiymE,1817
|
|
536
537
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/integ.instance-multipart-userdata.ts,sha256=B6cNZbYG_C7_o_tXtQWe7riC1g1rgphNJhG4OaNXHao,2521
|
|
537
538
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/integ.instance-nitro-enclaves-hibernation.ts,sha256=hkKZmCPczWljgcrJH_qpj1w2SnmrA0l4z9iO5_NO_1U,1599
|
|
538
539
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/integ.instance-placement-group.ts,sha256=9vY1TekfxnmV8ck0YCDrVtl_DsCUMkCYN79TflvHqDg,1006
|
|
@@ -898,14 +899,18 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kms/integ.key-mu
|
|
|
898
899
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kms/integ.key-rotation.ts,sha256=-6eOCNkA5F6_1kRN5txoHlGQ7WYevvDy_uPl02uuM2w,488
|
|
899
900
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kms/integ.key-sharing.lit.ts,sha256=qmYYu5-UgDr7lfWVvP__OjxAHDBhvhBYdAwRnpbj32s,955
|
|
900
901
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kms/integ.key.ts,sha256=9EHcuFYfdBIoJo4zAi6wSioW-_MfxomGNE6f69QHMQU,661
|
|
901
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/README.md,sha256=
|
|
902
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/README.md,sha256=8mxvpKekedMBanwUo4Xj-JsFfSOF3qxQJKoP47GaiOY,70250
|
|
902
903
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.assets.file.ts,sha256=mtLyX3KoFZg6m9zPDlx7eX5CyErzv_CPCD5s9t-rRyk,623
|
|
903
904
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.assets.lit.ts,sha256=NvvrFrgp7vq8pYeNnfl1xOy79r1CgSddvcjlEESFcyw,624
|
|
904
905
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.autoscaling.lit.ts,sha256=OPWHIoRHXA1DbigKLWPea8pFhw0dRPLgSNmaB_rAurk,2184
|
|
905
906
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.binary-payload.ts,sha256=M1-iChWbjd1fw6J_YXLv9gN_jLKkTjSnu2lZmauMKUs,1694
|
|
906
907
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.bundling.docker-opts.ts,sha256=BkOTSKFleHPmaCxLYsCWyERu2AWPRdVTlMoE5Ao398s,1846
|
|
907
908
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.bundling.ts,sha256=0PZcrbNshX6xN_uP2ObYBal2Oyt-I6Zp9R_orEEnMA0,1754
|
|
909
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.capacity-provider-all-fields.ts,sha256=bM9eDbYmLwQgtlNdFoHiTjoCDa5LuOdrfHHKWJffIA4,2203
|
|
910
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.capacity-provider-defaults.ts,sha256=4SYvsSRrxrP2DfHu2r2D1VogF-TQhwmprldMfy69L8k,1197
|
|
908
911
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.current-version.ts,sha256=A8CzCftN7wAgWhffE8F2yk2TRENKbEnXrZDLMJY5z-Y,1074
|
|
912
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.function-capacity-provider-all-fields.ts,sha256=hllPEqKjkYDz8PlkdFYHcJTYe-dEM1DTASKAs-PlFmA,1800
|
|
913
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.function-capacity-provider-minimal.ts,sha256=YLPKZAptrYm0M4XU6ne6cpaYJoL4uZt1OIkTVOEiM0c,1322
|
|
909
914
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.function-url.ts,sha256=QID64PPyMLIQm3RqcLhZauK5tfA3rw2mXQuf-k9n_ro,2474
|
|
910
915
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.lambda-adot.ts,sha256=BtRNrYdnVCU3vsWAWImbqKYf696FNXQQkDuuikXcRZE,3382
|
|
911
916
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.lambda-allow-all-ipv6-outbound.ts,sha256=HV4hGID9Ju6yvEAZiEgokfIO2n-Vv_1aEm2I6tZn7Z4,742
|
|
@@ -936,6 +941,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.run
|
|
|
936
941
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.runtime.fromasset.ts,sha256=-GOWBQKCspzWUJ0xSQB1RUXPxhON5PS1MsxEEhJOuDk,1752
|
|
937
942
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.runtime.inlinecode.ts,sha256=lusXqrK9vdNzEhcRLddoQd23b-2oaKJUAk_mMCc-xrI,3569
|
|
938
943
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.runtimes.ts,sha256=z1IZZX3CzjLnBwzZXn4Ced1T0ppjtOxd7zKfS7M96pE,602
|
|
944
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.version-scaling-config-all-fields.ts,sha256=qMRagRrmUngXBYkoY5fxhlyVbHd_h_I-mz5hTcB2iPY,1423
|
|
939
945
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.vpc-lambda.ts,sha256=omZiVvKZ_W8vrHENnIyFGCnMq4GZWBb5k2dEb62B8z4,585
|
|
940
946
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-destinations/README.md,sha256=_6ZqM3kbkZCmN-9BtU3FbERs82Shv4D2QiWuq47T_VI,5453
|
|
941
947
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-destinations/integ.destinations.ts,sha256=bCxe7DTOSIRyxe2iStWRdl0_J-tQZ8n-715uo9gMHvE,4187
|
|
@@ -1012,7 +1018,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservic
|
|
|
1012
1018
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.gp3.ts,sha256=_YsIdlEllL1v_1YZzpXrwxHMttphlJe_xf11f1_4z3s,1526
|
|
1013
1019
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.https.ts,sha256=enL7r3ppaN_yxoRYse_nCmRrC9qdIcbqMoC_bCRdSLM,1655
|
|
1014
1020
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.ip-address-type.ts,sha256=OeLFqyLYl38FltS_earKPmZ9loassPKmMErTopMwlvE,1136
|
|
1015
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.min.ts,sha256=
|
|
1021
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.min.ts,sha256=mLmayGi_w_CrClK2SMmv5bCMAkUZWtvCMosb4pXEOfM,1156
|
|
1016
1022
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.multiaz-with-standby.ts,sha256=I_g-biRG4nRKXW7gozIp6d00OIzwCw2_Eja3LNZrrkY,891
|
|
1017
1023
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.nodeoptions.ts,sha256=sKineUIZrUMBwMWMps0ryRVxBbbSHs5XlOErcXJ_r6A,1379
|
|
1018
1024
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.ts,sha256=HAxPSl15GNYZuzGEjZhSNgIPoAMXm7YzPocUZ2KYmSU,2087
|
|
@@ -1466,8 +1472,8 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.pipe
|
|
|
1466
1472
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/region-info/README.md,sha256=vewWkV3ds9o9iyyYaJBNTkaKJ2XA6K2yF17tAxUnujg,2718
|
|
1467
1473
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/triggers/README.md,sha256=hYIx7DbG_7p4LYLUfxDwgIQjw9UNdz1GLrqDe8_Dbko,4132
|
|
1468
1474
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/triggers/integ.triggers.ts,sha256=LfeVru_CggiFXKPVa8vwt6Uv43SV3oAioDGmd8PyMHc,2859
|
|
1469
|
-
konokenj_cdk_api_mcp_server-0.
|
|
1470
|
-
konokenj_cdk_api_mcp_server-0.
|
|
1471
|
-
konokenj_cdk_api_mcp_server-0.
|
|
1472
|
-
konokenj_cdk_api_mcp_server-0.
|
|
1473
|
-
konokenj_cdk_api_mcp_server-0.
|
|
1475
|
+
konokenj_cdk_api_mcp_server-0.62.0.dist-info/METADATA,sha256=QEQo-XEX08JCjpisLTYrv2Z5VnMD194vCArFQxo6Cmw,2646
|
|
1476
|
+
konokenj_cdk_api_mcp_server-0.62.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
1477
|
+
konokenj_cdk_api_mcp_server-0.62.0.dist-info/entry_points.txt,sha256=bVDhMdyCC1WNMPOMbmB82jvWII2CIrwTZDygdCf0cYQ,79
|
|
1478
|
+
konokenj_cdk_api_mcp_server-0.62.0.dist-info/licenses/LICENSE.txt,sha256=5OIAASeg1HM22mVZ1enz9bgZ7TlsGfWXnj02P9OgFyk,1098
|
|
1479
|
+
konokenj_cdk_api_mcp_server-0.62.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|