AWS::SageMaker::EndpointConfig
The AWS::SageMaker::EndpointConfig
resource creates a configuration
for an Amazon SageMaker endpoint. For more information, see CreateEndpointConfig
in the SageMaker Developer Guide.
Syntax
To declare this entity in your AWS CloudFormation template, use the following syntax:
JSON
{ "Type" : "AWS::SageMaker::EndpointConfig", "Properties" : { "AsyncInferenceConfig" :
AsyncInferenceConfig
, "DataCaptureConfig" :DataCaptureConfig
, "EndpointConfigName" :String
, "ExplainerConfig" :ExplainerConfig
, "KmsKeyId" :String
, "ProductionVariants" :[ ProductionVariant, ... ]
, "ShadowProductionVariants" :[ ProductionVariant, ... ]
, "Tags" :[ Tag, ... ]
} }
YAML
Type: AWS::SageMaker::EndpointConfig Properties: AsyncInferenceConfig:
AsyncInferenceConfig
DataCaptureConfig:DataCaptureConfig
EndpointConfigName:String
ExplainerConfig:ExplainerConfig
KmsKeyId:String
ProductionVariants:- ProductionVariant
ShadowProductionVariants:- ProductionVariant
Tags:- Tag
Properties
AsyncInferenceConfig
-
Specifies configuration for how an endpoint performs asynchronous inference.
Required: No
Type: AsyncInferenceConfig
Update requires: Replacement
DataCaptureConfig
-
Specifies how to capture endpoint data for model monitor. The data capture configuration applies to all production variants hosted at the endpoint.
Required: No
Type: DataCaptureConfig
Update requires: Replacement
EndpointConfigName
-
The name of the endpoint configuration.
Required: No
Type: String
Pattern:
^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}
Maximum:
63
Update requires: Replacement
ExplainerConfig
-
A parameter to activate explainers.
Required: No
Type: ExplainerConfig
Update requires: Replacement
KmsKeyId
-
The Amazon Resource Name (ARN) of an AWS Key Management Service key that Amazon SageMaker uses to encrypt data on the storage volume attached to the ML compute instance that hosts the endpoint.
-
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 AWS Key Management Service section Using Key Policies in AWS KMSNote
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 theProductionVariants
parameter use nitro-based instances with local storage, do not specify a value for theKmsKeyId
parameter. If you specify a value forKmsKeyId
when using any nitro-based instances with local storage, the call toCreateEndpointConfig
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.
Required: No
Type: String
Pattern:
^[a-zA-Z0-9:/_-]*$
Maximum:
2048
Update requires: Replacement
-
ProductionVariants
-
A list of
ProductionVariant
objects, one for each model that you want to host at this endpoint.Required: Yes
Type: Array of ProductionVariant
Minimum:
1
Maximum:
10
Update requires: Replacement
ShadowProductionVariants
-
Array of
ProductionVariant
objects. There is one for each model that you want to host at this endpoint in shadow mode with production traffic replicated from the model specified onProductionVariants
. If you use this field, you can only specify one variant forProductionVariants
and one variant forShadowProductionVariants
.Required: No
Type: Array of ProductionVariant
Minimum:
1
Maximum:
10
Update requires: Replacement
-
A list of key-value pairs to apply to this resource.
For more information, see Resource Tag and Using Cost Allocation Tags.
Required: No
Type: Array of Tag
Minimum:
0
Maximum:
50
Update requires: No interruption
Return values
Ref
When you pass the logical ID of this resource to the intrinsic Ref
function, Ref
returns the Amazon Resource Name (ARN) of the endpoint
configuration, such as
arn:aws:sagemaker:us-west-2:01234567>8901:endpoint-config/myendpointconfig
For more information about using the Ref
function, see Ref
.
Fn::GetAtt
The Fn::GetAtt
intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.
For more information about using the Fn::GetAtt
intrinsic function, see Fn::GetAtt
.
EndpointConfigName
-
The name of the endpoint configuration, such as
MyEndpointConfiguration
.
Examples
SageMaker EndpointConfig Example
The following example creates an endpoint configuration from a trained model, and then creates an endpoint.
JSON
{ "Description": "Basic Hosting entities test. We need models to create endpoint configs.", "Mappings": { "RegionMap": { "us-west-2": { "NullTransformer": "12345678901.dkr.ecr.us-west-2.amazonaws.com/mymodel:latest" }, "us-east-2": { "NullTransformer": "12345678901.dkr.ecr.us-east-2.amazonaws.com/mymodel:latest" }, "us-east-1": { "NullTransformer": "12345678901.dkr.ecr.us-east-1.amazonaws.com/mymodel:latest" }, "eu-west-1": { "NullTransformer": "12345678901.dkr.ecr.eu-west-1.amazonaws.com/mymodel:latest" }, "ap-northeast-1": { "NullTransformer": "12345678901.dkr.ecr.ap-northeast-1.amazonaws.com/mymodel:latest" }, "ap-northeast-2": { "NullTransformer": "12345678901.dkr.ecr.ap-northeast-2.amazonaws.com/mymodel:latest" }, "ap-southeast-2": { "NullTransformer": "12345678901.dkr.ecr.ap-southeast-2.amazonaws.com/mymodel:latest" }, "eu-central-1": { "NullTransformer": "12345678901.dkr.ecr.eu-central-1.amazonaws.com/mymodel:latest" } } }, "Resources": { "Endpoint": { "Type": "AWS::SageMaker::Endpoint", "Properties": { "EndpointConfigName": { "Fn::GetAtt" : ["EndpointConfig", "EndpointConfigName" ] } } }, "EndpointConfig": { "Type": "AWS::SageMaker::EndpointConfig", "Properties": { "ProductionVariants": [ { "InitialInstanceCount": 1, "InitialVariantWeight": 1, "InstanceType": "ml.t2.large", "ModelName": { "Fn::GetAtt" : ["Model", "ModelName" ] }, "VariantName": { "Fn::GetAtt" : ["Model", "ModelName" ] } } ] } }, "Model": { "Type": "AWS::SageMaker::Model", "Properties": { "PrimaryContainer": { "Image": { "Fn::FindInMap" : [ "AWS::Region", "NullTransformer"] } }, "ExecutionRoleArn": { "Fn::GetAtt" : [ "ExecutionRole", "Arn" ] } } }, "ExecutionRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "sagemaker.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ] }, "Path": "/", "Policies": [ { "PolicyName": "root", "PolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "*", "Resource": "*" } ] } } ] } } }, "Outputs": { "EndpointId": { "Value": { "Ref" : "Endpoint" } }, "EndpointName": { "Value": { "Fn::GetAtt" : [ "Endpoint", "EndpointName" ] } } } }
YAML
Description: "Basic Hosting entities test. We need models to create endpoint configs." Mappings: RegionMap: "us-west-2": "NullTransformer": "123456789012.dkr.ecr.us-west-2.amazonaws.com/mymodel:latest" "us-east-2": "NullTransformer": "123456789012.dkr.ecr.us-east-2.amazonaws.com/mymodel:latest" "us-east-1": "NullTransformer": "123456789012.dkr.ecr.us-east-1.amazonaws.com/mymodel:latest" "eu-west-1": "NullTransformer": "123456789012.dkr.ecr.eu-west-1.amazonaws.com/mymodel:latest" "ap-northeast-1": "NullTransformer": "123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/mymodel:latest" "ap-northeast-2": "NullTransformer": "123456789012.dkr.ecr.ap-northeast-2.amazonaws.com/mymodel:latest" "ap-southeast-2": "NullTransformer": "123456789012.dkr.ecr.ap-southeast-2.amazonaws.com/mymodel:latest" "eu-central-1": "NullTransformer": "123456789012.dkr.ecr.eu-central-1.amazonaws.com/mymodel:latest" Resources: Endpoint: Type: "AWS::SageMaker::Endpoint" Properties: EndpointConfigName: !GetAtt EndpointConfig.EndpointConfigName EndpointConfig: Type: "AWS::SageMaker::EndpointConfig" Properties: ProductionVariants: - InitialInstanceCount: 1 InitialVariantWeight: 1.0 InstanceType: ml.t2.large ModelName: !GetAtt Model.ModelName VariantName: !GetAtt Model.ModelName Model: Type: "AWS::SageMaker::Model" Properties: PrimaryContainer: Image: !FindInMap [RegionMap, !Ref "AWS::Region", "NullTransformer"] ExecutionRoleArn: !GetAtt ExecutionRole.Arn ExecutionRole: Type: "AWS::IAM::Role" Properties: AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Principal: Service: - "sagemaker.amazonaws.com" Action: - "sts:AssumeRole" Path: "/" Policies: - PolicyName: "root" PolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Action: "*" Resource: "*" Outputs: EndpointId: Value: !Ref Endpoint EndpointName: Value: !GetAtt Endpoint.EndpointName