{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE NoImplicitPrelude #-} {-# OPTIONS_GHC -fno-warn-unused-binds #-} {-# 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.CreateImageVersion -- Copyright : (c) 2013-2023 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Creates a version of the SageMaker image specified by @ImageName@. The -- version represents the Amazon Elastic Container Registry (ECR) container -- image specified by @BaseImage@. module Amazonka.SageMaker.CreateImageVersion ( -- * Creating a Request CreateImageVersion (..), newCreateImageVersion, -- * Request Lenses createImageVersion_aliases, createImageVersion_horovod, createImageVersion_jobType, createImageVersion_mLFramework, createImageVersion_processor, createImageVersion_programmingLang, createImageVersion_releaseNotes, createImageVersion_vendorGuidance, createImageVersion_baseImage, createImageVersion_clientToken, createImageVersion_imageName, -- * Destructuring the Response CreateImageVersionResponse (..), newCreateImageVersionResponse, -- * Response Lenses createImageVersionResponse_imageVersionArn, createImageVersionResponse_httpStatus, ) 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 qualified Amazonka.Request as Request import qualified Amazonka.Response as Response import Amazonka.SageMaker.Types -- | /See:/ 'newCreateImageVersion' smart constructor. data CreateImageVersion = CreateImageVersion' { -- | A list of aliases created with the image version. aliases :: Prelude.Maybe [Prelude.Text], -- | Indicates Horovod compatibility. horovod :: Prelude.Maybe Prelude.Bool, -- | Indicates SageMaker job type compatibility. -- -- - @TRAINING@: The image version is compatible with SageMaker training -- jobs. -- -- - @INFERENCE@: The image version is compatible with SageMaker -- inference jobs. -- -- - @NOTEBOOK_KERNEL@: The image version is compatible with SageMaker -- notebook kernels. jobType :: Prelude.Maybe JobType, -- | The machine learning framework vended in the image version. mLFramework :: Prelude.Maybe Prelude.Text, -- | Indicates CPU or GPU compatibility. -- -- - @CPU@: The image version is compatible with CPU. -- -- - @GPU@: The image version is compatible with GPU. processor :: Prelude.Maybe Processor, -- | The supported programming language and its version. programmingLang :: Prelude.Maybe Prelude.Text, -- | The maintainer description of the image version. releaseNotes :: Prelude.Maybe Prelude.Text, -- | The stability of the image version, specified by the maintainer. -- -- - @NOT_PROVIDED@: The maintainers did not provide a status for image -- version stability. -- -- - @STABLE@: The image version is stable. -- -- - @TO_BE_ARCHIVED@: The image version is set to be archived. Custom -- image versions that are set to be archived are automatically -- archived after three months. -- -- - @ARCHIVED@: The image version is archived. Archived image versions -- are not searchable and are no longer actively supported. vendorGuidance :: Prelude.Maybe VendorGuidance, -- | The registry path of the container image to use as the starting point -- for this version. The path is an Amazon Elastic Container Registry (ECR) -- URI in the following format: -- -- @\.dkr.ecr.\.amazonaws.com\/\@ baseImage :: Prelude.Text, -- | A unique ID. If not specified, the Amazon Web Services CLI and Amazon -- Web Services SDKs, such as the SDK for Python (Boto3), add a unique -- value to the call. clientToken :: Prelude.Text, -- | The @ImageName@ of the @Image@ to create a version of. imageName :: Prelude.Text } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'CreateImageVersion' 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: -- -- 'aliases', 'createImageVersion_aliases' - A list of aliases created with the image version. -- -- 'horovod', 'createImageVersion_horovod' - Indicates Horovod compatibility. -- -- 'jobType', 'createImageVersion_jobType' - Indicates SageMaker job type compatibility. -- -- - @TRAINING@: The image version is compatible with SageMaker training -- jobs. -- -- - @INFERENCE@: The image version is compatible with SageMaker -- inference jobs. -- -- - @NOTEBOOK_KERNEL@: The image version is compatible with SageMaker -- notebook kernels. -- -- 'mLFramework', 'createImageVersion_mLFramework' - The machine learning framework vended in the image version. -- -- 'processor', 'createImageVersion_processor' - Indicates CPU or GPU compatibility. -- -- - @CPU@: The image version is compatible with CPU. -- -- - @GPU@: The image version is compatible with GPU. -- -- 'programmingLang', 'createImageVersion_programmingLang' - The supported programming language and its version. -- -- 'releaseNotes', 'createImageVersion_releaseNotes' - The maintainer description of the image version. -- -- 'vendorGuidance', 'createImageVersion_vendorGuidance' - The stability of the image version, specified by the maintainer. -- -- - @NOT_PROVIDED@: The maintainers did not provide a status for image -- version stability. -- -- - @STABLE@: The image version is stable. -- -- - @TO_BE_ARCHIVED@: The image version is set to be archived. Custom -- image versions that are set to be archived are automatically -- archived after three months. -- -- - @ARCHIVED@: The image version is archived. Archived image versions -- are not searchable and are no longer actively supported. -- -- 'baseImage', 'createImageVersion_baseImage' - The registry path of the container image to use as the starting point -- for this version. The path is an Amazon Elastic Container Registry (ECR) -- URI in the following format: -- -- @\.dkr.ecr.\.amazonaws.com\/\@ -- -- 'clientToken', 'createImageVersion_clientToken' - A unique ID. If not specified, the Amazon Web Services CLI and Amazon -- Web Services SDKs, such as the SDK for Python (Boto3), add a unique -- value to the call. -- -- 'imageName', 'createImageVersion_imageName' - The @ImageName@ of the @Image@ to create a version of. newCreateImageVersion :: -- | 'baseImage' Prelude.Text -> -- | 'clientToken' Prelude.Text -> -- | 'imageName' Prelude.Text -> CreateImageVersion newCreateImageVersion pBaseImage_ pClientToken_ pImageName_ = CreateImageVersion' { aliases = Prelude.Nothing, horovod = Prelude.Nothing, jobType = Prelude.Nothing, mLFramework = Prelude.Nothing, processor = Prelude.Nothing, programmingLang = Prelude.Nothing, releaseNotes = Prelude.Nothing, vendorGuidance = Prelude.Nothing, baseImage = pBaseImage_, clientToken = pClientToken_, imageName = pImageName_ } -- | A list of aliases created with the image version. createImageVersion_aliases :: Lens.Lens' CreateImageVersion (Prelude.Maybe [Prelude.Text]) createImageVersion_aliases = Lens.lens (\CreateImageVersion' {aliases} -> aliases) (\s@CreateImageVersion' {} a -> s {aliases = a} :: CreateImageVersion) Prelude.. Lens.mapping Lens.coerced -- | Indicates Horovod compatibility. createImageVersion_horovod :: Lens.Lens' CreateImageVersion (Prelude.Maybe Prelude.Bool) createImageVersion_horovod = Lens.lens (\CreateImageVersion' {horovod} -> horovod) (\s@CreateImageVersion' {} a -> s {horovod = a} :: CreateImageVersion) -- | Indicates SageMaker job type compatibility. -- -- - @TRAINING@: The image version is compatible with SageMaker training -- jobs. -- -- - @INFERENCE@: The image version is compatible with SageMaker -- inference jobs. -- -- - @NOTEBOOK_KERNEL@: The image version is compatible with SageMaker -- notebook kernels. createImageVersion_jobType :: Lens.Lens' CreateImageVersion (Prelude.Maybe JobType) createImageVersion_jobType = Lens.lens (\CreateImageVersion' {jobType} -> jobType) (\s@CreateImageVersion' {} a -> s {jobType = a} :: CreateImageVersion) -- | The machine learning framework vended in the image version. createImageVersion_mLFramework :: Lens.Lens' CreateImageVersion (Prelude.Maybe Prelude.Text) createImageVersion_mLFramework = Lens.lens (\CreateImageVersion' {mLFramework} -> mLFramework) (\s@CreateImageVersion' {} a -> s {mLFramework = a} :: CreateImageVersion) -- | Indicates CPU or GPU compatibility. -- -- - @CPU@: The image version is compatible with CPU. -- -- - @GPU@: The image version is compatible with GPU. createImageVersion_processor :: Lens.Lens' CreateImageVersion (Prelude.Maybe Processor) createImageVersion_processor = Lens.lens (\CreateImageVersion' {processor} -> processor) (\s@CreateImageVersion' {} a -> s {processor = a} :: CreateImageVersion) -- | The supported programming language and its version. createImageVersion_programmingLang :: Lens.Lens' CreateImageVersion (Prelude.Maybe Prelude.Text) createImageVersion_programmingLang = Lens.lens (\CreateImageVersion' {programmingLang} -> programmingLang) (\s@CreateImageVersion' {} a -> s {programmingLang = a} :: CreateImageVersion) -- | The maintainer description of the image version. createImageVersion_releaseNotes :: Lens.Lens' CreateImageVersion (Prelude.Maybe Prelude.Text) createImageVersion_releaseNotes = Lens.lens (\CreateImageVersion' {releaseNotes} -> releaseNotes) (\s@CreateImageVersion' {} a -> s {releaseNotes = a} :: CreateImageVersion) -- | The stability of the image version, specified by the maintainer. -- -- - @NOT_PROVIDED@: The maintainers did not provide a status for image -- version stability. -- -- - @STABLE@: The image version is stable. -- -- - @TO_BE_ARCHIVED@: The image version is set to be archived. Custom -- image versions that are set to be archived are automatically -- archived after three months. -- -- - @ARCHIVED@: The image version is archived. Archived image versions -- are not searchable and are no longer actively supported. createImageVersion_vendorGuidance :: Lens.Lens' CreateImageVersion (Prelude.Maybe VendorGuidance) createImageVersion_vendorGuidance = Lens.lens (\CreateImageVersion' {vendorGuidance} -> vendorGuidance) (\s@CreateImageVersion' {} a -> s {vendorGuidance = a} :: CreateImageVersion) -- | The registry path of the container image to use as the starting point -- for this version. The path is an Amazon Elastic Container Registry (ECR) -- URI in the following format: -- -- @\.dkr.ecr.\.amazonaws.com\/\@ createImageVersion_baseImage :: Lens.Lens' CreateImageVersion Prelude.Text createImageVersion_baseImage = Lens.lens (\CreateImageVersion' {baseImage} -> baseImage) (\s@CreateImageVersion' {} a -> s {baseImage = a} :: CreateImageVersion) -- | A unique ID. If not specified, the Amazon Web Services CLI and Amazon -- Web Services SDKs, such as the SDK for Python (Boto3), add a unique -- value to the call. createImageVersion_clientToken :: Lens.Lens' CreateImageVersion Prelude.Text createImageVersion_clientToken = Lens.lens (\CreateImageVersion' {clientToken} -> clientToken) (\s@CreateImageVersion' {} a -> s {clientToken = a} :: CreateImageVersion) -- | The @ImageName@ of the @Image@ to create a version of. createImageVersion_imageName :: Lens.Lens' CreateImageVersion Prelude.Text createImageVersion_imageName = Lens.lens (\CreateImageVersion' {imageName} -> imageName) (\s@CreateImageVersion' {} a -> s {imageName = a} :: CreateImageVersion) instance Core.AWSRequest CreateImageVersion where type AWSResponse CreateImageVersion = CreateImageVersionResponse request overrides = Request.postJSON (overrides defaultService) response = Response.receiveJSON ( \s h x -> CreateImageVersionResponse' Prelude.<$> (x Data..?> "ImageVersionArn") Prelude.<*> (Prelude.pure (Prelude.fromEnum s)) ) instance Prelude.Hashable CreateImageVersion where hashWithSalt _salt CreateImageVersion' {..} = _salt `Prelude.hashWithSalt` aliases `Prelude.hashWithSalt` horovod `Prelude.hashWithSalt` jobType `Prelude.hashWithSalt` mLFramework `Prelude.hashWithSalt` processor `Prelude.hashWithSalt` programmingLang `Prelude.hashWithSalt` releaseNotes `Prelude.hashWithSalt` vendorGuidance `Prelude.hashWithSalt` baseImage `Prelude.hashWithSalt` clientToken `Prelude.hashWithSalt` imageName instance Prelude.NFData CreateImageVersion where rnf CreateImageVersion' {..} = Prelude.rnf aliases `Prelude.seq` Prelude.rnf horovod `Prelude.seq` Prelude.rnf jobType `Prelude.seq` Prelude.rnf mLFramework `Prelude.seq` Prelude.rnf processor `Prelude.seq` Prelude.rnf programmingLang `Prelude.seq` Prelude.rnf releaseNotes `Prelude.seq` Prelude.rnf vendorGuidance `Prelude.seq` Prelude.rnf baseImage `Prelude.seq` Prelude.rnf clientToken `Prelude.seq` Prelude.rnf imageName instance Data.ToHeaders CreateImageVersion where toHeaders = Prelude.const ( Prelude.mconcat [ "X-Amz-Target" Data.=# ( "SageMaker.CreateImageVersion" :: Prelude.ByteString ), "Content-Type" Data.=# ( "application/x-amz-json-1.1" :: Prelude.ByteString ) ] ) instance Data.ToJSON CreateImageVersion where toJSON CreateImageVersion' {..} = Data.object ( Prelude.catMaybes [ ("Aliases" Data..=) Prelude.<$> aliases, ("Horovod" Data..=) Prelude.<$> horovod, ("JobType" Data..=) Prelude.<$> jobType, ("MLFramework" Data..=) Prelude.<$> mLFramework, ("Processor" Data..=) Prelude.<$> processor, ("ProgrammingLang" Data..=) Prelude.<$> programmingLang, ("ReleaseNotes" Data..=) Prelude.<$> releaseNotes, ("VendorGuidance" Data..=) Prelude.<$> vendorGuidance, Prelude.Just ("BaseImage" Data..= baseImage), Prelude.Just ("ClientToken" Data..= clientToken), Prelude.Just ("ImageName" Data..= imageName) ] ) instance Data.ToPath CreateImageVersion where toPath = Prelude.const "/" instance Data.ToQuery CreateImageVersion where toQuery = Prelude.const Prelude.mempty -- | /See:/ 'newCreateImageVersionResponse' smart constructor. data CreateImageVersionResponse = CreateImageVersionResponse' { -- | The ARN of the image version. imageVersionArn :: Prelude.Maybe Prelude.Text, -- | The response's http status code. httpStatus :: Prelude.Int } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'CreateImageVersionResponse' 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: -- -- 'imageVersionArn', 'createImageVersionResponse_imageVersionArn' - The ARN of the image version. -- -- 'httpStatus', 'createImageVersionResponse_httpStatus' - The response's http status code. newCreateImageVersionResponse :: -- | 'httpStatus' Prelude.Int -> CreateImageVersionResponse newCreateImageVersionResponse pHttpStatus_ = CreateImageVersionResponse' { imageVersionArn = Prelude.Nothing, httpStatus = pHttpStatus_ } -- | The ARN of the image version. createImageVersionResponse_imageVersionArn :: Lens.Lens' CreateImageVersionResponse (Prelude.Maybe Prelude.Text) createImageVersionResponse_imageVersionArn = Lens.lens (\CreateImageVersionResponse' {imageVersionArn} -> imageVersionArn) (\s@CreateImageVersionResponse' {} a -> s {imageVersionArn = a} :: CreateImageVersionResponse) -- | The response's http status code. createImageVersionResponse_httpStatus :: Lens.Lens' CreateImageVersionResponse Prelude.Int createImageVersionResponse_httpStatus = Lens.lens (\CreateImageVersionResponse' {httpStatus} -> httpStatus) (\s@CreateImageVersionResponse' {} a -> s {httpStatus = a} :: CreateImageVersionResponse) instance Prelude.NFData CreateImageVersionResponse where rnf CreateImageVersionResponse' {..} = Prelude.rnf imageVersionArn `Prelude.seq` Prelude.rnf httpStatus