From fa18ea795930b6ea5f9935401da649aab5fec4cb Mon Sep 17 00:00:00 2001 From: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> Date: Mon, 6 Jan 2020 11:07:12 -0800 Subject: [PATCH] feat: add client-sagemaker-runtime (#643) --- clients/client-sagemaker-runtime/.gitignore | 14 + clients/client-sagemaker-runtime/.npmignore | 4 + clients/client-sagemaker-runtime/LICENSE | 201 ++++++++++++++ clients/client-sagemaker-runtime/README.md | 6 + .../SageMakerRuntime.ts | 70 +++++ .../SageMakerRuntimeClient.ts | 193 ++++++++++++++ .../commands/InvokeEndpointCommand.ts | 81 ++++++ clients/client-sagemaker-runtime/endpoints.ts | 78 ++++++ clients/client-sagemaker-runtime/index.ts | 3 + .../client-sagemaker-runtime/models/index.ts | 208 +++++++++++++++ clients/client-sagemaker-runtime/package.json | 75 ++++++ .../protocols/Aws_restJson1_1.ts | 249 ++++++++++++++++++ .../runtimeConfig.browser.ts | 30 +++ .../runtimeConfig.shared.ts | 7 + .../client-sagemaker-runtime/runtimeConfig.ts | 31 +++ .../client-sagemaker-runtime/tsconfig.es.json | 19 ++ .../client-sagemaker-runtime/tsconfig.json | 27 ++ 17 files changed, 1296 insertions(+) create mode 100644 clients/client-sagemaker-runtime/.gitignore create mode 100644 clients/client-sagemaker-runtime/.npmignore create mode 100644 clients/client-sagemaker-runtime/LICENSE create mode 100644 clients/client-sagemaker-runtime/README.md create mode 100644 clients/client-sagemaker-runtime/SageMakerRuntime.ts create mode 100644 clients/client-sagemaker-runtime/SageMakerRuntimeClient.ts create mode 100644 clients/client-sagemaker-runtime/commands/InvokeEndpointCommand.ts create mode 100644 clients/client-sagemaker-runtime/endpoints.ts create mode 100644 clients/client-sagemaker-runtime/index.ts create mode 100644 clients/client-sagemaker-runtime/models/index.ts create mode 100644 clients/client-sagemaker-runtime/package.json create mode 100644 clients/client-sagemaker-runtime/protocols/Aws_restJson1_1.ts create mode 100644 clients/client-sagemaker-runtime/runtimeConfig.browser.ts create mode 100644 clients/client-sagemaker-runtime/runtimeConfig.shared.ts create mode 100644 clients/client-sagemaker-runtime/runtimeConfig.ts create mode 100644 clients/client-sagemaker-runtime/tsconfig.es.json create mode 100644 clients/client-sagemaker-runtime/tsconfig.json diff --git a/clients/client-sagemaker-runtime/.gitignore b/clients/client-sagemaker-runtime/.gitignore new file mode 100644 index 000000000000..b41c05b597c4 --- /dev/null +++ b/clients/client-sagemaker-runtime/.gitignore @@ -0,0 +1,14 @@ +/node_modules/ +/build/ +/coverage/ +/docs/ +/types/ +/dist/ +*.tsbuildinfo +*.tgz +*.log +package-lock.json + +*.d.ts +*.js +*.js.map diff --git a/clients/client-sagemaker-runtime/.npmignore b/clients/client-sagemaker-runtime/.npmignore new file mode 100644 index 000000000000..b7ff81137c4a --- /dev/null +++ b/clients/client-sagemaker-runtime/.npmignore @@ -0,0 +1,4 @@ +/coverage/ +/docs/ +tsconfig.test.json +*.tsbuildinfo diff --git a/clients/client-sagemaker-runtime/LICENSE b/clients/client-sagemaker-runtime/LICENSE new file mode 100644 index 000000000000..b7d2463d8cc0 --- /dev/null +++ b/clients/client-sagemaker-runtime/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/clients/client-sagemaker-runtime/README.md b/clients/client-sagemaker-runtime/README.md new file mode 100644 index 000000000000..dd11b526ae71 --- /dev/null +++ b/clients/client-sagemaker-runtime/README.md @@ -0,0 +1,6 @@ +@aws-sdk/client-sagemaker-runtime + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/client-sagemaker-runtime/preview.svg)](https://www.npmjs.com/package/@aws-sdk/client-sagemaker-runtime) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/client-sagemaker-runtime.svg)](https://www.npmjs.com/package/@aws-sdk/client-sagemaker-runtime) + +For SDK usage, please step to [SDK reademe](https://github.com/aws/aws-sdk-js-v3). diff --git a/clients/client-sagemaker-runtime/SageMakerRuntime.ts b/clients/client-sagemaker-runtime/SageMakerRuntime.ts new file mode 100644 index 000000000000..381fcab65118 --- /dev/null +++ b/clients/client-sagemaker-runtime/SageMakerRuntime.ts @@ -0,0 +1,70 @@ +import { SageMakerRuntimeClient } from "./SageMakerRuntimeClient"; +import { + InvokeEndpointCommand, + InvokeEndpointCommandInput, + InvokeEndpointCommandOutput +} from "./commands/InvokeEndpointCommand"; +import { HttpHandlerOptions as __HttpHandlerOptions } from "@aws-sdk/types"; + +/** + * + *
The Amazon SageMaker runtime API.
+ * + */ +export class SageMakerRuntime extends SageMakerRuntimeClient { + /** + * + *After you deploy a model into production using Amazon SageMaker hosting services, your + * client applications use this API to get inferences from the model hosted at the + * specified endpoint.
+ *For an overview of Amazon SageMaker, see How It Works.
+ *Amazon SageMaker strips all POST headers except those supported by the API. Amazon SageMaker might add + * additional headers. You should not rely on the behavior of headers outside those + * enumerated in the request syntax.
+ *Calls to InvokeEndpoint
are authenticated by using AWS Signature Version
+ * 4. For information, see Authenticating Requests (AWS Signature Version 4) in the Amazon S3 API
+ * Reference.
A customer's model containers must respond to requests within 60 seconds. The model + * itself can have a maximum processing time of 60 seconds before responding to the + * /invocations. If your model is going to take 50-60 seconds of processing time, the SDK + * socket timeout should be set to be 70 seconds.
+ *Endpoints are scoped to an individual account, and are not public. The URL does + * not contain the account ID, but Amazon SageMaker determines the account ID from the + * authentication token that is supplied by the caller.
+ *The Amazon SageMaker runtime API.
+ * + */ +export class SageMakerRuntimeClient extends __Client< + __HttpHandlerOptions, + ServiceInputTypes, + ServiceOutputTypes, + SageMakerRuntimeClientResolvedConfig +> { + readonly config: SageMakerRuntimeClientResolvedConfig; + + constructor(configuration: SageMakerRuntimeClientConfig) { + let _config_0 = { + ...__ClientDefaultValues, + ...configuration + }; + let _config_1 = resolveRegionConfig(_config_0); + let _config_2 = resolveEndpointsConfig(_config_1); + let _config_3 = resolveAwsAuthConfig(_config_2); + let _config_4 = resolveRetryConfig(_config_3); + let _config_5 = resolveUserAgentConfig(_config_4); + let _config_6 = resolveHostHeaderConfig(_config_5); + super(_config_6); + this.config = _config_6; + this.middlewareStack.use(getAwsAuthPlugin(this.config)); + this.middlewareStack.use(getRetryPlugin(this.config)); + this.middlewareStack.use(getUserAgentPlugin(this.config)); + this.middlewareStack.use(getContentLengthPlugin(this.config)); + this.middlewareStack.use(getHostHeaderPlugin(this.config)); + } + + destroy(): void {} +} diff --git a/clients/client-sagemaker-runtime/commands/InvokeEndpointCommand.ts b/clients/client-sagemaker-runtime/commands/InvokeEndpointCommand.ts new file mode 100644 index 000000000000..138e290a9d93 --- /dev/null +++ b/clients/client-sagemaker-runtime/commands/InvokeEndpointCommand.ts @@ -0,0 +1,81 @@ +import { + SageMakerRuntimeClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes +} from "../SageMakerRuntimeClient"; +import { InvokeEndpointInput, InvokeEndpointOutput } from "../models/index"; +import { + deserializeAws_restJson1_1InvokeEndpointCommand, + serializeAws_restJson1_1InvokeEndpointCommand +} from "../protocols/Aws_restJson1_1"; +import { getSerdePlugin } from "@aws-sdk/middleware-serde"; +import { + HttpRequest as __HttpRequest, + HttpResponse as __HttpResponse +} from "@aws-sdk/protocol-http"; +import { Command as $Command } from "@aws-sdk/smithy-client"; +import { + FinalizeHandlerArguments, + Handler, + HandlerExecutionContext, + MiddlewareStack, + SerdeContext, + HttpHandlerOptions as __HttpHandlerOptions +} from "@aws-sdk/types"; + +export type InvokeEndpointCommandInput = InvokeEndpointInput; +export type InvokeEndpointCommandOutput = InvokeEndpointOutput; + +export class InvokeEndpointCommand extends $Command< + InvokeEndpointCommandInput, + InvokeEndpointCommandOutput, + SageMakerRuntimeClientResolvedConfig +> { + // Start section: command_properties + // End section: command_properties + + constructor(readonly input: InvokeEndpointCommandInput) { + // Start section: command_constructor + super(); + // End section: command_constructor + } + + resolveMiddleware( + clientStack: MiddlewareStackAn internal failure occurred.
+ * + */ +export interface InternalFailure + extends _smithy.SmithyException, + $MetadataBearer { + __type: "InternalFailure"; + $fault: "server"; + Message?: string; +} + +export namespace InternalFailure { + export function isa(o: any): o is InternalFailure { + return _smithy.isa(o, "InternalFailure"); + } +} + +export interface InvokeEndpointInput { + __type?: "InvokeEndpointInput"; + /** + * + *The desired MIME type of the inference in the response.
+ * + */ + Accept?: string; + + /** + * + *Provides input data, in the format specified in the ContentType
+ * request header. Amazon SageMaker passes all of the data in the body to the model.
For information about the format of the request body, see Common Data + * Formats—Inference.
+ * + */ + Body: Uint8Array | undefined; + + /** + * + *The MIME type of the input data in the request body.
+ * + */ + ContentType?: string; + + /** + * + *Provides additional information about a request for an inference submitted to a model + * hosted at an Amazon SageMaker endpoint. The information is an opaque value that is + * forwarded verbatim. You could use this value, for example, to provide an ID that you can + * use to track a request or to provide other metadata that a service endpoint was + * programmed to process. The value must consist of no more than 1024 visible US-ASCII + * characters as specified in Section 3.3.6. Field Value + * Components of the Hypertext Transfer Protocol (HTTP/1.1). This feature is + * currently supported in the AWS SDKs but not in the Amazon SageMaker Python SDK.
+ * + */ + CustomAttributes?: string; + + /** + * + *The name of the endpoint that you specified when you created the endpoint using the + * CreateEndpoint API.
+ * + */ + EndpointName: string | undefined; + + /** + * + *Specifies the model to be requested for an inference when invoking a multi-model endpoint.
+ * + */ + TargetModel?: string; +} + +export namespace InvokeEndpointInput { + export function isa(o: any): o is InvokeEndpointInput { + return _smithy.isa(o, "InvokeEndpointInput"); + } +} + +export interface InvokeEndpointOutput extends $MetadataBearer { + __type?: "InvokeEndpointOutput"; + /** + * + *Includes the inference provided by the model.
+ *For information about the format of the response body, see Common Data + * Formats—Inference.
+ * + */ + Body: Uint8Array | undefined; + + /** + * + *The MIME type of the inference returned in the response body.
+ * + */ + ContentType?: string; + + /** + * + *Provides additional information in the response about the inference returned by a
+ * model hosted at an Amazon SageMaker endpoint. The information is an opaque value that is
+ * forwarded verbatim. You could use this value, for example, to return an ID received in
+ * the CustomAttributes
header of a request or other metadata that a service
+ * endpoint was programmed to produce. The value must consist of no more than 1024 visible
+ * US-ASCII characters as specified in Section 3.3.6. Field Value
+ * Components of the Hypertext Transfer Protocol (HTTP/1.1). If the customer
+ * wants the custom attribute returned, the model must set the custom attribute to be
+ * included on the way back.
This feature is currently supported in the AWS SDKs but not in the Amazon SageMaker + * Python SDK.
+ * + */ + CustomAttributes?: string; + + /** + * + *Identifies the production variant that was invoked.
+ * + */ + InvokedProductionVariant?: string; +} + +export namespace InvokeEndpointOutput { + export function isa(o: any): o is InvokeEndpointOutput { + return _smithy.isa(o, "InvokeEndpointOutput"); + } +} + +/** + * + *Model (owned by the customer in the container) returned 4xx or 5xx error code. + *
+ * + */ +export interface ModelError extends _smithy.SmithyException, $MetadataBearer { + __type: "ModelError"; + $fault: "client"; + /** + * + *The Amazon Resource Name (ARN) of the log stream.
+ * + */ + LogStreamArn?: string; + + Message?: string; + /** + * + *Original message.
+ * + */ + OriginalMessage?: string; + + /** + * + *Original status code.
+ * + */ + OriginalStatusCode?: number; +} + +export namespace ModelError { + export function isa(o: any): o is ModelError { + return _smithy.isa(o, "ModelError"); + } +} + +/** + * + *The service is unavailable. Try your call again.
+ * + */ +export interface ServiceUnavailable + extends _smithy.SmithyException, + $MetadataBearer { + __type: "ServiceUnavailable"; + $fault: "server"; + Message?: string; +} + +export namespace ServiceUnavailable { + export function isa(o: any): o is ServiceUnavailable { + return _smithy.isa(o, "ServiceUnavailable"); + } +} + +/** + * + *Inspect your request and try again.
+ * + */ +export interface ValidationError + extends _smithy.SmithyException, + $MetadataBearer { + __type: "ValidationError"; + $fault: "client"; + Message?: string; +} + +export namespace ValidationError { + export function isa(o: any): o is ValidationError { + return _smithy.isa(o, "ValidationError"); + } +} diff --git a/clients/client-sagemaker-runtime/package.json b/clients/client-sagemaker-runtime/package.json new file mode 100644 index 000000000000..92e394682985 --- /dev/null +++ b/clients/client-sagemaker-runtime/package.json @@ -0,0 +1,75 @@ +{ + "name": "@aws-sdk/client-sagemaker-runtime", + "description": "@aws-sdk/client-sagemaker-runtime client", + "version": "0.1.0-preview.1", + "scripts": { + "clean": "npm run remove-definitions && npm run remove-dist && npm run remove-js && npm run remove-maps", + "build-documentation": "npm run clean && typedoc ./", + "prepublishOnly": "yarn build", + "pretest": "tsc", + "remove-definitions": "rimraf ./types", + "remove-dist": "rimraf ./dist", + "remove-documentation": "rimraf ./docs", + "remove-js": "rimraf *.js && rimraf ./commands/*.js && rimraf ./models/*.js && rimraf ./protocols/*.js", + "remove-maps": "rimraf *.js.map && rimraf ./commands/*.js.map && rimraf ./models/*.js.map && rimraf ./protocols/*.js.map", + "test": "exit 0", + "smoke-test": "npm run pretest && node ./test/smoke/index.spec.js", + "build:es": "tsc -p tsconfig.es.json", + "build": "yarn pretest && yarn build:es" + }, + "main": "./dist/cjs/index.js", + "types": "./types/index.d.ts", + "module": "./dist/es/index.js", + "browser": { + "./runtimeConfig": "./runtimeConfig.browser" + }, + "sideEffects": false, + "dependencies": { + "tslib": "^1.8.0", + "@aws-crypto/sha256-browser": "^0.1.0-preview.1", + "@aws-sdk/config-resolver": "^0.1.0-preview.5", + "@aws-sdk/credential-provider-node": "^0.1.0-preview.7", + "@aws-sdk/fetch-http-handler": "^0.1.0-preview.5", + "@aws-sdk/hash-node": "^0.1.0-preview.5", + "@aws-sdk/invalid-dependency": "^0.1.0-preview.1", + "@aws-sdk/middleware-content-length": "^0.1.0-preview.5", + "@aws-sdk/middleware-host-header": "^0.1.0-preview.1", + "@aws-sdk/middleware-retry": "^0.1.0-preview.5", + "@aws-sdk/middleware-serde": "^0.1.0-preview.1", + "@aws-sdk/middleware-signing": "^0.1.0-preview.7", + "@aws-sdk/middleware-stack": "^0.1.0-preview.6", + "@aws-sdk/middleware-user-agent": "^0.1.0-preview.1", + "@aws-sdk/node-http-handler": "^0.1.0-preview.6", + "@aws-sdk/protocol-http": "^0.1.0-preview.1", + "@aws-sdk/region-provider": "^0.1.0-preview.5", + "@aws-sdk/smithy-client": "^0.1.0-preview.1", + "@aws-sdk/stream-collector-browser": "^0.1.0-preview.5", + "@aws-sdk/stream-collector-node": "^0.1.0-preview.6", + "@aws-sdk/types": "^0.1.0-preview.5", + "@aws-sdk/url-parser-browser": "^0.1.0-preview.5", + "@aws-sdk/url-parser-node": "^0.1.0-preview.5", + "@aws-sdk/util-base64-browser": "^0.1.0-preview.3", + "@aws-sdk/util-base64-node": "^0.1.0-preview.3", + "@aws-sdk/util-body-length-browser": "^0.1.0-preview.3", + "@aws-sdk/util-body-length-node": "^0.1.0-preview.4", + "@aws-sdk/util-user-agent-browser": "^0.1.0-preview.6", + "@aws-sdk/util-user-agent-node": "^0.1.0-preview.6", + "@aws-sdk/util-utf8-browser": "^0.1.0-preview.3", + "@aws-sdk/util-utf8-node": "^0.1.0-preview.3" + }, + "devDependencies": { + "rimraf": "^3.0.0", + "typedoc": "^0.15.0", + "typescript": "^3.6.3", + "@types/node": "^12.7.5", + "tslib": "^1.8.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0" +} diff --git a/clients/client-sagemaker-runtime/protocols/Aws_restJson1_1.ts b/clients/client-sagemaker-runtime/protocols/Aws_restJson1_1.ts new file mode 100644 index 000000000000..75158eb6f60b --- /dev/null +++ b/clients/client-sagemaker-runtime/protocols/Aws_restJson1_1.ts @@ -0,0 +1,249 @@ +import { + InvokeEndpointCommandInput, + InvokeEndpointCommandOutput +} from "../commands/InvokeEndpointCommand"; +import { + InternalFailure, + ModelError, + ServiceUnavailable, + ValidationError +} from "../models/index"; +import { + HttpRequest as __HttpRequest, + HttpResponse as __HttpResponse +} from "@aws-sdk/protocol-http"; +import { SmithyException as __SmithyException } from "@aws-sdk/smithy-client"; +import { + Endpoint as __Endpoint, + MetadataBearer as __MetadataBearer, + ResponseMetadata as __ResponseMetadata, + SerdeContext as __SerdeContext +} from "@aws-sdk/types"; + +export async function serializeAws_restJson1_1InvokeEndpointCommand( + input: InvokeEndpointCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> { + const headers: any = {}; + headers["Content-Type"] = "application/octet-stream"; + if (input.Accept !== undefined) { + headers["Accept"] = input.Accept.toString(); + } + if (input.ContentType !== undefined) { + headers["Content-Type"] = input.ContentType.toString(); + } + if (input.CustomAttributes !== undefined) { + headers[ + "X-Amzn-SageMaker-Custom-Attributes" + ] = input.CustomAttributes.toString(); + } + if (input.TargetModel !== undefined) { + headers["X-Amzn-SageMaker-Target-Model"] = input.TargetModel.toString(); + } + let resolvedPath = "/endpoints/{EndpointName}/invocations"; + if (input.EndpointName !== undefined) { + const labelValue: any = input.EndpointName.toString(); + if (labelValue.length <= 0) { + throw new Error( + "Empty value provided for input HTTP label: EndpointName." + ); + } + resolvedPath = resolvedPath.replace("{EndpointName}", labelValue); + } else { + throw new Error("No value provided for input HTTP label: EndpointName."); + } + let body: any = {}; + if (input.Body !== undefined) { + body = input.Body; + } + return new __HttpRequest({ + ...context.endpoint, + protocol: "https", + method: "POST", + headers: headers, + path: resolvedPath, + body: body + }); +} + +export async function deserializeAws_restJson1_1InvokeEndpointCommand( + output: __HttpResponse, + context: __SerdeContext +): Promise