konokenj.cdk-api-mcp-server 0.48.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 (152) 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 +2 -2
  5. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-eks-v2-alpha/README.md +156 -69
  6. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-imagebuilder-alpha/README.md +656 -0
  7. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-lambda-go-alpha/README.md +102 -4
  8. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-msk-alpha/README.md +38 -8
  9. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-sagemaker-alpha/README.md +32 -0
  10. cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/mixins-preview/README.md +182 -0
  11. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/README.md/README.md +2 -0
  12. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/README.md +34 -0
  13. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ.api-with-authorizer-and-proxy.ts +1 -1
  14. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ.lambda-api.ts +1 -1
  15. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ.lambda-permission-consolidation.ts +55 -0
  16. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ.spec-restapi.ts +1 -0
  17. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/README.md +93 -81
  18. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.stage.ts +20 -4
  19. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-authorizers/integ.iam.ts +1 -1
  20. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-authorizers/integ.lambda.ts +2 -2
  21. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-authorizers/integ.user-pool.ts +1 -1
  22. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/README.md +35 -0
  23. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.add-subroute-integration.ts +7 -4
  24. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.http-proxy.ts +1 -1
  25. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.lambda-connect-disconnect-trigger.ts +2 -2
  26. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.lambda-permission-consolidation.ts +45 -0
  27. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.lambda-proxy.ts +1 -1
  28. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.lambda.ts +4 -4
  29. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-appsync/integ.graphql-lambda-permission.ts +1 -1
  30. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-appsync/integ.js-resolver.ts +1 -1
  31. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-batch/README.md +15 -1
  32. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-batch/integ.managed-compute-environment-default-instance-class.ts +20 -0
  33. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudformation/integ.core-custom-resources-node-18.ts +1 -1
  34. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudformation/integ.core-custom-resources-service-timeout.ts +1 -1
  35. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudfront-origins/README.md +33 -0
  36. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudfront-origins/integ.function-url-origin-ip-address-type.ts +84 -0
  37. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudfront-origins/integ.origin-response-completion-timeout.ts +1 -1
  38. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudtrail/integ.cloudtrail-data-events-only.ts +1 -1
  39. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/README.md +1 -1
  40. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/integ.anomaly-detection-alarm.ts +44 -2
  41. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codebuild/README.md +0 -1
  42. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codepipeline-actions/integ.pipeline-elastic-beanstalk-deploy.ts +4 -1
  43. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cognito/README.md +2 -2
  44. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/README.md +125 -2
  45. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/TABLE_V1_API.md +45 -2
  46. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb.add-to-resource-policy.ts +97 -0
  47. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb.compound.ts +32 -0
  48. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb.policy.ts +21 -1
  49. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.table-v2.compound.ts +43 -0
  50. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/README.md +16 -1
  51. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/integ.client-vpn-endpoint-disconnect-on-session-timeout.ts +65 -0
  52. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/integ.vpc-flow-logs.ts +4 -0
  53. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecr/README.md +41 -2
  54. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecr/integ.tag-mutability-exclusion.ts +30 -0
  55. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/README.md +47 -4
  56. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.managedinstances-capacity-provider.ts +5 -3
  57. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.managedinstances-no-default-capacity-provider.ts +107 -0
  58. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.placement-strategies.ts +32 -8
  59. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs-patterns/integ.alb-fargate-service-public-private-switch.ts +45 -0
  60. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/README.md +103 -83
  61. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-al2023-nodegroup.ts +1 -1
  62. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-cluster-removal-policy.ts +31 -0
  63. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.fargate-cluster.ts +1 -1
  64. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-elasticloadbalancingv2/README.md +34 -4
  65. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-elasticloadbalancingv2/integ.alb-lambda-multi-value-headers.ts +1 -1
  66. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-elasticloadbalancingv2/integ.alb.oidc.ts +1 -1
  67. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-elasticloadbalancingv2/integ.nlb.security-group.ts +70 -0
  68. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-elasticloadbalancingv2-actions/integ.cognito.ts +1 -1
  69. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-events-targets/README.md +22 -0
  70. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-events-targets/integ.firehose-delivery-stream.ts +51 -0
  71. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.managed-policy.ts +9 -0
  72. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.policy.ts +9 -0
  73. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesis/README.md +42 -0
  74. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesis/integ.stream-shard-level-monitoring.ts +47 -0
  75. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/README.md +156 -3
  76. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/integ.cloudwatch-logs-processors.ts +45 -0
  77. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/integ.record-format-conversion-schema.ts +154 -0
  78. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/integ.record-format-conversion.ts +178 -0
  79. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/README.md +39 -0
  80. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.binary-payload.ts +1 -1
  81. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.logging-config.ts +8 -8
  82. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.multi-tenancy.ts +24 -0
  83. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.params-and-secrets.ts +1 -1
  84. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.runtime-management.ts +1 -1
  85. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.runtime.fromasset.ts +19 -4
  86. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.runtime.inlinecode.ts +11 -4
  87. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-nodejs/integ.dependencies-pnpm.ts +1 -1
  88. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-nodejs/integ.function-exclude-smithy-models.ts +2 -2
  89. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-nodejs/integ.nodejs.build.images.ts +1 -1
  90. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/README.md +4 -0
  91. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.metricfilter-apply-on-transformed-logs.ts +29 -0
  92. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.subscriptionfilter.ts +1 -1
  93. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.ebs.ts +1 -1
  94. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.min.ts +1 -0
  95. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/README.md +1 -1
  96. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-cloudwatch-logs-exports.ts +56 -0
  97. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-data-api-to-imported-cluster.ts +1 -1
  98. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-data-api.ts +1 -1
  99. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53/README.md +44 -31
  100. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53/integ.private-hosted-zone-from-attributes.ts +41 -0
  101. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53/integ.zone-delegation-iam-stack.ts +66 -0
  102. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/README.md +65 -4
  103. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-big-response.ts +17 -6
  104. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-cloudfront.ts +20 -18
  105. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-cross-nested-stack-source.ts +7 -1
  106. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-cross-stack-source.ts +6 -1
  107. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-cross-stack-ssm-source.ts +7 -1
  108. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-data.ts +99 -59
  109. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-deployed-bucket.ts +10 -4
  110. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-large-file.ts +23 -12
  111. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-loggroup.ts +7 -2
  112. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-security-groups-efs.ts +77 -0
  113. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-security-groups-empty.ts +69 -0
  114. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-security-groups-multiple.ts +89 -0
  115. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-security-groups-single.ts +77 -0
  116. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-signcontent.ts +11 -7
  117. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-substitution-with-destination-key.ts +15 -8
  118. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-substitution-with-role.ts +29 -14
  119. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-substitution.ts +16 -8
  120. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-vpc-basic.ts +65 -0
  121. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-vpc-config.ts +66 -0
  122. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-vpc-custom-subnets.ts +66 -0
  123. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-vpc-efs.ts +66 -0
  124. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-vpc-security-groups.ts +72 -0
  125. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-vpc-subnet-selection.ts +70 -0
  126. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment.ts +47 -69
  127. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-secretsmanager/integ.secret.dynamic-reference-key.ts +38 -0
  128. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/integ.sm-jsonpath-with-distributed-map-jsonata.ts +105 -0
  129. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/README.md +15 -4
  130. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.call-aws-service-cross-region-lambda.ts +1 -1
  131. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.evaluate-expression-arm64.ts +27 -0
  132. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.evaluate-expression-default.ts +25 -0
  133. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.evaluate-expression-mixed-arch.ts +35 -0
  134. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.evaluate-expression-x86.ts +27 -0
  135. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.invoke-json-path.ts +102 -0
  136. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-synthetics/README.md +17 -1
  137. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-synthetics/integ.canary-runtime-validation.ts +43 -0
  138. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-synthetics/integ.canary.ts +2 -0
  139. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/README.md +56 -0
  140. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.aws-custom-resource.ts +1 -1
  141. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.custom-resource-config-lambda-node-runtime.ts +1 -1
  142. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.external-id.ts +80 -0
  143. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.invoke-function-payload.ts +1 -1
  144. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/FEATURE_FLAGS.md +71 -10
  145. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/README.md +32 -1
  146. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/interfaces/README.md +33 -0
  147. {konokenj_cdk_api_mcp_server-0.48.0.dist-info → konokenj_cdk_api_mcp_server-0.57.0.dist-info}/METADATA +2 -2
  148. {konokenj_cdk_api_mcp_server-0.48.0.dist-info → konokenj_cdk_api_mcp_server-0.57.0.dist-info}/RECORD +151 -106
  149. cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-events-targets/integ.kinesis-firehose-stream.ts +0 -33
  150. {konokenj_cdk_api_mcp_server-0.48.0.dist-info → konokenj_cdk_api_mcp_server-0.57.0.dist-info}/WHEEL +0 -0
  151. {konokenj_cdk_api_mcp_server-0.48.0.dist-info → konokenj_cdk_api_mcp_server-0.57.0.dist-info}/entry_points.txt +0 -0
  152. {konokenj_cdk_api_mcp_server-0.48.0.dist-info → konokenj_cdk_api_mcp_server-0.57.0.dist-info}/licenses/LICENSE.txt +0 -0
