@aws-solutions-constructs/aws-apigateway-sagemakerendpoint 2.30.0 → 2.32.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 +91 -16
- package/README.md +2 -1
- package/lib/index.d.ts +11 -1
- package/lib/index.js +3 -2
- package/package.json +6 -6
- package/test/apigateway-sagemakerendpoint.test.js +21 -1
- package/test/integ.additional-request-templates.d.ts +13 -0
- package/test/integ.additional-request-templates.expected.json +396 -0
- package/test/integ.additional-request-templates.js +45 -0
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.
|
|
12
|
-
"aws-cdk-lib": "^2.
|
|
11
|
+
"@aws-solutions-constructs/core": "2.32.0",
|
|
12
|
+
"aws-cdk-lib": "^2.64.0",
|
|
13
13
|
"constructs": "^10.0.0"
|
|
14
14
|
},
|
|
15
15
|
"dependencyClosure": {
|
|
@@ -950,6 +950,19 @@
|
|
|
950
950
|
}
|
|
951
951
|
}
|
|
952
952
|
},
|
|
953
|
+
"aws-cdk-lib.aws_devicefarm": {
|
|
954
|
+
"targets": {
|
|
955
|
+
"dotnet": {
|
|
956
|
+
"namespace": "Amazon.CDK.AWS.DeviceFarm"
|
|
957
|
+
},
|
|
958
|
+
"java": {
|
|
959
|
+
"package": "software.amazon.awscdk.services.devicefarm"
|
|
960
|
+
},
|
|
961
|
+
"python": {
|
|
962
|
+
"module": "aws_cdk.aws_devicefarm"
|
|
963
|
+
}
|
|
964
|
+
}
|
|
965
|
+
},
|
|
953
966
|
"aws-cdk-lib.aws_devopsguru": {
|
|
954
967
|
"targets": {
|
|
955
968
|
"dotnet": {
|
|
@@ -1769,6 +1782,19 @@
|
|
|
1769
1782
|
}
|
|
1770
1783
|
}
|
|
1771
1784
|
},
|
|
1785
|
+
"aws-cdk-lib.aws_kendraranking": {
|
|
1786
|
+
"targets": {
|
|
1787
|
+
"dotnet": {
|
|
1788
|
+
"namespace": "Amazon.CDK.AWS.KendraRanking"
|
|
1789
|
+
},
|
|
1790
|
+
"java": {
|
|
1791
|
+
"package": "software.amazon.awscdk.services.kendraranking"
|
|
1792
|
+
},
|
|
1793
|
+
"python": {
|
|
1794
|
+
"module": "aws_cdk.aws_kendraranking"
|
|
1795
|
+
}
|
|
1796
|
+
}
|
|
1797
|
+
},
|
|
1772
1798
|
"aws-cdk-lib.aws_kinesis": {
|
|
1773
1799
|
"targets": {
|
|
1774
1800
|
"dotnet": {
|
|
@@ -2250,6 +2276,19 @@
|
|
|
2250
2276
|
}
|
|
2251
2277
|
}
|
|
2252
2278
|
},
|
|
2279
|
+
"aws-cdk-lib.aws_omics": {
|
|
2280
|
+
"targets": {
|
|
2281
|
+
"dotnet": {
|
|
2282
|
+
"namespace": "Amazon.CDK.AWS.Omics"
|
|
2283
|
+
},
|
|
2284
|
+
"java": {
|
|
2285
|
+
"package": "software.amazon.awscdk.services.omics"
|
|
2286
|
+
},
|
|
2287
|
+
"python": {
|
|
2288
|
+
"module": "aws_cdk.aws_omics"
|
|
2289
|
+
}
|
|
2290
|
+
}
|
|
2291
|
+
},
|
|
2253
2292
|
"aws-cdk-lib.aws_opensearchserverless": {
|
|
2254
2293
|
"targets": {
|
|
2255
2294
|
"dotnet": {
|
|
@@ -2874,6 +2913,19 @@
|
|
|
2874
2913
|
}
|
|
2875
2914
|
}
|
|
2876
2915
|
},
|
|
2916
|
+
"aws-cdk-lib.aws_simspaceweaver": {
|
|
2917
|
+
"targets": {
|
|
2918
|
+
"dotnet": {
|
|
2919
|
+
"namespace": "Amazon.CDK.AWS.SimSpaceWeaver"
|
|
2920
|
+
},
|
|
2921
|
+
"java": {
|
|
2922
|
+
"package": "software.amazon.awscdk.services.simspaceweaver"
|
|
2923
|
+
},
|
|
2924
|
+
"python": {
|
|
2925
|
+
"module": "aws_cdk.aws_simspaceweaver"
|
|
2926
|
+
}
|
|
2927
|
+
}
|
|
2928
|
+
},
|
|
2877
2929
|
"aws-cdk-lib.aws_sns": {
|
|
2878
2930
|
"targets": {
|
|
2879
2931
|
"dotnet": {
|
|
@@ -3319,7 +3371,7 @@
|
|
|
3319
3371
|
},
|
|
3320
3372
|
"description": "CDK Constructs for AWS API Gateway and Amazon SageMaker Endpoint integration.",
|
|
3321
3373
|
"homepage": "https://github.com/awslabs/aws-solutions-constructs.git",
|
|
3322
|
-
"jsiiVersion": "1.
|
|
3374
|
+
"jsiiVersion": "1.74.0 (build 6d08790)",
|
|
3323
3375
|
"keywords": [
|
|
3324
3376
|
"aws",
|
|
3325
3377
|
"cdk",
|
|
@@ -3338,7 +3390,7 @@
|
|
|
3338
3390
|
},
|
|
3339
3391
|
"name": "@aws-solutions-constructs/aws-apigateway-sagemakerendpoint",
|
|
3340
3392
|
"readme": {
|
|
3341
|
-
"markdown": "# aws-apigateway-sagemakerendpoint module\n<!--BEGIN STABILITY BANNER-->\n\n---\n\n\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|`aws_solutions_constructs.aws_apigateway_sagemakerendpoint`|\n| Typescript|`@aws-solutions-constructs/aws-apigateway-sagemakerendpoint`|\n| 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 received on the REST API to POST requests expected by the SageMaker endpoint.|\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\n\n***\n© Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved."
|
|
3393
|
+
"markdown": "# aws-apigateway-sagemakerendpoint module\n<!--BEGIN STABILITY BANNER-->\n\n---\n\n\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|`aws_solutions_constructs.aws_apigateway_sagemakerendpoint`|\n| Typescript|`@aws-solutions-constructs/aws-apigateway-sagemakerendpoint`|\n| 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\n\n***\n© Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved."
|
|
3342
3394
|
},
|
|
3343
3395
|
"repository": {
|
|
3344
3396
|
"directory": "source/patterns/@aws-solutions-constructs/aws-apigateway-sagemakerendpoint",
|
|
@@ -3388,7 +3440,7 @@
|
|
|
3388
3440
|
},
|
|
3389
3441
|
"locationInModule": {
|
|
3390
3442
|
"filename": "lib/index.ts",
|
|
3391
|
-
"line":
|
|
3443
|
+
"line": 101
|
|
3392
3444
|
},
|
|
3393
3445
|
"parameters": [
|
|
3394
3446
|
{
|
|
@@ -3423,7 +3475,7 @@
|
|
|
3423
3475
|
"kind": "class",
|
|
3424
3476
|
"locationInModule": {
|
|
3425
3477
|
"filename": "lib/index.ts",
|
|
3426
|
-
"line":
|
|
3478
|
+
"line": 87
|
|
3427
3479
|
},
|
|
3428
3480
|
"name": "ApiGatewayToSageMakerEndpoint",
|
|
3429
3481
|
"properties": [
|
|
@@ -3431,7 +3483,7 @@
|
|
|
3431
3483
|
"immutable": true,
|
|
3432
3484
|
"locationInModule": {
|
|
3433
3485
|
"filename": "lib/index.ts",
|
|
3434
|
-
"line":
|
|
3486
|
+
"line": 88
|
|
3435
3487
|
},
|
|
3436
3488
|
"name": "apiGateway",
|
|
3437
3489
|
"type": {
|
|
@@ -3442,7 +3494,7 @@
|
|
|
3442
3494
|
"immutable": true,
|
|
3443
3495
|
"locationInModule": {
|
|
3444
3496
|
"filename": "lib/index.ts",
|
|
3445
|
-
"line":
|
|
3497
|
+
"line": 91
|
|
3446
3498
|
},
|
|
3447
3499
|
"name": "apiGatewayLogGroup",
|
|
3448
3500
|
"type": {
|
|
@@ -3453,7 +3505,7 @@
|
|
|
3453
3505
|
"immutable": true,
|
|
3454
3506
|
"locationInModule": {
|
|
3455
3507
|
"filename": "lib/index.ts",
|
|
3456
|
-
"line":
|
|
3508
|
+
"line": 89
|
|
3457
3509
|
},
|
|
3458
3510
|
"name": "apiGatewayRole",
|
|
3459
3511
|
"type": {
|
|
@@ -3464,7 +3516,7 @@
|
|
|
3464
3516
|
"immutable": true,
|
|
3465
3517
|
"locationInModule": {
|
|
3466
3518
|
"filename": "lib/index.ts",
|
|
3467
|
-
"line":
|
|
3519
|
+
"line": 90
|
|
3468
3520
|
},
|
|
3469
3521
|
"name": "apiGatewayCloudWatchRole",
|
|
3470
3522
|
"optional": true,
|
|
@@ -3511,12 +3563,12 @@
|
|
|
3511
3563
|
"abstract": true,
|
|
3512
3564
|
"docs": {
|
|
3513
3565
|
"default": "- None.",
|
|
3514
|
-
"summary": "Mapping template to convert GET requests received on the REST API to POST requests expected by the SageMaker endpoint."
|
|
3566
|
+
"summary": "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."
|
|
3515
3567
|
},
|
|
3516
3568
|
"immutable": true,
|
|
3517
3569
|
"locationInModule": {
|
|
3518
3570
|
"filename": "lib/index.ts",
|
|
3519
|
-
"line":
|
|
3571
|
+
"line": 62
|
|
3520
3572
|
},
|
|
3521
3573
|
"name": "requestMappingTemplate",
|
|
3522
3574
|
"type": {
|
|
@@ -3540,6 +3592,29 @@
|
|
|
3540
3592
|
"primitive": "string"
|
|
3541
3593
|
}
|
|
3542
3594
|
},
|
|
3595
|
+
{
|
|
3596
|
+
"abstract": true,
|
|
3597
|
+
"docs": {
|
|
3598
|
+
"default": "- None",
|
|
3599
|
+
"remarks": "Use the `requestMappingTemplate` property to set the request template for the `application/json` content-type.",
|
|
3600
|
+
"summary": "Optional Request Templates for content-types other than `application/json`."
|
|
3601
|
+
},
|
|
3602
|
+
"immutable": true,
|
|
3603
|
+
"locationInModule": {
|
|
3604
|
+
"filename": "lib/index.ts",
|
|
3605
|
+
"line": 69
|
|
3606
|
+
},
|
|
3607
|
+
"name": "additionalRequestTemplates",
|
|
3608
|
+
"optional": true,
|
|
3609
|
+
"type": {
|
|
3610
|
+
"collection": {
|
|
3611
|
+
"elementtype": {
|
|
3612
|
+
"primitive": "string"
|
|
3613
|
+
},
|
|
3614
|
+
"kind": "map"
|
|
3615
|
+
}
|
|
3616
|
+
}
|
|
3617
|
+
},
|
|
3543
3618
|
{
|
|
3544
3619
|
"abstract": true,
|
|
3545
3620
|
"docs": {
|
|
@@ -3583,7 +3658,7 @@
|
|
|
3583
3658
|
"immutable": true,
|
|
3584
3659
|
"locationInModule": {
|
|
3585
3660
|
"filename": "lib/index.ts",
|
|
3586
|
-
"line":
|
|
3661
|
+
"line": 81
|
|
3587
3662
|
},
|
|
3588
3663
|
"name": "logGroupProps",
|
|
3589
3664
|
"optional": true,
|
|
@@ -3617,7 +3692,7 @@
|
|
|
3617
3692
|
"immutable": true,
|
|
3618
3693
|
"locationInModule": {
|
|
3619
3694
|
"filename": "lib/index.ts",
|
|
3620
|
-
"line":
|
|
3695
|
+
"line": 75
|
|
3621
3696
|
},
|
|
3622
3697
|
"name": "responseMappingTemplate",
|
|
3623
3698
|
"optional": true,
|
|
@@ -3629,6 +3704,6 @@
|
|
|
3629
3704
|
"symbolId": "lib/index:ApiGatewayToSageMakerEndpointProps"
|
|
3630
3705
|
}
|
|
3631
3706
|
},
|
|
3632
|
-
"version": "2.
|
|
3633
|
-
"fingerprint": "
|
|
3707
|
+
"version": "2.32.0",
|
|
3708
|
+
"fingerprint": "1LOqpltC64wIIPU4v+Oaa8VZLjpEtZfs01Au6cr+T5U="
|
|
3634
3709
|
}
|
package/README.md
CHANGED
|
@@ -123,7 +123,8 @@ new ApiGatewayToSageMakerEndpoint(this, "ApiGatewayToSageMakerEndpointPattern",
|
|
|
123
123
|
|endpointName|`string`|Name of the deployed SageMaker inference endpoint.|
|
|
124
124
|
|resourceName?|`string`|Optional resource name where the GET method will be available.|
|
|
125
125
|
|resourcePath|`string`|Resource path for the GET method. The variable defined here can be referenced in `requestMappingTemplate`.|
|
|
126
|
-
|requestMappingTemplate|`string`|Mapping template to convert GET requests received on the REST API to POST requests expected by the SageMaker endpoint.|
|
|
126
|
+
|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.|
|
|
127
|
+
|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.|
|
|
127
128
|
|responseMappingTemplate?|`string`|Optional mapping template to convert responses received from the SageMaker endpoint.|
|
|
128
129
|
|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.|
|
|
129
130
|
|
package/lib/index.d.ts
CHANGED
|
@@ -49,11 +49,21 @@ export interface ApiGatewayToSageMakerEndpointProps {
|
|
|
49
49
|
*/
|
|
50
50
|
readonly resourcePath: string;
|
|
51
51
|
/**
|
|
52
|
-
* Mapping template to convert GET requests
|
|
52
|
+
* Mapping template to convert GET requests for the default `application/json` content-type received
|
|
53
|
+
* on the REST API to POST requests expected by the SageMaker endpoint.
|
|
53
54
|
*
|
|
54
55
|
* @default - None.
|
|
55
56
|
*/
|
|
56
57
|
readonly requestMappingTemplate: string;
|
|
58
|
+
/**
|
|
59
|
+
* Optional Request Templates for content-types other than `application/json`.
|
|
60
|
+
* Use the `requestMappingTemplate` property to set the request template for the `application/json` content-type.
|
|
61
|
+
*
|
|
62
|
+
* @default - None
|
|
63
|
+
*/
|
|
64
|
+
readonly additionalRequestTemplates?: {
|
|
65
|
+
[contentType: string]: string;
|
|
66
|
+
};
|
|
57
67
|
/**
|
|
58
68
|
* Optional mapping template to convert responses received from the SageMaker endpoint.
|
|
59
69
|
*
|
package/lib/index.js
CHANGED
|
@@ -99,6 +99,7 @@ class ApiGatewayToSageMakerEndpoint extends constructs_1.Construct {
|
|
|
99
99
|
apiResource,
|
|
100
100
|
requestValidator,
|
|
101
101
|
requestTemplate: props.requestMappingTemplate,
|
|
102
|
+
additionalRequestTemplates: props.additionalRequestTemplates,
|
|
102
103
|
awsIntegrationProps: {
|
|
103
104
|
options: { integrationResponses: integResponses }
|
|
104
105
|
},
|
|
@@ -108,5 +109,5 @@ class ApiGatewayToSageMakerEndpoint extends constructs_1.Construct {
|
|
|
108
109
|
}
|
|
109
110
|
exports.ApiGatewayToSageMakerEndpoint = ApiGatewayToSageMakerEndpoint;
|
|
110
111
|
_a = JSII_RTTI_SYMBOL_1;
|
|
111
|
-
ApiGatewayToSageMakerEndpoint[_a] = { fqn: "@aws-solutions-constructs/aws-apigateway-sagemakerendpoint.ApiGatewayToSageMakerEndpoint", version: "2.
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBRUgsVUFBVTtBQUNWLDJDQUF1QztBQUV2QywyQ0FBMkM7QUFDM0MsMkRBQTJEO0FBQzNELDZDQUFrQztBQXlEbEM7O0dBRUc7QUFDSCxNQUFhLDZCQUE4QixTQUFRLHNCQUFTO0lBTTFEOzs7Ozs7O09BT0c7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXlDO1FBQ2pGLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUzQix3QkFBd0I7UUFDeEIsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksRUFDckcsS0FBSyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFOUMsNkJBQTZCO1FBQzdCLElBQUksS0FBSyxDQUFDLHVCQUF1QixLQUFLLFNBQVMsRUFBRTtZQUMvQyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQztTQUNyRDthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFO2dCQUMzRCxTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsMEJBQTBCLENBQUM7YUFDaEUsQ0FBQyxDQUFDO1lBRUgsOENBQThDO1lBQzlDLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUU7Z0JBQ2hFLFVBQVUsRUFBRTtvQkFDVixJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7d0JBQ3RCLE9BQU8sRUFBRSxDQUFDLDBCQUEwQixDQUFDO3dCQUNyQyxTQUFTLEVBQUUsQ0FBQyxPQUFPLGlCQUFHLENBQUMsU0FBUyxjQUFjLGlCQUFHLENBQUMsTUFBTSxJQUFJLGlCQUFHLENBQUMsVUFBVSxhQUFhLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztxQkFDN0csQ0FBQztpQkFDSDthQUNGLENBQUMsQ0FBQztZQUVILFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ2hEO1FBRUQsMkJBQTJCO1FBQzNCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxtQkFBbUIsRUFBRTtZQUNoRixvQkFBb0IsRUFBRSx5QkFBeUI7WUFFL0Msd0VBQXdFO1lBQ3hFLDJDQUEyQztZQUMzQyxpQkFBaUI7WUFDakIsWUFBWTtZQUNaLHlCQUF5QixFQUFFLElBQUk7U0FDaEMsQ0FBQyxDQUFDO1FBRUgseUNBQXlDO1FBQ3pDLE1BQU0sZUFBZSxHQUF5QjtZQUM1QyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUU7WUFDckIsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFO1lBQ3JCLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRTtTQUN0QixDQUFDO1FBRUYsTUFBTSxjQUFjLEdBQThCLEVBQUUsQ0FBQztRQUNyRCxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsS0FBSyxTQUFTLEVBQUU7WUFDL0MsY0FBYyxDQUFDLElBQUksQ0FBQztnQkFDbEIsVUFBVSxFQUFFLEtBQUs7Z0JBQ2pCLGlCQUFpQixFQUFFLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLHVCQUF1QixFQUFFO2FBQ3pFLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDNUM7UUFFRCxjQUFjLENBQUMsSUFBSSxDQUNqQixFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLEVBQ2xELEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsQ0FDbkQsQ0FBQztRQUVGLDZIQUE2SDtRQUM3SCx1RkFBdUY7UUFDdkYsK0VBQStFO1FBQy9FLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1FBQ3ZDLElBQUksS0FBSyxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUU7WUFDcEMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzNEO1FBQ0QsV0FBVyxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTFELDJCQUEyQjtRQUMzQixRQUFRLENBQUMsMkJBQTJCLENBQUM7WUFDbkMsT0FBTyxFQUFFLG1CQUFtQjtZQUM1QixJQUFJLEVBQUUsYUFBYSxLQUFLLENBQUMsWUFBWSxjQUFjO1lBQ25ELGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztZQUNuQyxTQUFTLEVBQUUsS0FBSztZQUNoQixXQUFXO1lBQ1gsZ0JBQWdCO1lBQ2hCLGVBQWUsRUFBRSxLQUFLLENBQUMsc0JBQXNCO1lBQzdDLG1CQUFtQixFQUFFO2dCQUNuQixPQUFPLEVBQUUsRUFBRSxvQkFBb0IsRUFBRSxjQUFjLEVBQUU7YUFDbEQ7WUFDRCxhQUFhLEVBQUUsRUFBRSxlQUFlLEVBQUU7U0FDbkMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFuR0gsc0VBb0dDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gSW1wb3J0c1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyBhcGkgZnJvbSAnYXdzLWNkay1saWIvYXdzLWFwaWdhdGV3YXknO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0ICogYXMgZGVmYXVsdHMgZnJvbSAnQGF3cy1zb2x1dGlvbnMtY29uc3RydWN0cy9jb3JlJztcbmltcG9ydCB7IEF3cyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuXG4vKipcbiAqIEBzdW1tYXJ5IFRoZSBwcm9wZXJ0aWVzIGZvciB0aGUgQXBpR2F0ZXdheVRvU2FnZU1ha2VyRW5kcG9pbnRQcm9wcyBjbGFzcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcGlHYXRld2F5VG9TYWdlTWFrZXJFbmRwb2ludFByb3BzIHtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIHVzZXItcHJvdmlkZWQgcHJvcHMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcHJvcHMgZm9yIHRoZSBBUEkgR2F0ZXdheS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBEZWZhdWx0IHByb3BlcnRpZXMgYXJlIHVzZWQuXG4gICAqL1xuICByZWFkb25seSBhcGlHYXRld2F5UHJvcHM/OiBhcGkuUmVzdEFwaVByb3BzLFxuICAvKipcbiAgICogT3B0aW9uYWwgSUFNIHJvbGUgdGhhdCBpcyB1c2VkIGJ5IEFQSSBHYXRld2F5IHRvIGludm9rZSB0aGUgU2FnZU1ha2VyIGVuZHBvaW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEFuIElBTSByb2xlIHdpdGggc2FnZW1ha2VyOkludm9rZUVuZHBvaW50IGFjY2VzcyB0byBgZW5kcG9pbnROYW1lYCBpcyBjcmVhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBpR2F0ZXdheUV4ZWN1dGlvblJvbGU/OiBpYW0uUm9sZSxcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGRlcGxveWVkIFNhZ2VNYWtlciBpbmZlcmVuY2UgZW5kcG9pbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZS5cbiAgICovXG4gIHJlYWRvbmx5IGVuZHBvaW50TmFtZTogc3RyaW5nLFxuICAvKipcbiAgICogT3B0aW9uYWwgcmVzb3VyY2UgbmFtZSB3aGVyZSB0aGUgR0VUIG1ldGhvZCB3aWxsIGJlIGF2YWlsYWJsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VOYW1lPzogc3RyaW5nLFxuICAvKipcbiAgICogUmVzb3VyY2UgcGF0aCBmb3IgdGhlIEdFVCBtZXRob2QuIFRoZSB2YXJpYWJsZSBkZWZpbmVkIGhlcmUgY2FuIGJlIHJlZmVyZW5jZWQgaW4gYHJlcXVlc3RNYXBwaW5nVGVtcGxhdGVgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmUuXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZVBhdGg6IHN0cmluZyxcbiAgLyoqXG4gICAqIE1hcHBpbmcgdGVtcGxhdGUgdG8gY29udmVydCBHRVQgcmVxdWVzdHMgcmVjZWl2ZWQgb24gdGhlIFJFU1QgQVBJIHRvIFBPU1QgcmVxdWVzdHMgZXhwZWN0ZWQgYnkgdGhlIFNhZ2VNYWtlciBlbmRwb2ludC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWVzdE1hcHBpbmdUZW1wbGF0ZTogc3RyaW5nLFxuICAvKipcbiAgICogT3B0aW9uYWwgbWFwcGluZyB0ZW1wbGF0ZSB0byBjb252ZXJ0IHJlc3BvbnNlcyByZWNlaXZlZCBmcm9tIHRoZSBTYWdlTWFrZXIgZW5kcG9pbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlc3BvbnNlTWFwcGluZ1RlbXBsYXRlPzogc3RyaW5nLFxuICAvKipcbiAgICogVXNlciBwcm92aWRlZCBwcm9wcyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwcm9wcyBmb3IgdGhlIENsb3VkV2F0Y2hMb2dzIExvZ0dyb3VwLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgcHJvcHMgYXJlIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IGxvZ0dyb3VwUHJvcHM/OiBsb2dzLkxvZ0dyb3VwUHJvcHNcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBUaGUgQXBpR2F0ZXdheVRvU2FnZU1ha2VyRW5kcG9pbnQgY2xhc3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBBcGlHYXRld2F5VG9TYWdlTWFrZXJFbmRwb2ludCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBhcGlHYXRld2F5OiBhcGkuUmVzdEFwaTtcbiAgcHVibGljIHJlYWRvbmx5IGFwaUdhdGV3YXlSb2xlOiBpYW0uUm9sZTtcbiAgcHVibGljIHJlYWRvbmx5IGFwaUdhdGV3YXlDbG91ZFdhdGNoUm9sZT86IGlhbS5Sb2xlO1xuICBwdWJsaWMgcmVhZG9ubHkgYXBpR2F0ZXdheUxvZ0dyb3VwOiBsb2dzLkxvZ0dyb3VwO1xuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBDb25zdHJ1Y3RzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBBcGlHYXRld2F5VG9TYWdlTWFrZXJFbmRwb2ludCBjbGFzcy5cbiAgICogQHBhcmFtIHtjZGsuQXBwfSBzY29wZSAtIHJlcHJlc2VudHMgdGhlIHNjb3BlIGZvciBhbGwgdGhlIHJlc291cmNlcy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkIC0gdGhpcyBpcyBhIGEgc2NvcGUtdW5pcXVlIGlkLlxuICAgKiBAcGFyYW0ge0FwaUdhdGV3YXlUb1NhZ2VNYWtlckVuZHBvaW50UHJvcHN9IHByb3BzIC0gdXNlciBwcm92aWRlZCBwcm9wcyBmb3IgdGhlIGNvbnN0cnVjdC5cbiAgICogQHNpbmNlIDEuNjguMFxuICAgKiBAYWNjZXNzIHB1YmxpY1xuICAgKi9cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEFwaUdhdGV3YXlUb1NhZ2VNYWtlckVuZHBvaW50UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIGRlZmF1bHRzLkNoZWNrUHJvcHMocHJvcHMpO1xuXG4gICAgLy8gU2V0dXAgdGhlIEFQSSBHYXRld2F5XG4gICAgW3RoaXMuYXBpR2F0ZXdheSwgdGhpcy5hcGlHYXRld2F5Q2xvdWRXYXRjaFJvbGUsIHRoaXMuYXBpR2F0ZXdheUxvZ0dyb3VwXSA9IGRlZmF1bHRzLkdsb2JhbFJlc3RBcGkodGhpcyxcbiAgICAgIHByb3BzLmFwaUdhdGV3YXlQcm9wcywgcHJvcHMubG9nR3JvdXBQcm9wcyk7XG5cbiAgICAvLyBTZXR1cCB0aGUgQVBJIEdhdGV3YXkgcm9sZVxuICAgIGlmIChwcm9wcy5hcGlHYXRld2F5RXhlY3V0aW9uUm9sZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmFwaUdhdGV3YXlSb2xlID0gcHJvcHMuYXBpR2F0ZXdheUV4ZWN1dGlvblJvbGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXBpR2F0ZXdheVJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgJ2FwaS1nYXRld2F5LXJvbGUnLCB7XG4gICAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdhcGlnYXRld2F5LmFtYXpvbmF3cy5jb20nKVxuICAgICAgfSk7XG5cbiAgICAgIC8vIFNldHVwIHRoZSBJQU0gcG9saWN5IGZvciBTYWdlTWFrZXIgZW5kcG9pbnRcbiAgICAgIGNvbnN0IGludm9rZVBvbGljeSA9IG5ldyBpYW0uUG9saWN5KHRoaXMsICdJbnZva2VFbmRwb2ludFBvbGljeScsIHtcbiAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFsnc2FnZW1ha2VyOkludm9rZUVuZHBvaW50J10sXG4gICAgICAgICAgICByZXNvdXJjZXM6IFtgYXJuOiR7QXdzLlBBUlRJVElPTn06c2FnZW1ha2VyOiR7QXdzLlJFR0lPTn06JHtBd3MuQUNDT1VOVF9JRH06ZW5kcG9pbnQvJHtwcm9wcy5lbmRwb2ludE5hbWV9YF1cbiAgICAgICAgICB9KVxuICAgICAgICBdXG4gICAgICB9KTtcblxuICAgICAgaW52b2tlUG9saWN5LmF0dGFjaFRvUm9sZSh0aGlzLmFwaUdhdGV3YXlSb2xlKTtcbiAgICB9XG5cbiAgICAvLyBTZXR1cCByZXF1ZXN0IHZhbGlkYXRpb25cbiAgICBjb25zdCByZXF1ZXN0VmFsaWRhdG9yID0gdGhpcy5hcGlHYXRld2F5LmFkZFJlcXVlc3RWYWxpZGF0b3IoJ3JlcXVlc3QtdmFsaWRhdG9yJywge1xuICAgICAgcmVxdWVzdFZhbGlkYXRvck5hbWU6ICdyZXF1ZXN0LXBhcmFtLXZhbGlkYXRvcicsXG5cbiAgICAgIC8vIFNldHRpbmcgdGhpcyBwcm9wZXJ0eSB0byB0cnVlIG1ha2VzIHN1cmUgdGhlIGZvbGxvd2luZyBhcmUgdmFsaWRhdGVkOlxuICAgICAgLy8gLSBSZXF1aXJlZCByZXF1ZXN0IHBhcmFtZXRlcnMgaW4gdGhlIFVSSVxuICAgICAgLy8gLSBRdWVyeSBzdHJpbmdcbiAgICAgIC8vIC0gSGVhZGVyc1xuICAgICAgdmFsaWRhdGVSZXF1ZXN0UGFyYW1ldGVyczogdHJ1ZVxuICAgIH0pO1xuXG4gICAgLy8gU2V0dXAgbWV0aG9kIGFuZCBpbnRlZ3JhdGlvbiByZXNwb25zZXNcbiAgICBjb25zdCBtZXRob2RSZXNwb25zZXM6IGFwaS5NZXRob2RSZXNwb25zZVtdID0gW1xuICAgICAgeyBzdGF0dXNDb2RlOiAnMjAwJyB9LFxuICAgICAgeyBzdGF0dXNDb2RlOiAnNTAwJyB9LFxuICAgICAgeyBzdGF0dXNDb2RlOiAnNDAwJyB9XG4gICAgXTtcblxuICAgIGNvbnN0IGludGVnUmVzcG9uc2VzOiBhcGkuSW50ZWdyYXRpb25SZXNwb25zZVtdID0gW107XG4gICAgaWYgKHByb3BzLnJlc3BvbnNlTWFwcGluZ1RlbXBsYXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGludGVnUmVzcG9uc2VzLnB1c2goe1xuICAgICAgICBzdGF0dXNDb2RlOiAnMjAwJyxcbiAgICAgICAgcmVzcG9uc2VUZW1wbGF0ZXM6IHsgJ2FwcGxpY2F0aW9uL2pzb24nOiBwcm9wcy5yZXNwb25zZU1hcHBpbmdUZW1wbGF0ZSB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW50ZWdSZXNwb25zZXMucHVzaCh7IHN0YXR1c0NvZGU6ICcyMDAnIH0pO1xuICAgIH1cblxuICAgIGludGVnUmVzcG9uc2VzLnB1c2goXG4gICAgICB7IHN0YXR1c0NvZGU6ICc1MDAnLCBzZWxlY3Rpb25QYXR0ZXJuOiAnNVxcXFxkezJ9JyB9LFxuICAgICAgeyBzdGF0dXNDb2RlOiAnNDAwJywgc2VsZWN0aW9uUGF0dGVybjogJzRcXFxcZHsyfScgfVxuICAgICk7XG5cbiAgICAvLyBUaGUgU2FnZU1ha2VyIGludGVncmF0aW9uIGNhbiBiZSBhZGRlZCBlaXRoZXIgYXQgdGhlIHJvb3Qgb2YgdGhlIEFQSSAoR0VUIGh0dHBzOi8vZXhlY3V0ZS1hcGkuYW1hem9uYXdzLmNvbS97c29tZS1wYXJhbX0pLFxuICAgIC8vIG9yIGFzIGEgc3ViLXJlc291cmNlIChHRVQgaHR0cHM6Ly9leGVjdXRlLWFwaS5hbWF6b25hd3MuY29tL2luZmVyZW5jZS97c29tZS1wYXJhbX0pLlxuICAgIC8vIFRoZSBmb2xsb3dpbmcgbGluZXMgd2lsbCBtYWtlIHN1cmUgb25seSB0aGUgbmVjZXNzYXJ5IHJlc291cmNlcyBhcmUgY3JlYXRlZC5cbiAgICBsZXQgYXBpUmVzb3VyY2UgPSB0aGlzLmFwaUdhdGV3YXkucm9vdDtcbiAgICBpZiAocHJvcHMucmVzb3VyY2VOYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGFwaVJlc291cmNlID0gYXBpUmVzb3VyY2UuYWRkUmVzb3VyY2UocHJvcHMucmVzb3VyY2VOYW1lKTtcbiAgICB9XG4gICAgYXBpUmVzb3VyY2UgPSBhcGlSZXNvdXJjZS5hZGRSZXNvdXJjZShwcm9wcy5yZXNvdXJjZVBhdGgpO1xuXG4gICAgLy8gU2V0dXAgQVBJIEdhdGV3YXkgbWV0aG9kXG4gICAgZGVmYXVsdHMuYWRkUHJveHlNZXRob2RUb0FwaVJlc291cmNlKHtcbiAgICAgIHNlcnZpY2U6ICdydW50aW1lLnNhZ2VtYWtlcicsXG4gICAgICBwYXRoOiBgZW5kcG9pbnRzLyR7cHJvcHMuZW5kcG9pbnROYW1lfS9pbnZvY2F0aW9uc2AsXG4gICAgICBhcGlHYXRld2F5Um9sZTogdGhpcy5hcGlHYXRld2F5Um9sZSxcbiAgICAgIGFwaU1ldGhvZDogJ0dFVCcsXG4gICAgICBhcGlSZXNvdXJjZSxcbiAgICAgIHJlcXVlc3RWYWxpZGF0b3IsXG4gICAgICByZXF1ZXN0VGVtcGxhdGU6IHByb3BzLnJlcXVlc3RNYXBwaW5nVGVtcGxhdGUsXG4gICAgICBhd3NJbnRlZ3JhdGlvblByb3BzOiB7XG4gICAgICAgIG9wdGlvbnM6IHsgaW50ZWdyYXRpb25SZXNwb25zZXM6IGludGVnUmVzcG9uc2VzIH1cbiAgICAgIH0sXG4gICAgICBtZXRob2RPcHRpb25zOiB7IG1ldGhvZFJlc3BvbnNlcyB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
112
|
+
ApiGatewayToSageMakerEndpoint[_a] = { fqn: "@aws-solutions-constructs/aws-apigateway-sagemakerendpoint.ApiGatewayToSageMakerEndpoint", version: "2.32.0" };
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBRUgsVUFBVTtBQUNWLDJDQUF1QztBQUV2QywyQ0FBMkM7QUFDM0MsMkRBQTJEO0FBQzNELDZDQUFrQztBQWlFbEM7O0dBRUc7QUFDSCxNQUFhLDZCQUE4QixTQUFRLHNCQUFTO0lBTTFEOzs7Ozs7O09BT0c7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXlDO1FBQ2pGLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUzQix3QkFBd0I7UUFDeEIsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksRUFDckcsS0FBSyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFOUMsNkJBQTZCO1FBQzdCLElBQUksS0FBSyxDQUFDLHVCQUF1QixLQUFLLFNBQVMsRUFBRTtZQUMvQyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQztTQUNyRDthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFO2dCQUMzRCxTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsMEJBQTBCLENBQUM7YUFDaEUsQ0FBQyxDQUFDO1lBRUgsOENBQThDO1lBQzlDLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUU7Z0JBQ2hFLFVBQVUsRUFBRTtvQkFDVixJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7d0JBQ3RCLE9BQU8sRUFBRSxDQUFDLDBCQUEwQixDQUFDO3dCQUNyQyxTQUFTLEVBQUUsQ0FBQyxPQUFPLGlCQUFHLENBQUMsU0FBUyxjQUFjLGlCQUFHLENBQUMsTUFBTSxJQUFJLGlCQUFHLENBQUMsVUFBVSxhQUFhLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztxQkFDN0csQ0FBQztpQkFDSDthQUNGLENBQUMsQ0FBQztZQUVILFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ2hEO1FBRUQsMkJBQTJCO1FBQzNCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxtQkFBbUIsRUFBRTtZQUNoRixvQkFBb0IsRUFBRSx5QkFBeUI7WUFFL0Msd0VBQXdFO1lBQ3hFLDJDQUEyQztZQUMzQyxpQkFBaUI7WUFDakIsWUFBWTtZQUNaLHlCQUF5QixFQUFFLElBQUk7U0FDaEMsQ0FBQyxDQUFDO1FBRUgseUNBQXlDO1FBQ3pDLE1BQU0sZUFBZSxHQUF5QjtZQUM1QyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUU7WUFDckIsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFO1lBQ3JCLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRTtTQUN0QixDQUFDO1FBRUYsTUFBTSxjQUFjLEdBQThCLEVBQUUsQ0FBQztRQUNyRCxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsS0FBSyxTQUFTLEVBQUU7WUFDL0MsY0FBYyxDQUFDLElBQUksQ0FBQztnQkFDbEIsVUFBVSxFQUFFLEtBQUs7Z0JBQ2pCLGlCQUFpQixFQUFFLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLHVCQUF1QixFQUFFO2FBQ3pFLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDNUM7UUFFRCxjQUFjLENBQUMsSUFBSSxDQUNqQixFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLEVBQ2xELEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsQ0FDbkQsQ0FBQztRQUVGLDZIQUE2SDtRQUM3SCx1RkFBdUY7UUFDdkYsK0VBQStFO1FBQy9FLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1FBQ3ZDLElBQUksS0FBSyxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUU7WUFDcEMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzNEO1FBQ0QsV0FBVyxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTFELDJCQUEyQjtRQUMzQixRQUFRLENBQUMsMkJBQTJCLENBQUM7WUFDbkMsT0FBTyxFQUFFLG1CQUFtQjtZQUM1QixJQUFJLEVBQUUsYUFBYSxLQUFLLENBQUMsWUFBWSxjQUFjO1lBQ25ELGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztZQUNuQyxTQUFTLEVBQUUsS0FBSztZQUNoQixXQUFXO1lBQ1gsZ0JBQWdCO1lBQ2hCLGVBQWUsRUFBRSxLQUFLLENBQUMsc0JBQXNCO1lBQzdDLDBCQUEwQixFQUFFLEtBQUssQ0FBQywwQkFBMEI7WUFDNUQsbUJBQW1CLEVBQUU7Z0JBQ25CLE9BQU8sRUFBRSxFQUFFLG9CQUFvQixFQUFFLGNBQWMsRUFBRTthQUNsRDtZQUNELGFBQWEsRUFBRSxFQUFFLGVBQWUsRUFBRTtTQUNuQyxDQUFDLENBQUM7SUFDTCxDQUFDOztBQXBHSCxzRUFxR0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vLyBJbXBvcnRzXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIGFwaSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheSc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBkZWZhdWx0cyBmcm9tICdAYXdzLXNvbHV0aW9ucy1jb25zdHJ1Y3RzL2NvcmUnO1xuaW1wb3J0IHsgQXdzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5cbi8qKlxuICogQHN1bW1hcnkgVGhlIHByb3BlcnRpZXMgZm9yIHRoZSBBcGlHYXRld2F5VG9TYWdlTWFrZXJFbmRwb2ludFByb3BzIGNsYXNzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwaUdhdGV3YXlUb1NhZ2VNYWtlckVuZHBvaW50UHJvcHMge1xuICAvKipcbiAgICogT3B0aW9uYWwgdXNlci1wcm92aWRlZCBwcm9wcyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwcm9wcyBmb3IgdGhlIEFQSSBHYXRld2F5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgcHJvcGVydGllcyBhcmUgdXNlZC5cbiAgICovXG4gIHJlYWRvbmx5IGFwaUdhdGV3YXlQcm9wcz86IGFwaS5SZXN0QXBpUHJvcHMsXG4gIC8qKlxuICAgKiBPcHRpb25hbCBJQU0gcm9sZSB0aGF0IGlzIHVzZWQgYnkgQVBJIEdhdGV3YXkgdG8gaW52b2tlIHRoZSBTYWdlTWFrZXIgZW5kcG9pbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQW4gSUFNIHJvbGUgd2l0aCBzYWdlbWFrZXI6SW52b2tlRW5kcG9pbnQgYWNjZXNzIHRvIGBlbmRwb2ludE5hbWVgIGlzIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSBhcGlHYXRld2F5RXhlY3V0aW9uUm9sZT86IGlhbS5Sb2xlLFxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgZGVwbG95ZWQgU2FnZU1ha2VyIGluZmVyZW5jZSBlbmRwb2ludC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5kcG9pbnROYW1lOiBzdHJpbmcsXG4gIC8qKlxuICAgKiBPcHRpb25hbCByZXNvdXJjZSBuYW1lIHdoZXJlIHRoZSBHRVQgbWV0aG9kIHdpbGwgYmUgYXZhaWxhYmxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmUuXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZU5hbWU/OiBzdHJpbmcsXG4gIC8qKlxuICAgKiBSZXNvdXJjZSBwYXRoIGZvciB0aGUgR0VUIG1ldGhvZC4gVGhlIHZhcmlhYmxlIGRlZmluZWQgaGVyZSBjYW4gYmUgcmVmZXJlbmNlZCBpbiBgcmVxdWVzdE1hcHBpbmdUZW1wbGF0ZWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlUGF0aDogc3RyaW5nLFxuICAvKipcbiAgICogTWFwcGluZyB0ZW1wbGF0ZSB0byBjb252ZXJ0IEdFVCByZXF1ZXN0cyBmb3IgdGhlIGRlZmF1bHQgYGFwcGxpY2F0aW9uL2pzb25gIGNvbnRlbnQtdHlwZSByZWNlaXZlZFxuICAgKiBvbiB0aGUgUkVTVCBBUEkgdG8gUE9TVCByZXF1ZXN0cyBleHBlY3RlZCBieSB0aGUgU2FnZU1ha2VyIGVuZHBvaW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmUuXG4gICAqL1xuICByZWFkb25seSByZXF1ZXN0TWFwcGluZ1RlbXBsYXRlOiBzdHJpbmcsXG4gIC8qKlxuICAgKiBPcHRpb25hbCBSZXF1ZXN0IFRlbXBsYXRlcyBmb3IgY29udGVudC10eXBlcyBvdGhlciB0aGFuIGBhcHBsaWNhdGlvbi9qc29uYC5cbiAgICogVXNlIHRoZSBgcmVxdWVzdE1hcHBpbmdUZW1wbGF0ZWAgcHJvcGVydHkgdG8gc2V0IHRoZSByZXF1ZXN0IHRlbXBsYXRlIGZvciB0aGUgYGFwcGxpY2F0aW9uL2pzb25gIGNvbnRlbnQtdHlwZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsUmVxdWVzdFRlbXBsYXRlcz86IHsgW2NvbnRlbnRUeXBlOiBzdHJpbmddOiBzdHJpbmc7IH07XG4gIC8qKlxuICAgKiBPcHRpb25hbCBtYXBwaW5nIHRlbXBsYXRlIHRvIGNvbnZlcnQgcmVzcG9uc2VzIHJlY2VpdmVkIGZyb20gdGhlIFNhZ2VNYWtlciBlbmRwb2ludC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzcG9uc2VNYXBwaW5nVGVtcGxhdGU/OiBzdHJpbmcsXG4gIC8qKlxuICAgKiBVc2VyIHByb3ZpZGVkIHByb3BzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHByb3BzIGZvciB0aGUgQ2xvdWRXYXRjaExvZ3MgTG9nR3JvdXAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdCBwcm9wcyBhcmUgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgbG9nR3JvdXBQcm9wcz86IGxvZ3MuTG9nR3JvdXBQcm9wc1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IFRoZSBBcGlHYXRld2F5VG9TYWdlTWFrZXJFbmRwb2ludCBjbGFzcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEFwaUdhdGV3YXlUb1NhZ2VNYWtlckVuZHBvaW50IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IGFwaUdhdGV3YXk6IGFwaS5SZXN0QXBpO1xuICBwdWJsaWMgcmVhZG9ubHkgYXBpR2F0ZXdheVJvbGU6IGlhbS5Sb2xlO1xuICBwdWJsaWMgcmVhZG9ubHkgYXBpR2F0ZXdheUNsb3VkV2F0Y2hSb2xlPzogaWFtLlJvbGU7XG4gIHB1YmxpYyByZWFkb25seSBhcGlHYXRld2F5TG9nR3JvdXA6IGxvZ3MuTG9nR3JvdXA7XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IENvbnN0cnVjdHMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIEFwaUdhdGV3YXlUb1NhZ2VNYWtlckVuZHBvaW50IGNsYXNzLlxuICAgKiBAcGFyYW0ge2Nkay5BcHB9IHNjb3BlIC0gcmVwcmVzZW50cyB0aGUgc2NvcGUgZm9yIGFsbCB0aGUgcmVzb3VyY2VzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgLSB0aGlzIGlzIGEgYSBzY29wZS11bmlxdWUgaWQuXG4gICAqIEBwYXJhbSB7QXBpR2F0ZXdheVRvU2FnZU1ha2VyRW5kcG9pbnRQcm9wc30gcHJvcHMgLSB1c2VyIHByb3ZpZGVkIHByb3BzIGZvciB0aGUgY29uc3RydWN0LlxuICAgKiBAc2luY2UgMS42OC4wXG4gICAqIEBhY2Nlc3MgcHVibGljXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQXBpR2F0ZXdheVRvU2FnZU1ha2VyRW5kcG9pbnRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgZGVmYXVsdHMuQ2hlY2tQcm9wcyhwcm9wcyk7XG5cbiAgICAvLyBTZXR1cCB0aGUgQVBJIEdhdGV3YXlcbiAgICBbdGhpcy5hcGlHYXRld2F5LCB0aGlzLmFwaUdhdGV3YXlDbG91ZFdhdGNoUm9sZSwgdGhpcy5hcGlHYXRld2F5TG9nR3JvdXBdID0gZGVmYXVsdHMuR2xvYmFsUmVzdEFwaSh0aGlzLFxuICAgICAgcHJvcHMuYXBpR2F0ZXdheVByb3BzLCBwcm9wcy5sb2dHcm91cFByb3BzKTtcblxuICAgIC8vIFNldHVwIHRoZSBBUEkgR2F0ZXdheSByb2xlXG4gICAgaWYgKHByb3BzLmFwaUdhdGV3YXlFeGVjdXRpb25Sb2xlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuYXBpR2F0ZXdheVJvbGUgPSBwcm9wcy5hcGlHYXRld2F5RXhlY3V0aW9uUm9sZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hcGlHYXRld2F5Um9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCAnYXBpLWdhdGV3YXktcm9sZScsIHtcbiAgICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2FwaWdhdGV3YXkuYW1hem9uYXdzLmNvbScpXG4gICAgICB9KTtcblxuICAgICAgLy8gU2V0dXAgdGhlIElBTSBwb2xpY3kgZm9yIFNhZ2VNYWtlciBlbmRwb2ludFxuICAgICAgY29uc3QgaW52b2tlUG9saWN5ID0gbmV3IGlhbS5Qb2xpY3kodGhpcywgJ0ludm9rZUVuZHBvaW50UG9saWN5Jywge1xuICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgYWN0aW9uczogWydzYWdlbWFrZXI6SW52b2tlRW5kcG9pbnQnXSxcbiAgICAgICAgICAgIHJlc291cmNlczogW2Bhcm46JHtBd3MuUEFSVElUSU9OfTpzYWdlbWFrZXI6JHtBd3MuUkVHSU9OfToke0F3cy5BQ0NPVU5UX0lEfTplbmRwb2ludC8ke3Byb3BzLmVuZHBvaW50TmFtZX1gXVxuICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICAgIH0pO1xuXG4gICAgICBpbnZva2VQb2xpY3kuYXR0YWNoVG9Sb2xlKHRoaXMuYXBpR2F0ZXdheVJvbGUpO1xuICAgIH1cblxuICAgIC8vIFNldHVwIHJlcXVlc3QgdmFsaWRhdGlvblxuICAgIGNvbnN0IHJlcXVlc3RWYWxpZGF0b3IgPSB0aGlzLmFwaUdhdGV3YXkuYWRkUmVxdWVzdFZhbGlkYXRvcigncmVxdWVzdC12YWxpZGF0b3InLCB7XG4gICAgICByZXF1ZXN0VmFsaWRhdG9yTmFtZTogJ3JlcXVlc3QtcGFyYW0tdmFsaWRhdG9yJyxcblxuICAgICAgLy8gU2V0dGluZyB0aGlzIHByb3BlcnR5IHRvIHRydWUgbWFrZXMgc3VyZSB0aGUgZm9sbG93aW5nIGFyZSB2YWxpZGF0ZWQ6XG4gICAgICAvLyAtIFJlcXVpcmVkIHJlcXVlc3QgcGFyYW1ldGVycyBpbiB0aGUgVVJJXG4gICAgICAvLyAtIFF1ZXJ5IHN0cmluZ1xuICAgICAgLy8gLSBIZWFkZXJzXG4gICAgICB2YWxpZGF0ZVJlcXVlc3RQYXJhbWV0ZXJzOiB0cnVlXG4gICAgfSk7XG5cbiAgICAvLyBTZXR1cCBtZXRob2QgYW5kIGludGVncmF0aW9uIHJlc3BvbnNlc1xuICAgIGNvbnN0IG1ldGhvZFJlc3BvbnNlczogYXBpLk1ldGhvZFJlc3BvbnNlW10gPSBbXG4gICAgICB7IHN0YXR1c0NvZGU6ICcyMDAnIH0sXG4gICAgICB7IHN0YXR1c0NvZGU6ICc1MDAnIH0sXG4gICAgICB7IHN0YXR1c0NvZGU6ICc0MDAnIH1cbiAgICBdO1xuXG4gICAgY29uc3QgaW50ZWdSZXNwb25zZXM6IGFwaS5JbnRlZ3JhdGlvblJlc3BvbnNlW10gPSBbXTtcbiAgICBpZiAocHJvcHMucmVzcG9uc2VNYXBwaW5nVGVtcGxhdGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaW50ZWdSZXNwb25zZXMucHVzaCh7XG4gICAgICAgIHN0YXR1c0NvZGU6ICcyMDAnLFxuICAgICAgICByZXNwb25zZVRlbXBsYXRlczogeyAnYXBwbGljYXRpb24vanNvbic6IHByb3BzLnJlc3BvbnNlTWFwcGluZ1RlbXBsYXRlIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnRlZ1Jlc3BvbnNlcy5wdXNoKHsgc3RhdHVzQ29kZTogJzIwMCcgfSk7XG4gICAgfVxuXG4gICAgaW50ZWdSZXNwb25zZXMucHVzaChcbiAgICAgIHsgc3RhdHVzQ29kZTogJzUwMCcsIHNlbGVjdGlvblBhdHRlcm46ICc1XFxcXGR7Mn0nIH0sXG4gICAgICB7IHN0YXR1c0NvZGU6ICc0MDAnLCBzZWxlY3Rpb25QYXR0ZXJuOiAnNFxcXFxkezJ9JyB9XG4gICAgKTtcblxuICAgIC8vIFRoZSBTYWdlTWFrZXIgaW50ZWdyYXRpb24gY2FuIGJlIGFkZGVkIGVpdGhlciBhdCB0aGUgcm9vdCBvZiB0aGUgQVBJIChHRVQgaHR0cHM6Ly9leGVjdXRlLWFwaS5hbWF6b25hd3MuY29tL3tzb21lLXBhcmFtfSksXG4gICAgLy8gb3IgYXMgYSBzdWItcmVzb3VyY2UgKEdFVCBodHRwczovL2V4ZWN1dGUtYXBpLmFtYXpvbmF3cy5jb20vaW5mZXJlbmNlL3tzb21lLXBhcmFtfSkuXG4gICAgLy8gVGhlIGZvbGxvd2luZyBsaW5lcyB3aWxsIG1ha2Ugc3VyZSBvbmx5IHRoZSBuZWNlc3NhcnkgcmVzb3VyY2VzIGFyZSBjcmVhdGVkLlxuICAgIGxldCBhcGlSZXNvdXJjZSA9IHRoaXMuYXBpR2F0ZXdheS5yb290O1xuICAgIGlmIChwcm9wcy5yZXNvdXJjZU5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYXBpUmVzb3VyY2UgPSBhcGlSZXNvdXJjZS5hZGRSZXNvdXJjZShwcm9wcy5yZXNvdXJjZU5hbWUpO1xuICAgIH1cbiAgICBhcGlSZXNvdXJjZSA9IGFwaVJlc291cmNlLmFkZFJlc291cmNlKHByb3BzLnJlc291cmNlUGF0aCk7XG5cbiAgICAvLyBTZXR1cCBBUEkgR2F0ZXdheSBtZXRob2RcbiAgICBkZWZhdWx0cy5hZGRQcm94eU1ldGhvZFRvQXBpUmVzb3VyY2Uoe1xuICAgICAgc2VydmljZTogJ3J1bnRpbWUuc2FnZW1ha2VyJyxcbiAgICAgIHBhdGg6IGBlbmRwb2ludHMvJHtwcm9wcy5lbmRwb2ludE5hbWV9L2ludm9jYXRpb25zYCxcbiAgICAgIGFwaUdhdGV3YXlSb2xlOiB0aGlzLmFwaUdhdGV3YXlSb2xlLFxuICAgICAgYXBpTWV0aG9kOiAnR0VUJyxcbiAgICAgIGFwaVJlc291cmNlLFxuICAgICAgcmVxdWVzdFZhbGlkYXRvcixcbiAgICAgIHJlcXVlc3RUZW1wbGF0ZTogcHJvcHMucmVxdWVzdE1hcHBpbmdUZW1wbGF0ZSxcbiAgICAgIGFkZGl0aW9uYWxSZXF1ZXN0VGVtcGxhdGVzOiBwcm9wcy5hZGRpdGlvbmFsUmVxdWVzdFRlbXBsYXRlcyxcbiAgICAgIGF3c0ludGVncmF0aW9uUHJvcHM6IHtcbiAgICAgICAgb3B0aW9uczogeyBpbnRlZ3JhdGlvblJlc3BvbnNlczogaW50ZWdSZXNwb25zZXMgfVxuICAgICAgfSxcbiAgICAgIG1ldGhvZE9wdGlvbnM6IHsgbWV0aG9kUmVzcG9uc2VzIH1cbiAgICB9KTtcbiAgfVxufVxuIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-solutions-constructs/aws-apigateway-sagemakerendpoint",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.32.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",
|
|
@@ -53,13 +53,13 @@
|
|
|
53
53
|
}
|
|
54
54
|
},
|
|
55
55
|
"dependencies": {
|
|
56
|
-
"@aws-solutions-constructs/core": "2.
|
|
56
|
+
"@aws-solutions-constructs/core": "2.32.0"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
|
-
"@aws-cdk/assert": "2.
|
|
59
|
+
"@aws-cdk/assert": "2.64.0",
|
|
60
60
|
"@types/jest": "^27.4.0",
|
|
61
61
|
"@types/node": "^10.3.0",
|
|
62
|
-
"aws-cdk-lib": "2.
|
|
62
|
+
"aws-cdk-lib": "2.64.0",
|
|
63
63
|
"constructs": "^10.0.0"
|
|
64
64
|
},
|
|
65
65
|
"jest": {
|
|
@@ -77,8 +77,8 @@
|
|
|
77
77
|
]
|
|
78
78
|
},
|
|
79
79
|
"peerDependencies": {
|
|
80
|
-
"@aws-solutions-constructs/core": "2.
|
|
81
|
-
"aws-cdk-lib": "^2.
|
|
80
|
+
"@aws-solutions-constructs/core": "2.32.0",
|
|
81
|
+
"aws-cdk-lib": "^2.64.0",
|
|
82
82
|
"constructs": "^10.0.0"
|
|
83
83
|
},
|
|
84
84
|
"keywords": [
|
|
@@ -116,4 +116,24 @@ test('Test deployment w/ overwritten properties', () => {
|
|
|
116
116
|
Description: 'existing role for SageMaker integration'
|
|
117
117
|
});
|
|
118
118
|
});
|
|
119
|
-
|
|
119
|
+
test('Construct accepts additional read request templates', () => {
|
|
120
|
+
const stack = new aws_cdk_lib_1.Stack();
|
|
121
|
+
new lib_1.ApiGatewayToSageMakerEndpoint(stack, 'api-gateway-sagemaker-endpoint', {
|
|
122
|
+
endpointName: 'my-endpoint',
|
|
123
|
+
resourcePath: '{my_param}',
|
|
124
|
+
requestMappingTemplate: 'my-request-vtl-template',
|
|
125
|
+
additionalRequestTemplates: {
|
|
126
|
+
'text/plain': 'additional-request-template'
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
expect(stack).toHaveResourceLike('AWS::ApiGateway::Method', {
|
|
130
|
+
HttpMethod: 'GET',
|
|
131
|
+
Integration: {
|
|
132
|
+
RequestTemplates: {
|
|
133
|
+
'application/json': 'my-request-vtl-template',
|
|
134
|
+
'text/plain': 'additional-request-template'
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpZ2F0ZXdheS1zYWdlbWFrZXJlbmRwb2ludC50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBpZ2F0ZXdheS1zYWdlbWFrZXJlbmRwb2ludC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7QUFFSCxVQUFVO0FBQ1YsNkNBQXlDO0FBQ3pDLGdDQUF1RDtBQUN2RCwyQ0FBMkM7QUFDM0MsZ0NBQThCO0FBRTlCLGlFQUFpRTtBQUNqRSw0QkFBNEI7QUFDNUIsaUVBQWlFO0FBQ2pFLElBQUksQ0FBQywyQkFBMkIsRUFBRSxHQUFHLEVBQUU7SUFDckMsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxFQUFFLENBQUM7SUFDMUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxtQ0FBNkIsQ0FBQyxLQUFLLEVBQUUsK0JBQStCLEVBQUU7UUFDeEYsWUFBWSxFQUFFLGFBQWE7UUFDM0IsWUFBWSxFQUFFLFlBQVk7UUFDMUIsc0JBQXNCLEVBQUUseUJBQXlCO0tBQ2xELENBQUMsQ0FBQztJQUVILE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sQ0FBQyxPQUFPLENBQUMsY0FBYyxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsd0JBQXdCLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDbEQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsS0FBSyxJQUFJLENBQUMsQ0FBQztBQUM5QyxDQUFDLENBQUMsQ0FBQztBQUVILGlFQUFpRTtBQUNqRSw0Q0FBNEM7QUFDNUMsaUVBQWlFO0FBQ2pFLElBQUksQ0FBQywyQ0FBMkMsRUFBRSxHQUFHLEVBQUU7SUFDckQsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxFQUFFLENBQUM7SUFFMUIsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxrQkFBa0IsRUFBRTtRQUMzRCxTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsMEJBQTBCLENBQUM7UUFDL0QsV0FBVyxFQUFFLHlDQUF5QztRQUN0RCxjQUFjLEVBQUU7WUFDZCxZQUFZLEVBQUUsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDO2dCQUNuQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7d0JBQ25DLFNBQVMsRUFBRSxDQUFDLE9BQU8saUJBQUcsQ0FBQyxTQUFTLGNBQWMsaUJBQUcsQ0FBQyxNQUFNLElBQUksaUJBQUcsQ0FBQyxVQUFVLHVCQUF1QixDQUFDO3dCQUNsRyxPQUFPLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztxQkFDdEMsQ0FBQyxDQUFDO2FBQ0osQ0FBQztTQUNIO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsSUFBSSxtQ0FBNkIsQ0FBQyxLQUFLLEVBQUUsK0JBQStCLEVBQUU7UUFDeEUsWUFBWSxFQUFFLGFBQWE7UUFDM0IsWUFBWSxFQUFFLFlBQVk7UUFDMUIsc0JBQXNCLEVBQUUseUJBQXlCO1FBRWpELGVBQWUsRUFBRTtZQUNmLFdBQVcsRUFBRSxRQUFRO1lBQ3JCLGFBQWEsRUFBRTtnQkFDYixhQUFhLEVBQUU7b0JBQ2IsTUFBTSxFQUFFO3dCQUNOLG1CQUFtQixFQUFFLEdBQUc7d0JBQ3hCLG9CQUFvQixFQUFFLEVBQUU7cUJBQ3pCO2lCQUNGO2FBQ0Y7U0FDRjtRQUNELHVCQUF1QixFQUFFLFlBQVk7UUFDckMsWUFBWSxFQUFFLGFBQWE7UUFDM0IsdUJBQXVCLEVBQUUsMEJBQTBCO0tBQ3BELENBQUMsQ0FBQztJQUVILE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyx3QkFBd0IsRUFBRTtRQUN6RCxjQUFjLEVBQUU7WUFDZDtnQkFDRSxnQkFBZ0IsRUFBRSxLQUFLO2dCQUN2QixVQUFVLEVBQUUsR0FBRztnQkFDZixZQUFZLEVBQUUsTUFBTTtnQkFDcEIsWUFBWSxFQUFFLElBQUk7YUFDbkI7WUFDRDtnQkFDRSxVQUFVLEVBQUUsR0FBRztnQkFDZixZQUFZLEVBQUUsSUFBSTtnQkFDbEIsbUJBQW1CLEVBQUUsR0FBRztnQkFDeEIsb0JBQW9CLEVBQUUsRUFBRTthQUN6QjtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixDQUFDLDJCQUEyQixFQUFFO1FBQzVELFFBQVEsRUFBRSxhQUFhO0tBQ3hCLENBQUMsQ0FBQztJQUVILE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyx5QkFBeUIsRUFBRTtRQUMxRCxXQUFXLEVBQUU7WUFDWCxvQkFBb0IsRUFBRTtnQkFDcEI7b0JBQ0UsaUJBQWlCLEVBQUU7d0JBQ2pCLGtCQUFrQixFQUFFLDBCQUEwQjtxQkFDL0M7b0JBQ0QsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCO2dCQUNEO29CQUNFLFVBQVUsRUFBRSxLQUFLO29CQUNqQixnQkFBZ0IsRUFBRSxTQUFTO2lCQUM1QjtnQkFDRDtvQkFDRSxVQUFVLEVBQUUsS0FBSztvQkFDakIsZ0JBQWdCLEVBQUUsU0FBUztpQkFDNUI7YUFDRjtTQUNGO1FBQ0QsZUFBZSxFQUFFO1lBQ2YsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFO1lBQ3JCLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRTtZQUNyQixFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUU7U0FDdEI7S0FDRixDQUFDLENBQUM7SUFFSCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLEVBQUU7UUFDakQsV0FBVyxFQUFFLHlDQUF5QztLQUN2RCxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxxREFBcUQsRUFBRSxHQUFHLEVBQUU7SUFDL0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxFQUFFLENBQUM7SUFDMUIsSUFBSSxtQ0FBNkIsQ0FBQyxLQUFLLEVBQUUsZ0NBQWdDLEVBQUU7UUFDekUsWUFBWSxFQUFFLGFBQWE7UUFDM0IsWUFBWSxFQUFFLFlBQVk7UUFDMUIsc0JBQXNCLEVBQUUseUJBQXlCO1FBQ2pELDBCQUEwQixFQUFFO1lBQzFCLFlBQVksRUFBRSw2QkFBNkI7U0FDNUM7S0FDRixDQUFDLENBQUM7SUFFSCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsa0JBQWtCLENBQUMseUJBQXlCLEVBQUU7UUFDMUQsVUFBVSxFQUFFLEtBQUs7UUFDakIsV0FBVyxFQUFFO1lBQ1gsZ0JBQWdCLEVBQUU7Z0JBQ2hCLGtCQUFrQixFQUFFLHlCQUF5QjtnQkFDN0MsWUFBWSxFQUFFLDZCQUE2QjthQUM1QztTQUNGO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vLyBJbXBvcnRzXG5pbXBvcnQgeyBTdGFjaywgQXdzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQXBpR2F0ZXdheVRvU2FnZU1ha2VyRW5kcG9pbnQgfSBmcm9tICcuLi9saWInO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0ICdAYXdzLWNkay9hc3NlcnQvamVzdCc7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUZXN0IGNvbnN0cnVjdCBwcm9wZXJ0aWVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxudGVzdCgnVGVzdCBjb25zdHJ1Y3QgcHJvcGVydGllcycsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcGF0dGVybiA9IG5ldyBBcGlHYXRld2F5VG9TYWdlTWFrZXJFbmRwb2ludChzdGFjaywgJ2FwaS1nYXRld2F5LXNhZ2VtYWtlcmVuZHBvaW50Jywge1xuICAgIGVuZHBvaW50TmFtZTogJ215LWVuZHBvaW50JyxcbiAgICByZXNvdXJjZVBhdGg6ICd7bXlfcGFyYW19JyxcbiAgICByZXF1ZXN0TWFwcGluZ1RlbXBsYXRlOiAnbXktcmVxdWVzdC12dGwtdGVtcGxhdGUnXG4gIH0pO1xuXG4gIGV4cGVjdChwYXR0ZXJuLmFwaUdhdGV3YXkgIT09IG51bGwpO1xuICBleHBlY3QocGF0dGVybi5hcGlHYXRld2F5Um9sZSAhPT0gbnVsbCk7XG4gIGV4cGVjdChwYXR0ZXJuLmFwaUdhdGV3YXlDbG91ZFdhdGNoUm9sZSAhPT0gbnVsbCk7XG4gIGV4cGVjdChwYXR0ZXJuLmFwaUdhdGV3YXlMb2dHcm91cCAhPT0gbnVsbCk7XG59KTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRlc3QgZGVwbG95bWVudCB3LyBvdmVyd3JpdHRlbiBwcm9wZXJ0aWVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxudGVzdCgnVGVzdCBkZXBsb3ltZW50IHcvIG92ZXJ3cml0dGVuIHByb3BlcnRpZXMnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG5cbiAgY29uc3QgZXhpc3RpbmdSb2xlID0gbmV3IGlhbS5Sb2xlKHN0YWNrLCAnYXBpLWdhdGV3YXktcm9sZScsIHtcbiAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnYXBpZ2F0ZXdheS5hbWF6b25hd3MuY29tJyksXG4gICAgZGVzY3JpcHRpb246ICdleGlzdGluZyByb2xlIGZvciBTYWdlTWFrZXIgaW50ZWdyYXRpb24nLFxuICAgIGlubGluZVBvbGljaWVzOiB7XG4gICAgICBJbnZva2VQb2xpY3k6IG5ldyBpYW0uUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICBzdGF0ZW1lbnRzOiBbbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIHJlc291cmNlczogW2Bhcm46JHtBd3MuUEFSVElUSU9OfTpzYWdlbWFrZXI6JHtBd3MuUkVHSU9OfToke0F3cy5BQ0NPVU5UX0lEfTplbmRwb2ludC9teS1lbmRwb2ludGBdLFxuICAgICAgICAgIGFjdGlvbnM6IFsnc2FnZW1ha2VyOkludm9rZUVuZHBvaW50J11cbiAgICAgICAgfSldXG4gICAgICB9KVxuICAgIH1cbiAgfSk7XG5cbiAgbmV3IEFwaUdhdGV3YXlUb1NhZ2VNYWtlckVuZHBvaW50KHN0YWNrLCAnYXBpLWdhdGV3YXktc2FnZW1ha2VyZW5kcG9pbnQnLCB7XG4gICAgZW5kcG9pbnROYW1lOiAnbXktZW5kcG9pbnQnLFxuICAgIHJlc291cmNlUGF0aDogJ3tteV9wYXJhbX0nLFxuICAgIHJlcXVlc3RNYXBwaW5nVGVtcGxhdGU6ICdteS1yZXF1ZXN0LXZ0bC10ZW1wbGF0ZScsXG5cbiAgICBhcGlHYXRld2F5UHJvcHM6IHtcbiAgICAgIHJlc3RBcGlOYW1lOiAnbXktYXBpJyxcbiAgICAgIGRlcGxveU9wdGlvbnM6IHtcbiAgICAgICAgbWV0aG9kT3B0aW9uczoge1xuICAgICAgICAgICcvKi8qJzoge1xuICAgICAgICAgICAgdGhyb3R0bGluZ1JhdGVMaW1pdDogMTAwLFxuICAgICAgICAgICAgdGhyb3R0bGluZ0J1cnN0TGltaXQ6IDI1XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBhcGlHYXRld2F5RXhlY3V0aW9uUm9sZTogZXhpc3RpbmdSb2xlLFxuICAgIHJlc291cmNlTmFtZTogJ215LXJlc291cmNlJyxcbiAgICByZXNwb25zZU1hcHBpbmdUZW1wbGF0ZTogJ215LXJlc3BvbnNlLXZ0bC10ZW1wbGF0ZSdcbiAgfSk7XG5cbiAgZXhwZWN0KHN0YWNrKS50b0hhdmVSZXNvdXJjZUxpa2UoJ0FXUzo6QXBpR2F0ZXdheTo6U3RhZ2UnLCB7XG4gICAgTWV0aG9kU2V0dGluZ3M6IFtcbiAgICAgIHtcbiAgICAgICAgRGF0YVRyYWNlRW5hYmxlZDogZmFsc2UsXG4gICAgICAgIEh0dHBNZXRob2Q6ICcqJyxcbiAgICAgICAgTG9nZ2luZ0xldmVsOiAnSU5GTycsXG4gICAgICAgIFJlc291cmNlUGF0aDogJy8qJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgSHR0cE1ldGhvZDogJyonLFxuICAgICAgICBSZXNvdXJjZVBhdGg6ICcvKicsXG4gICAgICAgIFRocm90dGxpbmdSYXRlTGltaXQ6IDEwMCxcbiAgICAgICAgVGhyb3R0bGluZ0J1cnN0TGltaXQ6IDI1XG4gICAgICB9XG4gICAgXVxuICB9KTtcblxuICBleHBlY3Qoc3RhY2spLnRvSGF2ZVJlc291cmNlTGlrZSgnQVdTOjpBcGlHYXRld2F5OjpSZXNvdXJjZScsIHtcbiAgICBQYXRoUGFydDogJ215LXJlc291cmNlJ1xuICB9KTtcblxuICBleHBlY3Qoc3RhY2spLnRvSGF2ZVJlc291cmNlTGlrZSgnQVdTOjpBcGlHYXRld2F5OjpNZXRob2QnLCB7XG4gICAgSW50ZWdyYXRpb246IHtcbiAgICAgIEludGVncmF0aW9uUmVzcG9uc2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBSZXNwb25zZVRlbXBsYXRlczoge1xuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nOiAnbXktcmVzcG9uc2UtdnRsLXRlbXBsYXRlJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIFN0YXR1c0NvZGU6ICcyMDAnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBTdGF0dXNDb2RlOiAnNTAwJyxcbiAgICAgICAgICBTZWxlY3Rpb25QYXR0ZXJuOiAnNVxcXFxkezJ9J1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgU3RhdHVzQ29kZTogJzQwMCcsXG4gICAgICAgICAgU2VsZWN0aW9uUGF0dGVybjogJzRcXFxcZHsyfSdcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0sXG4gICAgTWV0aG9kUmVzcG9uc2VzOiBbXG4gICAgICB7IFN0YXR1c0NvZGU6ICcyMDAnIH0sXG4gICAgICB7IFN0YXR1c0NvZGU6ICc1MDAnIH0sXG4gICAgICB7IFN0YXR1c0NvZGU6ICc0MDAnIH1cbiAgICBdXG4gIH0pO1xuXG4gIGV4cGVjdChzdGFjaykudG9IYXZlUmVzb3VyY2VMaWtlKCdBV1M6OklBTTo6Um9sZScsIHtcbiAgICBEZXNjcmlwdGlvbjogJ2V4aXN0aW5nIHJvbGUgZm9yIFNhZ2VNYWtlciBpbnRlZ3JhdGlvbidcbiAgfSk7XG59KTtcblxudGVzdCgnQ29uc3RydWN0IGFjY2VwdHMgYWRkaXRpb25hbCByZWFkIHJlcXVlc3QgdGVtcGxhdGVzJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBuZXcgQXBpR2F0ZXdheVRvU2FnZU1ha2VyRW5kcG9pbnQoc3RhY2ssICdhcGktZ2F0ZXdheS1zYWdlbWFrZXItZW5kcG9pbnQnLCB7XG4gICAgZW5kcG9pbnROYW1lOiAnbXktZW5kcG9pbnQnLFxuICAgIHJlc291cmNlUGF0aDogJ3tteV9wYXJhbX0nLFxuICAgIHJlcXVlc3RNYXBwaW5nVGVtcGxhdGU6ICdteS1yZXF1ZXN0LXZ0bC10ZW1wbGF0ZScsXG4gICAgYWRkaXRpb25hbFJlcXVlc3RUZW1wbGF0ZXM6IHtcbiAgICAgICd0ZXh0L3BsYWluJzogJ2FkZGl0aW9uYWwtcmVxdWVzdC10ZW1wbGF0ZSdcbiAgICB9XG4gIH0pO1xuXG4gIGV4cGVjdChzdGFjaykudG9IYXZlUmVzb3VyY2VMaWtlKCdBV1M6OkFwaUdhdGV3YXk6Ok1ldGhvZCcsIHtcbiAgICBIdHRwTWV0aG9kOiAnR0VUJyxcbiAgICBJbnRlZ3JhdGlvbjoge1xuICAgICAgUmVxdWVzdFRlbXBsYXRlczoge1xuICAgICAgICAnYXBwbGljYXRpb24vanNvbic6ICdteS1yZXF1ZXN0LXZ0bC10ZW1wbGF0ZScsXG4gICAgICAgICd0ZXh0L3BsYWluJzogJ2FkZGl0aW9uYWwtcmVxdWVzdC10ZW1wbGF0ZSdcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -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,396 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Description": "Integration Test for aws-apigateway-sagemakerendpoint",
|
|
3
|
+
"Resources": {
|
|
4
|
+
"testapigatewaysagemakerendpointdefaultApiAccessLogGroupAD5E1ADF": {
|
|
5
|
+
"Type": "AWS::Logs::LogGroup",
|
|
6
|
+
"UpdateReplacePolicy": "Retain",
|
|
7
|
+
"DeletionPolicy": "Retain",
|
|
8
|
+
"Metadata": {
|
|
9
|
+
"cfn_nag": {
|
|
10
|
+
"rules_to_suppress": [
|
|
11
|
+
{
|
|
12
|
+
"id": "W86",
|
|
13
|
+
"reason": "Retention period for CloudWatchLogs LogGroups are set to 'Never Expire' to preserve customer data indefinitely"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"id": "W84",
|
|
17
|
+
"reason": "By default CloudWatchLogs LogGroups data is encrypted using the CloudWatch server-side encryption keys (AWS Managed Keys)"
|
|
18
|
+
}
|
|
19
|
+
]
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"testapigatewaysagemakerendpointdefaultRestApi7D1DA11B": {
|
|
24
|
+
"Type": "AWS::ApiGateway::RestApi",
|
|
25
|
+
"Properties": {
|
|
26
|
+
"EndpointConfiguration": {
|
|
27
|
+
"Types": [
|
|
28
|
+
"EDGE"
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
"Name": "RestApi"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"testapigatewaysagemakerendpointdefaultRestApiDeployment04BFEB63ab5dc870083af2a47a41af0f4ee69fff": {
|
|
35
|
+
"Type": "AWS::ApiGateway::Deployment",
|
|
36
|
+
"Properties": {
|
|
37
|
+
"RestApiId": {
|
|
38
|
+
"Ref": "testapigatewaysagemakerendpointdefaultRestApi7D1DA11B"
|
|
39
|
+
},
|
|
40
|
+
"Description": "Automatically created by the RestApi construct"
|
|
41
|
+
},
|
|
42
|
+
"DependsOn": [
|
|
43
|
+
"testapigatewaysagemakerendpointdefaultRestApiuseridGETB3BB79AA",
|
|
44
|
+
"testapigatewaysagemakerendpointdefaultRestApiuserid9952BA11",
|
|
45
|
+
"testapigatewaysagemakerendpointdefaultRestApirequestvalidator1A23C251"
|
|
46
|
+
],
|
|
47
|
+
"Metadata": {
|
|
48
|
+
"cfn_nag": {
|
|
49
|
+
"rules_to_suppress": [
|
|
50
|
+
{
|
|
51
|
+
"id": "W45",
|
|
52
|
+
"reason": "ApiGateway has AccessLogging enabled in AWS::ApiGateway::Stage resource, but cfn_nag checkes for it in AWS::ApiGateway::Deployment resource"
|
|
53
|
+
}
|
|
54
|
+
]
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"testapigatewaysagemakerendpointdefaultRestApiDeploymentStageprodFD1743A7": {
|
|
59
|
+
"Type": "AWS::ApiGateway::Stage",
|
|
60
|
+
"Properties": {
|
|
61
|
+
"RestApiId": {
|
|
62
|
+
"Ref": "testapigatewaysagemakerendpointdefaultRestApi7D1DA11B"
|
|
63
|
+
},
|
|
64
|
+
"AccessLogSetting": {
|
|
65
|
+
"DestinationArn": {
|
|
66
|
+
"Fn::GetAtt": [
|
|
67
|
+
"testapigatewaysagemakerendpointdefaultApiAccessLogGroupAD5E1ADF",
|
|
68
|
+
"Arn"
|
|
69
|
+
]
|
|
70
|
+
},
|
|
71
|
+
"Format": "{\"requestId\":\"$context.requestId\",\"ip\":\"$context.identity.sourceIp\",\"user\":\"$context.identity.user\",\"caller\":\"$context.identity.caller\",\"requestTime\":\"$context.requestTime\",\"httpMethod\":\"$context.httpMethod\",\"resourcePath\":\"$context.resourcePath\",\"status\":\"$context.status\",\"protocol\":\"$context.protocol\",\"responseLength\":\"$context.responseLength\"}"
|
|
72
|
+
},
|
|
73
|
+
"DeploymentId": {
|
|
74
|
+
"Ref": "testapigatewaysagemakerendpointdefaultRestApiDeployment04BFEB63ab5dc870083af2a47a41af0f4ee69fff"
|
|
75
|
+
},
|
|
76
|
+
"MethodSettings": [
|
|
77
|
+
{
|
|
78
|
+
"DataTraceEnabled": false,
|
|
79
|
+
"HttpMethod": "*",
|
|
80
|
+
"LoggingLevel": "INFO",
|
|
81
|
+
"ResourcePath": "/*"
|
|
82
|
+
}
|
|
83
|
+
],
|
|
84
|
+
"StageName": "prod",
|
|
85
|
+
"TracingEnabled": true
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
"testapigatewaysagemakerendpointdefaultRestApiuserid9952BA11": {
|
|
89
|
+
"Type": "AWS::ApiGateway::Resource",
|
|
90
|
+
"Properties": {
|
|
91
|
+
"ParentId": {
|
|
92
|
+
"Fn::GetAtt": [
|
|
93
|
+
"testapigatewaysagemakerendpointdefaultRestApi7D1DA11B",
|
|
94
|
+
"RootResourceId"
|
|
95
|
+
]
|
|
96
|
+
},
|
|
97
|
+
"PathPart": "{user_id}",
|
|
98
|
+
"RestApiId": {
|
|
99
|
+
"Ref": "testapigatewaysagemakerendpointdefaultRestApi7D1DA11B"
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
"testapigatewaysagemakerendpointdefaultRestApiuseridGETB3BB79AA": {
|
|
104
|
+
"Type": "AWS::ApiGateway::Method",
|
|
105
|
+
"Properties": {
|
|
106
|
+
"HttpMethod": "GET",
|
|
107
|
+
"ResourceId": {
|
|
108
|
+
"Ref": "testapigatewaysagemakerendpointdefaultRestApiuserid9952BA11"
|
|
109
|
+
},
|
|
110
|
+
"RestApiId": {
|
|
111
|
+
"Ref": "testapigatewaysagemakerendpointdefaultRestApi7D1DA11B"
|
|
112
|
+
},
|
|
113
|
+
"AuthorizationType": "AWS_IAM",
|
|
114
|
+
"Integration": {
|
|
115
|
+
"Credentials": {
|
|
116
|
+
"Fn::GetAtt": [
|
|
117
|
+
"testapigatewaysagemakerendpointdefaultapigatewayrole8EA61BE4",
|
|
118
|
+
"Arn"
|
|
119
|
+
]
|
|
120
|
+
},
|
|
121
|
+
"IntegrationHttpMethod": "POST",
|
|
122
|
+
"IntegrationResponses": [
|
|
123
|
+
{
|
|
124
|
+
"StatusCode": "200"
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"SelectionPattern": "5\\d{2}",
|
|
128
|
+
"StatusCode": "500"
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"SelectionPattern": "4\\d{2}",
|
|
132
|
+
"StatusCode": "400"
|
|
133
|
+
}
|
|
134
|
+
],
|
|
135
|
+
"PassthroughBehavior": "NEVER",
|
|
136
|
+
"RequestParameters": {
|
|
137
|
+
"integration.request.header.Content-Type": "'application/json'"
|
|
138
|
+
},
|
|
139
|
+
"RequestTemplates": {
|
|
140
|
+
"application/json": "{\n \"instances\": [\n#set( $user_id = $input.params(\"user_id\") )\n#set( $items = $input.params(\"items\") )\n#foreach( $item in $items.split(\",\") )\n {\"in0\": [$user_id], \"in1\": [$item]}#if( $foreach.hasNext ),#end\n $esc.newline\n#end\n ]\n}",
|
|
141
|
+
"text/plain": "{\n \"instances\": [\n#set( $user_id = $input.params(\"user_id\") )\n#set( $items = $input.params(\"items\") )\n#foreach( $item in $items.split(\",\") )\n {\"in0\": [$user_id], \"in1\": [$item]}#if( $foreach.hasNext ),#end\n $esc.newline\n#end\n ]\n}"
|
|
142
|
+
},
|
|
143
|
+
"Type": "AWS",
|
|
144
|
+
"Uri": {
|
|
145
|
+
"Fn::Join": [
|
|
146
|
+
"",
|
|
147
|
+
[
|
|
148
|
+
"arn:",
|
|
149
|
+
{
|
|
150
|
+
"Ref": "AWS::Partition"
|
|
151
|
+
},
|
|
152
|
+
":apigateway:",
|
|
153
|
+
{
|
|
154
|
+
"Ref": "AWS::Region"
|
|
155
|
+
},
|
|
156
|
+
":runtime.sagemaker:path/endpoints/my-endpoint/invocations"
|
|
157
|
+
]
|
|
158
|
+
]
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
"MethodResponses": [
|
|
162
|
+
{
|
|
163
|
+
"StatusCode": "200"
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"StatusCode": "500"
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"StatusCode": "400"
|
|
170
|
+
}
|
|
171
|
+
],
|
|
172
|
+
"RequestValidatorId": {
|
|
173
|
+
"Ref": "testapigatewaysagemakerendpointdefaultRestApirequestvalidator1A23C251"
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
},
|
|
177
|
+
"testapigatewaysagemakerendpointdefaultRestApiUsagePlan7C5B0716": {
|
|
178
|
+
"Type": "AWS::ApiGateway::UsagePlan",
|
|
179
|
+
"Properties": {
|
|
180
|
+
"ApiStages": [
|
|
181
|
+
{
|
|
182
|
+
"ApiId": {
|
|
183
|
+
"Ref": "testapigatewaysagemakerendpointdefaultRestApi7D1DA11B"
|
|
184
|
+
},
|
|
185
|
+
"Stage": {
|
|
186
|
+
"Ref": "testapigatewaysagemakerendpointdefaultRestApiDeploymentStageprodFD1743A7"
|
|
187
|
+
},
|
|
188
|
+
"Throttle": {}
|
|
189
|
+
}
|
|
190
|
+
]
|
|
191
|
+
}
|
|
192
|
+
},
|
|
193
|
+
"testapigatewaysagemakerendpointdefaultRestApirequestvalidator1A23C251": {
|
|
194
|
+
"Type": "AWS::ApiGateway::RequestValidator",
|
|
195
|
+
"Properties": {
|
|
196
|
+
"RestApiId": {
|
|
197
|
+
"Ref": "testapigatewaysagemakerendpointdefaultRestApi7D1DA11B"
|
|
198
|
+
},
|
|
199
|
+
"Name": "request-param-validator",
|
|
200
|
+
"ValidateRequestParameters": true
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
"testapigatewaysagemakerendpointdefaultLambdaRestApiCloudWatchRole56EE67C8": {
|
|
204
|
+
"Type": "AWS::IAM::Role",
|
|
205
|
+
"Properties": {
|
|
206
|
+
"AssumeRolePolicyDocument": {
|
|
207
|
+
"Statement": [
|
|
208
|
+
{
|
|
209
|
+
"Action": "sts:AssumeRole",
|
|
210
|
+
"Effect": "Allow",
|
|
211
|
+
"Principal": {
|
|
212
|
+
"Service": "apigateway.amazonaws.com"
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
],
|
|
216
|
+
"Version": "2012-10-17"
|
|
217
|
+
},
|
|
218
|
+
"Policies": [
|
|
219
|
+
{
|
|
220
|
+
"PolicyDocument": {
|
|
221
|
+
"Statement": [
|
|
222
|
+
{
|
|
223
|
+
"Action": [
|
|
224
|
+
"logs:CreateLogGroup",
|
|
225
|
+
"logs:CreateLogStream",
|
|
226
|
+
"logs:DescribeLogGroups",
|
|
227
|
+
"logs:DescribeLogStreams",
|
|
228
|
+
"logs:PutLogEvents",
|
|
229
|
+
"logs:GetLogEvents",
|
|
230
|
+
"logs:FilterLogEvents"
|
|
231
|
+
],
|
|
232
|
+
"Effect": "Allow",
|
|
233
|
+
"Resource": {
|
|
234
|
+
"Fn::Join": [
|
|
235
|
+
"",
|
|
236
|
+
[
|
|
237
|
+
"arn:",
|
|
238
|
+
{
|
|
239
|
+
"Ref": "AWS::Partition"
|
|
240
|
+
},
|
|
241
|
+
":logs:",
|
|
242
|
+
{
|
|
243
|
+
"Ref": "AWS::Region"
|
|
244
|
+
},
|
|
245
|
+
":",
|
|
246
|
+
{
|
|
247
|
+
"Ref": "AWS::AccountId"
|
|
248
|
+
},
|
|
249
|
+
":*"
|
|
250
|
+
]
|
|
251
|
+
]
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
],
|
|
255
|
+
"Version": "2012-10-17"
|
|
256
|
+
},
|
|
257
|
+
"PolicyName": "LambdaRestApiCloudWatchRolePolicy"
|
|
258
|
+
}
|
|
259
|
+
]
|
|
260
|
+
}
|
|
261
|
+
},
|
|
262
|
+
"testapigatewaysagemakerendpointdefaultLambdaRestApiAccount6B3C7FDD": {
|
|
263
|
+
"Type": "AWS::ApiGateway::Account",
|
|
264
|
+
"Properties": {
|
|
265
|
+
"CloudWatchRoleArn": {
|
|
266
|
+
"Fn::GetAtt": [
|
|
267
|
+
"testapigatewaysagemakerendpointdefaultLambdaRestApiCloudWatchRole56EE67C8",
|
|
268
|
+
"Arn"
|
|
269
|
+
]
|
|
270
|
+
}
|
|
271
|
+
},
|
|
272
|
+
"DependsOn": [
|
|
273
|
+
"testapigatewaysagemakerendpointdefaultRestApi7D1DA11B"
|
|
274
|
+
]
|
|
275
|
+
},
|
|
276
|
+
"testapigatewaysagemakerendpointdefaultapigatewayrole8EA61BE4": {
|
|
277
|
+
"Type": "AWS::IAM::Role",
|
|
278
|
+
"Properties": {
|
|
279
|
+
"AssumeRolePolicyDocument": {
|
|
280
|
+
"Statement": [
|
|
281
|
+
{
|
|
282
|
+
"Action": "sts:AssumeRole",
|
|
283
|
+
"Effect": "Allow",
|
|
284
|
+
"Principal": {
|
|
285
|
+
"Service": "apigateway.amazonaws.com"
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
],
|
|
289
|
+
"Version": "2012-10-17"
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
},
|
|
293
|
+
"testapigatewaysagemakerendpointdefaultInvokeEndpointPolicyB835D2B2": {
|
|
294
|
+
"Type": "AWS::IAM::Policy",
|
|
295
|
+
"Properties": {
|
|
296
|
+
"PolicyDocument": {
|
|
297
|
+
"Statement": [
|
|
298
|
+
{
|
|
299
|
+
"Action": "sagemaker:InvokeEndpoint",
|
|
300
|
+
"Effect": "Allow",
|
|
301
|
+
"Resource": {
|
|
302
|
+
"Fn::Join": [
|
|
303
|
+
"",
|
|
304
|
+
[
|
|
305
|
+
"arn:",
|
|
306
|
+
{
|
|
307
|
+
"Ref": "AWS::Partition"
|
|
308
|
+
},
|
|
309
|
+
":sagemaker:",
|
|
310
|
+
{
|
|
311
|
+
"Ref": "AWS::Region"
|
|
312
|
+
},
|
|
313
|
+
":",
|
|
314
|
+
{
|
|
315
|
+
"Ref": "AWS::AccountId"
|
|
316
|
+
},
|
|
317
|
+
":endpoint/my-endpoint"
|
|
318
|
+
]
|
|
319
|
+
]
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
],
|
|
323
|
+
"Version": "2012-10-17"
|
|
324
|
+
},
|
|
325
|
+
"PolicyName": "testapigatewaysagemakerendpointdefaultInvokeEndpointPolicyB835D2B2",
|
|
326
|
+
"Roles": [
|
|
327
|
+
{
|
|
328
|
+
"Ref": "testapigatewaysagemakerendpointdefaultapigatewayrole8EA61BE4"
|
|
329
|
+
}
|
|
330
|
+
]
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
},
|
|
334
|
+
"Outputs": {
|
|
335
|
+
"testapigatewaysagemakerendpointdefaultRestApiEndpoint1EFF6760": {
|
|
336
|
+
"Value": {
|
|
337
|
+
"Fn::Join": [
|
|
338
|
+
"",
|
|
339
|
+
[
|
|
340
|
+
"https://",
|
|
341
|
+
{
|
|
342
|
+
"Ref": "testapigatewaysagemakerendpointdefaultRestApi7D1DA11B"
|
|
343
|
+
},
|
|
344
|
+
".execute-api.",
|
|
345
|
+
{
|
|
346
|
+
"Ref": "AWS::Region"
|
|
347
|
+
},
|
|
348
|
+
".",
|
|
349
|
+
{
|
|
350
|
+
"Ref": "AWS::URLSuffix"
|
|
351
|
+
},
|
|
352
|
+
"/",
|
|
353
|
+
{
|
|
354
|
+
"Ref": "testapigatewaysagemakerendpointdefaultRestApiDeploymentStageprodFD1743A7"
|
|
355
|
+
},
|
|
356
|
+
"/"
|
|
357
|
+
]
|
|
358
|
+
]
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
},
|
|
362
|
+
"Parameters": {
|
|
363
|
+
"BootstrapVersion": {
|
|
364
|
+
"Type": "AWS::SSM::Parameter::Value<String>",
|
|
365
|
+
"Default": "/cdk-bootstrap/hnb659fds/version",
|
|
366
|
+
"Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]"
|
|
367
|
+
}
|
|
368
|
+
},
|
|
369
|
+
"Rules": {
|
|
370
|
+
"CheckBootstrapVersion": {
|
|
371
|
+
"Assertions": [
|
|
372
|
+
{
|
|
373
|
+
"Assert": {
|
|
374
|
+
"Fn::Not": [
|
|
375
|
+
{
|
|
376
|
+
"Fn::Contains": [
|
|
377
|
+
[
|
|
378
|
+
"1",
|
|
379
|
+
"2",
|
|
380
|
+
"3",
|
|
381
|
+
"4",
|
|
382
|
+
"5"
|
|
383
|
+
],
|
|
384
|
+
{
|
|
385
|
+
"Ref": "BootstrapVersion"
|
|
386
|
+
}
|
|
387
|
+
]
|
|
388
|
+
}
|
|
389
|
+
]
|
|
390
|
+
},
|
|
391
|
+
"AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI."
|
|
392
|
+
}
|
|
393
|
+
]
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
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
|
+
// Setup
|
|
20
|
+
const app = new aws_cdk_lib_1.App();
|
|
21
|
+
const stack = new aws_cdk_lib_1.Stack(app, core_1.generateIntegStackName(__filename));
|
|
22
|
+
stack.templateOptions.description = 'Integration Test for aws-apigateway-sagemakerendpoint';
|
|
23
|
+
// Definitions
|
|
24
|
+
const requestTemplate = `{
|
|
25
|
+
"instances": [
|
|
26
|
+
#set( $user_id = $input.params("user_id") )
|
|
27
|
+
#set( $items = $input.params("items") )
|
|
28
|
+
#foreach( $item in $items.split(",") )
|
|
29
|
+
{"in0": [$user_id], "in1": [$item]}#if( $foreach.hasNext ),#end
|
|
30
|
+
$esc.newline
|
|
31
|
+
#end
|
|
32
|
+
]
|
|
33
|
+
}`;
|
|
34
|
+
const props = {
|
|
35
|
+
endpointName: 'my-endpoint',
|
|
36
|
+
resourcePath: '{user_id}',
|
|
37
|
+
requestMappingTemplate: requestTemplate,
|
|
38
|
+
additionalRequestTemplates: {
|
|
39
|
+
'text/plain': requestTemplate
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
new lib_1.ApiGatewayToSageMakerEndpoint(stack, 'test-apigateway-sagemakerendpoint-default', props);
|
|
43
|
+
// Synth
|
|
44
|
+
app.synth();
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWcuYWRkaXRpb25hbC1yZXF1ZXN0LXRlbXBsYXRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImludGVnLmFkZGl0aW9uYWwtcmVxdWVzdC10ZW1wbGF0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOztBQUVILFVBQVU7QUFDViw2Q0FBeUM7QUFDekMsZ0NBQTJGO0FBQzNGLHlEQUF3RTtBQUV4RSxRQUFRO0FBQ1IsTUFBTSxHQUFHLEdBQUcsSUFBSSxpQkFBRyxFQUFFLENBQUM7QUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxDQUFDLEdBQUcsRUFBRSw2QkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLEtBQUssQ0FBQyxlQUFlLENBQUMsV0FBVyxHQUFHLHVEQUF1RCxDQUFDO0FBRTVGLGNBQWM7QUFDZCxNQUFNLGVBQWUsR0FDckI7Ozs7Ozs7OztFQVNFLENBQUM7QUFFSCxNQUFNLEtBQUssR0FBdUM7SUFDaEQsWUFBWSxFQUFFLGFBQWE7SUFDM0IsWUFBWSxFQUFFLFdBQVc7SUFDekIsc0JBQXNCLEVBQUUsZUFBZTtJQUN2QywwQkFBMEIsRUFBRTtRQUMxQixZQUFZLEVBQUUsZUFBZTtLQUM5QjtDQUNGLENBQUM7QUFFRixJQUFJLG1DQUE2QixDQUFDLEtBQUssRUFBRSwyQ0FBMkMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUU3RixRQUFRO0FBQ1IsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gSW1wb3J0c1xuaW1wb3J0IHsgQXBwLCBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IEFwaUdhdGV3YXlUb1NhZ2VNYWtlckVuZHBvaW50LCBBcGlHYXRld2F5VG9TYWdlTWFrZXJFbmRwb2ludFByb3BzIH0gZnJvbSAnLi4vbGliJztcbmltcG9ydCB7IGdlbmVyYXRlSW50ZWdTdGFja05hbWUgfSBmcm9tICdAYXdzLXNvbHV0aW9ucy1jb25zdHJ1Y3RzL2NvcmUnO1xuXG4vLyBTZXR1cFxuY29uc3QgYXBwID0gbmV3IEFwcCgpO1xuY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soYXBwLCBnZW5lcmF0ZUludGVnU3RhY2tOYW1lKF9fZmlsZW5hbWUpKTtcbnN0YWNrLnRlbXBsYXRlT3B0aW9ucy5kZXNjcmlwdGlvbiA9ICdJbnRlZ3JhdGlvbiBUZXN0IGZvciBhd3MtYXBpZ2F0ZXdheS1zYWdlbWFrZXJlbmRwb2ludCc7XG5cbi8vIERlZmluaXRpb25zXG5jb25zdCByZXF1ZXN0VGVtcGxhdGUgPVxuYHtcbiAgICBcImluc3RhbmNlc1wiOiBbXG4jc2V0KCAkdXNlcl9pZCA9ICRpbnB1dC5wYXJhbXMoXCJ1c2VyX2lkXCIpIClcbiNzZXQoICRpdGVtcyA9ICRpbnB1dC5wYXJhbXMoXCJpdGVtc1wiKSApXG4jZm9yZWFjaCggJGl0ZW0gaW4gJGl0ZW1zLnNwbGl0KFwiLFwiKSApXG4gICAge1wiaW4wXCI6IFskdXNlcl9pZF0sIFwiaW4xXCI6IFskaXRlbV19I2lmKCAkZm9yZWFjaC5oYXNOZXh0ICksI2VuZFxuICAgICRlc2MubmV3bGluZVxuI2VuZFxuICAgIF1cbn1gO1xuXG5jb25zdCBwcm9wczogQXBpR2F0ZXdheVRvU2FnZU1ha2VyRW5kcG9pbnRQcm9wcyA9IHtcbiAgZW5kcG9pbnROYW1lOiAnbXktZW5kcG9pbnQnLFxuICByZXNvdXJjZVBhdGg6ICd7dXNlcl9pZH0nLFxuICByZXF1ZXN0TWFwcGluZ1RlbXBsYXRlOiByZXF1ZXN0VGVtcGxhdGUsXG4gIGFkZGl0aW9uYWxSZXF1ZXN0VGVtcGxhdGVzOiB7XG4gICAgJ3RleHQvcGxhaW4nOiByZXF1ZXN0VGVtcGxhdGVcbiAgfVxufTtcblxubmV3IEFwaUdhdGV3YXlUb1NhZ2VNYWtlckVuZHBvaW50KHN0YWNrLCAndGVzdC1hcGlnYXRld2F5LXNhZ2VtYWtlcmVuZHBvaW50LWRlZmF1bHQnLCBwcm9wcyk7XG5cbi8vIFN5bnRoXG5hcHAuc3ludGgoKTtcbiJdfQ==
|