/*
* Copyright 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.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file 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.
*/
/*
* Do not modify this file. This file is generated from the sagemaker-2017-07-24.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.SageMaker.Model
{
///
/// Container for the parameters to the CreateEndpointConfig operation.
/// Creates an endpoint configuration that SageMaker hosting services uses to deploy models.
/// In the configuration, you identify one or more models, created using the CreateModel
/// API, to deploy and the resources that you want SageMaker to provision. Then you call
/// the CreateEndpoint
/// API.
///
///
///
/// Use this API if you want to use SageMaker hosting services to deploy models into
/// production.
///
///
///
/// In the request, you define a ProductionVariant
, for each model that you
/// want to deploy. Each ProductionVariant
parameter also describes the resources
/// that you want SageMaker to provision. This includes the number and type of ML compute
/// instances to deploy.
///
///
///
/// If you are hosting multiple models, you also assign a VariantWeight
to
/// specify how much traffic you want to allocate to each model. For example, suppose
/// that you want to host two models, A and B, and you assign traffic weight 2 for model
/// A and 1 for model B. SageMaker distributes two-thirds of the traffic to Model A, and
/// one-third to model B.
///
///
///
/// When you call CreateEndpoint,
/// a load call is made to DynamoDB to verify that your endpoint configuration exists.
/// When you read data from a DynamoDB table supporting
/// Eventually Consistent Reads
, the response might not reflect the
/// results of a recently completed write operation. The response might include some stale
/// data. If the dependent entities are not yet in DynamoDB, this causes a validation
/// error. If you repeat your read request after a short time, the response should return
/// the latest data. So retry logic is recommended to handle these possible issues. We
/// also recommend that customers call DescribeEndpointConfig
/// before calling CreateEndpoint
/// to minimize the potential impact of a DynamoDB eventually consistent read.
///
///
///
public partial class CreateEndpointConfigRequest : AmazonSageMakerRequest
{
private AsyncInferenceConfig _asyncInferenceConfig;
private DataCaptureConfig _dataCaptureConfig;
private string _endpointConfigName;
private ExplainerConfig _explainerConfig;
private string _kmsKeyId;
private List _productionVariants = new List();
private List _shadowProductionVariants = new List();
private List _tags = new List();
///
/// Gets and sets the property AsyncInferenceConfig.
///
/// Specifies configuration for how an endpoint performs asynchronous inference. This
/// is a required field in order for your Endpoint to be invoked using InvokeEndpointAsync.
///
///
public AsyncInferenceConfig AsyncInferenceConfig
{
get { return this._asyncInferenceConfig; }
set { this._asyncInferenceConfig = value; }
}
// Check to see if AsyncInferenceConfig property is set
internal bool IsSetAsyncInferenceConfig()
{
return this._asyncInferenceConfig != null;
}
///
/// Gets and sets the property DataCaptureConfig.
///
public DataCaptureConfig DataCaptureConfig
{
get { return this._dataCaptureConfig; }
set { this._dataCaptureConfig = value; }
}
// Check to see if DataCaptureConfig property is set
internal bool IsSetDataCaptureConfig()
{
return this._dataCaptureConfig != null;
}
///
/// Gets and sets the property EndpointConfigName.
///
/// The name of the endpoint configuration. You specify this name in a CreateEndpoint
/// request.
///
///
[AWSProperty(Required=true, Max=63)]
public string EndpointConfigName
{
get { return this._endpointConfigName; }
set { this._endpointConfigName = value; }
}
// Check to see if EndpointConfigName property is set
internal bool IsSetEndpointConfigName()
{
return this._endpointConfigName != null;
}
///
/// Gets and sets the property ExplainerConfig.
///
/// A member of CreateEndpointConfig
that enables explainers.
///
///
public ExplainerConfig ExplainerConfig
{
get { return this._explainerConfig; }
set { this._explainerConfig = value; }
}
// Check to see if ExplainerConfig property is set
internal bool IsSetExplainerConfig()
{
return this._explainerConfig != null;
}
///
/// Gets and sets the property KmsKeyId.
///
/// The Amazon Resource Name (ARN) of a Amazon Web Services Key Management Service key
/// that SageMaker uses to encrypt data on the storage volume attached to the ML compute
/// instance that hosts the endpoint.
///
///
///
/// The KmsKeyId can be any of the following formats:
///
/// -
///
/// Key ID:
1234abcd-12ab-34cd-56ef-1234567890ab
///
/// -
///
/// Key ARN:
arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
///
///
/// -
///
/// Alias name:
alias/ExampleAlias
///
/// -
///
/// Alias name ARN:
arn:aws:kms:us-west-2:111122223333:alias/ExampleAlias
///
///
///
///
/// The KMS key policy must grant permission to the IAM role that you specify in your
/// CreateEndpoint
, UpdateEndpoint
requests. For more information,
/// refer to the Amazon Web Services Key Management Service section
/// Using Key Policies in Amazon Web Services KMS
///
///
///
/// Certain Nitro-based instances include local storage, dependent on the instance type.
/// Local storage volumes are encrypted using a hardware module on the instance. You can't
/// request a KmsKeyId
when using an instance type with local storage. If
/// any of the models that you specify in the ProductionVariants
parameter
/// use nitro-based instances with local storage, do not specify a value for the KmsKeyId
/// parameter. If you specify a value for KmsKeyId
when using any nitro-based
/// instances with local storage, the call to CreateEndpointConfig
fails.
///
///
///
/// For a list of instance types that support local instance storage, see Instance
/// Store Volumes.
///
///
///
/// For more information about local instance storage encryption, see SSD
/// Instance Store Volumes.
///
///
///
[AWSProperty(Max=2048)]
public string KmsKeyId
{
get { return this._kmsKeyId; }
set { this._kmsKeyId = value; }
}
// Check to see if KmsKeyId property is set
internal bool IsSetKmsKeyId()
{
return this._kmsKeyId != null;
}
///
/// Gets and sets the property ProductionVariants.
///
/// An array of ProductionVariant
objects, one for each model that you want
/// to host at this endpoint.
///
///
[AWSProperty(Required=true, Min=1, Max=10)]
public List ProductionVariants
{
get { return this._productionVariants; }
set { this._productionVariants = value; }
}
// Check to see if ProductionVariants property is set
internal bool IsSetProductionVariants()
{
return this._productionVariants != null && this._productionVariants.Count > 0;
}
///
/// Gets and sets the property ShadowProductionVariants.
///
/// An array of ProductionVariant
objects, one for each model that you want
/// to host at this endpoint in shadow mode with production traffic replicated from the
/// model specified on ProductionVariants
. If you use this field, you can
/// only specify one variant for ProductionVariants
and one variant for ShadowProductionVariants
.
///
///
[AWSProperty(Min=1, Max=10)]
public List ShadowProductionVariants
{
get { return this._shadowProductionVariants; }
set { this._shadowProductionVariants = value; }
}
// Check to see if ShadowProductionVariants property is set
internal bool IsSetShadowProductionVariants()
{
return this._shadowProductionVariants != null && this._shadowProductionVariants.Count > 0;
}
///
/// Gets and sets the property Tags.
///
/// An array of key-value pairs. You can use tags to categorize your Amazon Web Services
/// resources in different ways, for example, by purpose, owner, or environment. For more
/// information, see Tagging
/// Amazon Web Services Resources.
///
///
[AWSProperty(Min=0, Max=50)]
public List Tags
{
get { return this._tags; }
set { this._tags = value; }
}
// Check to see if Tags property is set
internal bool IsSetTags()
{
return this._tags != null && this._tags.Count > 0;
}
}
}