{-# 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.TrainingJob
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.SageMaker.Types.TrainingJob where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import Amazonka.SageMaker.Types.AlgorithmSpecification
import Amazonka.SageMaker.Types.Channel
import Amazonka.SageMaker.Types.CheckpointConfig
import Amazonka.SageMaker.Types.DebugHookConfig
import Amazonka.SageMaker.Types.DebugRuleConfiguration
import Amazonka.SageMaker.Types.DebugRuleEvaluationStatus
import Amazonka.SageMaker.Types.ExperimentConfig
import Amazonka.SageMaker.Types.MetricData
import Amazonka.SageMaker.Types.ModelArtifacts
import Amazonka.SageMaker.Types.OutputDataConfig
import Amazonka.SageMaker.Types.ResourceConfig
import Amazonka.SageMaker.Types.RetryStrategy
import Amazonka.SageMaker.Types.SecondaryStatus
import Amazonka.SageMaker.Types.SecondaryStatusTransition
import Amazonka.SageMaker.Types.StoppingCondition
import Amazonka.SageMaker.Types.Tag
import Amazonka.SageMaker.Types.TensorBoardOutputConfig
import Amazonka.SageMaker.Types.TrainingJobStatus
import Amazonka.SageMaker.Types.VpcConfig

-- | Contains information about a training job.
--
-- /See:/ 'newTrainingJob' smart constructor.
data TrainingJob = TrainingJob'
  { -- | A timestamp that indicates when the training job was created.
    TrainingJob -> Maybe POSIX
creationTime :: Prelude.Maybe Core.POSIX,
    -- | The Amazon Resource Name (ARN) of the labeling job.
    TrainingJob -> Maybe Text
labelingJobArn :: Prelude.Maybe Prelude.Text,
    -- | If the training job failed, the reason it failed.
    TrainingJob -> Maybe Text
failureReason :: Prelude.Maybe Prelude.Text,
    -- | A history of all of the secondary statuses that the training job has
    -- transitioned through.
    TrainingJob -> Maybe [SecondaryStatusTransition]
secondaryStatusTransitions :: Prelude.Maybe [SecondaryStatusTransition],
    -- | Information about the Amazon S3 location that is configured for storing
    -- model artifacts.
    TrainingJob -> Maybe ModelArtifacts
modelArtifacts :: Prelude.Maybe ModelArtifacts,
    -- | Indicates the time when the training job ends on training instances. You
    -- are billed for the time interval between the value of
    -- @TrainingStartTime@ and this time. For successful jobs and stopped jobs,
    -- this is the time after model artifacts are uploaded. For failed jobs,
    -- this is the time when Amazon SageMaker detects a job failure.
    TrainingJob -> Maybe POSIX
trainingEndTime :: Prelude.Maybe Core.POSIX,
    -- | The environment variables to set in the Docker container.
    TrainingJob -> Maybe (HashMap Text Text)
environment :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The billable time in seconds.
    TrainingJob -> Maybe Natural
billableTimeInSeconds :: Prelude.Maybe Prelude.Natural,
    TrainingJob -> Maybe DebugHookConfig
debugHookConfig :: Prelude.Maybe DebugHookConfig,
    TrainingJob -> Maybe CheckpointConfig
checkpointConfig :: Prelude.Maybe CheckpointConfig,
    -- | The number of times to retry the job when the job fails due to an
    -- @InternalServerError@.
    TrainingJob -> Maybe RetryStrategy
retryStrategy :: Prelude.Maybe RetryStrategy,
    -- | Specifies a limit to how long a model training job can run. It also
    -- specifies how long a managed Spot training job has to complete. When the
    -- job reaches the time limit, Amazon SageMaker ends the training job. Use
    -- this API to cap model training costs.
    --
    -- To stop a job, Amazon SageMaker sends the algorithm the @SIGTERM@
    -- signal, which delays job termination for 120 seconds. Algorithms can use
    -- this 120-second window to save the model artifacts, so the results of
    -- training are not lost.
    TrainingJob -> Maybe StoppingCondition
stoppingCondition :: Prelude.Maybe StoppingCondition,
    -- | Information about the evaluation status of the rules for the training
    -- job.
    TrainingJob -> Maybe [DebugRuleEvaluationStatus]
debugRuleEvaluationStatuses :: Prelude.Maybe [DebugRuleEvaluationStatus],
    -- | The status of the training job.
    --
    -- Training job statuses are:
    --
    -- -   @InProgress@ - The training is in progress.
    --
    -- -   @Completed@ - The training job has completed.
    --
    -- -   @Failed@ - The training job has failed. To see the reason for the
    --     failure, see the @FailureReason@ field in the response to a
    --     @DescribeTrainingJobResponse@ call.
    --
    -- -   @Stopping@ - The training job is stopping.
    --
    -- -   @Stopped@ - The training job has stopped.
    --
    -- For more detailed information, see @SecondaryStatus@.
    TrainingJob -> Maybe TrainingJobStatus
trainingJobStatus :: Prelude.Maybe TrainingJobStatus,
    -- | If the @TrainingJob@ was created with network isolation, the value is
    -- set to @true@. If network isolation is enabled, nodes can\'t communicate
    -- beyond the VPC they run in.
    TrainingJob -> Maybe Bool
enableNetworkIsolation :: Prelude.Maybe Prelude.Bool,
    TrainingJob -> Maybe ExperimentConfig
experimentConfig :: Prelude.Maybe ExperimentConfig,
    -- | A timestamp that indicates when the status of the training job was last
    -- modified.
    TrainingJob -> Maybe POSIX
lastModifiedTime :: Prelude.Maybe Core.POSIX,
    -- | Information about the debug rule configuration.
    TrainingJob -> Maybe [DebugRuleConfiguration]
debugRuleConfigurations :: Prelude.Maybe [DebugRuleConfiguration],
    -- | When true, enables managed spot training using Amazon EC2 Spot instances
    -- to run training jobs instead of on-demand instances. For more
    -- information, see
    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-managed-spot-training.html Managed Spot Training>.
    TrainingJob -> Maybe Bool
enableManagedSpotTraining :: Prelude.Maybe Prelude.Bool,
    -- | The Amazon Resource Name (ARN) of the job.
    TrainingJob -> Maybe Text
autoMLJobArn :: Prelude.Maybe Prelude.Text,
    -- | Algorithm-specific parameters.
    TrainingJob -> Maybe (HashMap Text Text)
hyperParameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | An array of @Channel@ objects that describes each data input channel.
    TrainingJob -> Maybe (NonEmpty Channel)
inputDataConfig :: Prelude.Maybe (Prelude.NonEmpty Channel),
    -- | A VpcConfig object that specifies the VPC that this training job has
    -- access to. For more information, see
    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/train-vpc.html Protect Training Jobs by Using an Amazon Virtual Private Cloud>.
    TrainingJob -> Maybe VpcConfig
vpcConfig :: Prelude.Maybe VpcConfig,
    -- | The Amazon Resource Name (ARN) of the training job.
    TrainingJob -> Maybe Text
trainingJobArn :: Prelude.Maybe Prelude.Text,
    -- | Information about the algorithm used for training, and algorithm
    -- metadata.
    TrainingJob -> Maybe AlgorithmSpecification
algorithmSpecification :: Prelude.Maybe AlgorithmSpecification,
    -- | A list of final metric values that are set when the training job
    -- completes. Used only if the training job was configured to use metrics.
    TrainingJob -> Maybe [MetricData]
finalMetricDataList :: Prelude.Maybe [MetricData],
    -- | The S3 path where model artifacts that you configured when creating the
    -- job are stored. Amazon SageMaker creates subfolders for model artifacts.
    TrainingJob -> Maybe OutputDataConfig
outputDataConfig :: Prelude.Maybe OutputDataConfig,
    -- | Indicates the time when the training job starts on training instances.
    -- You are billed for the time interval between this time and the value of
    -- @TrainingEndTime@. The start time in CloudWatch Logs might be later than
    -- this time. The difference is due to the time it takes to download the
    -- training data and to the size of the training container.
    TrainingJob -> Maybe POSIX
trainingStartTime :: Prelude.Maybe Core.POSIX,
    -- | The Amazon Resource Name (ARN) of the associated hyperparameter tuning
    -- job if the training job was launched by a hyperparameter tuning job.
    TrainingJob -> Maybe Text
tuningJobArn :: Prelude.Maybe Prelude.Text,
    -- | The name of the training job.
    TrainingJob -> Maybe Text
trainingJobName :: Prelude.Maybe Prelude.Text,
    -- | Resources, including ML compute instances and ML storage volumes, that
    -- are configured for model training.
    TrainingJob -> Maybe ResourceConfig
resourceConfig :: Prelude.Maybe ResourceConfig,
    -- | To encrypt all communications between ML compute instances in
    -- distributed training, choose @True@. Encryption provides greater
    -- security for distributed training, but training might take longer. How
    -- long it takes depends on the amount of communication between compute
    -- instances, especially if you use a deep learning algorithm in
    -- distributed training.
    TrainingJob -> Maybe Bool
enableInterContainerTrafficEncryption :: Prelude.Maybe Prelude.Bool,
    TrainingJob -> Maybe TensorBoardOutputConfig
tensorBoardOutputConfig :: Prelude.Maybe TensorBoardOutputConfig,
    -- | Provides detailed information about the state of the training job. For
    -- detailed information about the secondary status of the training job, see
    -- @StatusMessage@ under SecondaryStatusTransition.
    --
    -- Amazon SageMaker provides primary statuses and secondary statuses that
    -- apply to each of them:
    --
    -- [InProgress]
    --     -   @Starting@ - Starting the training job.
    --
    --     -   @Downloading@ - An optional stage for algorithms that support
    --         @File@ training input mode. It indicates that data is being
    --         downloaded to the ML storage volumes.
    --
    --     -   @Training@ - Training is in progress.
    --
    --     -   @Uploading@ - Training is complete and the model artifacts are
    --         being uploaded to the S3 location.
    --
    -- [Completed]
    --     -   @Completed@ - The training job has completed.
    --
    -- [Failed]
    --     -   @Failed@ - The training job has failed. The reason for the
    --         failure is returned in the @FailureReason@ field of
    --         @DescribeTrainingJobResponse@.
    --
    -- [Stopped]
    --     -   @MaxRuntimeExceeded@ - The job stopped because it exceeded the
    --         maximum allowed runtime.
    --
    --     -   @Stopped@ - The training job has stopped.
    --
    -- [Stopping]
    --     -   @Stopping@ - Stopping the training job.
    --
    -- Valid values for @SecondaryStatus@ are subject to change.
    --
    -- We no longer support the following secondary statuses:
    --
    -- -   @LaunchingMLInstances@
    --
    -- -   @PreparingTrainingStack@
    --
    -- -   @DownloadingTrainingImage@
    TrainingJob -> Maybe SecondaryStatus
secondaryStatus :: Prelude.Maybe SecondaryStatus,
    -- | 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
    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
    TrainingJob -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
    -- | The training time in seconds.
    TrainingJob -> Maybe Natural
trainingTimeInSeconds :: Prelude.Maybe Prelude.Natural,
    -- | The Amazon Web Services Identity and Access Management (IAM) role
    -- configured for the training job.
    TrainingJob -> Maybe Text
roleArn :: Prelude.Maybe Prelude.Text
  }
  deriving (TrainingJob -> TrainingJob -> Bool
(TrainingJob -> TrainingJob -> Bool)
-> (TrainingJob -> TrainingJob -> Bool) -> Eq TrainingJob
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TrainingJob -> TrainingJob -> Bool
$c/= :: TrainingJob -> TrainingJob -> Bool
== :: TrainingJob -> TrainingJob -> Bool
$c== :: TrainingJob -> TrainingJob -> Bool
Prelude.Eq, ReadPrec [TrainingJob]
ReadPrec TrainingJob
Int -> ReadS TrainingJob
ReadS [TrainingJob]
(Int -> ReadS TrainingJob)
-> ReadS [TrainingJob]
-> ReadPrec TrainingJob
-> ReadPrec [TrainingJob]
-> Read TrainingJob
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [TrainingJob]
$creadListPrec :: ReadPrec [TrainingJob]
readPrec :: ReadPrec TrainingJob
$creadPrec :: ReadPrec TrainingJob
readList :: ReadS [TrainingJob]
$creadList :: ReadS [TrainingJob]
readsPrec :: Int -> ReadS TrainingJob
$creadsPrec :: Int -> ReadS TrainingJob
Prelude.Read, Int -> TrainingJob -> ShowS
[TrainingJob] -> ShowS
TrainingJob -> String
(Int -> TrainingJob -> ShowS)
-> (TrainingJob -> String)
-> ([TrainingJob] -> ShowS)
-> Show TrainingJob
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TrainingJob] -> ShowS
$cshowList :: [TrainingJob] -> ShowS
show :: TrainingJob -> String
$cshow :: TrainingJob -> String
showsPrec :: Int -> TrainingJob -> ShowS
$cshowsPrec :: Int -> TrainingJob -> ShowS
Prelude.Show, (forall x. TrainingJob -> Rep TrainingJob x)
-> (forall x. Rep TrainingJob x -> TrainingJob)
-> Generic TrainingJob
forall x. Rep TrainingJob x -> TrainingJob
forall x. TrainingJob -> Rep TrainingJob x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep TrainingJob x -> TrainingJob
$cfrom :: forall x. TrainingJob -> Rep TrainingJob x
Prelude.Generic)

