konokenj.cdk-api-mcp-server 0.71.0__py3-none-any.whl → 0.72.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 (20) 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 +129 -4
  3. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-eks-v2-alpha/README.md +195 -0
  4. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/mixins-preview/README.md +5 -4
  5. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/README.md/README.md +2 -0
  6. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-bedrock/README.md +2 -3
  7. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-bedrockagentcore/README.md +24 -0
  8. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/README.md +108 -2
  9. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-cluster-native-oidc.ts +49 -0
  10. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-cluster.ts +1 -0
  11. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-oidc-provider.ts +19 -0
  12. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/README.md +76 -3
  13. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.kafka-observability.ts +90 -0
  14. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/core/integ.nested-stack-suppress-template-indentation.ts +29 -0
  15. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/FEATURE_FLAGS.md +25 -0
  16. {konokenj_cdk_api_mcp_server-0.71.0.dist-info → konokenj_cdk_api_mcp_server-0.72.0.dist-info}/METADATA +2 -2
  17. {konokenj_cdk_api_mcp_server-0.71.0.dist-info → konokenj_cdk_api_mcp_server-0.72.0.dist-info}/RECORD +20 -16
  18. {konokenj_cdk_api_mcp_server-0.71.0.dist-info → konokenj_cdk_api_mcp_server-0.72.0.dist-info}/WHEEL +0 -0
  19. {konokenj_cdk_api_mcp_server-0.71.0.dist-info → konokenj_cdk_api_mcp_server-0.72.0.dist-info}/entry_points.txt +0 -0
  20. {konokenj_cdk_api_mcp_server-0.71.0.dist-info → konokenj_cdk_api_mcp_server-0.72.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.71.0"
4
+ __version__ = "0.72.0"
@@ -469,16 +469,34 @@ const repository = new ecr.Repository(this, "TestRepository", {
469
469
  });
470
470
  const agentRuntimeArtifact = agentcore.AgentRuntimeArtifact.fromEcrRepository(repository, "v1.0.0");
471
471
 
472
+ // Optional: Create custom claims for additional validation
473
+ const customClaims = [
474
+ agentcore.RuntimeCustomClaim.withStringValue('department', 'engineering'),
475
+ agentcore.RuntimeCustomClaim.withStringArrayValue('roles', ['admin'], agentcore.CustomClaimOperator.CONTAINS),
476
+ agentcore.RuntimeCustomClaim.withStringArrayValue('permissions', ['read', 'write'], agentcore.CustomClaimOperator.CONTAINS_ANY),
477
+ ];
478
+
472
479
  const runtime = new agentcore.Runtime(this, "MyAgentRuntime", {
473
480
  runtimeName: "myAgent",
474
481
  agentRuntimeArtifact: agentRuntimeArtifact,
475
482
  authorizerConfiguration: agentcore.RuntimeAuthorizerConfiguration.usingCognito(
476
483
  userPool, // User Pool (required)
477
484
  [userPoolClient, anotherUserPoolClient], // User Pool Clients
485
+ ["audience1"], // Allowed Audiences (optional)
486
+ ["read", "write"], // Allowed Scopes (optional)
487
+ customClaims, // Custom claims (optional) - see Custom Claims Validation section
478
488
  ),
479
489
  });
480
490
  ```
481
491
 
492
+ You can configure:
493
+
494
+ - User Pool: The Cognito User Pool that issues JWT tokens
495
+ - User Pool Clients: One or more Cognito User Pool App Clients that are allowed to access the runtime
496
+ - Allowed audiences: Used to validate that the audiences specified in the Cognito token match or are a subset of the audiences specified in the AgentCore Runtime
497
+ - Allowed scopes: Allow access only if the token contains at least one of the required scopes configured here
498
+ - Custom claims: A set of rules to match specific claims in the incoming token against predefined values for validating JWT tokens
499
+
482
500
  #### JWT Authentication
483
501
 
484
502
  To configure custom JWT authentication with your own OpenID Connect (OIDC) provider:
@@ -495,13 +513,77 @@ const runtime = new agentcore.Runtime(this, "MyAgentRuntime", {
495
513
  authorizerConfiguration: agentcore.RuntimeAuthorizerConfiguration.usingJWT(
496
514
  "https://example.com/.well-known/openid-configuration", // Discovery URL (required)
497
515
  ["client1", "client2"], // Allowed Client IDs (optional)
498
- ["audience1"] // Allowed Audiences (optional)
516
+ ["audience1"], // Allowed Audiences (optional)
517
+ ["read", "write"], // Allowed Scopes (optional)
518
+ // Custom claims (optional) - see Custom Claims Validation section below
499
519
  ),
500
520
  });
501
521
  ```
502
522
 
523
+ You can configure:
524
+
525
+ - Discovery URL: Enter the Discovery URL from your identity provider (e.g. Okta, Cognito, etc.), typically found in that provider's documentation. This allows your Agent or Tool to fetch login, downstream resource token, and verification settings.
526
+ - Allowed audiences: This is used to validate that the audiences specified for the OAuth token matches or are a subset of the audiences specified in the AgentCore Runtime.
527
+ - Allowed clients: This is used to validate that the public identifier of the client, as specified in the authorization token, is allowed to access the AgentCore Runtime.
528
+ - Allowed scopes: Allow access only if the token contains at least one of the required scopes configured here.
529
+ - Custom claims: A set of rules to match specific claims in the incoming token against predefined values for validating JWT tokens.
530
+
503
531
  **Note**: The discovery URL must end with `/.well-known/openid-configuration`.
504
532
 
533
+ ##### Custom Claims Validation
534
+
535
+ Custom claims allow you to validate additional fields in JWT tokens beyond the standard audience, client, and scope validations. You can create custom claims using the `RuntimeCustomClaim` class:
536
+
537
+ ```typescript fixture=default
538
+ const repository = new ecr.Repository(this, "TestRepository", {
539
+ repositoryName: "test-agent-runtime",
540
+ });
541
+ const agentRuntimeArtifact = agentcore.AgentRuntimeArtifact.fromEcrRepository(repository, "v1.0.0");
542
+
543
+ // String claim - validates that the claim exactly equals the specified value
544
+ // Uses EQUALS operator automatically
545
+ const departmentClaim = agentcore.RuntimeCustomClaim.withStringValue('department', 'engineering');
546
+
547
+ // String array claim with CONTAINS operator (default)
548
+ // Validates that the claim array contains a specific string value
549
+ // IMPORTANT: CONTAINS requires exactly one value in the array parameter
550
+ const rolesClaim = agentcore.RuntimeCustomClaim.withStringArrayValue('roles', ['admin']);
551
+
552
+ // String array claim with CONTAINS_ANY operator
553
+ // Validates that the claim array contains at least one of the specified values
554
+ // Use this when you want to check for multiple possible values
555
+ const permissionsClaim = agentcore.RuntimeCustomClaim.withStringArrayValue(
556
+ 'permissions',
557
+ ['read', 'write'],
558
+ agentcore.CustomClaimOperator.CONTAINS_ANY
559
+ );
560
+
561
+ // Use custom claims in authorizer configuration
562
+ const runtime = new agentcore.Runtime(this, "MyAgentRuntime", {
563
+ runtimeName: "myAgent",
564
+ agentRuntimeArtifact: agentRuntimeArtifact,
565
+ authorizerConfiguration: agentcore.RuntimeAuthorizerConfiguration.usingJWT(
566
+ "https://example.com/.well-known/openid-configuration",
567
+ ["client1", "client2"],
568
+ ["audience1"],
569
+ ["read", "write"],
570
+ [departmentClaim, rolesClaim, permissionsClaim] // Custom claims
571
+ ),
572
+ });
573
+ ```
574
+
575
+ **Custom Claim Rules**:
576
+
577
+ - **String claims**: Must use the `EQUALS` operator (automatically set). The claim value must exactly match the specified string.
578
+ - **String array claims**: Can use `CONTAINS` (default) or `CONTAINS_ANY` operators:
579
+ - **`CONTAINS`**: Checks if the claim array contains a specific string value. **Requires exactly one value** in the array parameter. For example, `['admin']` will check if the token's claim array contains the string `'admin'`.
580
+ - **`CONTAINS_ANY`**: Checks if the claim array contains at least one of the provided string values. Use this when you want to validate against multiple possible values. For example, `['read', 'write']` will check if the token's claim array contains either `'read'` or `'write'`.
581
+
582
+ **Example Use Cases**:
583
+
584
+ - Use `CONTAINS` when you need to verify a user has a specific role: `RuntimeCustomClaim.withStringArrayValue('roles', ['admin'])`
585
+ - Use `CONTAINS_ANY` when you need to verify a user has any of several permissions: `RuntimeCustomClaim.withStringArrayValue('permissions', ['read', 'write'], CustomClaimOperator.CONTAINS_ANY)`
586
+
505
587
  #### OAuth Authentication
506
588
 
507
589
  To configure OAuth 2.0 authentication:
@@ -516,8 +598,11 @@ const runtime = new agentcore.Runtime(this, "MyAgentRuntime", {
516
598
  runtimeName: "myAgent",
517
599
  agentRuntimeArtifact: agentRuntimeArtifact,
518
600
  authorizerConfiguration: agentcore.RuntimeAuthorizerConfiguration.usingOAuth(
519
- "https://github.com/.well-known/openid-configuration",
520
- "oauth_client_123",
601
+ "https://github.com/.well-known/openid-configuration", // Discovery URL (required)
602
+ "oauth_client_123", // OAuth Client ID (required)
603
+ ["audience1"], // Allowed Audiences (optional)
604
+ ["openid", "profile"], // Allowed Scopes (optional)
605
+ // Custom claims (optional) - see Custom Claims Validation section
521
606
  ),
522
607
  });
523
608
  ```
@@ -1132,21 +1217,33 @@ your AgentCore gateway. By default, if not provided, the construct will create a
1132
1217
  **JSON Web Token (JWT)** – A secure and compact token used for authorization. After creating the JWT, you specify it as the authorization
1133
1218
  configuration when you create the gateway. You can create a JWT with any of the identity providers at Provider setup and configuration.
1134
1219
 
1135
- You can configure a custom authorization provider using the `inboundAuthorizer` property with `GatewayAuthorizer.usingCustomJwt()`.
1220
+ You can configure a custom authorization provider using the `authorizerConfiguration` property with `GatewayAuthorizer.usingCustomJwt()`.
1136
1221
  You need to specify an OAuth discovery server and client IDs/audiences when you create the gateway. You can specify the following:
1137
1222
 
1138
1223
  - Discovery Url — String that must match the pattern ^.+/\.well-known/openid-configuration$ for OpenID Connect discovery URLs
1139
1224
  - At least one of the below options depending on the chosen identity provider.
1140
1225
  - Allowed audiences — List of allowed audiences for JWT tokens
1141
1226
  - Allowed clients — List of allowed client identifiers
1227
+ - Allowed scopes — List of allowed scopes for JWT tokens
1228
+ - Custom claims — Optional custom claim validations (see Custom Claims Validation section below)
1142
1229
 
1143
1230
  ```typescript fixture=default
1231
+
1232
+ // Optional: Create custom claims (CustomClaimOperator and GatewayCustomClaim from agentcore)
1233
+ const customClaims = [
1234
+ agentcore.GatewayCustomClaim.withStringValue('department', 'engineering'),
1235
+ agentcore.GatewayCustomClaim.withStringArrayValue('roles', ['admin'], agentcore.CustomClaimOperator.CONTAINS),
1236
+ agentcore.GatewayCustomClaim.withStringArrayValue('permissions', ['read', 'write'], agentcore.CustomClaimOperator.CONTAINS_ANY),
1237
+ ];
1238
+
1144
1239
  const gateway = new agentcore.Gateway(this, "MyGateway", {
1145
1240
  gatewayName: "my-gateway",
1146
1241
  authorizerConfiguration: agentcore.GatewayAuthorizer.usingCustomJwt({
1147
1242
  discoveryUrl: "https://auth.example.com/.well-known/openid-configuration",
1148
1243
  allowedAudience: ["my-app"],
1149
1244
  allowedClients: ["my-client-id"],
1245
+ allowedScopes: ["read", "write"],
1246
+ customClaims: customClaims, // Optional custom claims
1150
1247
  }),
1151
1248
  });
1152
1249
  ```
@@ -1188,6 +1285,31 @@ const oauthScopes = gateway.oauthScopes;
1188
1285
  // oauthScopes are in the format: ['{resourceServerId}/read', '{resourceServerId}/write']
1189
1286
  ```
1190
1287
 
1288
+ **Using Cognito User Pool Explicitly with Custom Claims** – You can also use an existing Cognito User Pool with custom claims:
1289
+
1290
+ ```typescript fixture=default
1291
+ declare const userPool: cognito.UserPool;
1292
+ declare const userPoolClient: cognito.UserPoolClient;
1293
+
1294
+ // Optional: Create custom claims (CustomClaimOperator and GatewayCustomClaim from agentcore)
1295
+ const customClaims = [
1296
+ agentcore.GatewayCustomClaim.withStringValue('department', 'engineering'),
1297
+ agentcore.GatewayCustomClaim.withStringArrayValue('roles', ['admin'], agentcore.CustomClaimOperator.CONTAINS),
1298
+ agentcore.GatewayCustomClaim.withStringArrayValue('permissions', ['read', 'write'], agentcore.CustomClaimOperator.CONTAINS_ANY),
1299
+ ];
1300
+
1301
+ const gateway = new agentcore.Gateway(this, "MyGateway", {
1302
+ gatewayName: "my-gateway",
1303
+ authorizerConfiguration: agentcore.GatewayAuthorizer.usingCognito({
1304
+ userPool: userPool,
1305
+ allowedClients: [userPoolClient],
1306
+ allowedAudiences: ["audience1"],
1307
+ allowedScopes: ["read", "write"],
1308
+ customClaims: customClaims, // Optional custom claims
1309
+ }),
1310
+ });
1311
+ ```
1312
+
1191
1313
  To authenticate with the gateway, request an access token using the client credentials flow and use it to call Gateway endpoints. For more information about the token endpoint, see [The token issuer endpoint](https://docs.aws.amazon.com/cognito/latest/developerguide/token-endpoint.html).
1192
1314
 
1193
1315
  The following is an example of a token request using curl:
@@ -1225,6 +1347,7 @@ const gateway = new agentcore.Gateway(this, "MyGateway", {
1225
1347
  discoveryUrl: "https://auth.example.com/.well-known/openid-configuration",
1226
1348
  allowedAudience: ["my-app"],
1227
1349
  allowedClients: ["my-client-id"],
1350
+ allowedScopes: ["read", "write"],
1228
1351
  }),
1229
1352
  kmsKey: encryptionKey,
1230
1353
  exceptionLevel: agentcore.GatewayExceptionLevel.DEBUG,
@@ -1255,6 +1378,7 @@ const gateway = new agentcore.Gateway(this, "MyGateway", {
1255
1378
  discoveryUrl: "https://auth.example.com/.well-known/openid-configuration",
1256
1379
  allowedAudience: ["my-app"],
1257
1380
  allowedClients: ["my-client-id"],
1381
+ allowedScopes: ["read", "write"],
1258
1382
  }),
1259
1383
  role: executionRole,
1260
1384
  });
