konokenj.cdk-api-mcp-server 0.31.0__py3-none-any.whl → 0.57.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 (243) hide show
  1. cdk_api_mcp_server/__about__.py +1 -1
  2. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-amplify-alpha/README.md +12 -0
  3. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-bedrock-agentcore-alpha/README.md +1979 -0
  4. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-bedrock-alpha/README.md +946 -0
  5. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-eks-v2-alpha/README.md +160 -75
  6. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-elasticache-alpha/README.md +421 -0
  7. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-glue-alpha/README.md +39 -9
  8. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-imagebuilder-alpha/README.md +656 -0
  9. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-iot-alpha/README.md +1 -1
  10. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-lambda-go-alpha/README.md +102 -4
  11. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-lambda-python-alpha/README.md +6 -6
  12. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-msk-alpha/README.md +38 -8
  13. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-s3tables-alpha/README.md +82 -2
  14. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-sagemaker-alpha/README.md +32 -0
  15. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/mixins-preview/README.md +182 -0
  16. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/README.md/README.md +367 -17
  17. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/README.md +34 -0
  18. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ.api-with-authorizer-and-proxy.ts +1 -1
  19. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ.lambda-api.ts +1 -1
  20. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ.lambda-permission-consolidation.ts +55 -0
  21. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ.spec-restapi.ts +1 -0
  22. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/README.md +224 -60
  23. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.api-dualstack.ts +3 -4
  24. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.api.ts +5 -3
  25. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.stage.ts +10 -7
  26. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.usage-plan.ts +80 -0
  27. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-authorizers/integ.iam.ts +34 -38
  28. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-authorizers/integ.lambda.ts +2 -2
  29. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-authorizers/integ.user-pool.ts +1 -1
  30. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/README.md +35 -0
  31. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.add-subroute-integration.ts +7 -4
  32. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.http-proxy.ts +1 -1
  33. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.lambda-connect-disconnect-trigger.ts +2 -2
  34. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.lambda-permission-consolidation.ts +45 -0
  35. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.lambda-proxy.ts +1 -1
  36. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.lambda.ts +4 -4
  37. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.sqs.ts +58 -71
  38. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-appsync/integ.graphql-lambda-permission.ts +1 -1
  39. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-appsync/integ.js-resolver.ts +1 -1
  40. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-autoscaling/README.md +1 -1
  41. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-autoscaling/integ.asg-lt.ts +7 -0
  42. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-batch/README.md +49 -1
  43. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-batch/integ.ecs-exec-batch-job.ts +148 -0
  44. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-batch/integ.managed-compute-environment-default-instance-class.ts +20 -0
  45. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-certificatemanager/README.md +11 -0
  46. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudformation/integ.core-custom-resources-node-18.ts +1 -1
  47. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudformation/integ.core-custom-resources-service-timeout.ts +1 -1
  48. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudfront/README.md +292 -1
  49. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudfront-origins/README.md +83 -0
  50. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudfront-origins/integ.function-url-origin-ip-address-type.ts +84 -0
  51. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudfront-origins/integ.http-origin.ts +5 -2
  52. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudfront-origins/integ.origin-response-completion-timeout.ts +50 -0
  53. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudtrail/integ.cloudtrail-data-events-only.ts +1 -1
  54. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/README.md +104 -12
  55. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/integ.alarm-and-dashboard.ts +12 -0
  56. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/integ.anomaly-detection-alarm.ts +44 -2
  57. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/integ.dashboard-with-graphwidget-with-labels-visible.ts +92 -0
  58. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/integ.dashboard-with-metric-id-and-visible.ts +70 -0
  59. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/integ.search-expression.ts +51 -0
  60. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codebuild/README.md +143 -3
  61. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codebuild/integ.project-docker-server.ts +44 -0
  62. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codebuild/integ.project-fleet-attribute-based-compute.ts +59 -7
  63. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codebuild/integ.project-fleet-custom-instance-type.ts +130 -0
  64. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codebuild/integ.project-fleet-overflow-behavior.ts +61 -0
  65. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codebuild/integ.project-s3-cache.ts +71 -0
  66. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codebuild/integ.project-windows-image.ts +1 -2
  67. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codepipeline-actions/integ.pipeline-elastic-beanstalk-deploy.ts +26 -17
  68. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cognito/README.md +13 -2
  69. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cognito/integ.user-pool-client-explicit-props.ts +1 -0
  70. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-docdb/README.md +24 -0
  71. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-docdb/integ.cluster-serverless.ts +34 -0
  72. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/README.md +225 -15
  73. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/TABLE_V1_API.md +45 -2
  74. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb-v2.cci.ts +49 -0
  75. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb.add-to-resource-policy.ts +97 -0
  76. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb.cci.ts +27 -0
  77. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb.compound.ts +32 -0
  78. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb.contirubtor-insights-for-gsi.ts +6 -2
  79. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb.policy.ts +21 -1
  80. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.table-v2-global.ts +9 -3
  81. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.table-v2-mrsc.ts +31 -0
  82. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.table-v2.compound.ts +43 -0
  83. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/README.md +28 -1
  84. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/integ.client-vpn-endpoint-disconnect-on-session-timeout.ts +65 -0
  85. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/integ.vpc-endpoint.lit.ts +6 -0
  86. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/integ.vpc-flow-logs.ts +4 -0
  87. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecr/README.md +41 -2
  88. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecr/integ.tag-mutability-exclusion.ts +30 -0
  89. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecr-assets/README.md +4 -0
  90. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecr-assets/integ.assets-docker.ts +6 -0
  91. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/README.md +189 -1
  92. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.availability-zone-rebalancing.ts +14 -4
  93. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.blue-green-deployment-strategy.ts +147 -0
  94. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.cluster-windows-server-ami.ts +5 -6
  95. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.ebs-volume-initialization-rate.ts +80 -0
  96. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.enable-execute-command.ts +35 -29
  97. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.exec-command.ts +16 -22
  98. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.lb-awsvpc-nw.ts +26 -16
  99. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.managedinstances-capacity-provider.ts +114 -0
  100. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.managedinstances-no-default-capacity-provider.ts +107 -0
  101. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.placement-strategies.ts +32 -8
  102. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.pseudo-terminal.ts +18 -8
  103. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs-patterns/README.md +2 -0
  104. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs-patterns/integ.alb-fargate-service-public-private-switch.ts +45 -0
  105. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs-patterns/integ.alb-fargate-service-smart-defaults.ts +143 -0
  106. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/README.md +103 -83
  107. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-al2023-nodegroup.ts +1 -1
  108. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-cluster-removal-policy.ts +31 -0
  109. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.fargate-cluster.ts +1 -1
  110. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-elasticloadbalancingv2/README.md +55 -4
  111. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-elasticloadbalancingv2/integ.alb-lambda-multi-value-headers.ts +1 -1
  112. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-elasticloadbalancingv2/integ.alb-target-group-attributes.ts +45 -0
  113. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-elasticloadbalancingv2/integ.alb.oidc.ts +1 -1
  114. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-elasticloadbalancingv2/integ.nlb-target-group-attributes.ts +45 -0
  115. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-elasticloadbalancingv2/integ.nlb.security-group.ts +70 -0
  116. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-elasticloadbalancingv2-actions/integ.cognito.ts +1 -1
  117. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-events/README.md +41 -2
  118. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-events/integ.api-destination.ts +42 -0
  119. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-events/integ.archive-customer-managed-key.ts +23 -0
  120. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-events/integ.eventbus.ts +13 -3
  121. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-events-targets/README.md +93 -4
  122. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-events-targets/integ.firehose-delivery-stream.ts +51 -0
  123. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.custom-permissions-boundary-aspect.ts +50 -0
  124. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.managed-policy.ts +9 -0
  125. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.policy.ts +9 -0
  126. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesis/README.md +42 -0
  127. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesis/integ.stream-shard-level-monitoring.ts +47 -0
  128. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/README.md +159 -3
  129. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/integ.cloudwatch-logs-processors.ts +45 -0
  130. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/integ.record-format-conversion-schema.ts +154 -0
  131. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/integ.record-format-conversion.ts +178 -0
  132. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/integ.s3-bucket.lit.ts +1 -0
  133. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/README.md +41 -2
  134. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.binary-payload.ts +1 -1
  135. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.lambda-policy-with-token-resolution.ts +46 -0
  136. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.logging-config.ts +8 -8
  137. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.multi-tenancy.ts +24 -0
  138. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.params-and-secrets.ts +1 -1
  139. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.runtime-management.ts +1 -1
  140. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.runtime.fromasset.ts +19 -4
  141. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.runtime.inlinecode.ts +11 -4
  142. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-nodejs/README.md +3 -3
  143. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-nodejs/integ.dependencies-bun-lock.ts +50 -0
  144. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-nodejs/integ.dependencies-pnpm.ts +1 -1
  145. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-nodejs/integ.function-exclude-smithy-models.ts +2 -2
  146. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-nodejs/integ.nodejs.build.images.ts +1 -1
  147. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/README.md +69 -1
  148. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.loggroup-transformer.ts +37 -0
  149. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.metricfilter-apply-on-transformed-logs.ts +29 -0
  150. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.save-logs-insights-query-definition.ts +7 -2
  151. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.subscriptionfilter.ts +1 -1
  152. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.transformer.ts +27 -0
  153. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.ebs.ts +1 -1
  154. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.min.ts +1 -0
  155. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/README.md +72 -2
  156. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-cloudwatch-logs-exports.ts +56 -0
  157. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-data-api-to-imported-cluster.ts +1 -1
  158. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-data-api.ts +1 -1
  159. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-lookup.ts +100 -0
  160. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster.ts +1 -1
  161. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.instance-database-insights.ts +43 -0
  162. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.instance-lookup.ts +77 -0
  163. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.proxy-endpoint.ts +36 -0
  164. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53/README.md +68 -31
  165. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53/integ.delete-existing-record-set.ts +0 -1
  166. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53/integ.private-hosted-zone-from-attributes.ts +41 -0
  167. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53/integ.route53.ts +51 -1
  168. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53/integ.zone-delegation-iam-stack.ts +66 -0
  169. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53-targets/integ.cloudfront-alias-target.ts +16 -1
  170. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53-targets/integ.elastic-beanstalk-hostedzoneid.ts +1 -1
  171. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3/integ.bucket.notifications-scoped-permissions.ts +71 -0
  172. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-assets/integ.assets.bundling.docker-opts.ts +4 -1
  173. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/README.md +83 -4
  174. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-big-response.ts +17 -6
  175. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-cloudfront.ts +20 -18
  176. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-cross-nested-stack-source.ts +64 -0
  177. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-cross-stack-source.ts +53 -0
  178. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-cross-stack-ssm-source.ts +97 -0
  179. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-data.ts +99 -59
  180. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-deployed-bucket.ts +10 -4
  181. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-large-file.ts +23 -12
  182. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-loggroup.ts +7 -2
  183. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-security-groups-efs.ts +77 -0
  184. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-security-groups-empty.ts +69 -0
  185. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-security-groups-multiple.ts +89 -0
  186. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-security-groups-single.ts +77 -0
  187. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-signcontent.ts +11 -7
  188. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-substitution-with-destination-key.ts +15 -8
  189. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-substitution-with-role.ts +29 -14
  190. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-substitution.ts +16 -8
  191. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-vpc-basic.ts +65 -0
  192. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-vpc-config.ts +66 -0
  193. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-vpc-custom-subnets.ts +66 -0
  194. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-vpc-efs.ts +66 -0
  195. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-vpc-security-groups.ts +72 -0
  196. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-vpc-subnet-selection.ts +70 -0
  197. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment.ts +47 -69
  198. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-notifications/integ.bucket-notifications.ts +80 -42
  199. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-secretsmanager/integ.secret.dynamic-reference-key.ts +38 -0
  200. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-signer/integ.signing-profile.ts +5 -0
  201. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-sns/README.md +2 -0
  202. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-sns-subscriptions/integ.sns-sqs-subscription-filter.ts +75 -0
  203. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-sns-subscriptions/integ.sns-sqs.ts +21 -40
  204. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/integ.distributed-map-parallel.ts +82 -0
  205. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/integ.distributed-map-redrive.ts +130 -0
  206. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/integ.map-with-catch.ts +1 -0
  207. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/integ.sm-jsonpath-with-distributed-map-jsonata.ts +105 -0
  208. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/README.md +75 -5
  209. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.call-aws-service-cross-region-lambda.ts +1 -1
  210. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.emr-create-cluster-with-ebs.ts +126 -0
  211. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.evaluate-expression-arm64.ts +27 -0
  212. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.evaluate-expression-default.ts +25 -0
  213. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.evaluate-expression-mixed-arch.ts +35 -0
  214. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.evaluate-expression-nodejs22.ts +27 -0
  215. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.evaluate-expression-x86.ts +27 -0
  216. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.invoke-json-path.ts +102 -0
  217. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-synthetics/README.md +84 -1
  218. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-synthetics/integ.canary-browser-type.ts +35 -0
  219. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-synthetics/integ.canary-resources-to-replicate-tags.ts +36 -0
  220. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-synthetics/integ.canary-retry.ts +32 -0
  221. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-synthetics/integ.canary-runtime-validation.ts +43 -0
  222. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-synthetics/integ.canary.ts +2 -0
  223. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cloudformation-include/integ.novalue-nonstring.ts +25 -0
  224. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/core/README.md +2 -1870
  225. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/README.md +59 -0
  226. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.aws-custom-resource.ts +1 -1
  227. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.custom-resource-config-lambda-node-runtime.ts +1 -1
  228. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.external-id.ts +80 -0
  229. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.invoke-function-payload.ts +1 -1
  230. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/FEATURE_FLAGS.md +152 -10
  231. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/README.md +55 -1
  232. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/interfaces/README.md +33 -0
  233. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/README.md +4 -0
  234. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.newpipeline-reduce-stagerole-scope.ts +4 -1
  235. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.pipeline-with-customsynthesizer.ts +105 -0
  236. {konokenj_cdk_api_mcp_server-0.31.0.dist-info → konokenj_cdk_api_mcp_server-0.57.0.dist-info}/METADATA +2 -2
  237. {konokenj_cdk_api_mcp_server-0.31.0.dist-info → konokenj_cdk_api_mcp_server-0.57.0.dist-info}/RECORD +240 -151
  238. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-events-targets/integ.kinesis-firehose-stream.ts +0 -33
  239. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.expose-metric-with-dimensions.ts +0 -47
  240. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-signcontent.d.ts +0 -1
  241. {konokenj_cdk_api_mcp_server-0.31.0.dist-info → konokenj_cdk_api_mcp_server-0.57.0.dist-info}/WHEEL +0 -0
  242. {konokenj_cdk_api_mcp_server-0.31.0.dist-info → konokenj_cdk_api_mcp_server-0.57.0.dist-info}/entry_points.txt +0 -0
  243. {konokenj_cdk_api_mcp_server-0.31.0.dist-info → konokenj_cdk_api_mcp_server-0.57.0.dist-info}/licenses/LICENSE.txt +0 -0