-- |
-- Create a value of 'TrainingJob' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'creationTime', 'trainingJob_creationTime' - A timestamp that indicates when the training job was created.
--
-- 'labelingJobArn', 'trainingJob_labelingJobArn' - The Amazon Resource Name (ARN) of the labeling job.
--
-- 'failureReason', 'trainingJob_failureReason' - If the training job failed, the reason it failed.
--
-- 'secondaryStatusTransitions', 'trainingJob_secondaryStatusTransitions' - A history of all of the secondary statuses that the training job has
-- transitioned through.
--
-- 'modelArtifacts', 'trainingJob_modelArtifacts' - Information about the Amazon S3 location that is configured for storing
-- model artifacts.
--
-- 'trainingEndTime', 'trainingJob_trainingEndTime' - Indicates the time when the training job ends on training instances. You
-- are billed for the time interval between the value of
-- @TrainingStartTime@ and this time. For successful jobs and stopped jobs,
-- this is the time after model artifacts are uploaded. For failed jobs,
-- this is the time when Amazon SageMaker detects a job failure.
--
-- 'environment', 'trainingJob_environment' - The environment variables to set in the Docker container.
--
-- 'billableTimeInSeconds', 'trainingJob_billableTimeInSeconds' - The billable time in seconds.
--
-- 'debugHookConfig', 'trainingJob_debugHookConfig' - Undocumented member.
--
-- 'checkpointConfig', 'trainingJob_checkpointConfig' - Undocumented member.
--
-- 'retryStrategy', 'trainingJob_retryStrategy' - The number of times to retry the job when the job fails due to an
-- @InternalServerError@.
--
-- 'stoppingCondition', 'trainingJob_stoppingCondition' - Specifies a limit to how long a model training job can run. It also
-- specifies how long a managed Spot training job has to complete. When the
-- job reaches the time limit, Amazon SageMaker ends the training job. Use
-- this API to cap model training costs.
--
-- To stop a job, Amazon SageMaker sends the algorithm the @SIGTERM@
-- signal, which delays job termination for 120 seconds. Algorithms can use
-- this 120-second window to save the model artifacts, so the results of
-- training are not lost.
--
-- 'debugRuleEvaluationStatuses', 'trainingJob_debugRuleEvaluationStatuses' - Information about the evaluation status of the rules for the training
-- job.
--
-- 'trainingJobStatus', 'trainingJob_trainingJobStatus' - The status of the training job.
--
-- Training job statuses are:
--
-- -   @InProgress@ - The training is in progress.
--
-- -   @Completed@ - The training job has completed.
--
-- -   @Failed@ - The training job has failed. To see the reason for the
--     failure, see the @FailureReason@ field in the response to a
--     @DescribeTrainingJobResponse@ call.
--
-- -   @Stopping@ - The training job is stopping.
--
-- -   @Stopped@ - The training job has stopped.
--
-- For more detailed information, see @SecondaryStatus@.
--
-- 'enableNetworkIsolation', 'trainingJob_enableNetworkIsolation' - If the @TrainingJob@ was created with network isolation, the value is
-- set to @true@. If network isolation is enabled, nodes can\'t communicate
-- beyond the VPC they run in.
--
-- 'experimentConfig', 'trainingJob_experimentConfig' - Undocumented member.
--
-- 'lastModifiedTime', 'trainingJob_lastModifiedTime' - A timestamp that indicates when the status of the training job was last
-- modified.
--
-- 'debugRuleConfigurations', 'trainingJob_debugRuleConfigurations' - Information about the debug rule configuration.
--
-- 'enableManagedSpotTraining', 'trainingJob_enableManagedSpotTraining' - When true, enables managed spot training using Amazon EC2 Spot instances
-- to run training jobs instead of on-demand instances. For more
-- information, see
-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-managed-spot-training.html Managed Spot Training>.
--
-- 'autoMLJobArn', 'trainingJob_autoMLJobArn' - The Amazon Resource Name (ARN) of the job.
--
-- 'hyperParameters', 'trainingJob_hyperParameters' - Algorithm-specific parameters.
--
-- 'inputDataConfig', 'trainingJob_inputDataConfig' - An array of @Channel@ objects that describes each data input channel.
--
-- 'vpcConfig', 'trainingJob_vpcConfig' - A VpcConfig object that specifies the VPC that this training job has
-- access to. For more information, see
-- <https://docs.aws.amazon.com/sagemaker/latest/dg/train-vpc.html Protect Training Jobs by Using an Amazon Virtual Private Cloud>.
--
-- 'trainingJobArn', 'trainingJob_trainingJobArn' - The Amazon Resource Name (ARN) of the training job.
--
-- 'algorithmSpecification', 'trainingJob_algorithmSpecification' - Information about the algorithm used for training, and algorithm
-- metadata.
--
-- 'finalMetricDataList', 'trainingJob_finalMetricDataList' - A list of final metric values that are set when the training job
-- completes. Used only if the training job was configured to use metrics.
--
-- 'outputDataConfig', 'trainingJob_outputDataConfig' - The S3 path where model artifacts that you configured when creating the
-- job are stored. Amazon SageMaker creates subfolders for model artifacts.
--
-- 'trainingStartTime', 'trainingJob_trainingStartTime' - Indicates the time when the training job starts on training instances.
-- You are billed for the time interval between this time and the value of
-- @TrainingEndTime@. The start time in CloudWatch Logs might be later than
-- this time. The difference is due to the time it takes to download the
-- training data and to the size of the training container.
--
-- 'tuningJobArn', 'trainingJob_tuningJobArn' - The Amazon Resource Name (ARN) of the associated hyperparameter tuning
-- job if the training job was launched by a hyperparameter tuning job.
--
-- 'trainingJobName', 'trainingJob_trainingJobName' - The name of the training job.
--
-- 'resourceConfig', 'trainingJob_resourceConfig' - Resources, including ML compute instances and ML storage volumes, that
-- are configured for model training.
--
-- 'enableInterContainerTrafficEncryption', 'trainingJob_enableInterContainerTrafficEncryption' - To encrypt all communications between ML compute instances in
-- distributed training, choose @True@. Encryption provides greater
-- security for distributed training, but training might take longer. How
-- long it takes depends on the amount of communication between compute
-- instances, especially if you use a deep learning algorithm in
-- distributed training.
--
-- 'tensorBoardOutputConfig', 'trainingJob_tensorBoardOutputConfig' - Undocumented member.
--
-- 'secondaryStatus', 'trainingJob_secondaryStatus' - Provides detailed information about the state of the training job. For
-- detailed information about the secondary status of the training job, see
-- @StatusMessage@ under SecondaryStatusTransition.
--
-- Amazon SageMaker provides primary statuses and secondary statuses that
-- apply to each of them:
--
-- [InProgress]
--     -   @Starting@ - Starting the training job.
--
--     -   @Downloading@ - An optional stage for algorithms that support
--         @File@ training input mode. It indicates that data is being
--         downloaded to the ML storage volumes.
--
--     -   @Training@ - Training is in progress.
--
--     -   @Uploading@ - Training is complete and the model artifacts are
--         being uploaded to the S3 location.
--
-- [Completed]
--     -   @Completed@ - The training job has completed.
--
-- [Failed]
--     -   @Failed@ - The training job has failed. The reason for the
--         failure is returned in the @FailureReason@ field of
--         @DescribeTrainingJobResponse@.
--
-- [Stopped]
--     -   @MaxRuntimeExceeded@ - The job stopped because it exceeded the
--         maximum allowed runtime.
--
--     -   @Stopped@ - The training job has stopped.
--
-- [Stopping]
--     -   @Stopping@ - Stopping the training job.
--
-- Valid values for @SecondaryStatus@ are subject to change.
--
-- We no longer support the following secondary statuses:
--
-- -   @LaunchingMLInstances@
--
-- -   @PreparingTrainingStack@
--
-- -   @DownloadingTrainingImage@
--
-- 'tags', 'trainingJob_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
-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
--
-- 'trainingTimeInSeconds', 'trainingJob_trainingTimeInSeconds' - The training time in seconds.
--
-- 'roleArn', 'trainingJob_roleArn' - The Amazon Web Services Identity and Access Management (IAM) role
-- configured for the training job.
newTrainingJob ::
  TrainingJob
newTrainingJob :: TrainingJob
newTrainingJob =
  TrainingJob' :: Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe [SecondaryStatusTransition]
-> Maybe ModelArtifacts
-> Maybe POSIX
-> Maybe (HashMap Text Text)
-> Maybe Natural
-> Maybe DebugHookConfig
-> Maybe CheckpointConfig
-> Maybe RetryStrategy
-> Maybe StoppingCondition
-> Maybe [DebugRuleEvaluationStatus]
-> Maybe TrainingJobStatus
-> Maybe Bool
-> Maybe ExperimentConfig
-> Maybe POSIX
-> Maybe [DebugRuleConfiguration]
-> Maybe Bool
-> Maybe Text
-> Maybe (HashMap Text Text)
-> Maybe (NonEmpty Channel)
-> Maybe VpcConfig
-> Maybe Text
-> Maybe AlgorithmSpecification
-> Maybe [MetricData]
-> Maybe OutputDataConfig
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe ResourceConfig
-> Maybe Bool
-> Maybe TensorBoardOutputConfig
-> Maybe SecondaryStatus
-> Maybe [Tag]
-> Maybe Natural
-> Maybe Text
-> TrainingJob
TrainingJob'
    { $sel:creationTime:TrainingJob' :: Maybe POSIX
creationTime = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:labelingJobArn:TrainingJob' :: Maybe Text
labelingJobArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:failureReason:TrainingJob' :: Maybe Text
failureReason = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:secondaryStatusTransitions:TrainingJob' :: Maybe [SecondaryStatusTransition]
secondaryStatusTransitions = Maybe [SecondaryStatusTransition]
forall a. Maybe a
Prelude.Nothing,
      $sel:modelArtifacts:TrainingJob' :: Maybe ModelArtifacts
modelArtifacts = Maybe ModelArtifacts
forall a. Maybe a
Prelude.Nothing,
      $sel:trainingEndTime:TrainingJob' :: Maybe POSIX
trainingEndTime = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:environment:TrainingJob' :: Maybe (HashMap Text Text)
environment = Maybe (HashMap Text Text)
forall a. Maybe a
Prelude.Nothing,
      $sel:billableTimeInSeconds:TrainingJob' :: Maybe Natural
billableTimeInSeconds = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:debugHookConfig:TrainingJob' :: Maybe DebugHookConfig
debugHookConfig = Maybe DebugHookConfig
forall a. Maybe a
Prelude.Nothing,
      $sel:checkpointConfig:TrainingJob' :: Maybe CheckpointConfig
checkpointConfig = Maybe CheckpointConfig
forall a. Maybe a
Prelude.Nothing,
      $sel:retryStrategy:TrainingJob' :: Maybe RetryStrategy
retryStrategy = Maybe RetryStrategy
forall a. Maybe a
Prelude.Nothing,
      $sel:stoppingCondition:TrainingJob' :: Maybe StoppingCondition
stoppingCondition = Maybe StoppingCondition
forall a. Maybe a
Prelude.Nothing,
      $sel:debugRuleEvaluationStatuses:TrainingJob' :: Maybe [DebugRuleEvaluationStatus]
debugRuleEvaluationStatuses = Maybe [DebugRuleEvaluationStatus]
forall a. Maybe a
Prelude.Nothing,
      $sel:trainingJobStatus:TrainingJob' :: Maybe TrainingJobStatus
trainingJobStatus = Maybe TrainingJobStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:enableNetworkIsolation:TrainingJob' :: Maybe Bool
enableNetworkIsolation = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:experimentConfig:TrainingJob' :: Maybe ExperimentConfig
experimentConfig = Maybe ExperimentConfig
forall a. Maybe a
Prelude.Nothing,
      $sel:lastModifiedTime:TrainingJob' :: Maybe POSIX
lastModifiedTime = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:debugRuleConfigurations:TrainingJob' :: Maybe [DebugRuleConfiguration]
debugRuleConfigurations = Maybe [DebugRuleConfiguration]
forall a. Maybe a
Prelude.Nothing,
      $sel:enableManagedSpotTraining:TrainingJob' :: Maybe Bool
enableManagedSpotTraining = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:autoMLJobArn:TrainingJob' :: Maybe Text
autoMLJobArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:hyperParameters:TrainingJob' :: Maybe (HashMap Text Text)
hyperParameters = Maybe (HashMap Text Text)
forall a. Maybe a
Prelude.Nothing,
      $sel:inputDataConfig:TrainingJob' :: Maybe (NonEmpty Channel)
inputDataConfig = Maybe (NonEmpty Channel)
forall a. Maybe a
Prelude.Nothing,
      $sel:vpcConfig:TrainingJob' :: Maybe VpcConfig
vpcConfig = Maybe VpcConfig
forall a. Maybe a
Prelude.Nothing,
      $sel:trainingJobArn:TrainingJob' :: Maybe Text
trainingJobArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:algorithmSpecification:TrainingJob' :: Maybe AlgorithmSpecification
algorithmSpecification = Maybe AlgorithmSpecification
forall a. Maybe a
Prelude.Nothing,
      $sel:finalMetricDataList:TrainingJob' :: Maybe [MetricData]
finalMetricDataList = Maybe [MetricData]
forall a. Maybe a
Prelude.Nothing,
      $sel:outputDataConfig:TrainingJob' :: Maybe OutputDataConfig
outputDataConfig = Maybe OutputDataConfig
forall a. Maybe a
Prelude.Nothing,
      $sel:trainingStartTime:TrainingJob' :: Maybe POSIX
trainingStartTime = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:tuningJobArn:TrainingJob' :: Maybe Text
tuningJobArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:trainingJobName:TrainingJob' :: Maybe Text
trainingJobName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:resourceConfig:TrainingJob' :: Maybe ResourceConfig
resourceConfig = Maybe ResourceConfig
forall a. Maybe a
Prelude.Nothing,
      $sel:enableInterContainerTrafficEncryption:TrainingJob' :: Maybe Bool
enableInterContainerTrafficEncryption =
        Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:tensorBoardOutputConfig:TrainingJob' :: Maybe TensorBoardOutputConfig
tensorBoardOutputConfig = Maybe TensorBoardOutputConfig
forall a. Maybe a
Prelude.Nothing,
      $sel:secondaryStatus:TrainingJob' :: Maybe SecondaryStatus
secondaryStatus = Maybe SecondaryStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:tags:TrainingJob' :: Maybe [Tag]
tags = Maybe [Tag]
forall a. Maybe a
Prelude.Nothing,
      $sel:trainingTimeInSeconds:TrainingJob' :: Maybe Natural
trainingTimeInSeconds = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:roleArn:TrainingJob' :: Maybe Text
roleArn = Maybe Text
forall a. Maybe a
Prelude.Nothing
    }