@@ -1278,6 +1402,7 @@ const gateway = new agentcore.Gateway(this, "MyGateway", {
1278
1402
  discoveryUrl: "https://auth.example.com/.well-known/openid-configuration",
1279
1403
  allowedAudience: ["my-app"],
1280
1404
  allowedClients: ["my-client-id"],
1405
+ allowedScopes: ["read", "write"],
1281
1406
  }),
1282
1407
  });
1283
1408
 
@@ -451,6 +451,34 @@ new eks.Cluster(this, 'HelloEKS', {
451
451
  });
452
452
  ```
453
453
 
454
+ To provide additional Helm chart values supported by `albController` in CDK, use the `additionalHelmChartValues` property. For example, the following code snippet shows how to set the `enableWafV2` flag:
455
+
456
+ ```ts
457
+ import { KubectlV34Layer } from '@aws-cdk/lambda-layer-kubectl-v34';
458
+
459
+ new eks.Cluster(this, 'HelloEKS', {
460
+ version: eks.KubernetesVersion.V1_34,
461
+ albController: {
462
+ version: eks.AlbControllerVersion.V2_8_2,
463
+ additionalHelmChartValues: {
464
+ enableWafv2: false
465
+ }
466
+ },
467
+ });
468
+ ```
469
+
470
+ To overwrite an existing ALB controller service account, use the `overwriteServiceAccount` property:
471
+
472
+ ```ts
473
+ new eks.Cluster(this, 'HelloEKS', {
474
+ version: eks.KubernetesVersion.V1_34,
475
+ albController: {
476
+ version: eks.AlbControllerVersion.V2_8_2,
477
+ overwriteServiceAccount: true,
478
+ },
479
+ });
480
+ ```
481
+
454
482
  The `albController` requires `defaultCapacity` or at least one nodegroup. If there's no `defaultCapacity` or available
455
483
  nodegroup for the cluster, the `albController` deployment would fail.
456
484
 
@@ -755,6 +783,173 @@ By default, the cluster creator role will be granted the cluster admin permissio
755
783
 
756
784
  > **Note** - Switching `bootstrapClusterCreatorAdminPermissions` on an existing cluster would cause cluster replacement and should be avoided in production.
757
785
 
786
+
787
+ ### Service Accounts
788
+
789
+ With services account you can provide Kubernetes Pods access to AWS resources.
790
+
791
+ ```ts
792
+ import * as s3 from 'aws-cdk-lib/aws-s3';
793
+ declare const cluster: eks.Cluster;
794
+ // add service account
795
+ const serviceAccount = cluster.addServiceAccount('MyServiceAccount');
796
+
797
+ const bucket = new s3.Bucket(this, 'Bucket');
798
+ bucket.grantReadWrite(serviceAccount);
799
+
800
+ const mypod = cluster.addManifest('mypod', {
801
+ apiVersion: 'v1',
802
+ kind: 'Pod',
803
+ metadata: { name: 'mypod' },
804
+ spec: {
805
+ serviceAccountName: serviceAccount.serviceAccountName,
806
+ containers: [
807
+ {
808
+ name: 'hello',
809
+ image: 'paulbouwer/hello-kubernetes:1.5',
810
+ ports: [ { containerPort: 8080 } ],
811
+ },
812
+ ],
813
+ },
814
+ });
815
+
816
+ // create the resource after the service account.
817
+ mypod.node.addDependency(serviceAccount);
818
+
819
+ // print the IAM role arn for this service account
820
+ new CfnOutput(this, 'ServiceAccountIamRole', { value: serviceAccount.role.roleArn });
821
+ ```
822
+
823
+ Note that using `serviceAccount.serviceAccountName` above **does not** translate into a resource dependency.
824
+ This is why an explicit dependency is needed. See <https://github.com/aws/aws-cdk/issues/9910> for more details.
825
+
826
+ It is possible to pass annotations and labels to the service account.
827
+
828
+ ```ts
829
+ declare const cluster: eks.Cluster;
830
+ // add service account with annotations and labels
831
+ const serviceAccount = cluster.addServiceAccount('MyServiceAccount', {
832
+ annotations: {
833
+ 'eks.amazonaws.com/sts-regional-endpoints': 'false',
834
+ },
835
+ labels: {
836
+ 'some-label': 'with-some-value',
837
+ },
838
+ });
839
+ ```
840
+
841
+ You can also add service accounts to existing clusters.
842
+ To do so, pass the `openIdConnectProvider` property when you import the cluster into the application.
843
+
844
+ ```ts
845
+ import * as s3 from 'aws-cdk-lib/aws-s3';
846
+ // you can import an existing provider
847
+ const provider = eks.OidcProviderNative.fromOidcProviderArn(this, 'Provider', 'arn:aws:iam::123456:oidc-provider/oidc.eks.eu-west-1.amazonaws.com/id/AB123456ABC');
848
+
849
+ // or create a new one using an existing issuer url
850
+ declare const issuerUrl: string;
851
+ const provider2 = new eks.OidcProviderNative(this, 'Provider', {
852
+ url: issuerUrl,
853
+ });
854
+
855
+ import { KubectlV34Layer } from '@aws-cdk/lambda-layer-kubectl-v34';
856
+
857
+ const cluster = eks.Cluster.fromClusterAttributes(this, 'MyCluster', {
858
+ clusterName: 'Cluster',
859
+ openIdConnectProvider: provider,
860
+ kubectlProviderOptions: {
861
+ kubectlLayer: new KubectlV34Layer(this, 'kubectl'),
862
+ }});
863
+
864
+ const serviceAccount = cluster.addServiceAccount('MyServiceAccount');
865
+
866
+ const bucket = new s3.Bucket(this, 'Bucket');
867
+ bucket.grantReadWrite(serviceAccount);
868
+ ```
869
+
870
+ Note that adding service accounts requires running `kubectl` commands against the cluster which requires you to provide `kubectlProviderOptions` in the cluster props to create the `kubectl` provider. See [Kubectl Support](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-eks-v2-alpha-readme.html#kubectl-support)
871
+
872
+
873
+ #### Migrating from the deprecated eks.OpenIdConnectProvider to eks.OidcProviderNative
874
+
875
+ `eks.OpenIdConnectProvider` creates an IAM OIDC (OpenId Connect) provider using a custom resource while `eks.OidcProviderNative` uses the CFN L1 (AWS::IAM::OidcProvider) to create the provider. It is recommended for new and existing projects to use `eks.OidcProviderNative`.
876
+
877
+ To migrate without temporarily removing the OIDCProvider, follow these steps:
878
+
879
+ 1. Set the `removalPolicy` of `cluster.openIdConnectProvider` to `RETAIN`.
880
+
881
+ ```ts
882
+ import * as cdk from 'aws-cdk-lib';
883
+ declare const cluster: eks.Cluster;
884
+
885
+ cdk.RemovalPolicies.of(cluster.openIdConnectProvider).apply(cdk.RemovalPolicy.RETAIN);
886
+ ```
887
+
888
+ 2. Run `cdk diff` to verify the changes are expected then `cdk deploy`.
889
+
890
+ 3. Add the following to the `context` field of your `cdk.json` to enable the feature flag that creates the native oidc provider.
891
+
892
+ ```json
893
+ "@aws-cdk/aws-eks:useNativeOidcProvider": true,
894
+ ```
895
+
896
+ 4. Run `cdk diff` and ensure the changes are expected. Example of an expected diff:
897
+
898
+ ```bash
899
+ Resources
900
+ [-] Custom::AWSCDKOpenIdConnectProvider TestCluster/OpenIdConnectProvider/Resource TestClusterOpenIdConnectProviderE18F0FD0 orphan
901
+ [-] AWS::IAM::Role Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Role CustomAWSCDKOpenIdConnectProviderCustomResourceProviderRole517FED65 destroy
902
+ [-] AWS::Lambda::Function Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Handler CustomAWSCDKOpenIdConnectProviderCustomResourceProviderHandlerF2C543E0 destroy
903
+ [+] AWS::IAM::OIDCProvider TestCluster/OidcProviderNative TestClusterOidcProviderNative0BE3F155
904
+ ```
905
+
906
+ 5. Run `cdk import --force` and provide the ARN of the existing OpenIdConnectProvider when prompted. You will get a warning about pending changes to existing resources which is expected.
907
+
908
+ 6. Run `cdk deploy` to apply any pending changes. This will apply the destroy/orphan changes in the above example.
909
+
910
+ If you are creating the OpenIdConnectProvider manually via `new eks.OpenIdConnectProvider`, follow these steps:
911
+
912
+ 1. Set the `removalPolicy` of the existing `OpenIdConnectProvider` to `RemovalPolicy.RETAIN`.
913
+
914
+ ```ts
915
+ import * as cdk from 'aws-cdk-lib';
916
+ // Step 1: Add retain policy to existing provider
917
+ const existingProvider = new eks.OpenIdConnectProvider(this, 'Provider', {
918
+ url: 'https://oidc.eks.us-west-2.amazonaws.com/id/EXAMPLE',
919
+ removalPolicy: cdk.RemovalPolicy.RETAIN, // Add this line
920
+ });
921
+ ```
922
+
923
+ 2. Deploy with the retain policy to avoid deletion of the underlying resource.
924
+
925
+ ```bash
926
+ cdk deploy
927
+ ```
928
+
929
+ 3. Replace `OpenIdConnectProvider` with `OidcProviderNative` in your code.
930
+
931
+ ```ts
932
+ // Step 3: Replace with native provider
933
+ const nativeProvider = new eks.OidcProviderNative(this, 'Provider', {
934
+ url: 'https://oidc.eks.us-west-2.amazonaws.com/id/EXAMPLE',
935
+ });
936
+ ```
937
+
938
+ 4. Run `cdk diff` and verify the changes are expected. Example of an expected diff:
939
+
940
+ ```bash
941
+ Resources
942
+ [-] Custom::AWSCDKOpenIdConnectProvider TestCluster/OpenIdConnectProvider/Resource TestClusterOpenIdConnectProviderE18F0FD0 orphan
943
+ [-] AWS::IAM::Role Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Role CustomAWSCDKOpenIdConnectProviderCustomResourceProviderRole517FED65 destroy
944
+ [-] AWS::Lambda::Function Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Handler CustomAWSCDKOpenIdConnectProviderCustomResourceProviderHandlerF2C543E0 destroy
945
+ [+] AWS::IAM::OIDCProvider TestCluster/OidcProviderNative TestClusterOidcProviderNative0BE3F155
946
+ ```
947
+
948
+ 5. Run `cdk import --force` to import the existing OIDC provider resource by providing the existing ARN.
949
+
950
+ 6. Run `cdk deploy` to apply any pending changes. This will apply the destroy/orphan operations in the example diff above.
951
+
952
+
758
953
  ### Cluster Security Group
759
954
 
760
955
  When you create an Amazon EKS cluster, a [cluster security group](https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html)
@@ -54,7 +54,7 @@ For convenience, you can use the `.with()` method for a more fluent syntax:
54
54
  import '@aws-cdk/mixins-preview/with';
55
55
 
56
56
  const bucket = new s3.CfnBucket(scope, "MyBucket")
57
- .with(new EnableVersioning())
57
+ .with(new BucketVersioning())
58
58
  .with(new AutoDeleteObjects());
59
59
  ```
