{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE NoImplicitPrelude #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Amazonka.SageMaker.Types.ModelPackageContainerDefinition -- Copyright : (c) 2013-2023 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) module Amazonka.SageMaker.Types.ModelPackageContainerDefinition where import qualified Amazonka.Core as Core import qualified Amazonka.Core.Lens.Internal as Lens import qualified Amazonka.Data as Data import qualified Amazonka.Prelude as Prelude import Amazonka.SageMaker.Types.ModelInput -- | Describes the Docker container for the model package. -- -- /See:/ 'newModelPackageContainerDefinition' smart constructor. data ModelPackageContainerDefinition = ModelPackageContainerDefinition' { -- | The DNS host name for the Docker container. containerHostname :: Prelude.Maybe Prelude.Text, -- | The environment variables to set in the Docker container. Each key and -- value in the @Environment@ string to string map can have length of up to -- 1024. We support up to 16 entries in the map. environment :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text), -- | The machine learning framework of the model package container image. framework :: Prelude.Maybe Prelude.Text, -- | The framework version of the Model Package Container Image. frameworkVersion :: Prelude.Maybe Prelude.Text, -- | An MD5 hash of the training algorithm that identifies the Docker image -- used for training. imageDigest :: Prelude.Maybe Prelude.Text, -- | The Amazon S3 path where the model artifacts, which result from model -- training, are stored. This path must point to a single @gzip@ compressed -- tar archive (@.tar.gz@ suffix). -- -- The model artifacts must be in an S3 bucket that is in the same region -- as the model package. modelDataUrl :: Prelude.Maybe Prelude.Text, -- | A structure with Model Input details. modelInput :: Prelude.Maybe ModelInput, -- | The name of a pre-trained machine learning benchmarked by Amazon -- SageMaker Inference Recommender model that matches your model. You can -- find a list of benchmarked models by calling @ListModelMetadata@. nearestModelName :: Prelude.Maybe Prelude.Text, -- | The Amazon Web Services Marketplace product ID of the model package. productId :: Prelude.Maybe Prelude.Text, -- | The Amazon EC2 Container Registry (Amazon ECR) path where inference code -- is stored. -- -- If you are using your own custom algorithm instead of an algorithm -- provided by SageMaker, the inference code must meet SageMaker -- requirements. SageMaker supports both @registry\/repository[:tag]@ and -- @registry\/repository[\@digest]@ image path formats. For more -- information, see -- . image :: Prelude.Text } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'ModelPackageContainerDefinition' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'containerHostname', 'modelPackageContainerDefinition_containerHostname' - The DNS host name for the Docker container. -- -- 'environment', 'modelPackageContainerDefinition_environment' - The environment variables to set in the Docker container. Each key and -- value in the @Environment@ string to string map can have length of up to -- 1024. We support up to 16 entries in the map. -- -- 'framework', 'modelPackageContainerDefinition_framework' - The machine learning framework of the model package container image. -- -- 'frameworkVersion', 'modelPackageContainerDefinition_frameworkVersion' - The framework version of the Model Package Container Image. -- -- 'imageDigest', 'modelPackageContainerDefinition_imageDigest' - An MD5 hash of the training algorithm that identifies the Docker image -- used for training. -- -- 'modelDataUrl', 'modelPackageContainerDefinition_modelDataUrl' - The Amazon S3 path where the model artifacts, which result from model -- training, are stored. This path must point to a single @gzip@ compressed -- tar archive (@.tar.gz@ suffix). -- -- The model artifacts must be in an S3 bucket that is in the same region -- as the model package. -- -- 'modelInput', 'modelPackageContainerDefinition_modelInput' - A structure with Model Input details. -- -- 'nearestModelName', 'modelPackageContainerDefinition_nearestModelName' - The name of a pre-trained machine learning benchmarked by Amazon -- SageMaker Inference Recommender model that matches your model. You can -- find a list of benchmarked models by calling @ListModelMetadata@. -- -- 'productId', 'modelPackageContainerDefinition_productId' - The Amazon Web Services Marketplace product ID of the model package. -- -- 'image', 'modelPackageContainerDefinition_image' - The Amazon EC2 Container Registry (Amazon ECR) path where inference code -- is stored. -- -- If you are using your own custom algorithm instead of an algorithm -- provided by SageMaker, the inference code must meet SageMaker -- requirements. SageMaker supports both @registry\/repository[:tag]@ and -- @registry\/repository[\@digest]@ image path formats. For more -- information, see -- . newModelPackageContainerDefinition :: -- | 'image' Prelude.Text -> ModelPackageContainerDefinition newModelPackageContainerDefinition pImage_ = ModelPackageContainerDefinition' { containerHostname = Prelude.Nothing, environment = Prelude.Nothing, framework = Prelude.Nothing, frameworkVersion = Prelude.Nothing, imageDigest = Prelude.Nothing, modelDataUrl = Prelude.Nothing, modelInput = Prelude.Nothing, nearestModelName = Prelude.Nothing, productId = Prelude.Nothing, image = pImage_ } -- | The DNS host name for the Docker container. modelPackageContainerDefinition_containerHostname :: Lens.Lens' ModelPackageContainerDefinition (Prelude.Maybe Prelude.Text) modelPackageContainerDefinition_containerHostname = Lens.lens (\ModelPackageContainerDefinition' {containerHostname} -> containerHostname) (\s@ModelPackageContainerDefinition' {} a -> s {containerHostname = a} :: ModelPackageContainerDefinition) -- | The environment variables to set in the Docker container. Each key and -- value in the @Environment@ string to string map can have length of up to -- 1024. We support up to 16 entries in the map. modelPackageContainerDefinition_environment :: Lens.Lens' ModelPackageContainerDefinition (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)) modelPackageContainerDefinition_environment = Lens.lens (\ModelPackageContainerDefinition' {environment} -> environment) (\s@ModelPackageContainerDefinition' {} a -> s {environment = a} :: ModelPackageContainerDefinition) Prelude.. Lens.mapping Lens.coerced -- | The machine learning framework of the model package container image. modelPackageContainerDefinition_framework :: Lens.Lens' ModelPackageContainerDefinition (Prelude.Maybe Prelude.Text) modelPackageContainerDefinition_framework = Lens.lens (\ModelPackageContainerDefinition' {framework} -> framework) (\s@ModelPackageContainerDefinition' {} a -> s {framework = a} :: ModelPackageContainerDefinition) -- | The framework version of the Model Package Container Image. modelPackageContainerDefinition_frameworkVersion :: Lens.Lens' ModelPackageContainerDefinition (Prelude.Maybe Prelude.Text) modelPackageContainerDefinition_frameworkVersion = Lens.lens (\ModelPackageContainerDefinition' {frameworkVersion} -> frameworkVersion) (\s@ModelPackageContainerDefinition' {} a -> s {frameworkVersion = a} :: ModelPackageContainerDefinition) -- | An MD5 hash of the training algorithm that identifies the Docker image -- used for training. modelPackageContainerDefinition_imageDigest :: Lens.Lens' ModelPackageContainerDefinition (Prelude.Maybe Prelude.Text) modelPackageContainerDefinition_imageDigest = Lens.lens (\ModelPackageContainerDefinition' {imageDigest} -> imageDigest) (\s@ModelPackageContainerDefinition' {} a -> s {imageDigest = a} :: ModelPackageContainerDefinition) -- | The Amazon S3 path where the model artifacts, which result from model -- training, are stored. This path must point to a single @gzip@ compressed -- tar archive (@.tar.gz@ suffix). -- -- The model artifacts must be in an S3 bucket that is in the same region -- as the model package. modelPackageContainerDefinition_modelDataUrl :: Lens.Lens' ModelPackageContainerDefinition (Prelude.Maybe Prelude.Text) modelPackageContainerDefinition_modelDataUrl = Lens.lens (\ModelPackageContainerDefinition' {modelDataUrl} -> modelDataUrl) (\s@ModelPackageContainerDefinition' {} a -> s {modelDataUrl = a} :: ModelPackageContainerDefinition) -- | A structure with Model Input details. modelPackageContainerDefinition_modelInput :: Lens.Lens' ModelPackageContainerDefinition (Prelude.Maybe ModelInput) modelPackageContainerDefinition_modelInput = Lens.lens (\ModelPackageContainerDefinition' {modelInput} -> modelInput) (\s@ModelPackageContainerDefinition' {} a -> s {modelInput = a} :: ModelPackageContainerDefinition) -- | The name of a pre-trained machine learning benchmarked by Amazon -- SageMaker Inference Recommender model that matches your model. You can -- find a list of benchmarked models by calling @ListModelMetadata@. modelPackageContainerDefinition_nearestModelName :: Lens.Lens' ModelPackageContainerDefinition (Prelude.Maybe Prelude.Text) modelPackageContainerDefinition_nearestModelName = Lens.lens (\ModelPackageContainerDefinition' {nearestModelName} -> nearestModelName) (\s@ModelPackageContainerDefinition' {} a -> s {nearestModelName = a} :: ModelPackageContainerDefinition) -- | The Amazon Web Services Marketplace product ID of the model package. modelPackageContainerDefinition_productId :: Lens.Lens' ModelPackageContainerDefinition (Prelude.Maybe Prelude.Text) modelPackageContainerDefinition_productId = Lens.lens (\ModelPackageContainerDefinition' {productId} -> productId) (\s@ModelPackageContainerDefinition' {} a -> s {productId = a} :: ModelPackageContainerDefinition) -- | The Amazon EC2 Container Registry (Amazon ECR) path where inference code -- is stored. -- -- If you are using your own custom algorithm instead of an algorithm -- provided by SageMaker, the inference code must meet SageMaker -- requirements. SageMaker supports both @registry\/repository[:tag]@ and -- @registry\/repository[\@digest]@ image path formats. For more -- information, see -- . modelPackageContainerDefinition_image :: Lens.Lens' ModelPackageContainerDefinition Prelude.Text modelPackageContainerDefinition_image = Lens.lens (\ModelPackageContainerDefinition' {image} -> image) (\s@ModelPackageContainerDefinition' {} a -> s {image = a} :: ModelPackageContainerDefinition) instance Data.FromJSON ModelPackageContainerDefinition where parseJSON = Data.withObject "ModelPackageContainerDefinition" ( \x -> ModelPackageContainerDefinition' Prelude.<$> (x Data..:? "ContainerHostname") Prelude.<*> (x Data..:? "Environment" Data..!= Prelude.mempty) Prelude.<*> (x Data..:? "Framework") Prelude.<*> (x Data..:? "FrameworkVersion") Prelude.<*> (x Data..:? "ImageDigest") Prelude.<*> (x Data..:? "ModelDataUrl") Prelude.<*> (x Data..:? "ModelInput") Prelude.<*> (x Data..:? "NearestModelName") Prelude.<*> (x Data..:? "ProductId") Prelude.<*> (x Data..: "Image") ) instance Prelude.Hashable ModelPackageContainerDefinition where hashWithSalt _salt ModelPackageContainerDefinition' {..} = _salt `Prelude.hashWithSalt` containerHostname `Prelude.hashWithSalt` environment `Prelude.hashWithSalt` framework `Prelude.hashWithSalt` frameworkVersion `Prelude.hashWithSalt` imageDigest `Prelude.hashWithSalt` modelDataUrl `Prelude.hashWithSalt` modelInput `Prelude.hashWithSalt` nearestModelName `Prelude.hashWithSalt` productId `Prelude.hashWithSalt` image instance Prelude.NFData ModelPackageContainerDefinition where rnf ModelPackageContainerDefinition' {..} = Prelude.rnf containerHostname `Prelude.seq` Prelude.rnf environment `Prelude.seq` Prelude.rnf framework `Prelude.seq` Prelude.rnf frameworkVersion `Prelude.seq` Prelude.rnf imageDigest `Prelude.seq` Prelude.rnf modelDataUrl `Prelude.seq` Prelude.rnf modelInput `Prelude.seq` Prelude.rnf nearestModelName `Prelude.seq` Prelude.rnf productId `Prelude.seq` Prelude.rnf image instance Data.ToJSON ModelPackageContainerDefinition where toJSON ModelPackageContainerDefinition' {..} = Data.object ( Prelude.catMaybes [ ("ContainerHostname" Data..=) Prelude.<$> containerHostname, ("Environment" Data..=) Prelude.<$> environment, ("Framework" Data..=) Prelude.<$> framework, ("FrameworkVersion" Data..=) Prelude.<$> frameworkVersion, ("ImageDigest" Data..=) Prelude.<$> imageDigest, ("ModelDataUrl" Data..=) Prelude.<$> modelDataUrl, ("ModelInput" Data..=) Prelude.<$> modelInput, ("NearestModelName" Data..=) Prelude.<$> nearestModelName, ("ProductId" Data..=) Prelude.<$> productId, Prelude.Just ("Image" Data..= image) ] )