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.
- cdk_api_mcp_server/__about__.py +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-amplify-alpha/README.md +12 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-bedrock-agentcore-alpha/README.md +1979 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-bedrock-alpha/README.md +946 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-eks-v2-alpha/README.md +160 -75
- cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-elasticache-alpha/README.md +421 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-glue-alpha/README.md +39 -9
- cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-imagebuilder-alpha/README.md +656 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-iot-alpha/README.md +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-lambda-go-alpha/README.md +102 -4
- cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-lambda-python-alpha/README.md +6 -6
- cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-msk-alpha/README.md +38 -8
- cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-s3tables-alpha/README.md +82 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/aws-sagemaker-alpha/README.md +32 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/@aws-cdk/mixins-preview/README.md +182 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/README.md/README.md +367 -17
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/README.md +34 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ.api-with-authorizer-and-proxy.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ.lambda-api.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ.lambda-permission-consolidation.ts +55 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigateway/integ.spec-restapi.ts +1 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/README.md +224 -60
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.api-dualstack.ts +3 -4
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.api.ts +5 -3
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.stage.ts +10 -7
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.usage-plan.ts +80 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-authorizers/integ.iam.ts +34 -38
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-authorizers/integ.lambda.ts +2 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-authorizers/integ.user-pool.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/README.md +35 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.add-subroute-integration.ts +7 -4
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.http-proxy.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.lambda-connect-disconnect-trigger.ts +2 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.lambda-permission-consolidation.ts +45 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.lambda-proxy.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.lambda.ts +4 -4
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/integ.sqs.ts +58 -71
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-appsync/integ.graphql-lambda-permission.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-appsync/integ.js-resolver.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-autoscaling/README.md +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-autoscaling/integ.asg-lt.ts +7 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-batch/README.md +49 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-batch/integ.ecs-exec-batch-job.ts +148 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-batch/integ.managed-compute-environment-default-instance-class.ts +20 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-certificatemanager/README.md +11 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudformation/integ.core-custom-resources-node-18.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudformation/integ.core-custom-resources-service-timeout.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudfront/README.md +292 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudfront-origins/README.md +83 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudfront-origins/integ.function-url-origin-ip-address-type.ts +84 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudfront-origins/integ.http-origin.ts +5 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudfront-origins/integ.origin-response-completion-timeout.ts +50 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudtrail/integ.cloudtrail-data-events-only.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/README.md +104 -12
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/integ.alarm-and-dashboard.ts +12 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/integ.anomaly-detection-alarm.ts +44 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/integ.dashboard-with-graphwidget-with-labels-visible.ts +92 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/integ.dashboard-with-metric-id-and-visible.ts +70 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cloudwatch/integ.search-expression.ts +51 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codebuild/README.md +143 -3
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codebuild/integ.project-docker-server.ts +44 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codebuild/integ.project-fleet-attribute-based-compute.ts +59 -7
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codebuild/integ.project-fleet-custom-instance-type.ts +130 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codebuild/integ.project-fleet-overflow-behavior.ts +61 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codebuild/integ.project-s3-cache.ts +71 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codebuild/integ.project-windows-image.ts +1 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-codepipeline-actions/integ.pipeline-elastic-beanstalk-deploy.ts +26 -17
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cognito/README.md +13 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-cognito/integ.user-pool-client-explicit-props.ts +1 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-docdb/README.md +24 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-docdb/integ.cluster-serverless.ts +34 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/README.md +225 -15
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/TABLE_V1_API.md +45 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb-v2.cci.ts +49 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb.add-to-resource-policy.ts +97 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb.cci.ts +27 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb.compound.ts +32 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb.contirubtor-insights-for-gsi.ts +6 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.dynamodb.policy.ts +21 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.table-v2-global.ts +9 -3
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.table-v2-mrsc.ts +31 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-dynamodb/integ.table-v2.compound.ts +43 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/README.md +28 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/integ.client-vpn-endpoint-disconnect-on-session-timeout.ts +65 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/integ.vpc-endpoint.lit.ts +6 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ec2/integ.vpc-flow-logs.ts +4 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecr/README.md +41 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecr/integ.tag-mutability-exclusion.ts +30 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecr-assets/README.md +4 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecr-assets/integ.assets-docker.ts +6 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/README.md +189 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.availability-zone-rebalancing.ts +14 -4
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.blue-green-deployment-strategy.ts +147 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.cluster-windows-server-ami.ts +5 -6
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.ebs-volume-initialization-rate.ts +80 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.enable-execute-command.ts +35 -29
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.exec-command.ts +16 -22
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.lb-awsvpc-nw.ts +26 -16
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.managedinstances-capacity-provider.ts +114 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.managedinstances-no-default-capacity-provider.ts +107 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.placement-strategies.ts +32 -8
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs/integ.pseudo-terminal.ts +18 -8
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs-patterns/README.md +2 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs-patterns/integ.alb-fargate-service-public-private-switch.ts +45 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-ecs-patterns/integ.alb-fargate-service-smart-defaults.ts +143 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/README.md +103 -83
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-al2023-nodegroup.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.eks-cluster-removal-policy.ts +31 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-eks/integ.fargate-cluster.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-elasticloadbalancingv2/README.md +55 -4
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-elasticloadbalancingv2/integ.alb-lambda-multi-value-headers.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-elasticloadbalancingv2/integ.alb-target-group-attributes.ts +45 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-elasticloadbalancingv2/integ.alb.oidc.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-elasticloadbalancingv2/integ.nlb-target-group-attributes.ts +45 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-elasticloadbalancingv2/integ.nlb.security-group.ts +70 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-elasticloadbalancingv2-actions/integ.cognito.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-events/README.md +41 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-events/integ.api-destination.ts +42 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-events/integ.archive-customer-managed-key.ts +23 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-events/integ.eventbus.ts +13 -3
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-events-targets/README.md +93 -4
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-events-targets/integ.firehose-delivery-stream.ts +51 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.custom-permissions-boundary-aspect.ts +50 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.managed-policy.ts +9 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-iam/integ.policy.ts +9 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesis/README.md +42 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesis/integ.stream-shard-level-monitoring.ts +47 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/README.md +159 -3
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/integ.cloudwatch-logs-processors.ts +45 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/integ.record-format-conversion-schema.ts +154 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/integ.record-format-conversion.ts +178 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-kinesisfirehose/integ.s3-bucket.lit.ts +1 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/README.md +41 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.binary-payload.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.lambda-policy-with-token-resolution.ts +46 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.logging-config.ts +8 -8
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.multi-tenancy.ts +24 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.params-and-secrets.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.runtime-management.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.runtime.fromasset.ts +19 -4
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda/integ.runtime.inlinecode.ts +11 -4
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-nodejs/README.md +3 -3
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-nodejs/integ.dependencies-bun-lock.ts +50 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-nodejs/integ.dependencies-pnpm.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-nodejs/integ.function-exclude-smithy-models.ts +2 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-lambda-nodejs/integ.nodejs.build.images.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/README.md +69 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.loggroup-transformer.ts +37 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.metricfilter-apply-on-transformed-logs.ts +29 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.save-logs-insights-query-definition.ts +7 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.subscriptionfilter.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.transformer.ts +27 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.ebs.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-opensearchservice/integ.opensearch.min.ts +1 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/README.md +72 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-cloudwatch-logs-exports.ts +56 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-data-api-to-imported-cluster.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-data-api.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-lookup.ts +100 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.instance-database-insights.ts +43 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.instance-lookup.ts +77 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.proxy-endpoint.ts +36 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53/README.md +68 -31
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53/integ.delete-existing-record-set.ts +0 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53/integ.private-hosted-zone-from-attributes.ts +41 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53/integ.route53.ts +51 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53/integ.zone-delegation-iam-stack.ts +66 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53-targets/integ.cloudfront-alias-target.ts +16 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-route53-targets/integ.elastic-beanstalk-hostedzoneid.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3/integ.bucket.notifications-scoped-permissions.ts +71 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-assets/integ.assets.bundling.docker-opts.ts +4 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/README.md +83 -4
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-big-response.ts +17 -6
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-cloudfront.ts +20 -18
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-cross-nested-stack-source.ts +64 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-cross-stack-source.ts +53 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-cross-stack-ssm-source.ts +97 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-data.ts +99 -59
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-deployed-bucket.ts +10 -4
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-large-file.ts +23 -12
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-loggroup.ts +7 -2
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-security-groups-efs.ts +77 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-security-groups-empty.ts +69 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-security-groups-multiple.ts +89 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-security-groups-single.ts +77 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-signcontent.ts +11 -7
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-substitution-with-destination-key.ts +15 -8
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-substitution-with-role.ts +29 -14
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-substitution.ts +16 -8
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-vpc-basic.ts +65 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-vpc-config.ts +66 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-vpc-custom-subnets.ts +66 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-vpc-efs.ts +66 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-vpc-security-groups.ts +72 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-vpc-subnet-selection.ts +70 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment.ts +47 -69
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-notifications/integ.bucket-notifications.ts +80 -42
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-secretsmanager/integ.secret.dynamic-reference-key.ts +38 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-signer/integ.signing-profile.ts +5 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-sns/README.md +2 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-sns-subscriptions/integ.sns-sqs-subscription-filter.ts +75 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-sns-subscriptions/integ.sns-sqs.ts +21 -40
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/integ.distributed-map-parallel.ts +82 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/integ.distributed-map-redrive.ts +130 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/integ.map-with-catch.ts +1 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions/integ.sm-jsonpath-with-distributed-map-jsonata.ts +105 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/README.md +75 -5
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.call-aws-service-cross-region-lambda.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.emr-create-cluster-with-ebs.ts +126 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.evaluate-expression-arm64.ts +27 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.evaluate-expression-default.ts +25 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.evaluate-expression-mixed-arch.ts +35 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.evaluate-expression-nodejs22.ts +27 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.evaluate-expression-x86.ts +27 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-stepfunctions-tasks/integ.invoke-json-path.ts +102 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-synthetics/README.md +84 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-synthetics/integ.canary-browser-type.ts +35 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-synthetics/integ.canary-resources-to-replicate-tags.ts +36 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-synthetics/integ.canary-retry.ts +32 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-synthetics/integ.canary-runtime-validation.ts +43 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-synthetics/integ.canary.ts +2 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cloudformation-include/integ.novalue-nonstring.ts +25 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/core/README.md +2 -1870
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/README.md +59 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.aws-custom-resource.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.custom-resource-config-lambda-node-runtime.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.external-id.ts +80 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/custom-resources/integ.invoke-function-payload.ts +1 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/FEATURE_FLAGS.md +152 -10
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/cx-api/README.md +55 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/interfaces/README.md +33 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/README.md +4 -0
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.newpipeline-reduce-stagerole-scope.ts +4 -1
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/pipelines/integ.pipeline-with-customsynthesizer.ts +105 -0
- {konokenj_cdk_api_mcp_server-0.31.0.dist-info → konokenj_cdk_api_mcp_server-0.57.0.dist-info}/METADATA +2 -2
- {konokenj_cdk_api_mcp_server-0.31.0.dist-info → konokenj_cdk_api_mcp_server-0.57.0.dist-info}/RECORD +240 -151
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-events-targets/integ.kinesis-firehose-stream.ts +0 -33
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-logs/integ.expose-metric-with-dimensions.ts +0 -47
- cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-s3-deployment/integ.bucket-deployment-signcontent.d.ts +0 -1
- {konokenj_cdk_api_mcp_server-0.31.0.dist-info → konokenj_cdk_api_mcp_server-0.57.0.dist-info}/WHEEL +0 -0
- {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
- {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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
2
2
|
import * as cdk from 'aws-cdk-lib';
|
|
3
|
-
import { ARecord, CaaAmazonRecord, CnameRecord, Continent, GeoLocation, PrivateHostedZone, PublicHostedZone, RecordTarget, TxtRecord } from 'aws-cdk-lib/aws-route53';
|
|
3
|
+
import { Alpn, ARecord, CaaAmazonRecord, CnameRecord, Continent, GeoLocation, HttpsRecord, HttpsRecordValue, PrivateHostedZone, PublicHostedZone, RecordTarget, SvcbRecord, SvcbRecordValue, TxtRecord } from 'aws-cdk-lib/aws-route53';
|
|
4
4
|
|
|
5
5
|
const app = new cdk.App();
|
|
6
6
|
|
|
@@ -92,6 +92,56 @@ new TxtRecord(stack, 'TXT', {
|
|
|
92
92
|
],
|
|
93
93
|
});
|
|
94
94
|
|
|
95
|
+
new SvcbRecord(stack, 'SVCB-AliasMode', {
|
|
96
|
+
zone: publicZone,
|
|
97
|
+
recordName: '_8080._svcb-alias',
|
|
98
|
+
values: [SvcbRecordValue.alias('service.example.com')],
|
|
99
|
+
});
|
|
100
|
+
new SvcbRecord(stack, 'SVCB-ServiceMode', {
|
|
101
|
+
zone: publicZone,
|
|
102
|
+
recordName: '_8080._svcb-service',
|
|
103
|
+
values: [SvcbRecordValue.service({ alpn: [Alpn.H3, Alpn.H2] })],
|
|
104
|
+
});
|
|
105
|
+
new SvcbRecord(stack, 'SVCB-ServiceMode-FullParams', {
|
|
106
|
+
zone: publicZone,
|
|
107
|
+
recordName: '_8080._svcb-service-fullparams',
|
|
108
|
+
values: [SvcbRecordValue.service({
|
|
109
|
+
priority: 2,
|
|
110
|
+
targetName: 'service.example.com',
|
|
111
|
+
mandatory: ['alpn'],
|
|
112
|
+
alpn: [Alpn.H3, Alpn.H2, Alpn.HTTP1_1, Alpn.of('h3-29')],
|
|
113
|
+
noDefaultAlpn: true,
|
|
114
|
+
port: 8443,
|
|
115
|
+
ipv4hint: ['127.0.0.1'],
|
|
116
|
+
ipv6hint: ['::1'],
|
|
117
|
+
})],
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
new HttpsRecord(stack, 'HTTPS-AliasMode', {
|
|
121
|
+
zone: publicZone,
|
|
122
|
+
recordName: 'https-alias',
|
|
123
|
+
values: [HttpsRecordValue.alias('service.example.com')],
|
|
124
|
+
});
|
|
125
|
+
new HttpsRecord(stack, 'HTTPS-ServiceMode', {
|
|
126
|
+
zone: publicZone,
|
|
127
|
+
recordName: 'https-service',
|
|
128
|
+
values: [HttpsRecordValue.service({ alpn: [Alpn.H3, Alpn.H2] })],
|
|
129
|
+
});
|
|
130
|
+
new HttpsRecord(stack, 'HTTPS-ServiceMode-FullParams', {
|
|
131
|
+
zone: publicZone,
|
|
132
|
+
recordName: 'https-service-fullparams',
|
|
133
|
+
values: [HttpsRecordValue.service({
|
|
134
|
+
priority: 2,
|
|
135
|
+
targetName: 'service.example.com',
|
|
136
|
+
mandatory: ['alpn'],
|
|
137
|
+
alpn: [Alpn.H3, Alpn.H2, Alpn.HTTP1_1, Alpn.of('h3-29')],
|
|
138
|
+
noDefaultAlpn: true,
|
|
139
|
+
port: 8443,
|
|
140
|
+
ipv4hint: ['127.0.0.1'],
|
|
141
|
+
ipv6hint: ['::1'],
|
|
142
|
+
})],
|
|
143
|
+
});
|
|
144
|
+
|
|
95
145
|
new cdk.CfnOutput(stack, 'PrivateZoneId', { value: privateZone.hostedZoneId });
|
|
96
146
|
new cdk.CfnOutput(stack, 'PublicZoneId', { value: publicZone.hostedZoneId });
|
|
97
147
|
|
|
@@ -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
|
+
});
|
|
@@ -3,6 +3,7 @@ import * as route53 from 'aws-cdk-lib/aws-route53';
|
|
|
3
3
|
import * as s3 from 'aws-cdk-lib/aws-s3';
|
|
4
4
|
import * as cdk from 'aws-cdk-lib';
|
|
5
5
|
import * as targets from 'aws-cdk-lib/aws-route53-targets';
|
|
6
|
+
import { IntegTest } from '@aws-cdk/integ-tests-alpha';
|
|
6
7
|
|
|
7
8
|
const app = new cdk.App();
|
|
8
9
|
|
|
@@ -31,4 +32,18 @@ new route53.ARecord(zone, 'Alias', {
|
|
|
31
32
|
target: route53.RecordTarget.fromAlias(new targets.CloudFrontTarget(distribution)),
|
|
32
33
|
});
|
|
33
34
|
|
|
34
|
-
|
|
35
|
+
new route53.AaaaRecord(zone, 'AaaaAlias', {
|
|
36
|
+
zone,
|
|
37
|
+
recordName: '_foo',
|
|
38
|
+
target: route53.RecordTarget.fromAlias(new targets.CloudFrontTarget(distribution)),
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
new route53.HttpsRecord(zone, 'HttpsAlias', {
|
|
42
|
+
zone,
|
|
43
|
+
recordName: '_foo',
|
|
44
|
+
target: route53.RecordTarget.fromAlias(new targets.CloudFrontTarget(distribution)),
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
new IntegTest(app, 'aws-cdk-route53-cloudfront-alias-integ-test', {
|
|
48
|
+
testCases: [stack],
|
|
49
|
+
});
|
|
@@ -6,7 +6,7 @@ import * as targets from 'aws-cdk-lib/aws-route53-targets';
|
|
|
6
6
|
import { IntegTest } from '@aws-cdk/integ-tests-alpha';
|
|
7
7
|
import * as elasticbeanstalk from 'aws-cdk-lib/aws-elasticbeanstalk';
|
|
8
8
|
import * as custom from 'aws-cdk-lib/custom-resources';
|
|
9
|
-
import { RegionInfo } from 'aws-cdk
|
|
9
|
+
import { RegionInfo } from '@aws-cdk/region-info';
|
|
10
10
|
|
|
11
11
|
const app = new App({
|
|
12
12
|
postCliContext: {
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import * as cdk from 'aws-cdk-lib';
|
|
3
|
+
import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
4
|
+
import * as s3 from 'aws-cdk-lib/aws-s3';
|
|
5
|
+
import * as sns from 'aws-cdk-lib/aws-sns';
|
|
6
|
+
import * as sqs from 'aws-cdk-lib/aws-sqs';
|
|
7
|
+
import * as s3n from 'aws-cdk-lib/aws-s3-notifications';
|
|
8
|
+
import { Match, Template } from 'aws-cdk-lib/assertions';
|
|
9
|
+
|
|
10
|
+
const app = new cdk.App();
|
|
11
|
+
|
|
12
|
+
const stack = new cdk.Stack(app, 'aws-cdk-s3-notifications-scoped-permissions');
|
|
13
|
+
|
|
14
|
+
// Create multiple buckets to test consolidated policy with scoped permissions
|
|
15
|
+
const bucket1 = new s3.Bucket(stack, 'Bucket1', {
|
|
16
|
+
removalPolicy: cdk.RemovalPolicy.DESTROY,
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
const bucket2 = new s3.Bucket(stack, 'Bucket2', {
|
|
20
|
+
removalPolicy: cdk.RemovalPolicy.DESTROY,
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
const topic = new sns.Topic(stack, 'Topic');
|
|
24
|
+
const queue = new sqs.Queue(stack, 'Queue', {
|
|
25
|
+
removalPolicy: cdk.RemovalPolicy.DESTROY,
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
// Add notifications to multiple buckets with different event types - this should create scoped IAM permissions
|
|
29
|
+
bucket1.addEventNotification(s3.EventType.OBJECT_CREATED_PUT, new s3n.SnsDestination(topic));
|
|
30
|
+
bucket1.addEventNotification(s3.EventType.OBJECT_CREATED_POST, new s3n.SqsDestination(queue));
|
|
31
|
+
bucket2.addEventNotification(s3.EventType.OBJECT_REMOVED_DELETE, new s3n.SnsDestination(topic));
|
|
32
|
+
bucket2.addEventNotification(s3.EventType.OBJECT_REMOVED_DELETE_MARKER_CREATED, new s3n.SnsDestination(topic));
|
|
33
|
+
|
|
34
|
+
// Create integration test with snapshot comparison enabled
|
|
35
|
+
new integ.IntegTest(app, 'ScopedPermissionsTest', {
|
|
36
|
+
testCases: [stack],
|
|
37
|
+
diffAssets: true,
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
// Add assertions to verify IAM policies are scoped to specific bucket ARNs
|
|
41
|
+
const template = Template.fromStack(stack);
|
|
42
|
+
|
|
43
|
+
// Verify that IAM policies do not contain wildcard permissions
|
|
44
|
+
template.hasResourceProperties('AWS::IAM::Policy', {
|
|
45
|
+
PolicyDocument: {
|
|
46
|
+
Statement: Match.arrayWith([
|
|
47
|
+
Match.objectLike({
|
|
48
|
+
Effect: 'Allow',
|
|
49
|
+
Action: 's3:PutBucketNotification',
|
|
50
|
+
Resource: Match.not('*'), // Ensure no wildcard permissions
|
|
51
|
+
}),
|
|
52
|
+
]),
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
// Verify that the IAM policy contains specific bucket ARNs
|
|
57
|
+
template.hasResourceProperties('AWS::IAM::Policy', {
|
|
58
|
+
PolicyDocument: {
|
|
59
|
+
Statement: Match.arrayWith([
|
|
60
|
+
Match.objectLike({
|
|
61
|
+
Effect: 'Allow',
|
|
62
|
+
Action: 's3:PutBucketNotification',
|
|
63
|
+
Resource: Match.arrayWith([
|
|
64
|
+
Match.objectLike({
|
|
65
|
+
'Fn::GetAtt': Match.arrayWith([Match.stringLikeRegexp('Bucket[12]'), 'Arn']),
|
|
66
|
+
}),
|
|
67
|
+
]),
|
|
68
|
+
}),
|
|
69
|
+
]),
|
|
70
|
+
},
|
|
71
|
+
});
|
|
@@ -9,7 +9,10 @@ const stack = new Stack(app, 'cdk-integ-assets-bundling-docker-opts');
|
|
|
9
9
|
new assets.Asset(stack, 'BundledAsset', {
|
|
10
10
|
path: path.join(__dirname, 'markdown-asset'), // /asset-input and working directory in the container
|
|
11
11
|
bundling: {
|
|
12
|
-
|
|
12
|
+
// Build an image
|
|
13
|
+
image: DockerImage.fromBuild(path.join(__dirname, 'alpine-markdown'), {
|
|
14
|
+
platform: 'linux/amd64',
|
|
15
|
+
}),
|
|
13
16
|
command: [
|
|
14
17
|
'sh', '-c', `
|
|
15
18
|
markdown index.md > /asset-output/index.html
|
|
@@ -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
|
|
@@ -325,6 +324,24 @@ new s3deploy.BucketDeployment(this, 'DeployWithInvalidation', {
|
|
|
325
324
|
});
|
|
326
325
|
```
|
|
327
326
|
|
|
327
|
+
By default, the deployment will wait for invalidation to succeed to complete. This will poll Cloudfront for a maximum of 13 minutes to check for a successful invalidation. The drawback to this is that the deployment will fail if invalidation fails or if it takes longer than 13 minutes. As a workaround, there is the option `waitForDistributionInvalidation`, which can be set to false to skip waiting for the invalidation, but this can be risky as invalidation errors will not be reported.
|
|
328
|
+
|
|
329
|
+
```ts
|
|
330
|
+
import * as cloudfront from 'aws-cdk-lib/aws-cloudfront';
|
|
331
|
+
|
|
332
|
+
declare const bucket: s3.IBucket;
|
|
333
|
+
declare const distribution: cloudfront.IDistribution;
|
|
334
|
+
|
|
335
|
+
new s3deploy.BucketDeployment(this, 'DeployWithInvalidation', {
|
|
336
|
+
sources: [s3deploy.Source.asset('./website-dist')],
|
|
337
|
+
destinationBucket: bucket,
|
|
338
|
+
distribution,
|
|
339
|
+
distributionPaths: ['/images/*.png'],
|
|
340
|
+
// Invalidate cache but don't wait or verify that invalidation has completed successfully.
|
|
341
|
+
waitForDistributionInvalidation: false
|
|
342
|
+
});
|
|
343
|
+
```
|
|
344
|
+
|
|
328
345
|
## Signed Content Payloads
|
|
329
346
|
|
|
330
347
|
By default, deployment uses streaming uploads which set the `x-amz-content-sha256`
|
|
@@ -357,6 +374,7 @@ resource handler.
|
|
|
357
374
|
> of memory and storage size.
|
|
358
375
|
|
|
359
376
|
## JSON-Aware Source Processing
|
|
377
|
+
|
|
360
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.).
|
|
361
379
|
|
|
362
380
|
```ts
|
|
@@ -444,7 +462,7 @@ to make from placeholders in a local file which will be resolved during deployme
|
|
|
444
462
|
is especially useful in situations like creating an API from a spec file, where users might
|
|
445
463
|
want to reference other CDK resources they have created.
|
|
446
464
|
|
|
447
|
-
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
|
|
448
466
|
specify the substitutions in CDK like this:
|
|
449
467
|
|
|
450
468
|
```ts
|
|
@@ -468,7 +486,7 @@ new s3deploy.DeployTimeSubstitutedFile(this, 'MyFile', {
|
|
|
468
486
|
```
|
|
469
487
|
|
|
470
488
|
Nested variables, like `{{ {{ foo }} }}` or `{{ foo {{ bar }} }}`, are not supported by this
|
|
471
|
-
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
|
|
472
490
|
the `{{ foo }}` would be replaced by the substitution, and the extra brackets would remain in the file.
|
|
473
491
|
In the second case of two nexted variables `{{ foo {{ bar }} }}`, only the `{{ bar }}` would be replaced
|
|
474
492
|
in the file.
|
|
@@ -515,6 +533,67 @@ new cdk.CfnOutput(this, 'ObjectKey', {
|
|
|
515
533
|
});
|
|
516
534
|
```
|
|
517
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
|
+
|
|
518
597
|
## Notes
|
|
519
598
|
|
|
520
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
|
|
45
|
+
const deployment = new s3deploy.BucketDeployment(this, 'DeployWithManySources', {
|
|
35
46
|
sources: sources,
|
|
36
47
|
destinationBucket: this.destinationBucket,
|
|
37
48
|
memoryLimit: 2048,
|
|
38
|
-
retainOnDelete: false,
|
|
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(',',
|
|
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-
|
|
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
|
|
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
|
|
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
|
|
7
|
+
import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
8
|
+
import { Construct } from 'constructs';
|
|
7
9
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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, '
|
|
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.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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,
|
|
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
|
|
46
|
+
const testCase = new TestBucketDeploymentCloudFront(app, 'test-bucket-deployment-cloudfront');
|
|
45
47
|
|
|
46
|
-
new IntegTest(app, '
|
|
47
|
-
testCases: [
|
|
48
|
+
new integ.IntegTest(app, 'integ-test-bucket-deployment-cloudfront', {
|
|
49
|
+
testCases: [testCase],
|
|
48
50
|
diffAssets: true,
|
|
49
51
|
});
|
|
50
52
|
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { App, Stack, NestedStack, StackProps, NestedStackProps } from 'aws-cdk-lib';
|
|
2
|
+
import { UserPool, IUserPool } from 'aws-cdk-lib/aws-cognito';
|
|
3
|
+
import { BucketDeployment, Source } from 'aws-cdk-lib/aws-s3-deployment';
|
|
4
|
+
import { Bucket } from 'aws-cdk-lib/aws-s3';
|
|
5
|
+
import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
6
|
+
import { ExpectedResult } from '@aws-cdk/integ-tests-alpha';
|
|
7
|
+
import { Construct } from 'constructs';
|
|
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
|
+
*/
|
|
15
|
+
class ResourceNestedStack extends NestedStack {
|
|
16
|
+
userPool: UserPool;
|
|
17
|
+
constructor (scope: Construct, id: string, props: NestedStackProps = {}) {
|
|
18
|
+
super(scope, id, props);
|
|
19
|
+
this.userPool = new UserPool(this, 'UserPool');
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
interface DeploymentNestedStackProps extends NestedStackProps {
|
|
24
|
+
userPool: IUserPool;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
class DeploymentNestedStack extends NestedStack {
|
|
28
|
+
bucket: Bucket;
|
|
29
|
+
constructor (scope: Construct, id: string, props: DeploymentNestedStackProps) {
|
|
30
|
+
super(scope, id, props);
|
|
31
|
+
this.bucket = new Bucket(this, 'Bucket');
|
|
32
|
+
new BucketDeployment(this, 'DeployWithCrossNestedStackSource', {
|
|
33
|
+
destinationBucket: this.bucket,
|
|
34
|
+
sources: [
|
|
35
|
+
Source.jsonData('appconfig.json', { userPoolId: props.userPool.userPoolId }),
|
|
36
|
+
],
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
class MainStack extends Stack {
|
|
42
|
+
resourceNestedStack: ResourceNestedStack;
|
|
43
|
+
deploymentNestedStack: DeploymentNestedStack;
|
|
44
|
+
|
|
45
|
+
constructor (scope: Construct, id: string, props: StackProps = {}) {
|
|
46
|
+
super(scope, id, props);
|
|
47
|
+
this.resourceNestedStack = new ResourceNestedStack(this, 'ResourceNestedStack');
|
|
48
|
+
this.deploymentNestedStack = new DeploymentNestedStack(this, 'DeploymentNestedStack', { userPool: this.resourceNestedStack.userPool });
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const app = new App();
|
|
53
|
+
const stack = new MainStack(app, 'MainStack');
|
|
54
|
+
|
|
55
|
+
const integTest = new integ.IntegTest(app, 'integ-cross-nested-stack-source', {
|
|
56
|
+
testCases: [stack],
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
integTest.assertions.awsApiCall('S3', 'getObject', {
|
|
60
|
+
Bucket: stack.deploymentNestedStack.bucket.bucketName,
|
|
61
|
+
Key: 'appconfig.json',
|
|
62
|
+
}).expect(ExpectedResult.objectLike({
|
|
63
|
+
Body: JSON.stringify({ userPoolId: stack.resourceNestedStack.userPool.userPoolId }),
|
|
64
|
+
}));
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { App, Stack, StackProps } from 'aws-cdk-lib';
|
|
2
|
+
import { UserPool } from 'aws-cdk-lib/aws-cognito';
|
|
3
|
+
import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
4
|
+
import { ExpectedResult } from '@aws-cdk/integ-tests-alpha';
|
|
5
|
+
import { Construct } from 'constructs';
|
|
6
|
+
import { BucketDeployment, Source } from 'aws-cdk-lib/aws-s3-deployment';
|
|
7
|
+
import { Bucket } from 'aws-cdk-lib/aws-s3';
|
|
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
|
+
*/
|
|
14
|
+
class Stack2 extends Stack {
|
|
15
|
+
userPool: UserPool;
|
|
16
|
+
|
|
17
|
+
constructor (scope: Construct, id: string, props: StackProps = {}) {
|
|
18
|
+
super(scope, id, props);
|
|
19
|
+
this.userPool = new UserPool(this, 'userpool');
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
class Stack1 extends Stack {
|
|
24
|
+
bucket: Bucket;
|
|
25
|
+
|
|
26
|
+
constructor (scope: Construct, id: string, props: { userPool: UserPool }) {
|
|
27
|
+
super(scope, id);
|
|
28
|
+
this.bucket = new Bucket(this, 'bucket');
|
|
29
|
+
new BucketDeployment(this, 'DeployWithCrossStackSource', {
|
|
30
|
+
destinationBucket: this.bucket,
|
|
31
|
+
sources: [
|
|
32
|
+
Source.data('test.txt', props.userPool.userPoolId),
|
|
33
|
+
],
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const app = new App();
|
|
39
|
+
const stack2 = new Stack2(app, 'stack2');
|
|
40
|
+
const stack1 = new Stack1(app, 'stack1', { userPool: stack2.userPool });
|
|
41
|
+
|
|
42
|
+
const integTest = new integ.IntegTest(app, 'integ-cross-stack-source', {
|
|
43
|
+
testCases: [
|
|
44
|
+
stack1,
|
|
45
|
+
],
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
integTest.assertions.awsApiCall('S3', 'getObject', {
|
|
49
|
+
Bucket: stack1.bucket.bucketName,
|
|
50
|
+
Key: 'test.txt',
|
|
51
|
+
}).expect(ExpectedResult.objectLike({
|
|
52
|
+
Body: stack2.userPool.userPoolId,
|
|
53
|
+
}));
|