konokenj.cdk-api-mcp-server 0.51.0__py3-none-any.whl → 0.52.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.
Files changed (18) hide show
  1. cdk_api_mcp_server/__about__.py +1 -1
  2. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-bedrock-agentcore-alpha/README.md +325 -3
  3. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/README.md +9 -0
  4. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ.spec-restapi.ts +1 -0
  5. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/README.md +93 -81
  6. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.stage.ts +20 -4
  7. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.managed-policy.ts +9 -0
  8. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.policy.ts +9 -0
  9. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/README.md +60 -3
  10. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/integ.cloudwatch-logs-processors.ts +45 -0
  11. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.runtime.fromasset.ts +19 -4
  12. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.runtime.inlinecode.ts +7 -0
  13. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/FEATURE_FLAGS.md +9 -9
  14. {konokenj_cdk_api_mcp_server-0.51.0.dist-info → konokenj_cdk_api_mcp_server-0.52.0.dist-info}/METADATA +2 -2
  15. {konokenj_cdk_api_mcp_server-0.51.0.dist-info → konokenj_cdk_api_mcp_server-0.52.0.dist-info}/RECORD +18 -17
  16. {konokenj_cdk_api_mcp_server-0.51.0.dist-info → konokenj_cdk_api_mcp_server-0.52.0.dist-info}/WHEEL +0 -0
  17. {konokenj_cdk_api_mcp_server-0.51.0.dist-info → konokenj_cdk_api_mcp_server-0.52.0.dist-info}/entry_points.txt +0 -0
  18. {konokenj_cdk_api_mcp_server-0.51.0.dist-info → konokenj_cdk_api_mcp_server-0.52.0.dist-info}/licenses/LICENSE.txt +0 -0
@@ -1,4 +1,4 @@
1
1
  # SPDX-FileCopyrightText: 2025-present Kenji Kono <konoken@amazon.co.jp>
2
2
  #
3
3
  # SPDX-License-Identifier: MIT