-- | A timestamp that indicates when the training job was created.
trainingJob_creationTime :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.UTCTime)
trainingJob_creationTime :: (Maybe UTCTime -> f (Maybe UTCTime))
-> TrainingJob -> f TrainingJob
trainingJob_creationTime = (TrainingJob -> Maybe POSIX)
-> (TrainingJob -> Maybe POSIX -> TrainingJob)
-> Lens TrainingJob TrainingJob (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe POSIX
creationTime :: Maybe POSIX
$sel:creationTime:TrainingJob' :: TrainingJob -> Maybe POSIX
creationTime} -> Maybe POSIX
creationTime) (\s :: TrainingJob
s@TrainingJob' {} Maybe POSIX
a -> TrainingJob
s {$sel:creationTime:TrainingJob' :: Maybe POSIX
creationTime = Maybe POSIX
a} :: TrainingJob) ((Maybe POSIX -> f (Maybe POSIX)) -> TrainingJob -> f TrainingJob)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> TrainingJob
-> f TrainingJob
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The Amazon Resource Name (ARN) of the labeling job.
trainingJob_labelingJobArn :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.Text)
trainingJob_labelingJobArn :: (Maybe Text -> f (Maybe Text)) -> TrainingJob -> f TrainingJob
trainingJob_labelingJobArn = (TrainingJob -> Maybe Text)
-> (TrainingJob -> Maybe Text -> TrainingJob)
-> Lens TrainingJob TrainingJob (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe Text
labelingJobArn :: Maybe Text
$sel:labelingJobArn:TrainingJob' :: TrainingJob -> Maybe Text
labelingJobArn} -> Maybe Text
labelingJobArn) (\s :: TrainingJob
s@TrainingJob' {} Maybe Text
a -> TrainingJob
s {$sel:labelingJobArn:TrainingJob' :: Maybe Text
labelingJobArn = Maybe Text
a} :: TrainingJob)

-- | If the training job failed, the reason it failed.
trainingJob_failureReason :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.Text)
trainingJob_failureReason :: (Maybe Text -> f (Maybe Text)) -> TrainingJob -> f TrainingJob
trainingJob_failureReason = (TrainingJob -> Maybe Text)
-> (TrainingJob -> Maybe Text -> TrainingJob)
-> Lens TrainingJob TrainingJob (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe Text
failureReason :: Maybe Text
$sel:failureReason:TrainingJob' :: TrainingJob -> Maybe Text
failureReason} -> Maybe Text
failureReason) (\s :: TrainingJob
s@TrainingJob' {} Maybe Text
a -> TrainingJob
s {$sel:failureReason:TrainingJob' :: Maybe Text
failureReason = Maybe Text
a} :: TrainingJob)

-- | A history of all of the secondary statuses that the training job has
-- transitioned through.
trainingJob_secondaryStatusTransitions :: Lens.Lens' TrainingJob (Prelude.Maybe [SecondaryStatusTransition])
trainingJob_secondaryStatusTransitions :: (Maybe [SecondaryStatusTransition]
 -> f (Maybe [SecondaryStatusTransition]))
-> TrainingJob -> f TrainingJob
trainingJob_secondaryStatusTransitions = (TrainingJob -> Maybe [SecondaryStatusTransition])
-> (TrainingJob
    -> Maybe [SecondaryStatusTransition] -> TrainingJob)
-> Lens
     TrainingJob
     TrainingJob
     (Maybe [SecondaryStatusTransition])
     (Maybe [SecondaryStatusTransition])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe [SecondaryStatusTransition]
secondaryStatusTransitions :: Maybe [SecondaryStatusTransition]
$sel:secondaryStatusTransitions:TrainingJob' :: TrainingJob -> Maybe [SecondaryStatusTransition]
secondaryStatusTransitions} -> Maybe [SecondaryStatusTransition]
secondaryStatusTransitions) (\s :: TrainingJob
s@TrainingJob' {} Maybe [SecondaryStatusTransition]
a -> TrainingJob
s {$sel:secondaryStatusTransitions:TrainingJob' :: Maybe [SecondaryStatusTransition]
secondaryStatusTransitions = Maybe [SecondaryStatusTransition]
a} :: TrainingJob) ((Maybe [SecondaryStatusTransition]
  -> f (Maybe [SecondaryStatusTransition]))
 -> TrainingJob -> f TrainingJob)
-> ((Maybe [SecondaryStatusTransition]
     -> f (Maybe [SecondaryStatusTransition]))
    -> Maybe [SecondaryStatusTransition]
    -> f (Maybe [SecondaryStatusTransition]))
-> (Maybe [SecondaryStatusTransition]
    -> f (Maybe [SecondaryStatusTransition]))
-> TrainingJob
-> f TrainingJob
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [SecondaryStatusTransition]
  [SecondaryStatusTransition]
  [SecondaryStatusTransition]
  [SecondaryStatusTransition]
-> Iso
     (Maybe [SecondaryStatusTransition])
     (Maybe [SecondaryStatusTransition])
     (Maybe [SecondaryStatusTransition])
     (Maybe [SecondaryStatusTransition])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso
  [SecondaryStatusTransition]
  [SecondaryStatusTransition]
  [SecondaryStatusTransition]
  [SecondaryStatusTransition]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Information about the Amazon S3 location that is configured for storing
-- model artifacts.
trainingJob_modelArtifacts :: Lens.Lens' TrainingJob (Prelude.Maybe ModelArtifacts)
trainingJob_modelArtifacts :: (Maybe ModelArtifacts -> f (Maybe ModelArtifacts))
-> TrainingJob -> f TrainingJob
trainingJob_modelArtifacts = (TrainingJob -> Maybe ModelArtifacts)
-> (TrainingJob -> Maybe ModelArtifacts -> TrainingJob)
-> Lens
     TrainingJob
     TrainingJob
     (Maybe ModelArtifacts)
     (Maybe ModelArtifacts)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe ModelArtifacts
modelArtifacts :: Maybe ModelArtifacts
$sel:modelArtifacts:TrainingJob' :: TrainingJob -> Maybe ModelArtifacts
modelArtifacts} -> Maybe ModelArtifacts
modelArtifacts) (\s :: TrainingJob
s@TrainingJob' {} Maybe ModelArtifacts
a -> TrainingJob
s {$sel:modelArtifacts:TrainingJob' :: Maybe ModelArtifacts
modelArtifacts = Maybe ModelArtifacts
a} :: TrainingJob)

-- | Indicates the time when the training job ends on training instances. You
-- are billed for the time interval between the value of
-- @TrainingStartTime@ and this time. For successful jobs and stopped jobs,
-- this is the time after model artifacts are uploaded. For failed jobs,
-- this is the time when Amazon SageMaker detects a job failure.
trainingJob_trainingEndTime :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.UTCTime)
trainingJob_trainingEndTime :: (Maybe UTCTime -> f (Maybe UTCTime))
-> TrainingJob -> f TrainingJob
trainingJob_trainingEndTime = (TrainingJob -> Maybe POSIX)
-> (TrainingJob -> Maybe POSIX -> TrainingJob)
-> Lens TrainingJob TrainingJob (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe POSIX
trainingEndTime :: Maybe POSIX
$sel:trainingEndTime:TrainingJob' :: TrainingJob -> Maybe POSIX
trainingEndTime} -> Maybe POSIX
trainingEndTime) (\s :: TrainingJob
s@TrainingJob' {} Maybe POSIX
a -> TrainingJob
s {$sel:trainingEndTime:TrainingJob' :: Maybe POSIX
trainingEndTime = Maybe POSIX
a} :: TrainingJob) ((Maybe POSIX -> f (Maybe POSIX)) -> TrainingJob -> f TrainingJob)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> TrainingJob
-> f TrainingJob
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The environment variables to set in the Docker container.
trainingJob_environment :: Lens.Lens' TrainingJob (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
trainingJob_environment :: (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> TrainingJob -> f TrainingJob
trainingJob_environment = (TrainingJob -> Maybe (HashMap Text Text))
-> (TrainingJob -> Maybe (HashMap Text Text) -> TrainingJob)
-> Lens
     TrainingJob
     TrainingJob
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe (HashMap Text Text)
environment :: Maybe (HashMap Text Text)
$sel:environment:TrainingJob' :: TrainingJob -> Maybe (HashMap Text Text)
environment} -> Maybe (HashMap Text Text)
environment) (\s :: TrainingJob
s@TrainingJob' {} Maybe (HashMap Text Text)
a -> TrainingJob
s {$sel:environment:TrainingJob' :: Maybe (HashMap Text Text)
environment = Maybe (HashMap Text Text)
a} :: TrainingJob) ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
 -> TrainingJob -> f TrainingJob)
-> ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
    -> Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> TrainingJob
-> f TrainingJob
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
-> Iso
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The billable time in seconds.
trainingJob_billableTimeInSeconds :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.Natural)
trainingJob_billableTimeInSeconds :: (Maybe Natural -> f (Maybe Natural))
-> TrainingJob -> f TrainingJob
trainingJob_billableTimeInSeconds = (TrainingJob -> Maybe Natural)
-> (TrainingJob -> Maybe Natural -> TrainingJob)
-> Lens TrainingJob TrainingJob (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe Natural
billableTimeInSeconds :: Maybe Natural
$sel:billableTimeInSeconds:TrainingJob' :: TrainingJob -> Maybe Natural
billableTimeInSeconds} -> Maybe Natural
billableTimeInSeconds) (\s :: TrainingJob
s@TrainingJob' {} Maybe Natural
a -> TrainingJob
s {$sel:billableTimeInSeconds:TrainingJob' :: Maybe Natural
billableTimeInSeconds = Maybe Natural
a} :: TrainingJob)

-- | Undocumented member.
trainingJob_debugHookConfig :: Lens.Lens' TrainingJob (Prelude.Maybe DebugHookConfig)
trainingJob_debugHookConfig :: (Maybe DebugHookConfig -> f (Maybe DebugHookConfig))
-> TrainingJob -> f TrainingJob
trainingJob_debugHookConfig = (TrainingJob -> Maybe DebugHookConfig)
-> (TrainingJob -> Maybe DebugHookConfig -> TrainingJob)
-> Lens
     TrainingJob
     TrainingJob
     (Maybe DebugHookConfig)
     (Maybe DebugHookConfig)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe DebugHookConfig
debugHookConfig :: Maybe DebugHookConfig
$sel:debugHookConfig:TrainingJob' :: TrainingJob -> Maybe DebugHookConfig
debugHookConfig} -> Maybe DebugHookConfig
debugHookConfig) (\s :: TrainingJob
s@TrainingJob' {} Maybe DebugHookConfig
a -> TrainingJob
s {$sel:debugHookConfig:TrainingJob' :: Maybe DebugHookConfig
debugHookConfig = Maybe DebugHookConfig
a} :: TrainingJob)

-- | Undocumented member.
trainingJob_checkpointConfig :: Lens.Lens' TrainingJob (Prelude.Maybe CheckpointConfig)
trainingJob_checkpointConfig :: (Maybe CheckpointConfig -> f (Maybe CheckpointConfig))
-> TrainingJob -> f TrainingJob
trainingJob_checkpointConfig = (TrainingJob -> Maybe CheckpointConfig)
-> (TrainingJob -> Maybe CheckpointConfig -> TrainingJob)
-> Lens
     TrainingJob
     TrainingJob
     (Maybe CheckpointConfig)
     (Maybe CheckpointConfig)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe CheckpointConfig
checkpointConfig :: Maybe CheckpointConfig
$sel:checkpointConfig:TrainingJob' :: TrainingJob -> Maybe CheckpointConfig
checkpointConfig} -> Maybe CheckpointConfig
checkpointConfig) (\s :: TrainingJob
s@TrainingJob' {} Maybe CheckpointConfig
a -> TrainingJob
s {$sel:checkpointConfig:TrainingJob' :: Maybe CheckpointConfig
checkpointConfig = Maybe CheckpointConfig
a} :: TrainingJob)

-- | The number of times to retry the job when the job fails due to an
-- @InternalServerError@.
trainingJob_retryStrategy :: Lens.Lens' TrainingJob (Prelude.Maybe RetryStrategy)
trainingJob_retryStrategy :: (Maybe RetryStrategy -> f (Maybe RetryStrategy))
-> TrainingJob -> f TrainingJob
trainingJob_retryStrategy = (TrainingJob -> Maybe RetryStrategy)
-> (TrainingJob -> Maybe RetryStrategy -> TrainingJob)
-> Lens
     TrainingJob TrainingJob (Maybe RetryStrategy) (Maybe RetryStrategy)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe RetryStrategy
