@aws-solutions-constructs/aws-apigateway-sagemakerendpoint 2.79.1 → 2.80.0

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.
package/.jsii CHANGED
@@ -8,8 +8,8 @@
8
8
  "url": "https://aws.amazon.com"
9
9
  },
10
10
  "dependencies": {
11
- "@aws-solutions-constructs/core": "2.79.1",
12
- "aws-cdk-lib": "^2.177.0",
11
+ "@aws-solutions-constructs/core": "2.80.0",
12
+ "aws-cdk-lib": "^2.179.0",
13
13
  "constructs": "^10.0.0"
14
14
  },
15
15
  "dependencyClosure": {
@@ -39,32 +39,6 @@
39
39
  }
40
40
  }
41
41
  },
42
- "@aws-cdk/asset-kubectl-v20": {
43
- "targets": {
44
- "dotnet": {
45
- "namespace": "Amazon.CDK.Asset.KubectlV20",
46
- "packageId": "Amazon.CDK.Asset.KubectlV20"
47
- },
48
- "go": {
49
- "moduleName": "github.com/cdklabs/awscdk-asset-kubectl-go",
50
- "packageName": "kubectlv20"
51
- },
52
- "java": {
53
- "maven": {
54
- "artifactId": "cdk-asset-kubectl-v20",
55
- "groupId": "software.amazon.awscdk"
56
- },
57
- "package": "software.amazon.awscdk.cdk.asset.kubectl.v20"
58
- },
59
- "js": {
60
- "npm": "@aws-cdk/asset-kubectl-v20"
61
- },
62
- "python": {
63
- "distName": "aws-cdk.asset-kubectl-v20",
64
- "module": "aws_cdk.asset_kubectl_v20"
65
- }
66
- }
67
- },
68
42
  "@aws-cdk/asset-node-proxy-agent-v6": {
69
43
  "targets": {
70
44
  "dotnet": {
@@ -3841,19 +3815,6 @@
3841
3815
  }
3842
3816
  }
3843
3817
  },
