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
|
@@ -14,10 +14,13 @@
|
|
|
14
14
|
- [VPC Link](#vpc-link)
|
|
15
15
|
- [Private Integration](#private-integration)
|
|
16
16
|
- [Generating ARN for Execute API](#generating-arn-for-execute-api)
|
|
17
|
-
- [Access Logging](#access-logging)
|
|
18
17
|
- [WebSocket API](#websocket-api)
|
|
19
18
|
- [Manage Connections Permission](#manage-connections-permission)
|
|
20
19
|
- [Managing access to WebSocket APIs](#managing-access-to-websocket-apis)
|
|
20
|
+
- [Usage Plan and API Keys](#usage-plan-and-api-keys)
|
|
21
|
+
- [Common Config](#common-config)
|
|
22
|
+
- [Route Settings](#route-settings)
|
|
23
|
+
- [Access Logging](#access-logging)
|
|
21
24
|
|
|
22
25
|
## Introduction
|
|
23
26
|
|
|
@@ -374,65 +377,6 @@ const arn = api.arnForExecuteApi('GET', '/myApiPath', 'dev');
|
|
|
374
377
|
- The 'ANY' method can be used for matching any HTTP methods not explicitly defined.
|
|
375
378
|
- The function gracefully handles undefined parameters by using wildcards, making it flexible for various API configurations.
|
|
376
379
|
|
|
377
|
-
## Access Logging
|
|
378
|
-
|
|
379
|
-
You can turn on logging to write logs to CloudWatch Logs.
|
|
380
|
-
Read more at [Configure logging for HTTP APIs in API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-logging.html)
|
|
381
|
-
|
|
382
|
-
```ts
|
|
383
|
-
import * as logs from 'aws-cdk-lib/aws-logs';
|
|
384
|
-
|
|
385
|
-
declare const api: apigwv2.HttpApi;
|
|
386
|
-
declare const logGroup: logs.LogGroup;
|
|
387
|
-
|
|
388
|
-
const stage = new apigwv2.HttpStage(this, 'Stage', {
|
|
389
|
-
httpApi: api,
|
|
390
|
-
accessLogSettings: {
|
|
391
|
-
destination: new apigwv2.LogGroupLogDestination(logGroup),
|
|
392
|
-
},
|
|
393
|
-
});
|
|
394
|
-
```
|
|
395
|
-
|
|
396
|
-
The following code will generate the access log in the [CLF format](https://en.wikipedia.org/wiki/Common_Log_Format).
|
|
397
|
-
|
|
398
|
-
```ts
|
|
399
|
-
import * as apigw from 'aws-cdk-lib/aws-apigateway';
|
|
400
|
-
import * as logs from 'aws-cdk-lib/aws-logs';
|
|
401
|
-
|
|
402
|
-
declare const api: apigwv2.HttpApi;
|
|
403
|
-
declare const logGroup: logs.LogGroup;
|
|
404
|
-
|
|
405
|
-
const stage = new apigwv2.HttpStage(this, 'Stage', {
|
|
406
|
-
httpApi: api,
|
|
407
|
-
accessLogSettings: {
|
|
408
|
-
destination: new apigwv2.LogGroupLogDestination(logGroup),
|
|
409
|
-
format: apigw.AccessLogFormat.clf(),
|
|
410
|
-
},
|
|
411
|
-
});
|
|
412
|
-
```
|
|
413
|
-
|
|
414
|
-
You can also configure your own access log format by using the `AccessLogFormat.custom()` API.
|
|
415
|
-
`AccessLogField` provides commonly used fields. The following code configures access log to contain.
|
|
416
|
-
|
|
417
|
-
```ts
|
|
418
|
-
import * as apigw from 'aws-cdk-lib/aws-apigateway';
|
|
419
|
-
import * as logs from 'aws-cdk-lib/aws-logs';
|
|
420
|
-
|
|
421
|
-
declare const api: apigwv2.HttpApi;
|
|
422
|
-
declare const logGroup: logs.LogGroup;
|
|
423
|
-
|
|
424
|
-
const stage = new apigwv2.HttpStage(this, 'Stage', {
|
|
425
|
-
httpApi: api,
|
|
426
|
-
accessLogSettings: {
|
|
427
|
-
destination: new apigwv2.LogGroupLogDestination(logGroup),
|
|
428
|
-
format: apigw.AccessLogFormat.custom(
|
|
429
|
-
`${apigw.AccessLogField.contextRequestId()} ${apigw.AccessLogField.contextErrorMessage()} ${apigw.AccessLogField.contextErrorMessageString()}
|
|
430
|
-
${apigw.AccessLogField.contextAuthorizerError()} ${apigw.AccessLogField.contextAuthorizerIntegrationStatus()}`
|
|
431
|
-
),
|
|
432
|
-
},
|
|
433
|
-
});
|
|
434
|
-
```
|
|
435
|
-
|
|
436
380
|
## WebSocket API
|
|
437
381
|
|
|
438
382
|
A WebSocket API in API Gateway is a collection of WebSocket routes that are integrated with backend HTTP endpoints,
|
|
@@ -523,6 +467,14 @@ const arn = api.arnForExecuteApiV2('$connect', 'dev');
|
|
|
523
467
|
|
|
524
468
|
For a detailed explanation of this function, including usage and examples, please refer to the [Generating ARN for Execute API](#generating-arn-for-execute-api) section under HTTP API.
|
|
525
469
|
|
|
470
|
+
To disable schema validation, set `disableSchemaValidation` to true.
|
|
471
|
+
|
|
472
|
+
```ts
|
|
473
|
+
new apigwv2.WebSocketApi(this, 'api', {
|
|
474
|
+
disableSchemaValidation: true,
|
|
475
|
+
});
|
|
476
|
+
```
|
|
477
|
+
|
|
526
478
|
You can configure IP address type for the API endpoint using `ipAddressType` property.
|
|
527
479
|
Valid values are `IPV4` (default) and `DUAL_STACK`.
|
|
528
480
|
|
|
@@ -569,6 +521,150 @@ const webSocketApi = new apigwv2.WebSocketApi(this, 'mywsapi',{
|
|
|
569
521
|
});
|
|
570
522
|
```
|
|
571
523
|
|
|
524
|
+
## Usage Plan and API Keys
|
|
525
|
+
|
|
526
|
+
A usage plan specifies who can access one or more deployed WebSocket API stages, and the rate at which they can be accessed. The plan uses API keys to
|
|
527
|
+
identify API clients and meters access to the associated API stages for each key. Usage plans also allow configuring throttling limits and quota limits that are
|
|
528
|
+
enforced on individual client API keys.
|
|
529
|
+
|
|
530
|
+
The following example shows how to create and associate a usage plan and an API key for WebSocket APIs:
|
|
531
|
+
|
|
532
|
+
```ts
|
|
533
|
+
const apiKey = new apigwv2.ApiKey(this, "ApiKey");
|
|
534
|
+
|
|
535
|
+
const usagePlan = new apigwv2.UsagePlan(this, "UsagePlan", {
|
|
536
|
+
usagePlanName: "WebSocketUsagePlan",
|
|
537
|
+
throttle: {
|
|
538
|
+
rateLimit: 10,
|
|
539
|
+
burstLimit: 2
|
|
540
|
+
}
|
|
541
|
+
});
|
|
542
|
+
|
|
543
|
+
usagePlan.addApiKey(apiKey);
|
|
544
|
+
```
|
|
545
|
+
|
|
546
|
+
To associate a plan to a given WebSocketAPI stage:
|
|
547
|
+
|
|
548
|
+
```ts
|
|
549
|
+
const api = new apigwv2.WebSocketApi(this, 'my-api');
|
|
550
|
+
const stage = new apigwv2.WebSocketStage(this, 'my-stage', {
|
|
551
|
+
webSocketApi: api,
|
|
552
|
+
stageName: 'dev',
|
|
553
|
+
});
|
|
554
|
+
|
|
555
|
+
const usagePlan = new apigwv2.UsagePlan(this, 'my-usage-plan', {
|
|
556
|
+
usagePlanName: 'Basic',
|
|
557
|
+
});
|
|
558
|
+
|
|
559
|
+
usagePlan.addApiStage({
|
|
560
|
+
api: api,
|
|
561
|
+
stage: stage,
|
|
562
|
+
});
|
|
563
|
+
```
|
|
564
|
+
Existing usage plans can be imported into a CDK app using its id.
|
|
565
|
+
|
|
566
|
+
```ts
|
|
567
|
+
const usagePlan: apigwv2.IUsagePlan = apigwv2.UsagePlan.fromUsagePlanId(this, 'imported-usage-plan', '<usage-plan-id>');
|
|
568
|
+
```
|
|
569
|
+
|
|
570
|
+
The name and value of the API Key can be specified at creation; if not provided, a name and a value will be automatically generated by API Gateway.
|
|
571
|
+
|
|
572
|
+
```ts
|
|
573
|
+
// Auto-generated name and value
|
|
574
|
+
const autoKey = new apigwv2.ApiKey(this, 'AutoKey');
|
|
575
|
+
|
|
576
|
+
// Explicit name and value
|
|
577
|
+
const explicitKey = new apigwv2.ApiKey(this, 'ExplicitKey', {
|
|
578
|
+
apiKeyName: 'MyWebSocketApiKey',
|
|
579
|
+
value: 'MyApiKeyThatIsAtLeast20Characters',
|
|
580
|
+
});
|
|
581
|
+
```
|
|
582
|
+
|
|
583
|
+
Existing API keys can also be imported into a CDK app using its id.
|
|
584
|
+
|
|
585
|
+
```ts
|
|
586
|
+
const importedKey = apigwv2.ApiKey.fromApiKeyId(this, 'imported-key', '<api-key-id>');
|
|
587
|
+
```
|
|
588
|
+
|
|
589
|
+
The "grant" methods can be used to give prepackaged sets of permissions to other resources. The
|
|
590
|
+
following code provides read permission to an API key.
|
|
591
|
+
|
|
592
|
+
```ts
|
|
593
|
+
import * as iam from 'aws-cdk-lib/aws-iam';
|
|
594
|
+
|
|
595
|
+
const user = new iam.User(this, 'User');
|
|
596
|
+
const apiKey = new apigwv2.ApiKey(this, 'ApiKey', {
|
|
597
|
+
customerId: 'test-customer',
|
|
598
|
+
});
|
|
599
|
+
apiKey.grantRead(user);
|
|
600
|
+
```
|
|
601
|
+
|
|
602
|
+
### Adding an API Key to an imported WebSocketApi
|
|
603
|
+
|
|
604
|
+
API Keys for WebSocket APIs are associated through Usage Plans, not directly to stages. When you import a WebSocketApi, you need to create a Usage Plan that references the
|
|
605
|
+
imported stage and then associate the API key with that Usage Plan.
|
|
606
|
+
|
|
607
|
+
```ts
|
|
608
|
+
declare const webSocketApi: apigwv2.IWebSocketApi;
|
|
609
|
+
|
|
610
|
+
const importedStage = apigwv2.WebSocketStage.fromWebSocketStageAttributes(this, 'imported-stage', {
|
|
611
|
+
stageName: 'myStage',
|
|
612
|
+
api: webSocketApi,
|
|
613
|
+
});
|
|
614
|
+
|
|
615
|
+
const apiKey = new apigwv2.ApiKey(this, 'MyApiKey');
|
|
616
|
+
|
|
617
|
+
const usagePlan = new apigwv2.UsagePlan(this, 'MyUsagePlan', {
|
|
618
|
+
apiStages: [{ api: webSocketApi, stage: importedStage }],
|
|
619
|
+
});
|
|
620
|
+
|
|
621
|
+
usagePlan.addApiKey(apiKey);
|
|
622
|
+
```
|
|
623
|
+
|
|
624
|
+
### Multiple API Keys
|
|
625
|
+
|
|
626
|
+
It is possible to specify multiple API keys for a given Usage Plan, by calling `usagePlan.addApiKey()`.
|
|
627
|
+
|
|
628
|
+
When using multiple API keys, you may need to ensure that the CloudFormation logical ids of the API keys remain consistent across deployments. You can set the logical id as part of the `addApiKey()` method
|
|
629
|
+
|
|
630
|
+
```ts
|
|
631
|
+
declare const usagePlan: apigwv2.UsagePlan;
|
|
632
|
+
declare const apiKey: apigwv2.ApiKey;
|
|
633
|
+
|
|
634
|
+
usagePlan.addApiKey(apiKey, {
|
|
635
|
+
overrideLogicalId: 'MyCustomLogicalId',
|
|
636
|
+
});
|
|
637
|
+
```
|
|
638
|
+
|
|
639
|
+
### Rate Limited API Key
|
|
640
|
+
|
|
641
|
+
In scenarios where you need to create a single api key and configure rate limiting for it, you can use `RateLimitedApiKey`.
|
|
642
|
+
This construct lets you specify rate limiting properties which should be applied only to the api key being created.
|
|
643
|
+
The API key created has the specified rate limits, such as quota and throttles, applied.
|
|
644
|
+
|
|
645
|
+
The following example shows how to use a rate limited api key :
|
|
646
|
+
|
|
647
|
+
```ts
|
|
648
|
+
declare const api: apigwv2.WebSocketApi;
|
|
649
|
+
declare const stage: apigwv2.WebSocketStage;
|
|
650
|
+
|
|
651
|
+
const key = new apigwv2.RateLimitedApiKey(this, 'rate-limited-api-key', {
|
|
652
|
+
customerId: 'test-customer',
|
|
653
|
+
apiStages: [{
|
|
654
|
+
api: api,
|
|
655
|
+
stage: stage
|
|
656
|
+
}],
|
|
657
|
+
quota: {
|
|
658
|
+
limit: 10000,
|
|
659
|
+
period: apigwv2.Period.MONTH
|
|
660
|
+
},
|
|
661
|
+
throttle: {
|
|
662
|
+
rateLimit: 100,
|
|
663
|
+
burstLimit: 200
|
|
664
|
+
}
|
|
665
|
+
});
|
|
666
|
+
```
|
|
667
|
+
|
|
572
668
|
## Common Config
|
|
573
669
|
|
|
574
670
|
Common config for both HTTP API and WebSocket API
|
|
@@ -589,3 +685,71 @@ new apigwv2.HttpStage(this, 'Stage', {
|
|
|
589
685
|
detailedMetricsEnabled: true,
|
|
590
686
|
});
|
|
591
687
|
```
|
|
688
|
+
|
|
689
|
+
### Access Logging
|
|
690
|
+
|
|
691
|
+
You can turn on logging to write logs to CloudWatch Logs.
|
|
692
|
+
Read more at Configure logging for [HTTP APIs](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-logging.html) or [WebSocket APIs](https://docs.aws.amazon.com/apigateway/latest/developerguide/websocket-api-logging.html)
|
|
693
|
+
|
|
694
|
+
```ts
|
|
695
|
+
import * as logs from 'aws-cdk-lib/aws-logs';
|
|
696
|
+
|
|
697
|
+
declare const httpApi: apigwv2.HttpApi;
|
|
698
|
+
declare const webSocketApi : apigwv2.WebSocketApi;
|
|
699
|
+
declare const logGroup: logs.LogGroup;
|
|
700
|
+
|
|
701
|
+
new apigwv2.HttpStage(this, 'HttpStage', {
|
|
702
|
+
httpApi,
|
|
703
|
+
accessLogSettings: {
|
|
704
|
+
destination: new apigwv2.LogGroupLogDestination(logGroup),
|
|
705
|
+
},
|
|
706
|
+
});
|
|
707
|
+
|
|
708
|
+
new apigwv2.WebSocketStage(this, 'WebSocketStage', {
|
|
709
|
+
webSocketApi,
|
|
710
|
+
stageName: 'dev',
|
|
711
|
+
accessLogSettings: {
|
|
712
|
+
destination: new apigwv2.LogGroupLogDestination(logGroup),
|
|
713
|
+
},
|
|
714
|
+
});
|
|
715
|
+
```
|
|
716
|
+
|
|
717
|
+
The following code will generate the access log in the [CLF format](https://en.wikipedia.org/wiki/Common_Log_Format).
|
|
718
|
+
|
|
719
|
+
```ts
|
|
720
|
+
import * as apigw from 'aws-cdk-lib/aws-apigateway';
|
|
721
|
+
import * as logs from 'aws-cdk-lib/aws-logs';
|
|
722
|
+
|
|
723
|
+
declare const api: apigwv2.HttpApi;
|
|
724
|
+
declare const logGroup: logs.LogGroup;
|
|
725
|
+
|
|
726
|
+
const stage = new apigwv2.HttpStage(this, 'Stage', {
|
|
727
|
+
httpApi: api,
|
|
728
|
+
accessLogSettings: {
|
|
729
|
+
destination: new apigwv2.LogGroupLogDestination(logGroup),
|
|
730
|
+
format: apigw.AccessLogFormat.clf(),
|
|
731
|
+
},
|
|
732
|
+
});
|
|
733
|
+
```
|
|
734
|
+
|
|
735
|
+
You can also configure your own access log format by using the `AccessLogFormat.custom()` API.
|
|
736
|
+
`AccessLogField` provides commonly used fields. The following code configures access log to contain.
|
|
737
|
+
|
|
738
|
+
```ts
|
|
739
|
+
import * as apigw from 'aws-cdk-lib/aws-apigateway';
|
|
740
|
+
import * as logs from 'aws-cdk-lib/aws-logs';
|
|
741
|
+
|
|
742
|
+
declare const api: apigwv2.HttpApi;
|
|
743
|
+
declare const logGroup: logs.LogGroup;
|
|
744
|
+
|
|
745
|
+
const stage = new apigwv2.HttpStage(this, 'Stage', {
|
|
746
|
+
httpApi: api,
|
|
747
|
+
accessLogSettings: {
|
|
748
|
+
destination: new apigwv2.LogGroupLogDestination(logGroup),
|
|
749
|
+
format: apigw.AccessLogFormat.custom(
|
|
750
|
+
`${apigw.AccessLogField.contextRequestId()} ${apigw.AccessLogField.contextErrorMessage()} ${apigw.AccessLogField.contextErrorMessageString()}
|
|
751
|
+
${apigw.AccessLogField.contextAuthorizerError()} ${apigw.AccessLogField.contextAuthorizerIntegrationStatus()}`
|
|
752
|
+
),
|
|
753
|
+
},
|
|
754
|
+
});
|
|
755
|
+
```
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.api-dualstack.ts
CHANGED
|
@@ -4,14 +4,13 @@ import * as cdk from 'aws-cdk-lib';
|
|
|
4
4
|
import * as apigw from 'aws-cdk-lib/aws-apigatewayv2';
|
|
5
5
|
|
|
6
6
|
const app = new cdk.App();
|
|
7
|
-
const stack = new cdk.Stack(app, '
|
|
7
|
+
const stack = new cdk.Stack(app, 'DualStackWebsocketApiStack');
|
|
8
8
|
|
|
9
|
-
new apigw.
|
|
10
|
-
routeSelectionExpression: true,
|
|
9
|
+
new apigw.WebSocketApi(stack, 'WebSocketApi', {
|
|
11
10
|
ipAddressType: apigw.IpAddressType.DUAL_STACK,
|
|
12
11
|
});
|
|
13
12
|
|
|
14
|
-
new IntegTest(app, '
|
|
13
|
+
new IntegTest(app, 'DualStackWebsocketApiInteg', {
|
|
15
14
|
testCases: [stack],
|
|
16
15
|
});
|
|
17
16
|
|
|
@@ -6,11 +6,13 @@ import * as apigw from 'aws-cdk-lib/aws-apigatewayv2';
|
|
|
6
6
|
const app = new cdk.App();
|
|
7
7
|
const stack = new cdk.Stack(app, 'aws-cdk-aws-apigatewayv2');
|
|
8
8
|
|
|
9
|
-
new apigw.
|
|
10
|
-
|
|
9
|
+
new apigw.WebSocketApi(stack, 'WebSocketApi');
|
|
10
|
+
|
|
11
|
+
new apigw.WebSocketApi(stack, 'WebSocketApiWithProps', {
|
|
12
|
+
disableSchemaValidation: true,
|
|
11
13
|
});
|
|
12
14
|
|
|
13
|
-
new IntegTest(app, '
|
|
15
|
+
new IntegTest(app, 'web-socket-api', {
|
|
14
16
|
testCases: [stack],
|
|
15
17
|
});
|
|
16
18
|
|
|
@@ -6,13 +6,16 @@ import * as apigw from 'aws-cdk-lib/aws-apigateway';
|
|
|
6
6
|
import * as logs from 'aws-cdk-lib/aws-logs';
|
|
7
7
|
|
|
8
8
|
const app = new cdk.App();
|
|
9
|
-
const stack = new cdk.Stack(app, 'aws-cdk-aws-apigatewayv2-
|
|
9
|
+
const stack = new cdk.Stack(app, 'aws-cdk-aws-apigatewayv2-websocket-stage');
|
|
10
10
|
|
|
11
|
-
const
|
|
11
|
+
const logGroup = new logs.LogGroup(stack, 'MyLogGroup', {
|
|
12
|
+
removalPolicy: cdk.RemovalPolicy.DESTROY,
|
|
13
|
+
});
|
|
12
14
|
|
|
13
|
-
const
|
|
14
|
-
new apigwv2.
|
|
15
|
-
|
|
15
|
+
const webSocketApi = new apigwv2.WebSocketApi(stack, 'WebSocketApi');
|
|
16
|
+
new apigwv2.WebSocketStage(stack, 'WebSocketStage', {
|
|
17
|
+
webSocketApi,
|
|
18
|
+
stageName: 'dev',
|
|
16
19
|
throttle: {
|
|
17
20
|
rateLimit: 1000,
|
|
18
21
|
burstLimit: 1000,
|
|
@@ -20,7 +23,7 @@ new apigwv2.HttpStage(stack, 'HttpStageWithProperties', {
|
|
|
20
23
|
detailedMetricsEnabled: true,
|
|
21
24
|
description: 'My Stage',
|
|
22
25
|
accessLogSettings: {
|
|
23
|
-
destination: new apigwv2.LogGroupLogDestination(
|
|
26
|
+
destination: new apigwv2.LogGroupLogDestination(logGroup),
|
|
24
27
|
format: apigw.AccessLogFormat.custom(JSON.stringify({
|
|
25
28
|
extendedRequestId: apigw.AccessLogField.contextExtendedRequestId(),
|
|
26
29
|
requestTime: apigw.AccessLogField.contextRequestTime(),
|
|
@@ -28,6 +31,6 @@ new apigwv2.HttpStage(stack, 'HttpStageWithProperties', {
|
|
|
28
31
|
},
|
|
29
32
|
});
|
|
30
33
|
|
|
31
|
-
new IntegTest(app, 'aws-cdk-aws-apigatewayv2-
|
|
34
|
+
new IntegTest(app, 'aws-cdk-aws-apigatewayv2-websocket-stage-test', {
|
|
32
35
|
testCases: [stack],
|
|
33
36
|
});
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2/integ.usage-plan.ts
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
2
|
+
import * as cdk from 'aws-cdk-lib';
|
|
3
|
+
import { WebSocketApi, WebSocketStage, UsagePlan, ApiKey, RateLimitedApiKey, Period } from 'aws-cdk-lib/aws-apigatewayv2';
|
|
4
|
+
|
|
5
|
+
const app = new cdk.App();
|
|
6
|
+
|
|
7
|
+
const stack = new cdk.Stack(app, 'aws-cdk-aws-apigatewayv2-websocket-usage-plan');
|
|
8
|
+
|
|
9
|
+
const webSocketApi = new WebSocketApi(stack, 'WebSocketApi');
|
|
10
|
+
|
|
11
|
+
const webSocketStage = new WebSocketStage(stack, 'WebSocketStage', {
|
|
12
|
+
webSocketApi,
|
|
13
|
+
stageName: 'dev',
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
const apiKey = new ApiKey(stack, 'ApiKey', {
|
|
17
|
+
apiKeyName: 'my-api-key',
|
|
18
|
+
value: 'MyApiKeyThatIsAtLeast20Characters',
|
|
19
|
+
description: 'Basic api-key',
|
|
20
|
+
customerId: 'my-customer',
|
|
21
|
+
enabled: true,
|
|
22
|
+
generateDistinctId: true,
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
const usagePlan = new UsagePlan(stack, 'UsagePlan', {
|
|
26
|
+
apiStages: [{
|
|
27
|
+
api: webSocketApi,
|
|
28
|
+
stage: webSocketStage,
|
|
29
|
+
}],
|
|
30
|
+
description: 'Basic usage plan',
|
|
31
|
+
quota: {
|
|
32
|
+
limit: 10000,
|
|
33
|
+
offset: 1,
|
|
34
|
+
period: Period.MONTH,
|
|
35
|
+
},
|
|
36
|
+
throttle: {
|
|
37
|
+
rateLimit: 100,
|
|
38
|
+
burstLimit: 200,
|
|
39
|
+
},
|
|
40
|
+
usagePlanName: 'WebSocketUsagePlan',
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
const webSocketStage2 = new WebSocketStage(stack, 'WebSocketStage2', {
|
|
44
|
+
webSocketApi,
|
|
45
|
+
stageName: 'dev2',
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
usagePlan.addApiKey(apiKey);
|
|
49
|
+
usagePlan.addApiStage({ api: webSocketApi, stage: webSocketStage2 });
|
|
50
|
+
|
|
51
|
+
const webSocketStage3 = new WebSocketStage(stack, 'WebSocketStage3', {
|
|
52
|
+
webSocketApi,
|
|
53
|
+
stageName: 'dev3',
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
new RateLimitedApiKey(stack, 'RateLimitedApiKey', {
|
|
57
|
+
apiKeyName: 'my-rate-limited-api-key',
|
|
58
|
+
value: 'MyRateLimitedApiKeyThatIsAtLeast20Characters',
|
|
59
|
+
description: 'Basic rate-limited-api-key',
|
|
60
|
+
customerId: 'my-customer',
|
|
61
|
+
enabled: true,
|
|
62
|
+
generateDistinctId: true,
|
|
63
|
+
apiStages: [{
|
|
64
|
+
api: webSocketApi,
|
|
65
|
+
stage: webSocketStage3,
|
|
66
|
+
}],
|
|
67
|
+
quota: {
|
|
68
|
+
limit: 10000,
|
|
69
|
+
offset: 1,
|
|
70
|
+
period: Period.MONTH,
|
|
71
|
+
},
|
|
72
|
+
throttle: {
|
|
73
|
+
rateLimit: 100,
|
|
74
|
+
burstLimit: 200,
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
new integ.IntegTest(app, 'WebSocketUsagePlanInteg', {
|
|
79
|
+
testCases: [stack],
|
|
80
|
+
});
|
|
@@ -1,46 +1,53 @@
|
|
|
1
1
|
import * as apigatewayv2 from 'aws-cdk-lib/aws-apigatewayv2';
|
|
2
|
+
import { WebSocketLambdaIntegration } from 'aws-cdk-lib/aws-apigatewayv2-integrations';
|
|
2
3
|
import * as iam from 'aws-cdk-lib/aws-iam';
|
|
4
|
+
import { Code, Function, Runtime } from 'aws-cdk-lib/aws-lambda';
|
|
3
5
|
import * as cdk from 'aws-cdk-lib';
|
|
4
|
-
import {
|
|
6
|
+
import { Stack } from 'aws-cdk-lib';
|
|
7
|
+
import * as integ from '@aws-cdk/integ-tests-alpha';
|
|
8
|
+
import { WebSocketIamAuthorizer } from 'aws-cdk-lib/aws-apigatewayv2-authorizers';
|
|
5
9
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
method: apigatewayv2.HttpMethod.GET,
|
|
12
|
-
uri: 'https://www.example.com/',
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
const app = new cdk.App();
|
|
10
|
+
const app = new cdk.App({
|
|
11
|
+
postCliContext: {
|
|
12
|
+
'@aws-cdk/aws-lambda:useCdkManagedLogGroup': false,
|
|
13
|
+
},
|
|
14
|
+
});
|
|
18
15
|
const stack = new cdk.Stack(app, 'IntegApiGatewayV2Iam');
|
|
19
16
|
const user = new iam.User(stack, 'User');
|
|
20
17
|
const userAccessKey = new iam.AccessKey(stack, 'UserAccess', {
|
|
21
18
|
user,
|
|
22
19
|
});
|
|
23
20
|
|
|
24
|
-
const
|
|
25
|
-
|
|
21
|
+
const handler = new Function(stack, 'auth-function', {
|
|
22
|
+
runtime: Runtime.NODEJS_20_X,
|
|
23
|
+
code: Code.fromInline('exports.handler = () => {return true}'),
|
|
24
|
+
handler: 'index.handler',
|
|
26
25
|
});
|
|
27
26
|
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
const webSocketApi = new apigatewayv2.WebSocketApi(stack, 'WebSocketApi', {
|
|
28
|
+
connectRouteOptions: {
|
|
29
|
+
integration: new WebSocketLambdaIntegration('WebSocketLambdaIntegration', handler),
|
|
30
|
+
authorizer: new WebSocketIamAuthorizer(),
|
|
31
|
+
},
|
|
31
32
|
});
|
|
32
33
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
integration: new ExampleComIntegration('examplecom'),
|
|
37
|
-
path: '/books/{book}',
|
|
34
|
+
const arn = Stack.of(stack).formatArn({
|
|
35
|
+
service: 'execute-api',
|
|
36
|
+
resource: webSocketApi.apiId,
|
|
38
37
|
});
|
|
39
38
|
|
|
40
|
-
|
|
39
|
+
user.attachInlinePolicy(new iam.Policy(stack, 'AllowInvoke', {
|
|
40
|
+
statements: [
|
|
41
|
+
new iam.PolicyStatement({
|
|
42
|
+
actions: ['execute-api:Invoke'],
|
|
43
|
+
effect: iam.Effect.ALLOW,
|
|
44
|
+
resources: [arn],
|
|
45
|
+
}),
|
|
46
|
+
],
|
|
47
|
+
}));
|
|
41
48
|
|
|
42
|
-
new
|
|
43
|
-
|
|
49
|
+
new integ.IntegTest(app, 'ApiGatewayV2WebSocketIamTest', {
|
|
50
|
+
testCases: [stack],
|
|
44
51
|
});
|
|
45
52
|
|
|
46
53
|
new cdk.CfnOutput(stack, 'TESTACCESSKEYID', {
|
|
@@ -55,15 +62,4 @@ new cdk.CfnOutput(stack, 'TESTREGION', {
|
|
|
55
62
|
value: stack.region,
|
|
56
63
|
});
|
|
57
64
|
|
|
58
|
-
|
|
59
|
-
* Stack verification steps:
|
|
60
|
-
* * Get cURL version 7.75.0 or later so you can use the --aws-sigv4 option
|
|
61
|
-
* * Curl <url>/foo without sigv4 and expect a 403
|
|
62
|
-
* * Curl <url>/books/something without sigv4 and expect a 403
|
|
63
|
-
* * Curl <url>/foo with sigv4 from the authorized user and expect 200
|
|
64
|
-
* * Curl <url>/books/something with sigv4 from the authorized user and expect 200
|
|
65
|
-
*
|
|
66
|
-
* Reference:
|
|
67
|
-
* * Using cURL 7.75.0 or later via the official docker image: docker run --rm curlimages/curl -s -o/dev/null -w"%{http_code}" <url>
|
|
68
|
-
* * Args to enable sigv4 with authorized credentials: --user "$TESTACCESSKEYID:$TESTSECRETACCESSKEY" --aws-sigv4 "aws:amz:$TESTREGION:execute-api"
|
|
69
|
-
*/
|
|
65
|
+
app.synth();
|
|
@@ -20,7 +20,7 @@ const app = new App({
|
|
|
20
20
|
const stack = new Stack(app, 'AuthorizerInteg');
|
|
21
21
|
|
|
22
22
|
const authHandler = new lambda.Function(stack, 'auth-function', {
|
|
23
|
-
runtime: lambda.Runtime.
|
|
23
|
+
runtime: lambda.Runtime.NODEJS_20_X,
|
|
24
24
|
handler: 'index.handler',
|
|
25
25
|
code: lambda.Code.fromAsset(path.join(__dirname, '..', 'auth-handler'), { exclude: ['*.ts'] }),
|
|
26
26
|
});
|
|
@@ -43,7 +43,7 @@ const httpApiWithDefaultAuthorizer = new HttpApi(stack, 'MyHttpApiWithDefaultAut
|
|
|
43
43
|
});
|
|
44
44
|
|
|
45
45
|
const handler = new lambda.Function(stack, 'lambda', {
|
|
46
|
-
runtime: lambda.Runtime.
|
|
46
|
+
runtime: lambda.Runtime.NODEJS_20_X,
|
|
47
47
|
handler: 'index.handler',
|
|
48
48
|
code: lambda.AssetCode.fromAsset(path.join(__dirname, '..', 'integ.lambda.handler'), { exclude: ['*.ts'] }),
|
|
49
49
|
});
|
|
@@ -33,7 +33,7 @@ const httpApiWithDefaultAuthorizer = new HttpApi(stack, 'MyHttpApiWithDefaultAut
|
|
|
33
33
|
});
|
|
34
34
|
|
|
35
35
|
const handler = new lambda.Function(stack, 'lambda', {
|
|
36
|
-
runtime: lambda.Runtime.
|
|
36
|
+
runtime: lambda.Runtime.NODEJS_20_X,
|
|
37
37
|
handler: 'index.handler',
|
|
38
38
|
code: lambda.AssetCode.fromAsset(path.join(__dirname, '..', 'integ.user-pool.handler'), { exclude: ['*.ts'] }),
|
|
39
39
|
});
|
cdk_api_mcp_server/resources/aws-cdk/constructs/aws-cdk-lib/aws-apigatewayv2-integrations/README.md
CHANGED
|
@@ -47,6 +47,41 @@ httpApi.addRoutes({
|
|
|
47
47
|
});
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
+
#### Lambda Integration Permissions
|
|
51
|
+
|
|
52
|
+
By default, creating a `HttpLambdaIntegration` will add a permission for API Gateway to invoke your AWS Lambda function, scoped to the specific route which uses the integration.
|
|
53
|
+
|
|
54
|
+
If you reuse the same AWS Lambda function for many integrations, the AWS Lambda permission policy size can be exceeded by adding a separate policy statement for each route which invokes the AWS Lambda function. To avoid this, you can opt to scope permissions to any route on the API by setting `scopePermissionToRoute` to `false`, and this will ensure only a single policy statement is added to the AWS Lambda permission policy.
|
|
55
|
+
|
|
56
|
+
```ts
|
|
57
|
+
import { HttpLambdaIntegration } from 'aws-cdk-lib/aws-apigatewayv2-integrations';
|
|
58
|
+
|
|
59
|
+
declare const booksDefaultFn: lambda.Function;
|
|
60
|
+
|
|
61
|
+
const httpApi = new apigwv2.HttpApi(this, 'HttpApi');
|
|
62
|
+
|
|
63
|
+
const getBooksIntegration = new HttpLambdaIntegration('GetBooksIntegration', booksDefaultFn, {
|
|
64
|
+
scopePermissionToRoute: false,
|
|
65
|
+
});
|
|
66
|
+
const createBookIntegration = new HttpLambdaIntegration('CreateBookIntegration', booksDefaultFn, {
|
|
67
|
+
scopePermissionToRoute: false,
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
httpApi.addRoutes({
|
|
71
|
+
path: '/books',
|
|
72
|
+
methods: [ apigwv2.HttpMethod.GET ],
|
|
73
|
+
integration: getBooksIntegration,
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
httpApi.addRoutes({
|
|
77
|
+
path: '/books',
|
|
78
|
+
methods: [ apigwv2.HttpMethod.POST ],
|
|
79
|
+
integration: createBookIntegration,
|
|
80
|
+
});
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
In the above example, a single permission is added, shared by both `getBookIntegration` and `createBookIntegration`.
|
|
84
|
+
|
|
50
85
|
### HTTP Proxy
|
|
51
86
|
|
|
52
87
|
HTTP Proxy integrations enables connecting an HTTP API route to a publicly routable HTTP endpoint. When a client
|
|
@@ -15,7 +15,7 @@ const httpApi = new HttpApi(stack, 'test-apigwv2-add-subroute-integration');
|
|
|
15
15
|
|
|
16
16
|
// Regular Lambda Function
|
|
17
17
|
const lambdaHandler = new lambda.Function(stack, 'first-lambda-function', {
|
|
18
|
-
runtime: lambda.Runtime.
|
|
18
|
+
runtime: lambda.Runtime.NODEJS_20_X,
|
|
19
19
|
handler: 'index.handler',
|
|
20
20
|
code: new lambda.InlineCode('exports.handler = async function(event, context) { return { statusCode: 200, body: \'success-hit-first-lambda\' }; };'),
|
|
21
21
|
});
|
|
@@ -23,7 +23,7 @@ const lambdaHandlerIntegration = new HttpLambdaIntegration('my-lambda-integratio
|
|
|
23
23
|
|
|
24
24
|
// Lambda created with Function.fromFunctionAttributes()
|
|
25
25
|
const secondLambdaHandler = new lambda.Function(stack, 'second-lambda-function', {
|
|
26
|
-
runtime: lambda.Runtime.
|
|
26
|
+
runtime: lambda.Runtime.NODEJS_20_X,
|
|
27
27
|
handler: 'index.handler',
|
|
28
28
|
code: new lambda.InlineCode('exports.handler = async function(event, context) { return { statusCode: 200, body: \'success-hit-second-lambda\' }; };'),
|
|
29
29
|
});
|
|
@@ -35,8 +35,8 @@ const lambdaFromFunctionAttributesIntegration = new HttpLambdaIntegration('my-re
|
|
|
35
35
|
|
|
36
36
|
// Lambda created with Function.fromFunctionName()
|
|
37
37
|
const thirdLambdaName = 'third-lambda-function';
|
|
38
|
-
new lambda.Function(stack, thirdLambdaName, {
|
|
39
|
-
runtime: lambda.Runtime.
|
|
38
|
+
const thirdLambdaFunction = new lambda.Function(stack, thirdLambdaName, {
|
|
39
|
+
runtime: lambda.Runtime.NODEJS_20_X,
|
|
40
40
|
handler: 'index.handler',
|
|
41
41
|
code: new lambda.InlineCode('exports.handler = async function(event, context) { return { statusCode: 200, body: \'success-hit-third-lambda\' }; };'),
|
|
42
42
|
functionName: thirdLambdaName,
|
|
@@ -83,6 +83,9 @@ httpApi.addRoutes({
|
|
|
83
83
|
integration: lambdaFromFunctionNameIntegration,
|
|
84
84
|
});
|
|
85
85
|
|
|
86
|
+
httpApi.node.addDependency(secondLambdaHandler);
|
|
87
|
+
httpApi.node.addDependency(thirdLambdaFunction);
|
|
88
|
+
|
|
86
89
|
// Integ Test Assertions
|
|
87
90
|
const integ = new IntegTest(app, 'Integ', { testCases: [stack] });
|
|
88
91
|
|