retryStrategy :: Maybe RetryStrategy
$sel:retryStrategy:TrainingJob' :: TrainingJob -> Maybe RetryStrategy
retryStrategy} -> Maybe RetryStrategy
retryStrategy) (\s :: TrainingJob
s@TrainingJob' {} Maybe RetryStrategy
a -> TrainingJob
s {$sel:retryStrategy:TrainingJob' :: Maybe RetryStrategy
retryStrategy = Maybe RetryStrategy
a} :: TrainingJob)

-- | Specifies a limit to how long a model training job can run. It also
-- specifies how long a managed Spot training job has to complete. When the
-- job reaches the time limit, Amazon SageMaker ends the training job. Use
-- this API to cap model training costs.
--
-- To stop a job, Amazon SageMaker sends the algorithm the @SIGTERM@
-- signal, which delays job termination for 120 seconds. Algorithms can use
-- this 120-second window to save the model artifacts, so the results of
-- training are not lost.
trainingJob_stoppingCondition :: Lens.Lens' TrainingJob (Prelude.Maybe StoppingCondition)
trainingJob_stoppingCondition :: (Maybe StoppingCondition -> f (Maybe StoppingCondition))
-> TrainingJob -> f TrainingJob
trainingJob_stoppingCondition = (TrainingJob -> Maybe StoppingCondition)
-> (TrainingJob -> Maybe StoppingCondition -> TrainingJob)
-> Lens
     TrainingJob
     TrainingJob
     (Maybe StoppingCondition)
     (Maybe StoppingCondition)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe StoppingCondition
stoppingCondition :: Maybe StoppingCondition
$sel:stoppingCondition:TrainingJob' :: TrainingJob -> Maybe StoppingCondition
stoppingCondition} -> Maybe StoppingCondition
stoppingCondition) (\s :: TrainingJob
s@TrainingJob' {} Maybe StoppingCondition
a -> TrainingJob
s {$sel:stoppingCondition:TrainingJob' :: Maybe StoppingCondition
stoppingCondition = Maybe StoppingCondition
a} :: TrainingJob)

-- | Information about the evaluation status of the rules for the training
-- job.
trainingJob_debugRuleEvaluationStatuses :: Lens.Lens' TrainingJob (Prelude.Maybe [DebugRuleEvaluationStatus])
trainingJob_debugRuleEvaluationStatuses :: (Maybe [DebugRuleEvaluationStatus]
 -> f (Maybe [DebugRuleEvaluationStatus]))
-> TrainingJob -> f TrainingJob
trainingJob_debugRuleEvaluationStatuses = (TrainingJob -> Maybe [DebugRuleEvaluationStatus])
-> (TrainingJob
    -> Maybe [DebugRuleEvaluationStatus] -> TrainingJob)
-> Lens
     TrainingJob
     TrainingJob
     (Maybe [DebugRuleEvaluationStatus])
     (Maybe [DebugRuleEvaluationStatus])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe [DebugRuleEvaluationStatus]
debugRuleEvaluationStatuses :: Maybe [DebugRuleEvaluationStatus]
$sel:debugRuleEvaluationStatuses:TrainingJob' :: TrainingJob -> Maybe [DebugRuleEvaluationStatus]
debugRuleEvaluationStatuses} -> Maybe [DebugRuleEvaluationStatus]
debugRuleEvaluationStatuses) (\s :: TrainingJob
s@TrainingJob' {} Maybe [DebugRuleEvaluationStatus]
a -> TrainingJob
s {$sel:debugRuleEvaluationStatuses:TrainingJob' :: Maybe [DebugRuleEvaluationStatus]
debugRuleEvaluationStatuses = Maybe [DebugRuleEvaluationStatus]
a} :: TrainingJob) ((Maybe [DebugRuleEvaluationStatus]
  -> f (Maybe [DebugRuleEvaluationStatus]))
 -> TrainingJob -> f TrainingJob)
-> ((Maybe [DebugRuleEvaluationStatus]
     -> f (Maybe [DebugRuleEvaluationStatus]))
    -> Maybe [DebugRuleEvaluationStatus]
    -> f (Maybe [DebugRuleEvaluationStatus]))
-> (Maybe [DebugRuleEvaluationStatus]
    -> f (Maybe [DebugRuleEvaluationStatus]))
-> TrainingJob
-> f TrainingJob
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [DebugRuleEvaluationStatus]
  [DebugRuleEvaluationStatus]
  [DebugRuleEvaluationStatus]
  [DebugRuleEvaluationStatus]
-> Iso
     (Maybe [DebugRuleEvaluationStatus])
     (Maybe [DebugRuleEvaluationStatus])
     (Maybe [DebugRuleEvaluationStatus])
     (Maybe [DebugRuleEvaluationStatus])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso
  [DebugRuleEvaluationStatus]
  [DebugRuleEvaluationStatus]
  [DebugRuleEvaluationStatus]
  [DebugRuleEvaluationStatus]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The status of the training job.
--
-- Training job statuses are:
--
-- -   @InProgress@ - The training is in progress.
--
-- -   @Completed@ - The training job has completed.
--
-- -   @Failed@ - The training job has failed. To see the reason for the
--     failure, see the @FailureReason@ field in the response to a
--     @DescribeTrainingJobResponse@ call.
--
-- -   @Stopping@ - The training job is stopping.
--
-- -   @Stopped@ - The training job has stopped.
--
-- For more detailed information, see @SecondaryStatus@.
trainingJob_trainingJobStatus :: Lens.Lens' TrainingJob (Prelude.Maybe TrainingJobStatus)
trainingJob_trainingJobStatus :: (Maybe TrainingJobStatus -> f (Maybe TrainingJobStatus))
-> TrainingJob -> f TrainingJob
trainingJob_trainingJobStatus = (TrainingJob -> Maybe TrainingJobStatus)
-> (TrainingJob -> Maybe TrainingJobStatus -> TrainingJob)
-> Lens
     TrainingJob
     TrainingJob
     (Maybe TrainingJobStatus)
     (Maybe TrainingJobStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe TrainingJobStatus
trainingJobStatus :: Maybe TrainingJobStatus
$sel:trainingJobStatus:TrainingJob' :: TrainingJob -> Maybe TrainingJobStatus
trainingJobStatus} -> Maybe TrainingJobStatus
trainingJobStatus) (\s :: TrainingJob
s@TrainingJob' {} Maybe TrainingJobStatus
a -> TrainingJob
s {$sel:trainingJobStatus:TrainingJob' :: Maybe TrainingJobStatus
trainingJobStatus = Maybe TrainingJobStatus
a} :: TrainingJob)

-- | If the @TrainingJob@ was created with network isolation, the value is
-- set to @true@. If network isolation is enabled, nodes can\'t communicate
-- beyond the VPC they run in.
trainingJob_enableNetworkIsolation :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.Bool)
trainingJob_enableNetworkIsolation :: (Maybe Bool -> f (Maybe Bool)) -> TrainingJob -> f TrainingJob
trainingJob_enableNetworkIsolation = (TrainingJob -> Maybe Bool)
-> (TrainingJob -> Maybe Bool -> TrainingJob)
-> Lens TrainingJob TrainingJob (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe Bool
enableNetworkIsolation :: Maybe Bool
$sel:enableNetworkIsolation:TrainingJob' :: TrainingJob -> Maybe Bool
enableNetworkIsolation} -> Maybe Bool
enableNetworkIsolation) (\s :: TrainingJob
s@TrainingJob' {} Maybe Bool
a -> TrainingJob
s {$sel:enableNetworkIsolation:TrainingJob' :: Maybe Bool
enableNetworkIsolation = Maybe Bool
a} :: TrainingJob)

-- | Undocumented member.
trainingJob_experimentConfig :: Lens.Lens' TrainingJob (Prelude.Maybe ExperimentConfig)
trainingJob_experimentConfig :: (Maybe ExperimentConfig -> f (Maybe ExperimentConfig))
-> TrainingJob -> f TrainingJob
trainingJob_experimentConfig = (TrainingJob -> Maybe ExperimentConfig)
-> (TrainingJob -> Maybe ExperimentConfig -> TrainingJob)
-> Lens
     TrainingJob
     TrainingJob
     (Maybe ExperimentConfig)
     (Maybe ExperimentConfig)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe ExperimentConfig
experimentConfig :: Maybe ExperimentConfig
$sel:experimentConfig:TrainingJob' :: TrainingJob -> Maybe ExperimentConfig
experimentConfig} -> Maybe ExperimentConfig
experimentConfig) (\s :: TrainingJob
s@TrainingJob' {} Maybe ExperimentConfig
a -> TrainingJob
s {$sel:experimentConfig:TrainingJob' :: Maybe ExperimentConfig
experimentConfig = Maybe ExperimentConfig
a} :: TrainingJob)

-- | A timestamp that indicates when the status of the training job was last
-- modified.
trainingJob_lastModifiedTime :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.UTCTime)
trainingJob_lastModifiedTime :: (Maybe UTCTime -> f (Maybe UTCTime))
-> TrainingJob -> f TrainingJob
trainingJob_lastModifiedTime = (TrainingJob -> Maybe POSIX)
-> (TrainingJob -> Maybe POSIX -> TrainingJob)
-> Lens TrainingJob TrainingJob (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe POSIX
lastModifiedTime :: Maybe POSIX
$sel:lastModifiedTime:TrainingJob' :: TrainingJob -> Maybe POSIX
lastModifiedTime} -> Maybe POSIX
lastModifiedTime) (\s :: TrainingJob
s@TrainingJob' {} Maybe POSIX
a -> TrainingJob
s {$sel:lastModifiedTime:TrainingJob' :: Maybe POSIX
lastModifiedTime = Maybe POSIX
a} :: TrainingJob) ((Maybe POSIX -> f (Maybe POSIX)) -> TrainingJob -> f TrainingJob)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> TrainingJob
-> f TrainingJob
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | Information about the debug rule configuration.
trainingJob_debugRuleConfigurations :: Lens.Lens' TrainingJob (Prelude.Maybe [DebugRuleConfiguration])
trainingJob_debugRuleConfigurations :: (Maybe [DebugRuleConfiguration]
 -> f (Maybe [DebugRuleConfiguration]))
-> TrainingJob -> f TrainingJob
trainingJob_debugRuleConfigurations = (TrainingJob -> Maybe [DebugRuleConfiguration])
-> (TrainingJob -> Maybe [DebugRuleConfiguration] -> TrainingJob)
-> Lens
     TrainingJob
     TrainingJob
     (Maybe [DebugRuleConfiguration])
     (Maybe [DebugRuleConfiguration])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe [DebugRuleConfiguration]
debugRuleConfigurations :: Maybe [DebugRuleConfiguration]
$sel:debugRuleConfigurations:TrainingJob' :: TrainingJob -> Maybe [DebugRuleConfiguration]
debugRuleConfigurations} -> Maybe [DebugRuleConfiguration]
debugRuleConfigurations) (\s :: TrainingJob
s@TrainingJob' {} Maybe [DebugRuleConfiguration]
a -> TrainingJob
s {$sel:debugRuleConfigurations:TrainingJob' :: Maybe [DebugRuleConfiguration]
debugRuleConfigurations = Maybe [DebugRuleConfiguration]
a} :: TrainingJob) ((Maybe [DebugRuleConfiguration]
  -> f (Maybe [DebugRuleConfiguration]))
 -> TrainingJob -> f TrainingJob)
-> ((Maybe [DebugRuleConfiguration]
     -> f (Maybe [DebugRuleConfiguration]))
    -> Maybe [DebugRuleConfiguration]
    -> f (Maybe [DebugRuleConfiguration]))
-> (Maybe [DebugRuleConfiguration]
    -> f (Maybe [DebugRuleConfiguration]))
-> TrainingJob
-> f TrainingJob
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [DebugRuleConfiguration]
  [DebugRuleConfiguration]
  [DebugRuleConfiguration]
  [DebugRuleConfiguration]
-> Iso
     (Maybe [DebugRuleConfiguration])
     (Maybe [DebugRuleConfiguration])
     (Maybe [DebugRuleConfiguration])
     (Maybe [DebugRuleConfiguration])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso
  [DebugRuleConfiguration]
  [DebugRuleConfiguration]
  [DebugRuleConfiguration]
  [DebugRuleConfiguration]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | When true, enables managed spot training using Amazon EC2 Spot instances
-- to run training jobs instead of on-demand instances. For more
-- information, see
-- <https://docs.aws.amazon.com/sagemaker/latest/dg/model-managed-spot-training.html Managed Spot Training>.
trainingJob_enableManagedSpotTraining :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.Bool)
trainingJob_enableManagedSpotTraining :: (Maybe Bool -> f (Maybe Bool)) -> TrainingJob -> f TrainingJob
trainingJob_enableManagedSpotTraining = (TrainingJob -> Maybe Bool)
-> (TrainingJob -> Maybe Bool -> TrainingJob)
-> Lens TrainingJob TrainingJob (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe Bool
enableManagedSpotTraining :: Maybe Bool
$sel:enableManagedSpotTraining:TrainingJob' :: TrainingJob -> Maybe Bool
enableManagedSpotTraining} -> Maybe Bool
enableManagedSpotTraining) (\s :: TrainingJob
s@TrainingJob' {} Maybe Bool
a -> TrainingJob
s {$sel:enableManagedSpotTraining:TrainingJob' :: Maybe Bool
enableManagedSpotTraining = Maybe Bool
a} :: TrainingJob)