3844
- "aws-cdk-lib.lambda_layer_kubectl": {
3845
- "targets": {
3846
- "dotnet": {
3847
- "namespace": "Amazon.CDK.LambdaLayer.Kubectl"
3848
- },
3849
- "java": {
3850
- "package": "software.amazon.awscdk.lambdalayer.kubectl"
3851
- },
3852
- "python": {
3853
- "module": "aws_cdk.lambda_layer_kubectl"
3854
- }
3855
- }
3856
- },
3857
3818
  "aws-cdk-lib.lambda_layer_node_proxy_agent": {
3858
3819
  "targets": {
3859
3820
  "dotnet": {
@@ -3980,7 +3941,7 @@
3980
3941
  },
3981
3942
  "name": "@aws-solutions-constructs/aws-apigateway-sagemakerendpoint",
3982
3943
  "readme": {
3983
- "markdown": "# aws-apigateway-sagemakerendpoint module\n<!--BEGIN STABILITY BANNER-->\n\n---\n\n![Stability: Experimental](https://img.shields.io/badge/stability-Experimental-important.svg?style=for-the-badge)\n\n> All classes are under active development and subject to non-backward compatible changes or removal in any\n> future version. These are not subject to the [Semantic Versioning](https://semver.org/) model.\n> This means that while you may use them, you may need to update your source code when upgrading to a newer version of this package.\n\n---\n<!--END STABILITY BANNER-->\n\n| **Reference Documentation**:| <span style=\"font-weight: normal\">https://docs.aws.amazon.com/solutions/latest/constructs/</span>|\n|:-------------|:-------------|\n<div style=\"height:8px\"></div>\n\n| **Language** | **Package** |\n|:-------------|-----------------|\n|![Python Logo](https://docs.aws.amazon.com/cdk/api/latest/img/python32.png) Python|`aws_solutions_constructs.aws_apigateway_sagemakerendpoint`|\n|![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript|`@aws-solutions-constructs/aws-apigateway-sagemakerendpoint`|\n|![Java Logo](https://docs.aws.amazon.com/cdk/api/latest/img/java32.png) Java|`software.amazon.awsconstructs.services.apigatewaysagemakerendpoint`|\n\n## Overview\n\nThis AWS Solutions Construct implements an Amazon API Gateway connected to an Amazon SageMaker endpoint pattern.\n\nHere is a minimal deployable pattern definition:\n\nTypescript\n``` typescript\nimport { Construct } from 'constructs';\nimport { Stack, StackProps } from 'aws-cdk-lib';\nimport { ApiGatewayToSageMakerEndpoint, ApiGatewayToSageMakerEndpointProps } from '@aws-solutions-constructs/aws-apigateway-sagemakerendpoint';\n\n// Below is an example VTL (Velocity Template Language) mapping template for mapping the Api GET request to the Sagemaker POST request\nconst requestTemplate = `\n{\n \"instances\": [\n # set( $user_id = $input.params(\"user_id\") )\n # set( $items = $input.params(\"items\") )\n # foreach( $item in $items.split(\",\") )\n # if( $foreach.hasNext ),#end\n {\"in0\": [$user_id], \"in1\": [$item]}\n $esc.newline\n # end\n ]\n}`\n\n// Replace 'my-endpoint' with your Sagemaker Inference Endpoint\nnew ApiGatewayToSageMakerEndpoint(this, 'test-apigw-sagemakerendpoint', {\n endpointName: 'my-endpoint',\n resourcePath: '{user_id}',\n requestMappingTemplate: requestTemplate\n});\n```\n\nPython\n``` python\nfrom aws_solutions_constructs.aws_apigateway_sagemakerendpoint import ApiGatewayToSageMakerEndpoint\nfrom aws_cdk import Stack\nfrom constructs import Construct\n\n# Below is an example VTL (Velocity Template Language) mapping template for mapping the Api GET request to the Sagemaker POST request\nrequest_template = \"\"\"\n{\n \"instances\": [\n # set( $user_id = $input.params(\"user_id\") )\n # set( $items = $input.params(\"items\") )\n # foreach( $item in $items.split(\",\") )\n # if( $foreach.hasNext ),#end\n {\"in0\": [$user_id], \"in1\": [$item]}\n $esc.newline\n # end\n ]\n}\"\"\"\n\n# Replace 'my-endpoint' with your Sagemaker Inference Endpoint\nApiGatewayToSageMakerEndpoint(self, 'test-apigw-sagemakerendpoint',\n endpoint_name='my-endpoint',\n resource_path='{user_id}',\n request_mapping_template=request_template\n )\n```\n\nJava\n``` java\nimport software.constructs.Construct;\n\nimport software.amazon.awscdk.Stack;\nimport software.amazon.awscdk.StackProps;\nimport software.amazon.awsconstructs.services.apigatewaysagemakerendpoint.*;\n\n// Create an example VTL (Velocity Template Language) mapping template for mapping the Api GET request to the Sagemaker POST request\nfinal String requestTemplate = \"{\"\n + \"\\\"instances\\\": [\"\n + \"# set( $user_id = $input.params(\\\"user_id\\\") )\"\n + \"# set( $items = $input.params(\\\"items\\\") )\"\n + \"# foreach( $item in $items.split(\\\",\\\") )\"\n + \"# if( $foreach.hasNext ),#end\"\n + \"{\\\"in0\\\": [$user_id], \\\"in1\\\": [$item]}\"\n + \" $esc.newline\"\n + \"# end\"\n + \"]\"\n + \"}\";\n\n// Replace \"\"my-endpoint\"\" with your Sagemaker Inference Endpoint\nnew ApiGatewayToSageMakerEndpoint(this, \"ApiGatewayToSageMakerEndpointPattern\",\n new ApiGatewayToSageMakerEndpointProps.Builder()\n .endpointName(\"my-endpoint\")\n .resourcePath(\"{user_id}\")\n .requestMappingTemplate(requestTemplate)\n .build());\n```\n\n## Pattern Construct Props\n\n| **Name** | **Type** | **Description** |\n|:-------------|:----------------|-----------------|\n|apiGatewayProps?|[`api.RestApiProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_apigateway.RestApiProps.html)|Optional user-provided props to override the default props for the API Gateway.|\n|apiGatewayExecutionRole?|[`iam.Role`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_iam.Role.html)|IAM Role used by API Gateway to invoke the SageMaker endpoint. If not specified, a default role is created with access to `endpointName`.|\n|endpointName|`string`|Name of the deployed SageMaker inference endpoint.|\n|resourceName?|`string`|Optional resource name where the GET method will be available.|\n|resourcePath|`string`|Resource path for the GET method. The variable defined here can be referenced in `requestMappingTemplate`.|\n|requestMappingTemplate|`string`|Mapping template to convert GET requests for the default `application/json` content-type received on the REST API to POST requests expected by the SageMaker endpoint.|\n|additionalRequestTemplates|`{ [contentType: string]: string; }`|Optional Request Templates for content-types other than `application/json`. Use the `requestMappingTemplate` property to set the request template for the `application/json` content-type.|\n|responseMappingTemplate?|`string`|Optional mapping template to convert responses received from the SageMaker endpoint.|\n|logGroupProps?|[`logs.LogGroupProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_logs.LogGroupProps.html)|User provided props to override the default props for for the CloudWatchLogs LogGroup.|\n\n## Pattern Properties\n\n| **Name** | **Type** | **Description** |\n|:-------------|:----------------|-----------------|\n|apiGateway|[`api.RestApi`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_apigateway.RestApi.html)|Returns an instance of the API Gateway REST API created by the pattern.|\n|apiGatewayRole|[`iam.Role`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_iam.Role.html)|Returns an instance of the iam.Role created by the construct for API Gateway.|\n|apiGatewayCloudWatchRole?|[`iam.Role`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_iam.Role.html)|Returns an instance of the iam.Role created by the construct for API Gateway for CloudWatch access.|\n|apiGatewayLogGroup|[`logs.LogGroup`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_logs.LogGroup.html)|Returns an instance of the LogGroup created by the construct for API Gateway access logging to CloudWatch.|\n\n## Sample API Usage\n\n> **Note**: Each SageMaker endpoint is unique, and the response from the API will depend on the deployed model. The example given below assumes the sample from [this blog post](https://aws.amazon.com/blogs/machine-learning/creating-a-machine-learning-powered-rest-api-with-amazon-api-gateway-mapping-templates-and-amazon-sagemaker/). For a reference on how that'd be implemented, please refer to [integ.apigateway-sagemakerendpoint-overwrite.ts](test/integ.apigateway-sagemakerendpoint-overwrite.ts).\n\n| **Method** | **Request Path** | **Query String** | **SageMaker Action** | **Description** |\n|:-------------|:----------------|-----------------|-----------------|-----------------|\n|GET|`/321`| `items=101,131,162` |`sagemaker:InvokeEndpoint`|Retrieves the predictions for a specific user and items.|\n\n## Default settings\nOut of the box implementation of the Construct without any override will set the following defaults:\n\n### Amazon API Gateway\n* Deploy an edge-optimized API endpoint\n* Enable CloudWatch logging for API Gateway\n* Configure least privilege access IAM role for API Gateway\n* Set the default authorizationType for all API methods to IAM\n* Enable X-Ray Tracing\n* Validate request parameters before passing data to SageMaker\n\n## Architecture\n![Architecture Diagram](architecture.png)\n\n***\n&copy; Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved."
3944
+ "markdown": "# aws-apigateway-sagemakerendpoint module\n<!--BEGIN STABILITY BANNER-->\n\n---\n\n![Stability: Experimental](https://img.shields.io/badge/stability-Experimental-important.svg?style=for-the-badge)\n\n> All classes are under active development and subject to non-backward compatible changes or removal in any\n> future version. These are not subject to the [Semantic Versioning](https://semver.org/) model.\n> This means that while you may use them, you may need to update your source code when upgrading to a newer version of this package.\n\n---\n<!--END STABILITY BANNER-->\n\n| **Reference Documentation**:| <span style=\"font-weight: normal\">https://docs.aws.amazon.com/solutions/latest/constructs/</span>|\n|:-------------|:-------------|\n<div style=\"height:8px\"></div>\n\n| **Language** | **Package** |\n|:-------------|-----------------|\n|![Python Logo](https://docs.aws.amazon.com/cdk/api/latest/img/python32.png) Python|`aws_solutions_constructs.aws_apigateway_sagemakerendpoint`|\n|![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript|`@aws-solutions-constructs/aws-apigateway-sagemakerendpoint`|\n|![Java Logo](https://docs.aws.amazon.com/cdk/api/latest/img/java32.png) Java|`software.amazon.awsconstructs.services.apigatewaysagemakerendpoint`|\n\n## Overview\n\nThis AWS Solutions Construct implements an Amazon API Gateway connected to an Amazon SageMaker endpoint pattern.\n\nHere is a minimal deployable pattern definition:\n\nTypescript\n``` typescript\nimport { Construct } from 'constructs';\nimport { Stack, StackProps } from 'aws-cdk-lib';\nimport { ApiGatewayToSageMakerEndpoint, ApiGatewayToSageMakerEndpointProps } from '@aws-solutions-constructs/aws-apigateway-sagemakerendpoint';\n\n// Below is an example VTL (Velocity Template Language) mapping template for mapping the Api GET request to the Sagemaker POST request\nconst requestTemplate = `\n{\n \"instances\": [\n # set( $user_id = $input.params(\"user_id\") )\n # set( $items = $input.params(\"items\") )\n # foreach( $item in $items.split(\",\") )\n # if( $foreach.hasNext ),#end\n {\"in0\": [$user_id], \"in1\": [$item]}\n $esc.newline\n # end\n ]\n}`\n\n// Replace 'my-endpoint' with your Sagemaker Inference Endpoint\nnew ApiGatewayToSageMakerEndpoint(this, 'test-apigw-sagemakerendpoint', {\n endpointName: 'my-endpoint',\n resourcePath: '{user_id}',\n requestMappingTemplate: requestTemplate\n});\n```\n\nPython\n``` python\nfrom aws_solutions_constructs.aws_apigateway_sagemakerendpoint import ApiGatewayToSageMakerEndpoint\nfrom aws_cdk import Stack\nfrom constructs import Construct\n\n# Below is an example VTL (Velocity Template Language) mapping template for mapping the Api GET request to the Sagemaker POST request\nrequest_template = \"\"\"\n{\n \"instances\": [\n # set( $user_id = $input.params(\"user_id\") )\n # set( $items = $input.params(\"items\") )\n # foreach( $item in $items.split(\",\") )\n # if( $foreach.hasNext ),#end\n {\"in0\": [$user_id], \"in1\": [$item]}\n $esc.newline\n # end\n ]\n}\"\"\"\n\n# Replace 'my-endpoint' with your Sagemaker Inference Endpoint\nApiGatewayToSageMakerEndpoint(self, 'test-apigw-sagemakerendpoint',\n endpoint_name='my-endpoint',\n resource_path='{user_id}',\n request_mapping_template=request_template\n )\n```\n\nJava\n``` java\nimport software.constructs.Construct;\n\nimport software.amazon.awscdk.Stack;\nimport software.amazon.awscdk.StackProps;\nimport software.amazon.awsconstructs.services.apigatewaysagemakerendpoint.*;\n\n// Create an example VTL (Velocity Template Language) mapping template for mapping the Api GET request to the Sagemaker POST request\nfinal String requestTemplate = \"{\"\n + \"\\\"instances\\\": [\"\n + \"# set( $user_id = $input.params(\\\"user_id\\\") )\"\n + \"# set( $items = $input.params(\\\"items\\\") )\"\n + \"# foreach( $item in $items.split(\\\",\\\") )\"\n + \"# if( $foreach.hasNext ),#end\"\n + \"{\\\"in0\\\": [$user_id], \\\"in1\\\": [$item]}\"\n + \" $esc.newline\"\n + \"# end\"\n + \"]\"\n + \"}\";\n\n// Replace \"\"my-endpoint\"\" with your Sagemaker Inference Endpoint\nnew ApiGatewayToSageMakerEndpoint(this, \"ApiGatewayToSageMakerEndpointPattern\",\n new ApiGatewayToSageMakerEndpointProps.Builder()\n .endpointName(\"my-endpoint\")\n .resourcePath(\"{user_id}\")\n .requestMappingTemplate(requestTemplate)\n .build());\n```\n\n## Pattern Construct Props\n\n| **Name** | **Type** | **Description** |\n|:-------------|:----------------|-----------------|\n|apiGatewayProps?|[`api.RestApiProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_apigateway.RestApiProps.html)|Optional user-provided props to override the default props for the API Gateway.|\n|createUsagePlan?|boolean|Whether to create a Usage Plan attached to the API. Must be true if apiGatewayProps.defaultMethodOptions.apiKeyRequired is true. @default - true (to match legacy behavior)|\n|apiGatewayExecutionRole?|[`iam.Role`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_iam.Role.html)|IAM Role used by API Gateway to invoke the SageMaker endpoint. If not specified, a default role is created with access to `endpointName`.|\n|endpointName|`string`|Name of the deployed SageMaker inference endpoint.|\n|resourceName?|`string`|Optional resource name where the GET method will be available.|\n|resourcePath|`string`|Resource path for the GET method. The variable defined here can be referenced in `requestMappingTemplate`.|\n|requestMappingTemplate|`string`|Mapping template to convert GET requests for the default `application/json` content-type received on the REST API to POST requests expected by the SageMaker endpoint.|\n|additionalRequestTemplates|`{ [contentType: string]: string; }`|Optional Request Templates for content-types other than `application/json`. Use the `requestMappingTemplate` property to set the request template for the `application/json` content-type.|\n|responseMappingTemplate?|`string`|Optional mapping template to convert responses received from the SageMaker endpoint.|\n|logGroupProps?|[`logs.LogGroupProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_logs.LogGroupProps.html)|User provided props to override the default props for for the CloudWatchLogs LogGroup.|\n\n## Pattern Properties\n\n| **Name** | **Type** | **Description** |\n|:-------------|:----------------|-----------------|\n|apiGateway|[`api.RestApi`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_apigateway.RestApi.html)|Returns an instance of the API Gateway REST API created by the pattern.|\n|apiGatewayRole|[`iam.Role`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_iam.Role.html)|Returns an instance of the iam.Role created by the construct for API Gateway.|\n|apiGatewayCloudWatchRole?|[`iam.Role`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_iam.Role.html)|Returns an instance of the iam.Role created by the construct for API Gateway for CloudWatch access.|\n|apiGatewayLogGroup|[`logs.LogGroup`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_logs.LogGroup.html)|Returns an instance of the LogGroup created by the construct for API Gateway access logging to CloudWatch.|\n\n## Sample API Usage\n\n> **Note**: Each SageMaker endpoint is unique, and the response from the API will depend on the deployed model. The example given below assumes the sample from [this blog post](https://aws.amazon.com/blogs/machine-learning/creating-a-machine-learning-powered-rest-api-with-amazon-api-gateway-mapping-templates-and-amazon-sagemaker/). For a reference on how that'd be implemented, please refer to [integ.apigateway-sagemakerendpoint-overwrite.ts](test/integ.apigateway-sagemakerendpoint-overwrite.ts).\n\n| **Method** | **Request Path** | **Query String** | **SageMaker Action** | **Description** |\n|:-------------|:----------------|-----------------|-----------------|-----------------|\n|GET|`/321`| `items=101,131,162` |`sagemaker:InvokeEndpoint`|Retrieves the predictions for a specific user and items.|\n\n## Default settings\nOut of the box implementation of the Construct without any override will set the following defaults:\n\n### Amazon API Gateway\n* Deploy an edge-optimized API endpoint\n* Enable CloudWatch logging for API Gateway\n* Configure least privilege access IAM role for API Gateway\n* Set the default authorizationType for all API methods to IAM\n* Enable X-Ray Tracing\n* Validate request parameters before passing data to SageMaker\n\n## Architecture\n![Architecture Diagram](architecture.png)\n\n***\n&copy; Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved."
3984
3945
  },
3985
3946
  "repository": {
3986
3947
  "directory": "source/patterns/@aws-solutions-constructs/aws-apigateway-sagemakerendpoint",
@@ -4030,7 +3991,7 @@
4030
3991
  },
4031
3992
  "locationInModule": {
4032
3993
  "filename": "lib/index.ts",
4033
- "line": 101
3994
+ "line": 108
4034
3995
  },
4035
3996
  "parameters": [
4036
3997
  {
@@ -4065,7 +4026,7 @@
4065
4026
  "kind": "class",
4066
4027
  "locationInModule": {
4067
4028
  "filename": "lib/index.ts",
4068
- "line": 87
4029
+ "line": 94
4069
4030
  },
4070
4031
  "name": "ApiGatewayToSageMakerEndpoint",
4071
4032
  "properties": [
@@ -4073,7 +4034,7 @@
4073
4034
  "immutable": true,
4074
4035
  "locationInModule": {
4075
4036
  "filename": "lib/index.ts",
4076
- "line": 88
4037
+ "line": 95
4077
4038
  },
4078
4039
  "name": "apiGateway",
4079
4040
  "type": {
@@ -4084,7 +4045,7 @@
4084
4045
  "immutable": true,
4085
4046
  "locationInModule": {
4086
4047
  "filename": "lib/index.ts",
4087
- "line": 91
4048
+ "line": 98
4088
4049
  },
4089
4050
  "name": "apiGatewayLogGroup",
4090
4051
  "type": {
@@ -4095,7 +4056,7 @@
4095
4056
  "immutable": true,
4096
4057
  "locationInModule": {
4097
4058
  "filename": "lib/index.ts",
4098
- "line": 89
4059
+ "line": 96
4099
4060
  },
4100
4061
  "name": "apiGatewayRole",
4101
4062
  "type": {
@@ -4106,7 +4067,7 @@
4106
4067
  "immutable": true,
4107
4068
  "locationInModule": {
4108
4069
  "filename": "lib/index.ts",
4109
- "line": 90
4070
+ "line": 97
4110
4071
  },
4111
4072
  "name": "apiGatewayCloudWatchRole",
4112
4073
  "optional": true,
@@ -4142,7 +4103,7 @@
4142
4103
  "immutable": true,
4143
4104
  "locationInModule": {
4144
4105
  "filename": "lib/index.ts",
4145
- "line": 43
4106
+ "line": 50
4146
4107
  },
4147
4108
  "name": "endpointName",
4148
4109
  "type": {
@@ -4158,7 +4119,7 @@
4158
4119
  "immutable": true,
4159
4120
  "locationInModule": {
4160
4121
  "filename": "lib/index.ts",
4161
- "line": 62
4122
+ "line": 69
4162
4123
  },
4163
4124
  "name": "requestMappingTemplate",
4164
4125
  "type": {
@@ -4175,7 +4136,7 @@
4175
4136
  "immutable": true,
4176
4137
  "locationInModule": {
4177
4138
  "filename": "lib/index.ts",
4178
- "line": 55
4139
+ "line": 62
4179
4140
  },
4180
4141
  "name": "resourcePath",
4181
4142
  "type": {
@@ -4192,7 +4153,7 @@
4192
4153
  "immutable": true,
4193
4154
  "locationInModule": {
4194
4155
  "filename": "lib/index.ts",
4195
- "line": 69
4156
+ "line": 76
4196
4157
  },
4197
4158
  "name": "additionalRequestTemplates",
4198
4159
  "optional": true,
@@ -4214,7 +4175,7 @@
4214
4175
  "immutable": true,
4215
4176
  "locationInModule": {
4216
4177
  "filename": "lib/index.ts",
4217
- "line": 37
4178
+ "line": 44
4218
4179
  },
4219
4180
  "name": "apiGatewayExecutionRole",
4220
4181
  "optional": true,
@@ -4239,6 +4200,24 @@
4239
4200
  "fqn": "aws-cdk-lib.aws_apigateway.RestApiProps"
4240
4201
  }
4241
4202
  },
4203
+ {
4204
+ "abstract": true,
4205
+ "docs": {
4206
+ "default": "- true (to match legacy behavior)",
4207
+ "remarks": "Must be true if\napiGatewayProps.defaultMethodOptions.apiKeyRequired is true",
4208
+ "summary": "Whether to create a Usage Plan attached to the API."
4209
+ },
4210
+ "immutable": true,
4211
+ "locationInModule": {
4212
+ "filename": "lib/index.ts",
4213
+ "line": 38
4214
+ },
4215
+ "name": "createUsagePlan",
4216
+ "optional": true,
4217
+ "type": {
4218
+ "primitive": "boolean"
4219
+ }
4220
+ },
4242
4221
  {
4243
4222
  "abstract": true,
4244
4223
  "docs": {
@@ -4248,7 +4227,7 @@
4248
4227
  "immutable": true,
4249
4228
  "locationInModule": {
4250
4229
  "filename": "lib/index.ts",
4251
- "line": 81
4230
+ "line": 88
4252
4231
  },
4253
4232
  "name": "logGroupProps",
4254
4233
  "optional": true,
@@ -4265,7 +4244,7 @@
4265
4244
  "immutable": true,
4266
4245
  "locationInModule": {
4267
4246
  "filename": "lib/index.ts",
4268
- "line": 49
4247
+ "line": 56
4269
4248
  },
4270
4249
  "name": "resourceName",
4271
4250
  "optional": true,
@@ -4282,7 +4261,7 @@
4282
4261
  "immutable": true,
4283
4262
  "locationInModule": {
4284
4263
  "filename": "lib/index.ts",
4285
- "line": 75
4264
+ "line": 82
4286
4265
  },
4287
4266
  "name": "responseMappingTemplate",
4288
4267
  "optional": true,
@@ -4294,6 +4273,6 @@
4294
4273
  "symbolId": "lib/index:ApiGatewayToSageMakerEndpointProps"
4295
4274
  }
4296
4275
  },
4297
- "version": "2.79.1",
4298
- "fingerprint": "PYvh5po2YWTXdv3CQHB1fhpnkIhdjc3j5DvgGsxMqoA="
4276
+ "version": "2.80.0",
4277
+ "fingerprint": "fseUiZtDsN+wAc8M6yFpRtulMalngJ+3OUjzhxG9AkU="
4299
4278
  }
package/README.md CHANGED
@@ -119,6 +119,7 @@ new ApiGatewayToSageMakerEndpoint(this, "ApiGatewayToSageMakerEndpointPattern",
119
119
  | **Name** | **Type** | **Description** |
120
120
  |:-------------|:----------------|-----------------|
121
121
  |apiGatewayProps?|[`api.RestApiProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_apigateway.RestApiProps.html)|Optional user-provided props to override the default props for the API Gateway.|
122
+ |createUsagePlan?|boolean|Whether to create a Usage Plan attached to the API. Must be true if apiGatewayProps.defaultMethodOptions.apiKeyRequired is true. @default - true (to match legacy behavior)|
122
123
  |apiGatewayExecutionRole?|[`iam.Role`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_iam.Role.html)|IAM Role used by API Gateway to invoke the SageMaker endpoint. If not specified, a default role is created with access to `endpointName`.|
123
124
  |endpointName|`string`|Name of the deployed SageMaker inference endpoint.|
124
125
  |resourceName?|`string`|Optional resource name where the GET method will be available.|
package/lib/index.d.ts CHANGED
@@ -24,6 +24,13 @@ export interface ApiGatewayToSageMakerEndpointProps {
24
24
  * @default - Default properties are used.
25
25
  */
26
26
  readonly apiGatewayProps?: api.RestApiProps;
27
+ /**
28
+ * Whether to create a Usage Plan attached to the API. Must be true if
29
+ * apiGatewayProps.defaultMethodOptions.apiKeyRequired is true
30
+ *
31
+ * @default - true (to match legacy behavior)
32
+ */
33
+ readonly createUsagePlan?: boolean;
27
34
  /**
28
35
  * Optional IAM role that is used by API Gateway to invoke the SageMaker endpoint.
29
36
  *
package/lib/index.js CHANGED
@@ -34,9 +34,10 @@ class ApiGatewayToSageMakerEndpoint extends constructs_1.Construct {
34
34
  */
35
35
  constructor(scope, id, props) {
36
36
  super(scope, id);
37
+ defaults.CheckApiProps(props);
37
38
  // CheckSagemakerProps is not called because this construct can't create a Sagemaker resource
38
39
  // Setup the API Gateway
39
- const globalRestApiResponse = defaults.GlobalRestApi(this, props.apiGatewayProps, props.logGroupProps);
40
+ const globalRestApiResponse = defaults.GlobalRestApi(this, props.apiGatewayProps, props.logGroupProps, props.createUsagePlan);
40
41
  this.apiGateway = globalRestApiResponse.api;
41
42
  this.apiGatewayCloudWatchRole = globalRestApiResponse.role;
42
43
  this.apiGatewayLogGroup = globalRestApiResponse.logGroup;
@@ -115,5 +116,5 @@ class ApiGatewayToSageMakerEndpoint extends constructs_1.Construct {
115
116
  }
116
117
  exports.ApiGatewayToSageMakerEndpoint = ApiGatewayToSageMakerEndpoint;
117
118
  _a = JSII_RTTI_SYMBOL_1;
118
- ApiGatewayToSageMakerEndpoint[_a] = { fqn: "@aws-solutions-constructs/aws-apigateway-sagemakerendpoint.ApiGatewayToSageMakerEndpoint", version: "2.79.1" };
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBRUgsVUFBVTtBQUNWLDJDQUF1QztBQUV2QywyQ0FBMkM7QUFDM0MsMkRBQTJEO0FBQzNELDZDQUFrQztBQWlFbEM7O0dBRUc7QUFDSCxNQUFhLDZCQUE4QixTQUFRLHNCQUFTO0lBTTFEOzs7Ozs7O09BT0c7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXlDO1FBQ2pGLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsNkZBQTZGO1FBRTdGLHdCQUF3QjtRQUN4QixNQUFNLHFCQUFxQixHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZHLElBQUksQ0FBQyxVQUFVLEdBQUcscUJBQXFCLENBQUMsR0FBRyxDQUFDO1FBQzVDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUM7UUFDM0QsSUFBSSxDQUFDLGtCQUFrQixHQUFJLHFCQUFxQixDQUFDLFFBQVEsQ0FBQztRQUUxRCw2QkFBNkI7UUFDN0IsSUFBSSxLQUFLLENBQUMsdUJBQXVCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsdUJBQXVCLENBQUM7UUFDdEQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7Z0JBQzNELFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQywwQkFBMEIsQ0FBQzthQUNoRSxDQUFDLENBQUM7WUFDSCxRQUFRLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLGNB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LENBQUM7O0FBekdILHNFQTBHQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8vIEltcG9ydHNcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMgYXBpIGZyb20gJ2F3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5JztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGRlZmF1bHRzIGZyb20gJ0Bhd3Mtc29sdXRpb25zLWNvbnN0cnVjdHMvY29yZSc7XG5pbXBvcnQgeyBBd3MgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcblxuLyoqXG4gKiBAc3VtbWFyeSBUaGUgcHJvcGVydGllcyBmb3IgdGhlIEFwaUdhdGV3YXlUb1NhZ2VNYWtlckVuZHBvaW50UHJvcHMgY2xhc3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBpR2F0ZXdheVRvU2FnZU1ha2VyRW5kcG9pbnRQcm9wcyB7XG4gIC8qKlxuICAgKiBPcHRpb25hbCB1c2VyLXByb3ZpZGVkIHByb3BzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHByb3BzIGZvciB0aGUgQVBJIEdhdGV3YXkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdCBwcm9wZXJ0aWVzIGFyZSB1c2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBpR2F0ZXdheVByb3BzPzogYXBpLlJlc3RBcGlQcm9wcyxcbiAgLyoqXG4gICAqIE9wdGlvbmFsIElBTSByb2xlIHRoYXQgaXMgdXNlZCBieSBBUEkgR2F0ZXdheSB0byBpbnZva2UgdGhlIFNhZ2VNYWtlciBlbmRwb2ludC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBBbiBJQU0gcm9sZSB3aXRoIHNhZ2VtYWtlcjpJbnZva2VFbmRwb2ludCBhY2Nlc3MgdG8gYGVuZHBvaW50TmFtZWAgaXMgY3JlYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGFwaUdhdGV3YXlFeGVjdXRpb25Sb2xlPzogaWFtLlJvbGUsXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBkZXBsb3llZCBTYWdlTWFrZXIgaW5mZXJlbmNlIGVuZHBvaW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmUuXG4gICAqL1xuICByZWFkb25seSBlbmRwb2ludE5hbWU6IHN0cmluZyxcbiAgLyoqXG4gICAqIE9wdGlvbmFsIHJlc291cmNlIG5hbWUgd2hlcmUgdGhlIEdFVCBtZXRob2Qgd2lsbCBiZSBhdmFpbGFibGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlTmFtZT86IHN0cmluZyxcbiAgLyoqXG4gICAqIFJlc291cmNlIHBhdGggZm9yIHRoZSBHRVQgbWV0aG9kLiBUaGUgdmFyaWFibGUgZGVmaW5lZCBoZXJlIGNhbiBiZSByZWZlcmVuY2VkIGluIGByZXF1ZXN0TWFwcGluZ1RlbXBsYXRlYC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VQYXRoOiBzdHJpbmcsXG4gIC8qKlxuICAgKiBNYXBwaW5nIHRlbXBsYXRlIHRvIGNvbnZlcnQgR0VUIHJlcXVlc3RzIGZvciB0aGUgZGVmYXVsdCBgYXBwbGljYXRpb24vanNvbmAgY29udGVudC10eXBlIHJlY2VpdmVkXG4gICAqIG9uIHRoZSBSRVNUIEFQSSB0byBQT1NUIHJlcXVlc3RzIGV4cGVjdGVkIGJ5IHRoZSBTYWdlTWFrZXIgZW5kcG9pbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RNYXBwaW5nVGVtcGxhdGU6IHN0cmluZyxcbiAgLyoqXG4gICAqIE9wdGlvbmFsIFJlcXVlc3QgVGVtcGxhdGVzIGZvciBjb250ZW50LXR5cGVzIG90aGVyIHRoYW4gYGFwcGxpY2F0aW9uL2pzb25gLlxuICAgKiBVc2UgdGhlIGByZXF1ZXN0TWFwcGluZ1RlbXBsYXRlYCBwcm9wZXJ0eSB0byBzZXQgdGhlIHJlcXVlc3QgdGVtcGxhdGUgZm9yIHRoZSBgYXBwbGljYXRpb24vanNvbmAgY29udGVudC10eXBlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxSZXF1ZXN0VGVtcGxhdGVzPzogeyBbY29udGVudFR5cGU6IHN0cmluZ106IHN0cmluZzsgfTtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIG1hcHBpbmcgdGVtcGxhdGUgdG8gY29udmVydCByZXNwb25zZXMgcmVjZWl2ZWQgZnJvbSB0aGUgU2FnZU1ha2VyIGVuZHBvaW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmUuXG4gICAqL1xuICByZWFkb25seSByZXNwb25zZU1hcHBpbmdUZW1wbGF0ZT86IHN0cmluZyxcbiAgLyoqXG4gICAqIFVzZXIgcHJvdmlkZWQgcHJvcHMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcHJvcHMgZm9yIHRoZSBDbG91ZFdhdGNoTG9ncyBMb2dHcm91cC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBEZWZhdWx0IHByb3BzIGFyZSB1c2VkXG4gICAqL1xuICByZWFkb25seSBsb2dHcm91cFByb3BzPzogbG9ncy5Mb2dHcm91cFByb3BzXG59XG5cbi8qKlxuICogQHN1bW1hcnkgVGhlIEFwaUdhdGV3YXlUb1NhZ2VNYWtlckVuZHBvaW50IGNsYXNzLlxuICovXG5leHBvcnQgY2xhc3MgQXBpR2F0ZXdheVRvU2FnZU1ha2VyRW5kcG9pbnQgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgYXBpR2F0ZXdheTogYXBpLlJlc3RBcGk7XG4gIHB1YmxpYyByZWFkb25seSBhcGlHYXRld2F5Um9sZTogaWFtLlJvbGU7XG4gIHB1YmxpYyByZWFkb25seSBhcGlHYXRld2F5Q2xvdWRXYXRjaFJvbGU/OiBpYW0uUm9sZTtcbiAgcHVibGljIHJlYWRvbmx5IGFwaUdhdGV3YXlMb2dHcm91cDogbG9ncy5Mb2dHcm91cDtcblxuICAvKipcbiAgICogQHN1bW1hcnkgQ29uc3RydWN0cyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgQXBpR2F0ZXdheVRvU2FnZU1ha2VyRW5kcG9pbnQgY2xhc3MuXG4gICAqIEBwYXJhbSB7Y2RrLkFwcH0gc2NvcGUgLSByZXByZXNlbnRzIHRoZSBzY29wZSBmb3IgYWxsIHRoZSByZXNvdXJjZXMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCAtIHRoaXMgaXMgYSBhIHNjb3BlLXVuaXF1ZSBpZC5cbiAgICogQHBhcmFtIHtBcGlHYXRld2F5VG9TYWdlTWFrZXJFbmRwb2ludFByb3BzfSBwcm9wcyAtIHVzZXIgcHJvdmlkZWQgcHJvcHMgZm9yIHRoZSBjb25zdHJ1Y3QuXG4gICAqIEBzaW5jZSAxLjY4LjBcbiAgICogQGFjY2VzcyBwdWJsaWNcbiAgICovXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBBcGlHYXRld2F5VG9TYWdlTWFrZXJFbmRwb2ludFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICAvLyBDaGVja1NhZ2VtYWtlclByb3BzIGlzIG5vdCBjYWxsZWQgYmVjYXVzZSB0aGlzIGNvbnN0cnVjdCBjYW4ndCBjcmVhdGUgYSBTYWdlbWFrZXIgcmVzb3VyY2VcblxuICAgIC8vIFNldHVwIHRoZSBBUEkgR2F0ZXdheVxuICAgIGNvbnN0IGdsb2JhbFJlc3RBcGlSZXNwb25zZSA9IGRlZmF1bHRzLkdsb2JhbFJlc3RBcGkodGhpcywgcHJvcHMuYXBpR2F0ZXdheVByb3BzLCBwcm9wcy5sb2dHcm91cFByb3BzKTtcbiAgICB0aGlzLmFwaUdhdGV3YXkgPSBnbG9iYWxSZXN0QXBpUmVzcG9uc2UuYXBpO1xuICAgIHRoaXMuYXBpR2F0ZXdheUNsb3VkV2F0Y2hSb2xlID0gZ2xvYmFsUmVzdEFwaVJlc3BvbnNlLnJvbGU7XG4gICAgdGhpcy5hcGlHYXRld2F5TG9nR3JvdXAgPSAgZ2xvYmFsUmVzdEFwaVJlc3BvbnNlLmxvZ0dyb3VwO1xuXG4gICAgLy8gU2V0dXAgdGhlIEFQSSBHYXRld2F5IHJvbGVcbiAgICBpZiAocHJvcHMuYXBpR2F0ZXdheUV4ZWN1dGlvblJvbGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5hcGlHYXRld2F5Um9sZSA9IHByb3BzLmFwaUdhdGV3YXlFeGVjdXRpb25Sb2xlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFwaUdhdGV3YXlSb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsICdhcGktZ2F0ZXdheS1yb2xlJywge1xuICAgICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnYXBpZ2F0ZXdheS5hbWF6b25hd3MuY29tJylcbiAgICAgIH0pO1xuICAgICAgZGVmYXVsdHMuYWRkQ2ZuR3VhcmRTdXBwcmVzc1J1bGVzKHRoaXMuYXBpR2F0ZXdheVJvbGUsIFtcIklBTV9OT19JTkxJTkVfUE9MSUNZX0NIRUNLXCJdKTtcblxuICAgICAgLy8gU2V0dXAgdGhlIElBTSBwb2xpY3kgZm9yIFNhZ2VNYWtlciBlbmRwb2ludFxuICAgICAgY29uc3QgaW52b2tlUG9saWN5ID0gbmV3IGlhbS5Qb2xpY3kodGhpcywgJ0ludm9rZUVuZHBvaW50UG9saWN5Jywge1xuICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgYWN0aW9uczogWydzYWdlbWFrZXI6SW52b2tlRW5kcG9pbnQnXSxcbiAgICAgICAgICAgIHJlc291cmNlczogW2Bhcm46JHtBd3MuUEFSVElUSU9OfTpzYWdlbWFrZXI6JHtBd3MuUkVHSU9OfToke0F3cy5BQ0NPVU5UX0lEfTplbmRwb2ludC8ke3Byb3BzLmVuZHBvaW50TmFtZX1gXVxuICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICAgIH0pO1xuXG4gICAgICBpbnZva2VQb2xpY3kuYXR0YWNoVG9Sb2xlKHRoaXMuYXBpR2F0ZXdheVJvbGUpO1xuICAgIH1cblxuICAgIC8vIFNldHVwIHJlcXVlc3QgdmFsaWRhdGlvblxuICAgIGNvbnN0IHJlcXVlc3RWYWxpZGF0b3IgPSB0aGlzLmFwaUdhdGV3YXkuYWRkUmVxdWVzdFZhbGlkYXRvcigncmVxdWVzdC12YWxpZGF0b3InLCB7XG4gICAgICByZXF1ZXN0VmFsaWRhdG9yTmFtZTogJ3JlcXVlc3QtcGFyYW0tdmFsaWRhdG9yJyxcblxuICAgICAgLy8gU2V0dGluZyB0aGlzIHByb3BlcnR5IHRvIHRydWUgbWFrZXMgc3VyZSB0aGUgZm9sbG93aW5nIGFyZSB2YWxpZGF0ZWQ6XG4gICAgICAvLyAtIFJlcXVpcmVkIHJlcXVlc3QgcGFyYW1ldGVycyBpbiB0aGUgVVJJXG4gICAgICAvLyAtIFF1ZXJ5IHN0cmluZ1xuICAgICAgLy8gLSBIZWFkZXJzXG4gICAgICB2YWxpZGF0ZVJlcXVlc3RQYXJhbWV0ZXJzOiB0cnVlXG4gICAgfSk7XG5cbiAgICAvLyBTZXR1cCBtZXRob2QgYW5kIGludGVncmF0aW9uIHJlc3BvbnNlc1xuICAgIGNvbnN0IG1ldGhvZFJlc3BvbnNlczogYXBpLk1ldGhvZFJlc3BvbnNlW10gPSBbXG4gICAgICB7IHN0YXR1c0NvZGU6ICcyMDAnIH0sXG4gICAgICB7IHN0YXR1c0NvZGU6ICc1MDAnIH0sXG4gICAgICB7IHN0YXR1c0NvZGU6ICc0MDAnIH1cbiAgICBdO1xuXG4gICAgY29uc3QgaW50ZWdSZXNwb25zZXM6IGFwaS5JbnRlZ3JhdGlvblJlc3BvbnNlW10gPSBbXTtcbiAgICBpZiAocHJvcHMucmVzcG9uc2VNYXBwaW5nVGVtcGxhdGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaW50ZWdSZXNwb25zZXMucHVzaCh7XG4gICAgICAgIHN0YXR1c0NvZGU6ICcyMDAnLFxuICAgICAgICByZXNwb25zZVRlbXBsYXRlczogeyAnYXBwbGljYXRpb24vanNvbic6IHByb3BzLnJlc3BvbnNlTWFwcGluZ1RlbXBsYXRlIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnRlZ1Jlc3BvbnNlcy5wdXNoKHsgc3RhdHVzQ29kZTogJzIwMCcgfSk7XG4gICAgfVxuXG4gICAgaW50ZWdSZXNwb25zZXMucHVzaChcbiAgICAgIHsgc3RhdHVzQ29kZTogJzUwMCcsIHNlbGVjdGlvblBhdHRlcm46ICc1XFxcXGR7Mn0nIH0sXG4gICAgICB7IHN0YXR1c0NvZGU6ICc0MDAnLCBzZWxlY3Rpb25QYXR0ZXJuOiAnNFxcXFxkezJ9JyB9XG4gICAgKTtcblxuICAgIC8vIFRoZSBTYWdlTWFrZXIgaW50ZWdyYXRpb24gY2FuIGJlIGFkZGVkIGVpdGhlciBhdCB0aGUgcm9vdCBvZiB0aGUgQVBJIChHRVQgaHR0cHM6Ly9leGVjdXRlLWFwaS5hbWF6b25hd3MuY29tL3tzb21lLXBhcmFtfSksXG4gICAgLy8gb3IgYXMgYSBzdWItcmVzb3VyY2UgKEdFVCBodHRwczovL2V4ZWN1dGUtYXBpLmFtYXpvbmF3cy5jb20vaW5mZXJlbmNlL3tzb21lLXBhcmFtfSkuXG4gICAgLy8gVGhlIGZvbGxvd2luZyBsaW5lcyB3aWxsIG1ha2Ugc3VyZSBvbmx5IHRoZSBuZWNlc3NhcnkgcmVzb3VyY2VzIGFyZSBjcmVhdGVkLlxuICAgIGxldCBhcGlSZXNvdXJjZSA9IHRoaXMuYXBpR2F0ZXdheS5yb290O1xuICAgIGlmIChwcm9wcy5yZXNvdXJjZU5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYXBpUmVzb3VyY2UgPSBhcGlSZXNvdXJjZS5hZGRSZXNvdXJjZShwcm9wcy5yZXNvdXJjZU5hbWUpO1xuICAgIH1cbiAgICBhcGlSZXNvdXJjZSA9IGFwaVJlc291cmNlLmFkZFJlc291cmNlKHByb3BzLnJlc291cmNlUGF0aCk7XG5cbiAgICAvLyBTZXR1cCBBUEkgR2F0ZXdheSBtZXRob2RcbiAgICBkZWZhdWx0cy5hZGRQcm94eU1ldGhvZFRvQXBpUmVzb3VyY2Uoe1xuICAgICAgc2VydmljZTogJ3J1bnRpbWUuc2FnZW1ha2VyJyxcbiAgICAgIHBhdGg6IGBlbmRwb2ludHMvJHtwcm9wcy5lbmRwb2ludE5hbWV9L2ludm9jYXRpb25zYCxcbiAgICAgIGFwaUdhdGV3YXlSb2xlOiB0aGlzLmFwaUdhdGV3YXlSb2xlLFxuICAgICAgYXBpTWV0aG9kOiAnR0VUJyxcbiAgICAgIGFwaVJlc291cmNlLFxuICAgICAgcmVxdWVzdFRlbXBsYXRlOiBwcm9wcy5yZXF1ZXN0TWFwcGluZ1RlbXBsYXRlLFxuICAgICAgYWRkaXRpb25hbFJlcXVlc3RUZW1wbGF0ZXM6IHByb3BzLmFkZGl0aW9uYWxSZXF1ZXN0VGVtcGxhdGVzLFxuICAgICAgYXdzSW50ZWdyYXRpb25Qcm9wczoge1xuICAgICAgICBvcHRpb25zOiB7IGludGVncmF0aW9uUmVzcG9uc2VzOiBpbnRlZ1Jlc3BvbnNlcyB9XG4gICAgICB9LFxuICAgICAgbWV0aG9kT3B0aW9uczoge1xuICAgICAgICBtZXRob2RSZXNwb25zZXMsXG4gICAgICAgIHJlcXVlc3RWYWxpZGF0b3IsXG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
119
+ ApiGatewayToSageMakerEndpoint[_a] = { fqn: "@aws-solutions-constructs/aws-apigateway-sagemakerendpoint.ApiGatewayToSageMakerEndpoint", version: "2.80.0" };
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBRUgsVUFBVTtBQUNWLDJDQUF1QztBQUV2QywyQ0FBMkM7QUFDM0MsMkRBQTJEO0FBQzNELDZDQUFrQztBQXdFbEM7O0dBRUc7QUFDSCxNQUFhLDZCQUE4QixTQUFRLHNCQUFTO0lBTTFEOzs7Ozs7O09BT0c7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXlDO1FBQ2pGLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5Qiw2RkFBNkY7UUFFN0Ysd0JBQXdCO1FBQ3hCLE1BQU0scUJBQXFCLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM5SCxJQUFJLENBQUMsVUFBVSxHQUFHLHFCQUFxQixDQUFDLEdBQUcsQ0FBQztRQUM1QyxJQUFJLENBQUMsd0JBQXdCLEdBQUcscUJBQXFCLENBQUMsSUFBSSxDQUFDO1FBQzNELElBQUksQ0FBQyxrQkFBa0IsR0FBSSxxQkFBcUIsQ0FBQyxRQUFRLENBQUM7UUFFMUQsNkJBQTZCO1FBQzdCLElBQUksS0FBSyxDQUFDLHVCQUF1QixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLHVCQUF1QixDQUFDO1FBQ3RELENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFO2dCQUMzRCxTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsMEJBQTBC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RCxhQUFhLEVBQUU7Z0JBQ2IsZUFBZTtnQkFDZixnQkFBZ0I7YUFDakI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOztBQTFHSCxzRUEyR0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vLyBJbXBvcnRzXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIGFwaSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheSc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBkZWZhdWx0cyBmcm9tICdAYXdzLXNvbHV0aW9ucy1jb25zdHJ1Y3RzL2NvcmUnO1xuaW1wb3J0IHsgQXdzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5cbi8qKlxuICogQHN1bW1hcnkgVGhlIHByb3BlcnRpZXMgZm9yIHRoZSBBcGlHYXRld2F5VG9TYWdlTWFrZXJFbmRwb2ludFByb3BzIGNsYXNzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwaUdhdGV3YXlUb1NhZ2VNYWtlckVuZHBvaW50UHJvcHMge1xuICAvKipcbiAgICogT3B0aW9uYWwgdXNlci1wcm92aWRlZCBwcm9wcyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwcm9wcyBmb3IgdGhlIEFQSSBHYXRld2F5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgcHJvcGVydGllcyBhcmUgdXNlZC5cbiAgICovXG4gIHJlYWRvbmx5IGFwaUdhdGV3YXlQcm9wcz86IGFwaS5SZXN0QXBpUHJvcHMsXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGNyZWF0ZSBhIFVzYWdlIFBsYW4gYXR0YWNoZWQgdG8gdGhlIEFQSS4gTXVzdCBiZSB0cnVlIGlmXG4gICAqIGFwaUdhdGV3YXlQcm9wcy5kZWZhdWx0TWV0aG9kT3B0aW9ucy5hcGlLZXlSZXF1aXJlZCBpcyB0cnVlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZSAodG8gbWF0Y2ggbGVnYWN5IGJlaGF2aW9yKVxuICAgKi9cbiAgcmVhZG9ubHkgY3JlYXRlVXNhZ2VQbGFuPzogYm9vbGVhblxuICAvKipcbiAgICogT3B0aW9uYWwgSUFNIHJvbGUgdGhhdCBpcyB1c2VkIGJ5IEFQSSBHYXRld2F5IHRvIGludm9rZSB0aGUgU2FnZU1ha2VyIGVuZHBvaW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEFuIElBTSByb2xlIHdpdGggc2FnZW1ha2VyOkludm9rZUVuZHBvaW50IGFjY2VzcyB0byBgZW5kcG9pbnROYW1lYCBpcyBjcmVhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBpR2F0ZXdheUV4ZWN1dGlvblJvbGU/OiBpYW0uUm9sZSxcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGRlcGxveWVkIFNhZ2VNYWtlciBpbmZlcmVuY2UgZW5kcG9pbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZS5cbiAgICovXG4gIHJlYWRvbmx5IGVuZHBvaW50TmFtZTogc3RyaW5nLFxuICAvKipcbiAgICogT3B0aW9uYWwgcmVzb3VyY2UgbmFtZSB3aGVyZSB0aGUgR0VUIG1ldGhvZCB3aWxsIGJlIGF2YWlsYWJsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VOYW1lPzogc3RyaW5nLFxuICAvKipcbiAgICogUmVzb3VyY2UgcGF0aCBmb3IgdGhlIEdFVCBtZXRob2QuIFRoZSB2YXJpYWJsZSBkZWZpbmVkIGhlcmUgY2FuIGJlIHJlZmVyZW5jZWQgaW4gYHJlcXVlc3RNYXBwaW5nVGVtcGxhdGVgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmUuXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZVBhdGg6IHN0cmluZyxcbiAgLyoqXG4gICAqIE1hcHBpbmcgdGVtcGxhdGUgdG8gY29udmVydCBHRVQgcmVxdWVzdHMgZm9yIHRoZSBkZWZhdWx0IGBhcHBsaWNhdGlvbi9qc29uYCBjb250ZW50LXR5cGUgcmVjZWl2ZWRcbiAgICogb24gdGhlIFJFU1QgQVBJIHRvIFBPU1QgcmVxdWVzdHMgZXhwZWN0ZWQgYnkgdGhlIFNhZ2VNYWtlciBlbmRwb2ludC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWVzdE1hcHBpbmdUZW1wbGF0ZTogc3RyaW5nLFxuICAvKipcbiAgICogT3B0aW9uYWwgUmVxdWVzdCBUZW1wbGF0ZXMgZm9yIGNvbnRlbnQtdHlwZXMgb3RoZXIgdGhhbiBgYXBwbGljYXRpb24vanNvbmAuXG4gICAqIFVzZSB0aGUgYHJlcXVlc3RNYXBwaW5nVGVtcGxhdGVgIHByb3BlcnR5IHRvIHNldCB0aGUgcmVxdWVzdCB0ZW1wbGF0ZSBmb3IgdGhlIGBhcHBsaWNhdGlvbi9qc29uYCBjb250ZW50LXR5cGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbFJlcXVlc3RUZW1wbGF0ZXM/OiB7IFtjb250ZW50VHlwZTogc3RyaW5nXTogc3RyaW5nOyB9O1xuICAvKipcbiAgICogT3B0aW9uYWwgbWFwcGluZyB0ZW1wbGF0ZSB0byBjb252ZXJ0IHJlc3BvbnNlcyByZWNlaXZlZCBmcm9tIHRoZSBTYWdlTWFrZXIgZW5kcG9pbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlc3BvbnNlTWFwcGluZ1RlbXBsYXRlPzogc3RyaW5nLFxuICAvKipcbiAgICogVXNlciBwcm92aWRlZCBwcm9wcyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwcm9wcyBmb3IgdGhlIENsb3VkV2F0Y2hMb2dzIExvZ0dyb3VwLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgcHJvcHMgYXJlIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IGxvZ0dyb3VwUHJvcHM/OiBsb2dzLkxvZ0dyb3VwUHJvcHNcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBUaGUgQXBpR2F0ZXdheVRvU2FnZU1ha2VyRW5kcG9pbnQgY2xhc3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBBcGlHYXRld2F5VG9TYWdlTWFrZXJFbmRwb2ludCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBhcGlHYXRld2F5OiBhcGkuUmVzdEFwaTtcbiAgcHVibGljIHJlYWRvbmx5IGFwaUdhdGV3YXlSb2xlOiBpYW0uUm9sZTtcbiAgcHVibGljIHJlYWRvbmx5IGFwaUdhdGV3YXlDbG91ZFdhdGNoUm9sZT86IGlhbS5Sb2xlO1xuICBwdWJsaWMgcmVhZG9ubHkgYXBpR2F0ZXdheUxvZ0dyb3VwOiBsb2dzLkxvZ0dyb3VwO1xuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBDb25zdHJ1Y3RzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBBcGlHYXRld2F5VG9TYWdlTWFrZXJFbmRwb2ludCBjbGFzcy5cbiAgICogQHBhcmFtIHtjZGsuQXBwfSBzY29wZSAtIHJlcHJlc2VudHMgdGhlIHNjb3BlIGZvciBhbGwgdGhlIHJlc291cmNlcy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkIC0gdGhpcyBpcyBhIGEgc2NvcGUtdW5pcXVlIGlkLlxuICAgKiBAcGFyYW0ge0FwaUdhdGV3YXlUb1NhZ2VNYWtlckVuZHBvaW50UHJvcHN9IHByb3BzIC0gdXNlciBwcm92aWRlZCBwcm9wcyBmb3IgdGhlIGNvbnN0cnVjdC5cbiAgICogQHNpbmNlIDEuNjguMFxuICAgKiBAYWNjZXNzIHB1YmxpY1xuICAgKi9cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEFwaUdhdGV3YXlUb1NhZ2VNYWtlckVuZHBvaW50UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIGRlZmF1bHRzLkNoZWNrQXBpUHJvcHMocHJvcHMpO1xuICAgIC8vIENoZWNrU2FnZW1ha2VyUHJvcHMgaXMgbm90IGNhbGxlZCBiZWNhdXNlIHRoaXMgY29uc3RydWN0IGNhbid0IGNyZWF0ZSBhIFNhZ2VtYWtlciByZXNvdXJjZVxuXG4gICAgLy8gU2V0dXAgdGhlIEFQSSBHYXRld2F5XG4gICAgY29uc3QgZ2xvYmFsUmVzdEFwaVJlc3BvbnNlID0gZGVmYXVsdHMuR2xvYmFsUmVzdEFwaSh0aGlzLCBwcm9wcy5hcGlHYXRld2F5UHJvcHMsIHByb3BzLmxvZ0dyb3VwUHJvcHMsIHByb3BzLmNyZWF0ZVVzYWdlUGxhbik7XG4gICAgdGhpcy5hcGlHYXRld2F5ID0gZ2xvYmFsUmVzdEFwaVJlc3BvbnNlLmFwaTtcbiAgICB0aGlzLmFwaUdhdGV3YXlDbG91ZFdhdGNoUm9sZSA9IGdsb2JhbFJlc3RBcGlSZXNwb25zZS5yb2xlO1xuICAgIHRoaXMuYXBpR2F0ZXdheUxvZ0dyb3VwID0gIGdsb2JhbFJlc3RBcGlSZXNwb25zZS5sb2dHcm91cDtcblxuICAgIC8vIFNldHVwIHRoZSBBUEkgR2F0ZXdheSByb2xlXG4gICAgaWYgKHByb3BzLmFwaUdhdGV3YXlFeGVjdXRpb25Sb2xlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuYXBpR2F0ZXdheVJvbGUgPSBwcm9wcy5hcGlHYXRld2F5RXhlY3V0aW9uUm9sZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hcGlHYXRld2F5Um9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCAnYXBpLWdhdGV3YXktcm9sZScsIHtcbiAgICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2FwaWdhdGV3YXkuYW1hem9uYXdzLmNvbScpXG4gICAgICB9KTtcbiAgICAgIGRlZmF1bHRzLmFkZENmbkd1YXJkU3VwcHJlc3NSdWxlcyh0aGlzLmFwaUdhdGV3YXlSb2xlLCBbXCJJQU1fTk9fSU5MSU5FX1BPTElDWV9DSEVDS1wiXSk7XG5cbiAgICAgIC8vIFNldHVwIHRoZSBJQU0gcG9saWN5IGZvciBTYWdlTWFrZXIgZW5kcG9pbnRcbiAgICAgIGNvbnN0IGludm9rZVBvbGljeSA9IG5ldyBpYW0uUG9saWN5KHRoaXMsICdJbnZva2VFbmRwb2ludFBvbGljeScsIHtcbiAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFsnc2FnZW1ha2VyOkludm9rZUVuZHBvaW50J10sXG4gICAgICAgICAgICByZXNvdXJjZXM6IFtgYXJuOiR7QXdzLlBBUlRJVElPTn06c2FnZW1ha2VyOiR7QXdzLlJFR0lPTn06JHtBd3MuQUNDT1VOVF9JRH06ZW5kcG9pbnQvJHtwcm9wcy5lbmRwb2ludE5hbWV9YF1cbiAgICAgICAgICB9KVxuICAgICAgICBdXG4gICAgICB9KTtcblxuICAgICAgaW52b2tlUG9saWN5LmF0dGFjaFRvUm9sZSh0aGlzLmFwaUdhdGV3YXlSb2xlKTtcbiAgICB9XG5cbiAgICAvLyBTZXR1cCByZXF1ZXN0IHZhbGlkYXRpb25cbiAgICBjb25zdCByZXF1ZXN0VmFsaWRhdG9yID0gdGhpcy5hcGlHYXRld2F5LmFkZFJlcXVlc3RWYWxpZGF0b3IoJ3JlcXVlc3QtdmFsaWRhdG9yJywge1xuICAgICAgcmVxdWVzdFZhbGlkYXRvck5hbWU6ICdyZXF1ZXN0LXBhcmFtLXZhbGlkYXRvcicsXG5cbiAgICAgIC8vIFNldHRpbmcgdGhpcyBwcm9wZXJ0eSB0byB0cnVlIG1ha2VzIHN1cmUgdGhlIGZvbGxvd2luZyBhcmUgdmFsaWRhdGVkOlxuICAgICAgLy8gLSBSZXF1aXJlZCByZXF1ZXN0IHBhcmFtZXRlcnMgaW4gdGhlIFVSSVxuICAgICAgLy8gLSBRdWVyeSBzdHJpbmdcbiAgICAgIC8vIC0gSGVhZGVyc1xuICAgICAgdmFsaWRhdGVSZXF1ZXN0UGFyYW1ldGVyczogdHJ1ZVxuICAgIH0pO1xuXG4gICAgLy8gU2V0dXAgbWV0aG9kIGFuZCBpbnRlZ3JhdGlvbiByZXNwb25zZXNcbiAgICBjb25zdCBtZXRob2RSZXNwb25zZXM6IGFwaS5NZXRob2RSZXNwb25zZVtdID0gW1xuICAgICAgeyBzdGF0dXNDb2RlOiAnMjAwJyB9LFxuICAgICAgeyBzdGF0dXNDb2RlOiAnNTAwJyB9LFxuICAgICAgeyBzdGF0dXNDb2RlOiAnNDAwJyB9XG4gICAgXTtcblxuICAgIGNvbnN0IGludGVnUmVzcG9uc2VzOiBhcGkuSW50ZWdyYXRpb25SZXNwb25zZVtdID0gW107XG4gICAgaWYgKHByb3BzLnJlc3BvbnNlTWFwcGluZ1RlbXBsYXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGludGVnUmVzcG9uc2VzLnB1c2goe1xuICAgICAgICBzdGF0dXNDb2RlOiAnMjAwJyxcbiAgICAgICAgcmVzcG9uc2VUZW1wbGF0ZXM6IHsgJ2FwcGxpY2F0aW9uL2pzb24nOiBwcm9wcy5yZXNwb25zZU1hcHBpbmdUZW1wbGF0ZSB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW50ZWdSZXNwb25zZXMucHVzaCh7IHN0YXR1c0NvZGU6ICcyMDAnIH0pO1xuICAgIH1cblxuICAgIGludGVnUmVzcG9uc2VzLnB1c2goXG4gICAgICB7IHN0YXR1c0NvZGU6ICc1MDAnLCBzZWxlY3Rpb25QYXR0ZXJuOiAnNVxcXFxkezJ9JyB9LFxuICAgICAgeyBzdGF0dXNDb2RlOiAnNDAwJywgc2VsZWN0aW9uUGF0dGVybjogJzRcXFxcZHsyfScgfVxuICAgICk7XG5cbiAgICAvLyBUaGUgU2FnZU1ha2VyIGludGVncmF0aW9uIGNhbiBiZSBhZGRlZCBlaXRoZXIgYXQgdGhlIHJvb3Qgb2YgdGhlIEFQSSAoR0VUIGh0dHBzOi8vZXhlY3V0ZS1hcGkuYW1hem9uYXdzLmNvbS97c29tZS1wYXJhbX0pLFxuICAgIC8vIG9yIGFzIGEgc3ViLXJlc291cmNlIChHRVQgaHR0cHM6Ly9leGVjdXRlLWFwaS5hbWF6b25hd3MuY29tL2luZmVyZW5jZS97c29tZS1wYXJhbX0pLlxuICAgIC8vIFRoZSBmb2xsb3dpbmcgbGluZXMgd2lsbCBtYWtlIHN1cmUgb25seSB0aGUgbmVjZXNzYXJ5IHJlc291cmNlcyBhcmUgY3JlYXRlZC5cbiAgICBsZXQgYXBpUmVzb3VyY2UgPSB0aGlzLmFwaUdhdGV3YXkucm9vdDtcbiAgICBpZiAocHJvcHMucmVzb3VyY2VOYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGFwaVJlc291cmNlID0gYXBpUmVzb3VyY2UuYWRkUmVzb3VyY2UocHJvcHMucmVzb3VyY2VOYW1lKTtcbiAgICB9XG4gICAgYXBpUmVzb3VyY2UgPSBhcGlSZXNvdXJjZS5hZGRSZXNvdXJjZShwcm9wcy5yZXNvdXJjZVBhdGgpO1xuXG4gICAgLy8gU2V0dXAgQVBJIEdhdGV3YXkgbWV0aG9kXG4gICAgZGVmYXVsdHMuYWRkUHJveHlNZXRob2RUb0FwaVJlc291cmNlKHtcbiAgICAgIHNlcnZpY2U6ICdydW50aW1lLnNhZ2VtYWtlcicsXG4gICAgICBwYXRoOiBgZW5kcG9pbnRzLyR7cHJvcHMuZW5kcG9pbnROYW1lfS9pbnZvY2F0aW9uc2AsXG4gICAgICBhcGlHYXRld2F5Um9sZTogdGhpcy5hcGlHYXRld2F5Um9sZSxcbiAgICAgIGFwaU1ldGhvZDogJ0dFVCcsXG4gICAgICBhcGlSZXNvdXJjZSxcbiAgICAgIHJlcXVlc3RUZW1wbGF0ZTogcHJvcHMucmVxdWVzdE1hcHBpbmdUZW1wbGF0ZSxcbiAgICAgIGFkZGl0aW9uYWxSZXF1ZXN0VGVtcGxhdGVzOiBwcm9wcy5hZGRpdGlvbmFsUmVxdWVzdFRlbXBsYXRlcyxcbiAgICAgIGF3c0ludGVncmF0aW9uUHJvcHM6IHtcbiAgICAgICAgb3B0aW9uczogeyBpbnRlZ3JhdGlvblJlc3BvbnNlczogaW50ZWdSZXNwb25zZXMgfVxuICAgICAgfSxcbiAgICAgIG1ldGhvZE9wdGlvbnM6IHtcbiAgICAgICAgbWV0aG9kUmVzcG9uc2VzLFxuICAgICAgICByZXF1ZXN0VmFsaWRhdG9yLFxuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-solutions-constructs/aws-apigateway-sagemakerendpoint",
3
- "version": "2.79.1",
3
+ "version": "2.80.0",
4
4
  "description": "CDK Constructs for AWS API Gateway and Amazon SageMaker Endpoint integration.",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -54,15 +54,15 @@
54
54
  }
55
55
  },
56
56
  "dependencies": {
57
- "@aws-solutions-constructs/core": "2.79.1",
57
+ "@aws-solutions-constructs/core": "2.80.0",
58
58
  "constructs": "^10.0.0"
59
59
  },
60
60
  "devDependencies": {
61
- "@aws-cdk/integ-tests-alpha": "2.177.0-alpha.0",
61
+ "@aws-cdk/integ-tests-alpha": "2.179.0-alpha.0",
62
62
  "@types/jest": "^27.4.0",
63
63
  "@types/node": "^10.3.0",
64
64
  "constructs": "^10.0.0",
65
- "aws-cdk-lib": "2.177.0"
65
+ "aws-cdk-lib": "2.179.0"
66
66
  },
67
67
  "jest": {
68
68
  "moduleFileExtensions": [
@@ -79,9 +79,9 @@
79
79
  ]
80
80
  },
81
81
  "peerDependencies": {
82
- "@aws-solutions-constructs/core": "2.79.1",
82
+ "@aws-solutions-constructs/core": "2.80.0",
83
83
  "constructs": "^10.0.0",
84
- "aws-cdk-lib": "^2.177.0"
84
+ "aws-cdk-lib": "^2.179.0"
85
85
  },
86
86
  "keywords": [
87
87
  "aws",
@@ -110,6 +110,7 @@ test('Test deployment w/ overwritten properties', () => {
110
110
  template.hasResourceProperties('AWS::IAM::Role', {
111
111
  Description: 'existing role for SageMaker integration'
112
112
  });
113
+ template.resourceCountIs('AWS::ApiGateway::UsagePlan', 1);
113
114
  });
114
115
  test('Construct accepts additional read request templates', () => {
115
116
  const stack = new aws_cdk_lib_1.Stack();
@@ -132,4 +133,37 @@ test('Construct accepts additional read request templates', () => {
132
133
  }
133
134
  });
134
135
  });
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpZ2F0ZXdheS1zYWdlbWFrZXJlbmRwb2ludC50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBpZ2F0ZXdheS1zYWdlbWFrZXJlbmRwb2ludC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7QUFFSCxVQUFVO0FBQ1YsNkNBQXlDO0FBQ3pDLGdDQUF1RDtBQUN2RCwyQ0FBMkM7QUFDM0MsdURBQWtEO0FBRWxELElBQUksQ0FBQywyQkFBMkIsRUFBRSxHQUFHLEVBQUU7SUFDckMsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxFQUFFLENBQUM7SUFDMUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxtQ0FBNkIsQ0FBQyxLQUFLLEVBQUUsK0JBQStCLEVBQUU7UUFDeEYsWUFBWSxFQUFFLGFBQWE7UUFDM0IsWUFBWSxFQUFFLFlBQVk7UUFDMUIsc0JBQXNCLEVBQUUseUJBQXlCO0tBQ2xELENBQUMsQ0FBQztJQUVILE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDekMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM3QyxNQUFNLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ25ELENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLDJDQUEyQyxFQUFFLEdBQUcsRUFBRTtJQUNyRCxNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLEVBQUUsQ0FBQztJQUUxQixNQUFNLFlBQVksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLGtCQUFrQixFQUFFO1FBQzNELFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQywwQkFBMEIs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LDZCQUE2QjtTQUM1QztLQUNGLENBQUMsQ0FBQztJQUVILE1BQU0sUUFBUSxHQUFHLHFCQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyx5QkFBeUIsRUFBRTtRQUN4RCxVQUFVLEVBQUUsS0FBSztRQUNqQixXQUFXLEVBQUU7WUFDWCxnQkFBZ0IsRUFBRTtnQkFDaEIsa0JBQWtCLEVBQUUseUJBQXlCO2dCQUM3QyxZQUFZLEVBQUUsNkJBQTZCO2FBQzVDO1NBQ0Y7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8vIEltcG9ydHNcbmltcG9ydCB7IFN0YWNrLCBBd3MgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBBcGlHYXRld2F5VG9TYWdlTWFrZXJFbmRwb2ludCB9IGZyb20gJy4uL2xpYic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gJ2F3cy1jZGstbGliL2Fzc2VydGlvbnMnO1xuXG50ZXN0KCdUZXN0IGNvbnN0cnVjdCBwcm9wZXJ0aWVzJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBwYXR0ZXJuID0gbmV3IEFwaUdhdGV3YXlUb1NhZ2VNYWtlckVuZHBvaW50KHN0YWNrLCAnYXBpLWdhdGV3YXktc2FnZW1ha2VyZW5kcG9pbnQnLCB7XG4gICAgZW5kcG9pbnROYW1lOiAnbXktZW5kcG9pbnQnLFxuICAgIHJlc291cmNlUGF0aDogJ3tteV9wYXJhbX0nLFxuICAgIHJlcXVlc3RNYXBwaW5nVGVtcGxhdGU6ICdteS1yZXF1ZXN0LXZ0bC10ZW1wbGF0ZSdcbiAgfSk7XG5cbiAgZXhwZWN0KHBhdHRlcm4uYXBpR2F0ZXdheSkudG9CZURlZmluZWQoKTtcbiAgZXhwZWN0KHBhdHRlcm4uYXBpR2F0ZXdheVJvbGUpLnRvQmVEZWZpbmVkKCk7XG4gIGV4cGVjdChwYXR0ZXJuLmFwaUdhdGV3YXlDbG91ZFdhdGNoUm9sZSkudG9CZURlZmluZWQoKTtcbiAgZXhwZWN0KHBhdHRlcm4uYXBpR2F0ZXdheUxvZ0dyb3VwKS50b0JlRGVmaW5lZCgpO1xufSk7XG5cbnRlc3QoJ1Rlc3QgZGVwbG95bWVudCB3LyBvdmVyd3JpdHRlbiBwcm9wZXJ0aWVzJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGNvbnN0IGV4aXN0aW5nUm9sZSA9IG5ldyBpYW0uUm9sZShzdGFjaywgJ2FwaS1nYXRld2F5LXJvbGUnLCB7XG4gICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2FwaWdhdGV3YXkuYW1hem9uYXdzLmNvbScpLFxuICAgIGRlc2NyaXB0aW9uOiAnZXhpc3Rpbmcgcm9sZSBmb3IgU2FnZU1ha2VyIGludGVncmF0aW9uJyxcbiAgICBpbmxpbmVQb2xpY2llczoge1xuICAgICAgSW52b2tlUG9saWN5OiBuZXcgaWFtLlBvbGljeURvY3VtZW50KHtcbiAgICAgICAgc3RhdGVtZW50czogW25ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICByZXNvdXJjZXM6IFtgYXJuOiR7QXdzLlBBUlRJVElPTn06c2FnZW1ha2VyOiR7QXdzLlJFR0lPTn06JHtBd3MuQUNDT1VOVF9JRH06ZW5kcG9pbnQvbXktZW5kcG9pbnRgXSxcbiAgICAgICAgICBhY3Rpb25zOiBbJ3NhZ2VtYWtlcjpJbnZva2VFbmRwb2ludCddXG4gICAgICAgIH0pXVxuICAgICAgfSlcbiAgICB9XG4gIH0pO1xuXG4gIG5ldyBBcGlHYXRld2F5VG9TYWdlTWFrZXJFbmRwb2ludChzdGFjaywgJ2FwaS1nYXRld2F5LXNhZ2VtYWtlcmVuZHBvaW50Jywge1xuICAgIGVuZHBvaW50TmFtZTogJ215LWVuZHBvaW50JyxcbiAgICByZXNvdXJjZVBhdGg6ICd7bXlfcGFyYW19JyxcbiAgICByZXF1ZXN0TWFwcGluZ1RlbXBsYXRlOiAnbXktcmVxdWVzdC12dGwtdGVtcGxhdGUnLFxuXG4gICAgYXBpR2F0ZXdheVByb3BzOiB7XG4gICAgICByZXN0QXBpTmFtZTogJ215LWFwaScsXG4gICAgICBkZXBsb3lPcHRpb25zOiB7XG4gICAgICAgIG1ldGhvZE9wdGlvbnM6IHtcbiAgICAgICAgICAnLyovKic6IHtcbiAgICAgICAgICAgIHRocm90dGxpbmdSYXRlTGltaXQ6IDEwMCxcbiAgICAgICAgICAgIHRocm90dGxpbmdCdXJzdExpbWl0OiAyNVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgYXBpR2F0ZXdheUV4ZWN1dGlvblJvbGU6IGV4aXN0aW5nUm9sZSxcbiAgICByZXNvdXJjZU5hbWU6ICdteS1yZXNvdXJjZScsXG4gICAgcmVzcG9uc2VNYXBwaW5nVGVtcGxhdGU6ICdteS1yZXNwb25zZS12dGwtdGVtcGxhdGUnXG4gIH0pO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OkFwaUdhdGV3YXk6OlN0YWdlJywge1xuICAgIE1ldGhvZFNldHRpbmdzOiBbXG4gICAgICB7XG4gICAgICAgIERhdGFUcmFjZUVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICBIdHRwTWV0aG9kOiAnKicsXG4gICAgICAgIExvZ2dpbmdMZXZlbDogJ0lORk8nLFxuICAgICAgICBSZXNvdXJjZVBhdGg6ICcvKidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIEh0dHBNZXRob2Q6ICcqJyxcbiAgICAgICAgUmVzb3VyY2VQYXRoOiAnLyonLFxuICAgICAgICBUaHJvdHRsaW5nUmF0ZUxpbWl0OiAxMDAsXG4gICAgICAgIFRocm90dGxpbmdCdXJzdExpbWl0OiAyNVxuICAgICAgfVxuICAgIF1cbiAgfSk7XG5cbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OkFwaUdhdGV3YXk6OlJlc291cmNlJywge1xuICAgIFBhdGhQYXJ0OiAnbXktcmVzb3VyY2UnXG4gIH0pO1xuXG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpBcGlHYXRld2F5OjpNZXRob2QnLCB7XG4gICAgSW50ZWdyYXRpb246IHtcbiAgICAgIEludGVncmF0aW9uUmVzcG9uc2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBSZXNwb25zZVRlbXBsYXRlczoge1xuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nOiAnbXktcmVzcG9uc2UtdnRsLXRlbXBsYXRlJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIFN0YXR1c0NvZGU6ICcyMDAnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBTdGF0dXNDb2RlOiAnNTAwJyxcbiAgICAgICAgICBTZWxlY3Rpb25QYXR0ZXJuOiAnNVxcXFxkezJ9J1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgU3RhdHVzQ29kZTogJzQwMCcsXG4gICAgICAgICAgU2VsZWN0aW9uUGF0dGVybjogJzRcXFxcZHsyfSdcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0sXG4gICAgTWV0aG9kUmVzcG9uc2VzOiBbXG4gICAgICB7IFN0YXR1c0NvZGU6ICcyMDAnIH0sXG4gICAgICB7IFN0YXR1c0NvZGU6ICc1MDAnIH0sXG4gICAgICB7IFN0YXR1c0NvZGU6ICc0MDAnIH1cbiAgICBdXG4gIH0pO1xuXG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpJQU06OlJvbGUnLCB7XG4gICAgRGVzY3JpcHRpb246ICdleGlzdGluZyByb2xlIGZvciBTYWdlTWFrZXIgaW50ZWdyYXRpb24nXG4gIH0pO1xufSk7XG5cbnRlc3QoJ0NvbnN0cnVjdCBhY2NlcHRzIGFkZGl0aW9uYWwgcmVhZCByZXF1ZXN0IHRlbXBsYXRlcycsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgbmV3IEFwaUdhdGV3YXlUb1NhZ2VNYWtlckVuZHBvaW50KHN0YWNrLCAnYXBpLWdhdGV3YXktc2FnZW1ha2VyLWVuZHBvaW50Jywge1xuICAgIGVuZHBvaW50TmFtZTogJ215LWVuZHBvaW50JyxcbiAgICByZXNvdXJjZVBhdGg6ICd7bXlfcGFyYW19JyxcbiAgICByZXF1ZXN0TWFwcGluZ1RlbXBsYXRlOiAnbXktcmVxdWVzdC12dGwtdGVtcGxhdGUnLFxuICAgIGFkZGl0aW9uYWxSZXF1ZXN0VGVtcGxhdGVzOiB7XG4gICAgICAndGV4dC9wbGFpbic6ICdhZGRpdGlvbmFsLXJlcXVlc3QtdGVtcGxhdGUnXG4gICAgfVxuICB9KTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpBcGlHYXRld2F5OjpNZXRob2QnLCB7XG4gICAgSHR0cE1ldGhvZDogJ0dFVCcsXG4gICAgSW50ZWdyYXRpb246IHtcbiAgICAgIFJlcXVlc3RUZW1wbGF0ZXM6IHtcbiAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nOiAnbXktcmVxdWVzdC12dGwtdGVtcGxhdGUnLFxuICAgICAgICAndGV4dC9wbGFpbic6ICdhZGRpdGlvbmFsLXJlcXVlc3QtdGVtcGxhdGUnXG4gICAgICB9XG4gICAgfVxuICB9KTtcbn0pO1xuIl19
136
+ test('Confirm call to CheckApiProps', () => {
137
+ // Initial Setup
138
+ const stack = new aws_cdk_lib_1.Stack();
139
+ const props = {
140
+ apiGatewayProps: {
141
+ defaultMethodOptions: {
142
+ apiKeyRequired: true
143
+ },
144
+ },
145
+ endpointName: 'my-endpoint',
146
+ resourcePath: '{my_param}',
147
+ requestMappingTemplate: 'my-request-vtl-template',
148
+ createUsagePlan: false,
149
+ };
150
+ const app = () => {
151
+ new lib_1.ApiGatewayToSageMakerEndpoint(stack, 'test-apigateway-sagemaker', props);
152
+ };
153
+ // Assertion
154
+ expect(app).toThrowError('Error - if API key is required, then the Usage plan must be created\n');
155
+ });
156
+ test('Confirm suppression of Usage Plan', () => {
157
+ // Initial Setup
158
+ const stack = new aws_cdk_lib_1.Stack();
159
+ const props = {
160
+ endpointName: 'my-endpoint',
161
+ resourcePath: '{my_param}',
162
+ requestMappingTemplate: 'my-request-vtl-template',
163
+ createUsagePlan: false
164
+ };
165
+ new lib_1.ApiGatewayToSageMakerEndpoint(stack, 'test-apigateway-sagemaker', props);
166
+ const template = assertions_1.Template.fromStack(stack);
167
+ template.resourceCountIs('AWS::ApiGateway::UsagePlan', 0);
168
+ });
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpZ2F0ZXdheS1zYWdlbWFrZXJlbmRwb2ludC50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBpZ2F0ZXdheS1zYWdlbWFrZXJlbmRwb2ludC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7QUFFSCxVQUFVO0FBQ1YsNkNBQXlDO0FBQ3pDLGdDQUEyRjtBQUMzRiwyQ0FBMkM7QUFDM0MsdURBQWtEO0FBRWxELElBQUksQ0FBQywyQkFBMkIsRUFBRSxHQUFHLEVBQUU7SUFDckMsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxFQUFFLENBQUM7SUFDMUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxtQ0FBNkIsQ0FBQyxLQUFLLEVBQUUsK0JBQStCLEVBQUU7UUFDeEYsWUFBWSxFQUFFLGFBQWE7UUFDM0IsWUFBWSxFQUFFLFlBQVk7UUFDMUIsc0JBQXNCLEVBQUUseUJBQXlCO0tBQ2xELENBQUMsQ0FBQztJQUVILE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDekMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM3QyxNQUFNLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ25ELENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLDJDQUEyQyxFQUFFLEdBQUcsRUFBRTtJQUNyRCxNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLEVBQUUsQ0FBQztJQUUxQixNQUFNLFlBQVksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLGtCQUFrQixFQUFFO1FBQzNELFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQywwQkFBMEIs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TSxLQUFLLEdBQXVDO1FBQ2hELFlBQVksRUFBRSxhQUFhO1FBQzNCLFlBQVksRUFBRSxZQUFZO1FBQzFCLHNCQUFzQixFQUFFLHlCQUF5QjtRQUNqRCxlQUFlLEVBQUUsS0FBSztLQUN2QixDQUFDO0lBQ0YsSUFBSSxtQ0FBNkIsQ0FBQyxLQUFLLEVBQUUsMkJBQTJCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFFN0UsTUFBTSxRQUFRLEdBQUcscUJBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsUUFBUSxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1RCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8vIEltcG9ydHNcbmltcG9ydCB7IFN0YWNrLCBBd3MgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBBcGlHYXRld2F5VG9TYWdlTWFrZXJFbmRwb2ludCwgQXBpR2F0ZXdheVRvU2FnZU1ha2VyRW5kcG9pbnRQcm9wcyB9IGZyb20gJy4uL2xpYic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gJ2F3cy1jZGstbGliL2Fzc2VydGlvbnMnO1xuXG50ZXN0KCdUZXN0IGNvbnN0cnVjdCBwcm9wZXJ0aWVzJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBwYXR0ZXJuID0gbmV3IEFwaUdhdGV3YXlUb1NhZ2VNYWtlckVuZHBvaW50KHN0YWNrLCAnYXBpLWdhdGV3YXktc2FnZW1ha2VyZW5kcG9pbnQnLCB7XG4gICAgZW5kcG9pbnROYW1lOiAnbXktZW5kcG9pbnQnLFxuICAgIHJlc291cmNlUGF0aDogJ3tteV9wYXJhbX0nLFxuICAgIHJlcXVlc3RNYXBwaW5nVGVtcGxhdGU6ICdteS1yZXF1ZXN0LXZ0bC10ZW1wbGF0ZSdcbiAgfSk7XG5cbiAgZXhwZWN0KHBhdHRlcm4uYXBpR2F0ZXdheSkudG9CZURlZmluZWQoKTtcbiAgZXhwZWN0KHBhdHRlcm4uYXBpR2F0ZXdheVJvbGUpLnRvQmVEZWZpbmVkKCk7XG4gIGV4cGVjdChwYXR0ZXJuLmFwaUdhdGV3YXlDbG91ZFdhdGNoUm9sZSkudG9CZURlZmluZWQoKTtcbiAgZXhwZWN0KHBhdHRlcm4uYXBpR2F0ZXdheUxvZ0dyb3VwKS50b0JlRGVmaW5lZCgpO1xufSk7XG5cbnRlc3QoJ1Rlc3QgZGVwbG95bWVudCB3LyBvdmVyd3JpdHRlbiBwcm9wZXJ0aWVzJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGNvbnN0IGV4aXN0aW5nUm9sZSA9IG5ldyBpYW0uUm9sZShzdGFjaywgJ2FwaS1nYXRld2F5LXJvbGUnLCB7XG4gICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2FwaWdhdGV3YXkuYW1hem9uYXdzLmNvbScpLFxuICAgIGRlc2NyaXB0aW9uOiAnZXhpc3Rpbmcgcm9sZSBmb3IgU2FnZU1ha2VyIGludGVncmF0aW9uJyxcbiAgICBpbmxpbmVQb2xpY2llczoge1xuICAgICAgSW52b2tlUG9saWN5OiBuZXcgaWFtLlBvbGljeURvY3VtZW50KHtcbiAgICAgICAgc3RhdGVtZW50czogW25ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICByZXNvdXJjZXM6IFtgYXJuOiR7QXdzLlBBUlRJVElPTn06c2FnZW1ha2VyOiR7QXdzLlJFR0lPTn06JHtBd3MuQUNDT1VOVF9JRH06ZW5kcG9pbnQvbXktZW5kcG9pbnRgXSxcbiAgICAgICAgICBhY3Rpb25zOiBbJ3NhZ2VtYWtlcjpJbnZva2VFbmRwb2ludCddXG4gICAgICAgIH0pXVxuICAgICAgfSlcbiAgICB9XG4gIH0pO1xuXG4gIG5ldyBBcGlHYXRld2F5VG9TYWdlTWFrZXJFbmRwb2ludChzdGFjaywgJ2FwaS1nYXRld2F5LXNhZ2VtYWtlcmVuZHBvaW50Jywge1xuICAgIGVuZHBvaW50TmFtZTogJ215LWVuZHBvaW50JyxcbiAgICByZXNvdXJjZVBhdGg6ICd7bXlfcGFyYW19JyxcbiAgICByZXF1ZXN0TWFwcGluZ1RlbXBsYXRlOiAnbXktcmVxdWVzdC12dGwtdGVtcGxhdGUnLFxuXG4gICAgYXBpR2F0ZXdheVByb3BzOiB7XG4gICAgICByZXN0QXBpTmFtZTogJ215LWFwaScsXG4gICAgICBkZXBsb3lPcHRpb25zOiB7XG4gICAgICAgIG1ldGhvZE9wdGlvbnM6IHtcbiAgICAgICAgICAnLyovKic6IHtcbiAgICAgICAgICAgIHRocm90dGxpbmdSYXRlTGltaXQ6IDEwMCxcbiAgICAgICAgICAgIHRocm90dGxpbmdCdXJzdExpbWl0OiAyNVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgYXBpR2F0ZXdheUV4ZWN1dGlvblJvbGU6IGV4aXN0aW5nUm9sZSxcbiAgICByZXNvdXJjZU5hbWU6ICdteS1yZXNvdXJjZScsXG4gICAgcmVzcG9uc2VNYXBwaW5nVGVtcGxhdGU6ICdteS1yZXNwb25zZS12dGwtdGVtcGxhdGUnXG4gIH0pO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OkFwaUdhdGV3YXk6OlN0YWdlJywge1xuICAgIE1ldGhvZFNldHRpbmdzOiBbXG4gICAgICB7XG4gICAgICAgIERhdGFUcmFjZUVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICBIdHRwTWV0aG9kOiAnKicsXG4gICAgICAgIExvZ2dpbmdMZXZlbDogJ0lORk8nLFxuICAgICAgICBSZXNvdXJjZVBhdGg6ICcvKidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIEh0dHBNZXRob2Q6ICcqJyxcbiAgICAgICAgUmVzb3VyY2VQYXRoOiAnLyonLFxuICAgICAgICBUaHJvdHRsaW5nUmF0ZUxpbWl0OiAxMDAsXG4gICAgICAgIFRocm90dGxpbmdCdXJzdExpbWl0OiAyNVxuICAgICAgfVxuICAgIF1cbiAgfSk7XG5cbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OkFwaUdhdGV3YXk6OlJlc291cmNlJywge1xuICAgIFBhdGhQYXJ0OiAnbXktcmVzb3VyY2UnXG4gIH0pO1xuXG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpBcGlHYXRld2F5OjpNZXRob2QnLCB7XG4gICAgSW50ZWdyYXRpb246IHtcbiAgICAgIEludGVncmF0aW9uUmVzcG9uc2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBSZXNwb25zZVRlbXBsYXRlczoge1xuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nOiAnbXktcmVzcG9uc2UtdnRsLXRlbXBsYXRlJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIFN0YXR1c0NvZGU6ICcyMDAnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBTdGF0dXNDb2RlOiAnNTAwJyxcbiAgICAgICAgICBTZWxlY3Rpb25QYXR0ZXJuOiAnNVxcXFxkezJ9J1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgU3RhdHVzQ29kZTogJzQwMCcsXG4gICAgICAgICAgU2VsZWN0aW9uUGF0dGVybjogJzRcXFxcZHsyfSdcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0sXG4gICAgTWV0aG9kUmVzcG9uc2VzOiBbXG4gICAgICB7IFN0YXR1c0NvZGU6ICcyMDAnIH0sXG4gICAgICB7IFN0YXR1c0NvZGU6ICc1MDAnIH0sXG4gICAgICB7IFN0YXR1c0NvZGU6ICc0MDAnIH1cbiAgICBdXG4gIH0pO1xuXG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpJQU06OlJvbGUnLCB7XG4gICAgRGVzY3JpcHRpb246ICdleGlzdGluZyByb2xlIGZvciBTYWdlTWFrZXIgaW50ZWdyYXRpb24nXG4gIH0pO1xuXG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcygnQVdTOjpBcGlHYXRld2F5OjpVc2FnZVBsYW4nLCAxKTtcbn0pO1xuXG50ZXN0KCdDb25zdHJ1Y3QgYWNjZXB0cyBhZGRpdGlvbmFsIHJlYWQgcmVxdWVzdCB0ZW1wbGF0ZXMnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIG5ldyBBcGlHYXRld2F5VG9TYWdlTWFrZXJFbmRwb2ludChzdGFjaywgJ2FwaS1nYXRld2F5LXNhZ2VtYWtlci1lbmRwb2ludCcsIHtcbiAgICBlbmRwb2ludE5hbWU6ICdteS1lbmRwb2ludCcsXG4gICAgcmVzb3VyY2VQYXRoOiAne215X3BhcmFtfScsXG4gICAgcmVxdWVzdE1hcHBpbmdUZW1wbGF0ZTogJ215LXJlcXVlc3QtdnRsLXRlbXBsYXRlJyxcbiAgICBhZGRpdGlvbmFsUmVxdWVzdFRlbXBsYXRlczoge1xuICAgICAgJ3RleHQvcGxhaW4nOiAnYWRkaXRpb25hbC1yZXF1ZXN0LXRlbXBsYXRlJ1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6QXBpR2F0ZXdheTo6TWV0aG9kJywge1xuICAgIEh0dHBNZXRob2Q6ICdHRVQnLFxuICAgIEludGVncmF0aW9uOiB7XG4gICAgICBSZXF1ZXN0VGVtcGxhdGVzOiB7XG4gICAgICAgICdhcHBsaWNhdGlvbi9qc29uJzogJ215LXJlcXVlc3QtdnRsLXRlbXBsYXRlJyxcbiAgICAgICAgJ3RleHQvcGxhaW4nOiAnYWRkaXRpb25hbC1yZXF1ZXN0LXRlbXBsYXRlJ1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59KTtcblxudGVzdCgnQ29uZmlybSBjYWxsIHRvIENoZWNrQXBpUHJvcHMnLCAoKSA9PiB7XG4gIC8vIEluaXRpYWwgU2V0dXBcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCBwcm9wczogQXBpR2F0ZXdheVRvU2FnZU1ha2VyRW5kcG9pbnRQcm9wcyA9IHtcbiAgICBhcGlHYXRld2F5UHJvcHM6IHtcbiAgICAgIGRlZmF1bHRNZXRob2RPcHRpb25zOiB7XG4gICAgICAgIGFwaUtleVJlcXVpcmVkOiB0cnVlXG4gICAgICB9LFxuICAgIH0sXG4gICAgZW5kcG9pbnROYW1lOiAnbXktZW5kcG9pbnQnLFxuICAgIHJlc291cmNlUGF0aDogJ3tteV9wYXJhbX0nLFxuICAgIHJlcXVlc3RNYXBwaW5nVGVtcGxhdGU6ICdteS1yZXF1ZXN0LXZ0bC10ZW1wbGF0ZScsXG4gICAgY3JlYXRlVXNhZ2VQbGFuOiBmYWxzZSxcbiAgfTtcbiAgY29uc3QgYXBwID0gKCkgPT4ge1xuICAgIG5ldyBBcGlHYXRld2F5VG9TYWdlTWFrZXJFbmRwb2ludChzdGFjaywgJ3Rlc3QtYXBpZ2F0ZXdheS1zYWdlbWFrZXInLCBwcm9wcyk7XG4gIH07XG4gIC8vIEFzc2VydGlvblxuICBleHBlY3QoYXBwKS50b1Rocm93RXJyb3IoJ0Vycm9yIC0gaWYgQVBJIGtleSBpcyByZXF1aXJlZCwgdGhlbiB0aGUgVXNhZ2UgcGxhbiBtdXN0IGJlIGNyZWF0ZWRcXG4nKTtcbn0pO1xuXG50ZXN0KCdDb25maXJtIHN1cHByZXNzaW9uIG9mIFVzYWdlIFBsYW4nLCAoKSA9PiB7XG4gIC8vIEluaXRpYWwgU2V0dXBcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJvcHM6IEFwaUdhdGV3YXlUb1NhZ2VNYWtlckVuZHBvaW50UHJvcHMgPSB7XG4gICAgZW5kcG9pbnROYW1lOiAnbXktZW5kcG9pbnQnLFxuICAgIHJlc291cmNlUGF0aDogJ3tteV9wYXJhbX0nLFxuICAgIHJlcXVlc3RNYXBwaW5nVGVtcGxhdGU6ICdteS1yZXF1ZXN0LXZ0bC10ZW1wbGF0ZScsXG4gICAgY3JlYXRlVXNhZ2VQbGFuOiBmYWxzZVxuICB9O1xuICBuZXcgQXBpR2F0ZXdheVRvU2FnZU1ha2VyRW5kcG9pbnQoc3RhY2ssICd0ZXN0LWFwaWdhdGV3YXktc2FnZW1ha2VyJywgcHJvcHMpO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKCdBV1M6OkFwaUdhdGV3YXk6OlVzYWdlUGxhbicsIDApO1xufSk7XG4iXX0=
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
5
+ * with the License. A copy of the License is located at
6
+ *
7
+ * http://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
10
+ * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
11
+ * and limitations under the License.
12
+ */
13
+ export {};
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
6
+ * with the License. A copy of the License is located at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
11
+ * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
12
+ * and limitations under the License.
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ // Imports
16
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
17
+ const lib_1 = require("../lib");
18
+ const core_1 = require("@aws-solutions-constructs/core");
19
+ const integ_tests_alpha_1 = require("@aws-cdk/integ-tests-alpha");
20
+ // Setup
21
+ const app = new aws_cdk_lib_1.App();
22
+ const stack = new aws_cdk_lib_1.Stack(app, (0, core_1.generateIntegStackName)(__filename));
23
+ stack.templateOptions.description = 'Integration Test for aws-apigateway-sagemakerendpoint';
24
+ // Definitions
25
+ const requestTemplate = `{
26
+ "instances": [
27
+ #set( $user_id = $input.params("user_id") )
28
+ #set( $items = $input.params("items") )
29
+ #foreach( $item in $items.split(",") )
30
+ {"in0": [$user_id], "in1": [$item]}#if( $foreach.hasNext ),#end
31
+ $esc.newline
32
+ #end
33
+ ]
34
+ }`;
35
+ const props = {
36
+ endpointName: 'my-endpoint',
37
+ resourcePath: '{user_id}',
38
+ requestMappingTemplate: requestTemplate,
39
+ createUsagePlan: false
40
+ };
41
+ new lib_1.ApiGatewayToSageMakerEndpoint(stack, 'test-apigateway-sagemakerendpoint-default', props);
42
+ // Synth
43
+ new integ_tests_alpha_1.IntegTest(stack, 'Integ', { testCases: [
44
+ stack
45
+ ] });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWcuYXBpc2FnLW5vLXVzYWdlLXBsYW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbnRlZy5hcGlzYWctbm8tdXNhZ2UtcGxhbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7O0FBRUgsVUFBVTtBQUNWLDZDQUF5QztBQUN6QyxnQ0FBMkY7QUFDM0YseURBQXdFO0FBQ3hFLGtFQUF1RDtBQUV2RCxRQUFRO0FBQ1IsTUFBTSxHQUFHLEdBQUcsSUFBSSxpQkFBRyxFQUFFLENBQUM7QUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxDQUFDLEdBQUcsRUFBRSxJQUFBLDZCQUFzQixFQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDakUsS0FBSyxDQUFDLGVBQWUsQ0FBQyxXQUFXLEdBQUcsdURBQXVELENBQUM7QUFFNUYsY0FBYztBQUNkLE1BQU0sZUFBZSxHQUNyQjs7Ozs7Ozs7O0VBU0UsQ0FBQztBQUVILE1BQU0sS0FBSyxHQUF1QztJQUNoRCxZQUFZLEVBQUUsYUFBYTtJQUMzQixZQUFZLEVBQUUsV0FBVztJQUN6QixzQkFBc0IsRUFBRSxlQUFlO0lBQ3ZDLGVBQWUsRUFBRSxLQUFLO0NBQ3ZCLENBQUM7QUFFRixJQUFJLG1DQUE2QixDQUFDLEtBQUssRUFBRSwyQ0FBMkMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUU3RixRQUFRO0FBQ1IsSUFBSSw2QkFBUyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUU7UUFDekMsS0FBSztLQUNOLEVBQUUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gSW1wb3J0c1xuaW1wb3J0IHsgQXBwLCBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IEFwaUdhdGV3YXlUb1NhZ2VNYWtlckVuZHBvaW50LCBBcGlHYXRld2F5VG9TYWdlTWFrZXJFbmRwb2ludFByb3BzIH0gZnJvbSAnLi4vbGliJztcbmltcG9ydCB7IGdlbmVyYXRlSW50ZWdTdGFja05hbWUgfSBmcm9tICdAYXdzLXNvbHV0aW9ucy1jb25zdHJ1Y3RzL2NvcmUnO1xuaW1wb3J0IHsgSW50ZWdUZXN0IH0gZnJvbSAnQGF3cy1jZGsvaW50ZWctdGVzdHMtYWxwaGEnO1xuXG4vLyBTZXR1cFxuY29uc3QgYXBwID0gbmV3IEFwcCgpO1xuY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soYXBwLCBnZW5lcmF0ZUludGVnU3RhY2tOYW1lKF9fZmlsZW5hbWUpKTtcbnN0YWNrLnRlbXBsYXRlT3B0aW9ucy5kZXNjcmlwdGlvbiA9ICdJbnRlZ3JhdGlvbiBUZXN0IGZvciBhd3MtYXBpZ2F0ZXdheS1zYWdlbWFrZXJlbmRwb2ludCc7XG5cbi8vIERlZmluaXRpb25zXG5jb25zdCByZXF1ZXN0VGVtcGxhdGUgPVxuYHtcbiAgICBcImluc3RhbmNlc1wiOiBbXG4jc2V0KCAkdXNlcl9pZCA9ICRpbnB1dC5wYXJhbXMoXCJ1c2VyX2lkXCIpIClcbiNzZXQoICRpdGVtcyA9ICRpbnB1dC5wYXJhbXMoXCJpdGVtc1wiKSApXG4jZm9yZWFjaCggJGl0ZW0gaW4gJGl0ZW1zLnNwbGl0KFwiLFwiKSApXG4gICAge1wiaW4wXCI6IFskdXNlcl9pZF0sIFwiaW4xXCI6IFskaXRlbV19I2lmKCAkZm9yZWFjaC5oYXNOZXh0ICksI2VuZFxuICAgICRlc2MubmV3bGluZVxuI2VuZFxuICAgIF1cbn1gO1xuXG5jb25zdCBwcm9wczogQXBpR2F0ZXdheVRvU2FnZU1ha2VyRW5kcG9pbnRQcm9wcyA9IHtcbiAgZW5kcG9pbnROYW1lOiAnbXktZW5kcG9pbnQnLFxuICByZXNvdXJjZVBhdGg6ICd7dXNlcl9pZH0nLFxuICByZXF1ZXN0TWFwcGluZ1RlbXBsYXRlOiByZXF1ZXN0VGVtcGxhdGUsXG4gIGNyZWF0ZVVzYWdlUGxhbjogZmFsc2Vcbn07XG5cbm5ldyBBcGlHYXRld2F5VG9TYWdlTWFrZXJFbmRwb2ludChzdGFjaywgJ3Rlc3QtYXBpZ2F0ZXdheS1zYWdlbWFrZXJlbmRwb2ludC1kZWZhdWx0JywgcHJvcHMpO1xuXG4vLyBTeW50aFxubmV3IEludGVnVGVzdChzdGFjaywgJ0ludGVnJywgeyB0ZXN0Q2FzZXM6IFtcbiAgc3RhY2tcbl0gfSk7XG4iXX0=
@@ -0,0 +1,19 @@
1
+ {
2
+ "version": "39.0.0",
3
+ "files": {
4
+ "7c2150d1f0ed20f31f0c7bd3e0d446225384266c0d34c3223e1cd2b4d9bb2cf6": {
5
+ "source": {
6
+ "path": "apisag-no-usage-plan.template.json",
7
+ "packaging": "file"
8
+ },
9
+ "destinations": {
10
+ "current_account-current_region": {
11
+ "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}",
12
+ "objectKey": "7c2150d1f0ed20f31f0c7bd3e0d446225384266c0d34c3223e1cd2b4d9bb2cf6.json",
13
+ "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}"
14
+ }
15
+ }
16
+ }
17
+ },
18
+ "dockerImages": {}
19
+ }