@@ -7,7 +7,7 @@ class TestStack extends Stack {
7
7
  constructor(scope: Construct, id: string, props?: StackProps) {
8
8
  super(scope, id, props);
9
9
 
10
- const instanceTypes = ['i4g.large.search', 'i4i.xlarge.search', 'r7gd.xlarge.search'];
10
+ const instanceTypes = ['i4g.large.search', 'i4i.xlarge.search', 'r7gd.xlarge.search', 'r8gd.medium.search'];
11
11
 
12
12
  instanceTypes.forEach((instanceType, index) => {
13
13
  new opensearch.Domain(this, `Domain${index + 1}`, {
@@ -11,6 +11,7 @@ class TestStack extends Stack {
11
11
  opensearch.EngineVersion.OPENSEARCH_2_13,
12
12
  opensearch.EngineVersion.OPENSEARCH_2_15,
13
13
  opensearch.EngineVersion.OPENSEARCH_2_17,
14
+ opensearch.EngineVersion.OPENSEARCH_3_1,
14
15
  ];
15
16
 
16
17
  // deploy opensearch domain with minimal configuration
@@ -1204,7 +1204,7 @@ const cluster = new rds.DatabaseCluster(this, 'Database', {
1204
1204
  }),
1205
1205
  writer: rds.ClusterInstance.provisioned('writer'),
1206
1206
  vpc,
1207
- cloudwatchLogsExports: ['error', 'general', 'slowquery', 'audit'], // Export all available MySQL-based logs
1207
+ cloudwatchLogsExports: ['error', 'general', 'slowquery', 'audit', 'instance', 'iam-db-auth-error'], // Export all available MySQL-based logs
1208
1208
  cloudwatchLogsRetention: logs.RetentionDays.THREE_MONTHS, // Optional - default is to never expire logs
1209
1209
  cloudwatchLogsRetentionRole: myLogsPublishingRole, // Optional - a role will be created if not provided
1210
1210
  // ...
@@ -0,0 +1,56 @@
1
+ import * as cdk from 'aws-cdk-lib/core';
2
+ import { ExpectedResult, IntegTest } from '@aws-cdk/integ-tests-alpha';
3
+ import * as ec2 from 'aws-cdk-lib/aws-ec2';
4
+ import * as rds from 'aws-cdk-lib/aws-rds';
5
+
6
+ const app = new cdk.App();
7
+
8
+ const stack = new cdk.Stack(app, 'CloudWatchLogsExportsStack');
9
+ const vpc = new ec2.Vpc(stack, 'VPC');
10
+
11
+ const mysql = new rds.DatabaseCluster(stack, 'DatabaseClusterMysql', {
12
+ engine: rds.DatabaseClusterEngine.auroraMysql({ version: rds.AuroraMysqlEngineVersion.VER_3_09_0 }),
13
+ writer: rds.ClusterInstance.serverlessV2('writerInstance'),
14
+ vpc,
15
+ cloudwatchLogsExports: ['error', 'general', 'slowquery', 'audit', 'instance', 'iam-db-auth-error'],
16
+ removalPolicy: cdk.RemovalPolicy.DESTROY,
17
+ });
18
+
19
+ const postgresql = new rds.DatabaseCluster(stack, 'DatabaseClusterPostgresql', {
20
+ engine: rds.DatabaseClusterEngine.auroraPostgres({ version: rds.AuroraPostgresEngineVersion.VER_16_4 }),
21
+ writer: rds.ClusterInstance.serverlessV2('writerInstance'),
22
+ vpc,
23
+ cloudwatchLogsExports: ['postgresql', 'iam-db-auth-error', 'instance'],
24
+ removalPolicy: cdk.RemovalPolicy.DESTROY,
25
+ });
26
+
27
+ const integ = new IntegTest(app, 'CloudWatchLogsExportsStackInteg', {
28
+ testCases: [stack],
29
+ });
30
+
31
+ integ.assertions.awsApiCall('RDS', 'describeDBClusters', {
32
+ DBClusterIdentifier: mysql.clusterIdentifier,
33
+ }).expect(ExpectedResult.objectLike({
34
+ DBClusters: [{
35
+ EnabledCloudwatchLogsExports: [
36
+ 'audit',
37
+ 'error',
38
+ 'general',
39
+ 'iam-db-auth-error',
40
+ 'instance',
41
+ 'slowquery',
42
+ ],
43
+ }],
44
+ }));
45
+
46
+ integ.assertions.awsApiCall('RDS', 'describeDBClusters', {
47
+ DBClusterIdentifier: postgresql.clusterIdentifier,
48
+ }).expect(ExpectedResult.objectLike({
49
+ DBClusters: [{
50
+ EnabledCloudwatchLogsExports: [
51
+ 'iam-db-auth-error',
52
+ 'instance',
53
+ 'postgresql',
54
+ ],
55
+ }],
56
+ }));
@@ -14,7 +14,7 @@ const stack = new cdk.Stack(app, 'cluster-data-api-to-imported-cluster');
14
14
  const vpc = new ec2.Vpc(stack, 'VPC');
15
15
 
16
16
  const func = new lambda.Function(stack, 'Function', {
17
- runtime: lambda.Runtime.NODEJS_18_X,
17
+ runtime: lambda.Runtime.NODEJS_20_X,
18
18
  handler: 'index.handler',
19
19
  code: lambda.Code.fromInline('exports.handler = async (event) => { return "hello"; }'),
20
20
  });
@@ -14,7 +14,7 @@ const stack = new cdk.Stack(app, 'cluster-data-api');
14
14
  const vpc = new ec2.Vpc(stack, 'VPC');
15
15
 
16
16
  const fucntion = new lambda.Function(stack, 'Function', {
17
- runtime: lambda.Runtime.NODEJS_18_X,
17
+ runtime: lambda.Runtime.NODEJS_20_X,
18
18
  handler: 'index.handler',
19
19
  code: lambda.Code.fromInline('exports.handler = async (event) => { return "hello"; }'),
20
20
  });
@@ -367,40 +367,40 @@ const crossAccountRole = new iam.Role(this, 'CrossAccountRole', {
367
367
  roleName: 'MyDelegationRole',
368
368
  // The other account
369
369
  assumedBy: new iam.AccountPrincipal('12345678901'),
370
- // You can scope down this role policy to be least privileged.
371
- // If you want the other account to be able to manage specific records,
372
- // you can scope down by resource and/or normalized record names
373
- inlinePolicies: {
374
- crossAccountPolicy: new iam.PolicyDocument({
375
- statements: [
376
- new iam.PolicyStatement({
377
- sid: 'ListHostedZonesByName',
378
- effect: iam.Effect.ALLOW,
379
- actions: ['route53:ListHostedZonesByName'],
380
- resources: ['*'],
381
- }),
382
- new iam.PolicyStatement({
383
- sid: 'GetHostedZoneAndChangeResourceRecordSets',
384
- effect: iam.Effect.ALLOW,
385
- actions: ['route53:GetHostedZone', 'route53:ChangeResourceRecordSets'],
386
- // This example assumes the RecordSet subdomain.somexample.com
387
- // is contained in the HostedZone
388
- resources: ['arn:aws:route53:::hostedzone/HZID00000000000000000'],
389
- conditions: {
390
- 'ForAllValues:StringLike': {
391
- 'route53:ChangeResourceRecordSetsNormalizedRecordNames': [
392
- 'subdomain.someexample.com',
393
- ],
394
- },
395
- },
396
- }),
397
- ],
398
- }),
399
- },
400
370
  });
401
371
  parentZone.grantDelegation(crossAccountRole);
402
372
  ```
403
373
 
374
+ To restrict the records that can be created with the delegation IAM role, use the optional `delegatedZoneNames` property in the delegation options,
375
+ which enforces the `route53:ChangeResourceRecordSetsNormalizedRecordNames` condition key for record names that match those hosted zone names.
376
+ The `delegatedZoneNames` list may only consist of hosted zones names that are subzones of the parent hosted zone.
377
+
378
+ If the delegated zone name contains an unresolved token,
379
+ it must resolve to a zone name that satisfies the requirements according to the documentation:
380
+ https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/specifying-conditions-route53.html#route53_rrset_conditionkeys_normalization
381
+
382
+ > All letters must be lowercase.
383
+ > The DNS name must be without the trailing dot.
384
+ > Characters other than a–z, 0–9, - (hyphen), _ (underscore), and . (period, as a delimiter between labels) must use escape codes in the format \three-digit octal code. For example, \052 is the octal code for character *.
385
+
386
+ This feature allows you to better follow the minimum permissions privilege principle:
387
+
388
+ ```ts
389
+ const parentZone = new route53.PublicHostedZone(this, 'HostedZone', {
390
+ zoneName: 'someexample.com',
391
+ });
392
+
393
+ declare const betaCrossAccountRole: iam.Role;
394
+ parentZone.grantDelegation(betaCrossAccountRole, {
395
+ delegatedZoneNames: ['beta.someexample.com'],
396
+ });
397
+
398
+ declare const prodCrossAccountRole: iam.Role;
399
+ parentZone.grantDelegation(prodCrossAccountRole, {
400
+ delegatedZoneNames: ['prod.someexample.com'],
401
+ });
402
+ ```
403
+
404
404
  In the account containing the child zone to be delegated:
405
405
 
406
406
  ```ts
@@ -540,7 +540,8 @@ const zone = route53.HostedZone.fromHostedZoneAttributes(this, 'MyZone', {
540
540
  ```
541
541
 
542
542
  Alternatively, use the `HostedZone.fromHostedZoneId` to import hosted zones if
543
- you know the ID and the retrieval for the `zoneName` is undesirable.
543
+ you know the ID and the retrieval for the `zoneName` is undesirable.
544
+ Note that any records created with a hosted zone obtained this way must have their name be fully qualified
544
545
 
545
546
  ```ts
546
547
  const zone = route53.HostedZone.fromHostedZoneId(this, 'MyZone', 'ZOJJZC49E0EPZ');
@@ -558,6 +559,18 @@ const zoneFromAttributes = route53.PublicHostedZone.fromPublicHostedZoneAttribut
558
559
  const zoneFromId = route53.PublicHostedZone.fromPublicHostedZoneId(this, 'MyZone', 'ZOJJZC49E0EPZ');
559
560
  ```
560
561
 
562
+ You can import a Private Hosted Zone with `PrivateHostedZone.fromPrivateHostedZoneId` and `PrivateHostedZone.fromPrivateHostedZoneAttributes` methods:
563
+
564
+ ```ts
565
+ const privateZoneFromAttributes = route53.PrivateHostedZone.fromPrivateHostedZoneAttributes(this, 'MyPrivateZone', {
566
+ zoneName: 'example.local',
567
+ hostedZoneId: 'ZOJJZC49E0EPZ',
568
+ });
569
+
570
+ // Does not know zoneName
571
+ const privateZoneFromId = route53.PrivateHostedZone.fromPrivateHostedZoneId(this, 'MyPrivateZone', 'ZOJJZC49E0EPZ');
572
+ ```
573
+
561
574
  You can use `CrossAccountZoneDelegationRecord` on imported Hosted Zones with the `grantDelegation` method:
562
575
 
563
576
  ```ts
@@ -0,0 +1,41 @@
1
+ import * as ec2 from 'aws-cdk-lib/aws-ec2';
2
+ import * as cdk from 'aws-cdk-lib';
3
+ import * as route53 from 'aws-cdk-lib/aws-route53';
4
+ import { PrivateHostedZone } from 'aws-cdk-lib/aws-route53';
5
+ import { ExpectedResult, IntegTest } from '@aws-cdk/integ-tests-alpha';
6
+
7
+ const app = new cdk.App();
8
+
9
+ const stack = new cdk.Stack(app, 'aws-cdk-route53-integ');
10
+
11
+ const vpc = new ec2.Vpc(stack, 'VPC', { maxAzs: 1, restrictDefaultSecurityGroup: false });
12
+
13
+ const privateZone = new PrivateHostedZone(stack, 'PrivateZone', {
14
+ zoneName: 'aws-cdk.dev', vpc,
15
+ });
16
+
17
+ const expectPrivateHostedZone = route53.PrivateHostedZone.fromHostedZoneAttributes(stack, 'ExpectPrivateHostedZone', {
18
+ hostedZoneId: privateZone.hostedZoneId,
19
+ zoneName: privateZone.zoneName,
20
+ });
21
+
22
+ const integTest = new IntegTest(app, 'AwsCdkRoute53IntegTest', {
23
+ testCases: [stack],
24
+ diffAssets: false,
25
+ });
26
+
27
+ const hostedZoneApiCall = integTest.assertions.awsApiCall('Route53', 'getHostedZone', {
28
+ Id: expectPrivateHostedZone.hostedZoneId,
29
+ });
30
+
31
+ hostedZoneApiCall.expect(
32
+ ExpectedResult.objectLike({
33
+ HostedZone: {
34
+ Id: expectPrivateHostedZone.hostedZoneId,
35
+ Name: expectPrivateHostedZone.zoneName,
36
+ },
37
+ }),
38
+ );
39
+
40
+ app.synth();
41
+
@@ -0,0 +1,66 @@
1
+ import * as iam from 'aws-cdk-lib/aws-iam';
2
+ import * as cdk from 'aws-cdk-lib';
3
+ import * as route53 from 'aws-cdk-lib/aws-route53';
4
+ import { Construct } from 'constructs';
5
+ import { IntegTest } from '@aws-cdk/integ-tests-alpha';
6
+
7
+ class ZoneDelegationIamStack extends cdk.Stack {
8
+ constructor(scope: Construct, id: string) {
9
+ super(scope, id);
10
+
11
+ const parentZone = new route53.PublicHostedZone(this, 'ParentZone', {
12
+ zoneName: 'uniqueexample.com',
13
+ });
14
+
15
+ const trusteeRoleArns = this.formatArn({
16
+ service: 'iam',
17
+ region: '',
18
+ resource: 'role',
19
+ resourceName: 'ZoneDelegationStack-*',
20
+ });
21
+
22
+ const delegationRole = new iam.Role(this, 'ZoneDelegationRole', {
23
+ roleName: 'ExampleDelegationRole',
24
+ assumedBy: new iam.AccountRootPrincipal().withConditions({
25
+ ArnLike: {
26
+ 'aws:PrincipalArn': trusteeRoleArns,
27
+ },
28
+ }),
29
+ });
30
+
31
+ const delegationGrant = parentZone.grantDelegation(delegationRole, {
32
+ delegatedZoneNames: [
33
+ 'sub1.uniqueexample.com',
34
+ 'sub2_*$.uniqueexample.com', // should result in octal codes in iam condition
35
+ ],
36
+ });
37
+
38
+ const subZone = new route53.PublicHostedZone(this, 'SubZone', {
39
+ zoneName: 'sub1.uniqueexample.com',
40
+ });
41
+
42
+ new route53.CrossAccountZoneDelegationRecord(subZone, 'ZoneDelegation', {
43
+ delegatedZone: subZone,
44
+ parentHostedZoneName: parentZone.zoneName,
45
+ delegationRole: delegationRole,
46
+ }).node.addDependency(delegationGrant);
47
+
48
+ const subZoneWithSpecialChars = new route53.PublicHostedZone(this, 'SubZoneSpecialChars', {
49
+ zoneName: 'sub2_*$.uniqueexample.com',
50
+ });
51
+
52
+ new route53.CrossAccountZoneDelegationRecord(subZoneWithSpecialChars, 'ZoneDelegation', {
53
+ delegatedZone: subZoneWithSpecialChars,
54
+ parentHostedZoneName: parentZone.zoneName,
55
+ delegationRole: delegationRole,
56
+ }).node.addDependency(delegationGrant);
57
+ }
58
+ }
59
+
60
+ const app = new cdk.App();
61
+
62
+ const stack = new ZoneDelegationIamStack(app, 'ZoneDelegationStack');
63
+
64
+ new IntegTest(app, 'ZoneDelegationIam', {
65
+ testCases: [stack],
66
+ });
@@ -1,6 +1,5 @@
1
1
  # AWS S3 Deployment Construct Library
2
2
 
3
-
4
3
  This library allows populating an S3 bucket with the contents of .zip files
5
4
  from other S3 buckets or from local disk.
6
5
 
@@ -83,7 +82,7 @@ User: *** is not authorized to perform: kms:Decrypt on the resource associated w
83
82
  because no identity-based policy allows the kms:Decrypt action
84
83
  ```
85
84
 
86
- When this happens, users can use the public `handlerRole` property of `BucketDeployment` to manually
85
+ When this happens, users can use the public `handlerRole` property of `BucketDeployment` to manually
87
86
  add the KMS permissions:
88
87
 
89
88
  ```ts
@@ -375,6 +374,7 @@ resource handler.
375
374
  > of memory and storage size.
376
375
 
377
376
  ## JSON-Aware Source Processing
377
+
378
378
  When using `Source.jsonData` with CDK Tokens (references to construct properties), you may need to enable the escaping option. This is particularly important when the referenced properties might contain special characters that require proper JSON escaping (like double quotes, line breaks, etc.).
379
379
 
380
380
  ```ts
@@ -462,7 +462,7 @@ to make from placeholders in a local file which will be resolved during deployme
462
462
  is especially useful in situations like creating an API from a spec file, where users might
463
463
  want to reference other CDK resources they have created.
464
464
 
465
- The syntax for template variables is `{{ variableName }}` in your local file. Then, you would
465
+ The syntax for template variables is `{{ variableName }}` in your local file. Then, you would
466
466
  specify the substitutions in CDK like this:
467
467
 
468
468
  ```ts
@@ -486,7 +486,7 @@ new s3deploy.DeployTimeSubstitutedFile(this, 'MyFile', {
486
486
  ```
487
487
 
488
488
  Nested variables, like `{{ {{ foo }} }}` or `{{ foo {{ bar }} }}`, are not supported by this
489
- construct. In the first case of a single variable being is double nested `{{ {{ foo }} }}`, only
489
+ construct. In the first case of a single variable being is double nested `{{ {{ foo }} }}`, only
490
490
  the `{{ foo }}` would be replaced by the substitution, and the extra brackets would remain in the file.
491
491
  In the second case of two nexted variables `{{ foo {{ bar }} }}`, only the `{{ bar }}` would be replaced
492
492
  in the file.
@@ -533,6 +533,67 @@ new cdk.CfnOutput(this, 'ObjectKey', {
533
533
  });
534
534
  ```
535
535
 
536
+ ## Specifying a Custom VPC, Subnets, and Security Groups in BucketDeployment
537
+
538
+ By default, the AWS CDK BucketDeployment construct runs in a publicly accessible environment. However, for enhanced security and compliance, you may need to deploy your assets from within a VPC while restricting network access through custom subnets and security groups.
539
+
540
+ ### Using a Custom VPC
541
+
542
+ To deploy assets within a private network, specify the vpc property in BucketDeploymentProps. This ensures that the deployment Lambda function executes within your specified VPC.
543
+
544
+ ```ts
545
+ const vpc = ec2.Vpc.fromLookup(this, 'ExistingVPC', { vpcId: 'vpc-12345678' });
546
+ const bucket = new s3.Bucket(this, 'MyBucket');
547
+
548
+ new s3deploy.BucketDeployment(this, 'DeployToS3', {
549
+ destinationBucket: bucket,
550
+ vpc: vpc,
551
+ sources: [s3deploy.Source.asset('./website')],
552
+ });
553
+ ```
554
+
555
+ ### Specifying Subnets for Deployment
556
+
557
+ By default, when you specify a VPC, the BucketDeployment function is deployed in the private subnets of that VPC.
558
+ However, you can customize the subnet selection using the vpcSubnets property.
559
+
560
+ ```ts
561
+ const vpc = ec2.Vpc.fromLookup(this, 'ExistingVPC', { vpcId: 'vpc-12345678' });
562
+ const bucket = new s3.Bucket(this, 'MyBucket');
563
+
564
+ new s3deploy.BucketDeployment(this, 'DeployToS3', {
565
+ destinationBucket: bucket,
566
+ vpc: vpc,
567
+ vpcSubnets: { subnetType: ec2.SubnetType.PUBLIC },
568
+ sources: [s3deploy.Source.asset('./website')],
569
+ });
570
+ ```
571
+
572
+ ### Defining Custom Security Groups
573
+
574
+ For enhanced network security, you can now specify custom security groups in BucketDeploymentProps.
575
+ This allows fine-grained control over ingress and egress rules for the deployment Lambda function.
576
+
577
+ ```ts
578
+ const vpc = ec2.Vpc.fromLookup(this, 'ExistingVPC', { vpcId: 'vpc-12345678' });
579
+ const bucket = new s3.Bucket(this, 'MyBucket');
580
+
581
+ const securityGroup = new ec2.SecurityGroup(this, 'CustomSG', {
582
+ vpc: vpc,
583
+ description: 'Allow HTTPS outbound access',
584
+ allowAllOutbound: false,
585
+ });
586
+
587
+ securityGroup.addEgressRule(ec2.Peer.anyIpv4(), ec2.Port.tcp(443), 'Allow HTTPS traffic');
588
+
589
+ new s3deploy.BucketDeployment(this, 'DeployWithSecurityGroup', {
590
+ destinationBucket: bucket,
591
+ vpc: vpc,
592
+ securityGroups: [securityGroup],
593
+ sources: [s3deploy.Source.asset('./website')],
594
+ });
595
+ ```
596
+
536
597
  ## Notes
537
598
 
538
599
  - This library uses an AWS CloudFormation custom resource which is about 10MiB in
@@ -11,6 +11,12 @@ import { ExpectedResult } from '@aws-cdk/integ-tests-alpha';
11
11
 
12
12
  const numFiles = 50;
13
13
 
14
+ /**
15
+ * Integration test for bucket deployment with many sources (big response):
16
+ * - Tests deployment with 50 source files to validate response size handling
17
+ * - Uses increased memory limit (2048MB) for large deployments
18
+ * - Validates that objectKeys output is disabled when outputObjectKeys is false
19
+ */
14
20
  class TestBucketDeployment extends cdk.Stack {
15
21
  public readonly destinationBucket: s3.IBucket;
16
22
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
@@ -21,9 +27,14 @@ class TestBucketDeployment extends cdk.Stack {
21
27
  autoDeleteObjects: true, // needed for integration test cleanup
22
28
  });
23
29
 
30
+ // Create multiple source files to test big response handling
24
31
  const sources = [];
25
32
  for (let i = 0; i < numFiles; i++) {
26
33
  const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'tmpcdk'));
34
+ process.on('exit', () => {
35
+ fs.rmSync(tempDir, { force: true, recursive: true });
36
+ });
37
+
27
38
  fs.mkdirSync(tempDir, { recursive: true });
28
39
  const fileName = `${i+1}.txt`;
29
40
  const filePath = path.join(tempDir, fileName);
@@ -31,17 +42,17 @@ class TestBucketDeployment extends cdk.Stack {
31
42
  sources.push(s3deploy.Source.asset(tempDir));
32
43
  }
33
44
 
34
- const deploymentBucket = new s3deploy.BucketDeployment(this, 'DeployMe', {
45
+ const deployment = new s3deploy.BucketDeployment(this, 'DeployWithManySources', {
35
46
  sources: sources,
36
47
  destinationBucket: this.destinationBucket,
37
48
  memoryLimit: 2048,
38
- retainOnDelete: false, // default is true, which will block the integration test cleanup
49
+ retainOnDelete: false,
39
50
  outputObjectKeys: false,
40
51
  });
41
52
 
42
53
  new CfnOutput(this, 'customResourceData', {
43
54
  value: Fn.sub('Object Keys are${keys}', {
44
- keys: Fn.join(',', deploymentBucket.objectKeys),
55
+ keys: Fn.join(',', deployment.objectKeys),
45
56
  }),
46
57
  });
47
58
  }
@@ -54,12 +65,12 @@ const app = new cdk.App({
54
65
  });
55
66
  const testCase = new TestBucketDeployment(app, 'test-bucket-deployments-too-many-sources');
56
67
 
57
- const integTest = new integ.IntegTest(app, 'integ-test-bucket-deployments', {
68
+ const integTest = new integ.IntegTest(app, 'integ-test-bucket-deployment-big-response', {
58
69
  testCases: [testCase],
59
70
  diffAssets: true,
60
71
  });
61
72
 
62
- // Assert that DeployMeWithoutExtractingFilesOnDestination deploys a zip file to bucket4
73
+ // Assert that all files were successfully deployed
63
74
  for (let i = 0; i < numFiles; i++) {
64
75
  const apiCall = integTest.assertions.awsApiCall('S3', 'getObject', {
65
76
  Bucket: testCase.destinationBucket.bucketName,
@@ -73,7 +84,7 @@ for (let i = 0; i < numFiles; i++) {
73
84
  apiCall.assertAtPath('Body', ExpectedResult.stringLikeRegexp(`This is file number ${i + 1}`));
74
85
  }
75
86
 
76
- // Assert that there is no object keys returned from the custom resource
87
+ // Assert that objectKeys output is empty when outputObjectKeys is false
77
88
  const describe = integTest.assertions.awsApiCall('CloudFormation', 'describeStacks', {
78
89
  StackName: 'test-bucket-deployments-too-many-sources',
79
90
  });
@@ -1,27 +1,29 @@
1
1
  import * as path from 'path';
2
2
  import * as cloudfront from 'aws-cdk-lib/aws-cloudfront';
3
+ import * as origins from 'aws-cdk-lib/aws-cloudfront-origins';
3
4
  import * as s3 from 'aws-cdk-lib/aws-s3';
4
5
  import * as cdk from 'aws-cdk-lib';
5
6
  import * as s3deploy from 'aws-cdk-lib/aws-s3-deployment';
6
- import { IntegTest } from '@aws-cdk/integ-tests-alpha';
7
+ import * as integ from '@aws-cdk/integ-tests-alpha';
8
+ import { Construct } from 'constructs';
7
9
 
8
- class TestBucketDeployment extends cdk.Stack {
9
- constructor(scope: cdk.App, id: string) {
10
- super(scope, id);
10
+ /**
11
+ * Integration test for bucket deployment with CloudFront distribution invalidation:
12
+ * - Deploys files to S3 bucket behind CloudFront distribution
13
+ * - Tests that CloudFront cache invalidation works with bucket deployments
14
+ */
15
+ class TestBucketDeploymentCloudFront extends cdk.Stack {
16
+ constructor(scope: Construct, id: string, props?: cdk.StackProps) {
17
+ super(scope, id, props);
11
18
 
12
- const bucket = new s3.Bucket(this, 'Destination3', {
19
+ const bucket = new s3.Bucket(this, 'Destination', {
13
20
  removalPolicy: cdk.RemovalPolicy.DESTROY,
14
21
  autoDeleteObjects: true, // needed for integration test cleanup
15
22
  });
16
- const distribution = new cloudfront.CloudFrontWebDistribution(this, 'Distribution', {
17
- originConfigs: [
18
- {
19
- s3OriginSource: {
20
- s3BucketSource: bucket,
21
- },
22
- behaviors: [{ isDefaultBehavior: true }],
23
- },
24
- ],
23
+ const distribution = new cloudfront.Distribution(this, 'Distribution', {
24
+ defaultBehavior: {
25
+ origin: origins.S3BucketOrigin.withOriginAccessControl(bucket),
26
+ },
25
27
  });
26
28
 
27
29
  new s3deploy.BucketDeployment(this, 'DeployWithInvalidation', {
@@ -29,7 +31,7 @@ class TestBucketDeployment extends cdk.Stack {
29
31
  destinationBucket: bucket,
30
32
  distribution,
31
33
  distributionPaths: ['/images/*.png'],
32
- retainOnDelete: false, // default is true, which will block the integration test cleanup
34
+ retainOnDelete: false,
33
35
  });
34
36
  }
35
37
  }
@@ -41,10 +43,10 @@ const app = new cdk.App({
41
43
  },
42
44
  });
43
45
 
44
- const stack = new TestBucketDeployment(app, 'test-bucket-deployments-1');
46
+ const testCase = new TestBucketDeploymentCloudFront(app, 'test-bucket-deployment-cloudfront');
45
47
 
46
- new IntegTest(app, 'TestBucketDeploymentInteg', {
47
- testCases: [stack],
48
+ new integ.IntegTest(app, 'integ-test-bucket-deployment-cloudfront', {
49
+ testCases: [testCase],
48
50
  diffAssets: true,
49
51
  });
50
52
 
@@ -6,6 +6,12 @@ import * as integ from '@aws-cdk/integ-tests-alpha';
6
6
  import { ExpectedResult } from '@aws-cdk/integ-tests-alpha';
7
7
  import { Construct } from 'constructs';
8
8
 
9
+ /**
10
+ * Integration test for bucket deployment with cross-nested-stack references:
11
+ * - Tests that Source.jsonData() can use values from resources in nested stacks
12
+ * - Validates that cross-nested-stack token resolution works correctly
13
+ * - Tests token substitution across nested stack boundaries
14
+ */
9
15
  class ResourceNestedStack extends NestedStack {
10
16
  userPool: UserPool;
11
17
  constructor (scope: Construct, id: string, props: NestedStackProps = {}) {
@@ -23,7 +29,7 @@ class DeploymentNestedStack extends NestedStack {
23
29
  constructor (scope: Construct, id: string, props: DeploymentNestedStackProps) {
24
30
  super(scope, id, props);
25
31
  this.bucket = new Bucket(this, 'Bucket');
26
- new BucketDeployment(this, 'Deployment', {
32
+ new BucketDeployment(this, 'DeployWithCrossNestedStackSource', {
27
33
  destinationBucket: this.bucket,
28
34
  sources: [
29
35
  Source.jsonData('appconfig.json', { userPoolId: props.userPool.userPoolId }),
@@ -6,6 +6,11 @@ import { Construct } from 'constructs';
6
6
  import { BucketDeployment, Source } from 'aws-cdk-lib/aws-s3-deployment';
7
7
  import { Bucket } from 'aws-cdk-lib/aws-s3';
8
8
 
9
+ /**
10
+ * Integration test for bucket deployment with cross-stack references:
11
+ * - Tests that Source.data() can use values from resources in other stacks
12
+ * - Validates that cross-stack token resolution works correctly
13
+ */
9
14
  class Stack2 extends Stack {
10
15
  userPool: UserPool;
11
16
 
@@ -21,7 +26,7 @@ class Stack1 extends Stack {
21
26
  constructor (scope: Construct, id: string, props: { userPool: UserPool }) {
22
27
  super(scope, id);
23
28
  this.bucket = new Bucket(this, 'bucket');
24
- new BucketDeployment(this, 'XXXXXXXXXX', {
29
+ new BucketDeployment(this, 'DeployWithCrossStackSource', {
25
30
  destinationBucket: this.bucket,
26
31
  sources: [
27
32
  Source.data('test.txt', props.userPool.userPoolId),
@@ -5,6 +5,12 @@ import * as s3deploy from 'aws-cdk-lib/aws-s3-deployment';
5
5
  import * as ssm from 'aws-cdk-lib/aws-ssm';
6
6
  import * as integ from '@aws-cdk/integ-tests-alpha';
7
7
 
8
+ /**
9
+ * Integration test for bucket deployment with cross-stack SSM parameter references:
10
+ * - Tests that SSM StringListParameter tokens are resolved in Source.jsonData()
11
+ * - Validates cross-nested-stack parameter references work correctly
12
+ * - Tests that parameter values are properly serialized in JSON output
13
+ */
8
14
  class SsmStack extends cdk.NestedStack {
9
15
  public readonly ssmParam: ssm.StringListParameter;
10
16
 
@@ -38,7 +44,7 @@ class S3Stack extends cdk.NestedStack {
38
44
  autoDeleteObjects: true,
39
45
  });
40
46
 
41
- new s3deploy.BucketDeployment(this, 'ReproDeployment', {
47
+ new s3deploy.BucketDeployment(this, 'DeployWithSsmParameter', {
42
48
  sources: [
43
49
  s3deploy.Source.jsonData('config.json', {
44
50
  subnets: readParam.stringListValue,