60
60
 
@@ -127,11 +127,11 @@ const bucket = new s3.CfnBucket(scope, "Bucket");
127
127
  Mixins.of(bucket).apply(new AutoDeleteObjects());
128
128
  ```
129
129
 
130
- **EnableVersioning**: Enables versioning on S3 buckets
130
+ **BucketVersioning**: Enables versioning on S3 buckets
131
131
 
132
132
  ```typescript
133
133
  const bucket = new s3.CfnBucket(scope, "Bucket");
134
- Mixins.of(bucket).apply(new EnableVersioning());
134
+ Mixins.of(bucket).apply(new BucketVersioning());
135
135
  ```
136
136
 
137
137
  **BucketPolicyStatementsMixin**: Adds IAM policy statements to a bucket policy
@@ -231,7 +231,8 @@ Mixins.of(scope)
231
231
 
232
232
  // Strict application that requires all constructs to match
233
233
  Mixins.of(scope)
234
- .mustApply(new EncryptionAtRest()); // Throws if no constructs support the mixin
234
+ .requireAll() // Throws if no constructs support the mixin
235
+ .apply(new EncryptionAtRest());
235
236
  ```
236
237
 
237
238
  ---
@@ -1486,6 +1486,8 @@ To do this for a specific stack, add a `suppressTemplateIndentation: true` prope
1486
1486
  stack's `StackProps` parameter. You can also set this property to `false` to override