-- | The Amazon Resource Name (ARN) of the job.
trainingJob_autoMLJobArn :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.Text)
trainingJob_autoMLJobArn :: (Maybe Text -> f (Maybe Text)) -> TrainingJob -> f TrainingJob
trainingJob_autoMLJobArn = (TrainingJob -> Maybe Text)
-> (TrainingJob -> Maybe Text -> TrainingJob)
-> Lens TrainingJob TrainingJob (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe Text
autoMLJobArn :: Maybe Text
$sel:autoMLJobArn:TrainingJob' :: TrainingJob -> Maybe Text
autoMLJobArn} -> Maybe Text
autoMLJobArn) (\s :: TrainingJob
s@TrainingJob' {} Maybe Text
a -> TrainingJob
s {$sel:autoMLJobArn:TrainingJob' :: Maybe Text
autoMLJobArn = Maybe Text
a} :: TrainingJob)

-- | Algorithm-specific parameters.
trainingJob_hyperParameters :: Lens.Lens' TrainingJob (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
trainingJob_hyperParameters :: (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> TrainingJob -> f TrainingJob
trainingJob_hyperParameters = (TrainingJob -> Maybe (HashMap Text Text))
-> (TrainingJob -> Maybe (HashMap Text Text) -> TrainingJob)
-> Lens
     TrainingJob
     TrainingJob
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe (HashMap Text Text)
hyperParameters :: Maybe (HashMap Text Text)
$sel:hyperParameters:TrainingJob' :: TrainingJob -> Maybe (HashMap Text Text)
hyperParameters} -> Maybe (HashMap Text Text)
hyperParameters) (\s :: TrainingJob
s@TrainingJob' {} Maybe (HashMap Text Text)
a -> TrainingJob
s {$sel:hyperParameters:TrainingJob' :: Maybe (HashMap Text Text)
hyperParameters = Maybe (HashMap Text Text)
a} :: TrainingJob) ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
 -> TrainingJob -> f TrainingJob)
-> ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
    -> Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> TrainingJob
-> f TrainingJob
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
-> Iso
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | An array of @Channel@ objects that describes each data input channel.
trainingJob_inputDataConfig :: Lens.Lens' TrainingJob (Prelude.Maybe (Prelude.NonEmpty Channel))
trainingJob_inputDataConfig :: (Maybe (NonEmpty Channel) -> f (Maybe (NonEmpty Channel)))
-> TrainingJob -> f TrainingJob
trainingJob_inputDataConfig = (TrainingJob -> Maybe (NonEmpty Channel))
-> (TrainingJob -> Maybe (NonEmpty Channel) -> TrainingJob)
-> Lens
     TrainingJob
     TrainingJob
     (Maybe (NonEmpty Channel))
     (Maybe (NonEmpty Channel))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe (NonEmpty Channel)
inputDataConfig :: Maybe (NonEmpty Channel)
$sel:inputDataConfig:TrainingJob' :: TrainingJob -> Maybe (NonEmpty Channel)
inputDataConfig} -> Maybe (NonEmpty Channel)
inputDataConfig) (\s :: TrainingJob
s@TrainingJob' {} Maybe (NonEmpty Channel)
a -> TrainingJob
s {$sel:inputDataConfig:TrainingJob' :: Maybe (NonEmpty Channel)
inputDataConfig = Maybe (NonEmpty Channel)
a} :: TrainingJob) ((Maybe (NonEmpty Channel) -> f (Maybe (NonEmpty Channel)))
 -> TrainingJob -> f TrainingJob)
-> ((Maybe (NonEmpty Channel) -> f (Maybe (NonEmpty Channel)))
    -> Maybe (NonEmpty Channel) -> f (Maybe (NonEmpty Channel)))
-> (Maybe (NonEmpty Channel) -> f (Maybe (NonEmpty Channel)))
-> TrainingJob
-> f TrainingJob
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (NonEmpty Channel)
  (NonEmpty Channel)
  (NonEmpty Channel)
  (NonEmpty Channel)
-> Iso
     (Maybe (NonEmpty Channel))
     (Maybe (NonEmpty Channel))
     (Maybe (NonEmpty Channel))
     (Maybe (NonEmpty Channel))
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso
  (NonEmpty Channel)
  (NonEmpty Channel)
  (NonEmpty Channel)
  (NonEmpty Channel)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A VpcConfig object that specifies the VPC that this training job has
-- access to. For more information, see
-- <https://docs.aws.amazon.com/sagemaker/latest/dg/train-vpc.html Protect Training Jobs by Using an Amazon Virtual Private Cloud>.
trainingJob_vpcConfig :: Lens.Lens' TrainingJob (Prelude.Maybe VpcConfig)
trainingJob_vpcConfig :: (Maybe VpcConfig -> f (Maybe VpcConfig))
-> TrainingJob -> f TrainingJob
trainingJob_vpcConfig = (TrainingJob -> Maybe VpcConfig)
-> (TrainingJob -> Maybe VpcConfig -> TrainingJob)
-> Lens TrainingJob TrainingJob (Maybe VpcConfig) (Maybe VpcConfig)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe VpcConfig
vpcConfig :: Maybe VpcConfig
$sel:vpcConfig:TrainingJob' :: TrainingJob -> Maybe VpcConfig
vpcConfig} -> Maybe VpcConfig
vpcConfig) (\s :: TrainingJob
s@TrainingJob' {} Maybe VpcConfig
a -> TrainingJob
s {$sel:vpcConfig:TrainingJob' :: Maybe VpcConfig
vpcConfig = Maybe VpcConfig
a} :: TrainingJob)

-- | The Amazon Resource Name (ARN) of the training job.
trainingJob_trainingJobArn :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.Text)
trainingJob_trainingJobArn :: (Maybe Text -> f (Maybe Text)) -> TrainingJob -> f TrainingJob
trainingJob_trainingJobArn = (TrainingJob -> Maybe Text)
-> (TrainingJob -> Maybe Text -> TrainingJob)
-> Lens TrainingJob TrainingJob (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe Text
trainingJobArn :: Maybe Text
$sel:trainingJobArn:TrainingJob' :: TrainingJob -> Maybe Text
trainingJobArn} -> Maybe Text
trainingJobArn) (\s :: TrainingJob
s@TrainingJob' {} Maybe Text
a -> TrainingJob
s {$sel:trainingJobArn:TrainingJob' :: Maybe Text
trainingJobArn = Maybe Text
a} :: TrainingJob)

-- | Information about the algorithm used for training, and algorithm
-- metadata.
trainingJob_algorithmSpecification :: Lens.Lens' TrainingJob (Prelude.Maybe AlgorithmSpecification)
trainingJob_algorithmSpecification :: (Maybe AlgorithmSpecification -> f (Maybe AlgorithmSpecification))
-> TrainingJob -> f TrainingJob
trainingJob_algorithmSpecification = (TrainingJob -> Maybe AlgorithmSpecification)
-> (TrainingJob -> Maybe AlgorithmSpecification -> TrainingJob)
-> Lens
     TrainingJob
     TrainingJob
     (Maybe AlgorithmSpecification)
     (Maybe AlgorithmSpecification)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe AlgorithmSpecification
algorithmSpecification :: Maybe AlgorithmSpecification
$sel:algorithmSpecification:TrainingJob' :: TrainingJob -> Maybe AlgorithmSpecification
algorithmSpecification} -> Maybe AlgorithmSpecification
algorithmSpecification) (\s :: TrainingJob
s@TrainingJob' {} Maybe AlgorithmSpecification
a -> TrainingJob
s {$sel:algorithmSpecification:TrainingJob' :: Maybe AlgorithmSpecification
algorithmSpecification = Maybe AlgorithmSpecification
a} :: TrainingJob)

-- | A list of final metric values that are set when the training job
-- completes. Used only if the training job was configured to use metrics.
trainingJob_finalMetricDataList :: Lens.Lens' TrainingJob (Prelude.Maybe [MetricData])
trainingJob_finalMetricDataList :: (Maybe [MetricData] -> f (Maybe [MetricData]))
-> TrainingJob -> f TrainingJob
trainingJob_finalMetricDataList = (TrainingJob -> Maybe [MetricData])
-> (TrainingJob -> Maybe [MetricData] -> TrainingJob)
-> Lens
     TrainingJob TrainingJob (Maybe [MetricData]) (Maybe [MetricData])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe [MetricData]
finalMetricDataList :: Maybe [MetricData]
$sel:finalMetricDataList:TrainingJob' :: TrainingJob -> Maybe [MetricData]
finalMetricDataList} -> Maybe [MetricData]
finalMetricDataList) (\s :: TrainingJob
s@TrainingJob' {} Maybe [MetricData]
a -> TrainingJob
s {$sel:finalMetricDataList:TrainingJob' :: Maybe [MetricData]
finalMetricDataList = Maybe [MetricData]
a} :: TrainingJob) ((Maybe [MetricData] -> f (Maybe [MetricData]))
 -> TrainingJob -> f TrainingJob)
-> ((Maybe [MetricData] -> f (Maybe [MetricData]))
    -> Maybe [MetricData] -> f (Maybe [MetricData]))
-> (Maybe [MetricData] -> f (Maybe [MetricData]))
-> TrainingJob
-> f TrainingJob
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [MetricData] [MetricData] [MetricData] [MetricData]
-> Iso
     (Maybe [MetricData])
     (Maybe [MetricData])
     (Maybe [MetricData])
     (Maybe [MetricData])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso [MetricData] [MetricData] [MetricData] [MetricData]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The S3 path where model artifacts that you configured when creating the
-- job are stored. Amazon SageMaker creates subfolders for model artifacts.
trainingJob_outputDataConfig :: Lens.Lens' TrainingJob (Prelude.Maybe OutputDataConfig)
trainingJob_outputDataConfig :: (Maybe OutputDataConfig -> f (Maybe OutputDataConfig))
-> TrainingJob -> f TrainingJob
trainingJob_outputDataConfig = (TrainingJob -> Maybe OutputDataConfig)
-> (TrainingJob -> Maybe OutputDataConfig -> TrainingJob)
-> Lens
     TrainingJob
     TrainingJob
     (Maybe OutputDataConfig)
     (Maybe OutputDataConfig)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe OutputDataConfig
outputDataConfig :: Maybe OutputDataConfig
$sel:outputDataConfig:TrainingJob' :: TrainingJob -> Maybe OutputDataConfig
outputDataConfig} -> Maybe OutputDataConfig
outputDataConfig) (\s :: TrainingJob
s@TrainingJob' {} Maybe OutputDataConfig
a -> TrainingJob
s {$sel:outputDataConfig:TrainingJob' :: Maybe OutputDataConfig
outputDataConfig = Maybe OutputDataConfig
a} :: TrainingJob)

-- | Indicates the time when the training job starts on training instances.
-- You are billed for the time interval between this time and the value of
-- @TrainingEndTime@. The start time in CloudWatch Logs might be later than
-- this time. The difference is due to the time it takes to download the
-- training data and to the size of the training container.
trainingJob_trainingStartTime :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.UTCTime)
trainingJob_trainingStartTime :: (Maybe UTCTime -> f (Maybe UTCTime))
-> TrainingJob -> f TrainingJob
trainingJob_trainingStartTime = (TrainingJob -> Maybe POSIX)
-> (TrainingJob -> Maybe POSIX -> TrainingJob)
-> Lens TrainingJob TrainingJob (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe POSIX
trainingStartTime :: Maybe POSIX
$sel:trainingStartTime:TrainingJob' :: TrainingJob -> Maybe POSIX
trainingStartTime} -> Maybe POSIX
trainingStartTime) (\s :: TrainingJob
s@TrainingJob' {} Maybe POSIX
a -> TrainingJob
s {$sel:trainingStartTime:TrainingJob' :: Maybe POSIX
trainingStartTime = Maybe POSIX
a} :: TrainingJob) ((Maybe POSIX -> f (Maybe POSIX)) -> TrainingJob -> f TrainingJob)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> TrainingJob
-> f TrainingJob
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The Amazon Resource Name (ARN) of the associated hyperparameter tuning
-- job if the training job was launched by a hyperparameter tuning job.
trainingJob_tuningJobArn :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.Text)
trainingJob_tuningJobArn :: (Maybe Text -> f (Maybe Text)) -> TrainingJob -> f TrainingJob
trainingJob_tuningJobArn = (TrainingJob -> Maybe Text)
-> (TrainingJob -> Maybe Text -> TrainingJob)
-> Lens TrainingJob TrainingJob (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe Text
tuningJobArn :: Maybe Text
$sel:tuningJobArn:TrainingJob' :: TrainingJob -> Maybe Text
tuningJobArn} -> Maybe Text
tuningJobArn) (\s :: TrainingJob
s@TrainingJob' {} Maybe Text
a -> TrainingJob
s {$sel:tuningJobArn:TrainingJob' :: Maybe Text
tuningJobArn = Maybe Text
a} :: TrainingJob)

-- | The name of the training job.
trainingJob_trainingJobName :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.Text)
trainingJob_trainingJobName :: (Maybe Text -> f (Maybe Text)) -> TrainingJob -> f TrainingJob
trainingJob_trainingJobName = (TrainingJob -> Maybe Text)
-> (TrainingJob -> Maybe Text -> TrainingJob)
-> Lens TrainingJob TrainingJob (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe Text
trainingJobName :: Maybe Text
$sel:trainingJobName:TrainingJob' :: TrainingJob -> Maybe Text
trainingJobName} -> Maybe Text
trainingJobName) (\s :: TrainingJob
s@TrainingJob' {} Maybe Text
a -> TrainingJob
s {$sel:trainingJobName:TrainingJob' :: Maybe Text
trainingJobName = Maybe Text
a} :: TrainingJob)

