konokenj.cdk-api-mcp-server 0.61.0__py3-none-any.whl → 0.63.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of konokenj.cdk-api-mcp-server might be problematic. Click here for more details.
- cdk_api_mcp_server/__about__.py +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-bedrock-agentcore-alpha/README.md +35 -0
- 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/mixins-preview/README.md +11 -11
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-appconfig/integ.configuration.ts +2 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-autoscaling/integ.asg-instance-termination-policy.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudformation/integ.core-custom-resources-node-18.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudformation/integ.core-custom-resources.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudformation/integ.nested-stack.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudformation/integ.nested-stacks-assets.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudformation/integ.nested-stacks-multi.ts +0 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codebuild/integ.project-fleet-attribute-based-compute.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codebuild/integ.project-fleet-custom-instance-type.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codepipeline-actions/integ.pipeline-code-commit-build.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codepipeline-actions/integ.pipeline-code-commit-custom-event.ts +10 -10
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codepipeline-actions/integ.pipeline-ecs-deploy.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/README.md +8 -8
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/TABLE_V1_API.md +6 -6
- 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-ec2/integ.vpc-dual-stack-ec2.ts +0 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.fargate-with-efs.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-efs/integ.efs-filesystem-policy.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-efs/integ.efs.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-elasticloadbalancing/integ.instanceTarget.elb.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-globalaccelerator/integ.globalaccelerator-endpoints.ts +6 -6
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-globalaccelerator/integ.globalaccelerator-unique-name.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/README.md +210 -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.durable-config.ts +19 -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.lambda.filesystem.ts +1 -1
- 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
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53/README.md +30 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53/integ.failover-record.ts +48 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53-targets/integ.appsync-target.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.call-aws-service-cross-region.ts +7 -7
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.emr-create-cluster-with-v2-policy.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.newpipeline-with-codebuild-logging.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.newpipeline-with-codestar-connection.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.newpipeline-with-cross-region-replication-buckets.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.newpipeline-with-vpc.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.newpipeline.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.pipeline-with-artifact-bucket.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.pipeline-with-variables.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.pipeline-without-prepare.ts +1 -1
- {konokenj_cdk_api_mcp_server-0.61.0.dist-info → konokenj_cdk_api_mcp_server-0.63.0.dist-info}/METADATA +2 -2
- {konokenj_cdk_api_mcp_server-0.61.0.dist-info → konokenj_cdk_api_mcp_server-0.63.0.dist-info}/RECORD +57 -49
- {konokenj_cdk_api_mcp_server-0.61.0.dist-info → konokenj_cdk_api_mcp_server-0.63.0.dist-info}/WHEEL +1 -1
- {konokenj_cdk_api_mcp_server-0.61.0.dist-info → konokenj_cdk_api_mcp_server-0.63.0.dist-info}/entry_points.txt +0 -0
- {konokenj_cdk_api_mcp_server-0.61.0.dist-info → konokenj_cdk_api_mcp_server-0.63.0.dist-info}/licenses/LICENSE.txt +0 -0
cdk_api_mcp_server/__about__.py
CHANGED
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-bedrock-agentcore-alpha/README.md
CHANGED
|
@@ -249,6 +249,41 @@ const runtimeInstance = new agentcore.Runtime(this, "MyAgentRuntime", {
|
|
|
249
249
|
});
|
|
250
250
|
```
|
|
251
251
|
|
|
252
|
+
#### Option 4: Use an ECR container image URI
|
|
253
|
+
|
|
254
|
+
Reference an ECR container image directly by its URI. This is useful when you have a pre-existing ECR image URI from CloudFormation parameters or cross-stack references. No IAM permissions are automatically granted - you must ensure the runtime has ECR pull permissions.
|
|
255
|
+
|
|
256
|
+
```typescript fixture=default
|
|
257
|
+
// Direct URI reference
|
|
258
|
+
const agentRuntimeArtifact = agentcore.AgentRuntimeArtifact.fromImageUri(
|
|
259
|
+
"123456789012.dkr.ecr.us-east-1.amazonaws.com/my-agent:v1.0.0"
|
|
260
|
+
);
|
|
261
|
+
|
|
262
|
+
const runtime = new agentcore.Runtime(this, "MyAgentRuntime", {
|
|
263
|
+
runtimeName: "myAgent",
|
|
264
|
+
agentRuntimeArtifact: agentRuntimeArtifact,
|
|
265
|
+
});
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
You can also use CloudFormation parameters or references:
|
|
269
|
+
|
|
270
|
+
```typescript fixture=default
|
|
271
|
+
// Using a CloudFormation parameter
|
|
272
|
+
const imageUriParam = new cdk.CfnParameter(this, "ImageUri", {
|
|
273
|
+
type: "String",
|
|
274
|
+
description: "Container image URI for the agent runtime",
|
|
275
|
+
});
|
|
276
|
+
|
|
277
|
+
const agentRuntimeArtifact = agentcore.AgentRuntimeArtifact.fromImageUri(
|
|
278
|
+
imageUriParam.valueAsString
|
|
279
|
+
);
|
|
280
|
+
|
|
281
|
+
const runtime = new agentcore.Runtime(this, "MyAgentRuntime", {
|
|
282
|
+
runtimeName: "myAgent",
|
|
283
|
+
agentRuntimeArtifact: agentRuntimeArtifact,
|
|
284
|
+
});
|
|
285
|
+
```
|
|
286
|
+
|
|
252
287
|
### Granting Permissions to Invoke Bedrock Models or Inference Profiles
|
|
253
288
|
|
|
254
289
|
To grant the runtime permissions to invoke Bedrock models or inference profiles:
|
|
@@ -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
|
```
|
|
@@ -95,11 +95,11 @@ Mixins operate on construct trees and can be applied selectively:
|
|
|
95
95
|
Mixins.of(scope).apply(new EncryptionAtRest());
|
|
96
96
|
|
|
97
97
|
// Apply to specific resource types
|
|
98
|
-
Mixins.of(scope, ConstructSelector.resourcesOfType(s3.CfnBucket))
|
|
98
|
+
Mixins.of(scope, ConstructSelector.resourcesOfType(s3.CfnBucket.CFN_RESOURCE_TYPE_NAME))
|
|
99
99
|
.apply(new EncryptionAtRest());
|
|
100
100
|
|
|
101
|
-
// Apply to constructs matching a pattern
|
|
102
|
-
Mixins.of(scope, ConstructSelector.
|
|
101
|
+
// Apply to constructs matching a path pattern
|
|
102
|
+
Mixins.of(scope, ConstructSelector.byPath("**/*-prod-*/**"))
|
|
103
103
|
.apply(new ProductionSecurityMixin());
|
|
104
104
|
```
|
|
105
105
|
|
|
@@ -140,7 +140,7 @@ Configures vended logs delivery for supported resources to various destinations:
|
|
|
140
140
|
|
|
141
141
|
```typescript
|
|
142
142
|
import '@aws-cdk/mixins-preview/with';
|
|
143
|
-
import * as cloudfrontMixins from '@aws-cdk/mixins-preview/
|
|
143
|
+
import * as cloudfrontMixins from '@aws-cdk/mixins-preview/aws-cloudfront/mixins';
|
|
144
144
|
|
|
145
145
|
// Create CloudFront distribution
|
|
146
146
|
declare const bucket: s3.Bucket;
|
|
@@ -197,9 +197,9 @@ Mixins.of(bucket).apply(new CfnBucketPropsMixin(
|
|
|
197
197
|
Property mixins are available for all AWS services:
|
|
198
198
|
|
|
199
199
|
```typescript
|
|
200
|
-
import { CfnLogGroupPropsMixin } from '@aws-cdk/mixins-preview/
|
|
201
|
-
import { CfnFunctionPropsMixin } from '@aws-cdk/mixins-preview/
|
|
202
|
-
import { CfnTablePropsMixin } from '@aws-cdk/mixins-preview/
|
|
200
|
+
import { CfnLogGroupPropsMixin } from '@aws-cdk/mixins-preview/aws-logs/mixins';
|
|
201
|
+
import { CfnFunctionPropsMixin } from '@aws-cdk/mixins-preview/aws-lambda/mixins';
|
|
202
|
+
import { CfnTablePropsMixin } from '@aws-cdk/mixins-preview/aws-dynamodb/mixins';
|
|
203
203
|
```
|
|
204
204
|
|
|
205
205
|
### Error Handling
|
|
@@ -225,7 +225,7 @@ CDK Mixins automatically generates typed EventBridge event patterns for AWS reso
|
|
|
225
225
|
### Event Patterns Basic Usage
|
|
226
226
|
|
|
227
227
|
```typescript
|
|
228
|
-
import { BucketEvents } from '@aws-cdk/mixins-preview/
|
|
228
|
+
import { BucketEvents } from '@aws-cdk/mixins-preview/aws-s3/events';
|
|
229
229
|
import * as events from 'aws-cdk-lib/aws-events';
|
|
230
230
|
import * as targets from 'aws-cdk-lib/aws-events-targets';
|
|
231
231
|
|
|
@@ -259,7 +259,7 @@ new events.CfnRule(scope, 'CfnRule', {
|
|
|
259
259
|
**Automatic Resource Injection**: Resource identifiers are automatically included in patterns
|
|
260
260
|
|
|
261
261
|
```typescript
|
|
262
|
-
import { BucketEvents } from '@aws-cdk/mixins-preview/
|
|
262
|
+
import { BucketEvents } from '@aws-cdk/mixins-preview/aws-s3/events';
|
|
263
263
|
|
|
264
264
|
declare const bucket: s3.Bucket;
|
|
265
265
|
const bucketEvents = BucketEvents.fromBucket(bucket);
|
|
@@ -272,7 +272,7 @@ const pattern = bucketEvents.objectCreatedPattern();
|
|
|
272
272
|
**Event Metadata Support**: Control EventBridge pattern metadata
|
|
273
273
|
|
|
274
274
|
```typescript
|
|
275
|
-
import { BucketEvents } from '@aws-cdk/mixins-preview/
|
|
275
|
+
import { BucketEvents } from '@aws-cdk/mixins-preview/aws-s3/events';
|
|
276
276
|
|
|
277
277
|
declare const bucket: s3.Bucket;
|
|
278
278
|
const bucketEvents = BucketEvents.fromBucket(bucket);
|
|
@@ -299,5 +299,5 @@ Event patterns are generated for EventBridge events available in the AWS Event S
|
|
|
299
299
|
Import events from service-specific modules:
|
|
300
300
|
|
|
301
301
|
```typescript
|
|
302
|
-
import { BucketEvents } from '@aws-cdk/mixins-preview/
|
|
302
|
+
import { BucketEvents } from '@aws-cdk/mixins-preview/aws-s3/events';
|
|
303
303
|
```
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-appconfig/integ.configuration.ts
CHANGED
|
@@ -24,13 +24,13 @@ import {
|
|
|
24
24
|
import * as path from 'path';
|
|
25
25
|
|
|
26
26
|
const SCHEMA_STR =
|
|
27
|
-
`{
|
|
27
|
+
`{
|
|
28
28
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
29
29
|
"type": "string"
|
|
30
30
|
}`;
|
|
31
31
|
|
|
32
32
|
const LAMBDA_CODE =
|
|
33
|
-
`
|
|
33
|
+
`
|
|
34
34
|
def handler(event, context):
|
|
35
35
|
print('This is my dummy validator')
|
|
36
36
|
`;
|
|
@@ -56,7 +56,7 @@ function asgHandler(_event: any, _context: any, callback: any) {
|
|
|
56
56
|
json.Instances.forEach((instance: any) => {
|
|
57
57
|
instanceIds.push(instance.InstanceId);
|
|
58
58
|
});
|
|
59
|
-
// eslint-disable-next-line quote-props
|
|
59
|
+
// eslint-disable-next-line @stylistic/quote-props
|
|
60
60
|
const result = { 'InstanceIDs': instanceIds };
|
|
61
61
|
return callback(undefined, result);
|
|
62
62
|
}
|
|
@@ -10,8 +10,6 @@ import { App, CfnOutput, CustomResource, CustomResourceProvider, CustomResourceP
|
|
|
10
10
|
import { Construct } from 'constructs';
|
|
11
11
|
import { IntegTest } from '@aws-cdk/integ-tests-alpha';
|
|
12
12
|
|
|
13
|
-
/* eslint-disable @cdklabs/no-core-construct */
|
|
14
|
-
|
|
15
13
|
class TestStack extends Stack {
|
|
16
14
|
constructor(scope: Construct, id: string) {
|
|
17
15
|
super(scope, id);
|
|
@@ -10,8 +10,6 @@ import { App, CfnOutput, CustomResource, CustomResourceProvider, Stack, Token }
|
|
|
10
10
|
import { Construct } from 'constructs';
|
|
11
11
|
import { STANDARD_CUSTOM_RESOURCE_PROVIDER_RUNTIME } from '../../config';
|
|
12
12
|
|
|
13
|
-
/* eslint-disable @cdklabs/no-core-construct */
|
|
14
|
-
|
|
15
13
|
class TestStack extends Stack {
|
|
16
14
|
constructor(scope: Construct, id: string) {
|
|
17
15
|
super(scope, id);
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudformation/integ.nested-stack.ts
CHANGED
|
@@ -6,8 +6,6 @@ import { App, CfnParameter, NestedStack, Stack } from 'aws-cdk-lib';
|
|
|
6
6
|
import { Construct } from 'constructs';
|
|
7
7
|
import { STANDARD_NODEJS_RUNTIME } from '../../config';
|
|
8
8
|
|
|
9
|
-
/* eslint-disable @cdklabs/no-core-construct */
|
|
10
|
-
|
|
11
9
|
interface MyNestedStackProps {
|
|
12
10
|
readonly subscriber?: sqs.Queue;
|
|
13
11
|
readonly siblingTopic?: sns.Topic; // a topic defined in a sibling nested stack
|
|
@@ -4,8 +4,6 @@ import { App, NestedStack, Stack } from 'aws-cdk-lib';
|
|
|
4
4
|
import { Construct } from 'constructs';
|
|
5
5
|
import { STANDARD_NODEJS_RUNTIME } from '../../config';
|
|
6
6
|
|
|
7
|
-
/* eslint-disable @cdklabs/no-core-construct */
|
|
8
|
-
|
|
9
7
|
class MyNestedStack extends NestedStack {
|
|
10
8
|
constructor(scope: Construct, id: string) {
|
|
11
9
|
super(scope, id);
|
|
@@ -2,8 +2,6 @@ import * as sns from 'aws-cdk-lib/aws-sns';
|
|
|
2
2
|
import { App, NestedStack, Stack } from 'aws-cdk-lib';
|
|
3
3
|
import { Construct } from 'constructs';
|
|
4
4
|
|
|
5
|
-
/* eslint-disable @cdklabs/no-core-construct */
|
|
6
|
-
|
|
7
5
|
class YourNestedStack extends NestedStack {
|
|
8
6
|
constructor(scope: Construct, id: string) {
|
|
9
7
|
super(scope, id);
|
|
@@ -4,7 +4,7 @@ import * as codepipeline from 'aws-cdk-lib/aws-codepipeline';
|
|
|
4
4
|
import * as cdk from 'aws-cdk-lib';
|
|
5
5
|
import * as cpactions from 'aws-cdk-lib/aws-codepipeline-actions';
|
|
6
6
|
|
|
7
|
-
/* eslint-disable quote-props */
|
|
7
|
+
/* eslint-disable @stylistic/quote-props */
|
|
8
8
|
|
|
9
9
|
const app = new cdk.App({
|
|
10
10
|
postCliContext: {
|
|
@@ -24,16 +24,16 @@ const repo = new codecommit.Repository(stack, 'MyRepo', {
|
|
|
24
24
|
});
|
|
25
25
|
|
|
26
26
|
const eventPattern
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
27
|
+
= {
|
|
28
|
+
'detail-type': ['CodeCommit Repository State Change'],
|
|
29
|
+
'resources': [repo.repositoryArn],
|
|
30
|
+
'source': ['aws.codecommit'],
|
|
31
|
+
'detail': {
|
|
32
|
+
referenceType: ['branch'],
|
|
33
|
+
event: ['referenceCreated', 'referenceUpdated'],
|
|
34
|
+
referenceName: [branch],
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
37
|
|
|
38
38
|
const pipeline = new codepipeline.Pipeline(stack, 'Pipeline', {
|
|
39
39
|
pipelineName: 'IntegCustomEventPipeline',
|
|
@@ -7,7 +7,7 @@ import * as s3 from 'aws-cdk-lib/aws-s3';
|
|
|
7
7
|
import * as cdk from 'aws-cdk-lib';
|
|
8
8
|
import * as cpactions from 'aws-cdk-lib/aws-codepipeline-actions';
|
|
9
9
|
|
|
10
|
-
/* eslint-disable quote-props */
|
|
10
|
+
/* eslint-disable @stylistic/quote-props */
|
|
11
11
|
|
|
12
12
|
const app = new cdk.App({
|
|
13
13
|
postCliContext: {
|
|
@@ -404,9 +404,9 @@ const table = new dynamodb.TableV2(this, 'Table', {
|
|
|
404
404
|
});
|
|
405
405
|
```
|
|
406
406
|
|
|
407
|
-
####
|
|
407
|
+
#### Multi-attribute Keys
|
|
408
408
|
|
|
409
|
-
Global secondary indexes support
|
|
409
|
+
Global secondary indexes support multi-attribute keys, allowing you to specify multiple partition keys and/or multiple sort keys. This enables more flexible query patterns for complex data models.
|
|
410
410
|
|
|
411
411
|
**Key Constraints:**
|
|
412
412
|
- You can specify up to **4 partition keys** per global secondary index
|
|
@@ -417,14 +417,14 @@ Global secondary indexes support compound keys, allowing you to specify multiple
|
|
|
417
417
|
- For multiple keys, you **must** use the plural parameters (`partitionKeys` and/or `sortKeys`)
|
|
418
418
|
- **Keys cannot be added or modified after index creation** - attempting to add additional keys to an existing index will result in an error
|
|
419
419
|
|
|
420
|
-
**Example with
|
|
420
|
+
**Example with multi-attribute partition and sort keys:**
|
|
421
421
|
|
|
422
422
|
```ts
|
|
423
423
|
const table = new dynamodb.TableV2(this, 'Table', {
|
|
424
424
|
partitionKey: { name: 'pk', type: dynamodb.AttributeType.STRING },
|
|
425
425
|
globalSecondaryIndexes: [
|
|
426
426
|
{
|
|
427
|
-
indexName: '
|
|
427
|
+
indexName: 'multi-attribute-gsi',
|
|
428
428
|
partitionKeys: [
|
|
429
429
|
{ name: 'gsi_pk1', type: dynamodb.AttributeType.STRING },
|
|
430
430
|
{ name: 'gsi_pk2', type: dynamodb.AttributeType.NUMBER },
|
|
@@ -456,12 +456,12 @@ table.addGlobalSecondaryIndex({
|
|
|
456
456
|
partitionKey: { name: 'pk', type: dynamodb.AttributeType.STRING },
|
|
457
457
|
});
|
|
458
458
|
|
|
459
|
-
// Add a GSI with
|
|
459
|
+
// Add a GSI with multi-attribute keys
|
|
460
460
|
table.addGlobalSecondaryIndex({
|
|
461
|
-
indexName: '
|
|
461
|
+
indexName: 'multi-attribute-gsi2',
|
|
462
462
|
partitionKeys: [
|
|
463
|
-
{ name: '
|
|
464
|
-
{ name: '
|
|
463
|
+
{ name: 'multi-attribute_pk1', type: dynamodb.AttributeType.STRING },
|
|
464
|
+
{ name: 'multi-attribute_pk2', type: dynamodb.AttributeType.NUMBER },
|
|
465
465
|
],
|
|
466
466
|
sortKey: { name: 'sk', type: dynamodb.AttributeType.STRING },
|
|
467
467
|
});
|