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
|
@@ -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
|
|
@@ -418,6 +418,24 @@ To apply changes of the cluster, such as engine version, in the next scheduled m
|
|
|
418
418
|
|
|
419
419
|
For details, see [Modifying an Amazon Aurora DB cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Modifying.html).
|
|
420
420
|
|
|
421
|
+
### Retaining Automated Backups
|
|
422
|
+
|
|
423
|
+
By default, when a database cluster is deleted, automated backups are removed immediately unless an AWS Backup policy specifies a point-in-time restore rule. You can control this behavior using the `deleteAutomatedBackups` property:
|
|
424
|
+
|
|
425
|
+
```ts
|
|
426
|
+
declare const vpc: ec2.IVpc;
|
|
427
|
+
// Retain automated backups after cluster deletion
|
|
428
|
+
new rds.DatabaseCluster(this, 'Database', {
|
|
429
|
+
engine: rds.DatabaseClusterEngine.auroraMysql({ version: rds.AuroraMysqlEngineVersion.VER_3_01_0 }),
|
|
430
|
+
writer: rds.ClusterInstance.provisioned('writer'),
|
|
431
|
+
vpc,
|
|
432
|
+
deleteAutomatedBackups: false,
|
|
433
|
+
});
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
When set to `false`, automated backups are retained according to the configured retention period after the cluster is deleted. When set to `true` or not specified (default), automated backups are deleted immediately when the cluster is deleted.
|
|
437
|
+
Detail about this feature can be found in the [AWS documentation](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Managing.Backups.Retaining.html).
|
|
438
|
+
|
|
421
439
|
### Migrating from instanceProps
|
|
422
440
|
|
|
423
441
|
Creating instances in a `DatabaseCluster` using `instanceProps` & `instances` is
|
|
@@ -1148,6 +1166,26 @@ const proxy = dbInstance.addProxy('proxy', {
|
|
|
1148
1166
|
});
|
|
1149
1167
|
```
|
|
1150
1168
|
|
|
1169
|
+
### Proxy Endpoint
|
|
1170
|
+
The following example add additional endpoint to RDS Proxy.
|
|
1171
|
+
|
|
1172
|
+
```ts
|
|
1173
|
+
declare const vpc: ec2.Vpc;
|
|
1174
|
+
declare const secrets: secretsmanager.Secret[];
|
|
1175
|
+
declare const dbInstance: rds.DatabaseInstance;
|
|
1176
|
+
|
|
1177
|
+
const proxy = dbInstance.addProxy('Proxy', {
|
|
1178
|
+
secrets,
|
|
1179
|
+
vpc,
|
|
1180
|
+
});
|
|
1181
|
+
|
|
1182
|
+
// Add a reader endpoint
|
|
1183
|
+
proxy.addEndpoint('ProxyEndpoint', {
|
|
1184
|
+
vpc,
|
|
1185
|
+
targetRole: rds.ProxyEndpointTargetRole.READ_ONLY,
|
|
1186
|
+
});
|
|
1187
|
+
```
|
|
1188
|
+
|
|
1151
1189
|
## Exporting Logs
|
|
1152
1190
|
|
|
1153
1191
|
You can publish database logs to Amazon CloudWatch Logs. With CloudWatch Logs, you can perform real-time analysis of the log data,
|
|
@@ -1166,7 +1204,7 @@ const cluster = new rds.DatabaseCluster(this, 'Database', {
|
|
|
1166
1204
|
}),
|
|
1167
1205
|
writer: rds.ClusterInstance.provisioned('writer'),
|
|
1168
1206
|
vpc,
|
|
1169
|
-
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
|
|
1170
1208
|
cloudwatchLogsRetention: logs.RetentionDays.THREE_MONTHS, // Optional - default is to never expire logs
|
|
1171
1209
|
cloudwatchLogsRetentionRole: myLogsPublishingRole, // Optional - a role will be created if not provided
|
|
1172
1210
|
// ...
|
|
@@ -1514,7 +1552,20 @@ new rds.DatabaseCluster(this, 'Database', {
|
|
|
1514
1552
|
});
|
|
1515
1553
|
```
|
|
1516
1554
|
|
|
1517
|
-
|
|
1555
|
+
Database Insights is also supported for RDS instances:
|
|
1556
|
+
|
|
1557
|
+
```ts
|
|
1558
|
+
declare const vpc: ec2.Vpc;
|
|
1559
|
+
new rds.DatabaseInstance(this, 'PostgresInstance', {
|
|
1560
|
+
engine: rds.DatabaseInstanceEngine.postgres({ version: rds.PostgresEngineVersion.VER_17_5 }),
|
|
1561
|
+
instanceType: ec2.InstanceType.of(ec2.InstanceClass.R5, ec2.InstanceSize.LARGE),
|
|
1562
|
+
vpc,
|
|
1563
|
+
// If you enable the advanced mode of Database Insights,
|
|
1564
|
+
// Performance Insights is enabled and you must set the `performanceInsightRetention` to 465(15 months).
|
|
1565
|
+
databaseInsightsMode: rds.DatabaseInsightsMode.ADVANCED,
|
|
1566
|
+
performanceInsightRetention: rds.PerformanceInsightRetention.MONTHS_15,
|
|
1567
|
+
});
|
|
1568
|
+
```
|
|
1518
1569
|
|
|
1519
1570
|
> Visit [CloudWatch Database Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Database-Insights.html) for more details.
|
|
1520
1571
|
|
|
@@ -1605,6 +1656,25 @@ const dbFromLookup = rds.DatabaseInstance.fromLookup(this, 'dbFromLookup', {
|
|
|
1605
1656
|
dbFromLookup.grantConnect(myUserRole, 'my-user-id');
|
|
1606
1657
|
```
|
|
1607
1658
|
|
|
1659
|
+
## Importing existing DatabaseCluster
|
|
1660
|
+
|
|
1661
|
+
### Lookup DatabaseCluster by clusterIdentifier
|
|
1662
|
+
|
|
1663
|
+
You can lookup an existing DatabaseCluster by its clusterIdentifier using `DatabaseCluster.fromLookup()`. This method returns an `IDatabaseCluster`.
|
|
1664
|
+
|
|
1665
|
+
Here's how `DatabaseCluster.fromLookup()` can be used:
|
|
1666
|
+
|
|
1667
|
+
```ts
|
|
1668
|
+
declare const myUserRole: iam.Role;
|
|
1669
|
+
|
|
1670
|
+
const clusterFromLookup = rds.DatabaseCluster.fromLookup(this, 'ClusterFromLookup', {
|
|
1671
|
+
clusterIdentifier: 'my-cluster-id',
|
|
1672
|
+
});
|
|
1673
|
+
|
|
1674
|
+
// Grant a connection
|
|
1675
|
+
clusterFromLookup.grantConnect(myUserRole, 'my-user-id');
|
|
1676
|
+
```
|
|
1677
|
+
|
|
1608
1678
|
## Limitless Database Cluster
|
|
1609
1679
|
|
|
1610
1680
|
Amazon Aurora [PostgreSQL Limitless Database](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/limitless.html) provides automated horizontal scaling to process millions of write transactions per second and manages petabytes of data while maintaining the simplicity of operating inside a single database.
|
|
@@ -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.
|
|
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
|
});
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-rds/integ.cluster-data-api.ts
CHANGED
|
@@ -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.
|
|
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
|
});
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { IntegTest } from '@aws-cdk/integ-tests-alpha';
|
|
2
|
+
import { App, CfnOutput, Stack } from 'aws-cdk-lib';
|
|
3
|
+
import * as cloudwatch from 'aws-cdk-lib/aws-cloudwatch';
|
|
4
|
+
import * as iam from 'aws-cdk-lib/aws-iam';
|
|
5
|
+
import * as rds from 'aws-cdk-lib/aws-rds';
|
|
6
|
+
|
|
7
|
+
const app = new App();
|
|
8
|
+
const clusterIdentifier = 'test-cluster-lookup';
|
|
9
|
+
|
|
10
|
+
const stackLookup = new Stack(app, 'aws-cdk-rds-cluster-lookup', {
|
|
11
|
+
env: {
|
|
12
|
+
account: process.env.CDK_INTEG_ACCOUNT ?? process.env.CDK_DEFAULT_ACCOUNT,
|
|
13
|
+
region: process.env.CDK_INTEG_REGION ?? process.env.CDK_DEFAULT_REGION,
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
// Lookup the existing cluster created by the preDeploy hook
|
|
18
|
+
const lookedUpCluster = rds.DatabaseCluster.fromLookup(stackLookup, 'LookedUpCluster', {
|
|
19
|
+
clusterIdentifier,
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
new CfnOutput(stackLookup, 'LookedUpClusterEndpoint', {
|
|
23
|
+
value: lookedUpCluster.clusterEndpoint.socketAddress,
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
new CfnOutput(stackLookup, 'LookedUpClusterReadEndpoint', {
|
|
27
|
+
value: lookedUpCluster.clusterReadEndpoint.socketAddress,
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
new CfnOutput(stackLookup, 'LookedUpClusterIdentifier', {
|
|
31
|
+
value: lookedUpCluster.clusterIdentifier,
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
new CfnOutput(stackLookup, 'LookedUpClusterResourceIdentifier', {
|
|
35
|
+
value: lookedUpCluster.clusterResourceIdentifier,
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
new CfnOutput(stackLookup, 'LookedUpClusterArn', {
|
|
39
|
+
value: lookedUpCluster.clusterArn,
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
new CfnOutput(stackLookup, 'SecurityGroupIds', {
|
|
43
|
+
value: lookedUpCluster.connections.securityGroups.map(sg => sg.securityGroupId).join(','),
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
// test grant
|
|
47
|
+
const dbAccessRole = new iam.Role(stackLookup, 'DbAccessRole', {
|
|
48
|
+
assumedBy: new iam.ServicePrincipal('ec2.amazonaws.com'),
|
|
49
|
+
description: 'Role for accessing the Aurora cluster via IAM authentication',
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
lookedUpCluster.grantConnect(dbAccessRole, 'admin');
|
|
53
|
+
lookedUpCluster.grantDataApiAccess(dbAccessRole);
|
|
54
|
+
|
|
55
|
+
// test metric
|
|
56
|
+
lookedUpCluster.metricDatabaseConnections().createAlarm(stackLookup, 'HighConnectionsAlarm', {
|
|
57
|
+
threshold: 100,
|
|
58
|
+
evaluationPeriods: 3,
|
|
59
|
+
alarmDescription: 'Database has high number of connections',
|
|
60
|
+
comparisonOperator: cloudwatch.ComparisonOperator.GREATER_THAN_THRESHOLD,
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
lookedUpCluster.metricCPUUtilization().createAlarm(stackLookup, 'HighCPUAlarm', {
|
|
64
|
+
threshold: 90,
|
|
65
|
+
evaluationPeriods: 3,
|
|
66
|
+
alarmDescription: 'Database CPU utilization is high',
|
|
67
|
+
comparisonOperator: cloudwatch.ComparisonOperator.GREATER_THAN_THRESHOLD,
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
lookedUpCluster.metricFreeableMemory().createAlarm(stackLookup, 'LowMemoryAlarm', {
|
|
71
|
+
threshold: 100 * 1024 * 1024,
|
|
72
|
+
evaluationPeriods: 3,
|
|
73
|
+
alarmDescription: 'Database is running low on memory',
|
|
74
|
+
comparisonOperator: cloudwatch.ComparisonOperator.LESS_THAN_THRESHOLD,
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
lookedUpCluster.metricDeadlocks().createAlarm(stackLookup, 'DeadlockAlarm', {
|
|
78
|
+
threshold: 5,
|
|
79
|
+
evaluationPeriods: 2,
|
|
80
|
+
alarmDescription: 'Database has deadlocks',
|
|
81
|
+
comparisonOperator: cloudwatch.ComparisonOperator.GREATER_THAN_THRESHOLD,
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
new IntegTest(app, 'integ-rds-cluster-from-lookup', {
|
|
85
|
+
testCases: [stackLookup],
|
|
86
|
+
enableLookups: true,
|
|
87
|
+
stackUpdateWorkflow: false,
|
|
88
|
+
// Create Aurora cluster before the test and delete it after
|
|
89
|
+
hooks: {
|
|
90
|
+
preDeploy: [
|
|
91
|
+
`aws rds create-db-cluster --db-cluster-identifier ${clusterIdentifier} --engine aurora-mysql --engine-version 8.0.mysql_aurora.3.09.0 --master-username admin --master-user-password Admin1234 --enable-http-endpoint --enable-iam-database-authentication --region us-east-1`,
|
|
92
|
+
`aws rds create-db-instance --db-instance-identifier ${clusterIdentifier}-instance --db-cluster-identifier ${clusterIdentifier} --engine aurora-mysql --db-instance-class db.r5.large --region us-east-1`,
|
|
93
|
+
`aws rds wait db-instance-available --db-instance-identifier ${clusterIdentifier}-instance --region us-east-1`,
|
|
94
|
+
],
|
|
95
|
+
postDeploy: [
|
|
96
|
+
`aws rds delete-db-instance --db-instance-identifier ${clusterIdentifier}-instance --skip-final-snapshot --region us-east-1`,
|
|
97
|
+
`aws rds delete-db-cluster --db-cluster-identifier ${clusterIdentifier} --skip-final-snapshot --region us-east-1`,
|
|
98
|
+
],
|
|
99
|
+
},
|
|
100
|
+
});
|
|
@@ -63,6 +63,7 @@ class TestStack extends cdk.Stack {
|
|
|
63
63
|
parameterGroup: params,
|
|
64
64
|
storageEncryptionKey: kmsKey,
|
|
65
65
|
autoMinorVersionUpgrade: false,
|
|
66
|
+
deleteAutomatedBackups: false,
|
|
66
67
|
});
|
|
67
68
|
|
|
68
69
|
cluster.connections.allowDefaultPortFromAnyIpv4('Open to the world');
|
|
@@ -100,4 +101,3 @@ const stackWithFeatureFlag = new TestStack(appWithFeatureFlag, 'aws-cdk-rds-inte
|
|
|
100
101
|
new IntegTest(appWithFeatureFlag, 'test-rds-cluster-with-feature-flag', {
|
|
101
102
|
testCases: [stackWithFeatureFlag],
|
|
102
103
|
});
|
|
103
|
-
appWithFeatureFlag.synth();
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
2
|
+
import * as cdk from 'aws-cdk-lib';
|
|
3
|
+
import {
|
|
4
|
+
DatabaseInstance,
|
|
5
|
+
DatabaseInsightsMode,
|
|
6
|
+
PerformanceInsightRetention,
|
|
7
|
+
PostgresEngineVersion,
|
|
8
|
+
DatabaseInstanceEngine,
|
|
9
|
+
} from 'aws-cdk-lib/aws-rds';
|
|
10
|
+
import { IntegTest } from '@aws-cdk/integ-tests-alpha';
|
|
11
|
+
|
|
12
|
+
class TestStack extends cdk.Stack {
|
|
13
|
+
constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
|
|
14
|
+
super(scope, id, props);
|
|
15
|
+
|
|
16
|
+
const vpc = new ec2.Vpc(this, 'VPC', { maxAzs: 2, restrictDefaultSecurityGroup: false });
|
|
17
|
+
|
|
18
|
+
new DatabaseInstance(this, 'PostgresInstanceAdvanced', {
|
|
19
|
+
engine: DatabaseInstanceEngine.postgres({ version: PostgresEngineVersion.VER_16_9 }),
|
|
20
|
+
instanceType: ec2.InstanceType.of(ec2.InstanceClass.R5, ec2.InstanceSize.LARGE),
|
|
21
|
+
vpc,
|
|
22
|
+
allocatedStorage: 100,
|
|
23
|
+
databaseInsightsMode: DatabaseInsightsMode.ADVANCED,
|
|
24
|
+
performanceInsightRetention: PerformanceInsightRetention.MONTHS_15,
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
new DatabaseInstance(this, 'PostgresInstanceStandard', {
|
|
28
|
+
engine: DatabaseInstanceEngine.postgres({ version: PostgresEngineVersion.VER_16_9 }),
|
|
29
|
+
instanceType: ec2.InstanceType.of(ec2.InstanceClass.R5, ec2.InstanceSize.LARGE),
|
|
30
|
+
vpc,
|
|
31
|
+
allocatedStorage: 100,
|
|
32
|
+
databaseInsightsMode: DatabaseInsightsMode.STANDARD,
|
|
33
|
+
enablePerformanceInsights: true,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const app = new cdk.App();
|
|
39
|
+
const stack = new TestStack(app, 'aws-cdk-rds-integ-instance-database-insights');
|
|
40
|
+
|
|
41
|
+
new IntegTest(app, 'integ-instance-database-insights', {
|
|
42
|
+
testCases: [stack],
|
|
43
|
+
});
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { IntegTest } from '@aws-cdk/integ-tests-alpha';
|
|
2
|
+
import { App, CfnOutput, Stack } from 'aws-cdk-lib';
|
|
3
|
+
import * as cloudwatch from 'aws-cdk-lib/aws-cloudwatch';
|
|
4
|
+
import * as iam from 'aws-cdk-lib/aws-iam';
|
|
5
|
+
import * as rds from 'aws-cdk-lib/aws-rds';
|
|
6
|
+
|
|
7
|
+
const app = new App();
|
|
8
|
+
const instanceIdentifier = 'test-instance-lookup';
|
|
9
|
+
|
|
10
|
+
const stackLookup = new Stack(app, 'aws-cdk-rds-instance-lookup', {
|
|
11
|
+
env: {
|
|
12
|
+
account: process.env.CDK_INTEG_ACCOUNT ?? process.env.CDK_DEFAULT_ACCOUNT,
|
|
13
|
+
region: process.env.CDK_INTEG_REGION ?? process.env.CDK_DEFAULT_REGION,
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
const lookedUpInstance = rds.DatabaseInstance.fromLookup(stackLookup, 'LookedUpInstance', {
|
|
18
|
+
instanceIdentifier,
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
new CfnOutput(stackLookup, 'LookedUpInstanceEndpoint', {
|
|
22
|
+
value: lookedUpInstance.instanceEndpoint.socketAddress,
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
new CfnOutput(stackLookup, 'LookedUpInstanceIdentifier', {
|
|
26
|
+
value: lookedUpInstance.instanceIdentifier,
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
new CfnOutput(stackLookup, 'LookedUpInstanceResourceIdentifier', {
|
|
30
|
+
value: lookedUpInstance.instanceResourceId ?? 'undefined',
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
new CfnOutput(stackLookup, 'LookedUpInstanceArn', {
|
|
34
|
+
value: lookedUpInstance.instanceArn,
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
new CfnOutput(stackLookup, 'SecurityGroupIds', {
|
|
38
|
+
value: lookedUpInstance.connections.securityGroups.map(sg => sg.securityGroupId).join(','),
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
// test grant
|
|
42
|
+
const dbAccessRole = new iam.Role(stackLookup, 'DbAccessRole', {
|
|
43
|
+
assumedBy: new iam.ServicePrincipal('ec2.amazonaws.com'),
|
|
44
|
+
description: 'Role for accessing the RDS instance via IAM authentication',
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
lookedUpInstance.grantConnect(dbAccessRole, 'admin');
|
|
48
|
+
|
|
49
|
+
// test metric
|
|
50
|
+
lookedUpInstance.metricCPUUtilization().createAlarm(stackLookup, 'HighCPUAlarm', {
|
|
51
|
+
threshold: 90,
|
|
52
|
+
evaluationPeriods: 3,
|
|
53
|
+
alarmDescription: 'Database CPU utilization is high',
|
|
54
|
+
comparisonOperator: cloudwatch.ComparisonOperator.GREATER_THAN_THRESHOLD,
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
lookedUpInstance.metricFreeableMemory().createAlarm(stackLookup, 'LowMemoryAlarm', {
|
|
58
|
+
threshold: 100 * 1024 * 1024,
|
|
59
|
+
evaluationPeriods: 3,
|
|
60
|
+
alarmDescription: 'Database is running low on memory',
|
|
61
|
+
comparisonOperator: cloudwatch.ComparisonOperator.LESS_THAN_THRESHOLD,
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
new IntegTest(app, 'integ-rds-instance-from-lookup', {
|
|
65
|
+
testCases: [stackLookup],
|
|
66
|
+
enableLookups: true,
|
|
67
|
+
stackUpdateWorkflow: false,
|
|
68
|
+
hooks: {
|
|
69
|
+
preDeploy: [
|
|
70
|
+
`aws rds create-db-instance --db-instance-identifier ${instanceIdentifier} --engine mysql --engine-version 8.0.42 --master-username admin --master-user-password Admin1234 --allocated-storage 20 --db-instance-class db.t3.micro --enable-iam-database-authentication`,
|
|
71
|
+
`aws rds wait db-instance-available --db-instance-identifier ${instanceIdentifier}`,
|
|
72
|
+
],
|
|
73
|
+
postDeploy: [
|
|
74
|
+
`aws rds delete-db-instance --db-instance-identifier ${instanceIdentifier} --skip-final-snapshot`,
|
|
75
|
+
],
|
|
76
|
+
},
|
|
77
|
+
});
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
2
|
+
import { App, RemovalPolicy, Stack } from 'aws-cdk-lib';
|
|
3
|
+
import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
4
|
+
import * as rds from 'aws-cdk-lib/aws-rds';
|
|
5
|
+
|
|
6
|
+
const app = new App();
|
|
7
|
+
const stack = new Stack(app, 'cdk-rds-proxy-endpoint');
|
|
8
|
+
|
|
9
|
+
const vpc = new ec2.Vpc(stack, 'vpc', { maxAzs: 2, restrictDefaultSecurityGroup: false });
|
|
10
|
+
|
|
11
|
+
const dbInstance = new rds.DatabaseInstance(stack, 'dbInstance', {
|
|
12
|
+
engine: rds.DatabaseInstanceEngine.postgres({
|
|
13
|
+
version: rds.PostgresEngineVersion.VER_17_5,
|
|
14
|
+
}),
|
|
15
|
+
instanceType: ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE3, ec2.InstanceSize.MEDIUM),
|
|
16
|
+
vpc,
|
|
17
|
+
removalPolicy: RemovalPolicy.DESTROY,
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
const dbProxy = new rds.DatabaseProxy(stack, 'dbProxy', {
|
|
21
|
+
secrets: [dbInstance.secret!],
|
|
22
|
+
proxyTarget: rds.ProxyTarget.fromInstance(dbInstance),
|
|
23
|
+
vpc,
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
const securityGroup = ec2.SecurityGroup.fromSecurityGroupId(stack, 'SecurityGroup', vpc.vpcDefaultSecurityGroup);
|
|
27
|
+
|
|
28
|
+
dbProxy.addEndpoint('dbProxyEndpoint', {
|
|
29
|
+
vpc,
|
|
30
|
+
targetRole: rds.ProxyEndpointTargetRole.READ_ONLY,
|
|
31
|
+
securityGroups: [securityGroup],
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
new integ.IntegTest(app, 'cdk-rds-proxy-endpoint-integ', {
|
|
35
|
+
testCases: [stack],
|
|
36
|
+
});
|
|
@@ -134,6 +134,30 @@ new route53.AaaaRecord(this, 'Alias', {
|
|
|
134
134
|
});
|
|
135
135
|
```
|
|
136
136
|
|
|
137
|
+
To add an HTTPS record:
|
|
138
|
+
|
|
139
|
+
``` ts
|
|
140
|
+
import * as cloudfront from 'aws-cdk-lib/aws-cloudfront';
|
|
141
|
+
|
|
142
|
+
declare const myZone: route53.HostedZone;
|
|
143
|
+
declare const distribution: cloudfront.CloudFrontWebDistribution;
|
|
144
|
+
// Alias to CloudFront target
|
|
145
|
+
new route53.HttpsRecord(this, 'HttpsRecord-CloudFrontAlias', {
|
|
146
|
+
zone: myZone,
|
|
147
|
+
target: route53.RecordTarget.fromAlias(new targets.CloudFrontTarget(distribution)),
|
|
148
|
+
});
|
|
149
|
+
// ServiceMode (priority >= 1)
|
|
150
|
+
new route53.HttpsRecord(this, 'HttpsRecord-ServiceMode', {
|
|
151
|
+
zone: myZone,
|
|
152
|
+
values: [route53.HttpsRecordValue.service({ alpn: [route53.Alpn.H3, route53.Alpn.H2] })],
|
|
153
|
+
});
|
|
154
|
+
// AliasMode (priority = 0)
|
|
155
|
+
new route53.HttpsRecord(this, 'HttpsRecord-AliasMode', {
|
|
156
|
+
zone: myZone,
|
|
157
|
+
values: [route53.HttpsRecordValue.alias('service.example.com')],
|
|
158
|
+
});
|
|
159
|
+
```
|
|
160
|
+
|
|
137
161
|
[Geolocation routing](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy-geo.html) can be enabled for continent, country or subdivision:
|
|
138
162
|
|
|
139
163
|
```ts
|
|
@@ -343,40 +367,40 @@ const crossAccountRole = new iam.Role(this, 'CrossAccountRole', {
|
|
|
343
367
|
roleName: 'MyDelegationRole',
|
|
344
368
|
// The other account
|
|
345
369
|
assumedBy: new iam.AccountPrincipal('12345678901'),
|
|
346
|
-
// You can scope down this role policy to be least privileged.
|
|
347
|
-
// If you want the other account to be able to manage specific records,
|
|
348
|
-
// you can scope down by resource and/or normalized record names
|
|
349
|
-
inlinePolicies: {
|
|
350
|
-
crossAccountPolicy: new iam.PolicyDocument({
|
|
351
|
-
statements: [
|
|
352
|
-
new iam.PolicyStatement({
|
|
353
|
-
sid: 'ListHostedZonesByName',
|
|
354
|
-
effect: iam.Effect.ALLOW,
|
|
355
|
-
actions: ['route53:ListHostedZonesByName'],
|
|
356
|
-
resources: ['*'],
|
|
357
|
-
}),
|
|
358
|
-
new iam.PolicyStatement({
|
|
359
|
-
sid: 'GetHostedZoneAndChangeResourceRecordSets',
|
|
360
|
-
effect: iam.Effect.ALLOW,
|
|
361
|
-
actions: ['route53:GetHostedZone', 'route53:ChangeResourceRecordSets'],
|
|
362
|
-
// This example assumes the RecordSet subdomain.somexample.com
|
|
363
|
-
// is contained in the HostedZone
|
|
364
|
-
resources: ['arn:aws:route53:::hostedzone/HZID00000000000000000'],
|
|
365
|
-
conditions: {
|
|
366
|
-
'ForAllValues:StringLike': {
|
|
367
|
-
'route53:ChangeResourceRecordSetsNormalizedRecordNames': [
|
|
368
|
-
'subdomain.someexample.com',
|
|
369
|
-
],
|
|
370
|
-
},
|
|
371
|
-
},
|
|
372
|
-
}),
|
|
373
|
-
],
|
|
374
|
-
}),
|
|
375
|
-
},
|
|
376
370
|
});
|
|
377
371
|
parentZone.grantDelegation(crossAccountRole);
|
|
378
372
|
```
|
|
379
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
|
+
|
|
380
404
|
In the account containing the child zone to be delegated:
|
|
381
405
|
|
|
382
406
|
```ts
|
|
@@ -516,7 +540,8 @@ const zone = route53.HostedZone.fromHostedZoneAttributes(this, 'MyZone', {
|
|
|
516
540
|
```
|
|
517
541
|
|
|
518
542
|
Alternatively, use the `HostedZone.fromHostedZoneId` to import hosted zones if
|
|
519
|
-
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
|
|
520
545
|
|
|
521
546
|
```ts
|
|
522
547
|
const zone = route53.HostedZone.fromHostedZoneId(this, 'MyZone', 'ZOJJZC49E0EPZ');
|
|
@@ -534,6 +559,18 @@ const zoneFromAttributes = route53.PublicHostedZone.fromPublicHostedZoneAttribut
|
|
|
534
559
|
const zoneFromId = route53.PublicHostedZone.fromPublicHostedZoneId(this, 'MyZone', 'ZOJJZC49E0EPZ');
|
|
535
560
|
```
|
|
536
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
|
+
|
|
537
574
|
You can use `CrossAccountZoneDelegationRecord` on imported Hosted Zones with the `grantDelegation` method:
|
|
538
575
|
|
|
539
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
|
+
|