-- | Resources, including ML compute instances and ML storage volumes, that
-- are configured for model training.
trainingJob_resourceConfig :: Lens.Lens' TrainingJob (Prelude.Maybe ResourceConfig)
trainingJob_resourceConfig :: (Maybe ResourceConfig -> f (Maybe ResourceConfig))
-> TrainingJob -> f TrainingJob
trainingJob_resourceConfig = (TrainingJob -> Maybe ResourceConfig)
-> (TrainingJob -> Maybe ResourceConfig -> TrainingJob)
-> Lens
     TrainingJob
     TrainingJob
     (Maybe ResourceConfig)
     (Maybe ResourceConfig)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe ResourceConfig
resourceConfig :: Maybe ResourceConfig
$sel:resourceConfig:TrainingJob' :: TrainingJob -> Maybe ResourceConfig
resourceConfig} -> Maybe ResourceConfig
resourceConfig) (\s :: TrainingJob
s@TrainingJob' {} Maybe ResourceConfig
a -> TrainingJob
s {$sel:resourceConfig:TrainingJob' :: Maybe ResourceConfig
resourceConfig = Maybe ResourceConfig
a} :: TrainingJob)

-- | To encrypt all communications between ML compute instances in
-- distributed training, choose @True@. Encryption provides greater
-- security for distributed training, but training might take longer. How
-- long it takes depends on the amount of communication between compute
-- instances, especially if you use a deep learning algorithm in
-- distributed training.
trainingJob_enableInterContainerTrafficEncryption :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.Bool)
trainingJob_enableInterContainerTrafficEncryption :: (Maybe Bool -> f (Maybe Bool)) -> TrainingJob -> f TrainingJob
trainingJob_enableInterContainerTrafficEncryption = (TrainingJob -> Maybe Bool)
-> (TrainingJob -> Maybe Bool -> TrainingJob)
-> Lens TrainingJob TrainingJob (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe Bool
enableInterContainerTrafficEncryption :: Maybe Bool
$sel:enableInterContainerTrafficEncryption:TrainingJob' :: TrainingJob -> Maybe Bool
enableInterContainerTrafficEncryption} -> Maybe Bool
enableInterContainerTrafficEncryption) (\s :: TrainingJob
s@TrainingJob' {} Maybe Bool
a -> TrainingJob
s {$sel:enableInterContainerTrafficEncryption:TrainingJob' :: Maybe Bool
enableInterContainerTrafficEncryption = Maybe Bool
a} :: TrainingJob)

-- | Undocumented member.
trainingJob_tensorBoardOutputConfig :: Lens.Lens' TrainingJob (Prelude.Maybe TensorBoardOutputConfig)
trainingJob_tensorBoardOutputConfig :: (Maybe TensorBoardOutputConfig
 -> f (Maybe TensorBoardOutputConfig))
-> TrainingJob -> f TrainingJob
trainingJob_tensorBoardOutputConfig = (TrainingJob -> Maybe TensorBoardOutputConfig)
-> (TrainingJob -> Maybe TensorBoardOutputConfig -> TrainingJob)
-> Lens
     TrainingJob
     TrainingJob
     (Maybe TensorBoardOutputConfig)
     (Maybe TensorBoardOutputConfig)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe TensorBoardOutputConfig
tensorBoardOutputConfig :: Maybe TensorBoardOutputConfig
$sel:tensorBoardOutputConfig:TrainingJob' :: TrainingJob -> Maybe TensorBoardOutputConfig
tensorBoardOutputConfig} -> Maybe TensorBoardOutputConfig
tensorBoardOutputConfig) (\s :: TrainingJob
s@TrainingJob' {} Maybe TensorBoardOutputConfig
a -> TrainingJob
s {$sel:tensorBoardOutputConfig:TrainingJob' :: Maybe TensorBoardOutputConfig
tensorBoardOutputConfig = Maybe TensorBoardOutputConfig
a} :: TrainingJob)

-- | Provides detailed information about the state of the training job. For
-- detailed information about the secondary status of the training job, see
-- @StatusMessage@ under SecondaryStatusTransition.
--
-- Amazon SageMaker provides primary statuses and secondary statuses that
-- apply to each of them:
--
-- [InProgress]
--     -   @Starting@ - Starting the training job.
--
--     -   @Downloading@ - An optional stage for algorithms that support
--         @File@ training input mode. It indicates that data is being
--         downloaded to the ML storage volumes.
--
--     -   @Training@ - Training is in progress.
--
--     -   @Uploading@ - Training is complete and the model artifacts are
--         being uploaded to the S3 location.
--
-- [Completed]
--     -   @Completed@ - The training job has completed.
--
-- [Failed]
--     -   @Failed@ - The training job has failed. The reason for the
--         failure is returned in the @FailureReason@ field of
--         @DescribeTrainingJobResponse@.
--
-- [Stopped]
--     -   @MaxRuntimeExceeded@ - The job stopped because it exceeded the
--         maximum allowed runtime.
--
--     -   @Stopped@ - The training job has stopped.
--
-- [Stopping]
--     -   @Stopping@ - Stopping the training job.
--
-- Valid values for @SecondaryStatus@ are subject to change.
--
-- We no longer support the following secondary statuses:
--
-- -   @LaunchingMLInstances@
--
-- -   @PreparingTrainingStack@
--
-- -   @DownloadingTrainingImage@
trainingJob_secondaryStatus :: Lens.Lens' TrainingJob (Prelude.Maybe SecondaryStatus)
trainingJob_secondaryStatus :: (Maybe SecondaryStatus -> f (Maybe SecondaryStatus))
-> TrainingJob -> f TrainingJob
trainingJob_secondaryStatus = (TrainingJob -> Maybe SecondaryStatus)
-> (TrainingJob -> Maybe SecondaryStatus -> TrainingJob)
-> Lens
     TrainingJob
     TrainingJob
     (Maybe SecondaryStatus)
     (Maybe SecondaryStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe SecondaryStatus
secondaryStatus :: Maybe SecondaryStatus
$sel:secondaryStatus:TrainingJob' :: TrainingJob -> Maybe SecondaryStatus
secondaryStatus} -> Maybe SecondaryStatus
secondaryStatus) (\s :: TrainingJob
s@TrainingJob' {} Maybe SecondaryStatus
a -> TrainingJob
s {$sel:secondaryStatus:TrainingJob' :: Maybe SecondaryStatus
secondaryStatus = Maybe SecondaryStatus
a} :: TrainingJob)

-- | 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
-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>.
trainingJob_tags :: Lens.Lens' TrainingJob (Prelude.Maybe [Tag])
trainingJob_tags :: (Maybe [Tag] -> f (Maybe [Tag])) -> TrainingJob -> f TrainingJob
trainingJob_tags = (TrainingJob -> Maybe [Tag])
-> (TrainingJob -> Maybe [Tag] -> TrainingJob)
-> Lens TrainingJob TrainingJob (Maybe [Tag]) (Maybe [Tag])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:TrainingJob' :: TrainingJob -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: TrainingJob
s@TrainingJob' {} Maybe [Tag]
a -> TrainingJob
s {$sel:tags:TrainingJob' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: TrainingJob) ((Maybe [Tag] -> f (Maybe [Tag])) -> TrainingJob -> f TrainingJob)
-> ((Maybe [Tag] -> f (Maybe [Tag]))
    -> Maybe [Tag] -> f (Maybe [Tag]))
-> (Maybe [Tag] -> f (Maybe [Tag]))
-> TrainingJob
-> f TrainingJob
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Tag] [Tag] [Tag] [Tag]
-> Iso (Maybe [Tag]) (Maybe [Tag]) (Maybe [Tag]) (Maybe [Tag])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso [Tag] [Tag] [Tag] [Tag]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The training time in seconds.
trainingJob_trainingTimeInSeconds :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.Natural)
trainingJob_trainingTimeInSeconds :: (Maybe Natural -> f (Maybe Natural))
-> TrainingJob -> f TrainingJob
trainingJob_trainingTimeInSeconds = (TrainingJob -> Maybe Natural)
-> (TrainingJob -> Maybe Natural -> TrainingJob)
-> Lens TrainingJob TrainingJob (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe Natural
trainingTimeInSeconds :: Maybe Natural
$sel:trainingTimeInSeconds:TrainingJob' :: TrainingJob -> Maybe Natural
trainingTimeInSeconds} -> Maybe Natural
trainingTimeInSeconds) (\s :: TrainingJob
s@TrainingJob' {} Maybe Natural
a -> TrainingJob
s {$sel:trainingTimeInSeconds:TrainingJob' :: Maybe Natural
trainingTimeInSeconds = Maybe Natural
a} :: TrainingJob)

-- | The Amazon Web Services Identity and Access Management (IAM) role
-- configured for the training job.
trainingJob_roleArn :: Lens.Lens' TrainingJob (Prelude.Maybe Prelude.Text)
trainingJob_roleArn :: (Maybe Text -> f (Maybe Text)) -> TrainingJob -> f TrainingJob
trainingJob_roleArn = (TrainingJob -> Maybe Text)
-> (TrainingJob -> Maybe Text -> TrainingJob)
-> Lens TrainingJob TrainingJob (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TrainingJob' {Maybe Text
roleArn :: Maybe Text
$sel:roleArn:TrainingJob' :: TrainingJob -> Maybe Text
roleArn} -> Maybe Text
roleArn) (\s :: TrainingJob
s@TrainingJob' {} Maybe Text
a -> TrainingJob
s {$sel:roleArn:TrainingJob' :: Maybe Text
roleArn = Maybe Text
a} :: TrainingJob)

instance Core.FromJSON TrainingJob where
  parseJSON :: Value -> Parser TrainingJob
parseJSON =
    String
-> (Object -> Parser TrainingJob) -> Value -> Parser TrainingJob
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"TrainingJob"
      ( \Object
x ->
          Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe [SecondaryStatusTransition]
-> Maybe ModelArtifacts
-> Maybe POSIX
-> Maybe (HashMap Text Text)
-> Maybe Natural
-> Maybe DebugHookConfig
-> Maybe CheckpointConfig
-> Maybe RetryStrategy
-> Maybe StoppingCondition
-> Maybe [DebugRuleEvaluationStatus]
-> Maybe TrainingJobStatus
-> Maybe Bool
-> Maybe ExperimentConfig
-> Maybe POSIX
-> Maybe [DebugRuleConfiguration]
-> Maybe Bool
-> Maybe Text
-> Maybe (HashMap Text Text)
-> Maybe (NonEmpty Channel)
-> Maybe VpcConfig
-> Maybe Text
-> Maybe AlgorithmSpecification
-> Maybe [MetricData]
-> Maybe OutputDataConfig
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe ResourceConfig
-> Maybe Bool
-> Maybe TensorBoardOutputConfig
-> Maybe SecondaryStatus
-> Maybe [Tag]
-> Maybe Natural
-> Maybe Text
-> TrainingJob
TrainingJob'
            (Maybe POSIX
 -> Maybe Text
 -> Maybe Text
 -> Maybe [SecondaryStatusTransition]
 -> Maybe ModelArtifacts
 -> Maybe POSIX
 -> Maybe (HashMap Text Text)
 -> Maybe Natural
 -> Maybe DebugHookConfig
 -> Maybe CheckpointConfig
 -> Maybe RetryStrategy
 -> Maybe StoppingCondition
 -> Maybe [DebugRuleEvaluationStatus]
 -> Maybe TrainingJobStatus
 -> Maybe Bool
 -> Maybe ExperimentConfig
 -> Maybe POSIX
 -> Maybe [DebugRuleConfiguration]
 -> Maybe Bool
 -> Maybe Text
 -> Maybe (HashMap Text Text)
 -> Maybe (NonEmpty Channel)
 -> Maybe VpcConfig
 -> Maybe Text
 -> Maybe AlgorithmSpecification
 -> Maybe [MetricData]
 -> Maybe OutputDataConfig
 -> Maybe POSIX
 -> Maybe Text
 -> Maybe Text
 -> Maybe ResourceConfig
 -> Maybe Bool
 -> Maybe TensorBoardOutputConfig
 -> Maybe SecondaryStatus
 -> Maybe [Tag]
 -> Maybe Natural
 -> Maybe Text
 -> TrainingJob)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe [SecondaryStatusTransition]
      -> Maybe ModelArtifacts
      -> Maybe POSIX
      -> Maybe (HashMap Text Text)
      -> Maybe Natural
      -> Maybe DebugHookConfig
      -> Maybe CheckpointConfig
      -> Maybe RetryStrategy
      -> Maybe StoppingCondition
      -> Maybe [DebugRuleEvaluationStatus]
      -> Maybe TrainingJobStatus
      -> Maybe Bool
      -> Maybe ExperimentConfig
      -> Maybe POSIX
      -> Maybe [DebugRuleConfiguration]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe (NonEmpty Channel)
      -> Maybe VpcConfig
      -> Maybe Text
      -> Maybe AlgorithmSpecification
      -> Maybe [MetricData]
      -> Maybe OutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceConfig
      -> Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CreationTime")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe [SecondaryStatusTransition]
   -> Maybe ModelArtifacts
   -> Maybe POSIX
   -> Maybe (HashMap Text Text)
   -> Maybe Natural
   -> Maybe DebugHookConfig
   -> Maybe CheckpointConfig
   -> Maybe RetryStrategy
   -> Maybe StoppingCondition
   -> Maybe [DebugRuleEvaluationStatus]
   -> Maybe TrainingJobStatus
   -> Maybe Bool
   -> Maybe ExperimentConfig
   -> Maybe POSIX
   -> Maybe [DebugRuleConfiguration]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe (NonEmpty Channel)
   -> Maybe VpcConfig
   -> Maybe Text
   -> Maybe AlgorithmSpecification
   -> Maybe [MetricData]
   -> Maybe OutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceConfig
   -> Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe [SecondaryStatusTransition]
      -> Maybe ModelArtifacts
      -> Maybe POSIX
      -> Maybe (HashMap Text Text)
      -> Maybe Natural
      -> Maybe DebugHookConfig
      -> Maybe CheckpointConfig
      -> Maybe RetryStrategy
      -> Maybe StoppingCondition
      -> Maybe [DebugRuleEvaluationStatus]
      -> Maybe TrainingJobStatus
      -> Maybe Bool
      -> Maybe ExperimentConfig
      -> Maybe POSIX
      -> Maybe [DebugRuleConfiguration]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe (NonEmpty Channel)
      -> Maybe VpcConfig
      -> Maybe Text
      -> Maybe AlgorithmSpecification
      -> Maybe [MetricData]
      -> Maybe OutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceConfig
      -> Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"LabelingJobArn")
            Parser
  (Maybe Text
   -> Maybe [SecondaryStatusTransition]
   -> Maybe ModelArtifacts
   -> Maybe POSIX
   -> Maybe (HashMap Text Text)
   -> Maybe Natural
   -> Maybe DebugHookConfig
   -> Maybe CheckpointConfig
   -> Maybe RetryStrategy
   -> Maybe StoppingCondition
   -> Maybe [DebugRuleEvaluationStatus]
   -> Maybe TrainingJobStatus
   -> Maybe Bool
   -> Maybe ExperimentConfig
   -> Maybe POSIX
   -> Maybe [DebugRuleConfiguration]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe (NonEmpty Channel)
   -> Maybe VpcConfig
   -> Maybe Text
   -> Maybe AlgorithmSpecification
   -> Maybe [MetricData]
   -> Maybe OutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceConfig
   -> Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe Text)
