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
|
@@ -15,6 +15,7 @@ intake and aggregation.
|
|
|
15
15
|
- [Write Permissions](#write-permissions)
|
|
16
16
|
- [Custom Permissions](#custom-permissions)
|
|
17
17
|
- [Metrics](#metrics)
|
|
18
|
+
- [Shard-level Metrics](#shard-level-metrics)
|
|
18
19
|
- [Stream Consumers](#stream-consumers)
|
|
19
20
|
- [Read Permissions](#read-permissions-1)
|
|
20
21
|
- [Resource Policy](#resource-policy)
|
|
@@ -191,6 +192,47 @@ stream.metricGetRecordsSuccess();
|
|
|
191
192
|
stream.metricGetRecordsSuccess({ statistic: 'Maximum' });
|
|
192
193
|
```
|
|
193
194
|
|
|
195
|
+
#### Shard-level Metrics
|
|
196
|
+
|
|
197
|
+
You can enable enhanced shard-level metrics for your Kinesis stream to get detailed monitoring of individual shards. Shard-level metrics provide more granular insights into the performance and health of your stream.
|
|
198
|
+
|
|
199
|
+
```ts
|
|
200
|
+
const stream = new kinesis.Stream(this, 'MyStream', {
|
|
201
|
+
shardLevelMetrics: [kinesis.ShardLevelMetrics.ALL],
|
|
202
|
+
});
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
You can also specify individual metrics that you want to monitor:
|
|
206
|
+
|
|
207
|
+
```ts
|
|
208
|
+
const stream = new kinesis.Stream(this, 'MyStream', {
|
|
209
|
+
shardLevelMetrics: [
|
|
210
|
+
kinesis.ShardLevelMetrics.INCOMING_BYTES,
|
|
211
|
+
kinesis.ShardLevelMetrics.INCOMING_RECORDS,
|
|
212
|
+
kinesis.ShardLevelMetrics.ITERATOR_AGE_MILLISECONDS,
|
|
213
|
+
kinesis.ShardLevelMetrics.OUTGOING_BYTES,
|
|
214
|
+
kinesis.ShardLevelMetrics.OUTGOING_RECORDS,
|
|
215
|
+
kinesis.ShardLevelMetrics.READ_PROVISIONED_THROUGHPUT_EXCEEDED,
|
|
216
|
+
kinesis.ShardLevelMetrics.WRITE_PROVISIONED_THROUGHPUT_EXCEEDED,
|
|
217
|
+
],
|
|
218
|
+
});
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
Available shard-level metrics include:
|
|
222
|
+
|
|
223
|
+
- `INCOMING_BYTES` - The number of bytes successfully put to the shard
|
|
224
|
+
- `INCOMING_RECORDS` - The number of records successfully put to the shard
|
|
225
|
+
- `ITERATOR_AGE_MILLISECONDS` - The age of the last record in all GetRecords calls made against a shard
|
|
226
|
+
- `OUTGOING_BYTES` - The number of bytes retrieved from the shard
|
|
227
|
+
- `OUTGOING_RECORDS` - The number of records retrieved from the shard
|
|
228
|
+
- `READ_PROVISIONED_THROUGHPUT_EXCEEDED` - The number of GetRecords calls throttled for the shard
|
|
229
|
+
- `WRITE_PROVISIONED_THROUGHPUT_EXCEEDED` - The number of records rejected due to throttling for the shard
|
|
230
|
+
- `ALL` - All available metrics
|
|
231
|
+
|
|
232
|
+
Note: You cannot specify `ALL` together with other individual metrics. If you want all metrics, use `ALL` alone.
|
|
233
|
+
|
|
234
|
+
For more information about shard-level metrics, see [Monitoring the Amazon Kinesis Data Streams Service with Amazon CloudWatch](https://docs.aws.amazon.com/streams/latest/dev/monitoring-with-cloudwatch.html#kinesis-metrics-shard).
|
|
235
|
+
|
|
194
236
|
## Stream Consumers
|
|
195
237
|
|
|
196
238
|
Creating stream consumers allow consumers to receive data from the stream using enhanced fan-out at a rate of up to 2 MiB per second for every shard.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { App, Stack, RemovalPolicies } from 'aws-cdk-lib';
|
|
2
|
+
import * as kinesis from 'aws-cdk-lib/aws-kinesis';
|
|
3
|
+
import { ExpectedResult, IntegTest } from '@aws-cdk/integ-tests-alpha';
|
|
4
|
+
|
|
5
|
+
const app = new App();
|
|
6
|
+
const stack = new Stack(app, 'kinesis-stream-shard-level-monitoring-stack');
|
|
7
|
+
|
|
8
|
+
const explicitStream = new kinesis.Stream(stack, 'ExplicitStream', {
|
|
9
|
+
shardLevelMetrics: [
|
|
10
|
+
kinesis.ShardLevelMetrics.INCOMING_BYTES,
|
|
11
|
+
kinesis.ShardLevelMetrics.INCOMING_RECORDS,
|
|
12
|
+
kinesis.ShardLevelMetrics.ITERATOR_AGE_MILLISECONDS,
|
|
13
|
+
kinesis.ShardLevelMetrics.OUTGOING_BYTES,
|
|
14
|
+
kinesis.ShardLevelMetrics.OUTGOING_RECORDS,
|
|
15
|
+
kinesis.ShardLevelMetrics.WRITE_PROVISIONED_THROUGHPUT_EXCEEDED,
|
|
16
|
+
kinesis.ShardLevelMetrics.READ_PROVISIONED_THROUGHPUT_EXCEEDED,
|
|
17
|
+
],
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
const allStream = new kinesis.Stream(stack, 'AllStream', {
|
|
21
|
+
shardLevelMetrics: [kinesis.ShardLevelMetrics.ALL],
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
RemovalPolicies.of(stack).destroy();
|
|
25
|
+
|
|
26
|
+
const integ = new IntegTest(app, 'integ-kinesis-stream-consumer', {
|
|
27
|
+
testCases: [stack],
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
const streams = [explicitStream, allStream];
|
|
31
|
+
streams.forEach((stream) => {
|
|
32
|
+
integ.assertions.awsApiCall('Kinesis', 'describeStream', {
|
|
33
|
+
StreamName: stream.streamName,
|
|
34
|
+
}).expect(ExpectedResult.objectLike({
|
|
35
|
+
StreamDescription: {
|
|
36
|
+
ShardLevelMetrics: [
|
|
37
|
+
'IncomingBytes',
|
|
38
|
+
'IncomingRecords',
|
|
39
|
+
'IteratorAgeMilliseconds',
|
|
40
|
+
'OutgoingBytes',
|
|
41
|
+
'OutgoingRecords',
|
|
42
|
+
'WriteProvisionedThroughputExceeded',
|
|
43
|
+
'ReadProvisionedThroughputExceeded',
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
}));
|
|
47
|
+
});
|
|
@@ -102,10 +102,13 @@ will be used for files successfully delivered to S3. `errorOutputPrefix` will be
|
|
|
102
102
|
failed records before writing them to S3.
|
|
103
103
|
|
|
104
104
|
```ts
|
|
105
|
+
import { TimeZone } from 'aws-cdk-lib';
|
|
105
106
|
declare const bucket: s3.Bucket;
|
|
106
107
|
const s3Destination = new firehose.S3Bucket(bucket, {
|
|
107
108
|
dataOutputPrefix: 'myFirehose/DeliveredYear=!{timestamp:yyyy}/anyMonth/rand=!{firehose:random-string}',
|
|
108
109
|
errorOutputPrefix: 'myFirehoseFailures/!{firehose:error-output-type}/!{timestamp:yyyy}/anyMonth/!{timestamp:dd}',
|
|
110
|
+
// The time zone of timestamps (default UTC)
|
|
111
|
+
timeZone: TimeZone.ASIA_TOKYO,
|
|
109
112
|
});
|
|
110
113
|
```
|
|
111
114
|
|
|
@@ -122,6 +125,102 @@ const s3Destination = new firehose.S3Bucket(bucket, {
|
|
|
122
125
|
});
|
|
123
126
|
```
|
|
124
127
|
|
|
128
|
+
## Data Format Conversion
|
|
129
|
+
|
|
130
|
+
Data format conversion allows automatic conversion of inputs from JSON to either Parquet or ORC.
|
|
131
|
+
Converting JSON records to columnar formats like Parquet or ORC can help speed up analytical querying while also increasing compression efficiency.
|
|
132
|
+
When data format conversion is specified, it automatically enables Snappy compression on the output.
|
|
133
|
+
|
|
134
|
+
Only S3 Destinations support data format conversion.
|
|
135
|
+
|
|
136
|
+
An example of defining an S3 destination configured with data format conversion:
|
|
137
|
+
|
|
138
|
+
```ts
|
|
139
|
+
declare const bucket: s3.Bucket;
|
|
140
|
+
declare const schemaGlueTable: glue.CfnTable;
|
|
141
|
+
const s3Destination = new firehose.S3Bucket(bucket, {
|
|
142
|
+
dataFormatConversion: {
|
|
143
|
+
schemaConfiguration: firehose.SchemaConfiguration.fromCfnTable(schemaGlueTable),
|
|
144
|
+
inputFormat: firehose.InputFormat.OPENX_JSON,
|
|
145
|
+
outputFormat: firehose.OutputFormat.PARQUET,
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
When data format conversion is enabled, the Delivery Stream's buffering size must be at least 64 MiB.
|
|
151
|
+
Additionally, the default buffering size is changed from 5 MiB to 128 MiB. This mirrors the Cloudformation behavior.
|
|
152
|
+
|
|
153
|
+
You can only parse JSON and transform it into either Parquet or ORC:
|
|
154
|
+
- to read JSON using OpenX parser, choose `InputFormat.OPENX_JSON`.
|
|
155
|
+
- to read JSON using Hive parser, choose `InputFormat.HIVE_JSON`.
|
|
156
|
+
- to transform into Parquet, choose `OutputFormat.PARQUET`.
|
|
157
|
+
- to transform into ORC, choose `OutputFormat.ORC`.
|
|
158
|
+
|
|
159
|
+
The following subsections explain how to specify advanced configuration options for each input and output format if the defaults are not desirable
|
|
160
|
+
|
|
161
|
+
### Input Format: OpenX JSON
|
|
162
|
+
|
|
163
|
+
Example creation of custom OpenX JSON InputFormat:
|
|
164
|
+
|
|
165
|
+
```ts
|
|
166
|
+
const inputFormat = new firehose.OpenXJsonInputFormat({
|
|
167
|
+
lowercaseColumnNames: false,
|
|
168
|
+
columnToJsonKeyMappings: {"ts": "timestamp"},
|
|
169
|
+
convertDotsInJsonKeysToUnderscores: true,
|
|
170
|
+
})
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Input Format: Hive JSON
|
|
174
|
+
|
|
175
|
+
Example creation of custom Hive JSON InputFormat:
|
|
176
|
+
|
|
177
|
+
```ts
|
|
178
|
+
const inputFormat = new firehose.HiveJsonInputFormat({
|
|
179
|
+
timestampParsers: [
|
|
180
|
+
firehose.TimestampParser.fromFormatString('yyyy-MM-dd'),
|
|
181
|
+
firehose.TimestampParser.EPOCH_MILLIS,
|
|
182
|
+
]
|
|
183
|
+
})
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Hive JSON allows you to specify custom timestamp formats to parse. The syntax of the format string is Joda Time.
|
|
187
|
+
|
|
188
|
+
To parse timestamps formatted as milliseconds since epoch, use the convenience constant `TimestampParser.EPOCH_MILLIS`.
|
|
189
|
+
|
|
190
|
+
### Output Format: Parquet
|
|
191
|
+
|
|
192
|
+
Example of a custom Parquet OutputFormat, with all values changed from the defaults.
|
|
193
|
+
|
|
194
|
+
```ts
|
|
195
|
+
const outputFormat = new firehose.ParquetOutputFormat({
|
|
196
|
+
blockSize: Size.mebibytes(512),
|
|
197
|
+
compression: firehose.ParquetCompression.UNCOMPRESSED,
|
|
198
|
+
enableDictionaryCompression: true,
|
|
199
|
+
maxPadding: Size.bytes(10),
|
|
200
|
+
pageSize: Size.mebibytes(2),
|
|
201
|
+
writerVersion: firehose.ParquetWriterVersion.V2,
|
|
202
|
+
})
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### Output Format: ORC
|
|
206
|
+
|
|
207
|
+
Example creation of custom ORC OutputFormat, with all values changed from the defaults.
|
|
208
|
+
|
|
209
|
+
```ts
|
|
210
|
+
const outputFormat = new firehose.OrcOutputFormat({
|
|
211
|
+
formatVersion: firehose.OrcFormatVersion.V0_11,
|
|
212
|
+
blockSize: Size.mebibytes(256),
|
|
213
|
+
compression: firehose.OrcCompression.NONE,
|
|
214
|
+
bloomFilterColumns: ['columnA'],
|
|
215
|
+
bloomFilterFalsePositiveProbability: 0.1,
|
|
216
|
+
dictionaryKeyThreshold: 0.7,
|
|
217
|
+
enablePadding: true,
|
|
218
|
+
paddingTolerance: 0.2,
|
|
219
|
+
rowIndexStride: 9000,
|
|
220
|
+
stripeSize: Size.mebibytes(32),
|
|
221
|
+
})
|
|
222
|
+
```
|
|
223
|
+
|
|
125
224
|
## Server-side Encryption
|
|
126
225
|
|
|
127
226
|
Enabling server-side encryption (SSE) requires Amazon Data Firehose to encrypt all data
|
|
@@ -384,8 +483,11 @@ Data can be transformed before being delivered to destinations. There are two ty
|
|
|
384
483
|
data processing for delivery streams: record transformation with AWS Lambda, and record
|
|
385
484
|
format conversion using a schema stored in an AWS Glue table. If both types of data
|
|
386
485
|
processing are configured, then the Lambda transformation is performed first. By default,
|
|
387
|
-
no data processing occurs.
|
|
388
|
-
|
|
486
|
+
no data processing occurs.
|
|
487
|
+
|
|
488
|
+
This construct library currently only supports data
|
|
489
|
+
transformation with AWS Lambda and some built-in data processors.
|
|
490
|
+
See [#15501](https://github.com/aws/aws-cdk/issues/15501)
|
|
389
491
|
to track the status of adding support for record format conversion.
|
|
390
492
|
|
|
391
493
|
### Data transformation with AWS Lambda
|
|
@@ -421,7 +523,7 @@ const lambdaProcessor = new firehose.LambdaFunctionProcessor(lambdaFunction, {
|
|
|
421
523
|
});
|
|
422
524
|
declare const bucket: s3.Bucket;
|
|
423
525
|
const s3Destination = new firehose.S3Bucket(bucket, {
|
|
424
|
-
|
|
526
|
+
processors: [lambdaProcessor],
|
|
425
527
|
});
|
|
426
528
|
new firehose.DeliveryStream(this, 'Delivery Stream', {
|
|
427
529
|
destination: s3Destination,
|
|
@@ -433,6 +535,60 @@ new firehose.DeliveryStream(this, 'Delivery Stream', {
|
|
|
433
535
|
See: [Data Transformation](https://docs.aws.amazon.com/firehose/latest/dev/data-transformation.html)
|
|
434
536
|
in the *Amazon Data Firehose Developer Guide*.
|
|
435
537
|
|
|
538
|
+
### Add a new line delimiter when delivering data to Amazon S3
|
|
539
|
+
|
|
540
|
+
You can specify the `AppendDelimiterToRecordProcessor` built-in processor to add a new line delimiter between records in objects that are delivered to Amazon S3. This can be helpful for parsing objects in Amazon S3.
|
|
541
|
+
For details, see [Use Amazon S3 bucket prefix to deliver data](https://docs.aws.amazon.com/firehose/latest/dev/dynamic-partitioning-s3bucketprefix.html).
|
|
542
|
+
|
|
543
|
+
```ts
|
|
544
|
+
declare const bucket: s3.Bucket;
|
|
545
|
+
const s3Destination = new firehose.S3Bucket(bucket, {
|
|
546
|
+
processors: [
|
|
547
|
+
new firehose.AppendDelimiterToRecordProcessor(),
|
|
548
|
+
],
|
|
549
|
+
});
|
|
550
|
+
new firehose.DeliveryStream(this, 'Delivery Stream', {
|
|
551
|
+
destination: s3Destination,
|
|
552
|
+
});
|
|
553
|
+
```
|
|
554
|
+
|
|
555
|
+
### Decompress and extract message of CloudWatch Logs
|
|
556
|
+
|
|
557
|
+
CloudWatch Logs events are sent to Firehose in compressed gzip format. If you want to deliver decompressed log events to Firehose destinations, you can use the `DecompressionProcessor` to automatically decompress CloudWatch Logs.
|
|
558
|
+
For details, see [Send CloudWatch Logs to Firehose](https://docs.aws.amazon.com/firehose/latest/dev/writing-with-cloudwatch-logs.html).
|
|
559
|
+
|
|
560
|
+
You may also needed to specify `AppendDelimiterToRecordProcessor`
|
|
561
|
+
because decompressed log events record has no trailing newline.
|
|
562
|
+
|
|
563
|
+
```ts
|
|
564
|
+
declare const bucket: s3.Bucket;
|
|
565
|
+
const s3Destination = new firehose.S3Bucket(bucket, {
|
|
566
|
+
processors: [
|
|
567
|
+
new firehose.DecompressionProcessor(),
|
|
568
|
+
new firehose.AppendDelimiterToRecordProcessor(),
|
|
569
|
+
],
|
|
570
|
+
});
|
|
571
|
+
new firehose.DeliveryStream(this, 'Delivery Stream', {
|
|
572
|
+
destination: s3Destination,
|
|
573
|
+
});
|
|
574
|
+
```
|
|
575
|
+
|
|
576
|
+
When you enable decompression, you have the option to also enable message extraction. When using message extraction, Firehose filters out all metadata, such as owner, loggroup, logstream, and others from the decompressed CloudWatch Logs records and delivers only the content inside the message fields.
|
|
577
|
+
|
|
578
|
+
```ts
|
|
579
|
+
declare const bucket: s3.Bucket;
|
|
580
|
+
const s3Destination = new firehose.S3Bucket(bucket, {
|
|
581
|
+
processors: [
|
|
582
|
+
new firehose.DecompressionProcessor(),
|
|
583
|
+
new firehose.CloudWatchLogProcessor({ dataMessageExtraction: true }),
|
|
584
|
+
],
|
|
585
|
+
});
|
|
586
|
+
new firehose.DeliveryStream(this, 'Delivery Stream', {
|
|
587
|
+
destination: s3Destination,
|
|
588
|
+
});
|
|
589
|
+
```
|
|
590
|
+
|
|
591
|
+
|
|
436
592
|
## Specifying an IAM role
|
|
437
593
|
|
|
438
594
|
The DeliveryStream class automatically creates IAM service roles with all the minimum
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import * as firehose from 'aws-cdk-lib/aws-kinesisfirehose';
|
|
4
|
+
import * as lambdanodejs from 'aws-cdk-lib/aws-lambda-nodejs';
|
|
5
|
+
import * as s3 from 'aws-cdk-lib/aws-s3';
|
|
6
|
+
import * as cdk from 'aws-cdk-lib';
|
|
7
|
+
import { IntegTest } from '@aws-cdk/integ-tests-alpha';
|
|
8
|
+
|
|
9
|
+
const app = new cdk.App();
|
|
10
|
+
|
|
11
|
+
const stack = new cdk.Stack(app, 'firehose-delivery-stream-cloudwatch-logs-processors');
|
|
12
|
+
|
|
13
|
+
const bucket = new s3.Bucket(stack, 'DestinationBucket', {
|
|
14
|
+
removalPolicy: cdk.RemovalPolicy.DESTROY,
|
|
15
|
+
autoDeleteObjects: true,
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
const dataProcessorFunction = new lambdanodejs.NodejsFunction(stack, 'DataProcessorFunction', {
|
|
19
|
+
entry: path.join(__dirname, 'lambda-data-processor.js'),
|
|
20
|
+
timeout: cdk.Duration.minutes(1),
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
new firehose.DeliveryStream(stack, 'DecompressCloudWatchLogsEntry', {
|
|
24
|
+
destination: new firehose.S3Bucket(bucket, {
|
|
25
|
+
processors: [
|
|
26
|
+
new firehose.DecompressionProcessor(),
|
|
27
|
+
new firehose.AppendDelimiterToRecordProcessor(),
|
|
28
|
+
new firehose.LambdaFunctionProcessor(dataProcessorFunction),
|
|
29
|
+
],
|
|
30
|
+
}),
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
new firehose.DeliveryStream(stack, 'ExtractCloudWatchLogsEntry', {
|
|
34
|
+
destination: new firehose.S3Bucket(bucket, {
|
|
35
|
+
processors: [
|
|
36
|
+
new firehose.DecompressionProcessor(),
|
|
37
|
+
new firehose.CloudWatchLogProcessor({ dataMessageExtraction: true }),
|
|
38
|
+
new firehose.LambdaFunctionProcessor(dataProcessorFunction),
|
|
39
|
+
],
|
|
40
|
+
}),
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
new IntegTest(app, 'integ-tests', {
|
|
44
|
+
testCases: [stack],
|
|
45
|
+
});
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import * as firehose from 'aws-cdk-lib/aws-kinesisfirehose';
|
|
2
|
+
import * as s3 from 'aws-cdk-lib/aws-s3';
|
|
3
|
+
import * as glue from 'aws-cdk-lib/aws-glue';
|
|
4
|
+
import * as cdk from 'aws-cdk-lib';
|
|
5
|
+
import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
6
|
+
import { Construct } from 'constructs';
|
|
7
|
+
|
|
8
|
+
const app = new cdk.App();
|
|
9
|
+
|
|
10
|
+
const SCHEMA_COLUMNS = [
|
|
11
|
+
{
|
|
12
|
+
name: 'column_a',
|
|
13
|
+
type: 'string',
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
name: 'column_b',
|
|
17
|
+
type: 'string',
|
|
18
|
+
},
|
|
19
|
+
];
|
|
20
|
+
|
|
21
|
+
class TestStack extends cdk.Stack {
|
|
22
|
+
public readonly deliveryStreamsToTest: firehose.IDeliveryStream[];
|
|
23
|
+
public readonly bucket: s3.Bucket;
|
|
24
|
+
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
|
|
25
|
+
super(scope, id, props);
|
|
26
|
+
|
|
27
|
+
this.bucket = new s3.Bucket(this, 'Bucket', {
|
|
28
|
+
removalPolicy: cdk.RemovalPolicy.DESTROY,
|
|
29
|
+
autoDeleteObjects: true,
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
const database = new glue.CfnDatabase(this, 'Database', {
|
|
33
|
+
databaseInput: {
|
|
34
|
+
description: 'My database',
|
|
35
|
+
},
|
|
36
|
+
catalogId: this.account,
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
const registry = new glue.CfnRegistry(this, 'SchemaRegistry', {
|
|
40
|
+
name: 'my_schema_registry',
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
const inlineSchemaTable = this.createTableWithInlineSchema(database);
|
|
44
|
+
const inlineSchemaDeliveryStream = this.createDeliveryStreamWithDataFormatConversion('InlineSchema', {
|
|
45
|
+
schemaConfiguration: firehose.SchemaConfiguration.fromCfnTable(inlineSchemaTable),
|
|
46
|
+
inputFormat: firehose.InputFormat.OPENX_JSON,
|
|
47
|
+
outputFormat: firehose.OutputFormat.PARQUET,
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
const registrySchemaTable = this.createTableWithRegistrySchema(database, registry);
|
|
51
|
+
const registrySchemaDeliveryStream = this.createDeliveryStreamWithDataFormatConversion('RegistrySchema', {
|
|
52
|
+
schemaConfiguration: firehose.SchemaConfiguration.fromCfnTable(registrySchemaTable),
|
|
53
|
+
inputFormat: firehose.InputFormat.OPENX_JSON,
|
|
54
|
+
outputFormat: firehose.OutputFormat.PARQUET,
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
this.deliveryStreamsToTest = [
|
|
58
|
+
inlineSchemaDeliveryStream,
|
|
59
|
+
registrySchemaDeliveryStream,
|
|
60
|
+
];
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
private createTableWithInlineSchema(database: glue.CfnDatabase): glue.CfnTable {
|
|
64
|
+
return new glue.CfnTable(this, 'InlineSchemaTable', {
|
|
65
|
+
catalogId: database.catalogId,
|
|
66
|
+
databaseName: database.ref,
|
|
67
|
+
tableInput: {
|
|
68
|
+
storageDescriptor: {
|
|
69
|
+
columns: SCHEMA_COLUMNS,
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
private createTableWithRegistrySchema(database: glue.CfnDatabase, registry: glue.CfnRegistry): glue.CfnTable {
|
|
76
|
+
const schemaDefinition = JSON.stringify({
|
|
77
|
+
type: 'record',
|
|
78
|
+
name: 'MyRecord',
|
|
79
|
+
fields: SCHEMA_COLUMNS,
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
const schema = new glue.CfnSchema(this, 'Schema', {
|
|
83
|
+
registry: {
|
|
84
|
+
arn: registry.attrArn,
|
|
85
|
+
},
|
|
86
|
+
compatibility: 'NONE',
|
|
87
|
+
dataFormat: 'AVRO',
|
|
88
|
+
name: 'my_schema',
|
|
89
|
+
schemaDefinition: schemaDefinition,
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
return new glue.CfnTable(this, 'RegistrySchemaTable', {
|
|
93
|
+
catalogId: database.catalogId,
|
|
94
|
+
databaseName: database.ref,
|
|
95
|
+
tableInput: {
|
|
96
|
+
storageDescriptor: {
|
|
97
|
+
schemaReference: {
|
|
98
|
+
schemaVersionId: schema.attrInitialSchemaVersionId,
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
private createDeliveryStreamWithDataFormatConversion(
|
|
106
|
+
id: string,
|
|
107
|
+
dataFormatConversion: firehose.DataFormatConversionProps,
|
|
108
|
+
): firehose.DeliveryStream {
|
|
109
|
+
return new firehose.DeliveryStream(this, id, {
|
|
110
|
+
destination: new firehose.S3Bucket(this.bucket, {
|
|
111
|
+
dataOutputPrefix: `success/${id}/`,
|
|
112
|
+
errorOutputPrefix: `error/${id}/`,
|
|
113
|
+
bufferingInterval: cdk.Duration.seconds(0),
|
|
114
|
+
dataFormatConversion: dataFormatConversion,
|
|
115
|
+
}),
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
const stack = new TestStack(app, 'RecordFormatConversionSchema');
|
|
121
|
+
const testCase = new integ.IntegTest(app, 'RecordFormatConversionSchemaTest', {
|
|
122
|
+
testCases: [stack],
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
const assertions = testCase.assertions;
|
|
126
|
+
|
|
127
|
+
// Test each delivery stream with the same input, and verify that each writes the output to the success prefix
|
|
128
|
+
// Relies on waiting timeout to tell if record format conversion failed.
|
|
129
|
+
stack.deliveryStreamsToTest.forEach(deliveryStream => {
|
|
130
|
+
const putDataCall = assertions.awsApiCall('Firehose', 'putRecord', {
|
|
131
|
+
DeliveryStreamName: deliveryStream.deliveryStreamName,
|
|
132
|
+
Record: {
|
|
133
|
+
Data: JSON.stringify({
|
|
134
|
+
Column_A: 'foo',
|
|
135
|
+
Column_B: 'bar',
|
|
136
|
+
}),
|
|
137
|
+
},
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
const waitForResultCall = assertions.awsApiCall('S3', 'listObjectsV2', {
|
|
141
|
+
Bucket: stack.bucket.bucketName,
|
|
142
|
+
Prefix: `success/${deliveryStream.node.id}/`,
|
|
143
|
+
}).expect(integ.ExpectedResult.objectLike({
|
|
144
|
+
KeyCount: 1,
|
|
145
|
+
})).waitForAssertions({
|
|
146
|
+
interval: cdk.Duration.seconds(5),
|
|
147
|
+
totalTimeout: cdk.Duration.minutes(2),
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
const api = waitForResultCall as integ.AwsApiCall;
|
|
151
|
+
api.waiterProvider?.addPolicyStatementFromSdkCall('s3', 'ListBucket', [stack.bucket.bucketArn]);
|
|
152
|
+
api.waiterProvider?.addPolicyStatementFromSdkCall('s3', 'GetObject', [stack.bucket.arnForObjects('*')]);
|
|
153
|
+
putDataCall.next(waitForResultCall);
|
|
154
|
+
});
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import * as firehose from 'aws-cdk-lib/aws-kinesisfirehose';
|
|
2
|
+
import * as s3 from 'aws-cdk-lib/aws-s3';
|
|
3
|
+
import * as glue from 'aws-cdk-lib/aws-glue';
|
|
4
|
+
import * as cdk from 'aws-cdk-lib';
|
|
5
|
+
import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
6
|
+
import { Construct } from 'constructs';
|
|
7
|
+
|
|
8
|
+
const app = new cdk.App();
|
|
9
|
+
|
|
10
|
+
const SCHEMA_COLUMNS = [
|
|
11
|
+
{
|
|
12
|
+
name: 'column_a',
|
|
13
|
+
type: 'string',
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
name: 'column_b',
|
|
17
|
+
type: 'string',
|
|
18
|
+
},
|
|
19
|
+
];
|
|
20
|
+
|
|
21
|
+
class TestStack extends cdk.Stack {
|
|
22
|
+
public readonly bucket: s3.Bucket;
|
|
23
|
+
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
|
|
24
|
+
super(scope, id, props);
|
|
25
|
+
|
|
26
|
+
this.bucket = new s3.Bucket(this, 'Bucket', {
|
|
27
|
+
removalPolicy: cdk.RemovalPolicy.DESTROY,
|
|
28
|
+
autoDeleteObjects: true,
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
const database = new glue.CfnDatabase(this, 'Database', {
|
|
32
|
+
databaseInput: {
|
|
33
|
+
description: 'My database',
|
|
34
|
+
},
|
|
35
|
+
catalogId: this.account,
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
const schemaTable = this.createTableWithInlineSchema(database);
|
|
39
|
+
|
|
40
|
+
// default hive json input with default orc output
|
|
41
|
+
this.createDeliveryStreamWithDataFormatConversion('DefaultHiveJsonOrc', {
|
|
42
|
+
schemaConfiguration: firehose.SchemaConfiguration.fromCfnTable(schemaTable),
|
|
43
|
+
inputFormat: firehose.InputFormat.HIVE_JSON,
|
|
44
|
+
outputFormat: firehose.OutputFormat.ORC,
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
// default openx json input with default parquet output
|
|
48
|
+
this.createDeliveryStreamWithDataFormatConversion('DefaultOpenXJsonParquet', {
|
|
49
|
+
schemaConfiguration: firehose.SchemaConfiguration.fromCfnTable(schemaTable),
|
|
50
|
+
inputFormat: firehose.InputFormat.OPENX_JSON,
|
|
51
|
+
outputFormat: firehose.OutputFormat.PARQUET,
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
// custom hive json input
|
|
55
|
+
this.createDeliveryStreamWithDataFormatConversion('CustomHiveJson', {
|
|
56
|
+
schemaConfiguration: firehose.SchemaConfiguration.fromCfnTable(schemaTable),
|
|
57
|
+
inputFormat: new firehose.HiveJsonInputFormat({
|
|
58
|
+
timestampParsers: [
|
|
59
|
+
firehose.TimestampParser.EPOCH_MILLIS,
|
|
60
|
+
firehose.TimestampParser.fromFormatString('yyyy-MM-dd'),
|
|
61
|
+
],
|
|
62
|
+
}),
|
|
63
|
+
outputFormat: firehose.OutputFormat.ORC,
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
// custom openx json input
|
|
67
|
+
this.createDeliveryStreamWithDataFormatConversion('CustomOpenXJson', {
|
|
68
|
+
schemaConfiguration: firehose.SchemaConfiguration.fromCfnTable(schemaTable),
|
|
69
|
+
inputFormat: new firehose.OpenXJsonInputFormat({
|
|
70
|
+
lowercaseColumnNames: false,
|
|
71
|
+
columnToJsonKeyMappings: { column_yay: 'Column_A' },
|
|
72
|
+
convertDotsInJsonKeysToUnderscores: true,
|
|
73
|
+
}),
|
|
74
|
+
outputFormat: firehose.OutputFormat.PARQUET,
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
// custom orc output
|
|
78
|
+
this.createDeliveryStreamWithDataFormatConversion('CustomOrc', {
|
|
79
|
+
schemaConfiguration: firehose.SchemaConfiguration.fromCfnTable(schemaTable),
|
|
80
|
+
inputFormat: firehose.InputFormat.OPENX_JSON,
|
|
81
|
+
outputFormat: new firehose.OrcOutputFormat({
|
|
82
|
+
blockSize: cdk.Size.mebibytes(256),
|
|
83
|
+
bloomFilterColumns: ['column_a'],
|
|
84
|
+
bloomFilterFalsePositiveProbability: 0.5,
|
|
85
|
+
compression: firehose.OrcCompression.NONE,
|
|
86
|
+
dictionaryKeyThreshold: 0.3,
|
|
87
|
+
formatVersion: firehose.OrcFormatVersion.V0_11,
|
|
88
|
+
enablePadding: true,
|
|
89
|
+
paddingTolerance: 0.4,
|
|
90
|
+
rowIndexStride: 5000,
|
|
91
|
+
stripeSize: cdk.Size.mebibytes(32),
|
|
92
|
+
}),
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
// ORC ZLIB compression
|
|
96
|
+
this.createDeliveryStreamWithDataFormatConversion('CustomOrcZlib', {
|
|
97
|
+
schemaConfiguration: firehose.SchemaConfiguration.fromCfnTable(schemaTable),
|
|
98
|
+
inputFormat: firehose.InputFormat.OPENX_JSON,
|
|
99
|
+
outputFormat: new firehose.OrcOutputFormat({
|
|
100
|
+
compression: firehose.OrcCompression.ZLIB,
|
|
101
|
+
formatVersion: firehose.OrcFormatVersion.V0_12,
|
|
102
|
+
}),
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
// ORC SNAPPY compression
|
|
106
|
+
this.createDeliveryStreamWithDataFormatConversion('CustomOrcSnappy', {
|
|
107
|
+
schemaConfiguration: firehose.SchemaConfiguration.fromCfnTable(schemaTable),
|
|
108
|
+
inputFormat: firehose.InputFormat.OPENX_JSON,
|
|
109
|
+
outputFormat: new firehose.OrcOutputFormat({
|
|
110
|
+
compression: firehose.OrcCompression.SNAPPY,
|
|
111
|
+
}),
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
// custom parquet output format
|
|
115
|
+
this.createDeliveryStreamWithDataFormatConversion('CustomParquet', {
|
|
116
|
+
schemaConfiguration: firehose.SchemaConfiguration.fromCfnTable(schemaTable),
|
|
117
|
+
inputFormat: firehose.InputFormat.OPENX_JSON,
|
|
118
|
+
outputFormat: new firehose.ParquetOutputFormat({
|
|
119
|
+
blockSize: cdk.Size.mebibytes(128),
|
|
120
|
+
pageSize: cdk.Size.mebibytes(2),
|
|
121
|
+
compression: firehose.ParquetCompression.UNCOMPRESSED,
|
|
122
|
+
writerVersion: firehose.ParquetWriterVersion.V2,
|
|
123
|
+
enableDictionaryCompression: true,
|
|
124
|
+
maxPadding: cdk.Size.bytes(100),
|
|
125
|
+
}),
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
// Parquet GZIP compression
|
|
129
|
+
this.createDeliveryStreamWithDataFormatConversion('CustomParquetGzip', {
|
|
130
|
+
schemaConfiguration: firehose.SchemaConfiguration.fromCfnTable(schemaTable),
|
|
131
|
+
inputFormat: firehose.InputFormat.OPENX_JSON,
|
|
132
|
+
outputFormat: new firehose.ParquetOutputFormat({
|
|
133
|
+
compression: firehose.ParquetCompression.GZIP,
|
|
134
|
+
writerVersion: firehose.ParquetWriterVersion.V1,
|
|
135
|
+
}),
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
// Parquet SNAPPY compression
|
|
139
|
+
this.createDeliveryStreamWithDataFormatConversion('CustomParquetSnappy', {
|
|
140
|
+
schemaConfiguration: firehose.SchemaConfiguration.fromCfnTable(schemaTable),
|
|
141
|
+
inputFormat: firehose.InputFormat.OPENX_JSON,
|
|
142
|
+
outputFormat: new firehose.ParquetOutputFormat({
|
|
143
|
+
compression: firehose.ParquetCompression.SNAPPY,
|
|
144
|
+
}),
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
private createTableWithInlineSchema(database: glue.CfnDatabase): glue.CfnTable {
|
|
149
|
+
return new glue.CfnTable(this, 'InlineSchemaTable', {
|
|
150
|
+
catalogId: database.catalogId,
|
|
151
|
+
databaseName: database.ref,
|
|
152
|
+
tableInput: {
|
|
153
|
+
storageDescriptor: {
|
|
154
|
+
columns: SCHEMA_COLUMNS,
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
private createDeliveryStreamWithDataFormatConversion(
|
|
161
|
+
id: string,
|
|
162
|
+
dataFormatConversion: firehose.DataFormatConversionProps,
|
|
163
|
+
): firehose.DeliveryStream {
|
|
164
|
+
return new firehose.DeliveryStream(this, id, {
|
|
165
|
+
destination: new firehose.S3Bucket(this.bucket, {
|
|
166
|
+
dataOutputPrefix: `success/${id}/`,
|
|
167
|
+
errorOutputPrefix: `error/${id}/`,
|
|
168
|
+
bufferingInterval: cdk.Duration.seconds(0),
|
|
169
|
+
dataFormatConversion: dataFormatConversion,
|
|
170
|
+
}),
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
const stack = new TestStack(app, 'RecordFormatConversion');
|
|
176
|
+
new integ.IntegTest(app, 'RecordFormatConversionTest', {
|
|
177
|
+
testCases: [stack],
|
|
178
|
+
});
|
|
@@ -56,6 +56,7 @@ const deliveryStream = new firehose.DeliveryStream(stack, 'DeliveryStream', {
|
|
|
56
56
|
dataOutputPrefix: 'regularPrefix',
|
|
57
57
|
errorOutputPrefix: 'errorPrefix',
|
|
58
58
|
fileExtension: '.log.gz',
|
|
59
|
+
timeZone: cdk.TimeZone.ASIA_TOKYO,
|
|
59
60
|
bufferingInterval: cdk.Duration.seconds(60),
|
|
60
61
|
bufferingSize: cdk.Size.mebibytes(1),
|
|
61
62
|
encryptionKey: key,
|