konokenj.cdk-api-mcp-server 0.33.0__py3-none-any.whl → 0.35.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-alpha/README.md +201 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-autoscaling/integ.asg-lt.ts +7 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/README.md +19 -11
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/integ.search-expression.ts +51 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/README.md +87 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.blue-green-deployment-strategy.ts +205 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.cluster-windows-server-ami.ts +5 -6
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/README.md +61 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.loggroup-transformer.ts +37 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.transformer.ts +27 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/README.md +14 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.instance-database-insights.ts +43 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-cross-nested-stack-source.ts +58 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-cross-stack-source.ts +48 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/core/README.md +24 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/README.md +3 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/FEATURE_FLAGS.md +2 -2
- {konokenj_cdk_api_mcp_server-0.33.0.dist-info → konokenj_cdk_api_mcp_server-0.35.0.dist-info}/METADATA +2 -2
- {konokenj_cdk_api_mcp_server-0.33.0.dist-info → konokenj_cdk_api_mcp_server-0.35.0.dist-info}/RECORD +23 -16
- {konokenj_cdk_api_mcp_server-0.33.0.dist-info → konokenj_cdk_api_mcp_server-0.35.0.dist-info}/WHEEL +0 -0
- {konokenj_cdk_api_mcp_server-0.33.0.dist-info → konokenj_cdk_api_mcp_server-0.35.0.dist-info}/entry_points.txt +0 -0
- {konokenj_cdk_api_mcp_server-0.33.0.dist-info → konokenj_cdk_api_mcp_server-0.35.0.dist-info}/licenses/LICENSE.txt +0 -0
cdk_api_mcp_server/__about__.py
CHANGED
|
@@ -35,6 +35,14 @@ This construct library facilitates the deployment of Bedrock Agents, enabling yo
|
|
|
35
35
|
- [Agent Collaboration](#agent-collaboration)
|
|
36
36
|
- [Custom Orchestration](#custom-orchestration)
|
|
37
37
|
- [Agent Alias](#agent-alias)
|
|
38
|
+
- [Prompts](#prompts)
|
|
39
|
+
- [Prompt Variants](#prompt-variants)
|
|
40
|
+
- [Basic Text Prompt](#basic-text-prompt)
|
|
41
|
+
- [Chat Prompt](#chat-prompt)
|
|
42
|
+
- [Agent Prompt](#agent-prompt)
|
|
43
|
+
- [Prompt Properties](#prompt-properties)
|
|
44
|
+
- [Prompt Version](#prompt-version)
|
|
45
|
+
- [Import Methods](#import-methods)
|
|
38
46
|
|
|
39
47
|
## Agents
|
|
40
48
|
|
|
@@ -606,3 +614,196 @@ const agentAlias = new bedrock.AgentAlias(this, 'myAlias', {
|
|
|
606
614
|
description: `Production version of my agent. Created at ${agent.lastUpdated}` // ensure the version update
|
|
607
615
|
});
|
|
608
616
|
```
|
|
617
|
+
|
|
618
|
+
## Prompts
|
|
619
|
+
|
|
620
|
+
Amazon Bedrock provides the ability to create and save prompts using Prompt management so that you can save time by applying the same prompt to different workflows. You can include variables in the prompt so that you can adjust the prompt for different use case.
|
|
621
|
+
|
|
622
|
+
The `Prompt` resource allows you to create a new prompt.
|
|
623
|
+
|
|
624
|
+
### Prompt Variants
|
|
625
|
+
|
|
626
|
+
Prompt variants in the context of Amazon Bedrock refer to alternative configurations of a prompt, including its message or the model and inference configurations used. Prompt variants are the building blocks of prompts - you must create at least one prompt variant to create a prompt. Prompt variants allow you to create different versions of a prompt, test them, and save the variant that works best for your use case.
|
|
627
|
+
|
|
628
|
+
There are three types of prompt variants:
|
|
629
|
+
|
|
630
|
+
- **Basic Text Prompt**: Simple text-based prompts for straightforward interactions
|
|
631
|
+
- **Chat variant**: Conversational prompts that support system messages, user/assistant message history, and tools
|
|
632
|
+
- **Agent variant**: Prompts designed to work with Bedrock Agents
|
|
633
|
+
|
|
634
|
+
### Basic Text Prompt
|
|
635
|
+
|
|
636
|
+
Text prompts are the simplest form of prompts, consisting of plain text instructions with optional variables. They are ideal for straightforward tasks like summarization, content generation, or question answering where you need a direct text-based interaction with the model.
|
|
637
|
+
|
|
638
|
+
```ts fixture=default
|
|
639
|
+
const cmk = new kms.Key(this, 'cmk', {});
|
|
640
|
+
const claudeModel = bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_SONNET_V1_0;
|
|
641
|
+
|
|
642
|
+
const variant1 = bedrock.PromptVariant.text({
|
|
643
|
+
variantName: 'variant1',
|
|
644
|
+
model: claudeModel,
|
|
645
|
+
promptVariables: ['topic'],
|
|
646
|
+
promptText: 'This is my first text prompt. Please summarize our conversation on: {{topic}}.',
|
|
647
|
+
inferenceConfiguration: bedrock.PromptInferenceConfiguration.text({
|
|
648
|
+
temperature: 1.0,
|
|
649
|
+
topP: 0.999,
|
|
650
|
+
maxTokens: 2000,
|
|
651
|
+
}),
|
|
652
|
+
});
|
|
653
|
+
|
|
654
|
+
const prompt1 = new bedrock.Prompt(this, 'prompt1', {
|
|
655
|
+
promptName: 'prompt1',
|
|
656
|
+
description: 'my first prompt',
|
|
657
|
+
defaultVariant: variant1,
|
|
658
|
+
variants: [variant1],
|
|
659
|
+
kmsKey: cmk,
|
|
660
|
+
});
|
|
661
|
+
```
|
|
662
|
+
|
|
663
|
+
### Chat Prompt
|
|
664
|
+
|
|
665
|
+
Use this template type when the model supports the Converse API or the Anthropic Claude Messages API. This allows you to include a System prompt and previous User messages and Assistant messages for context.
|
|
666
|
+
|
|
667
|
+
```ts fixture=default
|
|
668
|
+
const cmk = new kms.Key(this, 'cmk', {});
|
|
669
|
+
|
|
670
|
+
const variantChat = bedrock.PromptVariant.chat({
|
|
671
|
+
variantName: 'variant1',
|
|
672
|
+
model: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_3_5_SONNET_V1_0,
|
|
673
|
+
messages: [
|
|
674
|
+
bedrock.ChatMessage.user('From now on, you speak Japanese!'),
|
|
675
|
+
bedrock.ChatMessage.assistant('Konnichiwa!'),
|
|
676
|
+
bedrock.ChatMessage.user('From now on, you speak {{language}}!'),
|
|
677
|
+
],
|
|
678
|
+
system: 'You are a helpful assistant that only speaks the language you`re told.',
|
|
679
|
+
promptVariables: ['language'],
|
|
680
|
+
toolConfiguration: {
|
|
681
|
+
toolChoice: bedrock.ToolChoice.AUTO,
|
|
682
|
+
tools: [
|
|
683
|
+
bedrock.Tool.function({
|
|
684
|
+
name: 'top_song',
|
|
685
|
+
description: 'Get the most popular song played on a radio station.',
|
|
686
|
+
inputSchema: {
|
|
687
|
+
type: 'object',
|
|
688
|
+
properties: {
|
|
689
|
+
sign: {
|
|
690
|
+
type: 'string',
|
|
691
|
+
description: 'The call sign for the radio station for which you want the most popular song. Example calls signs are WZPZ and WKR.',
|
|
692
|
+
},
|
|
693
|
+
},
|
|
694
|
+
required: ['sign'],
|
|
695
|
+
},
|
|
696
|
+
}),
|
|
697
|
+
],
|
|
698
|
+
},
|
|
699
|
+
});
|
|
700
|
+
|
|
701
|
+
new bedrock.Prompt(this, 'prompt1', {
|
|
702
|
+
promptName: 'prompt-chat',
|
|
703
|
+
description: 'my first chat prompt',
|
|
704
|
+
defaultVariant: variantChat,
|
|
705
|
+
variants: [variantChat],
|
|
706
|
+
kmsKey: cmk,
|
|
707
|
+
});
|
|
708
|
+
```
|
|
709
|
+
|
|
710
|
+
### Agent Prompt
|
|
711
|
+
|
|
712
|
+
Agent prompts are designed to work with Bedrock Agents, allowing you to create prompts that can be used by agents to perform specific tasks. Agent prompts use text prompts as their foundation and can reference agent aliases and include custom instructions for how the agent should behave.
|
|
713
|
+
|
|
714
|
+
```ts fixture=default
|
|
715
|
+
const cmk = new kms.Key(this, 'cmk', {});
|
|
716
|
+
|
|
717
|
+
// Assuming you have an existing agent and alias
|
|
718
|
+
const agent = bedrock.Agent.fromAgentAttributes(this, 'ImportedAgent', {
|
|
719
|
+
agentArn: 'arn:aws:bedrock:region:account:agent/agent-id',
|
|
720
|
+
roleArn: 'arn:aws:iam::account:role/agent-role',
|
|
721
|
+
});
|
|
722
|
+
|
|
723
|
+
const agentAlias = bedrock.AgentAlias.fromAttributes(this, 'ImportedAlias', {
|
|
724
|
+
aliasId: 'alias-id',
|
|
725
|
+
aliasName: 'my-alias',
|
|
726
|
+
agentVersion: '1',
|
|
727
|
+
agent: agent,
|
|
728
|
+
});
|
|
729
|
+
|
|
730
|
+
const agentVariant = bedrock.PromptVariant.agent({
|
|
731
|
+
variantName: 'agent-variant',
|
|
732
|
+
model: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_3_5_SONNET_V1_0,
|
|
733
|
+
agentAlias: agentAlias,
|
|
734
|
+
promptText: 'Use the agent to help with: {{task}}. Please be thorough and provide detailed explanations.',
|
|
735
|
+
promptVariables: ['task'],
|
|
736
|
+
});
|
|
737
|
+
|
|
738
|
+
new bedrock.Prompt(this, 'agentPrompt', {
|
|
739
|
+
promptName: 'agent-prompt',
|
|
740
|
+
description: 'Prompt for agent interactions',
|
|
741
|
+
defaultVariant: agentVariant,
|
|
742
|
+
variants: [agentVariant],
|
|
743
|
+
kmsKey: cmk,
|
|
744
|
+
});
|
|
745
|
+
```
|
|
746
|
+
|
|
747
|
+
### Prompt Properties
|
|
748
|
+
|
|
749
|
+
| Property | Type | Required | Description |
|
|
750
|
+
|----------|------|----------|-------------|
|
|
751
|
+
| promptName | string | Yes | The name of the prompt |
|
|
752
|
+
| description | string | No | A description of the prompt |
|
|
753
|
+
| defaultVariant | PromptVariant | Yes | The default variant to use for the prompt |
|
|
754
|
+
| variants | PromptVariant[] | No | Additional variants for the prompt |
|
|
755
|
+
| kmsKey | kms.IKey | No | The KMS key to use for encrypting the prompt. Defaults to AWS managed key |
|
|
756
|
+
| tags | Record<string, string> | No | Tags to apply to the prompt |
|
|
757
|
+
|
|
758
|
+
### Prompt Version
|
|
759
|
+
|
|
760
|
+
A prompt version is a snapshot of a prompt at a specific point in time that you create when you are satisfied with a set of configurations. Versions allow you to deploy your prompt and easily switch between different configurations for your prompt and update your application with the most appropriate version for your use-case.
|
|
761
|
+
|
|
762
|
+
You can create a Prompt version by using the PromptVersion class or by using the .createVersion(..) on a Prompt object. It is recommended to use the .createVersion(..) method. It uses a hash based mechanism to update the version whenever a certain configuration property changes.
|
|
763
|
+
|
|
764
|
+
```ts fixture=default
|
|
765
|
+
const cmk = new kms.Key(this, 'cmk', {});
|
|
766
|
+
const claudeModel = bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_SONNET_V1_0;
|
|
767
|
+
|
|
768
|
+
const variant1 = bedrock.PromptVariant.text({
|
|
769
|
+
variantName: 'variant1',
|
|
770
|
+
model: claudeModel,
|
|
771
|
+
promptVariables: ['topic'],
|
|
772
|
+
promptText: 'This is my first text prompt. Please summarize our conversation on: {{topic}}.',
|
|
773
|
+
inferenceConfiguration: bedrock.PromptInferenceConfiguration.text({
|
|
774
|
+
temperature: 1.0,
|
|
775
|
+
topP: 0.999,
|
|
776
|
+
maxTokens: 2000,
|
|
777
|
+
}),
|
|
778
|
+
});
|
|
779
|
+
|
|
780
|
+
const prompt1 = new bedrock.Prompt(this, 'prompt1', {
|
|
781
|
+
promptName: 'prompt1',
|
|
782
|
+
description: 'my first prompt',
|
|
783
|
+
defaultVariant: variant1,
|
|
784
|
+
variants: [variant1],
|
|
785
|
+
kmsKey: cmk,
|
|
786
|
+
});
|
|
787
|
+
|
|
788
|
+
const promptVersion = new bedrock.PromptVersion(this, 'MyPromptVersion', {
|
|
789
|
+
prompt: prompt1,
|
|
790
|
+
description: 'my first version',
|
|
791
|
+
});
|
|
792
|
+
//or alternatively:
|
|
793
|
+
// const promptVersion = prompt1.createVersion('my first version');
|
|
794
|
+
const versionString = promptVersion.version;
|
|
795
|
+
|
|
796
|
+
```
|
|
797
|
+
|
|
798
|
+
### Import Methods
|
|
799
|
+
|
|
800
|
+
You can use the `fromPromptAttributes` method to import an existing Bedrock Prompt into your CDK application.
|
|
801
|
+
|
|
802
|
+
```ts fixture=default
|
|
803
|
+
// Import an existing prompt by ARN
|
|
804
|
+
const importedPrompt = bedrock.Prompt.fromPromptAttributes(this, 'ImportedPrompt', {
|
|
805
|
+
promptArn: 'arn:aws:bedrock:region:account:prompt/prompt-id',
|
|
806
|
+
kmsKey: kms.Key.fromKeyArn(this, 'ImportedKey', 'arn:aws:kms:region:account:key/key-id'), // optional
|
|
807
|
+
promptVersion: '1', // optional, defaults to 'DRAFT'
|
|
808
|
+
});
|
|
809
|
+
```
|
|
@@ -129,4 +129,11 @@ new autoscaling.AutoScalingGroup(stack, 'AsgWithIMDSv2', {
|
|
|
129
129
|
vpc,
|
|
130
130
|
});
|
|
131
131
|
|
|
132
|
+
new autoscaling.AutoScalingGroup(stack, 'AsgFromMigrationToLT', {
|
|
133
|
+
vpc,
|
|
134
|
+
launchTemplate: lt,
|
|
135
|
+
migrateToLaunchTemplate: true,
|
|
136
|
+
updatePolicy: autoscaling.UpdatePolicy.rollingUpdate(),
|
|
137
|
+
});
|
|
138
|
+
|
|
132
139
|
app.synth();
|
|
@@ -146,19 +146,18 @@ const errorRate = new cloudwatch.MathExpression({
|
|
|
146
146
|
|
|
147
147
|
### Search Expressions
|
|
148
148
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
149
|
+
Search expressions allow you to dynamically discover and display metrics that match specific criteria, making them ideal for monitoring dynamic infrastructure where the exact metrics aren't known in advance. A single search expression can return up to 500 time series.
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
#### Using SearchExpression Class
|
|
153
|
+
|
|
154
|
+
Following is an example of a search expression that returns all CPUUtilization metrics with the graph showing the Average statistic with an aggregation period of 5 minutes:
|
|
152
155
|
|
|
153
156
|
```ts
|
|
154
|
-
const cpuUtilization = new cloudwatch.
|
|
155
|
-
expression: "SEARCH('{AWS/EC2,InstanceId} MetricName=\"CPUUtilization\"', 'Average',
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
// of using the expression as metric label. This is especially appropriate
|
|
159
|
-
// when using expressions that return multiple time series (like SEARCH()
|
|
160
|
-
// or METRICS()), to show the labels of the retrieved metrics only.
|
|
161
|
-
label: '',
|
|
157
|
+
const cpuUtilization = new cloudwatch.SearchExpression({
|
|
158
|
+
expression: "SEARCH('{AWS/EC2,InstanceId} MetricName=\"CPUUtilization\"', 'Average', 900)",
|
|
159
|
+
label: 'EC2 CPU Utilization',
|
|
160
|
+
color: '#ff7f0e',
|
|
162
161
|
});
|
|
163
162
|
```
|
|
164
163
|
|
|
@@ -166,6 +165,15 @@ Cross-account and cross-region search expressions are also supported. Use
|
|
|
166
165
|
the `searchAccount` and `searchRegion` properties to specify the account
|
|
167
166
|
and/or region to evaluate the search expression against.
|
|
168
167
|
|
|
168
|
+
```ts
|
|
169
|
+
const crossAccountSearch = new cloudwatch.SearchExpression({
|
|
170
|
+
expression: "SEARCH('{AWS/Lambda,FunctionName} MetricName=\"Invocations\"', 'Sum', 300)",
|
|
171
|
+
searchAccount: '123456789012',
|
|
172
|
+
searchRegion: 'us-west-2',
|
|
173
|
+
label: 'Production Lambda Invocations',
|
|
174
|
+
});
|
|
175
|
+
```
|
|
176
|
+
|
|
169
177
|
### Aggregation
|
|
170
178
|
|
|
171
179
|
To graph or alarm on metrics you must aggregate them first, using a function
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { IntegTest } from '@aws-cdk/integ-tests-alpha';
|
|
2
|
+
import * as cdk from 'aws-cdk-lib';
|
|
3
|
+
import * as cloudwatch from 'aws-cdk-lib/aws-cloudwatch';
|
|
4
|
+
|
|
5
|
+
class SearchExpressionStack extends cdk.Stack {
|
|
6
|
+
constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
|
|
7
|
+
super(scope, id, props);
|
|
8
|
+
|
|
9
|
+
const minimalSearchExpression = new cloudwatch.SearchExpression({
|
|
10
|
+
expression: "SEARCH('{AWS/EC2,InstanceId} CPUUtilization', 'Average', 300)",
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
const customSearchExpression = new cloudwatch.SearchExpression({
|
|
14
|
+
expression: "SEARCH('{AWS/Lambda,FunctionName} Duration', 'Average', 300)",
|
|
15
|
+
label: 'Custom Lambda Duration',
|
|
16
|
+
color: '#e377c2',
|
|
17
|
+
period: cdk.Duration.minutes(10),
|
|
18
|
+
searchAccount: '123456789012',
|
|
19
|
+
searchRegion: 'us-west-2',
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
const crossAccountRegionSearchExpression = new cloudwatch.SearchExpression({
|
|
23
|
+
expression: "SEARCH('{AWS/S3,BucketName} BucketSizeBytes', 'Average', 86400)",
|
|
24
|
+
label: 'Cross-Account Cross-Region S3',
|
|
25
|
+
color: '#9467bd',
|
|
26
|
+
period: cdk.Duration.hours(1),
|
|
27
|
+
searchAccount: '123456789012',
|
|
28
|
+
searchRegion: 'ap-southeast-1',
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
const dashboard = new cloudwatch.Dashboard(this, 'SearchExpressionDashboard', {
|
|
32
|
+
dashboardName: 'SearchExpressionTestDashboard',
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
const searchExpressionWidget = new cloudwatch.GraphWidget({
|
|
36
|
+
title: 'Minimal vs Custom Properties',
|
|
37
|
+
width: 24,
|
|
38
|
+
height: 6,
|
|
39
|
+
left: [minimalSearchExpression],
|
|
40
|
+
right: [customSearchExpression, crossAccountRegionSearchExpression],
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
dashboard.addWidgets(searchExpressionWidget);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const app = new cdk.App();
|
|
48
|
+
|
|
49
|
+
new IntegTest(app, 'SearchExpressionIntegTest', {
|
|
50
|
+
testCases: [new SearchExpressionStack(app, 'SearchExpressionStack')],
|
|
51
|
+
});
|
|
@@ -2070,7 +2070,93 @@ const service = new ecs.FargateService(this, 'FargateService', {
|
|
|
2070
2070
|
});
|
|
2071
2071
|
```
|
|
2072
2072
|
|
|
2073
|
-
##
|
|
2073
|
+
## ECS Native Blue/Green Deployment
|
|
2074
|
+
|
|
2075
|
+
Amazon ECS supports native blue/green deployments that allow you to deploy new versions of your services with zero downtime. This deployment strategy creates a new set of tasks (green) alongside the existing tasks (blue), then shifts traffic from the old version to the new version.
|
|
2076
|
+
|
|
2077
|
+
[Amazon ECS blue/green deployments](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-blue-green.html)
|
|
2078
|
+
|
|
2079
|
+
### Using Escape Hatches for Blue/Green Features
|
|
2080
|
+
|
|
2081
|
+
The new blue/green deployment features are added to CloudFormation but not yet available in the CDK L2 constructs, you can use escape hatches to access them through the L1 (CfnService) construct.
|
|
2082
|
+
|
|
2083
|
+
#### Load Balancer Advanced Configuration
|
|
2084
|
+
|
|
2085
|
+
Configure advanced load balancer settings for blue/green deployments with alternate target groups and listener rules:
|
|
2086
|
+
|
|
2087
|
+
```ts
|
|
2088
|
+
declare const service: ecs.FargateService;
|
|
2089
|
+
|
|
2090
|
+
const cfnService = service.node.defaultChild as ecs.CfnService;
|
|
2091
|
+
cfnService.loadBalancers = [{
|
|
2092
|
+
containerName: 'web',
|
|
2093
|
+
containerPort: 80,
|
|
2094
|
+
targetGroupArn: 'arn:aws:elasticloadbalancing:region:account:targetgroup/production',
|
|
2095
|
+
advancedConfiguration: {
|
|
2096
|
+
alternateTargetGroupArn: 'arn:aws:elasticloadbalancing:region:account:targetgroup/test',
|
|
2097
|
+
productionListenerRule: 'arn:aws:elasticloadbalancing:region:account:listener-rule/production-rule',
|
|
2098
|
+
testListenerRule: 'arn:aws:elasticloadbalancing:region:account:listener-rule/test-rule',
|
|
2099
|
+
roleArn: 'arn:aws:iam::account:role/ecs-blue-green-role'
|
|
2100
|
+
}
|
|
2101
|
+
}];
|
|
2102
|
+
```
|
|
2103
|
+
|
|
2104
|
+
#### Blue/Green Deployment Configuration
|
|
2105
|
+
|
|
2106
|
+
Configure deployment strategy with bake time and lifecycle hooks:
|
|
2107
|
+
|
|
2108
|
+
```ts
|
|
2109
|
+
declare const service: ecs.FargateService;
|
|
2110
|
+
|
|
2111
|
+
const cfnService = service.node.defaultChild as ecs.CfnService;
|
|
2112
|
+
cfnService.deploymentConfiguration = {
|
|
2113
|
+
maximumPercent: 200,
|
|
2114
|
+
minimumHealthyPercent: 100,
|
|
2115
|
+
strategy: 'BLUE_GREEN',
|
|
2116
|
+
bakeTimeInMinutes: 15,
|
|
2117
|
+
lifecycleHooks: [{
|
|
2118
|
+
hookTargetArn: 'arn:aws:lambda:region:account:function:pre-deployment-hook',
|
|
2119
|
+
roleArn: 'arn:aws:iam::account:role/deployment-hook-role',
|
|
2120
|
+
lifecycleStages: ['PRE_STOP', 'POST_START']
|
|
2121
|
+
}]
|
|
2122
|
+
};
|
|
2123
|
+
```
|
|
2124
|
+
|
|
2125
|
+
#### Service Connect Test Traffic Rules
|
|
2126
|
+
|
|
2127
|
+
Configure test traffic routing for Service Connect during blue/green deployments:
|
|
2128
|
+
|
|
2129
|
+
```ts
|
|
2130
|
+
declare const cluster: ecs.Cluster;
|
|
2131
|
+
declare const taskDefinition: ecs.TaskDefinition;
|
|
2132
|
+
|
|
2133
|
+
const service = new ecs.FargateService(this, 'Service', {
|
|
2134
|
+
cluster,
|
|
2135
|
+
taskDefinition,
|
|
2136
|
+
});
|
|
2137
|
+
|
|
2138
|
+
const cfnService = service.node.defaultChild as ecs.CfnService;
|
|
2139
|
+
cfnService.serviceConnectConfiguration = {
|
|
2140
|
+
enabled: true,
|
|
2141
|
+
services: [{
|
|
2142
|
+
portName: 'api',
|
|
2143
|
+
clientAliases: [{
|
|
2144
|
+
port: 80,
|
|
2145
|
+
dnsName: 'my-service',
|
|
2146
|
+
testTrafficRules: {
|
|
2147
|
+
header: {
|
|
2148
|
+
name: 'x-canary-test',
|
|
2149
|
+
value: {
|
|
2150
|
+
exact: 'beta-version'
|
|
2151
|
+
}
|
|
2152
|
+
}
|
|
2153
|
+
}
|
|
2154
|
+
}]
|
|
2155
|
+
}]
|
|
2156
|
+
};
|
|
2157
|
+
```
|
|
2158
|
+
|
|
2159
|
+
## Daemon Scheduling Strategy
|
|
2074
2160
|
You can specify whether service use Daemon scheduling strategy by specifying `daemon` option in Service constructs. See [differences between Daemon and Replica scheduling strategy](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html)
|
|
2075
2161
|
|
|
2076
2162
|
```ts
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
2
|
+
import * as elbv2 from 'aws-cdk-lib/aws-elasticloadbalancingv2';
|
|
3
|
+
import * as iam from 'aws-cdk-lib/aws-iam';
|
|
4
|
+
import * as lambda from 'aws-cdk-lib/aws-lambda';
|
|
5
|
+
import * as cdk from 'aws-cdk-lib';
|
|
6
|
+
import * as ecs from 'aws-cdk-lib/aws-ecs';
|
|
7
|
+
import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
8
|
+
|
|
9
|
+
const app = new cdk.App();
|
|
10
|
+
const stack = new cdk.Stack(app, 'aws-ecs-blue-green-deployment');
|
|
11
|
+
|
|
12
|
+
// Create VPC and Cluster
|
|
13
|
+
const vpc = new ec2.Vpc(stack, 'Vpc', { maxAzs: 2, restrictDefaultSecurityGroup: false });
|
|
14
|
+
const cluster = new ecs.Cluster(stack, 'FargateCluster', {
|
|
15
|
+
vpc,
|
|
16
|
+
defaultCloudMapNamespace: {
|
|
17
|
+
name: 'bluegreendeployment.com',
|
|
18
|
+
useForServiceConnect: true,
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
// Create Blue target group for B/G deployment
|
|
23
|
+
const blueTargetGroup = new elbv2.ApplicationTargetGroup(stack, 'BlueTG', {
|
|
24
|
+
vpc: cluster.vpc,
|
|
25
|
+
port: 80,
|
|
26
|
+
protocol: elbv2.ApplicationProtocol.HTTP,
|
|
27
|
+
targetType: elbv2.TargetType.IP,
|
|
28
|
+
healthCheck: {
|
|
29
|
+
path: '/',
|
|
30
|
+
healthyHttpCodes: '200',
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
// Create Green target group for B/G deployment
|
|
35
|
+
const greenTargetGroup = new elbv2.ApplicationTargetGroup(stack, 'GreenTG', {
|
|
36
|
+
vpc: cluster.vpc,
|
|
37
|
+
port: 80,
|
|
38
|
+
protocol: elbv2.ApplicationProtocol.HTTP,
|
|
39
|
+
targetType: elbv2.TargetType.IP,
|
|
40
|
+
healthCheck: {
|
|
41
|
+
path: '/',
|
|
42
|
+
healthyHttpCodes: '200',
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
// Create security groups
|
|
47
|
+
const lbSecurityGroup = new ec2.SecurityGroup(stack, 'LBSecurityGroup', {
|
|
48
|
+
vpc: cluster.vpc,
|
|
49
|
+
allowAllOutbound: true,
|
|
50
|
+
});
|
|
51
|
+
lbSecurityGroup.addIngressRule(ec2.Peer.anyIpv4(), ec2.Port.tcp(80));
|
|
52
|
+
|
|
53
|
+
const ecsSecurityGroup = new ec2.SecurityGroup(stack, 'ECSSecurityGroup', {
|
|
54
|
+
vpc: cluster.vpc,
|
|
55
|
+
allowAllOutbound: true,
|
|
56
|
+
});
|
|
57
|
+
ecsSecurityGroup.addIngressRule(lbSecurityGroup, ec2.Port.tcp(80));
|
|
58
|
+
|
|
59
|
+
// Create ALB
|
|
60
|
+
const alb = new elbv2.ApplicationLoadBalancer(stack, 'ALB', {
|
|
61
|
+
vpc: cluster.vpc,
|
|
62
|
+
internetFacing: true,
|
|
63
|
+
securityGroup: lbSecurityGroup,
|
|
64
|
+
idleTimeout: cdk.Duration.seconds(60),
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
// Create ALB listener with default 404 response
|
|
68
|
+
const listener = alb.addListener('ALBListenerHTTP', {
|
|
69
|
+
port: 80,
|
|
70
|
+
defaultAction: elbv2.ListenerAction.fixedResponse(404),
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
// Create Prod listener rule
|
|
74
|
+
const prodListenerRule = new elbv2.ApplicationListenerRule(stack, 'ALBProductionListenerRule', {
|
|
75
|
+
listener: listener,
|
|
76
|
+
priority: 1,
|
|
77
|
+
conditions: [
|
|
78
|
+
elbv2.ListenerCondition.pathPatterns(['/*']),
|
|
79
|
+
],
|
|
80
|
+
action: elbv2.ListenerAction.weightedForward([
|
|
81
|
+
{
|
|
82
|
+
targetGroup: blueTargetGroup,
|
|
83
|
+
weight: 100,
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
targetGroup: greenTargetGroup,
|
|
87
|
+
weight: 0,
|
|
88
|
+
},
|
|
89
|
+
]),
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
// Create granular IAM roles
|
|
93
|
+
const ecsTaskExecutionRole = new iam.Role(stack, 'EcsTaskExecutionRole', {
|
|
94
|
+
assumedBy: new iam.ServicePrincipal('ecs-tasks.amazonaws.com'),
|
|
95
|
+
managedPolicies: [
|
|
96
|
+
iam.ManagedPolicy.fromAwsManagedPolicyName('service-role/AmazonECSTaskExecutionRolePolicy'),
|
|
97
|
+
],
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
// Create Blue/Green deployment service role
|
|
101
|
+
const ecsServiceRole = new iam.Role(stack, 'ServiceRole', {
|
|
102
|
+
assumedBy: new iam.CompositePrincipal(
|
|
103
|
+
new iam.ServicePrincipal('ecs.amazonaws.com'),
|
|
104
|
+
),
|
|
105
|
+
managedPolicies: [
|
|
106
|
+
iam.ManagedPolicy.fromAwsManagedPolicyName('service-role/AmazonEC2ContainerServiceRole'),
|
|
107
|
+
],
|
|
108
|
+
inlinePolicies: {
|
|
109
|
+
LambdaInvokePolicy: new iam.PolicyDocument({
|
|
110
|
+
statements: [
|
|
111
|
+
new iam.PolicyStatement({
|
|
112
|
+
actions: ['lambda:InvokeFunction'],
|
|
113
|
+
resources: ['*'],
|
|
114
|
+
}),
|
|
115
|
+
],
|
|
116
|
+
}),
|
|
117
|
+
ELBPolicy: new iam.PolicyDocument({
|
|
118
|
+
statements: [
|
|
119
|
+
new iam.PolicyStatement({
|
|
120
|
+
actions: [
|
|
121
|
+
'elasticloadbalancing:ModifyRule',
|
|
122
|
+
'elasticloadbalancing:ModifyListener',
|
|
123
|
+
],
|
|
124
|
+
resources: [prodListenerRule.listenerRuleArn],
|
|
125
|
+
}),
|
|
126
|
+
],
|
|
127
|
+
}),
|
|
128
|
+
},
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
// Create Lambda hook
|
|
132
|
+
const lambdaHook = new lambda.Function(stack, 'LambdaHook', {
|
|
133
|
+
handler: 'index.handler',
|
|
134
|
+
runtime: lambda.Runtime.NODEJS_22_X,
|
|
135
|
+
code: lambda.Code.fromInline(`exports.handler = async (event, context) => {
|
|
136
|
+
console.log('Event received:', JSON.stringify(event));
|
|
137
|
+
return { hookStatus: 'SUCCEEDED' };
|
|
138
|
+
};`),
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
lambdaHook.grantInvoke(ecsServiceRole);
|
|
142
|
+
|
|
143
|
+
// Create task definition
|
|
144
|
+
const taskDefinition = new ecs.FargateTaskDefinition(stack, 'TaskDef', {
|
|
145
|
+
memoryLimitMiB: 512,
|
|
146
|
+
cpu: 256,
|
|
147
|
+
executionRole: ecsTaskExecutionRole,
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
// Add container to task definition
|
|
151
|
+
taskDefinition.addContainer('container', {
|
|
152
|
+
containerName: 'nginx',
|
|
153
|
+
image: ecs.ContainerImage.fromRegistry('public.ecr.aws/nginx/nginx:latest'),
|
|
154
|
+
portMappings: [{
|
|
155
|
+
name: 'api',
|
|
156
|
+
containerPort: 80,
|
|
157
|
+
appProtocol: ecs.AppProtocol.http,
|
|
158
|
+
}],
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
// Create Fargate service with escape hatching for B/G deployment
|
|
162
|
+
const service = new ecs.FargateService(stack, 'Service', {
|
|
163
|
+
cluster,
|
|
164
|
+
taskDefinition,
|
|
165
|
+
securityGroups: [ecsSecurityGroup],
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
service.attachToApplicationTargetGroup(blueTargetGroup);
|
|
169
|
+
|
|
170
|
+
// Use escape hatching to set B/G deployment properties
|
|
171
|
+
const cfnService = service.node.defaultChild as ecs.CfnService;
|
|
172
|
+
cfnService.addPropertyOverride('DeploymentController', {
|
|
173
|
+
Type: 'ECS',
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
cfnService.addPropertyOverride('DeploymentConfiguration', {
|
|
177
|
+
DeploymentCircuitBreaker: {
|
|
178
|
+
Enable: false,
|
|
179
|
+
Rollback: false,
|
|
180
|
+
},
|
|
181
|
+
MaximumPercent: 200,
|
|
182
|
+
MinimumHealthyPercent: 100,
|
|
183
|
+
Strategy: 'BLUE_GREEN',
|
|
184
|
+
BakeTimeInMinutes: 0,
|
|
185
|
+
LifecycleHooks: [{
|
|
186
|
+
HookTargetArn: lambdaHook.functionArn,
|
|
187
|
+
RoleArn: ecsServiceRole.roleArn,
|
|
188
|
+
LifecycleStages: ['POST_TEST_TRAFFIC_SHIFT'],
|
|
189
|
+
}],
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
cfnService.addPropertyOverride('LoadBalancers.0', {
|
|
193
|
+
AdvancedConfiguration: {
|
|
194
|
+
AlternateTargetGroupArn: greenTargetGroup.targetGroupArn,
|
|
195
|
+
RoleArn: ecsServiceRole.roleArn,
|
|
196
|
+
ProductionListenerRule: prodListenerRule.listenerRuleArn,
|
|
197
|
+
},
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
// Create integration test
|
|
201
|
+
new integ.IntegTest(app, 'aws-ecs-blue-green', {
|
|
202
|
+
testCases: [stack],
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
app.synth();
|
|
@@ -32,8 +32,8 @@ insRole.applyRemovalPolicy(cdk.RemovalPolicy.DESTROY);
|
|
|
32
32
|
const autoScalingGroup = new autoscaling.AutoScalingGroup(stack, 'ASG', {
|
|
33
33
|
vpc,
|
|
34
34
|
role: insRole,
|
|
35
|
-
instanceType: ec2.InstanceType.of(ec2.InstanceClass.
|
|
36
|
-
machineImage: ecs.EcsOptimizedImage.windows(ecs.WindowsOptimizedVersion.
|
|
35
|
+
instanceType: ec2.InstanceType.of(ec2.InstanceClass.T3, ec2.InstanceSize.SMALL),
|
|
36
|
+
machineImage: ecs.EcsOptimizedImage.windows(ecs.WindowsOptimizedVersion.SERVER_2025),
|
|
37
37
|
minCapacity: 1,
|
|
38
38
|
});
|
|
39
39
|
|
|
@@ -46,10 +46,9 @@ cluster.addAsgCapacityProvider(cp);
|
|
|
46
46
|
|
|
47
47
|
const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef', {});
|
|
48
48
|
|
|
49
|
-
taskDefinition.addContainer('
|
|
50
|
-
image: ecs.ContainerImage.fromRegistry('
|
|
51
|
-
memoryLimitMiB:
|
|
52
|
-
cpu: 1024,
|
|
49
|
+
taskDefinition.addContainer('main', {
|
|
50
|
+
image: ecs.ContainerImage.fromRegistry('hello-world'),
|
|
51
|
+
memoryLimitMiB: 256,
|
|
53
52
|
});
|
|
54
53
|
|
|
55
54
|
new ecs.Ec2Service(stack, 'EC2Service', {
|
|
@@ -481,6 +481,67 @@ new logs.LogGroup(this, 'LogGroup', {
|
|
|
481
481
|
});
|
|
482
482
|
```
|
|
483
483
|
|
|
484
|
+
## Transformer
|
|
485
|
+
|
|
486
|
+
A log transformer enables transforming log events into a different format, making them easier
|
|
487
|
+
to process and analyze. You can transform logs from different sources into standardized formats
|
|
488
|
+
that contain relevant, source-specific information. Transformations are performed at the time of log ingestion.
|
|
489
|
+
Transformers support several types of processors which can be chained into a processing pipeline (subject to some restrictions, see [Usage Limits](#usage-limits)).
|
|
490
|
+
|
|
491
|
+
### Processor Types
|
|
492
|
+
|
|
493
|
+
1. **Parser Processors**: Parse string log events into structured log events. These are configurable parsers created using `ParserProcessor`, and support conversion to a format like Json, extracting fields from CSV input, converting vended sources to [OCSF](https://schema.ocsf.io/1.1.0/) format, regex parsing using Grok patterns or key-value parsing. Refer [configurable parsers](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch-Logs-Transformation-Processors.html#CloudWatch-Logs-Transformation-Configurable) for more examples.
|
|
494
|
+
|
|
495
|
+
2. **Vended Log Parsers**: Parse log events from vended sources into structured log events. These are created using `VendedLogParser`, and support conversion from sources such as AWS WAF, PostGres, Route53, CloudFront and VPC. These parsers are not configurable, meaning these can be added to the pipeline but do not accept any properties or configurations. Refer [vended log parsers](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch-Logs-Transformation-Processors.html#CloudWatch-Logs-Transformation-BuiltIn) for more examples.
|
|
496
|
+
|
|
497
|
+
3. **String Mutators**: Perform operations on string values in a field of a log event and are created using `StringMutatorProcessor`. These can be used to format string values in the log event such as changing case, removing trailing whitespaces or extracting values from a string field by splitting the string or regex backreferences. Refer [string mutators](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch-Logs-Transformation-Processors.html#CloudWatch-Logs-Transformation-StringMutate) for more examples.
|
|
498
|
+
|
|
499
|
+
4. **JSON Mutators**: Perform operation on JSON log events and are created using `JsonMutatorProcessor`. These processors can be used to enrich log events by adding new fields, deleting, moving, renaming fields, copying values to other fields or converting a list of key-value pairs to a map. Refer [JSON mutators](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch-Logs-Transformation-Processors.html#CloudWatch-Logs-Transformation-JSONMutate) for more examples.
|
|
500
|
+
|
|
501
|
+
5. **Data Converters**: Convert the data into different formats and are created using `DataConverterProcessor`. These can be used to convert values in a field to datatypes such as integers, string, double and boolean or to convert dates and times to different formats. Refer [datatype processors](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch-Logs-Transformation-Processors.html#CloudWatch-Logs-Transformation-Datatype) for more examples.
|
|
502
|
+
|
|
503
|
+
### Usage Limits
|
|
504
|
+
|
|
505
|
+
- A transformer can have a maximum of 20 processors
|
|
506
|
+
- At least one parser-type processor is required
|
|
507
|
+
- Maximum of 5 parser-type processors allowed
|
|
508
|
+
- AWS vended log parser (if used) must be the first processor
|
|
509
|
+
- Only one parseToOcsf processor, one grok processor, one addKeys processor, and one copyValue processor allowed per transformer
|
|
510
|
+
- Transformers can only be used with log groups in the Standard log class
|
|
511
|
+
|
|
512
|
+
Example:
|
|
513
|
+
|
|
514
|
+
```ts
|
|
515
|
+
|
|
516
|
+
// Create a log group
|
|
517
|
+
const logGroup = new logs.LogGroup(this, 'MyLogGroup');
|
|
518
|
+
|
|
519
|
+
// Create a JSON parser processor
|
|
520
|
+
const jsonParser = new logs.ParserProcessor({
|
|
521
|
+
type: logs.ParserProcessorType.JSON
|
|
522
|
+
});
|
|
523
|
+
|
|
524
|
+
// Create a processor to add keys
|
|
525
|
+
const addKeysProcessor = new logs.JsonMutatorProcessor({
|
|
526
|
+
type: logs.JsonMutatorType.ADD_KEYS,
|
|
527
|
+
addKeysOptions: {
|
|
528
|
+
entries: [{
|
|
529
|
+
key: 'metadata.transformed_in',
|
|
530
|
+
value: 'CloudWatchLogs'
|
|
531
|
+
}]
|
|
532
|
+
}
|
|
533
|
+
});
|
|
534
|
+
|
|
535
|
+
// Create a transformer with these processors
|
|
536
|
+
new logs.Transformer(this, 'Transformer', {
|
|
537
|
+
transformerName: 'MyTransformer',
|
|
538
|
+
logGroup: logGroup,
|
|
539
|
+
transformerConfig: [jsonParser, addKeysProcessor]
|
|
540
|
+
});
|
|
541
|
+
```
|
|
542
|
+
|
|
543
|
+
For more details on CloudWatch Logs transformation processors, refer to the [AWS documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch-Logs-Transformation-Processors.html).
|
|
544
|
+
|
|
484
545
|
## Notes
|
|
485
546
|
|
|
486
547
|
Be aware that Log Group ARNs will always have the string `:*` appended to
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.loggroup-transformer.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { IntegTest } from '@aws-cdk/integ-tests-alpha';
|
|
2
|
+
import { App, Stack, StackProps } from 'aws-cdk-lib';
|
|
3
|
+
import { JsonMutatorType, LogGroup, ParserProcessorType, ParserProcessor, JsonMutatorProcessor } from 'aws-cdk-lib/aws-logs';
|
|
4
|
+
|
|
5
|
+
class TransformerIntegStack extends Stack {
|
|
6
|
+
constructor(scope: App, id: string, props?: StackProps) {
|
|
7
|
+
super(scope, id, props);
|
|
8
|
+
|
|
9
|
+
const logGroup = new LogGroup(this, 'MyLogGroup');
|
|
10
|
+
const jsonParser = new ParserProcessor({
|
|
11
|
+
type: ParserProcessorType.JSON,
|
|
12
|
+
jsonOptions: { source: 'customField' },
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
const addKeysProcesor = new JsonMutatorProcessor({
|
|
16
|
+
type: JsonMutatorType.ADD_KEYS,
|
|
17
|
+
addKeysOptions: {
|
|
18
|
+
entries: [
|
|
19
|
+
{ key: 'test_key1', value: 'test_value1', overwriteIfExists: true },
|
|
20
|
+
{ key: 'test_key2', value: 'test_value2' },
|
|
21
|
+
{ key: 'test_key3', value: 'test_value3', overwriteIfExists: false },
|
|
22
|
+
],
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
logGroup.addTransformer('Transformer', {
|
|
27
|
+
transformerName: 'MyTransformer',
|
|
28
|
+
transformerConfig: [jsonParser, addKeysProcesor],
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const app = new App();
|
|
34
|
+
const testCase = new TransformerIntegStack(app, 'aws-cdk-transformer-integ');
|
|
35
|
+
new IntegTest(app, 'transformer-create', {
|
|
36
|
+
testCases: [testCase],
|
|
37
|
+
});
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { IntegTest } from '@aws-cdk/integ-tests-alpha';
|
|
2
|
+
import { App, Stack, StackProps } from 'aws-cdk-lib';
|
|
3
|
+
import { LogGroup, ParserProcessorType, ParserProcessor, Transformer } from 'aws-cdk-lib/aws-logs';
|
|
4
|
+
|
|
5
|
+
class TransformerIntegStack extends Stack {
|
|
6
|
+
constructor(scope: App, id: string, props?: StackProps) {
|
|
7
|
+
super(scope, id, props);
|
|
8
|
+
|
|
9
|
+
const logGroup = new LogGroup(this, 'MyLogGroup');
|
|
10
|
+
const jsonParser = new ParserProcessor({
|
|
11
|
+
type: ParserProcessorType.JSON,
|
|
12
|
+
jsonOptions: { source: 'customField' },
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
new Transformer(this, 'Transformer', {
|
|
16
|
+
transformerName: 'MyTransformer',
|
|
17
|
+
logGroup: logGroup,
|
|
18
|
+
transformerConfig: [jsonParser],
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const app = new App();
|
|
24
|
+
const testCase = new TransformerIntegStack(app, 'aws-cdk-transformer-integ');
|
|
25
|
+
new IntegTest(app, 'transformer-create', {
|
|
26
|
+
testCases: [testCase],
|
|
27
|
+
});
|
|
@@ -1514,7 +1514,20 @@ new rds.DatabaseCluster(this, 'Database', {
|
|
|
1514
1514
|
});
|
|
1515
1515
|
```
|
|
1516
1516
|
|
|
1517
|
-
|
|
1517
|
+
Database Insights is also supported for RDS instances:
|
|
1518
|
+
|
|
1519
|
+
```ts
|
|
1520
|
+
declare const vpc: ec2.Vpc;
|
|
1521
|
+
new rds.DatabaseInstance(this, 'PostgresInstance', {
|
|
1522
|
+
engine: rds.DatabaseInstanceEngine.postgres({ version: rds.PostgresEngineVersion.VER_17_5 }),
|
|
1523
|
+
instanceType: ec2.InstanceType.of(ec2.InstanceClass.R5, ec2.InstanceSize.LARGE),
|
|
1524
|
+
vpc,
|
|
1525
|
+
// If you enable the advanced mode of Database Insights,
|
|
1526
|
+
// Performance Insights is enabled and you must set the `performanceInsightRetention` to 465(15 months).
|
|
1527
|
+
databaseInsightsMode: rds.DatabaseInsightsMode.ADVANCED,
|
|
1528
|
+
performanceInsightRetention: rds.PerformanceInsightRetention.MONTHS_15,
|
|
1529
|
+
});
|
|
1530
|
+
```
|
|
1518
1531
|
|
|
1519
1532
|
> Visit [CloudWatch Database Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Database-Insights.html) for more details.
|
|
1520
1533
|
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
2
|
+
import * as cdk from 'aws-cdk-lib';
|
|
3
|
+
import {
|
|
4
|
+
DatabaseInstance,
|
|
5
|
+
DatabaseInsightsMode,
|
|
6
|
+
PerformanceInsightRetention,
|
|
7
|
+
PostgresEngineVersion,
|
|
8
|
+
DatabaseInstanceEngine,
|
|
9
|
+
} from 'aws-cdk-lib/aws-rds';
|
|
10
|
+
import { IntegTest } from '@aws-cdk/integ-tests-alpha';
|
|
11
|
+
|
|
12
|
+
class TestStack extends cdk.Stack {
|
|
13
|
+
constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
|
|
14
|
+
super(scope, id, props);
|
|
15
|
+
|
|
16
|
+
const vpc = new ec2.Vpc(this, 'VPC', { maxAzs: 2, restrictDefaultSecurityGroup: false });
|
|
17
|
+
|
|
18
|
+
new DatabaseInstance(this, 'PostgresInstanceAdvanced', {
|
|
19
|
+
engine: DatabaseInstanceEngine.postgres({ version: PostgresEngineVersion.VER_16_9 }),
|
|
20
|
+
instanceType: ec2.InstanceType.of(ec2.InstanceClass.R5, ec2.InstanceSize.LARGE),
|
|
21
|
+
vpc,
|
|
22
|
+
allocatedStorage: 100,
|
|
23
|
+
databaseInsightsMode: DatabaseInsightsMode.ADVANCED,
|
|
24
|
+
performanceInsightRetention: PerformanceInsightRetention.MONTHS_15,
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
new DatabaseInstance(this, 'PostgresInstanceStandard', {
|
|
28
|
+
engine: DatabaseInstanceEngine.postgres({ version: PostgresEngineVersion.VER_16_9 }),
|
|
29
|
+
instanceType: ec2.InstanceType.of(ec2.InstanceClass.R5, ec2.InstanceSize.LARGE),
|
|
30
|
+
vpc,
|
|
31
|
+
allocatedStorage: 100,
|
|
32
|
+
databaseInsightsMode: DatabaseInsightsMode.STANDARD,
|
|
33
|
+
enablePerformanceInsights: true,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const app = new cdk.App();
|
|
39
|
+
const stack = new TestStack(app, 'aws-cdk-rds-integ-instance-database-insights');
|
|
40
|
+
|
|
41
|
+
new IntegTest(app, 'integ-instance-database-insights', {
|
|
42
|
+
testCases: [stack],
|
|
43
|
+
});
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { App, Stack, NestedStack, StackProps, NestedStackProps } from 'aws-cdk-lib';
|
|
2
|
+
import { UserPool, IUserPool } from 'aws-cdk-lib/aws-cognito';
|
|
3
|
+
import { BucketDeployment, Source } from 'aws-cdk-lib/aws-s3-deployment';
|
|
4
|
+
import { Bucket } from 'aws-cdk-lib/aws-s3';
|
|
5
|
+
import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
6
|
+
import { ExpectedResult } from '@aws-cdk/integ-tests-alpha';
|
|
7
|
+
import { Construct } from 'constructs';
|
|
8
|
+
|
|
9
|
+
class ResourceNestedStack extends NestedStack {
|
|
10
|
+
userPool: UserPool;
|
|
11
|
+
constructor (scope: Construct, id: string, props: NestedStackProps = {}) {
|
|
12
|
+
super(scope, id, props);
|
|
13
|
+
this.userPool = new UserPool(this, 'UserPool');
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
interface DeploymentNestedStackProps extends NestedStackProps {
|
|
18
|
+
userPool: IUserPool;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
class DeploymentNestedStack extends NestedStack {
|
|
22
|
+
bucket: Bucket;
|
|
23
|
+
constructor (scope: Construct, id: string, props: DeploymentNestedStackProps) {
|
|
24
|
+
super(scope, id, props);
|
|
25
|
+
this.bucket = new Bucket(this, 'Bucket');
|
|
26
|
+
new BucketDeployment(this, 'Deployment', {
|
|
27
|
+
destinationBucket: this.bucket,
|
|
28
|
+
sources: [
|
|
29
|
+
Source.jsonData('appconfig.json', { userPoolId: props.userPool.userPoolId }),
|
|
30
|
+
],
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
class MainStack extends Stack {
|
|
36
|
+
resourceNestedStack: ResourceNestedStack;
|
|
37
|
+
deploymentNestedStack: DeploymentNestedStack;
|
|
38
|
+
|
|
39
|
+
constructor (scope: Construct, id: string, props: StackProps = {}) {
|
|
40
|
+
super(scope, id, props);
|
|
41
|
+
this.resourceNestedStack = new ResourceNestedStack(this, 'ResourceNestedStack');
|
|
42
|
+
this.deploymentNestedStack = new DeploymentNestedStack(this, 'DeploymentNestedStack', { userPool: this.resourceNestedStack.userPool });
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const app = new App();
|
|
47
|
+
const stack = new MainStack(app, 'MainStack');
|
|
48
|
+
|
|
49
|
+
const integTest = new integ.IntegTest(app, 'integ-cross-nested-stack-source', {
|
|
50
|
+
testCases: [stack],
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
integTest.assertions.awsApiCall('S3', 'getObject', {
|
|
54
|
+
Bucket: stack.deploymentNestedStack.bucket.bucketName,
|
|
55
|
+
Key: 'appconfig.json',
|
|
56
|
+
}).expect(ExpectedResult.objectLike({
|
|
57
|
+
Body: JSON.stringify({ userPoolId: stack.resourceNestedStack.userPool.userPoolId }),
|
|
58
|
+
}));
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { App, Stack, StackProps } from 'aws-cdk-lib';
|
|
2
|
+
import { UserPool } from 'aws-cdk-lib/aws-cognito';
|
|
3
|
+
import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
4
|
+
import { ExpectedResult } from '@aws-cdk/integ-tests-alpha';
|
|
5
|
+
import { Construct } from 'constructs';
|
|
6
|
+
import { BucketDeployment, Source } from 'aws-cdk-lib/aws-s3-deployment';
|
|
7
|
+
import { Bucket } from 'aws-cdk-lib/aws-s3';
|
|
8
|
+
|
|
9
|
+
class Stack2 extends Stack {
|
|
10
|
+
userPool: UserPool;
|
|
11
|
+
|
|
12
|
+
constructor (scope: Construct, id: string, props: StackProps = {}) {
|
|
13
|
+
super(scope, id, props);
|
|
14
|
+
this.userPool = new UserPool(this, 'userpool');
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
class Stack1 extends Stack {
|
|
19
|
+
bucket: Bucket;
|
|
20
|
+
|
|
21
|
+
constructor (scope: Construct, id: string, props: { userPool: UserPool }) {
|
|
22
|
+
super(scope, id);
|
|
23
|
+
this.bucket = new Bucket(this, 'bucket');
|
|
24
|
+
new BucketDeployment(this, 'XXXXXXXXXX', {
|
|
25
|
+
destinationBucket: this.bucket,
|
|
26
|
+
sources: [
|
|
27
|
+
Source.data('test.txt', props.userPool.userPoolId),
|
|
28
|
+
],
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const app = new App();
|
|
34
|
+
const stack2 = new Stack2(app, 'stack2');
|
|
35
|
+
const stack1 = new Stack1(app, 'stack1', { userPool: stack2.userPool });
|
|
36
|
+
|
|
37
|
+
const integTest = new integ.IntegTest(app, 'integ-cross-stack-source', {
|
|
38
|
+
testCases: [
|
|
39
|
+
stack1,
|
|
40
|
+
],
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
integTest.assertions.awsApiCall('S3', 'getObject', {
|
|
44
|
+
Bucket: stack1.bucket.bucketName,
|
|
45
|
+
Key: 'test.txt',
|
|
46
|
+
}).expect(ExpectedResult.objectLike({
|
|
47
|
+
Body: stack2.userPool.userPoolId,
|
|
48
|
+
}));
|
|
@@ -1545,7 +1545,7 @@ validation.
|
|
|
1545
1545
|
> etc. It's your responsibility as the consumer of a plugin to verify that it is
|
|
1546
1546
|
> secure to use.
|
|
1547
1547
|
|
|
1548
|
-
By default, the report will be printed in a human
|
|
1548
|
+
By default, the report will be printed in a human-readable format. If you want a
|
|
1549
1549
|
report in JSON format, enable it using the `@aws-cdk/core:validationReportJson`
|
|
1550
1550
|
context passing it directly to the application:
|
|
1551
1551
|
|
|
@@ -1559,6 +1559,18 @@ Alternatively, you can set this context key-value pair using the `cdk.json` or
|
|
|
1559
1559
|
`cdk.context.json` files in your project directory (see
|
|
1560
1560
|
[Runtime context](https://docs.aws.amazon.com/cdk/v2/guide/context.html)).
|
|
1561
1561
|
|
|
1562
|
+
It is also possible to enable both JSON and human-readable formats by setting
|
|
1563
|
+
`@aws-cdk/core:validationReportPrettyPrint` context key explicitly:
|
|
1564
|
+
|
|
1565
|
+
```ts
|
|
1566
|
+
const app = new App({
|
|
1567
|
+
context: {
|
|
1568
|
+
'@aws-cdk/core:validationReportJson': true,
|
|
1569
|
+
'@aws-cdk/core:validationReportPrettyPrint': true,
|
|
1570
|
+
},
|
|
1571
|
+
});
|
|
1572
|
+
```
|
|
1573
|
+
|
|
1562
1574
|
If you choose the JSON format, the CDK will print the policy validation report
|
|
1563
1575
|
to a file called `policy-validation-report.json` in the cloud assembly
|
|
1564
1576
|
directory. For the default, human-readable format, the report will be printed to
|
|
@@ -1800,6 +1812,17 @@ warning by the `id`.
|
|
|
1800
1812
|
Annotations.of(this).acknowledgeWarning('IAM:Group:MaxPoliciesExceeded', 'Account has quota increased to 20');
|
|
1801
1813
|
```
|
|
1802
1814
|
|
|
1815
|
+
### Acknowledging Infos
|
|
1816
|
+
|
|
1817
|
+
Informational messages can also be emitted and acknowledged. Use `addInfoV2()`
|
|
1818
|
+
to add an info message that can later be suppressed with `acknowledgeInfo()`.
|
|
1819
|
+
Unlike warnings, info messages are not affected by the `--strict` mode and will never cause synthesis to fail.
|
|
1820
|
+
|
|
1821
|
+
```ts
|
|
1822
|
+
Annotations.of(this).addInfoV2('my-lib:Construct.someInfo', 'Some message explaining the info');
|
|
1823
|
+
Annotations.of(this).acknowledgeInfo('my-lib:Construct.someInfo', 'This info can be ignored');
|
|
1824
|
+
```
|
|
1825
|
+
|
|
1803
1826
|
## RemovalPolicies
|
|
1804
1827
|
|
|
1805
1828
|
The `RemovalPolicies` class provides a convenient way to manage removal policies for AWS CDK resources within a construct scope. It allows you to apply removal policies to multiple resources at once, with options to include or exclude specific resource types.
|
|
@@ -121,6 +121,9 @@ def is_complete(event, context):
|
|
|
121
121
|
> Do not use this library if your threat model requires that you cannot trust actors who are able
|
|
122
122
|
> to list StepFunction executions in your account.
|
|
123
123
|
|
|
124
|
+
|
|
125
|
+
> **Default behaviour change Note**: the Custom Resource Provider doesn't log anything by default. To enable logging for the Provider framework, toggle `disableWaiterStateMachineLogging` and `disableFrameworkLambdaLogging` depending on you requirement to see waiter state machine logs or provider framework lambda logs
|
|
126
|
+
|
|
124
127
|
### Handling Lifecycle Events: onEvent
|
|
125
128
|
|
|
126
129
|
The user-defined `onEvent` AWS Lambda function is invoked whenever a resource
|
|
@@ -104,7 +104,7 @@ Flags come in three types:
|
|
|
104
104
|
| [@aws-cdk/aws-s3:publicAccessBlockedByDefault](#aws-cdkaws-s3publicaccessblockedbydefault) | When enabled, setting any combination of options for BlockPublicAccess will automatically set true for any options not defined. | 2.196.0 | fix |
|
|
105
105
|
| [@aws-cdk/aws-lambda:useCdkManagedLogGroup](#aws-cdkaws-lambdausecdkmanagedloggroup) | When enabled, CDK creates and manages loggroup for the lambda function | 2.200.0 | new default |
|
|
106
106
|
| [@aws-cdk/aws-kms:applyImportedAliasPermissionsToPrincipal](#aws-cdkaws-kmsapplyimportedaliaspermissionstoprincipal) | Enable grant methods on Aliases imported by name to use kms:ResourceAliases condition | 2.202.0 | fix |
|
|
107
|
-
| [@aws-cdk/core:explicitStackTags](#aws-cdkcoreexplicitstacktags) | When enabled, stack tags need to be assigned explicitly on a Stack. |
|
|
107
|
+
| [@aws-cdk/core:explicitStackTags](#aws-cdkcoreexplicitstacktags) | When enabled, stack tags need to be assigned explicitly on a Stack. | 2.205.0 | new default |
|
|
108
108
|
|
|
109
109
|
<!-- END table -->
|
|
110
110
|
|
|
@@ -2220,7 +2220,7 @@ and Stack tags must be configured explicitly on the Stack object.
|
|
|
2220
2220
|
| Since | Unset behaves like | Recommended value |
|
|
2221
2221
|
| ----- | ----- | ----- |
|
|
2222
2222
|
| (not in v1) | | |
|
|
2223
|
-
|
|
|
2223
|
+
| 2.205.0 | `false` | `true` |
|
|
2224
2224
|
|
|
2225
2225
|
**Compatibility with old behavior:** Configure stack-level tags using `new Stack(..., { tags: { ... } })`.
|
|
2226
2226
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: konokenj.cdk-api-mcp-server
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.35.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.33.0.dist-info → konokenj_cdk_api_mcp_server-0.35.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=7QtQT0ToG9XhOWu3Nd0qj2ea8zQZsZ3U2_JwnwsX04U,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
|
|
@@ -9,7 +9,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/app-staging-synthesizer
|
|
|
9
9
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-amplify-alpha/README.md,sha256=gwkmgfklAjRLDG8uegSV68kxNKvG9YW1Ym8ZH5V9ezE,12236
|
|
10
10
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-applicationsignals-alpha/README.md,sha256=6nqc-WbHB1iFE3vXDr6hyQs8tYS6wwnWutXePY4EF4w,10873
|
|
11
11
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-apprunner-alpha/README.md,sha256=Jtm3RbnP4jQy8BYXwHvaRbMKizUjr4SqvimVMYhu6WQ,11982
|
|
12
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-bedrock-alpha/README.md,sha256=
|
|
12
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-bedrock-alpha/README.md,sha256=RGOW5Z03zqi95lnM5IUjmXlRnJNz0YIo1htyCaaLrww,34529
|
|
13
13
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-cloud9-alpha/README.md,sha256=0N8kldvHAKsNQHKtsj8PaQywiDUVrd6rEwVNQV0equY,7718
|
|
14
14
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-codestar-alpha/README.md,sha256=J-c-thqWwZFQT3Exjr_AY95BBgTA14Wb9aJ32gmEizQ,1509
|
|
15
15
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-custom-resource-sdk-adapter/README.md,sha256=FepYs6-FkeqX8jOohrPByOvzecIOBjd1c1AegNpRYNc,6310
|
|
@@ -179,7 +179,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-autoscaling/inte
|
|
|
179
179
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-autoscaling/integ.asg-instance-termination-policy.ts,sha256=gFMYmh-bcTBGEniGpJHU8qy0qe4v5txjgTeJOua0o7o,1983
|
|
180
180
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-autoscaling/integ.asg-keypair.ts,sha256=wuBJf9PTuStQY4D8Qn2iirPhhalzNtlvwvgB6xXxZYQ,854
|
|
181
181
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-autoscaling/integ.asg-lc.ts,sha256=hb_vFSGjkyQcDDffQvgtmZiiLCI6vxy9rbfzi5Did1g,2951
|
|
182
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-autoscaling/integ.asg-lt.ts,sha256=
|
|
182
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-autoscaling/integ.asg-lt.ts,sha256=dIxGv1Ofdu18TiL1C2LzQ2Y536hwrEU81bdIsME7FUQ,3865
|
|
183
183
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-autoscaling/integ.asg-step-scaling.ts,sha256=Ldh1iH8F00Xpy-24EswZnCBXyNwyhCVFndSeB4qVUpE,1771
|
|
184
184
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-autoscaling/integ.asg-update-policy.ts,sha256=5ntPuSF36CruCeZHV-suLGDAJOyit2CUXKylDGO21gY,777
|
|
185
185
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-autoscaling/integ.asg-w-classic-loadbalancer.ts,sha256=CRScQXAG5bcLr2QJFKRShTlt1EwBue86bhDueIF16gg,802
|
|
@@ -297,7 +297,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudtrail/integ
|
|
|
297
297
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudtrail/integ.cloudtrail-insight.ts,sha256=gI_tHyK2Cet3u-uGSCuoZ1_K4gRXszK0a-G2K8UWIqg,1296
|
|
298
298
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudtrail/integ.cloudtrail-supplied-bucket.lit.ts,sha256=-aIb9umhzoWXVSjS5bfg03U-2BnapIEPYYMcGircXwA,1786
|
|
299
299
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudtrail/integ.cloudtrail.lit.ts,sha256=wx23AzFPcH68LnBwge7yKFAomCGYM1KhDhX4XkombVY,994
|
|
300
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/README.md,sha256=
|
|
300
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/README.md,sha256=pZgST4oVrDH62bEtgKlNYDqwbObNkDfgVTB7jz8CSas,36275
|
|
301
301
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/integ.alarm-and-dashboard.ts,sha256=N0eDCVBXmj-p6L8iBFSeKZVtk_yGMZgdDmjQSrgeiUg,4450
|
|
302
302
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/integ.alarm-with-label.ts,sha256=JW5Ttjku2_AEpxHjIrV2F9vp301DEU5nMPlZKyIHs1A,863
|
|
303
303
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/integ.anomaly-detection-alarm.ts,sha256=53vEDKVY2bhOQNPd_Ci328X-ujHto6ML0-9JsExwD_A,3900
|
|
@@ -313,6 +313,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/integ
|
|
|
313
313
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/integ.math-alarm-and-dashboard.ts,sha256=875waD7JBvOqbrlpoBj4qx238E2MvrZWVx5gkjgEM2Q,2438
|
|
314
314
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/integ.metric-with-dimensions.ts,sha256=x3RY8qmG9Mogl-eXl3GGY4tKioNkHtmFz5HrwN2vQW4,1202
|
|
315
315
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/integ.period-singlevaluewidget-and-dashboard.ts,sha256=GDAMkFxU4Uubaf1ZoJb2rz7ui9wsashvlAuSUMVXYOE,838
|
|
316
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/integ.search-expression.ts,sha256=T-9KjNrwl2izUHBF5JrlMMv1biVi32lETZQPF9hh0xc,1773
|
|
316
317
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/integ.sparkline-singlevaluewidget-and-dashboard.ts,sha256=G0vXLvQD4DzEF3Od3V-GIQ4gvNj42DA_sB1VJ6Fwo18,821
|
|
317
318
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/integ.table-widget.ts,sha256=0iXCxCzTfMN8JN4oc9GnolIdQ7CeQnPdwYV2rvztdX0,973
|
|
318
319
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch-actions/README.md,sha256=ltFPA9aA3cLv4i6LjifOBCO0JDWXAnUrWdnxCU03pYE,1709
|
|
@@ -572,12 +573,13 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecr-assets/integ
|
|
|
572
573
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecr-assets/integ.assets-tarball.ts,sha256=pSbNMWSorKT7lUTXxnzkxpcRumKPYWUmcbqRSwwWOgI,937
|
|
573
574
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecr-assets/integ.nested-stacks-docker.ts,sha256=4hDobse34oIG2r0mjbYXzsEXXLEqv077jUh3pjoYmcc,981
|
|
574
575
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/CONTRIBUTING.md,sha256=TlNwpeYemLdYq4jdo24v7nwDIj3RmZ7u2j_LCQiQR74,2634
|
|
575
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/README.md,sha256=
|
|
576
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/README.md,sha256=d7VyFe8b29capdMf8zgAMHSkmdBxgYBpUdoDysRrKUM,76745
|
|
576
577
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.add-docker-label.ts,sha256=avHktilCBVPuVelquVaY2ylRkSLraWn7vUIIIFPsbyI,1375
|
|
577
578
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.add-environment-variable.ts,sha256=sIdwJl7LYh5wlv_EDLPSGCavC2OF6W8IBwZ_hMOnCfw,1143
|
|
578
579
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.app-mesh-proxy-config.ts,sha256=vWr45An7W7lgW9Ws_yPFhapf9DXyJP-D0fhTNg5fZC0,1717
|
|
579
580
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.availability-zone-rebalancing.ts,sha256=2rO7qkkCZx48az2nZ4hoQ4iSsWY2UJtPyaOgCOonlgE,1142
|
|
580
581
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.awslogs-driver.ts,sha256=js3ZnGoPKDVQl5NhZqF-acS5BTNeRkKWBjHUYVJkV0Q,1322
|
|
582
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.blue-green-deployment-strategy.ts,sha256=A-zek2dkUOB3yoEOr3rN9FRWYgaA7W-Ww0nPFHlARko,5802
|
|
581
583
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.bottlerocket.ts,sha256=pio8vLSNlFeokyocKepVUq1ZJXhhrC7iH2ZVJiJxatg,728
|
|
582
584
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.capacity-provider-managed-draining.ts,sha256=pfy9F4i_-hgJYzN48HTEx0KOKLmKuMFSqtaVZb_V7Z4,2028
|
|
583
585
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.capacity-provider.ts,sha256=k02McTBE0sFY8A2rxK6HSen6JjCVKpTD1Om9JBunfR0,1635
|
|
@@ -591,7 +593,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.cluste
|
|
|
591
593
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.cluster-enhanced-container-insights.ts,sha256=BwlUsWIKROE5ro1yA7Xk_gBMIrxf8I7bMTi2R5-VWlg,1060
|
|
592
594
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.cluster-grant-task-protection.ts,sha256=rLCMquXcPfZHUq49kg0xw8STRRB6NMtCMzeVMC16KPY,720
|
|
593
595
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.cluster-imported.ts,sha256=KgGgs_6tQ-ZVAaw4eQaQ7ptNPJ6fGw1Id_y82PS69DI,1409
|
|
594
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.cluster-windows-server-ami.ts,sha256=
|
|
596
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.cluster-windows-server-ami.ts,sha256=EHEpYjbYlP64BFY0E-JWU-W4tsy4xaiXUHSh_KoFIWo,2005
|
|
595
597
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.cluster.amazonlinux2023-ami.ts,sha256=8CiIIkgoFL07j14crtZl89FT6sTpmllyciFQj7EPZXY,2732
|
|
596
598
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.container-port-range.ts,sha256=82Gw2g8iB_Uzm3pp7wvyI48FBfU0WTftb-_u3ti6lEE,1064
|
|
597
599
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.custom-task-revision.ts,sha256=DmaZEHR34V3UtxU7XW_uBV1Si9rdSoTLxLdpCe65MEg,1071
|
|
@@ -933,7 +935,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-nodejs/in
|
|
|
933
935
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-nodejs/integ.modules.ts,sha256=etsjdg80JJb_gag1tC0I2DgOcARVOCrRZsQYr46sQv0,2323
|
|
934
936
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-nodejs/integ.nodejs.build.images.ts,sha256=ws9WjuRf3nTKpTnZXNRheCwkQTDjf_UV9KwinnOHzVw,1742
|
|
935
937
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-nodejs/integ.specifycode.ts,sha256=JdlBTKpPf5xlQlfTYlXUMbMVwGD0a-heEYPx0ZNFO9U,1938
|
|
936
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/README.md,sha256=
|
|
938
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/README.md,sha256=74h2Zqr1b3HxYRFRch3KNJXezJvahic0sWwXNZWcgpc,24293
|
|
937
939
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.expose-metric-with-dimensions.ts,sha256=zqTcmUokT9JEUxcJkTKsAfxN9Nph-7Xwv7xACXZXyxg,1348
|
|
938
940
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.expose-metric.ts,sha256=nHHNSRyq2eGVZkZe1_UWwdr7vWnBDqdMWoiArzJleHI,1256
|
|
939
941
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.log-group-metrics.ts,sha256=3t37idu5s4B6dxhZWD_7pNeue7eJCume6MdEgtc1TTs,707
|
|
@@ -942,6 +944,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.log-r
|
|
|
942
944
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.log-retention-retries.ts,sha256=b3uLWuEZZeOOkwno6y3yBFVT6AbcX9z1VITcyupKnfQ,1336
|
|
943
945
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.log-retention.ts,sha256=KPWCfAezyRQ9KZR88gbnsIb9TUrjjUYLDMDjFc54XvU,900
|
|
944
946
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.loggroup-grantread.ts,sha256=3Gjcq80bm6qeqjTmq_rbVVYvbWDTLkGWFclh3_XLY2Q,491
|
|
947
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.loggroup-transformer.ts,sha256=2DmUNPzqW5FOnYRckyW74XKJwbubhc2gdIT2YhUoi9E,1271
|
|
945
948
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.loggroupclass.ts,sha256=ZiJznICcvepDPf97FzReAD5l9FTnWtL6RsNw1cQABgg,2001
|
|
946
949
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.metricfilter-dimensions.ts,sha256=XAqWm-eyYcmifgZnB4soQEYFBIAbPpkzvnm1Uzng828,913
|
|
947
950
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.metricfilter-unit.ts,sha256=1g5XU59COeVHj4kL8GuNGnse_Kx0gMHboew4RGR1zyM,983
|
|
@@ -949,6 +952,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.metri
|
|
|
949
952
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.save-logs-insights-query-definition.ts,sha256=Kl3AfL3Dui8zFHEjYJJpF8FS1wZA2TqmdK9rHJD66AA,1930
|
|
950
953
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.subscriptionfilter-distribution.ts,sha256=bJuViz_6LEdWKFmZd5_Bt_tz3ecJOoFcnZ-LX_GfFpE,1048
|
|
951
954
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.subscriptionfilter.ts,sha256=59XLDCR4RhlW15aBhK4wFoOycBPfAQSgEhk277kyUEQ,1164
|
|
955
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.transformer.ts,sha256=8XEyt5s-yyGwL152EB_1xapUG44MWoMPv_Wtm86iYF0,874
|
|
952
956
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs-destinations/README.md,sha256=jRol_s0IWY2iC6lcpvHSwMOfBGHEbnaZnRRqbx-CS6w,265
|
|
953
957
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs-destinations/integ.firehose.ts,sha256=Gdtm0GoW-RozF_9eEbScyjk_4CLi01Rrr6tLy_V8tcs,1576
|
|
954
958
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs-destinations/integ.kinesis.ts,sha256=o3rBgalluFInomW7D0U6Q-mBKSFR5oEnQXTlRm8ZxOE,1306
|
|
@@ -972,7 +976,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservic
|
|
|
972
976
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.unsignedbasicauth.ts,sha256=B13diAjHunM-L1w1FHgpDRup-j4Xnnb-rpn171bbjpw,925
|
|
973
977
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.vpc.ts,sha256=92FvTQd0U190KN53A8UU4eV3ggwm1GeVn4f3nRE56T0,1400
|
|
974
978
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.without-logs-resource-policy.ts,sha256=CTj7BjTXc_Q4J_NnK8C62vXGl3ZIWMbmcuPHjvW01vU,1971
|
|
975
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/README.md,sha256
|
|
979
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/README.md,sha256=sJzFSQFJ0CVBOGWIJ-BEFJzYBh3j866WSk9iJOwdrqw,66604
|
|
976
980
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/aurora-serverless-v2.md,sha256=D4_EKB6d62nNN0LwL3XGX0YFjwdSBXE8namaBUqU9qw,10484
|
|
977
981
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-applyimmediately.ts,sha256=UB7bdVX6UD63SYroZRXs5V493f1lUX_3lD5W7EeU5AQ,1135
|
|
978
982
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-availability-zone.ts,sha256=59DvW_-fFQ2NPddJdbayEu7V-NVBAPvm3A05IvbBOAA,1765
|
|
@@ -1006,6 +1010,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluste
|
|
|
1006
1010
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.instance-applyimmediately.ts,sha256=l5SXf5yZ1gMOA-kFdY9f2TKRyGufmVJuWG2rEpuo1Ps,931
|
|
1007
1011
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.instance-ca-certificate.ts,sha256=t0IwouXqbtdmyu6-hwMyai_uex_aenGKXAvg4-q8x9k,864
|
|
1008
1012
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.instance-create-grant.ts,sha256=Y25LqPowUqSoYx2Xuw21Flegu15xUlwR_cKj2ewcsKg,1114
|
|
1013
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.instance-database-insights.ts,sha256=ZfjIh_Sy60Ldo2rHLOR8ju4F9uwQ4KEsGstXD85lHx8,1539
|
|
1009
1014
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.instance-dual.ts,sha256=kf6SnT5IHl16CVXPwCDE1gGbfyh79qYMT3YbGTXLKM0,1998
|
|
1010
1015
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.instance-engine-lifecycle-support.ts,sha256=phHmFqX3O6cRhApY4ezncv0SfWgWLOSXpgaVTAx81ac,1876
|
|
1011
1016
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.instance-from-cluster-snapshot.ts,sha256=huTf_WsbZ1UaLkLEGzUYIvgE-n8yHr9sFtqpToJMVY4,958
|
|
@@ -1103,6 +1108,8 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-assets/integ.
|
|
|
1103
1108
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/README.md,sha256=a-C2pyMsW6p-jZuPndPO6hH2k7q7Fc1zJEeS2V5mE0w,23333
|
|
1104
1109
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-big-response.ts,sha256=Q5DWvx812GnOBwmJxDO4b1KJh9sHkug-fP6MfwdWKaw,3018
|
|
1105
1110
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-cloudfront.ts,sha256=3xowZLgQx0aOb3B2jEqmJSbX9Ui1qT4kNRuTpoDPJHA,1579
|
|
1111
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-cross-nested-stack-source.ts,sha256=xxxY1eL0TWW31Mm4iuPBgrEaSjIv_KWigRm_Nm2LLzE,2084
|
|
1112
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-cross-stack-source.ts,sha256=tO2aPjWsBIbxBYZyaJ0WRR9i_TN-GC_HPi9puzd7v2w,1407
|
|
1106
1113
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-data.ts,sha256=zvc0zwU4ch8OOrx53sf-dOjRwR0hbp7zMtDCezlxMFI,3595
|
|
1107
1114
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-deployed-bucket.ts,sha256=Ungrlfwdl5cSb7fd-lTqZoekkXL3M0KGMY6dvD4Kv_A,1383
|
|
1108
1115
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-large-file.ts,sha256=x5QZTMytSGxd2s65AWI3PVNN9fMWkEDEH91NGR_HXWs,8835
|
|
@@ -1317,7 +1324,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cloudformation-inclu
|
|
|
1317
1324
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cloudformation-include/integ.intrinsic-deletion-policy.ts,sha256=429Cz_kNp9aRs2TzK3nKyPLqKDF1UqD4PdkMmMEFL40,402
|
|
1318
1325
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cloudformation-include/integ.nested-stacks.ts,sha256=wA07P5nJM0CfW90QE14JvE_RYSkDqH-wthivd69nsPE,427
|
|
1319
1326
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cloudformation-include/integ.resource-tags-wtih-intrinsics.ts,sha256=48jFRaICLD-sTyaGEtcJ2fxc9qh5CZxtITonnBC_b6U,408
|
|
1320
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/core/README.md,sha256=
|
|
1327
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/core/README.md,sha256=IBivHrPr6iBrM304zecNLL-3ODOqMjIKVVHWij1G4nk,72547
|
|
1321
1328
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/core/acknowledge-warnings.md,sha256=KjQ8of5npUmUUhQh0xGCyaKQElM5GB0njxdPC0AXg_8,5616
|
|
1322
1329
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/core/cross-region-stack-references.md,sha256=1bKMe3s3fIvHiUFtTYeNvpwFS5CLKD8p9BAUFJipwfY,10552
|
|
1323
1330
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/core/integ.cfn-mappings-find-in-map.ts,sha256=JcoWpn92_hMrdLyE5LNDrgPu2jn4Y4ScgPsQXXUKlUQ,1725
|
|
@@ -1328,7 +1335,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/core/integ.prop-inje
|
|
|
1328
1335
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/core/integ.removal-policies.ts,sha256=b6ePZkMn5IyTizPV2VnxSR2X8RP2Obh8i7P1b7-S68o,1541
|
|
1329
1336
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/core/integ.stack.ts,sha256=xf24TLT1li9lQtn7LMTd0hPfiWPpBym8OMYD4cTiw-o,666
|
|
1330
1337
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/core/integ.token-aware-stringify-logical-ids.ts,sha256=Nb1IrrTzMyuhwAmcZyHLVmLjpC0qM2JrTnw392f3C64,1122
|
|
1331
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/README.md,sha256=
|
|
1338
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/README.md,sha256=yd8jCCwHI7up_t7g1E0x1FazXxjI6bmKpdUeXEYocHM,45244
|
|
1332
1339
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.aws-custom-resource-assumeRole.ts,sha256=McBeN37e6mNkmcHPb5kgdsTRPMY9pxzH8SwHmdDaRHA,1436
|
|
1333
1340
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.aws-custom-resource-athena.ts,sha256=sv7NmgJ-7rzxZIqVJdQXdAiuFLaa3Te_c3z-VwJ_lQo,5120
|
|
1334
1341
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.aws-custom-resource-cloudwatch.ts,sha256=vunS7eZnfupDnwKACQVccX1WxhwoATaNOxYdG20lWgc,1393
|
|
@@ -1351,7 +1358,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/int
|
|
|
1351
1358
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.provider-with-waiter-state-machine-custom-role.ts,sha256=60mjzf_2NI9zO30B2Guye5sA7kxIl4yrLMXUEWIDO9I,2401
|
|
1352
1359
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.provider-with-waiter-state-machine.ts,sha256=6Ci2_ABcu5azSj1f0EzY1VD4lQUg9KI5l1Q7ieejI-0,2058
|
|
1353
1360
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.provider.ts,sha256=u_YVV0YZk6hyIxo5JOOSwwUORbqS3BVbJU6DIAwxuk0,1814
|
|
1354
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/FEATURE_FLAGS.md,sha256=
|
|
1361
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/FEATURE_FLAGS.md,sha256=FHaIM9IpdxItHc9iqRhGZ9QAafX8IxmUbd6ZkxtBWcM,105826
|
|
1355
1362
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/NESTED_ASSEMBLIES.md,sha256=P8PNyr4hIC_i-9aUxa301-5-N4tLcoHYnELBp3C6SQQ,4949
|
|
1356
1363
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/README.md,sha256=ZCeTKvVasVTvIDaY1cuVqCEWMR3P_Lndtl32kJeFUUU,25588
|
|
1357
1364
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/lambda-layer-awscli/README.md,sha256=kMrrptXZcAiK_TXRQD4XcaNRa3RXaIoIUQRZYi29b30,681
|
|
@@ -1382,8 +1389,8 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.pipe
|
|
|
1382
1389
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/region-info/README.md,sha256=vewWkV3ds9o9iyyYaJBNTkaKJ2XA6K2yF17tAxUnujg,2718
|
|
1383
1390
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/triggers/README.md,sha256=hYIx7DbG_7p4LYLUfxDwgIQjw9UNdz1GLrqDe8_Dbko,4132
|
|
1384
1391
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/triggers/integ.triggers.ts,sha256=4OHplMoBOgHGkktAzoU-TuNmJQS5wGAUvBfj5bGSe_Y,2807
|
|
1385
|
-
konokenj_cdk_api_mcp_server-0.
|
|
1386
|
-
konokenj_cdk_api_mcp_server-0.
|
|
1387
|
-
konokenj_cdk_api_mcp_server-0.
|
|
1388
|
-
konokenj_cdk_api_mcp_server-0.
|
|
1389
|
-
konokenj_cdk_api_mcp_server-0.
|
|
1392
|
+
konokenj_cdk_api_mcp_server-0.35.0.dist-info/METADATA,sha256=GL44k9fsFeZCcJJPgTIIUJIXQFA1WBln1P3iu_e410Q,2646
|
|
1393
|
+
konokenj_cdk_api_mcp_server-0.35.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
1394
|
+
konokenj_cdk_api_mcp_server-0.35.0.dist-info/entry_points.txt,sha256=bVDhMdyCC1WNMPOMbmB82jvWII2CIrwTZDygdCf0cYQ,79
|
|
1395
|
+
konokenj_cdk_api_mcp_server-0.35.0.dist-info/licenses/LICENSE.txt,sha256=5OIAASeg1HM22mVZ1enz9bgZ7TlsGfWXnj02P9OgFyk,1098
|
|
1396
|
+
konokenj_cdk_api_mcp_server-0.35.0.dist-info/RECORD,,
|
{konokenj_cdk_api_mcp_server-0.33.0.dist-info → konokenj_cdk_api_mcp_server-0.35.0.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|