@@ -14,10 +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)
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)
21
24
 
22
25
  ## Introduction
23
26
 
@@ -374,65 +377,6 @@ const arn = api.arnForExecuteApi('GET', '/myApiPath', 'dev');
374
377
  - The 'ANY' method can be used for matching any HTTP methods not explicitly defined.
375
378
  - The function gracefully handles undefined parameters by using wildcards, making it flexible for various API configurations.
376
379
 
377
- ## Access Logging
378
-
379
- You can turn on logging to write logs to CloudWatch Logs.
380
- Read more at [Configure logging for HTTP APIs in API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-logging.html)
381
-
382
- ```ts
383
- import * as logs from 'aws-cdk-lib/aws-logs';
384
-
385
- declare const api: apigwv2.HttpApi;
386
- declare const logGroup: logs.LogGroup;
387
-
388
- const stage = new apigwv2.HttpStage(this, 'Stage', {
389
- httpApi: api,
390
- accessLogSettings: {
391
- destination: new apigwv2.LogGroupLogDestination(logGroup),
392
- },
393
- });
394
- ```
395
-
396
- The following code will generate the access log in the [CLF format](https://en.wikipedia.org/wiki/Common_Log_Format).
397
-
398
- ```ts
399
- import * as apigw from 'aws-cdk-lib/aws-apigateway';
400
- import * as logs from 'aws-cdk-lib/aws-logs';
401
-
402
- declare const api: apigwv2.HttpApi;
403
- declare const logGroup: logs.LogGroup;
404
-
405
- const stage = new apigwv2.HttpStage(this, 'Stage', {
406
- httpApi: api,
407
- accessLogSettings: {
408
- destination: new apigwv2.LogGroupLogDestination(logGroup),
409
- format: apigw.AccessLogFormat.clf(),
410
- },
411
- });
412
- ```
413
-
414
- You can also configure your own access log format by using the `AccessLogFormat.custom()` API.
415
- `AccessLogField` provides commonly used fields. The following code configures access log to contain.
416
-
417
- ```ts
418
- import * as apigw from 'aws-cdk-lib/aws-apigateway';
419
- import * as logs from 'aws-cdk-lib/aws-logs';
420
-
421
- declare const api: apigwv2.HttpApi;
422
- declare const logGroup: logs.LogGroup;
423
-
424
- const stage = new apigwv2.HttpStage(this, 'Stage', {
425
- httpApi: api,
426
- accessLogSettings: {
427
- destination: new apigwv2.LogGroupLogDestination(logGroup),
428
- format: apigw.AccessLogFormat.custom(
429
- `${apigw.AccessLogField.contextRequestId()} ${apigw.AccessLogField.contextErrorMessage()} ${apigw.AccessLogField.contextErrorMessageString()}
430
- ${apigw.AccessLogField.contextAuthorizerError()} ${apigw.AccessLogField.contextAuthorizerIntegrationStatus()}`
431
- ),
432
- },
433
- });
434
- ```
435
-
436
380
  ## WebSocket API
437
381
 
438
382
  A WebSocket API in API Gateway is a collection of WebSocket routes that are integrated with backend HTTP endpoints,
@@ -523,6 +467,14 @@ const arn = api.arnForExecuteApiV2('$connect', 'dev');
523
467
 
524
468
  For a detailed explanation of this function, including usage and examples, please refer to the [Generating ARN for Execute API](#generating-arn-for-execute-api) section under HTTP API.
525
469
 
470
+ To disable schema validation, set `disableSchemaValidation` to true.
471
+
472
+ ```ts
473
+ new apigwv2.WebSocketApi(this, 'api', {
474
+ disableSchemaValidation: true,
475
+ });
476
+ ```
477
+
526
478
  You can configure IP address type for the API endpoint using `ipAddressType` property.
527
479
  Valid values are `IPV4` (default) and `DUAL_STACK`.
528
480
 
@@ -569,6 +521,150 @@ const webSocketApi = new apigwv2.WebSocketApi(this, 'mywsapi',{
569
521
  });
570
522
  ```
571
523
 
524
+ ## Usage Plan and API Keys
525
+
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
527
+ identify API clients and meters access to the associated API stages for each key. Usage plans also allow configuring throttling limits and quota limits that are
528
+ enforced on individual client API keys.
529
+
530
+ The following example shows how to create and associate a usage plan and an API key for WebSocket APIs:
531
+
532
+ ```ts
533
+ const apiKey = new apigwv2.ApiKey(this, "ApiKey");
534
+
535
+ const usagePlan = new apigwv2.UsagePlan(this, "UsagePlan", {
536
+ usagePlanName: "WebSocketUsagePlan",
537
+ throttle: {
538
+ rateLimit: 10,
539
+ burstLimit: 2
540
+ }
541
+ });
542
+
543
+ usagePlan.addApiKey(apiKey);
544
+ ```
545
+
546
+ To associate a plan to a given WebSocketAPI stage:
547
+
548
+ ```ts
549
+ const api = new apigwv2.WebSocketApi(this, 'my-api');
550
+ const stage = new apigwv2.WebSocketStage(this, 'my-stage', {
551
+ webSocketApi: api,
552
+ stageName: 'dev',
553
+ });
554
+
555
+ const usagePlan = new apigwv2.UsagePlan(this, 'my-usage-plan', {
556
+ usagePlanName: 'Basic',
557
+ });
558
+
559
+ usagePlan.addApiStage({
560
+ api: api,
561
+ stage: stage,
562
+ });
563
+ ```
564
+ Existing usage plans can be imported into a CDK app using its id.
565
+
566
+ ```ts
567
+ const usagePlan: apigwv2.IUsagePlan = apigwv2.UsagePlan.fromUsagePlanId(this, 'imported-usage-plan', '<usage-plan-id>');
568
+ ```
569
+
570
+ The name and value of the API Key can be specified at creation; if not provided, a name and a value will be automatically generated by API Gateway.
571
+
572
+ ```ts
573
+ // Auto-generated name and value
574
+ const autoKey = new apigwv2.ApiKey(this, 'AutoKey');
575
+
576
+ // Explicit name and value
577
+ const explicitKey = new apigwv2.ApiKey(this, 'ExplicitKey', {
578
+ apiKeyName: 'MyWebSocketApiKey',
579
+ value: 'MyApiKeyThatIsAtLeast20Characters',
580
+ });
581
+ ```
582
+
583
+ Existing API keys can also be imported into a CDK app using its id.
584
+
585
+ ```ts
586
+ const importedKey = apigwv2.ApiKey.fromApiKeyId(this, 'imported-key', '<api-key-id>');
587
+ ```
588
+
589
+ The "grant" methods can be used to give prepackaged sets of permissions to other resources. The
590
+ following code provides read permission to an API key.
591
+
592
+ ```ts
593
+ import * as iam from 'aws-cdk-lib/aws-iam';
594
+
595
+ const user = new iam.User(this, 'User');
596
+ const apiKey = new apigwv2.ApiKey(this, 'ApiKey', {
597
+ customerId: 'test-customer',
598
+ });
599
+ apiKey.grantRead(user);
600
+ ```
601
+
602
+ ### Adding an API Key to an imported WebSocketApi
603
+
604
+ API Keys for WebSocket APIs are associated through Usage Plans, not directly to stages. When you import a WebSocketApi, you need to create a Usage Plan that references the
605
+ imported stage and then associate the API key with that Usage Plan.
606
+
607
+ ```ts
608
+ declare const webSocketApi: apigwv2.IWebSocketApi;
609
+
610
+ const importedStage = apigwv2.WebSocketStage.fromWebSocketStageAttributes(this, 'imported-stage', {
611
+ stageName: 'myStage',
612
+ api: webSocketApi,
613
+ });
614
+
615
+ const apiKey = new apigwv2.ApiKey(this, 'MyApiKey');
616
+
617
+ const usagePlan = new apigwv2.UsagePlan(this, 'MyUsagePlan', {
618
+ apiStages: [{ api: webSocketApi, stage: importedStage }],
619
+ });
620
+
621
+ usagePlan.addApiKey(apiKey);
622
+ ```
623
+
624
+ ### Multiple API Keys
625
+
626
+ It is possible to specify multiple API keys for a given Usage Plan, by calling `usagePlan.addApiKey()`.
627
+
628
+ When using multiple API keys, you may need to ensure that the CloudFormation logical ids of the API keys remain consistent across deployments. You can set the logical id as part of the `addApiKey()` method
629
+
630
+ ```ts
631
+ declare const usagePlan: apigwv2.UsagePlan;
632
+ declare const apiKey: apigwv2.ApiKey;
633
+
634
+ usagePlan.addApiKey(apiKey, {
635
+ overrideLogicalId: 'MyCustomLogicalId',
636
+ });
637
+ ```
638
+
639
+ ### Rate Limited API Key
640
+
641
+ In scenarios where you need to create a single api key and configure rate limiting for it, you can use `RateLimitedApiKey`.
642
+ This construct lets you specify rate limiting properties which should be applied only to the api key being created.
643
+ The API key created has the specified rate limits, such as quota and throttles, applied.
644
+
645
+ The following example shows how to use a rate limited api key :
646
+
647
+ ```ts
648
+ declare const api: apigwv2.WebSocketApi;
649
+ declare const stage: apigwv2.WebSocketStage;
650
+
651
+ const key = new apigwv2.RateLimitedApiKey(this, 'rate-limited-api-key', {
652
+ customerId: 'test-customer',
653
+ apiStages: [{
654
+ api: api,
655
+ stage: stage
656
+ }],
657
+ quota: {
658
+ limit: 10000,
659
+ period: apigwv2.Period.MONTH
660
+ },
661
+ throttle: {
662
+ rateLimit: 100,
663
+ burstLimit: 200
664
+ }
665
+ });
666
+ ```
667
+
572
668
  ## Common Config
573
669
 
574
670
  Common config for both HTTP API and WebSocket API
@@ -589,3 +685,71 @@ new apigwv2.HttpStage(this, 'Stage', {
589
685
  detailedMetricsEnabled: true,
590
686
  });
591
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
+ ```
@@ -4,14 +4,13 @@ import * as cdk from 'aws-cdk-lib';
4
4
  import * as apigw from 'aws-cdk-lib/aws-apigatewayv2';
5
5
 
6
6
  const app = new cdk.App();
7
- const stack = new cdk.Stack(app, 'DualStackHttpApiStack');
7
+ const stack = new cdk.Stack(app, 'DualStackWebsocketApiStack');
8
8
 
9
- new apigw.HttpApi(stack, 'HttpApi', {
10
- routeSelectionExpression: true,
9
+ new apigw.WebSocketApi(stack, 'WebSocketApi', {
11
10
  ipAddressType: apigw.IpAddressType.DUAL_STACK,
12
11
  });
13
12
 
14
- new IntegTest(app, 'DualStackHttpApiInteg', {
13
+ new IntegTest(app, 'DualStackWebsocketApiInteg', {
15
14
  testCases: [stack],
16
15
  });
17
16
 
@@ -6,11 +6,13 @@ import * as apigw from 'aws-cdk-lib/aws-apigatewayv2';
6
6
  const app = new cdk.App();
7
7
  const stack = new cdk.Stack(app, 'aws-cdk-aws-apigatewayv2');
8
8
 
9
- new apigw.HttpApi(stack, 'HttpApi', {
10
- routeSelectionExpression: true,
9
+ new apigw.WebSocketApi(stack, 'WebSocketApi');
10
+
11
+ new apigw.WebSocketApi(stack, 'WebSocketApiWithProps', {
12
+ disableSchemaValidation: true,
11
13
  });
12
14
 
13
- new IntegTest(app, 'http-api', {
15
+ new IntegTest(app, 'web-socket-api', {
14
16
  testCases: [stack],
15
17
  });
16
18
 
@@ -6,13 +6,16 @@ import * as apigw from 'aws-cdk-lib/aws-apigateway';
6
6
  import * as logs from 'aws-cdk-lib/aws-logs';
7
7
 
8
8
  const app = new cdk.App();
9
- const stack = new cdk.Stack(app, 'aws-cdk-aws-apigatewayv2-http-stage');
9
+ const stack = new cdk.Stack(app, 'aws-cdk-aws-apigatewayv2-websocket-stage');
10
10
 
11
- const testLogGroup = new logs.LogGroup(stack, 'MyLogGroup');
11
+ const logGroup = new logs.LogGroup(stack, 'MyLogGroup', {
12
+ removalPolicy: cdk.RemovalPolicy.DESTROY,
13
+ });
12
14
 
13
- const httpApi = new apigwv2.HttpApi(stack, 'HttpApi', { createDefaultStage: false });
14
- new apigwv2.HttpStage(stack, 'HttpStageWithProperties', {
15
- httpApi,
15
+ const webSocketApi = new apigwv2.WebSocketApi(stack, 'WebSocketApi');
16
+ new apigwv2.WebSocketStage(stack, 'WebSocketStage', {
17
+ webSocketApi,
18
+ stageName: 'dev',
16
19
  throttle: {
17
20
  rateLimit: 1000,
18
21
  burstLimit: 1000,
@@ -20,7 +23,7 @@ new apigwv2.HttpStage(stack, 'HttpStageWithProperties', {
20
23
  detailedMetricsEnabled: true,
21
24
  description: 'My Stage',
22
25
  accessLogSettings: {
23
- destination: new apigwv2.LogGroupLogDestination(testLogGroup),
26
+ destination: new apigwv2.LogGroupLogDestination(logGroup),
24
27
  format: apigw.AccessLogFormat.custom(JSON.stringify({
25
28
  extendedRequestId: apigw.AccessLogField.contextExtendedRequestId(),
26
29
  requestTime: apigw.AccessLogField.contextRequestTime(),
@@ -28,6 +31,6 @@ new apigwv2.HttpStage(stack, 'HttpStageWithProperties', {
28
31
  },
29
32
  });
30
33
 
31
- new IntegTest(app, 'aws-cdk-aws-apigatewayv2-http-stage-test', {
34
+ new IntegTest(app, 'aws-cdk-aws-apigatewayv2-websocket-stage-test', {
32
35
  testCases: [stack],
33
36
  });
@@ -0,0 +1,80 @@
1
+ import * as integ from '@aws-cdk/integ-tests-alpha';
2
+ import * as cdk from 'aws-cdk-lib';
3
+ import { WebSocketApi, WebSocketStage, UsagePlan, ApiKey, RateLimitedApiKey, Period } from 'aws-cdk-lib/aws-apigatewayv2';
4
+
5
+ const app = new cdk.App();
6
+
7
+ const stack = new cdk.Stack(app, 'aws-cdk-aws-apigatewayv2-websocket-usage-plan');
8
+
9
+ const webSocketApi = new WebSocketApi(stack, 'WebSocketApi');
10
+
11
+ const webSocketStage = new WebSocketStage(stack, 'WebSocketStage', {
12
+ webSocketApi,
13
+ stageName: 'dev',
14
+ });
15
+
16
+ const apiKey = new ApiKey(stack, 'ApiKey', {
17
+ apiKeyName: 'my-api-key',
18
+ value: 'MyApiKeyThatIsAtLeast20Characters',
19
+ description: 'Basic api-key',
20
+ customerId: 'my-customer',
21
+ enabled: true,
22
+ generateDistinctId: true,
23
+ });
24
+
25
+ const usagePlan = new UsagePlan(stack, 'UsagePlan', {
26
+ apiStages: [{
27
+ api: webSocketApi,
28
+ stage: webSocketStage,
29
+ }],
30
+ description: 'Basic usage plan',
31
+ quota: {
32
+ limit: 10000,
33
+ offset: 1,
34
+ period: Period.MONTH,
35
+ },
36
+ throttle: {
37
+ rateLimit: 100,
38
+ burstLimit: 200,
39
+ },
40
+ usagePlanName: 'WebSocketUsagePlan',
41
+ });
42
+
43
+ const webSocketStage2 = new WebSocketStage(stack, 'WebSocketStage2', {
44
+ webSocketApi,
45
+ stageName: 'dev2',
46
+ });
47
+
48
+ usagePlan.addApiKey(apiKey);
49
+ usagePlan.addApiStage({ api: webSocketApi, stage: webSocketStage2 });
50
+
51
+ const webSocketStage3 = new WebSocketStage(stack, 'WebSocketStage3', {
52
+ webSocketApi,
53
+ stageName: 'dev3',
54
+ });
55
+
56
+ new RateLimitedApiKey(stack, 'RateLimitedApiKey', {
57
+ apiKeyName: 'my-rate-limited-api-key',
58
+ value: 'MyRateLimitedApiKeyThatIsAtLeast20Characters',
59
+ description: 'Basic rate-limited-api-key',
60
+ customerId: 'my-customer',
61
+ enabled: true,
62
+ generateDistinctId: true,
63
+ apiStages: [{
64
+ api: webSocketApi,
65
+ stage: webSocketStage3,
66
+ }],
67
+ quota: {
68
+ limit: 10000,
69
+ offset: 1,
70
+ period: Period.MONTH,
71
+ },
72
+ throttle: {
73
+ rateLimit: 100,
74
+ burstLimit: 200,
75
+ },
76
+ });
77
+
78
+ new integ.IntegTest(app, 'WebSocketUsagePlanInteg', {
79
+ testCases: [stack],
80
+ });
@@ -1,46 +1,53 @@
1
1
  import * as apigatewayv2 from 'aws-cdk-lib/aws-apigatewayv2';
2
+ import { WebSocketLambdaIntegration } from 'aws-cdk-lib/aws-apigatewayv2-integrations';
2
3
  import * as iam from 'aws-cdk-lib/aws-iam';
4
+ import { Code, Function, Runtime } from 'aws-cdk-lib/aws-lambda';
3
5
  import * as cdk from 'aws-cdk-lib';
4
- import { HttpIamAuthorizer } from 'aws-cdk-lib/aws-apigatewayv2-authorizers';
6
+ import { Stack } from 'aws-cdk-lib';
7
+ import * as integ from '@aws-cdk/integ-tests-alpha';
8
+ import { WebSocketIamAuthorizer } from 'aws-cdk-lib/aws-apigatewayv2-authorizers';
5
9
 
6
- class ExampleComIntegration extends apigatewayv2.HttpRouteIntegration {
7
- public bind(): apigatewayv2.HttpRouteIntegrationConfig {
8
- return {
9
- type: apigatewayv2.HttpIntegrationType.HTTP_PROXY,
10
- payloadFormatVersion: apigatewayv2.PayloadFormatVersion.VERSION_1_0,
11
- method: apigatewayv2.HttpMethod.GET,
12
- uri: 'https://www.example.com/',
13
- };
14
- }
15
- }
16
-
17
- const app = new cdk.App();
10
+ const app = new cdk.App({
11
+ postCliContext: {
12
+ '@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
13
+ },
14
+ });
18
15
  const stack = new cdk.Stack(app, 'IntegApiGatewayV2Iam');
19
16
  const user = new iam.User(stack, 'User');
20
17
  const userAccessKey = new iam.AccessKey(stack, 'UserAccess', {
21
18
  user,
22
19
  });
23
20
 
24
- const httpApi = new apigatewayv2.HttpApi(stack, 'HttpApi', {
25
- defaultAuthorizer: new HttpIamAuthorizer(),
21
+ const handler = new Function(stack, 'auth-function', {
22
+ runtime: Runtime.NODEJS_20_X,
23
+ code: Code.fromInline('exports.handler = () => {return true}'),
24
+ handler: 'index.handler',
26
25
  });
27
26
 
28
- const [fooRoute] = httpApi.addRoutes({
29
- integration: new ExampleComIntegration('examplecom'),
30
- path: '/foo',
27
+ const webSocketApi = new apigatewayv2.WebSocketApi(stack, 'WebSocketApi', {
28
+ connectRouteOptions: {
29
+ integration: new WebSocketLambdaIntegration('WebSocketLambdaIntegration', handler),
30
+ authorizer: new WebSocketIamAuthorizer(),
31
+ },
31
32
  });
32
33
 
33
- fooRoute.grantInvoke(user);
34
-
35
- const [booksRoute] = httpApi.addRoutes({
36
- integration: new ExampleComIntegration('examplecom'),
37
- path: '/books/{book}',
34
+ const arn = Stack.of(stack).formatArn({
35
+ service: 'execute-api',
36
+ resource: webSocketApi.apiId,
38
37
  });
39
38
 
40
- booksRoute.grantInvoke(user);
39
+ user.attachInlinePolicy(new iam.Policy(stack, 'AllowInvoke', {
40
+ statements: [
41
+ new iam.PolicyStatement({
42
+ actions: ['execute-api:Invoke'],
43
+ effect: iam.Effect.ALLOW,
44
+ resources: [arn],
45
+ }),
46
+ ],
47
+ }));
41
48
 
42
- new cdk.CfnOutput(stack, 'API', {
43
- value: httpApi.url!,
49
+ new integ.IntegTest(app, 'ApiGatewayV2WebSocketIamTest', {
50
+ testCases: [stack],
44
51
  });
45
52
 
46
53
  new cdk.CfnOutput(stack, 'TESTACCESSKEYID', {
@@ -55,15 +62,4 @@ new cdk.CfnOutput(stack, 'TESTREGION', {
55
62
  value: stack.region,
56
63
  });
57
64
 
58
- /*
59
- * Stack verification steps:
60
- * * Get cURL version 7.75.0 or later so you can use the --aws-sigv4 option
61
- * * Curl <url>/foo without sigv4 and expect a 403
62
- * * Curl <url>/books/something without sigv4 and expect a 403
63
- * * Curl <url>/foo with sigv4 from the authorized user and expect 200
64
- * * Curl <url>/books/something with sigv4 from the authorized user and expect 200
65
- *
66
- * Reference:
67
- * * Using cURL 7.75.0 or later via the official docker image: docker run --rm curlimages/curl -s -o/dev/null -w"%{http_code}" <url>
68
- * * Args to enable sigv4 with authorized credentials: --user "$TESTACCESSKEYID:$TESTSECRETACCESSKEY" --aws-sigv4 "aws:amz:$TESTREGION:execute-api"
69
- */
65
+ app.synth();
@@ -20,7 +20,7 @@ const app = new App({
20
20
  const stack = new Stack(app, 'AuthorizerInteg');
21
21
 
22
22
  const authHandler = new lambda.Function(stack, 'auth-function', {
23
- runtime: lambda.Runtime.NODEJS_18_X,
23
+ runtime: lambda.Runtime.NODEJS_20_X,
24
24
  handler: 'index.handler',
25
25
  code: lambda.Code.fromAsset(path.join(__dirname, '..', 'auth-handler'), { exclude: ['*.ts'] }),
26
26
  });
@@ -43,7 +43,7 @@ const httpApiWithDefaultAuthorizer = new HttpApi(stack, 'MyHttpApiWithDefaultAut
43
43
  });
44
44
 
45
45
  const handler = new lambda.Function(stack, 'lambda', {
46
- runtime: lambda.Runtime.NODEJS_18_X,
46
+ runtime: lambda.Runtime.NODEJS_20_X,
47
47
  handler: 'index.handler',
48
48
  code: lambda.AssetCode.fromAsset(path.join(__dirname, '..', 'integ.lambda.handler'), { exclude: ['*.ts'] }),
49
49
  });
@@ -33,7 +33,7 @@ const httpApiWithDefaultAuthorizer = new HttpApi(stack, 'MyHttpApiWithDefaultAut
33
33
  });
34
34
 
35
35
  const handler = new lambda.Function(stack, 'lambda', {
36
- runtime: lambda.Runtime.NODEJS_18_X,
36
+ runtime: lambda.Runtime.NODEJS_20_X,
37
37
  handler: 'index.handler',
38
38
  code: lambda.AssetCode.fromAsset(path.join(__dirname, '..', 'integ.user-pool.handler'), { exclude: ['*.ts'] }),
39
39
  });
@@ -47,6 +47,41 @@ httpApi.addRoutes({
47
47
  });
48
48
  ```
49
49
 
50
+ #### Lambda Integration Permissions
51
+
52
+ By default, creating a `HttpLambdaIntegration` will add a permission for API Gateway to invoke your AWS Lambda function, scoped to the specific route which uses the integration.
53
+
54
+ If you reuse the same AWS Lambda function for many integrations, the AWS Lambda permission policy size can be exceeded by adding a separate policy statement for each route which invokes the AWS Lambda function. To avoid this, you can opt to scope permissions to any route on the API by setting `scopePermissionToRoute` to `false`, and this will ensure only a single policy statement is added to the AWS Lambda permission policy.
55
+
56
+ ```ts
57
+ import { HttpLambdaIntegration } from 'aws-cdk-lib/aws-apigatewayv2-integrations';
58
+
59
+ declare const booksDefaultFn: lambda.Function;
60
+
61
+ const httpApi = new apigwv2.HttpApi(this, 'HttpApi');
62
+
63
+ const getBooksIntegration = new HttpLambdaIntegration('GetBooksIntegration', booksDefaultFn, {
64
+ scopePermissionToRoute: false,
65
+ });
66
+ const createBookIntegration = new HttpLambdaIntegration('CreateBookIntegration', booksDefaultFn, {
67
+ scopePermissionToRoute: false,
68
+ });
69
+
70
+ httpApi.addRoutes({
71
+ path: '/books',
72
+ methods: [ apigwv2.HttpMethod.GET ],
73
+ integration: getBooksIntegration,
74
+ });
75
+
76
+ httpApi.addRoutes({
77
+ path: '/books',
78
+ methods: [ apigwv2.HttpMethod.POST ],
79
+ integration: createBookIntegration,
80
+ });
81
+ ```
82
+
83
+ In the above example, a single permission is added, shared by both `getBookIntegration` and `createBookIntegration`.
84
+
50
85
  ### HTTP Proxy
51
86
 
52
87
  HTTP Proxy integrations enables connecting an HTTP API route to a publicly routable HTTP endpoint. When a client
@@ -15,7 +15,7 @@ const httpApi = new HttpApi(stack, 'test-apigwv2-add-subroute-integration');
15
15
 
16
16
  // Regular Lambda Function
17
17
  const lambdaHandler = new lambda.Function(stack, 'first-lambda-function', {
18
- runtime: lambda.Runtime.NODEJS_18_X,
18
+ runtime: lambda.Runtime.NODEJS_20_X,
19
19
  handler: 'index.handler',
20
20
  code: new lambda.InlineCode('exports.handler = async function(event, context) { return { statusCode: 200, body: \'success-hit-first-lambda\' }; };'),
21
21
  });
@@ -23,7 +23,7 @@ const lambdaHandlerIntegration = new HttpLambdaIntegration('my-lambda-integratio
23
23
 
24
24
  // Lambda created with Function.fromFunctionAttributes()
25
25
  const secondLambdaHandler = new lambda.Function(stack, 'second-lambda-function', {
26
- runtime: lambda.Runtime.NODEJS_18_X,
26
+ runtime: lambda.Runtime.NODEJS_20_X,
27
27
  handler: 'index.handler',
28
28
  code: new lambda.InlineCode('exports.handler = async function(event, context) { return { statusCode: 200, body: \'success-hit-second-lambda\' }; };'),
29
29
  });
@@ -35,8 +35,8 @@ const lambdaFromFunctionAttributesIntegration = new HttpLambdaIntegration('my-re
35
35
 
36
36
  // Lambda created with Function.fromFunctionName()
37
37
  const thirdLambdaName = 'third-lambda-function';
38
- new lambda.Function(stack, thirdLambdaName, {
39
- runtime: lambda.Runtime.NODEJS_18_X,
38
+ const thirdLambdaFunction = new lambda.Function(stack, thirdLambdaName, {
39
+ runtime: lambda.Runtime.NODEJS_20_X,
40
40
  handler: 'index.handler',
41
41
  code: new lambda.InlineCode('exports.handler = async function(event, context) { return { statusCode: 200, body: \'success-hit-third-lambda\' }; };'),
42
42
  functionName: thirdLambdaName,
@@ -83,6 +83,9 @@ httpApi.addRoutes({
83
83
  integration: lambdaFromFunctionNameIntegration,
84
84
  });
85
85
 
86
+ httpApi.node.addDependency(secondLambdaHandler);
87
+ httpApi.node.addDependency(thirdLambdaFunction);
88
+
86
89
  // Integ Test Assertions
87
90
  const integ = new IntegTest(app, 'Integ', { testCases: [stack] });
88
91