-> Parser
     (Maybe [SecondaryStatusTransition]
      -> Maybe ModelArtifacts
      -> Maybe POSIX
      -> Maybe (HashMap Text Text)
      -> Maybe Natural
      -> Maybe DebugHookConfig
      -> Maybe CheckpointConfig
      -> Maybe RetryStrategy
      -> Maybe StoppingCondition
      -> Maybe [DebugRuleEvaluationStatus]
      -> Maybe TrainingJobStatus
      -> Maybe Bool
      -> Maybe ExperimentConfig
      -> Maybe POSIX
      -> Maybe [DebugRuleConfiguration]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe (NonEmpty Channel)
      -> Maybe VpcConfig
      -> Maybe Text
      -> Maybe AlgorithmSpecification
      -> Maybe [MetricData]
      -> Maybe OutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceConfig
      -> Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"FailureReason")
            Parser
  (Maybe [SecondaryStatusTransition]
   -> Maybe ModelArtifacts
   -> Maybe POSIX
   -> Maybe (HashMap Text Text)
   -> Maybe Natural
   -> Maybe DebugHookConfig
   -> Maybe CheckpointConfig
   -> Maybe RetryStrategy
   -> Maybe StoppingCondition
   -> Maybe [DebugRuleEvaluationStatus]
   -> Maybe TrainingJobStatus
   -> Maybe Bool
   -> Maybe ExperimentConfig
   -> Maybe POSIX
   -> Maybe [DebugRuleConfiguration]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe (NonEmpty Channel)
   -> Maybe VpcConfig
   -> Maybe Text
   -> Maybe AlgorithmSpecification
   -> Maybe [MetricData]
   -> Maybe OutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceConfig
   -> Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe [SecondaryStatusTransition])
-> Parser
     (Maybe ModelArtifacts
      -> Maybe POSIX
      -> Maybe (HashMap Text Text)
      -> Maybe Natural
      -> Maybe DebugHookConfig
      -> Maybe CheckpointConfig
      -> Maybe RetryStrategy
      -> Maybe StoppingCondition
      -> Maybe [DebugRuleEvaluationStatus]
      -> Maybe TrainingJobStatus
      -> Maybe Bool
      -> Maybe ExperimentConfig
      -> Maybe POSIX
      -> Maybe [DebugRuleConfiguration]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe (NonEmpty Channel)
      -> Maybe VpcConfig
      -> Maybe Text
      -> Maybe AlgorithmSpecification
      -> Maybe [MetricData]
      -> Maybe OutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceConfig
      -> Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object
-> Text -> Parser (Maybe (Maybe [SecondaryStatusTransition]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"SecondaryStatusTransitions"
                            Parser (Maybe (Maybe [SecondaryStatusTransition]))
-> Maybe [SecondaryStatusTransition]
-> Parser (Maybe [SecondaryStatusTransition])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [SecondaryStatusTransition]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe ModelArtifacts
   -> Maybe POSIX
   -> Maybe (HashMap Text Text)
   -> Maybe Natural
   -> Maybe DebugHookConfig
   -> Maybe CheckpointConfig
   -> Maybe RetryStrategy
   -> Maybe StoppingCondition
   -> Maybe [DebugRuleEvaluationStatus]
   -> Maybe TrainingJobStatus
   -> Maybe Bool
   -> Maybe ExperimentConfig
   -> Maybe POSIX
   -> Maybe [DebugRuleConfiguration]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe (NonEmpty Channel)
   -> Maybe VpcConfig
   -> Maybe Text
   -> Maybe AlgorithmSpecification
   -> Maybe [MetricData]
   -> Maybe OutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceConfig
   -> Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe ModelArtifacts)
-> Parser
     (Maybe POSIX
      -> Maybe (HashMap Text Text)
      -> Maybe Natural
      -> Maybe DebugHookConfig
      -> Maybe CheckpointConfig
      -> Maybe RetryStrategy
      -> Maybe StoppingCondition
      -> Maybe [DebugRuleEvaluationStatus]
      -> Maybe TrainingJobStatus
      -> Maybe Bool
      -> Maybe ExperimentConfig
      -> Maybe POSIX
      -> Maybe [DebugRuleConfiguration]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe (NonEmpty Channel)
      -> Maybe VpcConfig
      -> Maybe Text
      -> Maybe AlgorithmSpecification
      -> Maybe [MetricData]
      -> Maybe OutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceConfig
      -> Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ModelArtifacts)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ModelArtifacts")
            Parser
  (Maybe POSIX
   -> Maybe (HashMap Text Text)
   -> Maybe Natural
   -> Maybe DebugHookConfig
   -> Maybe CheckpointConfig
   -> Maybe RetryStrategy
   -> Maybe StoppingCondition
   -> Maybe [DebugRuleEvaluationStatus]
   -> Maybe TrainingJobStatus
   -> Maybe Bool
   -> Maybe ExperimentConfig
   -> Maybe POSIX
   -> Maybe [DebugRuleConfiguration]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe (NonEmpty Channel)
   -> Maybe VpcConfig
   -> Maybe Text
   -> Maybe AlgorithmSpecification
   -> Maybe [MetricData]
   -> Maybe OutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceConfig
   -> Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe (HashMap Text Text)
      -> Maybe Natural
      -> Maybe DebugHookConfig
      -> Maybe CheckpointConfig
      -> Maybe RetryStrategy
      -> Maybe StoppingCondition
      -> Maybe [DebugRuleEvaluationStatus]
      -> Maybe TrainingJobStatus
      -> Maybe Bool
      -> Maybe ExperimentConfig
      -> Maybe POSIX
      -> Maybe [DebugRuleConfiguration]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe (NonEmpty Channel)
      -> Maybe VpcConfig
      -> Maybe Text
      -> Maybe AlgorithmSpecification
      -> Maybe [MetricData]
      -> Maybe OutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceConfig
      -> Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"TrainingEndTime")
            Parser
  (Maybe (HashMap Text Text)
   -> Maybe Natural
   -> Maybe DebugHookConfig
   -> Maybe CheckpointConfig
   -> Maybe RetryStrategy
   -> Maybe StoppingCondition
   -> Maybe [DebugRuleEvaluationStatus]
   -> Maybe TrainingJobStatus
   -> Maybe Bool
   -> Maybe ExperimentConfig
   -> Maybe POSIX
   -> Maybe [DebugRuleConfiguration]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe (NonEmpty Channel)
   -> Maybe VpcConfig
   -> Maybe Text
   -> Maybe AlgorithmSpecification
   -> Maybe [MetricData]
   -> Maybe OutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceConfig
   -> Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe (HashMap Text Text))
-> Parser
     (Maybe Natural
      -> Maybe DebugHookConfig
      -> Maybe CheckpointConfig
      -> Maybe RetryStrategy
      -> Maybe StoppingCondition
      -> Maybe [DebugRuleEvaluationStatus]
      -> Maybe TrainingJobStatus
      -> Maybe Bool
      -> Maybe ExperimentConfig
      -> Maybe POSIX
      -> Maybe [DebugRuleConfiguration]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe (NonEmpty Channel)
      -> Maybe VpcConfig
      -> Maybe Text
      -> Maybe AlgorithmSpecification
      -> Maybe [MetricData]
      -> Maybe OutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceConfig
      -> Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe (HashMap Text Text)))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Environment" Parser (Maybe (Maybe (HashMap Text Text)))
-> Maybe (HashMap Text Text) -> Parser (Maybe (HashMap Text Text))
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe (HashMap Text Text)
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe Natural
   -> Maybe DebugHookConfig
   -> Maybe CheckpointConfig
   -> Maybe RetryStrategy
   -> Maybe StoppingCondition
   -> Maybe [DebugRuleEvaluationStatus]
   -> Maybe TrainingJobStatus
   -> Maybe Bool
   -> Maybe ExperimentConfig
   -> Maybe POSIX
   -> Maybe [DebugRuleConfiguration]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe (NonEmpty Channel)
   -> Maybe VpcConfig
   -> Maybe Text
   -> Maybe AlgorithmSpecification
   -> Maybe [MetricData]
   -> Maybe OutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceConfig
   -> Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe Natural)
-> Parser
     (Maybe DebugHookConfig
      -> Maybe CheckpointConfig
      -> Maybe RetryStrategy
      -> Maybe StoppingCondition
      -> Maybe [DebugRuleEvaluationStatus]
      -> Maybe TrainingJobStatus
      -> Maybe Bool
      -> Maybe ExperimentConfig
      -> Maybe POSIX
      -> Maybe [DebugRuleConfiguration]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe (NonEmpty Channel)
      -> Maybe VpcConfig
      -> Maybe Text
      -> Maybe AlgorithmSpecification
      -> Maybe [MetricData]
      -> Maybe OutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceConfig
      -> Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Natural)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"BillableTimeInSeconds")
            Parser
  (Maybe DebugHookConfig
   -> Maybe CheckpointConfig
   -> Maybe RetryStrategy
   -> Maybe StoppingCondition
   -> Maybe [DebugRuleEvaluationStatus]
   -> Maybe TrainingJobStatus
   -> Maybe Bool
   -> Maybe ExperimentConfig
   -> Maybe POSIX
   -> Maybe [DebugRuleConfiguration]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe (NonEmpty Channel)
   -> Maybe VpcConfig
   -> Maybe Text
   -> Maybe AlgorithmSpecification
   -> Maybe [MetricData]
   -> Maybe OutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceConfig
   -> Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe DebugHookConfig)
-> Parser
     (Maybe CheckpointConfig
      -> Maybe RetryStrategy
      -> Maybe StoppingCondition
      -> Maybe [DebugRuleEvaluationStatus]
      -> Maybe TrainingJobStatus
      -> Maybe Bool
      -> Maybe ExperimentConfig
      -> Maybe POSIX
      -> Maybe [DebugRuleConfiguration]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe (NonEmpty Channel)
      -> Maybe VpcConfig
      -> Maybe Text
      -> Maybe AlgorithmSpecification
      -> Maybe [MetricData]
      -> Maybe OutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceConfig
      -> Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DebugHookConfig)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DebugHookConfig")
            Parser
  (Maybe CheckpointConfig
   -> Maybe RetryStrategy
   -> Maybe StoppingCondition
   -> Maybe [DebugRuleEvaluationStatus]
   -> Maybe TrainingJobStatus
   -> Maybe Bool
   -> Maybe ExperimentConfig
   -> Maybe POSIX
   -> Maybe [DebugRuleConfiguration]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe (NonEmpty Channel)
   -> Maybe VpcConfig
   -> Maybe Text
   -> Maybe AlgorithmSpecification
   -> Maybe [MetricData]
   -> Maybe OutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceConfig
   -> Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe CheckpointConfig)
-> Parser
     (Maybe RetryStrategy
      -> Maybe StoppingCondition
      -> Maybe [DebugRuleEvaluationStatus]
      -> Maybe TrainingJobStatus
      -> Maybe Bool
      -> Maybe ExperimentConfig
      -> Maybe POSIX
      -> Maybe [DebugRuleConfiguration]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe (NonEmpty Channel)
      -> Maybe VpcConfig
      -> Maybe Text
      -> Maybe AlgorithmSpecification
      -> Maybe [MetricData]
      -> Maybe OutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceConfig
      -> Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe CheckpointConfig)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CheckpointConfig")
            Parser
  (Maybe RetryStrategy
   -> Maybe StoppingCondition
   -> Maybe [DebugRuleEvaluationStatus]
   -> Maybe TrainingJobStatus
   -> Maybe Bool
   -> Maybe ExperimentConfig
   -> Maybe POSIX
   -> Maybe [DebugRuleConfiguration]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe (NonEmpty Channel)
   -> Maybe VpcConfig
   -> Maybe Text
   -> Maybe AlgorithmSpecification
   -> Maybe [MetricData]
   -> Maybe OutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceConfig
   -> Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe RetryStrategy)
