konokenj.cdk-api-mcp-server 0.54.0__py3-none-any.whl → 0.55.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cdk_api_mcp_server/__about__.py +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-imagebuilder-alpha/README.md +204 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/mixins-preview/README.md +16 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cognito/README.md +2 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.ebs.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/README.md +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-cloudwatch-logs-exports.ts +56 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53/README.md +32 -31
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53/integ.zone-delegation-iam-stack.ts +66 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-big-response.ts +4 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-data.ts +15 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-large-file.ts +3 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/README.md +56 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.external-id.ts +80 -0
- {konokenj_cdk_api_mcp_server-0.54.0.dist-info → konokenj_cdk_api_mcp_server-0.55.0.dist-info}/METADATA +2 -2
- {konokenj_cdk_api_mcp_server-0.54.0.dist-info → konokenj_cdk_api_mcp_server-0.55.0.dist-info}/RECORD +19 -16
- {konokenj_cdk_api_mcp_server-0.54.0.dist-info → konokenj_cdk_api_mcp_server-0.55.0.dist-info}/WHEEL +0 -0
- {konokenj_cdk_api_mcp_server-0.54.0.dist-info → konokenj_cdk_api_mcp_server-0.55.0.dist-info}/entry_points.txt +0 -0
- {konokenj_cdk_api_mcp_server-0.54.0.dist-info → konokenj_cdk_api_mcp_server-0.55.0.dist-info}/licenses/LICENSE.txt +0 -0
cdk_api_mcp_server/__about__.py
CHANGED
|
@@ -36,6 +36,210 @@ EC2 Image Builder supports AWS-managed components for common tasks, AWS Marketpl
|
|
|
36
36
|
that you create. Components run during specific workflow phases: build and validate phases during the build stage, and
|
|
37
37
|
test phase during the test stage.
|
|
38
38
|
|
|
39
|
+
### Component
|
|
40
|
+
|
|
41
|
+
A component defines the sequence of steps required to customize an instance during image creation (build component) or
|
|
42
|
+
test an instance launched from the created image (test component). Components are created from declarative YAML or JSON
|
|
43
|
+
documents that describe runtime configuration for building, validating, or testing instances. Components are included
|
|
44
|
+
when added to the image recipe or container recipe for an image build.
|
|
45
|
+
|
|
46
|
+
EC2 Image Builder supports AWS-managed components for common tasks, AWS Marketplace components, and custom components
|
|
47
|
+
that you create. Components run during specific workflow phases: build and validate phases during the build stage, and
|
|
48
|
+
test phase during the test stage.
|
|
49
|
+
|
|
50
|
+
#### Basic Usage
|
|
51
|
+
|
|
52
|
+
Create a component with the required properties: platform and component data.
|
|
53
|
+
|
|
54
|
+
```ts
|
|
55
|
+
const component = new imagebuilder.Component(this, 'MyComponent', {
|
|
56
|
+
platform: imagebuilder.Platform.LINUX,
|
|
57
|
+
data: imagebuilder.ComponentData.fromJsonObject({
|
|
58
|
+
schemaVersion: imagebuilder.ComponentSchemaVersion.V1_0,
|
|
59
|
+
phases: [
|
|
60
|
+
{
|
|
61
|
+
name: imagebuilder.ComponentPhaseName.BUILD,
|
|
62
|
+
steps: [
|
|
63
|
+
{
|
|
64
|
+
name: 'install-app',
|
|
65
|
+
action: imagebuilder.ComponentAction.EXECUTE_BASH,
|
|
66
|
+
inputs: {
|
|
67
|
+
commands: ['echo "Installing my application..."', 'yum update -y'],
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
],
|
|
71
|
+
},
|
|
72
|
+
],
|
|
73
|
+
}),
|
|
74
|
+
});
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
#### Component Data Sources
|
|
78
|
+
|
|
79
|
+
##### Inline Component Data
|
|
80
|
+
|
|
81
|
+
Use `ComponentData.fromInline()` for existing YAML/JSON definitions:
|
|
82
|
+
|
|
83
|
+
```ts
|
|
84
|
+
const component = new imagebuilder.Component(this, 'InlineComponent', {
|
|
85
|
+
platform: imagebuilder.Platform.LINUX,
|
|
86
|
+
data: imagebuilder.ComponentData.fromInline(`
|
|
87
|
+
name: my-component
|
|
88
|
+
schemaVersion: 1.0
|
|
89
|
+
phases:
|
|
90
|
+
- name: build
|
|
91
|
+
steps:
|
|
92
|
+
- name: update-os
|
|
93
|
+
action: ExecuteBash
|
|
94
|
+
inputs:
|
|
95
|
+
commands: ['yum update -y']
|
|
96
|
+
`)
|
|
97
|
+
});
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
##### JSON Object Component Data
|
|
101
|
+
|
|
102
|
+
Most developer-friendly approach using objects:
|
|
103
|
+
|
|
104
|
+
```ts
|
|
105
|
+
const component = new imagebuilder.Component(this, 'JsonComponent', {
|
|
106
|
+
platform: imagebuilder.Platform.LINUX,
|
|
107
|
+
data: imagebuilder.ComponentData.fromJsonObject({
|
|
108
|
+
schemaVersion: imagebuilder.ComponentSchemaVersion.V1_0,
|
|
109
|
+
phases: [
|
|
110
|
+
{
|
|
111
|
+
name: imagebuilder.ComponentPhaseName.BUILD,
|
|
112
|
+
steps: [
|
|
113
|
+
{
|
|
114
|
+
name: 'configure-app',
|
|
115
|
+
action: imagebuilder.ComponentAction.CREATE_FILE,
|
|
116
|
+
inputs: {
|
|
117
|
+
path: '/etc/myapp/config.json',
|
|
118
|
+
content: '{"env": "production"}',
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
],
|
|
122
|
+
},
|
|
123
|
+
],
|
|
124
|
+
}),
|
|
125
|
+
});
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
##### Structured Component Document
|
|
129
|
+
|
|
130
|
+
For type-safe, CDK-native definitions with enhanced properties like `timeout` and `onFailure`:
|
|
131
|
+
|
|
132
|
+
```ts
|
|
133
|
+
const component = new imagebuilder.Component(this, 'StructuredComponent', {
|
|
134
|
+
platform: imagebuilder.Platform.LINUX,
|
|
135
|
+
data: imagebuilder.ComponentData.fromComponentDocumentJsonObject({
|
|
136
|
+
schemaVersion: imagebuilder.ComponentSchemaVersion.V1_0,
|
|
137
|
+
phases: [
|
|
138
|
+
{
|
|
139
|
+
name: imagebuilder.ComponentPhaseName.BUILD,
|
|
140
|
+
steps: [
|
|
141
|
+
{
|
|
142
|
+
name: 'install-with-timeout',
|
|
143
|
+
action: imagebuilder.ComponentAction.EXECUTE_BASH,
|
|
144
|
+
timeout: Duration.minutes(10),
|
|
145
|
+
onFailure: imagebuilder.ComponentOnFailure.CONTINUE,
|
|
146
|
+
inputs: {
|
|
147
|
+
commands: ['./install-script.sh'],
|
|
148
|
+
},
|
|
149
|
+
},
|
|
150
|
+
],
|
|
151
|
+
},
|
|
152
|
+
],
|
|
153
|
+
}),
|
|
154
|
+
});
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
##### S3 Component Data
|
|
158
|
+
|
|
159
|
+
For those components you want to upload or have uploaded to S3:
|
|
160
|
+
|
|
161
|
+
```ts
|
|
162
|
+
// Upload a local file
|
|
163
|
+
const componentFromAsset = new imagebuilder.Component(this, 'AssetComponent', {
|
|
164
|
+
platform: imagebuilder.Platform.LINUX,
|
|
165
|
+
data: imagebuilder.ComponentData.fromAsset(this, 'ComponentAsset', './my-component.yml'),
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
// Reference an existing S3 object
|
|
169
|
+
const bucket = s3.Bucket.fromBucketName(this, 'ComponentBucket', 'my-components-bucket');
|
|
170
|
+
const componentFromS3 = new imagebuilder.Component(this, 'S3Component', {
|
|
171
|
+
platform: imagebuilder.Platform.LINUX,
|
|
172
|
+
data: imagebuilder.ComponentData.fromS3(bucket, 'components/my-component.yml'),
|
|
173
|
+
});
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
#### Encrypt component data with a KMS key
|
|
177
|
+
|
|
178
|
+
You can encrypt component data with a KMS key, so that only principals with access to decrypt with the key are able to
|
|
179
|
+
access the component data.
|
|
180
|
+
|
|
181
|
+
```ts
|
|
182
|
+
const component = new imagebuilder.Component(this, 'EncryptedComponent', {
|
|
183
|
+
platform: imagebuilder.Platform.LINUX,
|
|
184
|
+
kmsKey: new kms.Key(this, 'ComponentKey'),
|
|
185
|
+
data: imagebuilder.ComponentData.fromJsonObject({
|
|
186
|
+
schemaVersion: imagebuilder.ComponentSchemaVersion.V1_0,
|
|
187
|
+
phases: [
|
|
188
|
+
{
|
|
189
|
+
name: imagebuilder.ComponentPhaseName.BUILD,
|
|
190
|
+
steps: [
|
|
191
|
+
{
|
|
192
|
+
name: 'secure-setup',
|
|
193
|
+
action: imagebuilder.ComponentAction.EXECUTE_BASH,
|
|
194
|
+
inputs: {
|
|
195
|
+
commands: ['echo "This component data is encrypted with KMS"'],
|
|
196
|
+
},
|
|
197
|
+
},
|
|
198
|
+
],
|
|
199
|
+
},
|
|
200
|
+
],
|
|
201
|
+
}),
|
|
202
|
+
});
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
#### AWS-Managed Components
|
|
206
|
+
|
|
207
|
+
AWS provides a collection of managed components for common tasks:
|
|
208
|
+
|
|
209
|
+
```ts
|
|
210
|
+
// Install AWS CLI v2
|
|
211
|
+
const awsCliComponent = imagebuilder.AwsManagedComponent.awsCliV2(this, 'AwsCli', {
|
|
212
|
+
platform: imagebuilder.Platform.LINUX
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
// Update the operating system
|
|
216
|
+
const updateComponent = imagebuilder.AwsManagedComponent.updateOS(this, 'UpdateOS', {
|
|
217
|
+
platform: imagebuilder.Platform.LINUX
|
|
218
|
+
});
|
|
219
|
+
|
|
220
|
+
// Reference any AWS-managed component by name
|
|
221
|
+
const customAwsComponent = imagebuilder.AwsManagedComponent.fromAwsManagedComponentName(
|
|
222
|
+
this,
|
|
223
|
+
'CloudWatchAgent',
|
|
224
|
+
'amazon-cloudwatch-agent-linux'
|
|
225
|
+
);
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
#### AWS Marketplace Components
|
|
229
|
+
|
|
230
|
+
You can reference AWS Marketplace components using the marketplace component name and its product ID:
|
|
231
|
+
|
|
232
|
+
```ts
|
|
233
|
+
const marketplaceComponent = imagebuilder.AwsMarketplaceComponent.fromAwsMarketplaceComponentAttributes(
|
|
234
|
+
this,
|
|
235
|
+
'MarketplaceComponent',
|
|
236
|
+
{
|
|
237
|
+
componentName: 'my-marketplace-component',
|
|
238
|
+
marketplaceProductId: 'prod-1234567890abcdef0',
|
|
239
|
+
}
|
|
240
|
+
);
|
|
241
|
+
```
|
|
242
|
+
|
|
39
243
|
### Infrastructure Configuration
|
|
40
244
|
|
|
41
245
|
Infrastructure configuration defines the compute resources and environment settings used during the image building
|
|
@@ -37,6 +37,22 @@ Mixins.of(bucket)
|
|
|
37
37
|
.apply(new AutoDeleteObjects());
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
+
### Fluent Syntax with `.with()`
|
|
41
|
+
|
|
42
|
+
For convenience, you can use the `.with()` method for a more fluent syntax:
|
|
43
|
+
|
|
44
|
+
```typescript
|
|
45
|
+
import '@aws-cdk/mixins-preview/with';
|
|
46
|
+
|
|
47
|
+
const bucket = new s3.CfnBucket(scope, "MyBucket")
|
|
48
|
+
.with(new EnableVersioning())
|
|
49
|
+
.with(new AutoDeleteObjects());
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
The `.with()` method is available after importing `@aws-cdk/mixins-preview/with`, which augments all constructs with this method. It provides the same functionality as `Mixins.of().apply()` but with a more chainable API.
|
|
53
|
+
|
|
54
|
+
> **Note**: The `.with()` fluent syntax is only available in JavaScript and TypeScript. Other jsii languages (Python, Java, C#, and Go) should use the `Mixins.of(...).mustApply()` syntax instead. The import requirement is temporary during the preview phase. Once the API is stable, the `.with()` method will be available by default on all constructs and in all languages.
|
|
55
|
+
|
|
40
56
|
## Creating Custom Mixins
|
|
41
57
|
|
|
42
58
|
Mixins are simple classes that implement the `IMixin` interface:
|
|
@@ -480,13 +480,13 @@ new cognito.UserPool(this, 'myuserpool', {
|
|
|
480
480
|
|
|
481
481
|
### Threat Protection
|
|
482
482
|
|
|
483
|
-
This feature is only available if your Feature Plan is set to PLUS.
|
|
484
|
-
|
|
485
483
|
Threat Protection can be set to configure enforcement levels and automatic responses for users in password-based and custom-challenge authentication flows.
|
|
486
484
|
For configuration, there are 2 options for standard authentication and custom authentication.
|
|
487
485
|
These are represented with properties `standardThreatProtectionMode` and `customThreatProtectionMode`.
|
|
488
486
|
See the [documentation on Threat Protection](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-settings-threat-protection.html)
|
|
489
487
|
|
|
488
|
+
**Note**: Threat Protection requires the PLUS feature plan for new user pools. CDK allows you to configure threat protection settings at synthesis time, and CloudFormation will validate feature plan requirements at deployment time. Existing user pools that are grandfathered on LITE plans with threat protection enabled will continue to work.
|
|
489
|
+
|
|
490
490
|
|
|
491
491
|
### Emails
|
|
492
492
|
|
|
@@ -7,7 +7,7 @@ class TestStack extends Stack {
|
|
|
7
7
|
constructor(scope: Construct, id: string, props?: StackProps) {
|
|
8
8
|
super(scope, id, props);
|
|
9
9
|
|
|
10
|
-
const instanceTypes = ['i4g.large.search', 'i4i.xlarge.search', 'r7gd.xlarge.search'];
|
|
10
|
+
const instanceTypes = ['i4g.large.search', 'i4i.xlarge.search', 'r7gd.xlarge.search', 'r8gd.medium.search'];
|
|
11
11
|
|
|
12
12
|
instanceTypes.forEach((instanceType, index) => {
|
|
13
13
|
new opensearch.Domain(this, `Domain${index + 1}`, {
|
|
@@ -1204,7 +1204,7 @@ const cluster = new rds.DatabaseCluster(this, 'Database', {
|
|
|
1204
1204
|
}),
|
|
1205
1205
|
writer: rds.ClusterInstance.provisioned('writer'),
|
|
1206
1206
|
vpc,
|
|
1207
|
-
cloudwatchLogsExports: ['error', 'general', 'slowquery', 'audit'], // Export all available MySQL-based logs
|
|
1207
|
+
cloudwatchLogsExports: ['error', 'general', 'slowquery', 'audit', 'instance', 'iam-db-auth-error'], // Export all available MySQL-based logs
|
|
1208
1208
|
cloudwatchLogsRetention: logs.RetentionDays.THREE_MONTHS, // Optional - default is to never expire logs
|
|
1209
1209
|
cloudwatchLogsRetentionRole: myLogsPublishingRole, // Optional - a role will be created if not provided
|
|
1210
1210
|
// ...
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import * as cdk from 'aws-cdk-lib/core';
|
|
2
|
+
import { ExpectedResult, IntegTest } from '@aws-cdk/integ-tests-alpha';
|
|
3
|
+
import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
4
|
+
import * as rds from 'aws-cdk-lib/aws-rds';
|
|
5
|
+
|
|
6
|
+
const app = new cdk.App();
|
|
7
|
+
|
|
8
|
+
const stack = new cdk.Stack(app, 'CloudWatchLogsExportsStack');
|
|
9
|
+
const vpc = new ec2.Vpc(stack, 'VPC');
|
|
10
|
+
|
|
11
|
+
const mysql = new rds.DatabaseCluster(stack, 'DatabaseClusterMysql', {
|
|
12
|
+
engine: rds.DatabaseClusterEngine.auroraMysql({ version: rds.AuroraMysqlEngineVersion.VER_3_09_0 }),
|
|
13
|
+
writer: rds.ClusterInstance.serverlessV2('writerInstance'),
|
|
14
|
+
vpc,
|
|
15
|
+
cloudwatchLogsExports: ['error', 'general', 'slowquery', 'audit', 'instance', 'iam-db-auth-error'],
|
|
16
|
+
removalPolicy: cdk.RemovalPolicy.DESTROY,
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
const postgresql = new rds.DatabaseCluster(stack, 'DatabaseClusterPostgresql', {
|
|
20
|
+
engine: rds.DatabaseClusterEngine.auroraPostgres({ version: rds.AuroraPostgresEngineVersion.VER_16_4 }),
|
|
21
|
+
writer: rds.ClusterInstance.serverlessV2('writerInstance'),
|
|
22
|
+
vpc,
|
|
23
|
+
cloudwatchLogsExports: ['postgresql', 'iam-db-auth-error', 'instance'],
|
|
24
|
+
removalPolicy: cdk.RemovalPolicy.DESTROY,
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
const integ = new IntegTest(app, 'CloudWatchLogsExportsStackInteg', {
|
|
28
|
+
testCases: [stack],
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
integ.assertions.awsApiCall('RDS', 'describeDBClusters', {
|
|
32
|
+
DBClusterIdentifier: mysql.clusterIdentifier,
|
|
33
|
+
}).expect(ExpectedResult.objectLike({
|
|
34
|
+
DBClusters: [{
|
|
35
|
+
EnabledCloudwatchLogsExports: [
|
|
36
|
+
'audit',
|
|
37
|
+
'error',
|
|
38
|
+
'general',
|
|
39
|
+
'iam-db-auth-error',
|
|
40
|
+
'instance',
|
|
41
|
+
'slowquery',
|
|
42
|
+
],
|
|
43
|
+
}],
|
|
44
|
+
}));
|
|
45
|
+
|
|
46
|
+
integ.assertions.awsApiCall('RDS', 'describeDBClusters', {
|
|
47
|
+
DBClusterIdentifier: postgresql.clusterIdentifier,
|
|
48
|
+
}).expect(ExpectedResult.objectLike({
|
|
49
|
+
DBClusters: [{
|
|
50
|
+
EnabledCloudwatchLogsExports: [
|
|
51
|
+
'iam-db-auth-error',
|
|
52
|
+
'instance',
|
|
53
|
+
'postgresql',
|
|
54
|
+
],
|
|
55
|
+
}],
|
|
56
|
+
}));
|
|
@@ -367,40 +367,40 @@ const crossAccountRole = new iam.Role(this, 'CrossAccountRole', {
|
|
|
367
367
|
roleName: 'MyDelegationRole',
|
|
368
368
|
// The other account
|
|
369
369
|
assumedBy: new iam.AccountPrincipal('12345678901'),
|
|
370
|
-
// You can scope down this role policy to be least privileged.
|
|
371
|
-
// If you want the other account to be able to manage specific records,
|
|
372
|
-
// you can scope down by resource and/or normalized record names
|
|
373
|
-
inlinePolicies: {
|
|
374
|
-
crossAccountPolicy: new iam.PolicyDocument({
|
|
375
|
-
statements: [
|
|
376
|
-
new iam.PolicyStatement({
|
|
377
|
-
sid: 'ListHostedZonesByName',
|
|
378
|
-
effect: iam.Effect.ALLOW,
|
|
379
|
-
actions: ['route53:ListHostedZonesByName'],
|
|
380
|
-
resources: ['*'],
|
|
381
|
-
}),
|
|
382
|
-
new iam.PolicyStatement({
|
|
383
|
-
sid: 'GetHostedZoneAndChangeResourceRecordSets',
|
|
384
|
-
effect: iam.Effect.ALLOW,
|
|
385
|
-
actions: ['route53:GetHostedZone', 'route53:ChangeResourceRecordSets'],
|
|
386
|
-
// This example assumes the RecordSet subdomain.somexample.com
|
|
387
|
-
// is contained in the HostedZone
|
|
388
|
-
resources: ['arn:aws:route53:::hostedzone/HZID00000000000000000'],
|
|
389
|
-
conditions: {
|
|
390
|
-
'ForAllValues:StringLike': {
|
|
391
|
-
'route53:ChangeResourceRecordSetsNormalizedRecordNames': [
|
|
392
|
-
'subdomain.someexample.com',
|
|
393
|
-
],
|
|
394
|
-
},
|
|
395
|
-
},
|
|
396
|
-
}),
|
|
397
|
-
],
|
|
398
|
-
}),
|
|
399
|
-
},
|
|
400
370
|
});
|
|
401
371
|
parentZone.grantDelegation(crossAccountRole);
|
|
402
372
|
```
|
|
403
373
|
|
|
374
|
+
To restrict the records that can be created with the delegation IAM role, use the optional `delegatedZoneNames` property in the delegation options,
|
|
375
|
+
which enforces the `route53:ChangeResourceRecordSetsNormalizedRecordNames` condition key for record names that match those hosted zone names.
|
|
376
|
+
The `delegatedZoneNames` list may only consist of hosted zones names that are subzones of the parent hosted zone.
|
|
377
|
+
|
|
378
|
+
If the delegated zone name contains an unresolved token,
|
|
379
|
+
it must resolve to a zone name that satisfies the requirements according to the documentation:
|
|
380
|
+
https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/specifying-conditions-route53.html#route53_rrset_conditionkeys_normalization
|
|
381
|
+
|
|
382
|
+
> All letters must be lowercase.
|
|
383
|
+
> The DNS name must be without the trailing dot.
|
|
384
|
+
> Characters other than a–z, 0–9, - (hyphen), _ (underscore), and . (period, as a delimiter between labels) must use escape codes in the format \three-digit octal code. For example, \052 is the octal code for character *.
|
|
385
|
+
|
|
386
|
+
This feature allows you to better follow the minimum permissions privilege principle:
|
|
387
|
+
|
|
388
|
+
```ts
|
|
389
|
+
const parentZone = new route53.PublicHostedZone(this, 'HostedZone', {
|
|
390
|
+
zoneName: 'someexample.com',
|
|
391
|
+
});
|
|
392
|
+
|
|
393
|
+
declare const betaCrossAccountRole: iam.Role;
|
|
394
|
+
parentZone.grantDelegation(betaCrossAccountRole, {
|
|
395
|
+
delegatedZoneNames: ['beta.someexample.com'],
|
|
396
|
+
});
|
|
397
|
+
|
|
398
|
+
declare const prodCrossAccountRole: iam.Role;
|
|
399
|
+
parentZone.grantDelegation(prodCrossAccountRole, {
|
|
400
|
+
delegatedZoneNames: ['prod.someexample.com'],
|
|
401
|
+
});
|
|
402
|
+
```
|
|
403
|
+
|
|
404
404
|
In the account containing the child zone to be delegated:
|
|
405
405
|
|
|
406
406
|
```ts
|
|
@@ -540,7 +540,8 @@ const zone = route53.HostedZone.fromHostedZoneAttributes(this, 'MyZone', {
|
|
|
540
540
|
```
|
|
541
541
|
|
|
542
542
|
Alternatively, use the `HostedZone.fromHostedZoneId` to import hosted zones if
|
|
543
|
-
you know the ID and the retrieval for the `zoneName` is undesirable.
|
|
543
|
+
you know the ID and the retrieval for the `zoneName` is undesirable.
|
|
544
|
+
Note that any records created with a hosted zone obtained this way must have their name be fully qualified
|
|
544
545
|
|
|
545
546
|
```ts
|
|
546
547
|
const zone = route53.HostedZone.fromHostedZoneId(this, 'MyZone', 'ZOJJZC49E0EPZ');
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import * as iam from 'aws-cdk-lib/aws-iam';
|
|
2
|
+
import * as cdk from 'aws-cdk-lib';
|
|
3
|
+
import * as route53 from 'aws-cdk-lib/aws-route53';
|
|
4
|
+
import { Construct } from 'constructs';
|
|
5
|
+
import { IntegTest } from '@aws-cdk/integ-tests-alpha';
|
|
6
|
+
|
|
7
|
+
class ZoneDelegationIamStack extends cdk.Stack {
|
|
8
|
+
constructor(scope: Construct, id: string) {
|
|
9
|
+
super(scope, id);
|
|
10
|
+
|
|
11
|
+
const parentZone = new route53.PublicHostedZone(this, 'ParentZone', {
|
|
12
|
+
zoneName: 'uniqueexample.com',
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
const trusteeRoleArns = this.formatArn({
|
|
16
|
+
service: 'iam',
|
|
17
|
+
region: '',
|
|
18
|
+
resource: 'role',
|
|
19
|
+
resourceName: 'ZoneDelegationStack-*',
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
const delegationRole = new iam.Role(this, 'ZoneDelegationRole', {
|
|
23
|
+
roleName: 'ExampleDelegationRole',
|
|
24
|
+
assumedBy: new iam.AccountRootPrincipal().withConditions({
|
|
25
|
+
ArnLike: {
|
|
26
|
+
'aws:PrincipalArn': trusteeRoleArns,
|
|
27
|
+
},
|
|
28
|
+
}),
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
const delegationGrant = parentZone.grantDelegation(delegationRole, {
|
|
32
|
+
delegatedZoneNames: [
|
|
33
|
+
'sub1.uniqueexample.com',
|
|
34
|
+
'sub2_*$.uniqueexample.com', // should result in octal codes in iam condition
|
|
35
|
+
],
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
const subZone = new route53.PublicHostedZone(this, 'SubZone', {
|
|
39
|
+
zoneName: 'sub1.uniqueexample.com',
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
new route53.CrossAccountZoneDelegationRecord(subZone, 'ZoneDelegation', {
|
|
43
|
+
delegatedZone: subZone,
|
|
44
|
+
parentHostedZoneName: parentZone.zoneName,
|
|
45
|
+
delegationRole: delegationRole,
|
|
46
|
+
}).node.addDependency(delegationGrant);
|
|
47
|
+
|
|
48
|
+
const subZoneWithSpecialChars = new route53.PublicHostedZone(this, 'SubZoneSpecialChars', {
|
|
49
|
+
zoneName: 'sub2_*$.uniqueexample.com',
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
new route53.CrossAccountZoneDelegationRecord(subZoneWithSpecialChars, 'ZoneDelegation', {
|
|
53
|
+
delegatedZone: subZoneWithSpecialChars,
|
|
54
|
+
parentHostedZoneName: parentZone.zoneName,
|
|
55
|
+
delegationRole: delegationRole,
|
|
56
|
+
}).node.addDependency(delegationGrant);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const app = new cdk.App();
|
|
61
|
+
|
|
62
|
+
const stack = new ZoneDelegationIamStack(app, 'ZoneDelegationStack');
|
|
63
|
+
|
|
64
|
+
new IntegTest(app, 'ZoneDelegationIam', {
|
|
65
|
+
testCases: [stack],
|
|
66
|
+
});
|
|
@@ -31,6 +31,10 @@ class TestBucketDeployment extends cdk.Stack {
|
|
|
31
31
|
const sources = [];
|
|
32
32
|
for (let i = 0; i < numFiles; i++) {
|
|
33
33
|
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'tmpcdk'));
|
|
34
|
+
process.on('exit', () => {
|
|
35
|
+
fs.rmSync(tempDir, { force: true, recursive: true });
|
|
36
|
+
});
|
|
37
|
+
|
|
34
38
|
fs.mkdirSync(tempDir, { recursive: true });
|
|
35
39
|
const fileName = `${i+1}.txt`;
|
|
36
40
|
const filePath = path.join(tempDir, fileName);
|
|
@@ -64,6 +64,9 @@ class TestBucketDeploymentData extends Stack {
|
|
|
64
64
|
// Test empty string handling
|
|
65
65
|
const file8 = Source.data('file8.txt', '');
|
|
66
66
|
|
|
67
|
+
// Test null JSON data value
|
|
68
|
+
const file9 = Source.jsonData('my-json/config-with-null.json', { hello: 'there', goodbye: null });
|
|
69
|
+
|
|
67
70
|
const deployment = new BucketDeployment(this, 'DeployWithDataSources', {
|
|
68
71
|
destinationBucket: this.bucket,
|
|
69
72
|
sources: [file1, file2],
|
|
@@ -77,6 +80,7 @@ class TestBucketDeploymentData extends Stack {
|
|
|
77
80
|
deployment.addSource(file6);
|
|
78
81
|
deployment.addSource(file7);
|
|
79
82
|
deployment.addSource(file8);
|
|
83
|
+
deployment.addSource(file9);
|
|
80
84
|
|
|
81
85
|
new CfnOutput(this, 'BucketName', { value: this.bucket.bucketName });
|
|
82
86
|
}
|
|
@@ -105,6 +109,17 @@ assertionProvider.expect(ExpectedResult.objectLike({
|
|
|
105
109
|
Body: '{"secret_value":"test\\"with\\"quotes"}',
|
|
106
110
|
}));
|
|
107
111
|
|
|
112
|
+
// Assert that JSON data with a null value is represented properly
|
|
113
|
+
const jsonNullAssertionProvider = integTest.assertions.awsApiCall('S3', 'getObject', {
|
|
114
|
+
Bucket: testCase.bucket.bucketName,
|
|
115
|
+
Key: path.join('deploy/here', 'my-json/config-with-null.json'),
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
// Verify the content is valid JSON and both null and non-null fields are present
|
|
119
|
+
jsonNullAssertionProvider.expect(ExpectedResult.objectLike({
|
|
120
|
+
Body: '{"hello":"there","goodbye":null}',
|
|
121
|
+
}));
|
|
122
|
+
|
|
108
123
|
// Add assertions to verify the YAML file
|
|
109
124
|
const yamlAssertionProvider = integTest.assertions.awsApiCall('S3', 'getObject', {
|
|
110
125
|
Bucket: testCase.bucket.bucketName,
|
|
@@ -30,6 +30,9 @@ const bucket = new Bucket(stack, 'Bucket', {
|
|
|
30
30
|
|
|
31
31
|
// Create a temporary directory for our large files
|
|
32
32
|
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'cdk-large-files-'));
|
|
33
|
+
process.on('exit', () => {
|
|
34
|
+
fs.rmSync(tempDir, { force: true, recursive: true });
|
|
35
|
+
});
|
|
33
36
|
|
|
34
37
|
// Generate a large JSON file (10MB) programmatically
|
|
35
38
|
const largeJsonFilePath = path.join(tempDir, 'large-file.json');
|
|
@@ -831,6 +831,62 @@ new cr.AwsCustomResource(this, 'CrossAccount', {
|
|
|
831
831
|
});
|
|
832
832
|
```
|
|
833
833
|
|
|
834
|
+
#### Using External IDs for Enhanced Security
|
|
835
|
+
|
|
836
|
+
When assuming cross-account roles, you can specify an external ID to prevent the "confused deputy" problem. The external ID is a unique identifier provided by the third-party service that helps ensure the service is acting on behalf of the correct customer:
|
|
837
|
+
|
|
838
|
+
```ts
|
|
839
|
+
const crossAccountRoleArn = 'arn:aws:iam::OTHERACCOUNT:role/CrossAccountRoleName';
|
|
840
|
+
const serviceExternalId = 'unique-secret-value-12345'; // External ID provided by the third party service. This value should be unique among the third-party service's customers.
|
|
841
|
+
|
|
842
|
+
|
|
843
|
+
new cr.AwsCustomResource(this, 'SecureCrossAccount', {
|
|
844
|
+
onCreate: {
|
|
845
|
+
assumedRoleArn: crossAccountRoleArn,
|
|
846
|
+
externalId: serviceExternalId, // Prevents confused deputy attacks
|
|
847
|
+
service: 'sts',
|
|
848
|
+
action: 'GetCallerIdentity',
|
|
849
|
+
physicalResourceId: cr.PhysicalResourceId.of('id'),
|
|
850
|
+
},
|
|
851
|
+
policy: cr.AwsCustomResourcePolicy.fromStatements([iam.PolicyStatement.fromJson({
|
|
852
|
+
Effect: "Allow",
|
|
853
|
+
Action: "sts:AssumeRole",
|
|
854
|
+
Resource: crossAccountRoleArn,
|
|
855
|
+
})]),
|
|
856
|
+
});
|
|
857
|
+
```
|
|
858
|
+
|
|
859
|
+
The external ID can also be different for each lifecycle operation:
|
|
860
|
+
|
|
861
|
+
```ts
|
|
862
|
+
declare const createRoleArn: string;
|
|
863
|
+
declare const updateRoleArn: string;
|
|
864
|
+
|
|
865
|
+
new cr.AwsCustomResource(this, 'MultiRoleSecure', {
|
|
866
|
+
onCreate: {
|
|
867
|
+
assumedRoleArn: createRoleArn,
|
|
868
|
+
externalId: 'create-secret-123',
|
|
869
|
+
service: 'ec2',
|
|
870
|
+
action: 'DescribeInstances',
|
|
871
|
+
physicalResourceId: cr.PhysicalResourceId.of('id'),
|
|
872
|
+
},
|
|
873
|
+
onUpdate: {
|
|
874
|
+
assumedRoleArn: updateRoleArn,
|
|
875
|
+
externalId: 'update-secret-456',
|
|
876
|
+
service: 'ec2',
|
|
877
|
+
action: 'DescribeInstances',
|
|
878
|
+
},
|
|
879
|
+
policy: cr.AwsCustomResourcePolicy.fromStatements([
|
|
880
|
+
new iam.PolicyStatement({
|
|
881
|
+
actions: ['sts:AssumeRole'],
|
|
882
|
+
resources: [createRoleArn, updateRoleArn],
|
|
883
|
+
}),
|
|
884
|
+
]),
|
|
885
|
+
});
|
|
886
|
+
```
|
|
887
|
+
|
|
888
|
+
For more information on external IDs and preventing confused deputy attacks, see the [AWS IAM User Guide](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html).
|
|
889
|
+
|
|
834
890
|
#### Custom Resource Config
|
|
835
891
|
|
|
836
892
|
**This feature is currently experimental**
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.external-id.ts
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import * as iam from 'aws-cdk-lib/aws-iam';
|
|
3
|
+
import * as cdk from 'aws-cdk-lib';
|
|
4
|
+
import { IntegTest } from '@aws-cdk/integ-tests-alpha';
|
|
5
|
+
import { AwsCustomResource, AwsCustomResourcePolicy, PhysicalResourceId } from 'aws-cdk-lib/custom-resources';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Integration test for AwsCustomResource External ID support.
|
|
9
|
+
*
|
|
10
|
+
* This test demonstrates the use of external IDs when assuming roles
|
|
11
|
+
* in cross-account scenarios to prevent "confused deputy" attacks.
|
|
12
|
+
*
|
|
13
|
+
* Note: This test may introduce destructive changes to CDK metadata
|
|
14
|
+
* and Lambda function assets due to CDK version updates. These changes
|
|
15
|
+
* are expected and safe for integration testing purposes.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
const app = new cdk.App({
|
|
19
|
+
postCliContext: {
|
|
20
|
+
// Disable CDK managed log groups to prevent Lambda changes
|
|
21
|
+
'@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
|
|
22
|
+
// Disable version reporting to prevent CDK metadata changes
|
|
23
|
+
'@aws-cdk/core:disableVersionReporting': true,
|
|
24
|
+
// Disable new style synthesis to maintain compatibility
|
|
25
|
+
'@aws-cdk/core:newStyleStackSynthesis': false,
|
|
26
|
+
// Use legacy asset bundling to prevent asset hash changes
|
|
27
|
+
'@aws-cdk/core:enableLegacyV2AssetKeys': true,
|
|
28
|
+
// Disable stack name validation to prevent naming conflicts
|
|
29
|
+
'@aws-cdk/core:stackRelativeExports': false,
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
const stack = new cdk.Stack(app, 'aws-custom-resource-external-id-test');
|
|
34
|
+
|
|
35
|
+
// Create a role that requires an external ID
|
|
36
|
+
const externalId = 'test-external-id-12345';
|
|
37
|
+
const roleWithExternalId = new iam.Role(stack, 'RoleWithExternalId', {
|
|
38
|
+
// Use a principal that can be used in integration tests
|
|
39
|
+
assumedBy: new iam.AccountPrincipal(cdk.Stack.of(stack).account),
|
|
40
|
+
externalIds: [externalId],
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
// Add the necessary permissions as managed policies to reduce template variability
|
|
44
|
+
roleWithExternalId.addToPolicy(
|
|
45
|
+
new iam.PolicyStatement({
|
|
46
|
+
actions: ['sts:GetCallerIdentity'],
|
|
47
|
+
resources: ['*'],
|
|
48
|
+
}),
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
// Test basic external ID usage
|
|
52
|
+
new AwsCustomResource(stack, 'ExternalIdTest', {
|
|
53
|
+
installLatestAwsSdk: false,
|
|
54
|
+
onCreate: {
|
|
55
|
+
assumedRoleArn: roleWithExternalId.roleArn,
|
|
56
|
+
externalId: externalId,
|
|
57
|
+
service: 'STS',
|
|
58
|
+
action: 'GetCallerIdentity',
|
|
59
|
+
physicalResourceId: PhysicalResourceId.of('external-id-test'),
|
|
60
|
+
},
|
|
61
|
+
policy: AwsCustomResourcePolicy.fromSdkCalls({ resources: [] }),
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
new IntegTest(app, 'AwsCustomResourceTest', {
|
|
65
|
+
testCases: [stack],
|
|
66
|
+
diffAssets: true,
|
|
67
|
+
allowDestroy: ['AWS::CDK::Metadata'],
|
|
68
|
+
cdkCommandOptions: {
|
|
69
|
+
deploy: {
|
|
70
|
+
args: {
|
|
71
|
+
rollback: false,
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
destroy: {
|
|
75
|
+
args: {
|
|
76
|
+
force: true,
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: konokenj.cdk-api-mcp-server
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.55.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.54.0.dist-info → konokenj_cdk_api_mcp_server-0.55.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=rA_SHXJOQTCGZdHPj9gp46MhwCXP96bj4dKeLEuguBc,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
|
|
@@ -20,7 +20,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-eks-v2-alpha/README
|
|
|
20
20
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-elasticache-alpha/README.md,sha256=5rwHuZ0rekBgrFzF1ig9rAxqufypWy8XN8-7y3De0dA,15152
|
|
21
21
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-gamelift-alpha/README.md,sha256=pZqlGXpIekT05CmRYo99QPI-7S1iGtKoNESGryLQFxQ,28324
|
|
22
22
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-glue-alpha/README.md,sha256=BCr7YEJ6Ht3oYR21NMCH3t1N738QjQ9Sh_dL_DUhECQ,32235
|
|
23
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-imagebuilder-alpha/README.md,sha256
|
|
23
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-imagebuilder-alpha/README.md,sha256=RjhHAlOg1RUErPo2wkaI29D_kqz1YRasa8d9bJXzkgU,10750
|
|
24
24
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-iot-actions-alpha/README.md,sha256=R6vkGxu-JjfB1IfGVquiD6Gcn4RQQpgbGo36njBdJe4,11947
|
|
25
25
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-iot-alpha/README.md,sha256=18MkQScFBUO_qZnfYj9wfsdY_vRvvEyar2OT_QbO_N4,6909
|
|
26
26
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-iotevents-actions-alpha/README.md,sha256=0Al2K5gHcEce_cH07YM1GuFFrJ0mrr85ZWGVrj2cs9s,4477
|
|
@@ -46,7 +46,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/cfnspec/README.md,sha25
|
|
|
46
46
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/custom-resource-handlers/README.md,sha256=QctOoyGt6AqVWeFhRwpkCSxHZ1XFWj_nCKlkJHDFock,965
|
|
47
47
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/example-construct-library/README.md,sha256=vnVXyvtN9ICph68sw2y6gkdD_gmas0PiUa9TkwNckWQ,4501
|
|
48
48
|
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/integ-tests-alpha/README.md,sha256=VifKLrR404_yLVT0E3ai8f3R5K0h22VNwQplpSUSZqc,17489
|
|
49
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/mixins-preview/README.md,sha256=
|
|
49
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/mixins-preview/README.md,sha256=9m_qHS9WuTACB2_CN1hfV9AFmUb2aTp1QB2vzbs6VMI,5784
|
|
50
50
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/README.md/README.md,sha256=fDaQqPonfLmfQpukU4aAJcjQI5xHI40D3Li0I056Q7s,76468
|
|
51
51
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/assertions/MIGRATING.md,sha256=SYGX8QNB1Pm_rVYDBp4QRWkqwnxOb3CHzeFglUy_53k,3347
|
|
52
52
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/assertions/README.md,sha256=3yo3D05n5explTIgnuF-vkk01MTYeAYe7_3rcsD2baE,18299
|
|
@@ -434,7 +434,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codepipeline-act
|
|
|
434
434
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codepipeline-actions/integ.source-bucket-events-cross-stack-same-env.ts,sha256=b_AcKifo3CayD0tBQAY9-K8tbovRAi9hC2IPyTvJCog,1523
|
|
435
435
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codepipeline-actions/integ.stacksets.ts,sha256=rYAvLm18SRN5_RZDalrForjDUHg9AHeTebjeO1jpN1Y,2798
|
|
436
436
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codestarnotifications/README.md,sha256=xwJqDar7SxOR64CS3jzD1FBmmAnsPAytUXU-BSKdibI,2764
|
|
437
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cognito/README.md,sha256=
|
|
437
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cognito/README.md,sha256=nK1O9BVuzdu1R54DbvOfvAzsEN86cPerx6yAwlAChic,55008
|
|
438
438
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cognito/integ.user-pool-client-analytics.ts,sha256=VwK8uk4g8qasvEF-_fJC-T1Edmat_dmtj4e_am6evLY,3282
|
|
439
439
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cognito/integ.user-pool-client-default-redirect-uri.ts,sha256=4psUGceGMURoSYg4rvK19bnuXMSH6bZrhLjUcap49og,678
|
|
440
440
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cognito/integ.user-pool-client-enable-propagate-additional-data.ts,sha256=wDQU5Wi-dxBbl_ZUnmcVoOaRWZAmGZuCqO1YuIEoub4,775
|
|
@@ -1001,7 +1001,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservic
|
|
|
1001
1001
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.coldstorage.ts,sha256=uxEm9-kis9KgYLpv7A9lZmg_NZ3TJ14EmkrAAQBLbtI,873
|
|
1002
1002
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.custom-kms-key.ts,sha256=k66WCNgg3RBOrbUWt1KjZsbuj_K3-G-Q-nMYddtFKcg,2463
|
|
1003
1003
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.disable-logging.ts,sha256=xdMUI1YRuJgxOQ8aB_rftnMWu9gkSUkXiGuZQhsyYQQ,857
|
|
1004
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.ebs.ts,sha256=
|
|
1004
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.ebs.ts,sha256=6Ev38M-IkYa4fX8E7a-Pb_tN-oZDE5B058BvMbFnw_0,1177
|
|
1005
1005
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.gp3.ts,sha256=_YsIdlEllL1v_1YZzpXrwxHMttphlJe_xf11f1_4z3s,1526
|
|
1006
1006
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.https.ts,sha256=enL7r3ppaN_yxoRYse_nCmRrC9qdIcbqMoC_bCRdSLM,1655
|
|
1007
1007
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.ip-address-type.ts,sha256=OeLFqyLYl38FltS_earKPmZ9loassPKmMErTopMwlvE,1136
|
|
@@ -1013,10 +1013,11 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservic
|
|
|
1013
1013
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.unsignedbasicauth.ts,sha256=B13diAjHunM-L1w1FHgpDRup-j4Xnnb-rpn171bbjpw,925
|
|
1014
1014
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.vpc.ts,sha256=92FvTQd0U190KN53A8UU4eV3ggwm1GeVn4f3nRE56T0,1400
|
|
1015
1015
|
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
|
|
1016
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/README.md,sha256=
|
|
1016
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/README.md,sha256=tPoPoDO9EBGny6j-ls4jiVmfhC5AAQyVIxk19S48O6c,68063
|
|
1017
1017
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/aurora-serverless-v2.md,sha256=D4_EKB6d62nNN0LwL3XGX0YFjwdSBXE8namaBUqU9qw,10484
|
|
1018
1018
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-applyimmediately.ts,sha256=UB7bdVX6UD63SYroZRXs5V493f1lUX_3lD5W7EeU5AQ,1135
|
|
1019
1019
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-availability-zone.ts,sha256=59DvW_-fFQ2NPddJdbayEu7V-NVBAPvm3A05IvbBOAA,1765
|
|
1020
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-cloudwatch-logs-exports.ts,sha256=LBpt-jb8BjdyepO6r8hD02GjJF8gDAcZdTT2y5ngh9g,1819
|
|
1020
1021
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-data-api-to-imported-cluster.ts,sha256=rdPkQRXAX0G9AoT_wWj0haykPIGgH0wVkN9bCbvDbD4,1287
|
|
1021
1022
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-data-api.ts,sha256=zscIQL1yE27efz_qs5lWrBOT2fwnQZbu7mm6UqLDJ4A,1056
|
|
1022
1023
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-database-insights.ts,sha256=fOZAejrOKhLiODQ3R9cFimS73nvvY45dhlYGY2bkUiQ,1214
|
|
@@ -1074,7 +1075,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.server
|
|
|
1074
1075
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.serverless-cluster-secret-rotation-custom-names.ts,sha256=qEeZja4_8GHkk_wEolcgpMXx8gIjyhYxQgtHj-QR90c,1182
|
|
1075
1076
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.serverless-cluster-secret-rotation.ts,sha256=dQh8mE1sGqXoh1oNLTHVGkxqJo1DUF9xFGRtpUMTtwM,1131
|
|
1076
1077
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.serverless-cluster.ts,sha256=QRk6RSL7MjT-Z0Wa5IqAGw6e4D9d1eD-_FF9JNPqaDc,1491
|
|
1077
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53/README.md,sha256=
|
|
1078
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53/README.md,sha256=EL7oChCie9H9OhNQs1u9xJTaZvBlk1FQVq8T2vCieqc,21794
|
|
1078
1079
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53/integ.cidr-routing-config.ts,sha256=s00XKe_4ev7V2QdrsMz1hTQdD7NG_DEvMKQO-qo2pOw,1820
|
|
1079
1080
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53/integ.cross-account-zone-delegation.ts,sha256=_rpT4PhjPn4zzQJkbCVdNuf_2PxCVAMBFh_sbI9Ipbc,4723
|
|
1080
1081
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53/integ.delete-existing-record-set.ts,sha256=S1DuUvrdXqsQO1-tBOrrZmLxbAtjLuYCbtVVULjCcQo,1177
|
|
@@ -1089,6 +1090,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53/integ.re
|
|
|
1089
1090
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53/integ.route53.ts,sha256=Tq-9AddKPw_XL9OpbSbAxcHUvNie_aNwUgxc_qc--t8,4191
|
|
1090
1091
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53/integ.vpc-endpoint-service-domain-name.ts,sha256=30BelZf3n-5NlELN0Zb3wbCs4apkN1xkJZdRx7JaQaw,2287
|
|
1091
1092
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53/integ.weighted-record.ts,sha256=TuVcPmhLeJWBn0zjTy1mQIF5mY68-sYJqvAyO4fj-l0,1089
|
|
1093
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53/integ.zone-delegation-iam-stack.ts,sha256=evRLvNcSIgCi0A-HtWB3UIe0zYMbb59f9BVA73KTKcQ,2095
|
|
1092
1094
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53-patterns/README.md,sha256=wagFrV44B0Rqy9rYXVpAQMGscGiEy9qRj54qfzfXNKk,3028
|
|
1093
1095
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53-patterns/integ.hosted-redirect-same-region.ts,sha256=v_OrIYemAnBSiihPJVnfwB8pc-MA39CSC8Xp6PtGTWc,1730
|
|
1094
1096
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53-patterns/integ.hosted-redirect.ts,sha256=UpMbsM6FmD0tu73gzQOBNRtG_snaAuo3vzau2T7c2gY,1866
|
|
@@ -1147,14 +1149,14 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-assets/integ.
|
|
|
1147
1149
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-assets/integ.assets.refs.lit.ts,sha256=9ZTHP6IuXClpHX3wpRoQYowHWac19H-UfgO8iQFgrFY,923
|
|
1148
1150
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-assets/integ.multi-assets.ts,sha256=JFM0G2TQ6VKoSpQSwOpvp6gKRI9YCkLH7Cy2RSEYRQs,803
|
|
1149
1151
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/README.md,sha256=4EEQtncu13inobBbdyZOHP4eYOBlcMRj0psaKsFCKCM,26579
|
|
1150
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-big-response.ts,sha256=
|
|
1152
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-big-response.ts,sha256=mAa1EQ6rWR_HZBNOMnhouneZdVX1HBvRCTClpJrdxeI,3407
|
|
1151
1153
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-cloudfront.ts,sha256=W9f12El_8J9rf8pbbUtDlTAevyOQoZAIlmy0r76tLpI,1842
|
|
1152
1154
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-cross-nested-stack-source.ts,sha256=bbiS-CfQNfifpRMZSJxndiGFHOqNDOgb59xmZ0KZwMU,2406
|
|
1153
1155
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-cross-stack-source.ts,sha256=rbKJcMmMw5HMvRJIHytWpqeZH8Lp55kTtAQO1xf-Onk,1643
|
|
1154
1156
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-cross-stack-ssm-source.ts,sha256=YGWEmN80ScMvVUy2x3dVSnIoaU_emb2dp0GMkrA83A4,3169
|
|
1155
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-data.ts,sha256=
|
|
1157
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-data.ts,sha256=TK1WpIeIZeODF5Wo1VhgtD6kRKpu2h7Sqs6XuvknACE,5224
|
|
1156
1158
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-deployed-bucket.ts,sha256=YZFXyyGJWyxGVZSUOduoKZHBtfNAyaKEqOFUPdjcnqY,1658
|
|
1157
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-large-file.ts,sha256=
|
|
1159
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-large-file.ts,sha256=bdERyqOdUhHEM_HgbKvNZyMOwEyEXbvigQtC6Y13bmI,9256
|
|
1158
1160
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-loggroup.ts,sha256=U7Yne11_oFBj0MakeTg3HBPSdT7wFSqCBTwbOqrdqPo,1574
|
|
1159
1161
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-security-groups-efs.ts,sha256=WwFIBt9BqOKOvwJotMxTmbWQ3qem0vGgFYYOCsvTLNM,2633
|
|
1160
1162
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-security-groups-empty.ts,sha256=_8S5PvnwwPy3aRamhAC1z5N6U4tpimclUPYFGVnEaLM,2362
|
|
@@ -1401,7 +1403,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/core/integ.prop-inje
|
|
|
1401
1403
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/core/integ.removal-policies.ts,sha256=b6ePZkMn5IyTizPV2VnxSR2X8RP2Obh8i7P1b7-S68o,1541
|
|
1402
1404
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/core/integ.stack.ts,sha256=xf24TLT1li9lQtn7LMTd0hPfiWPpBym8OMYD4cTiw-o,666
|
|
1403
1405
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/core/integ.token-aware-stringify-logical-ids.ts,sha256=Nb1IrrTzMyuhwAmcZyHLVmLjpC0qM2JrTnw392f3C64,1122
|
|
1404
|
-
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/README.md,sha256=
|
|
1406
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/README.md,sha256=2k0u1AWNRcC9sTWbSAlp4U9Ux6REDvEZCkpGI0kKThE,47239
|
|
1405
1407
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.aws-custom-resource-assumeRole.ts,sha256=McBeN37e6mNkmcHPb5kgdsTRPMY9pxzH8SwHmdDaRHA,1436
|
|
1406
1408
|
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
|
|
1407
1409
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.aws-custom-resource-cloudwatch.ts,sha256=vunS7eZnfupDnwKACQVccX1WxhwoATaNOxYdG20lWgc,1393
|
|
@@ -1419,6 +1421,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/int
|
|
|
1419
1421
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.custom-resource-config-logRetention.ts,sha256=c1yoH2d8ZLpZ9jaL3koM3pyhrYU3RDUqGxc_R2LTZ1Y,896
|
|
1420
1422
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.custom-resource-config-removalPolicy.ts,sha256=sGAZF5yx_ugeGrqCldd3Cr0nN9v23b_5j3hswgnsYQo,917
|
|
1421
1423
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.custom-resource-config-undefined-log.ts,sha256=-iWtDpya4WyL02t4GTBRZKT3jWrvXXNNfifPMAfaEvo,940
|
|
1424
|
+
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.external-id.ts,sha256=d1wLd-Wovzy4bJ9r6a-Jxgs46WbJp748RxXnLwQtmGc,2623
|
|
1422
1425
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.invoke-function-payload.ts,sha256=s9pxAQTzw7bl_qDX_vwC0nrbgI8uOk-3H7Ny49hS5As,1345
|
|
1423
1426
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.provider-no-echo.ts,sha256=vS4E0VbqE6h97GlCJKUv7RBEE5_GVVe3sQxNUYjXBbU,1930
|
|
1424
1427
|
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
|
|
@@ -1456,8 +1459,8 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.pipe
|
|
|
1456
1459
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/region-info/README.md,sha256=vewWkV3ds9o9iyyYaJBNTkaKJ2XA6K2yF17tAxUnujg,2718
|
|
1457
1460
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/triggers/README.md,sha256=hYIx7DbG_7p4LYLUfxDwgIQjw9UNdz1GLrqDe8_Dbko,4132
|
|
1458
1461
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/triggers/integ.triggers.ts,sha256=4OHplMoBOgHGkktAzoU-TuNmJQS5wGAUvBfj5bGSe_Y,2807
|
|
1459
|
-
konokenj_cdk_api_mcp_server-0.
|
|
1460
|
-
konokenj_cdk_api_mcp_server-0.
|
|
1461
|
-
konokenj_cdk_api_mcp_server-0.
|
|
1462
|
-
konokenj_cdk_api_mcp_server-0.
|
|
1463
|
-
konokenj_cdk_api_mcp_server-0.
|
|
1462
|
+
konokenj_cdk_api_mcp_server-0.55.0.dist-info/METADATA,sha256=-P57FweXWtkqL6onQZrvxY1bjsou2Z_f_ACxvqFeIXk,2646
|
|
1463
|
+
konokenj_cdk_api_mcp_server-0.55.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
1464
|
+
konokenj_cdk_api_mcp_server-0.55.0.dist-info/entry_points.txt,sha256=bVDhMdyCC1WNMPOMbmB82jvWII2CIrwTZDygdCf0cYQ,79
|
|
1465
|
+
konokenj_cdk_api_mcp_server-0.55.0.dist-info/licenses/LICENSE.txt,sha256=5OIAASeg1HM22mVZ1enz9bgZ7TlsGfWXnj02P9OgFyk,1098
|
|
1466
|
+
konokenj_cdk_api_mcp_server-0.55.0.dist-info/RECORD,,
|
{konokenj_cdk_api_mcp_server-0.54.0.dist-info → konokenj_cdk_api_mcp_server-0.55.0.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|