1487
1487
  the context key setting.
1488
1488
 
1489
+ Similarly, to do this for a specific nested stack, add a `suppressTemplateIndentation: true` property to its `NestedStackProps` parameter. You can also set this property to `false` to override the context key setting.
1490
+
1489
1491
  ## App Context
1490
1492
 
1491
1493
  [Context values](https://docs.aws.amazon.com/cdk/v2/guide/context.html) are key-value pairs that can be associated with an app, stack, or construct.
@@ -30,7 +30,6 @@ bedrock.ProvisionedModel.fromProvisionedModelArn(
30
30
  );
31
31
  ```
32
32
 
33
- There are no official hand-written ([L2](https://docs.aws.amazon.com/cdk/latest/guide/constructs.html#constructs_lib)) constructs for provisioning Bedrock resources yet. Here are some suggestions on how to proceed:
33
+ L2 constructs for this service are available in the [`@aws-cdk/aws-bedrock-alpha`](https://www.npmjs.com/package/@aws-cdk/aws-bedrock-alpha) package.
34
34
 
35
- - Search [Construct Hub for Bedrock construct libraries](https://constructs.dev/search?q=bedrock)
36
- - Use the automatically generated [L1](https://docs.aws.amazon.com/cdk/latest/guide/constructs.html#constructs_l1_using) constructs, in the same way you would use [the CloudFormation AWS::Bedrock resources](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Bedrock.html) directly.
35
+ You can also use the automatically generated [L1](https://docs.aws.amazon.com/cdk/latest/guide/constructs.html#constructs_l1_using) constructs, in the same way you would use [the CloudFormation AWS::Bedrock resources](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Bedrock.html) directly.
@@ -0,0 +1,24 @@
1
+ # AWS::BedrockAgentCore Construct Library
2
+ <!--BEGIN STABILITY BANNER-->
3
+
4
+ ---
5
+
6
+ ![cfn-resources: Stable](https://img.shields.io/badge/cfn--resources-stable-success.svg?style=for-the-badge)
7
+
8
+ > All classes with the `Cfn` prefix in this module ([CFN Resources]) are always stable and safe to use.
9
+ >
10
+ > [CFN Resources]: https://docs.aws.amazon.com/cdk/latest/guide/constructs.html#constructs_lib
11
+
12
+ ---
13
+
14
+ <!--END STABILITY BANNER-->
15
+
16
+ This module is part of the [AWS Cloud Development Kit](https://github.com/aws/aws-cdk) project.
17
+
18
+ ```ts nofixture
19
+ import * as bedrockagentcore from 'aws-cdk-lib/aws-bedrockagentcore';
20
+ ```
21
+
22
+ L2 constructs for this service are available in the [`@aws-cdk/aws-bedrock-agentcore-alpha`](https://www.npmjs.com/package/@aws-cdk/aws-bedrock-agentcore-alpha) package.
23
+
24
+ You can also use the automatically generated [L1](https://docs.aws.amazon.com/cdk/latest/guide/constructs.html#constructs_l1_using) constructs, in the same way you would use [the CloudFormation AWS::BedrockAgentCore resources](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_BedrockAgentCore.html) directly.
@@ -731,6 +731,21 @@ new eks.Cluster(this, 'HelloEKS', {
731
731
  });
732
732
  ```
733
733
 
734
+ To overwrite an existing ALB controller service account, use the `overwriteServiceAccount` property:
735
+
736
+ ```ts
737
+ import { KubectlV34Layer } from '@aws-cdk/lambda-layer-kubectl-v34';
738
+
739
+ new eks.Cluster(this, 'HelloEKS', {
740
+ version: eks.KubernetesVersion.V1_34,
741
+ albController: {
742
+ version: eks.AlbControllerVersion.V2_8_2,
743
+ overwriteServiceAccount: true
744
+ },
745
+ kubectlLayer: new KubectlV34Layer(this, 'kubectl'),
746
+ });
747
+ ```
748
+
734
749
  The `albController` requires `defaultCapacity` or at least one nodegroup. If there's no `defaultCapacity` or available
735
750
  nodegroup for the cluster, the `albController` deployment would fail.
736
751
 
@@ -1430,16 +1445,26 @@ const serviceAccount = cluster.addServiceAccount('MyServiceAccount', {
1430
1445
  });
1431
1446
  ```
1432
1447
 
1448
+ To overwrite an existing service account, use the `overwriteServiceAccount` property:
1449
+
1450
+ ```ts
1451
+ declare const cluster: eks.Cluster;
1452
+ // overwrite existing service account
1453
+ const serviceAccount = cluster.addServiceAccount('MyServiceAccount', {
1454
+ overwriteServiceAccount: true,
1455
+ });
1456
+ ```
1457
+
1433
1458
  You can also add service accounts to existing clusters.
1434
1459
  To do so, pass the `openIdConnectProvider` property when you import the cluster into the application.
1435
1460
 
1436
1461
  ```ts
1437
1462
  // you can import an existing provider
1438
- const provider = eks.OpenIdConnectProvider.fromOpenIdConnectProviderArn(this, 'Provider', 'arn:aws:iam::123456:oidc-provider/oidc.eks.eu-west-1.amazonaws.com/id/AB123456ABC');
1463
+ const provider = eks.OidcProviderNative.fromOidcProviderArn(this, 'Provider', 'arn:aws:iam::123456:oidc-provider/oidc.eks.eu-west-1.amazonaws.com/id/AB123456ABC');
1439
1464
 
1440
1465
  // or create a new one using an existing issuer url
1441
1466
  declare const issuerUrl: string;
1442
- const provider2 = new eks.OpenIdConnectProvider(this, 'Provider', {
1467
+ const provider2 = new eks.OidcProviderNative(this, 'Provider', {
1443
1468
  url: issuerUrl,
1444
1469
  });
1445
1470
 
@@ -1459,6 +1484,87 @@ Note that adding service accounts requires running `kubectl` commands against th
1459
1484
  This means you must also pass the `kubectlRoleArn` when importing the cluster.
1460
1485
  See [Using existing Clusters](https://github.com/aws/aws-cdk/tree/main/packages/aws-cdk-lib/aws-eks#using-existing-clusters).
1461
1486
 
1487
+
1488
+ ##### Migrating from eks.OpenIdConnectProvider to eks.OidcProviderNative
1489
+
1490
+ `eks.OpenIdConnectProvider` creates an IAM OIDC (OpenId Connect) provider using a custom resource while `eks.OidcProviderNative` uses the CFN L1 (AWS::IAM::OidcProvider) to create the provider. It is recommended for new and existing projects to use `eks.OidcProviderNative`. Migrating from the `eks.OpenIdConnectProvider` is not as trivial as switching out the property since the property controls the creation of a resource whose type is changing. Due to the potential complexlity of the migration and the requirement of a manual step (`cdk import`) we are not deprecating the `eks.OpenIdConnectProvider` construct but encourge you to migrate.
1491
+
1492
+ To migrate without temporarily removing the OIDCProvider, follow these steps:
1493
+
1494
+ 1. Set the `removalPolicy` of `cluster.openIdConnectProvider` to `RETAIN`.
1495
+
1496
+ ```ts
1497
+ import * as cdk from 'aws-cdk-lib';
1498
+ declare const cluster: eks.Cluster;
1499
+
1500
+ cdk.RemovalPolicies.of(cluster.openIdConnectProvider).apply(cdk.RemovalPolicy.RETAIN);
1501
+ ```
1502
+
1503
+ 2. Run `cdk diff` to verify the changes are expected then `cdk deploy`.
1504
+
1505
+ 3. Add the following to the `context` field of your `cdk.json` to enable the feature flag that creates the native oidc provider.
1506
+
1507
+ ```json
1508
+ "@aws-cdk/aws-eks:useNativeOidcProvider": true,
1509
+ ```
1510
+
1511
+ 4. Run `cdk diff` and ensure the changes are expected. Example of an expected diff:
1512
+
1513
+ ```bash
1514
+ Resources
1515
+ [-] Custom::AWSCDKOpenIdConnectProvider TestCluster/OpenIdConnectProvider/Resource TestClusterOpenIdConnectProviderE18F0FD0 orphan
1516
+ [-] AWS::IAM::Role Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Role CustomAWSCDKOpenIdConnectProviderCustomResourceProviderRole517FED65 destroy
1517
+ [-] AWS::Lambda::Function Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Handler CustomAWSCDKOpenIdConnectProviderCustomResourceProviderHandlerF2C543E0 destroy
1518
+ [+] AWS::IAM::OIDCProvider TestCluster/OidcProviderNative TestClusterOidcProviderNative0BE3F155
1519
+ ```
1520
+
1521
+ 5. Run `cdk import --force` and provide the ARN of the existing OpenIdConnectProvider when prompted. You will get a warning about pending changes to existing resources which is expected.
1522
+
1523
+ 6. Run `cdk deploy` to apply any pending changes. This will apply the destroy/orphan changes in the above example.
1524
+
1525
+ If you are creating the OpenIdConnectProvider manually via `new eks.OpenIdConnectProvider`, follow these steps:
1526
+
1527
+ 1. Set the `removalPolicy` of the existing `OpenIdConnectProvider` to `RemovalPolicy.RETAIN`.
1528
+
1529
+ ```ts
1530
+ import * as cdk from 'aws-cdk-lib';
1531
+ // Step 1: Add retain policy to existing provider
1532
+ const existingProvider = new eks.OpenIdConnectProvider(this, 'Provider', {
1533
+ url: 'https://oidc.eks.us-west-2.amazonaws.com/id/EXAMPLE',
1534
+ removalPolicy: cdk.RemovalPolicy.RETAIN, // Add this line
1535
+ });
1536
+ ```
1537
+
1538
+ 2. Deploy with the retain policy to avoid deletion of the underlying resource.
1539
+
1540
+ ```bash
1541
+ cdk deploy
1542
+ ```
1543
+
1544
+ 3. Replace `OpenIdConnectProvider` with `OidcProviderNative` in your code.
1545
+
1546
+ ```ts
1547
+ // Step 3: Replace with native provider
1548
+ const nativeProvider = new eks.OidcProviderNative(this, 'Provider', {
1549
+ url: 'https://oidc.eks.us-west-2.amazonaws.com/id/EXAMPLE',
1550
+ });
1551
+ ```
1552
+
1553
+ 4. Run `cdk diff` and verify the changes are expected. Example of an expected diff:
1554
+
1555
+ ```bash
1556
+ Resources
1557
+ [-] Custom::AWSCDKOpenIdConnectProvider TestCluster/OpenIdConnectProvider/Resource TestClusterOpenIdConnectProviderE18F0FD0 orphan
1558
+ [-] AWS::IAM::Role Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Role CustomAWSCDKOpenIdConnectProviderCustomResourceProviderRole517FED65 destroy
1559
+ [-] AWS::Lambda::Function Custom::AWSCDKOpenIdConnectProviderCustomResourceProvider/Handler CustomAWSCDKOpenIdConnectProviderCustomResourceProviderHandlerF2C543E0 destroy
1560
+ [+] AWS::IAM::OIDCProvider TestCluster/OidcProviderNative TestClusterOidcProviderNative0BE3F155
1561
+ ```
1562
+
1563
+ 5. Run `cdk import --force` to import the existing OIDC provider resource by providing the existing ARN.
1564
+
1565
+ 6. Run `cdk deploy` to apply any pending changes. This will apply the destroy/orphan operations in the example diff above.
1566
+
1567
+
1462
1568
  ### Pod Identities
1463
1569
 
1464
1570
  [Amazon EKS Pod Identities](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html) is a feature that simplifies how
@@ -0,0 +1,49 @@
1
+ /// !cdk-integ pragma:disable-update-workflow
2
+ import { App, Stack, StackProps } from 'aws-cdk-lib';
3
+ import * as integ from '@aws-cdk/integ-tests-alpha';
4
+ import * as eks from 'aws-cdk-lib/aws-eks';
5
+ import { EKS_USE_NATIVE_OIDC_PROVIDER } from 'aws-cdk-lib/cx-api';
6
+ import { getClusterVersionConfig } from './integ-tests-kubernetes-version';
7
+
8
+ class EksClusterNativeOidcStack extends Stack {
9
+ constructor(scope: App, id: string, props?: StackProps) {
10
+ super(scope, id, props);
11
+
12
+ const cluster = new eks.Cluster(this, 'Cluster', {
13
+ ...getClusterVersionConfig(this, eks.KubernetesVersion.V1_32),
14
+
15
+ });
16
+
17
+ /**
18
+ * ServiceAccount and AlbController are added to verify that OIDC provider is created and
19
+ * can be used to create IAM roles for service accounts.
20
+ */
21
+
22
+ new eks.ServiceAccount(this, 'ServiceAccount', {
23
+ cluster: cluster,
24
+ name: 'test-service-account',
25
+ namespace: 'default',
26
+ });
27
+ new eks.AlbController(this, 'AlbController', {
28
+ cluster: cluster,
29
+ version: eks.AlbControllerVersion.V2_8_2,
30
+ });
31
+ }
32
+ }
33
+
34
+ const app = new App({
35
+ postCliContext: {
36
+ [EKS_USE_NATIVE_OIDC_PROVIDER]: true,
37
+ },
38
+ });
39
+
40
+ const stack = new EksClusterNativeOidcStack(app, 'aws-cdk-eks-cluster-native-oidc', {
41
+ env: { region: 'us-east-1' },
42
+ });
43
+
44
+ new integ.IntegTest(app, 'aws-cdk-eks-cluster-native-oidc-integ', {
45
+ testCases: [stack],
46
+ diffAssets: false,
47
+ });
48
+
49
+ app.synth();
@@ -105,6 +105,7 @@ class EksClusterStack extends Stack {
105
105
  private assertServiceAccount() {
106
106
  // add a service account connected to a IAM role
107
107
  this.cluster.addServiceAccount('MyServiceAccount');
108
+ this.cluster.addServiceAccount('MyServiceAccountWithOverwrite', { overwriteServiceAccount: true });
108
109
  }
109
110
 
110
111
  private assertExtendedServiceAccount() {
@@ -2,6 +2,7 @@ import { App, Stack } from 'aws-cdk-lib';
2
2
  import * as integ from '@aws-cdk/integ-tests-alpha';
3
3
  import * as eks from 'aws-cdk-lib/aws-eks';
4
4
  import { IAM_OIDC_REJECT_UNAUTHORIZED_CONNECTIONS } from 'aws-cdk-lib/cx-api';
5
+ import { getClusterVersionConfig } from './integ-tests-kubernetes-version';
5
6
 
6
7
  const app = new App({
7
8
  postCliContext: {
@@ -10,10 +11,28 @@ const app = new App({
10
11
  });
11
12
  const stack = new Stack(app, 'aws-eks-oidc-provider-test');
12
13
 
14
+ // OpenIdConnectProvider uses a custom resource that only needs to extract SSL certificate
15
+ // thumbprints via TLS connection. It works with fake cluster IDs (like test2) because
16
+ // oidc.eks.us-east-1.amazonaws.com is a real AWS server with valid SSL certificates.
17
+ // The Lambda doesn't validate OIDC configuration, only retrieves thumbprints when
18
+ // the IAM_OIDC_REJECT_UNAUTHORIZED_CONNECTIONS flag is false.
13
19
  new eks.OpenIdConnectProvider(stack, 'NoClientsNoThumbprint', {
14
20
  url: `https://oidc.eks.${Stack.of(stack).region}.amazonaws.com/id/test2`,
15
21
  });
16
22
 
23
+ const cluster = new eks.Cluster(stack, 'Cluster', {
24
+ ...getClusterVersionConfig(stack, eks.KubernetesVersion.V1_32),
25
+ });
26
+ // OidcProviderNative uses the native AWS::IAM::OIDCProvider CloudFormation resource
27
+ // which validates OIDC providers by fetching /.well-known/openid-configuration.
28
+ // Fake cluster IDs return 404 for this endpoint, causing validation to fail.
29
+ // eks.OidcProviderNative doesn't expose thumbprints property (unlike iam.OidcProviderNative)
30
+ // as there is no use case for using an invalid OIDC issuer URL,
31
+ // so we must use a real cluster URL for CloudFormation to successfully validate.
32
+ new eks.OidcProviderNative(stack, 'OidcProviderNative', {
33
+ url: cluster.clusterOpenIdConnectIssuerUrl,
34
+ });
35
+
17
36
  new integ.IntegTest(app, 'aws-cdk-eks-oidc-provider', {
18
37
  testCases: [stack],
19
38
  });
@@ -499,7 +499,76 @@ myFunction.addEventSource(new ManagedKafkaEventSource({
499
499
  }));
500
500
  ```
501
501
 
502
- Set configuration for provisioned pollers that read from the event source.
502
+ ### Kafka Observability Features
503
+
504
+ AWS Lambda provides enhanced observability for Kafka event sources through logging and metrics configuration.
505
+
506
+ **Important**: Observability features (`LogLevel` and `MetricsConfig`) are only available when using provisioned mode.
507
+
508
+ #### Logging
509
+
510
+ You can configure the verbosity of logs generated by the polling infrastructure.
511
+ This is particularly useful for troubleshooting connection issues, monitoring
512
+ polling behavior, and understanding the internal operations of your event
513
+ source mapping.
514
+
515
+ ```ts
516
+ import { ManagedKafkaEventSource } from 'aws-cdk-lib/aws-lambda-event-sources';
517
+
518
+ // Your MSK cluster arn
519
+ const clusterArn = 'arn:aws:kafka:us-east-1:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4';
520
+
521
+ declare const myFunction: lambda.Function;
522
+
523
+ // Configure INFO level logging for production monitoring
524
+ myFunction.addEventSource(new ManagedKafkaEventSource({
525
+ clusterArn,
526
+ topic: 'production-events',
527
+ startingPosition: lambda.StartingPosition.LATEST,
528
+ // Provisioned mode is required for observability features
529
+ provisionedPollerConfig: {
530
+ minimumPollers: 1,
531
+ maximumPollers: 5,
532
+ },
533
+ logLevel: lambda.EventSourceMappingLogLevel.INFO
534
+ }));
535
+ ```
536
+
537
+ #### Metrics Configuration
538
+
539
+ Enhanced metrics provide detailed insights into your Kafka event source performance.
540
+ Metrics include event processing rates, error counts, and Kafka-specific metrics
541
+ like consumer lag.
542
+
543
+ ```ts
544
+ import { ManagedKafkaEventSource } from 'aws-cdk-lib/aws-lambda-event-sources';
545
+
546
+ // Your MSK cluster arn
547
+ const clusterArn = 'arn:aws:kafka:us-east-1:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4';
548
+
549
+ declare const myFunction: lambda.Function;
550
+
551
+ // Enable basic event and error metrics
552
+ myFunction.addEventSource(new ManagedKafkaEventSource({
553
+ clusterArn,
554
+ topic: 'basic-monitoring',
555
+ startingPosition: lambda.StartingPosition.LATEST,
556
+ // Provisioned mode is required for observability features
557
+ provisionedPollerConfig: {
558
+ minimumPollers: 2,
559
+ maximumPollers: 10,
560
+ },
561
+ metricsConfig: {
562
+ metrics: [
563
+ lambda.MetricType.EVENT_COUNT,
564
+ lambda.MetricType.ERROR_COUNT
565
+ ]
566
+ }
567
+ }));
568
+ ```
569
+
570
+ Set configuration for provisioned pollers that read from the event source. When specified, allows control over
571
+ the minimum and maximum number of pollers that can be provisioned to process events from the source.
503
572
 
504
573
  ```ts
505
574
  import { ManagedKafkaEventSource } from 'aws-cdk-lib/aws-lambda-event-sources';
@@ -544,7 +613,9 @@ ordersFunction.addEventSource(new ManagedKafkaEventSource({
544
613
 
545
614
  ```
546
615
 
547
- Set a confluent or self-managed schema registry to de-serialize events from the event source. Note, this will similarly work for `SelfManagedKafkaEventSource` but the example only shows setup for `ManagedKafkaEventSource`.
616
+ Set a confluent or self-managed schema registry to de-serialize events from the event source.
617
+
618
+ Note: This will also work for `SelfManagedKafkaEventSource`.
548
619
 
549
620
  ```ts
550
621
  import { ManagedKafkaEventSource, ConfluentSchemaRegistry } from 'aws-cdk-lib/aws-lambda-event-sources';
@@ -577,7 +648,9 @@ myFunction.addEventSource(new ManagedKafkaEventSource({
577
648
  }));
578
649
  ```
579
650
 
580
- Set Glue schema registry to de-serialize events from the event source. Note, this will similarly work for `SelfManagedKafkaEventSource` but the example only shows setup for `ManagedKafkaEventSource`.
651
+ Set Glue schema registry to de-serialize events from the event source.
652
+
653
+ Note: This will also work for `SelfManagedKafkaEventSource`.
581
654
 
582
655
  ```ts
583
656
  import { CfnRegistry } from 'aws-cdk-lib/aws-glue';
@@ -0,0 +1,90 @@
1
+ import * as lambda from 'aws-cdk-lib/aws-lambda';
2
+ import * as secretsmanager from 'aws-cdk-lib/aws-secretsmanager';
3
+ import * as cdk from 'aws-cdk-lib';
4
+ import * as integ from '@aws-cdk/integ-tests-alpha';
5
+ import { TestFunction } from './test-function';
6
+ import { AuthenticationMethod, SelfManagedKafkaEventSource } from 'aws-cdk-lib/aws-lambda-event-sources';
7
+
8
+ /**
9
+ * Integration test for Kafka observability features (LoggingConfig and MetricsConfig)
10
+ *
11
+ * This test validates that LoggingConfig and MetricsConfig generate correct CloudFormation
12
+ * templates with proper provisioned poller configuration.
13
+ *
14
+ * Test scenarios:
15
+ * 1. Self-managed Kafka with LoggingConfig only
16
+ * 2. Self-managed Kafka with MetricsConfig only
17
+ */
18
+ class KafkaObservabilityTest extends cdk.Stack {
19
+ constructor(scope: cdk.App, id: string) {
20
+ super(scope, id);
21
+
22
+ // Create secret for authentication
23
+ const secret = new secretsmanager.Secret(this, 'KafkaSecret', {
24
+ secretObjectValue: {
25
+ username: cdk.SecretValue.unsafePlainText('testuser'),
26
+ password: cdk.SecretValue.unsafePlainText('testpass'),
27
+ },
28
+ });
29
+
30
+ // Scenario 1: Self-managed Kafka with LoggingConfig only
31
+ const smkLoggingFunction = new TestFunction(this, 'SMKLoggingFunction');
32
+ smkLoggingFunction.addEventSource(new SelfManagedKafkaEventSource({
33
+ bootstrapServers: ['kafka-broker-1:9092', 'kafka-broker-2:9092'],
34
+ topic: 'logging-topic',
35
+ secret: secret,
36
+ authenticationMethod: AuthenticationMethod.SASL_SCRAM_512_AUTH,
37
+ startingPosition: lambda.StartingPosition.LATEST,
38
+ consumerGroupId: 'logging-consumer-group',
39
+ // Provisioned mode is required for observability features
40
+ provisionedPollerConfig: {
41
+ minimumPollers: 1,
42
+ maximumPollers: 5,
43
+ },
44
+ // Configure DEBUG level logging for detailed troubleshooting
45
+ logLevel: lambda.EventSourceMappingLogLevel.DEBUG,
46
+ }));
47
+
48
+ // Scenario 2: Self-managed Kafka with MetricsConfig only
49
+ const smkMetricsFunction = new TestFunction(this, 'SMKMetricsFunction');
50
+ smkMetricsFunction.addEventSource(new SelfManagedKafkaEventSource({
51
+ bootstrapServers: ['kafka-broker-3:9092', 'kafka-broker-4:9092'],
52
+ topic: 'metrics-topic',
53
+ secret: secret,
54
+ authenticationMethod: AuthenticationMethod.SASL_SCRAM_256_AUTH,
55
+ startingPosition: lambda.StartingPosition.TRIM_HORIZON,
56
+ consumerGroupId: 'metrics-consumer-group',
57
+ batchSize: 100,
58
+ // Provisioned mode is required for observability features
59
+ provisionedPollerConfig: {
60
+ minimumPollers: 3,
61
+ maximumPollers: 15,
62
+ },
63
+ // Configure comprehensive metrics including Kafka-specific metrics
64
+ metricsConfig: {
65
+ metrics: [
66
+ lambda.MetricType.EVENT_COUNT,
67
+ lambda.MetricType.ERROR_COUNT,
68
+ lambda.MetricType.KAFKA_METRICS,
69
+ ],
70
+ },
71
+ }));
72
+ }
73
+ }
74
+
75
+ const app = new cdk.App({
76
+ postCliContext: {
77
+ '@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
78
+ },
79
+ });
80
+
81
+ const stack = new KafkaObservabilityTest(
82
+ app,
83
+ 'KafkaObservabilityTest',
84
+ );
85
+
86
+ new integ.IntegTest(app, 'KafkaObservabilityIntegTest', {
87
+ testCases: [stack],
88
+ });
89
+
90
+ app.synth();
@@ -0,0 +1,29 @@
1
+ import * as cdk from 'aws-cdk-lib/core';
2
+ import * as integ from '@aws-cdk/integ-tests-alpha';
3
+ import * as s3 from 'aws-cdk-lib/aws-s3';
4
+
5
+ const app = new cdk.App();
6
+ const stack = new cdk.Stack(app, 'ParentStack');
7
+
8
+ const nested = new cdk.NestedStack(stack, 'NestedSuppressIndentation', {
9
+ suppressTemplateIndentation: true,
10
+ });
11
+ new s3.Bucket(nested, 'Bucket'); // dummy
12
+
13
+ const testCase = new integ.IntegTest(app, 'NestedSuppressIndentationTest', {
14
+ testCases: [stack],
15
+ });
16
+
17
+ const nestedChild = nested.node.defaultChild as cdk.CfnStack;
18
+ const nestedTemplateUrl = nestedChild.templateUrl!; // Nested stacks must have the templateUrl
19
+
20
+ const apiCall = testCase.assertions.awsApiCall('S3', 'getObject', {
21
+ Bucket: cdk.Fn.select(3, cdk.Fn.split('/', nestedTemplateUrl)),
22
+ Key: cdk.Fn.select(4, cdk.Fn.split('/', nestedTemplateUrl)),
23
+ });
24
+
25
+ apiCall.expect(
26
+ integ.ExpectedResult.objectLike({
27
+ Body: '{"Resources":{"Bucket83908E77":{"Type":"AWS::S3::Bucket","UpdateReplacePolicy":"Retain","DeletionPolicy":"Retain"}}}',
28
+ }),
29
+ );
@@ -109,6 +109,7 @@ Flags come in three types:
109
109
  | [@aws-cdk/aws-stepfunctions-tasks:httpInvokeDynamicJsonPathEndpoint](#aws-cdkaws-stepfunctions-taskshttpinvokedynamicjsonpathendpoint) | When enabled, allows using a dynamic apiEndpoint with JSONPath format in HttpInvoke tasks. | 2.221.0 | fix |
110
110
  | [@aws-cdk/aws-elasticloadbalancingv2:networkLoadBalancerWithSecurityGroupByDefault](#aws-cdkaws-elasticloadbalancingv2networkloadbalancerwithsecuritygroupbydefault) | When enabled, Network Load Balancer will be created with a security group by default. | 2.222.0 | new default |
111
111
  | [@aws-cdk/aws-route53-patterns:useDistribution](#aws-cdkaws-route53-patternsusedistribution) | Use the `Distribution` resource instead of `CloudFrontWebDistribution` | 2.233.0 | new default |
112
+ | [@aws-cdk/aws-eks:useNativeOidcProvider](#aws-cdkaws-eksusenativeoidcprovider) | When enabled, EKS V2 clusters will use the native OIDC provider resource AWS::IAM::OIDCProvider instead of creating the OIDCProvider with a custom resource (iam.OpenIDConnectProvider). | V2NEXT | fix |
112
113
 
113
114
  <!-- END table -->
114
115
 
@@ -170,6 +171,7 @@ The following json shows the current recommended set of flags, as `cdk init` wou
170
171
  "@aws-cdk/aws-codepipeline:defaultPipelineTypeToV2": true,
171
172
  "@aws-cdk/aws-kms:reduceCrossAccountRegionPolicyScope": true,
172
173
  "@aws-cdk/aws-eks:nodegroupNameAttribute": true,
174
+ "@aws-cdk/aws-eks:useNativeOidcProvider": true,
173
175
  "@aws-cdk/aws-ec2:ebsDefaultGp3Volume": true,
174
176
  "@aws-cdk/aws-ecs:removeDefaultDeploymentAlarm": true,
175
177
  "@aws-cdk/custom-resources:logApiResponseDataPropertyTrueDefault": false,
@@ -2311,4 +2313,27 @@ of the deprecated `CloudFrontWebDistribution` construct.
2311
2313
  **Compatibility with old behavior:** Define a `CloudFrontWebDistribution` explicitly
2312
2314
 
2313
2315
 
2316
+ ### @aws-cdk/aws-eks:useNativeOidcProvider
2317
+
2318
+ *When enabled, EKS V2 clusters will use the native OIDC provider resource AWS::IAM::OIDCProvider instead of creating the OIDCProvider with a custom resource (iam.OpenIDConnectProvider).*
2319
+
2320
+ Flag type: Backwards incompatible bugfix
2321
+
2322
+ When this feature flag is enabled, EKS clusters will use the native AWS::IAM::OIDCProvider
2323
+ CloudFormation resource instead of the custom resource provider for creating OIDC providers.
2324
+
2325
+ WARNING: Enabling this flag on a cluster with an existing OIDC provider created by the custom resource (iam.OpenIDConnectProvider)
2326
+ will cause the OIDC provider to be replaced with the native resource, which may lead to disruption.
2327
+
2328
+ To migrate in place without disruption, follow the guide at: https://github.com/aws/aws-cdk/blob/main/packages/aws-cdk-lib/aws-eks/README.md#migrating-from-the-deprecated-eksopenidconnectprovider-to-eksoidcprovidernative
2329
+
2330
+
2331
+ | Since | Unset behaves like | Recommended value |
2332
+ | ----- | ----- | ----- |
2333
+ | (not in v1) | | |
2334
+ | V2NEXT | `false` | `true` |
2335
+
2336
+ **Compatibility with old behavior:** Disable the feature flag to use the custom resource provider.
2337
+
2338
+
2314
2339
  <!-- END details -->
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: konokenj.cdk-api-mcp-server
3
- Version: 0.71.0
3
+ Version: 0.72.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.235.1-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.236.0-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=ELmDLx0jcVxvUyMP4Isrouontr0IHXk9V4M1xQJuxV0,129
1
+ cdk_api_mcp_server/__about__.py,sha256=2oMIczUBxCme8q2q88d0eo9LorBD-fEQrwtwSHvpdmk,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,14 +9,14 @@ 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=neg1NHrIY4VKi9XAIx-q7aKoeHKQvG2FckZsStXkOQg,104221
12
+ cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-bedrock-agentcore-alpha/README.md,sha256=oYzxpBQv_7OMaU-drsElqjdUpbtBIb_nuFGLl-qyyDs,111421
13
13
  cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-bedrock-alpha/README.md,sha256=ZFThRraeK0rx1CF2foaEDzKsWxL1Qb9yqpCFM8eKvIo,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
16
16
  cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-custom-resource-sdk-adapter/README.md,sha256=FepYs6-FkeqX8jOohrPByOvzecIOBjd1c1AegNpRYNc,6310
17
17
  cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-ec2-alpha/README.md,sha256=ZySzpPJ4eUj3ZJ_jWF6YFOX4J9a7F-GU3o6QT_zJggQ,36094
18
18
  cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-eks-v2-alpha/MANUAL_TEST.md,sha256=uObwqDllAUYBGkoNEAQGioL6JuKqh5ScVbq9KC3x89Q,1862
19
- cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-eks-v2-alpha/README.md,sha256=QaTmJ96HpXe5Iu32NOzqzHWi85jD73aCfo9Rks9za28,46202
19
+ cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-eks-v2-alpha/README.md,sha256=yM9cSEn0NrzR7nKWSEmcQQwNQ-KTeHmFUlVgnFrG18Q,53713
20
20
  cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-elasticache-alpha/README.md,sha256=V2xDEBsWH7oxb4mO9I8Wfs74jzYqeUwxFpHp_N6NMtg,15215
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=0DUUl5AU9qy-x3P4cCIStFMcav2hSQMwZuI3aTq9Q2Q,32235
@@ -46,8 +46,8 @@ 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=EXijwUEfn9GyyBrfvxrRmovdNifT828FihwO1tanPdA,10182
50
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/README.md/README.md,sha256=fDaQqPonfLmfQpukU4aAJcjQI5xHI40D3Li0I056Q7s,76468
49
+ cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/mixins-preview/README.md,sha256=ENKpdCDBEV5Fkg0kuEbbfEyNpeREk1r9gpp_DHIob7w,10194
50
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/README.md/README.md,sha256=mup1_wX6WKTVqszieqdWb9nY1XF30JkxiqgMyrALwoA,76687
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
53
53
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/assets/README.md,sha256=kL56RlfxBa5LwV0cRseybeKIRKHhEXPjUo0HWPZqdO8,53
@@ -219,7 +219,8 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-batch/integ.mana
219
219
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-batch/integ.managed-compute-environment.ts,sha256=5EFbUtn2vivyhT-vLGbXgYSjsC0VDcWFOs1wg_rDtZo,3196
220
220
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-batch/integ.multinode-job-definition.ts,sha256=Pq7iWINv6l5S8rG1b1bGcg7313HRNee7vL_IPGsn0l8,1516
221
221
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-batch/integ.unmanaged-compute-environment.ts,sha256=o5_ft9zLQXu9TTJqYTT0phaLt7AdqLgHMIO2r4Wh8T0,856
222
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-bedrock/README.md,sha256=KvYAx_cPnhtqCPSsri3WKj3BIgko2C3fIPjMteQc9uw,1486
222
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-bedrock/README.md,sha256=b7lyhaB_ZRpKsweIGAgUykIp6yZhe-8O5w3R2EZS8Js,1334
223
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-bedrockagentcore/README.md,sha256=kjpYFBQD8GptshFY4k_f9xP-47U6D26Cuu88tAZoqFo,1110
223
224
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-certificatemanager/README.md,sha256=bhDI32VownDtCcTkarNK7oMabEcUUdjVTK095IYfmFM,8421
224
225
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-certificatemanager/integ.certificate-key-algorithm.ts,sha256=3JUtIlshjCtU6yqTZx2UXL9tRd4jom71WhqKXC6Bmxc,1881
225
226
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-certificatemanager/integ.certificate-name.ts,sha256=pzjlGsHvNGr4czBPdbckXzCCcN3tAUEhk2Q_lnjvC5Q,1617
@@ -727,7 +728,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-efs/integ.efs-tr
727
728
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-efs/integ.efs.permission.ts,sha256=bzH7koi5t2FgkDhEp-6ZtXgoteiCDTNd2igab4bXytA,3338
728
729
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-efs/integ.efs.ts,sha256=E9gP8v2MxNerg_EwkAc-4o6ikO08pLjZfDMI0M34_44,776
729
730
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/MANUAL_TEST.md,sha256=uObwqDllAUYBGkoNEAQGioL6JuKqh5ScVbq9KC3x89Q,1862
730
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/README.md,sha256=9ZwSCK4SBdRPGcI_9nol9dJncmtBGWwXm6dX2g9bJM4,82374
731
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/README.md,sha256=0RB4Id3CDNgJf12HxE_UJQHVsTJNzaAo4JjUnH9zxDs,87224
731
732
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.alb-controller-authapi.ts,sha256=L9dF26-F2Fw-O1iGAnT-AYnkq4JmO_IQoQn0RsOhLVY,1355
732
733
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.alb-controller.ts,sha256=cbL2kY-t0LAWLkK1Lb3RUPBeMUpw8xHWjDhkroD_Rb4,3314
733
734
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.custom-addons.ts,sha256=ZXsXljCokHOA_JubQ7ZsLT-tGy-28mg1gZ_bmNX_F-k,1475
@@ -737,15 +738,16 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-bo
737
738
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-cluster-handlers-vpc.ts,sha256=5ziP_cDA4Gvc0ZTEYsezSIw1XRi-JY3bIXB4MS9RP3c,1142
738
739
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-cluster-imported.ts,sha256=VcOdMfU2jCukU63bL1DJ03npPLyI8Xwr-vAtO3xFNMA,7448
739
740
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-cluster-ipv6.ts,sha256=wZ6dCJQzyJDYQEI6nfZDD2i8WGNdw4o8sIX5Rjiy4fk,13024
741
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-cluster-native-oidc.ts,sha256=L4Kvy08W-KUDh5jNH2Y-yKSNrPnFOLxyj_Q9oM9On1I,1418
740
742
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-cluster-private-endpoint.ts,sha256=kktgfPNMy7xPy9zJTcaSxbvAQZF3tPHJJ_K4kVZYofA,1825
741
743
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-cluster-removal-policy.ts,sha256=AOvKvS8aWzh4Vb4WqWB58y7hCwabLJk4mJM316j-ZWc,1070
742
744
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-cluster-tags.ts,sha256=dsPOuZv-3zKtgCmsYmxd2MJxzrwH1QAziJZHKs_GfjA,1321
743
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-cluster.ts,sha256=uO4jfIQJb-zvcle-osXELtS6Y-Y3MCJBKiNAtYd7_9o,12876
745
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-cluster.ts,sha256=T1cjz-_466u-GNqccUaJ4jaqAl_P9CRTGsX27xkvLfY,12980
744
746
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-helm-asset.ts,sha256=oK98kChrQxAY4PK5K8t7E9K36GqYhTyFA0Yj6MS_xos,5075
745
747
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-hybrid-nodes.ts,sha256=OnKPvJnEfz3NXetcPmCxEQntgU_QeXKTLD-H8m3amyo,1604
746
748
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-inference-nodegroup.ts,sha256=-D1R2-_zrVHL5GP6c3ouAW_PAc_Ys2VMWDJNzN5KY20,1768
747
749
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-inference.ts,sha256=RJ_Pv2TL2QlfI7KzmDV-YJ883c3yTM9DleRr94AfYAU,1800
748
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-oidc-provider.ts,sha256=8C4nuKmVBcbPF8NO57ulMr9W6qMi63lFZoSOV4t-hUM,627
750
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-oidc-provider.ts,sha256=OuH-WpWPux5mTlOqjK4U47KLD2OmSwFs06ArQeC4uOo,1829
749
751
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-pod-identities.ts,sha256=VG-mZgZBxXftXCkH3xlvOr8r2Meb1iC1JUszpZoFOyc,2441
750
752
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-service-account-sdk-call.ts,sha256=7Hm7jkdA2af-GMys-__f-xLXEt8RwAq_z9HRUZyzxzI,3292
751
753
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-standard-access-entry.ts,sha256=upWuIZ41tsmF0n80W0jo82GYV7jXXYe8LBFTyUgON0k,1864
@@ -954,12 +956,13 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.vpc
954
956
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-destinations/README.md,sha256=_6ZqM3kbkZCmN-9BtU3FbERs82Shv4D2QiWuq47T_VI,5453
955
957
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-destinations/integ.destinations.ts,sha256=bCxe7DTOSIRyxe2iStWRdl0_J-tQZ8n-715uo9gMHvE,4187
956
958
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-destinations/integ.lambda-chain.ts,sha256=vqRxTBuBaAZqeN1AQ4l0Z9b4dsOVTkYMXKIlil_yyCg,3381
957
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/README.md,sha256=AC1foN2OcEPMPuLsIxecdDJgY_fG1p9aZmazw4_FRvI,27199
959
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/README.md,sha256=OUoyx7bwSyd0lNA3d_qoebrBwlmHrjWMxz1zCSmrXyE,29375
958
960
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.dynamodb-with-boolean-filter.ts,sha256=bGvfF5RgMbK9W2DO0HsKVoAK5KV5a0kLKYZKeOOFcx0,1217
959
961
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.dynamodb-with-filter-criteria.ts,sha256=7RrxbpLll7YIY-sNFp4reML6mA5ptC05K6DRmww32rY,1897
960
962
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.dynamodb-with-metrics-config.ts,sha256=_HEgmdb8iDBNWqDWo8RJHbbRtacdPp4V8LkS2U3DkI8,1286
961
963
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.dynamodb.ts,sha256=5Qas_PPDvTb8sHl3AiNnv-k7XaazG5nDNVNbmJ6Wwfo,1205
962
964
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.kafka-dlq.ts,sha256=PSv9cxqyEMq2Sa6WxhaD2Qq_OrBpZR07ePjG8sYmTrM,2897
965
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.kafka-observability.ts,sha256=JGCU_YH2KurY4qxb8uCEoi2BG7UXG6AZuVx_tLJtU9E,3198
963
966
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.kafka-poller-group-name.ts,sha256=_skHFN8P5MSzdgGF9pGQU1MOBPsz9rlr_pt7MMkHfTs,2670
964
967
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.kafka-schema-registry.ts,sha256=mN1-eMpDDvEjqRqFB3WwDMAWtr1JhFt61ndeYMw3XlI,6640
965
968
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-event-sources/integ.kafka-selfmanaged-error-handling.ts,sha256=nO4Q2SJx2JQdPlLE93icXYWfTp6NphKUzjuadZsZBXg,2807
@@ -1429,6 +1432,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/core/integ.cfn-mappi
1429
1432
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/core/integ.cross-region-references.ts,sha256=y2pFmosq88fvO5XdL1t1DhQFcNBzslTbEiJuSnnBLjA,1900
1430
1433
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/core/integ.logical-id.ts,sha256=97xr5IDwLJ6O2c4-P3uGFdoSTNtJ7FalFTLr1eiTi7s,521
1431
1434
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/core/integ.nested-stack-references.ts,sha256=qS2cw7f8LDkS0KxeTBGBKgUV6rpzExjeyFU8qkU1-J0,1796
1435
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/core/integ.nested-stack-suppress-template-indentation.ts,sha256=FhiHoGS83kUSfh3-igcTazBROBqpqRPr5TIWyDPDJUA,1026
1432
1436
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/core/integ.prop-injectors.ts,sha256=7XxFP_6aronk1inj9NPLkNwdRnMnV956_ifMoSBOxDI,6068
1433
1437
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/core/integ.removal-policies.ts,sha256=b6ePZkMn5IyTizPV2VnxSR2X8RP2Obh8i7P1b7-S68o,1541
1434
1438
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/core/integ.stack.ts,sha256=xf24TLT1li9lQtn7LMTd0hPfiWPpBym8OMYD4cTiw-o,666
@@ -1457,7 +1461,7 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/int
1457
1461
  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
1458
1462
  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
1459
1463
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.provider.ts,sha256=u_YVV0YZk6hyIxo5JOOSwwUORbqS3BVbJU6DIAwxuk0,1814
1460
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/FEATURE_FLAGS.md,sha256=9OIwfmum3NvUatQg-B58shP-9sLKVDepMye2D8bWRUU,109013
1464
+ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/FEATURE_FLAGS.md,sha256=0nNbXbM-uzk38rZNmw5eYjqKvLDYMkxq7uxw00WA4GQ,110510
1461
1465
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/NESTED_ASSEMBLIES.md,sha256=P8PNyr4hIC_i-9aUxa301-5-N4tLcoHYnELBp3C6SQQ,4949
1462
1466
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/README.md,sha256=i37TV0RjG95gwV2Uesbx98JGbN3W12rbBRcCK9IXlqs,25543
1463
1467
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/interfaces/README.md,sha256=8UUDA_SWB_K_3AKpzwsj1h-_PgyrIAToZXRew_opfU0,710
@@ -1489,8 +1493,8 @@ cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.pipe
1489
1493
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/region-info/README.md,sha256=vewWkV3ds9o9iyyYaJBNTkaKJ2XA6K2yF17tAxUnujg,2718
1490
1494
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/triggers/README.md,sha256=hYIx7DbG_7p4LYLUfxDwgIQjw9UNdz1GLrqDe8_Dbko,4132
1491
1495
  cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/triggers/integ.triggers.ts,sha256=LfeVru_CggiFXKPVa8vwt6Uv43SV3oAioDGmd8PyMHc,2859
1492
- konokenj_cdk_api_mcp_server-0.71.0.dist-info/METADATA,sha256=db6fYQgN-LZstHtQQSfe_ZVp6UVHFX4-G48bfMlnsEs,2646
1493
- konokenj_cdk_api_mcp_server-0.71.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
1494
- konokenj_cdk_api_mcp_server-0.71.0.dist-info/entry_points.txt,sha256=bVDhMdyCC1WNMPOMbmB82jvWII2CIrwTZDygdCf0cYQ,79
1495
- konokenj_cdk_api_mcp_server-0.71.0.dist-info/licenses/LICENSE.txt,sha256=5OIAASeg1HM22mVZ1enz9bgZ7TlsGfWXnj02P9OgFyk,1098
1496
- konokenj_cdk_api_mcp_server-0.71.0.dist-info/RECORD,,
1496
+ konokenj_cdk_api_mcp_server-0.72.0.dist-info/METADATA,sha256=nE73bQHSN3nlbtdG-P6bGlTKtNadTGPymamZ4V5Uwxw,2646
1497
+ konokenj_cdk_api_mcp_server-0.72.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
1498
+ konokenj_cdk_api_mcp_server-0.72.0.dist-info/entry_points.txt,sha256=bVDhMdyCC1WNMPOMbmB82jvWII2CIrwTZDygdCf0cYQ,79
1499
+ konokenj_cdk_api_mcp_server-0.72.0.dist-info/licenses/LICENSE.txt,sha256=5OIAASeg1HM22mVZ1enz9bgZ7TlsGfWXnj02P9OgFyk,1098
1500
+ konokenj_cdk_api_mcp_server-0.72.0.dist-info/RECORD,,