-> Parser
     (Maybe StoppingCondition
      -> Maybe [DebugRuleEvaluationStatus]
      -> Maybe TrainingJobStatus
      -> Maybe Bool
      -> Maybe ExperimentConfig
      -> Maybe POSIX
      -> Maybe [DebugRuleConfiguration]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe (NonEmpty Channel)
      -> Maybe VpcConfig
      -> Maybe Text
      -> Maybe AlgorithmSpecification
      -> Maybe [MetricData]
      -> Maybe OutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceConfig
      -> Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe RetryStrategy)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"RetryStrategy")
            Parser
  (Maybe StoppingCondition
   -> Maybe [DebugRuleEvaluationStatus]
   -> Maybe TrainingJobStatus
   -> Maybe Bool
   -> Maybe ExperimentConfig
   -> Maybe POSIX
   -> Maybe [DebugRuleConfiguration]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe (NonEmpty Channel)
   -> Maybe VpcConfig
   -> Maybe Text
   -> Maybe AlgorithmSpecification
   -> Maybe [MetricData]
   -> Maybe OutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceConfig
   -> Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe StoppingCondition)
-> Parser
     (Maybe [DebugRuleEvaluationStatus]
      -> Maybe TrainingJobStatus
      -> Maybe Bool
      -> Maybe ExperimentConfig
      -> Maybe POSIX
      -> Maybe [DebugRuleConfiguration]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe (NonEmpty Channel)
      -> Maybe VpcConfig
      -> Maybe Text
      -> Maybe AlgorithmSpecification
      -> Maybe [MetricData]
      -> Maybe OutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceConfig
      -> Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe StoppingCondition)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"StoppingCondition")
            Parser
  (Maybe [DebugRuleEvaluationStatus]
   -> Maybe TrainingJobStatus
   -> Maybe Bool
   -> Maybe ExperimentConfig
   -> Maybe POSIX
   -> Maybe [DebugRuleConfiguration]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe (NonEmpty Channel)
   -> Maybe VpcConfig
   -> Maybe Text
   -> Maybe AlgorithmSpecification
   -> Maybe [MetricData]
   -> Maybe OutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceConfig
   -> Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe [DebugRuleEvaluationStatus])
-> Parser
     (Maybe TrainingJobStatus
      -> Maybe Bool
      -> Maybe ExperimentConfig
      -> Maybe POSIX
      -> Maybe [DebugRuleConfiguration]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe (NonEmpty Channel)
      -> Maybe VpcConfig
      -> Maybe Text
      -> Maybe AlgorithmSpecification
      -> Maybe [MetricData]
      -> Maybe OutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceConfig
      -> Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object
-> Text -> Parser (Maybe (Maybe [DebugRuleEvaluationStatus]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DebugRuleEvaluationStatuses"
                            Parser (Maybe (Maybe [DebugRuleEvaluationStatus]))
-> Maybe [DebugRuleEvaluationStatus]
-> Parser (Maybe [DebugRuleEvaluationStatus])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [DebugRuleEvaluationStatus]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe TrainingJobStatus
   -> Maybe Bool
   -> Maybe ExperimentConfig
   -> Maybe POSIX
   -> Maybe [DebugRuleConfiguration]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe (NonEmpty Channel)
   -> Maybe VpcConfig
   -> Maybe Text
   -> Maybe AlgorithmSpecification
   -> Maybe [MetricData]
   -> Maybe OutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceConfig
   -> Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe TrainingJobStatus)
-> Parser
     (Maybe Bool
      -> Maybe ExperimentConfig
      -> Maybe POSIX
      -> Maybe [DebugRuleConfiguration]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe (NonEmpty Channel)
      -> Maybe VpcConfig
      -> Maybe Text
      -> Maybe AlgorithmSpecification
      -> Maybe [MetricData]
      -> Maybe OutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceConfig
      -> Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe TrainingJobStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"TrainingJobStatus")
            Parser
  (Maybe Bool
   -> Maybe ExperimentConfig
   -> Maybe POSIX
   -> Maybe [DebugRuleConfiguration]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe (NonEmpty Channel)
   -> Maybe VpcConfig
   -> Maybe Text
   -> Maybe AlgorithmSpecification
   -> Maybe [MetricData]
   -> Maybe OutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceConfig
   -> Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe Bool)
-> Parser
     (Maybe ExperimentConfig
      -> Maybe POSIX
      -> Maybe [DebugRuleConfiguration]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe (NonEmpty Channel)
      -> Maybe VpcConfig
      -> Maybe Text
      -> Maybe AlgorithmSpecification
      -> Maybe [MetricData]
      -> Maybe OutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceConfig
      -> Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"EnableNetworkIsolation")
            Parser
  (Maybe ExperimentConfig
   -> Maybe POSIX
   -> Maybe [DebugRuleConfiguration]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe (NonEmpty Channel)
   -> Maybe VpcConfig
   -> Maybe Text
   -> Maybe AlgorithmSpecification
   -> Maybe [MetricData]
   -> Maybe OutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceConfig
   -> Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe ExperimentConfig)
-> Parser
     (Maybe POSIX
      -> Maybe [DebugRuleConfiguration]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe (NonEmpty Channel)
      -> Maybe VpcConfig
      -> Maybe Text
      -> Maybe AlgorithmSpecification
      -> Maybe [MetricData]
      -> Maybe OutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceConfig
      -> Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ExperimentConfig)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ExperimentConfig")
            Parser
  (Maybe POSIX
   -> Maybe [DebugRuleConfiguration]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe (NonEmpty Channel)
   -> Maybe VpcConfig
   -> Maybe Text
   -> Maybe AlgorithmSpecification
   -> Maybe [MetricData]
   -> Maybe OutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceConfig
   -> Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe [DebugRuleConfiguration]
      -> Maybe Bool
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe (NonEmpty Channel)
      -> Maybe VpcConfig
      -> Maybe Text
      -> Maybe AlgorithmSpecification
      -> Maybe [MetricData]
      -> Maybe OutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceConfig
      -> Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"LastModifiedTime")
            Parser
  (Maybe [DebugRuleConfiguration]
   -> Maybe Bool
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe (NonEmpty Channel)
   -> Maybe VpcConfig
   -> Maybe Text
   -> Maybe AlgorithmSpecification
   -> Maybe [MetricData]
   -> Maybe OutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceConfig
   -> Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe [DebugRuleConfiguration])
-> Parser
     (Maybe Bool
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe (NonEmpty Channel)
      -> Maybe VpcConfig
      -> Maybe Text
      -> Maybe AlgorithmSpecification
      -> Maybe [MetricData]
      -> Maybe OutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceConfig
      -> Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object -> Text -> Parser (Maybe (Maybe [DebugRuleConfiguration]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DebugRuleConfigurations"
                            Parser (Maybe (Maybe [DebugRuleConfiguration]))
-> Maybe [DebugRuleConfiguration]
-> Parser (Maybe [DebugRuleConfiguration])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [DebugRuleConfiguration]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe Bool
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe (NonEmpty Channel)
   -> Maybe VpcConfig
   -> Maybe Text
   -> Maybe AlgorithmSpecification
   -> Maybe [MetricData]
   -> Maybe OutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceConfig
   -> Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe (NonEmpty Channel)
      -> Maybe VpcConfig
      -> Maybe Text
      -> Maybe AlgorithmSpecification
      -> Maybe [MetricData]
      -> Maybe OutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceConfig
      -> Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"EnableManagedSpotTraining")
            Parser
  (Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe (NonEmpty Channel)
   -> Maybe VpcConfig
   -> Maybe Text
   -> Maybe AlgorithmSpecification
   -> Maybe [MetricData]
   -> Maybe OutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceConfig
   -> Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe Text)
-> Parser
     (Maybe (HashMap Text Text)
      -> Maybe (NonEmpty Channel)
      -> Maybe VpcConfig
      -> Maybe Text
      -> Maybe AlgorithmSpecification
      -> Maybe [MetricData]
      -> Maybe OutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceConfig
      -> Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AutoMLJobArn")
            Parser
  (Maybe (HashMap Text Text)
   -> Maybe (NonEmpty Channel)
   -> Maybe VpcConfig
   -> Maybe Text
   -> Maybe AlgorithmSpecification
   -> Maybe [MetricData]
   -> Maybe OutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceConfig
   -> Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe (HashMap Text Text))
-> Parser
     (Maybe (NonEmpty Channel)
      -> Maybe VpcConfig
      -> Maybe Text
      -> Maybe AlgorithmSpecification
      -> Maybe [MetricData]
      -> Maybe OutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceConfig
      -> Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object -> Text -> Parser (Maybe (Maybe (HashMap Text Text)))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"HyperParameters"
                            Parser (Maybe (Maybe (HashMap Text Text)))
-> Maybe (HashMap Text Text) -> Parser (Maybe (HashMap Text Text))
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe (HashMap Text Text)
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe (NonEmpty Channel)
   -> Maybe VpcConfig
   -> Maybe Text
   -> Maybe AlgorithmSpecification
   -> Maybe [MetricData]
   -> Maybe OutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceConfig
   -> Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe (NonEmpty Channel))
-> Parser
     (Maybe VpcConfig
      -> Maybe Text
      -> Maybe AlgorithmSpecification
      -> Maybe [MetricData]
      -> Maybe OutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceConfig
      -> Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (NonEmpty Channel))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"InputDataConfig")
            Parser
  (Maybe VpcConfig
   -> Maybe Text
   -> Maybe AlgorithmSpecification
   -> Maybe [MetricData]
   -> Maybe OutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceConfig
   -> Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe VpcConfig)
-> Parser
     (Maybe Text
      -> Maybe AlgorithmSpecification
      -> Maybe [MetricData]
      -> Maybe OutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceConfig
      -> Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe VpcConfig)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"VpcConfig")
            Parser
  (Maybe Text
   -> Maybe AlgorithmSpecification
   -> Maybe [MetricData]
   -> Maybe OutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceConfig
   -> Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe Text)
-> Parser
     (Maybe AlgorithmSpecification
      -> Maybe [MetricData]
      -> Maybe OutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceConfig
      -> Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"TrainingJobArn")
            Parser
  (Maybe AlgorithmSpecification
   -> Maybe [MetricData]
   -> Maybe OutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceConfig
   -> Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe AlgorithmSpecification)
-> Parser
     (Maybe [MetricData]
      -> Maybe OutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceConfig
      -> Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe AlgorithmSpecification)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AlgorithmSpecification")
            Parser
  (Maybe [MetricData]
   -> Maybe OutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceConfig
   -> Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe [MetricData])
-> Parser
     (Maybe OutputDataConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceConfig
      -> Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object -> Text -> Parser (Maybe (Maybe [MetricData]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"FinalMetricDataList"
                            Parser (Maybe (Maybe [MetricData]))
-> Maybe [MetricData] -> Parser (Maybe [MetricData])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [MetricData]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe OutputDataConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceConfig
   -> Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe OutputDataConfig)
-> Parser
     (Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceConfig
      -> Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe OutputDataConfig)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"OutputDataConfig")
            Parser
  (Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceConfig
   -> Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe ResourceConfig
      -> Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"TrainingStartTime")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe ResourceConfig
   -> Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe ResourceConfig
      -> Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"TuningJobArn")
            Parser
  (Maybe Text
   -> Maybe ResourceConfig
   -> Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe Text)
-> Parser
     (Maybe ResourceConfig
      -> Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"TrainingJobName")
            Parser
  (Maybe ResourceConfig
   -> Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe ResourceConfig)
-> Parser
     (Maybe Bool
      -> Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ResourceConfig)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ResourceConfig")
            Parser
  (Maybe Bool
   -> Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe Bool)
-> Parser
     (Maybe TensorBoardOutputConfig
      -> Maybe SecondaryStatus
      -> Maybe [Tag]
      -> Maybe Natural
      -> Maybe Text
      -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"EnableInterContainerTrafficEncryption")
            Parser
  (Maybe TensorBoardOutputConfig
   -> Maybe SecondaryStatus
   -> Maybe [Tag]
   -> Maybe Natural
   -> Maybe Text
   -> TrainingJob)
-> Parser (Maybe TensorBoardOutputConfig)
-> Parser
     (Maybe SecondaryStatus
      -> Maybe [Tag] -> Maybe Natural -> Maybe Text -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe TensorBoardOutputConfig)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"TensorBoardOutputConfig")
            Parser
  (Maybe SecondaryStatus
   -> Maybe [Tag] -> Maybe Natural -> Maybe Text -> TrainingJob)
-> Parser (Maybe SecondaryStatus)
-> Parser
     (Maybe [Tag] -> Maybe Natural -> Maybe Text -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe SecondaryStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"SecondaryStatus")
            Parser (Maybe [Tag] -> Maybe Natural -> Maybe Text -> TrainingJob)
-> Parser (Maybe [Tag])
-> Parser (Maybe Natural -> Maybe Text -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe [Tag]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Tags" Parser (Maybe (Maybe [Tag])) -> Maybe [Tag] -> Parser (Maybe [Tag])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [Tag]
forall a. Monoid a => a
Prelude.mempty)
            Parser (Maybe Natural -> Maybe Text -> TrainingJob)
-> Parser (Maybe Natural) -> Parser (Maybe Text -> TrainingJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Natural)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"TrainingTimeInSeconds")
            Parser (Maybe Text -> TrainingJob)
-> Parser (Maybe Text) -> Parser TrainingJob
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"RoleArn")
      )

instance Prelude.Hashable TrainingJob

instance Prelude.NFData TrainingJob