4
- __version__ = "0.51.0"
4
+ __version__ = "0.52.0"
@@ -45,6 +45,11 @@ This construct library facilitates the deployment of Bedrock AgentCore primitive
45
45
  - [Code Interpreter Network Modes](#code-interpreter-network-modes)
46
46
  - [Basic Code Interpreter Creation](#basic-code-interpreter-creation)
47
47
  - [Code Interpreter IAM permissions](#code-interpreter-iam-permissions)
48
+ - [Memory](#memory)
49
+ - [Memory properties](#memory-properties)
50
+ - [Basic Memory Creation](#basic-memory-creation)
51
+ - [LTM Memory Extraction Stategies](#ltm-memory-extraction-stategies)
52
+ - [Memory Strategy Methods](#memory-strategy-methods)
48
53
 
49
54
 
50
55
  ## AgentCore Runtime
@@ -298,6 +303,10 @@ IAM authentication is the default mode, when no authorizerConfiguration is set t
298
303
  To configure AWS Cognito User Pool authentication:
299
304
 
300
305
  ```typescript
306
+ declare const userPool: cognito.UserPool;
307
+ declare const userPoolClient: cognito.UserPoolClient;
308
+ declare const anotherUserPoolClient: cognito.UserPoolClient;
309
+
301
310
  const repository = new ecr.Repository(this, "TestRepository", {
302
311
  repositoryName: "test-agent-runtime",
303
312
  });
@@ -307,9 +316,8 @@ const runtime = new agentcore.Runtime(this, "MyAgentRuntime", {
307
316
  runtimeName: "myAgent",
308
317
  agentRuntimeArtifact: agentRuntimeArtifact,
309
318
  authorizerConfiguration: agentcore.RuntimeAuthorizerConfiguration.usingCognito(
310
- "us-west-2_ABC123", // User Pool ID (required)
311
- "client123", // Client ID (required)
312
- "us-west-2" // Region (optional, defaults to stack region)
319
+ userPool, // User Pool (required)
320
+ [userPoolClient, anotherUserPoolClient], // User Pool Clients
313
321
  ),
314
322
  });
315
323
  ```
@@ -794,3 +802,317 @@ const codeInterpreter = new agentcore.CodeInterpreterCustom(this, "MyCodeInterpr
794
802
  },
795
803
  });
796
804
  ```
805
+
806
+ ## Memory
807
+
808
+ Memory is a critical component of intelligence. While Large Language Models (LLMs) have impressive capabilities, they lack persistent memory across conversations. Amazon Bedrock AgentCore Memory addresses this limitation by providing a managed service that enables AI agents to maintain context over time, remember important facts, and deliver consistent, personalized experiences.
809
+
810
+ AgentCore Memory operates on two levels:
811
+
812
+ - **Short-Term Memory**: Immediate conversation context and session-based information that provides continuity within a single interaction or closely related sessions.
813
+ - **Long-Term Memory**: Persistent information extracted and stored across multiple conversations, including facts, preferences, and summaries that enable personalized experiences over time.
814
+
815
+ When you interact with the memory via the `CreateEvent` API, you store interactions in Short-Term Memory (STM) instantly. These interactions can include everything from user messages, assistant responses, to tool actions.
816
+
817
+ To write to long-term memory, you need to configure extraction strategies which define how and where to store information from conversations for future use. These strategies are asynchronously processed from raw events after every few turns based on the strategy that was selected. You can't create long term memory records directly, as they are extracted asynchronously by AgentCore Memory.
818
+
819
+ ### Memory Properties
820
+
821
+ | Name | Type | Required | Description |
822
+ |------|------|----------|-------------|
823
+ | `memoryName` | `string` | Yes | The name of the memory |
824
+ | `expirationDuration` | `Duration` | No | Short-term memory expiration in days (between 7 and 365). Default: 90 days |
825
+ | `description` | `string` | No | Optional description for the memory. Default: no description. |
826
+ | `kmsKey` | `IKey` | No | Custom KMS key to use for encryption. Default: Your data is encrypted with a key that AWS owns and manages for you |
827
+ | `memoryStrategies` | `MemoryStrategyBase[]` | No | Built-in extraction strategies to use for this memory. Default: No extraction strategies (short term memory only) |
828
+ | `executionRole` | `iam.IRole` | No | The IAM role that provides permissions for the memory to access AWS services. Default: A new role will be created. |
829
+ | `tags` | `{ [key: string]: string }` | No | Tags for memory. Default: no tags. |
830
+
831
+ ### Basic Memory Creation
832
+
833
+ Below you can find how to configure a simple short-term memory (STM) with no long-term memory extraction strategies.
834
+ Note how you set `expirationDuration`, which defines the time the events will be stored in the short-term memory before they expire.
835
+
836
+ ```typescript fixture=default
837
+
838
+ // Create a basic memory with default settings, no LTM strategies
839
+ const memory = new agentcore.Memory(this, "MyMemory", {
840
+ memoryName: "my_memory",
841
+ description: "A memory for storing user interactions for a period of 90 days",
842
+ expirationDuration: cdk.Duration.days(90),
843
+ });
844
+ ```
845
+
846
+ Basic Memory with Custom KMS Encryption
847
+
848
+ ```typescript fixture=default
849
+ // Create a custom KMS key for encryption
850
+ const encryptionKey = new kms.Key(this, "MemoryEncryptionKey", {
851
+ enableKeyRotation: true,
852
+ description: "KMS key for memory encryption",
853
+ });
854
+
855
+ // Create memory with custom encryption
856
+ const memory = new agentcore.Memory(this, "MyMemory", {
857
+ memoryName: "my_encrypted_memory",
858
+ description: "Memory with custom KMS encryption",
859
+ expirationDuration: cdk.Duration.days(90),
860
+ kmsKey: encryptionKey,
861
+ });
862
+ ```
863
+
864
+ ### LTM Memory Extraction Stategies
865
+
866
+ If you need long-term memory for context recall across sessions, you can setup memory extraction strategies
867
+ to extract the relevant memory from the raw events.
868
+
869
+ Amazon Bedrock AgentCore Memory has different memory strategies for extracting and organizing information:
870
+
871
+ - **Summarization**: to summarize interactions to preserve critical context and key insights.
872
+ - **Semantic Memory**: to extract general factual knowledge, concepts and meanings from raw conversations using vector embeddings.
873
+ This enables similarity-based retrieval of relevant facts and context.
874
+ - **User Preferences**: to extract user behavior patterns from raw conversations.
875
+
876
+ You can use built-in extraction strategies for quick setup, or create custom extraction strategies with specific models and prompt templates.
877
+
878
+ ### Memory with Built-in Strategies
879
+
880
+ The library provides three built-in LTM strategies. These are default strategies for organizing and extracting memory data,
881
+ each optimized for specific use cases.
882
+
883
+ For example: An agent helps multiple users with cloud storage setup. From these conversations,
884
+ see how each strategy processes users expressing confusion about account connection:
885
+
886
+ 1. **Summarization Strategy** (`MemoryStrategy.usingBuiltInSummarization()`)
887
+ This strategy compresses conversations into concise overviews, preserving essential context and key insights for quick recall.
888
+ Extracted memory example: Users confused by cloud setup during onboarding.
889
+
890
+ - Extracts concise summaries to preserve critical context and key insights
891
+ - Namespace: `/strategies/{memoryStrategyId}/actors/{actorId}/sessions/{sessionId}`
892
+
893
+ 2. **Semantic Memory Strategy** (`MemoryStrategy.usingBuiltInSemantic()`)
894
+ Distills general facts, concepts, and underlying meanings from raw conversational data, presenting the information in a context-independent format.
895
+ Extracted memory example: In-context learning = task-solving via examples, no training needed.
896
+
897
+ - Extracts general factual knowledge, concepts and meanings from raw conversations
898
+ - Namespace: `/strategies/{memoryStrategyId}/actors/{actorId}`
899
+
900
+ 3. **User Preference Strategy** (`MemoryStrategy.usingBuiltInUserPreference()`)
901
+ Captures individual preferences, interaction patterns, and personalized settings to enhance future experiences.
902
+ Extracted memory example: User needs clear guidance on cloud storage account connection during onboarding.
903
+
904
+ - Extracts user behavior patterns from raw conversations
905
+ - Namespace: `/strategies/{memoryStrategyId}/actors/{actorId}`
906
+
907
+ ```typescript fixture=default
908
+ // Create memory with built-in strategies
909
+ const memory = new agentcore.Memory(this, "MyMemory", {
910
+ memoryName: "my_memory",
911
+ description: "Memory with built-in strategies",
912
+ expirationDuration: cdk.Duration.days(90),
913
+ memoryStrategies: [
914
+ agentcore.MemoryStrategy.usingBuiltInSummarization(),
915
+ agentcore.MemoryStrategy.usingBuiltInSemantic(),
916
+ agentcore.MemoryStrategy.usingBuiltInUserPreference(),
917
+ ],
918
+ });
919
+ ```
920
+
921
+ The name generated for each built in memory strategy is as follows:
922
+
923
+ - For Summarization: `summary_builtin_cdk001`
924
+ - For Semantic:`semantic_builtin_cdk001>`
925
+ - For User Preferences: `preference_builtin_cdk001`
926
+
927
+ ### Memory with custom Strategies
928
+
929
+ With Long-Term Memory, organization is managed through Namespaces.
930
+
931
+ An `actor` refers to entity such as end users or agent/user combinations. For example, in a coding support chatbot,
932
+ the actor is usually the developer asking questions. Using the actor ID helps the system know which user the memory belongs to,
933
+ keeping each user's data separate and organized.
934
+
935
+ A `session` is usually a single conversation or interaction period between the user and the AI agent.
936
+ It groups all related messages and events that happen during that conversation.
937
+
938
+ A `namespace` is used to logically group and organize long-term memories. It ensures data stays neat, separate, and secure.
939
+
940
+ With AgentCore Memory, you need to add a namespace when you define a memory strategy. This namespace helps define where the long-term memory
941
+ will be logically grouped. Every time a new long-term memory is extracted using this memory strategy, it is saved under the namespace you set.
942
+ This means that all long-term memories are scoped to their specific namespace, keeping them organized and preventing any mix-ups with other
943
+ users or sessions. You should use a hierarchical format separated by forward slashes /. This helps keep memories organized clearly. As needed,
944
+ you can choose to use the below pre-defined variables within braces in the namespace based on your applications' organization needs:
945
+
946
+ - `actorId` – Identifies who the long-term memory belongs to, such as a user
947
+ - `memoryStrategyId` – Shows which memory strategy is being used. This strategy identifier is auto-generated when you create a memory using CreateMemory operation.
948
+ - `sessionId` – Identifies which session or conversation the memory is from.
949
+
950
+ For example, if you define the following namespace as the input to your strategy in CreateMemory operation:
951
+
952
+ ```shell
953
+ /strategy/{memoryStrategyId}/actor/{actorId}/session/{sessionId}
954
+ ```
955
+
956
+ After memory creation, this namespace might look like:
957
+
958
+ ```shell
959
+ /strategy/summarization-93483043//actor/actor-9830m2w3/session/session-9330sds8
960
+ ```
961
+
962
+ You can customise the namespace, i.e. where the memories are stored by using the following methods:
963
+
964
+ 1. **Summarization Strategy** (`MemoryStrategy.usingSummarization(props)`)
965
+ 1. **Semantic Memory Strategy** (`MemoryStrategy.usingSemantic(props)`)
966
+ 1. **User Preference Strategy** (`MemoryStrategy.usingUserPreference(props)`)
967
+
968
+ ```typescript fixture=default
969
+ // Create memory with built-in strategies
970
+ const memory = new agentcore.Memory(this, "MyMemory", {
971
+ memoryName: "my_memory",
972
+ description: "Memory with built-in strategies",
973
+ expirationDuration: cdk.Duration.days(90),
974
+ memoryStrategies: [
975
+ agentcore.MemoryStrategy.usingUserPreference({
976
+ name: "CustomerPreferences",
977
+ namespaces: ["support/customer/{actorId}/preferences"]
978
+ }),
979
+ agentcore.MemoryStrategy.usingSemantic({
980
+ name: "CustomerSupportSemantic",
981
+ namespaces: ["support/customer/{actorId}/semantic"]
982
+ }),
983
+ ],
984
+ });
985
+ ```
986
+
987
+ Custom memory strategies let you tailor memory extraction and consolidation to your specific domain or use case.
988
+ You can override the prompts for extracting and consolidating semantic, summary, or user preferences.
989
+ You can also choose the model that you want to use for extraction and consolidation.
990
+
991
+ The custom prompts you create are appended to a non-editable system prompt.
992
+
993
+ Since a custom strategy requires you to invoke certain FMs, you need a role with appropriate permissions. For that, you can:
994
+
995
+ - Let the L2 construct create a minimum permission role for you when use L2 Bedrock Foundation Models.
996
+ - Use a custom role with the overly permissive `AmazonBedrockAgentCoreMemoryBedrockModelInferenceExecutionRolePolicy` managed policy.
997
+ - Use a custom role with your own custom policies.
998
+
999
+ #### Memory with Custom Execution Role
1000
+
1001
+ Keep in mind that memories that **do not** use custom strategies do not require a service role.
1002
+ So even if you provide it, it will be ignored as it will never be used.
1003
+
1004
+ ```typescript fixture=default
1005
+ // Create a custom execution role
1006
+ const executionRole = new iam.Role(this, "MemoryExecutionRole", {
1007
+ assumedBy: new iam.ServicePrincipal("bedrock-agentcore.amazonaws.com"),
1008
+ managedPolicies: [
1009
+ iam.ManagedPolicy.fromAwsManagedPolicyName(
1010
+ "AmazonBedrockAgentCoreMemoryBedrockModelInferenceExecutionRolePolicy"
1011
+ ),
1012
+ ],
1013
+ });
1014
+
1015
+ // Create memory with custom execution role
1016
+ const memory = new agentcore.Memory(this, "MyMemory", {
1017
+ memoryName: "my_memory",
1018
+ description: "Memory with custom execution role",
1019
+ expirationDuration: cdk.Duration.days(90),
1020
+ executionRole: executionRole,
1021
+ });
1022
+ ```
1023
+
1024
+ In customConsolidation and customExtraction, the model property uses the [@aws-cdk/aws-bedrock-alph](https://www.npmjs.com/package/@aws-cdk/aws-bedrock-alpha) library which must be installed separately.
1025
+
1026
+ ```typescript fixture=default
1027
+ // Create a custom semantic memory strategy
1028
+ const customSemanticStrategy = agentcore.MemoryStrategy.usingSemantic({
1029
+ name: "customSemanticStrategy",
1030
+ description: "Custom semantic memory strategy",
1031
+ namespaces: ["/custom/strategies/{memoryStrategyId}/actors/{actorId}"],
1032
+ customConsolidation: {
1033
+ model: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_3_5_SONNET_V1_0,
1034
+ appendToPrompt: "Custom consolidation prompt for semantic memory",
1035
+ },
1036
+ customExtraction: {
1037
+ model: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_3_5_SONNET_V1_0,
1038
+ appendToPrompt: "Custom extraction prompt for semantic memory",
1039
+ },
1040
+ });
1041
+
1042
+ // Create memory with custom strategy
1043
+ const memory = new agentcore.Memory(this, "MyMemory", {
1044
+ memoryName: "my-custom-memory",
1045
+ description: "Memory with custom strategy",
1046
+ expirationDuration: cdk.Duration.days(90),
1047
+ memoryStrategies: [customSemanticStrategy],
1048
+ });
1049
+ ```
1050
+
1051
+ ### Memory with self-managed Strategies
1052
+
1053
+ A self-managed strategy in Amazon Bedrock AgentCore Memory gives you complete control over your memory extraction and consolidation pipelines.
1054
+ With a self-managed strategy, you can build custom memory processing workflows while leveraging Amazon Bedrock AgentCore for storage and retrieval.
1055
+
1056
+ For additional information, you can refer to the [developer guide for self managed strategies](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/memory-self-managed-strategies.html).
1057
+
1058
+ Create the required AWS resources including:
1059
+
1060
+ - an S3 bucket in your account where Amazon Bedrock AgentCore will deliver batched event payloads.
1061
+ - an SNS topic for job notifications. Use FIFO topics if processing order within sessions is important for your use case.
1062
+
1063
+ The construct will apply the correct permissions to the memory execution role to access these resources.
1064
+
1065
+ ```typescript fixture=default
1066
+
1067
+ const bucket = new s3.Bucket(this, 'memoryBucket', {
1068
+ bucketName: 'test-memory',
1069
+ removalPolicy: cdk.RemovalPolicy.DESTROY,
1070
+ autoDeleteObjects: true,
1071
+ });
1072
+
1073
+ const topic = new sns.Topic(this, 'topic');
1074
+
1075
+ // Create a custom semantic memory strategy
1076
+ const selfManagedStrategy = agentcore.MemoryStrategy.usingSelfManaged({
1077
+ name: "selfManagedStrategy",
1078
+ description: "self managed memory strategy",
1079
+ historicalContextWindowSize: 5,
1080
+ invocationConfiguration: {
1081
+ topic: topic,
1082
+ s3Location: {
1083
+ bucketName: bucket.bucketName,
1084
+ objectKey: 'memory/',
1085
+ }
1086
+ },
1087
+ triggerConditions: {
1088
+ messageBasedTrigger: 1,
1089
+ timeBasedTrigger: cdk.Duration.seconds(10),
1090
+ tokenBasedTrigger: 100
1091
+ }
1092
+ });
1093
+
1094
+ // Create memory with custom strategy
1095
+ const memory = new agentcore.Memory(this, "MyMemory", {
1096
+ memoryName: "my-custom-memory",
1097
+ description: "Memory with custom strategy",
1098
+ expirationDuration: cdk.Duration.days(90),
1099
+ memoryStrategies: [selfManagedStrategy],
1100
+ });
1101
+ ```
1102
+
1103
+ ### Memory Strategy Methods
1104
+
1105
+ You can add new memory strategies to the memory construct using the `addMemoryStrategy()` method, for instance:
1106
+
1107
+ ```typescript fixture=default
1108
+ // Create memory without initial strategies
1109
+ const memory = new agentcore.Memory(this, "test-memory", {
1110
+ memoryName: "test_memory_add_strategy",
1111
+ description: "A test memory for testing addMemoryStrategy method",
1112
+ expirationDuration: cdk.Duration.days(90),
1113
+ });
1114
+
1115
+ // Add strategies after instantiation
1116
+ memory.addMemoryStrategy(agentcore.MemoryStrategy.usingBuiltInSummarization());
1117
+ memory.addMemoryStrategy(agentcore.MemoryStrategy.usingBuiltInSemantic());
1118
+ ```
@@ -1652,6 +1652,15 @@ const api = new apigateway.SpecRestApi(this, 'books-api', {
1652
1652
  });
1653
1653
  ```
1654
1654
 
1655
+ `SpecRestApi` also supports binary media types, similar to `RestApi`:
1656
+
1657
+ ```ts
1658
+ const api = new apigateway.SpecRestApi(this, 'books-api', {
1659
+ apiDefinition: apigateway.ApiDefinition.fromAsset('path-to-file.json'),
1660
+ binaryMediaTypes: ['image/png', 'application/pdf']
1661
+ });
1662
+ ```
1663
+
1655
1664
  ### Endpoint configuration
1656
1665
 
1657
1666
  By default, `SpecRestApi` will create an edge optimized endpoint.
@@ -14,6 +14,7 @@ class Test extends cdk.Stack {
14
14
  apiDefinition: apigateway.ApiDefinition.fromAsset(path.join(__dirname, 'sample-definition.yaml')),
15
15
  disableExecuteApiEndpoint: true,
16
16
  minCompressionSize: Size.bytes(1024),
17
+ binaryMediaTypes: ['image/png', 'application/pdf'],
17
18
  retainDeployments: true,
18
19
  cloudWatchRole: true,
19
20
  deployOptions: {
@@ -14,11 +14,13 @@
14
14
  - [VPC Link](#vpc-link)
15
15
  - [Private Integration](#private-integration)
16
16
  - [Generating ARN for Execute API](#generating-arn-for-execute-api)
17
- - [Access Logging](#access-logging)
18
17
  - [WebSocket API](#websocket-api)
19
18
  - [Manage Connections Permission](#manage-connections-permission)
20
19
  - [Managing access to WebSocket APIs](#managing-access-to-websocket-apis)
21
20
  - [Usage Plan and API Keys](#usage-plan-and-api-keys)
21
+ - [Common Config](#common-config)
22
+ - [Route Settings](#route-settings)
23
+ - [Access Logging](#access-logging)
22
24
 
23
25
  ## Introduction
24
26
 
@@ -375,65 +377,6 @@ const arn = api.arnForExecuteApi('GET', '/myApiPath', 'dev');
375
377
  - The 'ANY' method can be used for matching any HTTP methods not explicitly defined.
376
378
  - The function gracefully handles undefined parameters by using wildcards, making it flexible for various API configurations.
377
379
 
378
- ## Access Logging
379
-
380
- You can turn on logging to write logs to CloudWatch Logs.
381
- Read more at [Configure logging for HTTP APIs in API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-logging.html)
382
-
383
- ```ts
384
- import * as logs from 'aws-cdk-lib/aws-logs';
385
-
386
- declare const api: apigwv2.HttpApi;
387
- declare const logGroup: logs.LogGroup;
388
-
389
- const stage = new apigwv2.HttpStage(this, 'Stage', {
390
- httpApi: api,
391
- accessLogSettings: {
392
- destination: new apigwv2.LogGroupLogDestination(logGroup),
393
- },
394
- });
395
- ```
396
-
397
- The following code will generate the access log in the [CLF format](https://en.wikipedia.org/wiki/Common_Log_Format).
398
-
399
- ```ts
400
- import * as apigw from 'aws-cdk-lib/aws-apigateway';
401
- import * as logs from 'aws-cdk-lib/aws-logs';
402
-
403
- declare const api: apigwv2.HttpApi;
404
- declare const logGroup: logs.LogGroup;
405
-
406
- const stage = new apigwv2.HttpStage(this, 'Stage', {
407
- httpApi: api,
408
- accessLogSettings: {
409
- destination: new apigwv2.LogGroupLogDestination(logGroup),
410
- format: apigw.AccessLogFormat.clf(),
411
- },
412
- });
413
- ```
414
-
415
- You can also configure your own access log format by using the `AccessLogFormat.custom()` API.
416
- `AccessLogField` provides commonly used fields. The following code configures access log to contain.
417
-
418
- ```ts
419
- import * as apigw from 'aws-cdk-lib/aws-apigateway';
420
- import * as logs from 'aws-cdk-lib/aws-logs';
421
-
422
- declare const api: apigwv2.HttpApi;
423
- declare const logGroup: logs.LogGroup;
424
-
425
- const stage = new apigwv2.HttpStage(this, 'Stage', {
426
- httpApi: api,
427
- accessLogSettings: {
428
- destination: new apigwv2.LogGroupLogDestination(logGroup),
429
- format: apigw.AccessLogFormat.custom(
430
- `${apigw.AccessLogField.contextRequestId()} ${apigw.AccessLogField.contextErrorMessage()} ${apigw.AccessLogField.contextErrorMessageString()}
431
- ${apigw.AccessLogField.contextAuthorizerError()} ${apigw.AccessLogField.contextAuthorizerIntegrationStatus()}`
432
- ),
433
- },
434
- });
435
- ```
436
-
437
380
  ## WebSocket API
438
381
 
439
382
  A WebSocket API in API Gateway is a collection of WebSocket routes that are integrated with backend HTTP endpoints,
@@ -578,26 +521,6 @@ const webSocketApi = new apigwv2.WebSocketApi(this, 'mywsapi',{
578
521
  });
579
522
  ```
580
523
 
581
- ## Common Config
582
-
583
- Common config for both HTTP API and WebSocket API
584
-
585
- ### Route Settings
586
-
587
- Represents a collection of route settings.
588
-
589
- ```ts
590
- declare const api: apigwv2.HttpApi;
591
-
592
- new apigwv2.HttpStage(this, 'Stage', {
593
- httpApi: api,
594
- throttle: {
595
- rateLimit: 1000,
596
- burstLimit: 1000,
597
- },
598
- detailedMetricsEnabled: true,
599
- });
600
- ```
601
524
  ## Usage Plan and API Keys
602
525
 
603
526
  A usage plan specifies who can access one or more deployed WebSocket API stages, and the rate at which they can be accessed. The plan uses API keys to
@@ -740,4 +663,93 @@ const key = new apigwv2.RateLimitedApiKey(this, 'rate-limited-api-key', {
740
663
  burstLimit: 200
741
664
  }
742
665
  });
743
- ```
666
+ ```
667
+
668
+ ## Common Config
669
+
670
+ Common config for both HTTP API and WebSocket API
671
+
672
+ ### Route Settings
673
+
674
+ Represents a collection of route settings.
675
+
676
+ ```ts
677
+ declare const api: apigwv2.HttpApi;
678
+
679
+ new apigwv2.HttpStage(this, 'Stage', {
680
+ httpApi: api,
681
+ throttle: {
682
+ rateLimit: 1000,
683
+ burstLimit: 1000,
684
+ },
685
+ detailedMetricsEnabled: true,
686
+ });
687
+ ```
688
+
689
+ ### Access Logging
690
+
691
+ You can turn on logging to write logs to CloudWatch Logs.
692
+ Read more at Configure logging for [HTTP APIs](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-logging.html) or [WebSocket APIs](https://docs.aws.amazon.com/apigateway/latest/developerguide/websocket-api-logging.html)
693
+
694
+ ```ts
695
+ import * as logs from 'aws-cdk-lib/aws-logs';
696
+
697
+ declare const httpApi: apigwv2.HttpApi;
698
+ declare const webSocketApi : apigwv2.WebSocketApi;
699
+ declare const logGroup: logs.LogGroup;
700
+
701
+ new apigwv2.HttpStage(this, 'HttpStage', {
702
+ httpApi,
703
+ accessLogSettings: {
704
+ destination: new apigwv2.LogGroupLogDestination(logGroup),
705
+ },
706
+ });
707
+
708
+ new apigwv2.WebSocketStage(this, 'WebSocketStage', {
709
+ webSocketApi,
710
+ stageName: 'dev',
711
+ accessLogSettings: {
712
+ destination: new apigwv2.LogGroupLogDestination(logGroup),
713
+ },
714
+ });
715
+ ```
716
+
717
+ The following code will generate the access log in the [CLF format](https://en.wikipedia.org/wiki/Common_Log_Format).
718
+
719
+ ```ts
720
+ import * as apigw from 'aws-cdk-lib/aws-apigateway';
721
+ import * as logs from 'aws-cdk-lib/aws-logs';
722
+
723
+ declare const api: apigwv2.HttpApi;
724
+ declare const logGroup: logs.LogGroup;
725
+
726
+ const stage = new apigwv2.HttpStage(this, 'Stage', {
727
+ httpApi: api,
728
+ accessLogSettings: {
729
+ destination: new apigwv2.LogGroupLogDestination(logGroup),
730
+ format: apigw.AccessLogFormat.clf(),
731
+ },
732
+ });
733
+ ```
734
+
735
+ You can also configure your own access log format by using the `AccessLogFormat.custom()` API.
736
+ `AccessLogField` provides commonly used fields. The following code configures access log to contain.
737
+
738
+ ```ts
739
+ import * as apigw from 'aws-cdk-lib/aws-apigateway';
740
+ import * as logs from 'aws-cdk-lib/aws-logs';
741
+
742
+ declare const api: apigwv2.HttpApi;
743
+ declare const logGroup: logs.LogGroup;
744
+
745
+ const stage = new apigwv2.HttpStage(this, 'Stage', {
746
+ httpApi: api,
747
+ accessLogSettings: {
748
+ destination: new apigwv2.LogGroupLogDestination(logGroup),
749
+ format: apigw.AccessLogFormat.custom(
750
+ `${apigw.AccessLogField.contextRequestId()} ${apigw.AccessLogField.contextErrorMessage()} ${apigw.AccessLogField.contextErrorMessageString()}
751
+ ${apigw.AccessLogField.contextAuthorizerError()} ${apigw.AccessLogField.contextAuthorizerIntegrationStatus()}`
752
+ ),
753
+ },
754
+ });
755
+ ```
@@ -1,12 +1,19 @@
1
1
  #!/usr/bin/env node
2
+ import { IntegTest } from '@aws-cdk/integ-tests-alpha';
2
3
  import * as cdk from 'aws-cdk-lib';
3
- import * as apigw from 'aws-cdk-lib/aws-apigatewayv2';
4
+ import * as apigwv2 from 'aws-cdk-lib/aws-apigatewayv2';
5
+ import * as apigw from 'aws-cdk-lib/aws-apigateway';
6
+ import * as logs from 'aws-cdk-lib/aws-logs';
4
7
 
5
8
  const app = new cdk.App();
6
9
  const stack = new cdk.Stack(app, 'aws-cdk-aws-apigatewayv2-websocket-stage');
7
10
 
8
- const webSocketApi = new apigw.WebSocketApi(stack, 'WebSocketApi');
9
- new apigw.WebSocketStage(stack, 'WebSocketStage', {
11
+ const logGroup = new logs.LogGroup(stack, 'MyLogGroup', {
12
+ removalPolicy: cdk.RemovalPolicy.DESTROY,
13
+ });
14
+
15
+ const webSocketApi = new apigwv2.WebSocketApi(stack, 'WebSocketApi');
16
+ new apigwv2.WebSocketStage(stack, 'WebSocketStage', {
10
17
  webSocketApi,
11
18
  stageName: 'dev',
12
19
  throttle: {
@@ -15,6 +22,15 @@ new apigw.WebSocketStage(stack, 'WebSocketStage', {
15
22
  },
16
23
  detailedMetricsEnabled: true,
17
24
  description: 'My Stage',
25
+ accessLogSettings: {
26
+ destination: new apigwv2.LogGroupLogDestination(logGroup),
27
+ format: apigw.AccessLogFormat.custom(JSON.stringify({
28
+ extendedRequestId: apigw.AccessLogField.contextExtendedRequestId(),
29
+ requestTime: apigw.AccessLogField.contextRequestTime(),
30
+ })),
31
+ },
18
32
  });
19
33
 
20
- app.synth();
34
+ new IntegTest(app, 'aws-cdk-aws-apigatewayv2-websocket-stage-test', {
35
+ testCases: [stack],
36
+ });
@@ -1,6 +1,7 @@
1
1
  import { App, Stack } from 'aws-cdk-lib';
2
2
  import { IntegTest } from '@aws-cdk/integ-tests-alpha';
3
3
  import { AccountRootPrincipal, Grant, ManagedPolicy, PolicyStatement, Role, User } from 'aws-cdk-lib/aws-iam';
4
+ import * as lambda from 'aws-cdk-lib/aws-lambda';
4
5
 
5
6
  const app = new App();
6
7
 
@@ -34,6 +35,14 @@ policy.attachToRole(role);
34
35
  const importedRole = Role.fromRoleArn(stack, 'ImportedRole', role.roleArn);
35
36
  policy.attachToRole(importedRole);
36
37
 
38
+ // Can be passed to grantInvoke, see https://github.com/aws/aws-cdk/issues/32980
39
+ const func = new lambda.Function(stack, 'Function', {
40
+ runtime: lambda.Runtime.NODEJS_LATEST,
41
+ handler: 'index.handler',
42
+ code: lambda.Code.fromInline('export const handler = async () => null'),
43
+ });
44
+ func.grantInvoke(policy);
45
+
37
46
  new IntegTest(app, 'ManagedPolicyInteg', {
38
47
  testCases: [stack],
39
48
  });
@@ -1,6 +1,7 @@
1
1
  import { App, Stack } from 'aws-cdk-lib';
2
2
  import { IntegTest } from '@aws-cdk/integ-tests-alpha';
3
3
  import { AccountRootPrincipal, Grant, Policy, PolicyStatement, Role, User } from 'aws-cdk-lib/aws-iam';
4
+ import * as lambda from 'aws-cdk-lib/aws-lambda';
4
5
 
5
6
  const app = new App();
6
7
 
@@ -21,6 +22,14 @@ role.grantAssumeRole(user);
21
22
 
22
23
  Grant.addToPrincipal({ actions: ['iam:*'], resourceArns: [role.roleArn], grantee: policy2 });
23
24
 
25
+ // Can be passed to grantInvoke, see https://github.com/aws/aws-cdk/issues/32980
26
+ const func = new lambda.Function(stack, 'Function', {
27
+ runtime: lambda.Runtime.NODEJS_LATEST,
28
+ handler: 'index.handler',
29
+ code: lambda.Code.fromInline('export const handler = async () => null'),
30
+ });
31
+ func.grantInvoke(policy);
32
+
24
33
  new IntegTest(app, 'PolicyInteg', {
25
34
  testCases: [stack],
26
35
  });
@@ -483,8 +483,11 @@ Data can be transformed before being delivered to destinations. There are two ty
483
483
  data processing for delivery streams: record transformation with AWS Lambda, and record
484
484
  format conversion using a schema stored in an AWS Glue table. If both types of data
485
485
  processing are configured, then the Lambda transformation is performed first. By default,
486
- no data processing occurs. This construct library currently only supports data
487
- transformation with AWS Lambda. See [#15501](https://github.com/aws/aws-cdk/issues/15501)
486
+ no data processing occurs.
487
+
488
+ This construct library currently only supports data
489
+ transformation with AWS Lambda and some built-in data processors.
490
+ See [#15501](https://github.com/aws/aws-cdk/issues/15501)
488
491
  to track the status of adding support for record format conversion.
489
492
 
490
493
  ### Data transformation with AWS Lambda
@@ -520,7 +523,7 @@ const lambdaProcessor = new firehose.LambdaFunctionProcessor(lambdaFunction, {
520
523
  });
521
524
  declare const bucket: s3.Bucket;
522
525
  const s3Destination = new firehose.S3Bucket(bucket, {
523
- processor: lambdaProcessor,
526
+ processors: [lambdaProcessor],
524
527
  });
525
528
  new firehose.DeliveryStream(this, 'Delivery Stream', {
526
529
  destination: s3Destination,
@@ -532,6 +535,60 @@ new firehose.DeliveryStream(this, 'Delivery Stream', {
532
535
  See: [Data Transformation](https://docs.aws.amazon.com/firehose/latest/dev/data-transformation.html)
533
536
  in the *Amazon Data Firehose Developer Guide*.
534
537
 
538
+ ### Add a new line delimiter when delivering data to Amazon S3
539
+
540
+ You can specify the `AppendDelimiterToRecordProcessor` built-in processor to add a new line delimiter between records in objects that are delivered to Amazon S3. This can be helpful for parsing objects in Amazon S3.
541
+ For details, see [Use Amazon S3 bucket prefix to deliver data](https://docs.aws.amazon.com/firehose/latest/dev/dynamic-partitioning-s3bucketprefix.html).
542
+
543
+ ```ts
544
+ declare const bucket: s3.Bucket;
545
+ const s3Destination = new firehose.S3Bucket(bucket, {
546
+ processors: [
547
+ new firehose.AppendDelimiterToRecordProcessor(),
548
+ ],
549
+ });
550
+ new firehose.DeliveryStream(this, 'Delivery Stream', {
551
+ destination: s3Destination,
552
+ });
553
+ ```
554
+
555
+ ### Decompress and extract message of CloudWatch Logs
556
+
557
+ CloudWatch Logs events are sent to Firehose in compressed gzip format. If you want to deliver decompressed log events to Firehose destinations, you can use the `DecompressionProcessor` to automatically decompress CloudWatch Logs.
558
+ For details, see [Send CloudWatch Logs to Firehose](https://docs.aws.amazon.com/firehose/latest/dev/writing-with-cloudwatch-logs.html).
559
+
560
+ You may also needed to specify `AppendDelimiterToRecordProcessor`
561
+ because decompressed log events record has no trailing newline.
562
+
563
+ ```ts
564
+ declare const bucket: s3.Bucket;
565
+ const s3Destination = new firehose.S3Bucket(bucket, {
566
+ processors: [
567
+ new firehose.DecompressionProcessor(),
568
+ new firehose.AppendDelimiterToRecordProcessor(),
569
+ ],
570
+ });
571
+ new firehose.DeliveryStream(this, 'Delivery Stream', {
572
+ destination: s3Destination,
573
+ });
574
+ ```
575
+
576
+ When you enable decompression, you have the option to also enable message extraction. When using message extraction, Firehose filters out all metadata, such as owner, loggroup, logstream, and others from the decompressed CloudWatch Logs records and delivers only the content inside the message fields.
577
+
578
+ ```ts
579
+ declare const bucket: s3.Bucket;
580
+ const s3Destination = new firehose.S3Bucket(bucket, {
581
+ processors: [
582
+ new firehose.DecompressionProcessor(),
583
+ new firehose.CloudWatchLogProcessor({ dataMessageExtraction: true }),
584
+ ],
585
+ });
586
+ new firehose.DeliveryStream(this, 'Delivery Stream', {
587
+ destination: s3Destination,
588
+ });
589
+ ```
590
+
591
+
535
592
  ## Specifying an IAM role
536
593
 
537
594
  The DeliveryStream class automatically creates IAM service roles with all the minimum
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env node
2
+ import * as path from 'path';
3
+ import * as firehose from 'aws-cdk-lib/aws-kinesisfirehose';
4
+ import * as lambdanodejs from 'aws-cdk-lib/aws-lambda-nodejs';
5
+ import * as s3 from 'aws-cdk-lib/aws-s3';
6
+ import * as cdk from 'aws-cdk-lib';
7
+ import { IntegTest } from '@aws-cdk/integ-tests-alpha';
8
+
9
+ const app = new cdk.App();
10
+
11
+ const stack = new cdk.Stack(app, 'firehose-delivery-stream-cloudwatch-logs-processors');
12
+
13
+ const bucket = new s3.Bucket(stack, 'DestinationBucket', {
14
+ removalPolicy: cdk.RemovalPolicy.DESTROY,
15
+ autoDeleteObjects: true,
16
+ });
17
+
18
+ const dataProcessorFunction = new lambdanodejs.NodejsFunction(stack, 'DataProcessorFunction', {
19
+ entry: path.join(__dirname, 'lambda-data-processor.js'),
20
+ timeout: cdk.Duration.minutes(1),
21
+ });
22
+
23
+ new firehose.DeliveryStream(stack, 'DecompressCloudWatchLogsEntry', {
24
+ destination: new firehose.S3Bucket(bucket, {
25
+ processors: [
26
+ new firehose.DecompressionProcessor(),
27
+ new firehose.AppendDelimiterToRecordProcessor(),
28
+ new firehose.LambdaFunctionProcessor(dataProcessorFunction),
29
+ ],
30
+ }),
31
+ });
32
+
33
+ new firehose.DeliveryStream(stack, 'ExtractCloudWatchLogsEntry', {
34
+ destination: new firehose.S3Bucket(bucket, {
35
+ processors: [
36
+ new firehose.DecompressionProcessor(),
37
+ new firehose.CloudWatchLogProcessor({ dataMessageExtraction: true }),
38
+ new firehose.LambdaFunctionProcessor(dataProcessorFunction),
39
+ ],
40
+ }),
41
+ });
42
+
43
+ new IntegTest(app, 'integ-tests', {
44
+ testCases: [stack],
45
+ });
@@ -10,20 +10,35 @@ const app = new App({
10
10
  });
11
11
  const stack = new Stack(app, 'aws-cdk-lambda-runtime-fromasset');
12
12
 
13
- const lambdaFunction = new Function(stack, 'MyFunction', {
13
+ const lambdaFunctionJava21 = new Function(stack, 'MyFunctionJava21', {
14
14
  runtime: Runtime.JAVA_21,
15
15
  handler: 'com.mycompany.app.LambdaMethodHandler::handleRequest',
16
16
  code: Code.fromAsset(path.join(__dirname, 'my-app-1.0-SNAPSHOT.zip')),
17
17
  });
18
18
 
19
+ const lambdaFunctionJava25 = new Function(stack, 'MyFunctionJava25', {
20
+ runtime: Runtime.JAVA_25,
21
+ handler: 'com.mycompany.app.LambdaMethodHandler::handleRequest',
22
+ code: Code.fromAsset(path.join(__dirname, 'my-app-1.0-SNAPSHOT.zip')),
23
+ });
24
+
19
25
  const integTest = new integ.IntegTest(app, 'Integ', { testCases: [stack] });
20
26
 
21
- const invoke = integTest.assertions.invokeFunction({
22
- functionName: lambdaFunction.functionName,
27
+ const invokeJava21 = integTest.assertions.invokeFunction({
28
+ functionName: lambdaFunctionJava21.functionName,
29
+ payload: '123',
30
+ });
31
+
32
+ invokeJava21.expect(integ.ExpectedResult.objectLike({
33
+ Payload: '"123"',
34
+ }));
35
+
36
+ const invokeJava25 = integTest.assertions.invokeFunction({
37
+ functionName: lambdaFunctionJava25.functionName,
23
38
  payload: '123',
24
39
  });
25
40
 
26
- invoke.expect(integ.ExpectedResult.objectLike({
41
+ invokeJava25.expect(integ.ExpectedResult.objectLike({
27
42
  Payload: '"123"',
28
43
  }));
29
44
 
@@ -55,6 +55,13 @@ const python313 = new Function(stack, 'PYTHON_3_13', {
55
55
  });
56
56
  new CfnOutput(stack, 'PYTHON_3_13-functionName', { value: python313.functionName });
57
57
 
58
+ const python314 = new Function(stack, 'PYTHON_3_14', {
59
+ code: new InlineCode('def handler(event, context):\n return "success"'),
60
+ handler: 'index.handler',
61
+ runtime: Runtime.PYTHON_3_14,
62
+ });
63
+ new CfnOutput(stack, 'PYTHON_3_14-functionName', { value: python314.functionName });
64
+
58
65
  const node20xfn = new Function(stack, 'NODEJS_20_X', {
59
66
  code: new InlineCode('exports.handler = async function(event) { return "success" }'),
60
67
  handler: 'index.handler',
@@ -38,7 +38,7 @@ Flags come in three types:
38
38
  | [@aws-cdk/core:enablePartitionLiterals](#aws-cdkcoreenablepartitionliterals) | Make ARNs concrete if AWS partition is known | 2.38.0 | fix |
39
39
  | [@aws-cdk/aws-ecs:disableExplicitDeploymentControllerForCircuitBreaker](#aws-cdkaws-ecsdisableexplicitdeploymentcontrollerforcircuitbreaker) | Avoid setting the "ECS" deployment controller when adding a circuit breaker | 2.51.0 | fix |
40
40
  | [@aws-cdk/aws-events:eventsTargetQueueSameAccount](#aws-cdkaws-eventseventstargetqueuesameaccount) | Event Rules may only push to encrypted SQS queues in the same account | 2.51.0 | fix |
41
- | [@aws-cdk/aws-iam:importedRoleStackSafeDefaultPolicyName](#aws-cdkaws-iamimportedrolestacksafedefaultpolicyname) | Enable this feature to by default create default policy names for imported roles that depend on the stack the role is in. | 2.60.0 | fix |
41
+ | [@aws-cdk/aws-iam:importedRoleStackSafeDefaultPolicyName](#aws-cdkaws-iamimportedrolestacksafedefaultpolicyname) | Enable this feature to create default policy names for imported roles that depend on the stack the role is in. | 2.60.0 | fix |
42
42
  | [@aws-cdk/aws-s3:serverAccessLogsUseBucketPolicy](#aws-cdkaws-s3serveraccesslogsusebucketpolicy) | Use S3 Bucket Policy instead of ACLs for Server Access Logging | 2.60.0 | fix |
43
43
  | [@aws-cdk/customresources:installLatestAwsSdkDefault](#aws-cdkcustomresourcesinstalllatestawssdkdefault) | Whether to install the latest SDK by default in AwsCustomResource | 2.60.0 | new default |
44
44
  | [@aws-cdk/aws-route53-patters:useCertificate](#aws-cdkaws-route53-pattersusecertificate) | Use the official `Certificate` resource instead of `DnsValidatedCertificate` | 2.61.0 | new default |
@@ -879,7 +879,7 @@ always apply, regardless of the value of this flag.
879
879
 
880
880
  ### @aws-cdk/aws-iam:importedRoleStackSafeDefaultPolicyName
881
881
 
882
- *Enable this feature to by default create default policy names for imported roles that depend on the stack the role is in.*
882
+ *Enable this feature to create default policy names for imported roles that depend on the stack the role is in.*
883
883
 
884
884
  Flag type: Backwards incompatible bugfix
885
885
 
@@ -902,7 +902,7 @@ This new implementation creates default policy names based on the constructs nod
902
902
 
903
903
  Flag type: Backwards incompatible bugfix
904
904
 
905
- Enable this feature flag to use S3 Bucket Policy for granting permission fo Server Access Logging
905
+ Enable this feature flag to use S3 Bucket Policy for granting permission for Server Access Logging
906
906
  rather than using the canned `LogDeliveryWrite` ACL. ACLs do not work when Object Ownership is
907
907
  enabled on the bucket.
908
908
 
@@ -1282,7 +1282,7 @@ Set this flag to false for existing mount targets.
1282
1282
  Flag type: New default behavior
1283
1283
 
1284
1284
  If this is set, and a `runtime` prop is not passed to, Lambda NodeJs
1285
- functions will us the latest version of the runtime provided by the Lambda
1285
+ functions will use the latest version of the runtime provided by the Lambda
1286
1286
  service. Do not use this if you your lambda function is reliant on dependencies
1287
1287
  shipped as part of the runtime environment.
1288
1288
 
@@ -1504,7 +1504,7 @@ When this feature flag is disabled, it will keep the root account principal in t
1504
1504
 
1505
1505
  Flag type: New default behavior
1506
1506
 
1507
- When this featuer flag is enabled, remove the default deployment alarm settings when creating a AWS ECS service.
1507
+ When this feature flag is enabled, remove the default deployment alarm settings when creating a AWS ECS service.
1508
1508
 
1509
1509
 
1510
1510
  | Since | Unset behaves like | Recommended value |
@@ -1755,8 +1755,8 @@ the latest Amazon Linux 2023 version will be used instead of Amazon Linux 2.
1755
1755
 
1756
1756
  Flag type: Configuration option
1757
1757
 
1758
- Currently, when Aspects are invoked in one single pass of the construct tree.
1759
- This means that the Aspects that create other Aspects are not run and Aspects that create new nodes of the tree sometimes do not inherit their parent Aspects.
1758
+ Previously, Aspects were invoked in a single pass of the construct tree.
1759
+ This meant that Aspects which created other Aspects were not run, and Aspects that created new nodes in the tree sometimes did not inherit their parent Aspects.
1760
1760
 
1761
1761
  When this feature flag is enabled, a stabilization loop is run to recurse the construct tree multiple times when invoking Aspects.
1762
1762
 
@@ -1995,7 +1995,7 @@ When enabled, table replica will be default to the removal policy of source tabl
1995
1995
 
1996
1996
  Flag type: New default behavior
1997
1997
 
1998
- When this feature flag is enabled, the SDK API call response to desribe user pool client values will be logged in the custom
1998
+ When this feature flag is enabled, the SDK API call response to describe user pool client values will be logged in the custom
1999
1999
  resource lambda function logs.
2000
2000
 
2001
2001
  When this feature flag is disabled, the SDK API call response to describe user pool client values will not be logged in the custom
@@ -2174,7 +2174,7 @@ When this feature flag is disabled, a loggroup is created by Lambda service on f
2174
2174
  of the function (existing behavior).
2175
2175
  LogGroups created in this way do not support Tag propagation, Property Injectors, Aspects.
2176
2176
 
2177
- DO NOT ENABLE: If you have and existing app defining a lambda function and
2177
+ DO NOT ENABLE: If you have an existing app defining a lambda function and
2178
2178
  have not supplied a logGroup or logRetention prop and your lambda function has
2179
2179
  executed at least once, the logGroup has been already created with the same name
2180
2180
  so your deployment will start failing.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: konokenj.cdk-api-mcp-server
3
- Version: 0.51.0
3
+ Version: 0.52.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
  [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/konokenj.cdk-api-mcp-server.svg)](https://pypi.org/project/konokenj.cdk-api-mcp-server)
27
27
 
28
28
  <!-- DEP-VERSIONS-START -->
29
- [![aws-cdk](https://img.shields.io/badge/aws%20cdk-v2.221.0-blue.svg)](https://github.com/konokenj/cdk-api-mcp-server/blob/main/current-versions/aws-cdk.txt)
29
+ [![aws-cdk](https://img.shields.io/badge/aws%20cdk-v2.221.1-blue.svg)](https://github.com/konokenj/cdk-api-mcp-server/blob/main/current-versions/aws-cdk.txt)
30
30
  <!-- DEP-VERSIONS-END -->
31
31
 
32
32
  ---
@@ -1,4 +1,4 @@
1
- cdk_api_mcp_server/__about__.py,sha256=wlgAQ3B3wATW8z6aaZQmTw1D4VHqQBjNiASXyYu9Qdg,129
1
+ cdk_api_mcp_server/__about__.py,sha256=mXNeCDlpNGyOG90CmfYPJyxHV9MLXOYUnV499VqChXg,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=OIdszebPa0EqMIaHhqWgH6A64AcwQioIKC-NHDyZKrI,12636
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-agentcore-alpha/README.md,sha256=Guco4NsWQmSm05TrYD55t6BnL1dugOUwH_ZHmt6b14o,35627
12
+ cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-bedrock-agentcore-alpha/README.md,sha256=M0QhroHDCU8PC2XPNa7PncJtVZYgyhjpBnk47uTc_PM,50954
13
13
  cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-bedrock-alpha/README.md,sha256=o4IpchOHFzGdZdeX9WPIfFyHAs98uLKIkfSlBOgygB0,65269
14
14
  cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-cloud9-alpha/README.md,sha256=0N8kldvHAKsNQHKtsj8PaQywiDUVrd6rEwVNQV0equY,7718
15
15
  cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-codestar-alpha/README.md,sha256=J-c-thqWwZFQT3Exjr_AY95BBgTA14Wb9aJ32gmEizQ,1509
@@ -51,7 +51,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/assertions/MIGRATING
51
51
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/assertions/README.md,sha256=3yo3D05n5explTIgnuF-vkk01MTYeAYe7_3rcsD2baE,18299
52
52
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/assets/README.md,sha256=kL56RlfxBa5LwV0cRseybeKIRKHhEXPjUo0HWPZqdO8,53
53
53
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-acmpca/README.md,sha256=RGFU8j3ndIVE6TFClCB6CqXGZsRuQihPUV63ZpxfrnY,1770
54
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/README.md,sha256=Qujd0YE8WYrmfumuPTDu-7jBzeClGEZjxLIJhNtEVgo,64739
54
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/README.md,sha256=S67azcCiKHOcF-DeqRp64IadOWEp8E2arsXicUrwaZg,65012
55
55
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ.api-definition.asset.ts,sha256=boLnVIGcaOjg2TGEhOC0mLldISYkj7NwahqhjUxU-jM,1258
56
56
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ.api-definition.inline.ts,sha256=NjNlh_yI_yYJ0jsdT0Swp2JwhvYIzwC4g_2YK1LChgU,1722
57
57
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ.api-with-authorizer-and-method.ts,sha256=eQRXMq81lE36q-LInjICbtM0yuHQGCzWNySr0IlCs08,1093
@@ -84,7 +84,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ
84
84
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ.restapi.vpc-endpoint.ts,sha256=LFlUv9sQ_r16-MFhlV3e9Eaa3o4tXMm2fT6S71CBuS0,4773
85
85
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ.spec-restapi-endpointconfiguration.ts,sha256=vfv45uUMBA7XEWlx8YnOKVAU7pXfbO6fwx5-8JK26k4,854
86
86
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ.spec-restapi.import-deploymentstage.ts,sha256=01s3ckwgTqJ4t3gLOqPJBY4BldUInsweHqnYBwT1mkI,1832
87
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ.spec-restapi.ts,sha256=WQWL6yv6Fe-uhuYmmp_Wg0Cu-jVL7CozWpKGeh2KyMg,2931
87
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ.spec-restapi.ts,sha256=Uy1rPsiVrMk8zi2uQgAYebYOeIBVisR144XH61Dg1Ow,2989
88
88
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ.stepfunctions-api-without-default-method-responses.ts,sha256=v8gyEaURYiP57S-QNK_bbDVEcE6wENE3f_JNtYZ3YEM,1120
89
89
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ.stepfunctions-api.ts,sha256=GXMRMzXZRfTLrWsevPgHA3UVvcsu1pveggQrSXrrQB0,1611
90
90
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ.stepfunctions-startexecution-without-default-method-responses.ts,sha256=z2UYWbUpbDoLHKexifR_AtRQLwh-ge7dCXjWKfYJAbU,1250
@@ -93,13 +93,13 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ
93
93
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ.token-authorizer.ts,sha256=aSoN0khMwpURVvR7U2fUsjJOubZ_zUhG8b2rgkjSp2M,3597
94
94
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ.usage-plan.multikey.ts,sha256=9njyhYXRAQr-yHR4zvG0CYKS0MXHSoq4bJwZDWa_bAM,556
95
95
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ.usage-plan.sharing.ts,sha256=_SSf6j8I-B4neywqtUikOWwvfoTU2Ph9IlDnuJllsbY,998
96
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/README.md,sha256=2cq_39qk6-6puyrQfFw1KChuI6pWBunohD4C4ZS94hY,30482
96
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/README.md,sha256=5mttUnkn8o4nT0AHbWTkUMPYCWjn-KZduGdHGoUp0sA,30876
97
97
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.api-apikey.ts,sha256=_hI2T1TIom2UmrXqX9oWSkFLb0QNPAuIb3d-wR2YmpY,370
98
98
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.api-domain-name.ts,sha256=il_sIMzx1KgsYstJrcxz2XYVq8DlpTj8oViQX_PLiDk,1960
99
99
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.api-dualstack.ts,sha256=BFbAzMWIdS5w4Bcp30Ow9YSRo8qJWhL18w9PQo4U6rU,440
100
100
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.api-grant-invoke.ts,sha256=oleJiGqC5-cJWoEIIJlvpqnIc3_QsKZ5JP3GbIYuTDI,996
101
101
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.api.ts,sha256=2zmU04diShE0ZSMqI1PFMJ7K0zMJC7tQbxb6uKqw7GQ,467
102
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.stage.ts,sha256=g3YJqt3ZJ2EG7XsDZk6IXZWkH8sbUyYOoDyU4RPzma8,513
102
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.stage.ts,sha256=mXQcGHJu13586Pr7hYJqmxPwgYInxjB0CdCXzpRjfSI,1158
103
103
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.usage-plan.ts,sha256=J3kLq2yD4lKR7y3B6XZjtIUxEmbGS6HhrKei6EtaNR8,1956
104
104
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-authorizers/README.md,sha256=O5FyfQtU2qhYokDH9MZbgFejKz7zD6UTwSeX1pcLky4,13049
105
105
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-authorizers/integ.iam.ts,sha256=lvRtxBcfeAd_hWzp4y2XjUrBaXvrTvTlbenZPrTVjm4,1879
@@ -852,12 +852,12 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.emr-se
852
852
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.group.ts,sha256=tw9TZ4VV3uxWgGEFN4vINTKWzom4aTl--MkHWUNVXdw,391
853
853
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.imported-role.ts,sha256=lGWDhl9-f-nZMIyq7OrrtxZMm6hQOP8BlqNiTdg0Keo,4176
854
854
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.instance-profile.ts,sha256=zdje2SHsI17PneKfh4VhyH8Qv8ex-DbtBx_ERff_sys,2639
855
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.managed-policy.ts,sha256=t73GOq34_J4vY1soKkQEkUUUy5YXzLC376SQp4pFaeM,1425
855
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.managed-policy.ts,sha256=HK8gTSkky_2vXZzwrkbBw4DDKbcEHNwSIl5ZJOOF9ic,1785
856
856
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.oidc-provider-native.ts,sha256=l0nWLnBj6FN-MBkN4GNSUO8vzQ-JwUNC7ydp5WOVxP0,2929
857
857
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.oidc-provider-reject-unauthorized-connection.ts,sha256=ughh-eQ4rp5sIzleHsSm0Mu8ljtBSp_9VmQui_Vd8A0,1352
858
858
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.oidc-provider.ts,sha256=yZ-WuAZ-hbU2ZNgzmo8e4OTAiMWE1E9_O6HGMl-qxrc,1353
859
859
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.permissions-boundary.ts,sha256=PeVW04PoiCNfWw_xTU8haQP8hvfGQfMiNmDYDX96s48,1158
860
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.policy.ts,sha256=LHD7zreR3geN4Wzh87-wZU1A76vv0b61mnlsctUrKnc,970
860
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.policy.ts,sha256=RcgVccJYBEk_ANRG4hg36GgX_dMPgyHgx7J-PfY7q9A,1330
861
861
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.principal-with-conditions-and-tags.ts,sha256=ffBh_rhJk2OuOQf8YBc7FNuPtJiFdBpI-C1sWMxGKOM,601
862
862
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.principal-with-conditions.ts,sha256=msH-LQ67sOzATp4ntUIe9MMEqnci7NbafSPT2ae0ugI,692
863
863
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.role-from-lookup.ts,sha256=hFroyd3A_FJLNKQaofCh-0AfTFcoxWr_K0Hts5qSWYg,1199
@@ -873,7 +873,8 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesis/integ.st
873
873
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesis/integ.stream-dashboard.ts,sha256=ziOjkJ5WfaTPiVw7S1oqqEzzmZSl6h69OyMSSdsXh98,2804
874
874
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesis/integ.stream-shard-level-monitoring.ts,sha256=Psd698h-ewAaGqb71sUNrgyT77G6KdjSZ_9IMQLnGBM,1540
875
875
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesis/integ.stream.ts,sha256=kj0fTRhyXUG8TjWbsY1klNyJzw2AZdUfVmIWuXWCzJQ,388
876
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/README.md,sha256=PIucvVY-WMEZT57tPjsHaOBTJcXhpPlbtv0htzIttBE,27030
876
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/README.md,sha256=3idOvjiFb9T2ZzrduZgC6KfK2b9khzdlZQmFe2t68gg,29262
877
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/integ.cloudwatch-logs-processors.ts,sha256=YOwbVzeZfG6YxifQ01Q1JNbsC31uEsBQngo05wlw3Vk,1478
877
878
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/integ.delivery-stream.source-stream.ts,sha256=gTQNvpVUsP-IGMdMCC5SozS_GhRI_MxAo9eCuZpZbII,2235
878
879
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/integ.delivery-stream.ts,sha256=DXJlTu1eJOs7bFW35Tl-JCan6Eg1dUJMom6PU0mFTB8,1490
879
880
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/integ.kinesis-stream-events-target.ts,sha256=bLE3v9K0_V2KbR5oTGiePpoLOo_bpjkloqF3eNcKBOQ,2138
@@ -925,8 +926,8 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.par
925
926
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.permissions.ts,sha256=cPipX4JdqILlhfxMhVX1B5w4RmYPzMS97dOvXaluOM8,1221
926
927
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.ruby.file.ts,sha256=aA4DuzLNaZcRFHt0fGUDieOXSBAgqn8CPnftmDR4cP0,2181
927
928
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.runtime-management.ts,sha256=oPksgNlqMPQYpoSLzjsI1b1OJZWP_lXutvnDCoXHvOQ,644
928
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.runtime.fromasset.ts,sha256=hYRcigdNsYxWLPWeOvaGYZfAlgQQZT7uOcKRnpcTKUM,1265
929
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.runtime.inlinecode.ts,sha256=57v7Kxw4xhLKMBpR9Ds7H_4i_NjwMDNrcsX-_NobMa4,2995
929
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.runtime.fromasset.ts,sha256=-GOWBQKCspzWUJ0xSQB1RUXPxhON5PS1MsxEEhJOuDk,1752
930
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.runtime.inlinecode.ts,sha256=PHy4_9lhdB9PgDHCaWQrXsp4TpIA18oqRs_86o63wPA,3276
930
931
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.runtimes.ts,sha256=DUCnYFjTvBe5NJzDfR0chtlWkKVVwzEjvbjG7JoyPNU,550
931
932
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.vpc-lambda.ts,sha256=omZiVvKZ_W8vrHENnIyFGCnMq4GZWBb5k2dEb62B8z4,585
932
933
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-destinations/README.md,sha256=_6ZqM3kbkZCmN-9BtU3FbERs82Shv4D2QiWuq47T_VI,5453
@@ -1404,7 +1405,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/int
1404
1405
  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
1405
1406
  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
1406
1407
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.provider.ts,sha256=u_YVV0YZk6hyIxo5JOOSwwUORbqS3BVbJU6DIAwxuk0,1814
1407
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/FEATURE_FLAGS.md,sha256=dHJMOjPOzD5lNAQjTiy4fTv0vG3XmzSPL9dVyo-MwC0,111533
1408
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/FEATURE_FLAGS.md,sha256=zNUPoE55jlVtneLyvwQ0bTLsEIwb1D-TczICRuYVrdw,111510
1408
1409
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/NESTED_ASSEMBLIES.md,sha256=P8PNyr4hIC_i-9aUxa301-5-N4tLcoHYnELBp3C6SQQ,4949
1409
1410
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/README.md,sha256=4Gvb735iDvpcWvocmAezGrwcia_LIhv4j6rS6_nFKeE,27422
1410
1411
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/lambda-layer-awscli/README.md,sha256=kMrrptXZcAiK_TXRQD4XcaNRa3RXaIoIUQRZYi29b30,681
@@ -1435,8 +1436,8 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.pipe
1435
1436
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/region-info/README.md,sha256=vewWkV3ds9o9iyyYaJBNTkaKJ2XA6K2yF17tAxUnujg,2718
1436
1437
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/triggers/README.md,sha256=hYIx7DbG_7p4LYLUfxDwgIQjw9UNdz1GLrqDe8_Dbko,4132
1437
1438
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/triggers/integ.triggers.ts,sha256=4OHplMoBOgHGkktAzoU-TuNmJQS5wGAUvBfj5bGSe_Y,2807
1438
- konokenj_cdk_api_mcp_server-0.51.0.dist-info/METADATA,sha256=fsIE1V36P5u1agmMVTotX_jp5_Bq19lOxNu7w2URyak,2646
1439
- konokenj_cdk_api_mcp_server-0.51.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
1440
- konokenj_cdk_api_mcp_server-0.51.0.dist-info/entry_points.txt,sha256=bVDhMdyCC1WNMPOMbmB82jvWII2CIrwTZDygdCf0cYQ,79
1441
- konokenj_cdk_api_mcp_server-0.51.0.dist-info/licenses/LICENSE.txt,sha256=5OIAASeg1HM22mVZ1enz9bgZ7TlsGfWXnj02P9OgFyk,1098
1442
- konokenj_cdk_api_mcp_server-0.51.0.dist-info/RECORD,,
1439
+ konokenj_cdk_api_mcp_server-0.52.0.dist-info/METADATA,sha256=-fYByqNkuYaOzZKR4PJyTI8msORwFNgP38nY1Q00tc4,2646
1440
+ konokenj_cdk_api_mcp_server-0.52.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
1441
+ konokenj_cdk_api_mcp_server-0.52.0.dist-info/entry_points.txt,sha256=bVDhMdyCC1WNMPOMbmB82jvWII2CIrwTZDygdCf0cYQ,79
1442
+ konokenj_cdk_api_mcp_server-0.52.0.dist-info/licenses/LICENSE.txt,sha256=5OIAASeg1HM22mVZ1enz9bgZ7TlsGfWXnj02P9OgFyk,1098
1443
+ konokenj_cdk_api_mcp_server-0.52.0.dist-info/RECORD,,