amazonka-emr 1.4.5 → 1.5.0
raw patch · 41 files changed
+6399/−4462 lines, 41 filesdep ~amazonka-coredep ~amazonka-emrdep ~amazonka-testPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: amazonka-core, amazonka-emr, amazonka-test
API changes (from Hackage documentation)
+ Network.AWS.EMR: CSCRCInstanceFleetTimeout :: ClusterStateChangeReasonCode
+ Network.AWS.EMR: IFSBootstrapping :: InstanceFleetState
+ Network.AWS.EMR: IFSCRCClusterTerminated :: InstanceFleetStateChangeReasonCode
+ Network.AWS.EMR: IFSCRCInstanceFailure :: InstanceFleetStateChangeReasonCode
+ Network.AWS.EMR: IFSCRCInternalError :: InstanceFleetStateChangeReasonCode
+ Network.AWS.EMR: IFSCRCValidationError :: InstanceFleetStateChangeReasonCode
+ Network.AWS.EMR: IFSProvisioning :: InstanceFleetState
+ Network.AWS.EMR: IFSResizing :: InstanceFleetState
+ Network.AWS.EMR: IFSRunning :: InstanceFleetState
+ Network.AWS.EMR: IFSSuspended :: InstanceFleetState
+ Network.AWS.EMR: IFSTerminated :: InstanceFleetState
+ Network.AWS.EMR: IFSTerminating :: InstanceFleetState
+ Network.AWS.EMR: IFTCore :: InstanceFleetType
+ Network.AWS.EMR: IFTMaster :: InstanceFleetType
+ Network.AWS.EMR: IFTTask :: InstanceFleetType
+ Network.AWS.EMR: InstanceFleet :: InstanceCollectionType
+ Network.AWS.EMR: InstanceGroup :: InstanceCollectionType
+ Network.AWS.EMR: RUOBNone :: RepoUpgradeOnBoot
+ Network.AWS.EMR: RUOBSecurity :: RepoUpgradeOnBoot
+ Network.AWS.EMR: SPTASwitchToOnDemand :: SpotProvisioningTimeoutAction
+ Network.AWS.EMR: SPTATerminateCluster :: SpotProvisioningTimeoutAction
+ Network.AWS.EMR: cluCustomAMIId :: Lens' Cluster (Maybe Text)
+ Network.AWS.EMR: cluEBSRootVolumeSize :: Lens' Cluster (Maybe Int)
+ Network.AWS.EMR: cluInstanceCollectionType :: Lens' Cluster (Maybe InstanceCollectionType)
+ Network.AWS.EMR: cluRepoUpgradeOnBoot :: Lens' Cluster (Maybe RepoUpgradeOnBoot)
+ Network.AWS.EMR: data InstanceCollectionType
+ Network.AWS.EMR: data InstanceFleet
+ Network.AWS.EMR: data InstanceFleetConfig
+ Network.AWS.EMR: data InstanceFleetModifyConfig
+ Network.AWS.EMR: data InstanceFleetProvisioningSpecifications
+ Network.AWS.EMR: data InstanceFleetState
+ Network.AWS.EMR: data InstanceFleetStateChangeReason
+ Network.AWS.EMR: data InstanceFleetStateChangeReasonCode
+ Network.AWS.EMR: data InstanceFleetStatus
+ Network.AWS.EMR: data InstanceFleetTimeline
+ Network.AWS.EMR: data InstanceFleetType
+ Network.AWS.EMR: data InstanceTypeConfig
+ Network.AWS.EMR: data InstanceTypeSpecification
+ Network.AWS.EMR: data RepoUpgradeOnBoot
+ Network.AWS.EMR: data SpotProvisioningSpecification
+ Network.AWS.EMR: data SpotProvisioningTimeoutAction
+ Network.AWS.EMR: eiaRequestedEC2AvailabilityZones :: Lens' EC2InstanceAttributes [Text]
+ Network.AWS.EMR: eiaRequestedEC2SubnetIds :: Lens' EC2InstanceAttributes [Text]
+ Network.AWS.EMR: iInstanceFleetId :: Lens' Instance (Maybe Text)
+ Network.AWS.EMR: iInstanceType :: Lens' Instance (Maybe Text)
+ Network.AWS.EMR: iMarket :: Lens' Instance (Maybe MarketType)
+ Network.AWS.EMR: ifId :: Lens' InstanceFleet (Maybe Text)
+ Network.AWS.EMR: ifInstanceFleetType :: Lens' InstanceFleet (Maybe InstanceFleetType)
+ Network.AWS.EMR: ifInstanceTypeSpecifications :: Lens' InstanceFleet [InstanceTypeSpecification]
+ Network.AWS.EMR: ifLaunchSpecifications :: Lens' InstanceFleet (Maybe InstanceFleetProvisioningSpecifications)
+ Network.AWS.EMR: ifName :: Lens' InstanceFleet (Maybe Text)
+ Network.AWS.EMR: ifProvisionedOnDemandCapacity :: Lens' InstanceFleet (Maybe Natural)
+ Network.AWS.EMR: ifProvisionedSpotCapacity :: Lens' InstanceFleet (Maybe Natural)
+ Network.AWS.EMR: ifStatus :: Lens' InstanceFleet (Maybe InstanceFleetStatus)
+ Network.AWS.EMR: ifTargetOnDemandCapacity :: Lens' InstanceFleet (Maybe Natural)
+ Network.AWS.EMR: ifTargetSpotCapacity :: Lens' InstanceFleet (Maybe Natural)
+ Network.AWS.EMR: ifcInstanceFleetType :: Lens' InstanceFleetConfig InstanceFleetType
+ Network.AWS.EMR: ifcInstanceTypeConfigs :: Lens' InstanceFleetConfig [InstanceTypeConfig]
+ Network.AWS.EMR: ifcLaunchSpecifications :: Lens' InstanceFleetConfig (Maybe InstanceFleetProvisioningSpecifications)
+ Network.AWS.EMR: ifcName :: Lens' InstanceFleetConfig (Maybe Text)
+ Network.AWS.EMR: ifcTargetOnDemandCapacity :: Lens' InstanceFleetConfig (Maybe Natural)
+ Network.AWS.EMR: ifcTargetSpotCapacity :: Lens' InstanceFleetConfig (Maybe Natural)
+ Network.AWS.EMR: ifmcInstanceFleetId :: Lens' InstanceFleetModifyConfig Text
+ Network.AWS.EMR: ifmcTargetOnDemandCapacity :: Lens' InstanceFleetModifyConfig (Maybe Natural)
+ Network.AWS.EMR: ifmcTargetSpotCapacity :: Lens' InstanceFleetModifyConfig (Maybe Natural)
+ Network.AWS.EMR: ifpsSpotSpecification :: Lens' InstanceFleetProvisioningSpecifications SpotProvisioningSpecification
+ Network.AWS.EMR: ifsState :: Lens' InstanceFleetStatus (Maybe InstanceFleetState)
+ Network.AWS.EMR: ifsStateChangeReason :: Lens' InstanceFleetStatus (Maybe InstanceFleetStateChangeReason)
+ Network.AWS.EMR: ifsTimeline :: Lens' InstanceFleetStatus (Maybe InstanceFleetTimeline)
+ Network.AWS.EMR: ifscrCode :: Lens' InstanceFleetStateChangeReason (Maybe InstanceFleetStateChangeReasonCode)
+ Network.AWS.EMR: ifscrMessage :: Lens' InstanceFleetStateChangeReason (Maybe Text)
+ Network.AWS.EMR: iftCreationDateTime :: Lens' InstanceFleetTimeline (Maybe UTCTime)
+ Network.AWS.EMR: iftEndDateTime :: Lens' InstanceFleetTimeline (Maybe UTCTime)
+ Network.AWS.EMR: iftReadyDateTime :: Lens' InstanceFleetTimeline (Maybe UTCTime)
+ Network.AWS.EMR: instanceFleet :: InstanceFleet
+ Network.AWS.EMR: instanceFleetConfig :: InstanceFleetType -> InstanceFleetConfig
+ Network.AWS.EMR: instanceFleetModifyConfig :: Text -> InstanceFleetModifyConfig
+ Network.AWS.EMR: instanceFleetProvisioningSpecifications :: SpotProvisioningSpecification -> InstanceFleetProvisioningSpecifications
+ Network.AWS.EMR: instanceFleetStateChangeReason :: InstanceFleetStateChangeReason
+ Network.AWS.EMR: instanceFleetStatus :: InstanceFleetStatus
+ Network.AWS.EMR: instanceFleetTimeline :: InstanceFleetTimeline
+ Network.AWS.EMR: instanceTypeConfig :: Text -> InstanceTypeConfig
+ Network.AWS.EMR: instanceTypeSpecification :: InstanceTypeSpecification
+ Network.AWS.EMR: itcBidPrice :: Lens' InstanceTypeConfig (Maybe Text)
+ Network.AWS.EMR: itcBidPriceAsPercentageOfOnDemandPrice :: Lens' InstanceTypeConfig (Maybe Double)
+ Network.AWS.EMR: itcConfigurations :: Lens' InstanceTypeConfig [Configuration]
+ Network.AWS.EMR: itcEBSConfiguration :: Lens' InstanceTypeConfig (Maybe EBSConfiguration)
+ Network.AWS.EMR: itcInstanceType :: Lens' InstanceTypeConfig Text
+ Network.AWS.EMR: itcWeightedCapacity :: Lens' InstanceTypeConfig (Maybe Natural)
+ Network.AWS.EMR: itsBidPrice :: Lens' InstanceTypeSpecification (Maybe Text)
+ Network.AWS.EMR: itsBidPriceAsPercentageOfOnDemandPrice :: Lens' InstanceTypeSpecification (Maybe Double)
+ Network.AWS.EMR: itsConfigurations :: Lens' InstanceTypeSpecification [Configuration]
+ Network.AWS.EMR: itsEBSBlockDevices :: Lens' InstanceTypeSpecification [EBSBlockDevice]
+ Network.AWS.EMR: itsEBSOptimized :: Lens' InstanceTypeSpecification (Maybe Bool)
+ Network.AWS.EMR: itsInstanceType :: Lens' InstanceTypeSpecification (Maybe Text)
+ Network.AWS.EMR: itsWeightedCapacity :: Lens' InstanceTypeSpecification (Maybe Natural)
+ Network.AWS.EMR: jficEC2SubnetIds :: Lens' JobFlowInstancesConfig [Text]
+ Network.AWS.EMR: jficInstanceFleets :: Lens' JobFlowInstancesConfig [InstanceFleetConfig]
+ Network.AWS.EMR: ptAvailabilityZones :: Lens' PlacementType [Text]
+ Network.AWS.EMR: spotProvisioningSpecification :: Natural -> SpotProvisioningTimeoutAction -> SpotProvisioningSpecification
+ Network.AWS.EMR: spsBlockDurationMinutes :: Lens' SpotProvisioningSpecification (Maybe Natural)
+ Network.AWS.EMR: spsTimeoutAction :: Lens' SpotProvisioningSpecification SpotProvisioningTimeoutAction
+ Network.AWS.EMR: spsTimeoutDurationMinutes :: Lens' SpotProvisioningSpecification Natural
+ Network.AWS.EMR.AddInstanceFleet: addInstanceFleet :: Text -> InstanceFleetConfig -> AddInstanceFleet
+ Network.AWS.EMR.AddInstanceFleet: addInstanceFleetResponse :: Int -> AddInstanceFleetResponse
+ Network.AWS.EMR.AddInstanceFleet: aifClusterId :: Lens' AddInstanceFleet Text
+ Network.AWS.EMR.AddInstanceFleet: aifInstanceFleet :: Lens' AddInstanceFleet InstanceFleetConfig
+ Network.AWS.EMR.AddInstanceFleet: aifrsClusterId :: Lens' AddInstanceFleetResponse (Maybe Text)
+ Network.AWS.EMR.AddInstanceFleet: aifrsInstanceFleetId :: Lens' AddInstanceFleetResponse (Maybe Text)
+ Network.AWS.EMR.AddInstanceFleet: aifrsResponseStatus :: Lens' AddInstanceFleetResponse Int
+ Network.AWS.EMR.AddInstanceFleet: data AddInstanceFleet
+ Network.AWS.EMR.AddInstanceFleet: data AddInstanceFleetResponse
+ Network.AWS.EMR.AddInstanceFleet: instance Control.DeepSeq.NFData Network.AWS.EMR.AddInstanceFleet.AddInstanceFleet
+ Network.AWS.EMR.AddInstanceFleet: instance Control.DeepSeq.NFData Network.AWS.EMR.AddInstanceFleet.AddInstanceFleetResponse
+ Network.AWS.EMR.AddInstanceFleet: instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.EMR.AddInstanceFleet.AddInstanceFleet
+ Network.AWS.EMR.AddInstanceFleet: instance Data.Data.Data Network.AWS.EMR.AddInstanceFleet.AddInstanceFleet
+ Network.AWS.EMR.AddInstanceFleet: instance Data.Data.Data Network.AWS.EMR.AddInstanceFleet.AddInstanceFleetResponse
+ Network.AWS.EMR.AddInstanceFleet: instance Data.Hashable.Class.Hashable Network.AWS.EMR.AddInstanceFleet.AddInstanceFleet
+ Network.AWS.EMR.AddInstanceFleet: instance GHC.Classes.Eq Network.AWS.EMR.AddInstanceFleet.AddInstanceFleet
+ Network.AWS.EMR.AddInstanceFleet: instance GHC.Classes.Eq Network.AWS.EMR.AddInstanceFleet.AddInstanceFleetResponse
+ Network.AWS.EMR.AddInstanceFleet: instance GHC.Generics.Generic Network.AWS.EMR.AddInstanceFleet.AddInstanceFleet
+ Network.AWS.EMR.AddInstanceFleet: instance GHC.Generics.Generic Network.AWS.EMR.AddInstanceFleet.AddInstanceFleetResponse
+ Network.AWS.EMR.AddInstanceFleet: instance GHC.Read.Read Network.AWS.EMR.AddInstanceFleet.AddInstanceFleet
+ Network.AWS.EMR.AddInstanceFleet: instance GHC.Read.Read Network.AWS.EMR.AddInstanceFleet.AddInstanceFleetResponse
+ Network.AWS.EMR.AddInstanceFleet: instance GHC.Show.Show Network.AWS.EMR.AddInstanceFleet.AddInstanceFleet
+ Network.AWS.EMR.AddInstanceFleet: instance GHC.Show.Show Network.AWS.EMR.AddInstanceFleet.AddInstanceFleetResponse
+ Network.AWS.EMR.AddInstanceFleet: instance Network.AWS.Data.Headers.ToHeaders Network.AWS.EMR.AddInstanceFleet.AddInstanceFleet
+ Network.AWS.EMR.AddInstanceFleet: instance Network.AWS.Data.Path.ToPath Network.AWS.EMR.AddInstanceFleet.AddInstanceFleet
+ Network.AWS.EMR.AddInstanceFleet: instance Network.AWS.Data.Query.ToQuery Network.AWS.EMR.AddInstanceFleet.AddInstanceFleet
+ Network.AWS.EMR.AddInstanceFleet: instance Network.AWS.Types.AWSRequest Network.AWS.EMR.AddInstanceFleet.AddInstanceFleet
+ Network.AWS.EMR.ListInstanceFleets: data ListInstanceFleets
+ Network.AWS.EMR.ListInstanceFleets: data ListInstanceFleetsResponse
+ Network.AWS.EMR.ListInstanceFleets: instance Control.DeepSeq.NFData Network.AWS.EMR.ListInstanceFleets.ListInstanceFleets
+ Network.AWS.EMR.ListInstanceFleets: instance Control.DeepSeq.NFData Network.AWS.EMR.ListInstanceFleets.ListInstanceFleetsResponse
+ Network.AWS.EMR.ListInstanceFleets: instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.EMR.ListInstanceFleets.ListInstanceFleets
+ Network.AWS.EMR.ListInstanceFleets: instance Data.Data.Data Network.AWS.EMR.ListInstanceFleets.ListInstanceFleets
+ Network.AWS.EMR.ListInstanceFleets: instance Data.Data.Data Network.AWS.EMR.ListInstanceFleets.ListInstanceFleetsResponse
+ Network.AWS.EMR.ListInstanceFleets: instance Data.Hashable.Class.Hashable Network.AWS.EMR.ListInstanceFleets.ListInstanceFleets
+ Network.AWS.EMR.ListInstanceFleets: instance GHC.Classes.Eq Network.AWS.EMR.ListInstanceFleets.ListInstanceFleets
+ Network.AWS.EMR.ListInstanceFleets: instance GHC.Classes.Eq Network.AWS.EMR.ListInstanceFleets.ListInstanceFleetsResponse
+ Network.AWS.EMR.ListInstanceFleets: instance GHC.Generics.Generic Network.AWS.EMR.ListInstanceFleets.ListInstanceFleets
+ Network.AWS.EMR.ListInstanceFleets: instance GHC.Generics.Generic Network.AWS.EMR.ListInstanceFleets.ListInstanceFleetsResponse
+ Network.AWS.EMR.ListInstanceFleets: instance GHC.Read.Read Network.AWS.EMR.ListInstanceFleets.ListInstanceFleets
+ Network.AWS.EMR.ListInstanceFleets: instance GHC.Read.Read Network.AWS.EMR.ListInstanceFleets.ListInstanceFleetsResponse
+ Network.AWS.EMR.ListInstanceFleets: instance GHC.Show.Show Network.AWS.EMR.ListInstanceFleets.ListInstanceFleets
+ Network.AWS.EMR.ListInstanceFleets: instance GHC.Show.Show Network.AWS.EMR.ListInstanceFleets.ListInstanceFleetsResponse
+ Network.AWS.EMR.ListInstanceFleets: instance Network.AWS.Data.Headers.ToHeaders Network.AWS.EMR.ListInstanceFleets.ListInstanceFleets
+ Network.AWS.EMR.ListInstanceFleets: instance Network.AWS.Data.Path.ToPath Network.AWS.EMR.ListInstanceFleets.ListInstanceFleets
+ Network.AWS.EMR.ListInstanceFleets: instance Network.AWS.Data.Query.ToQuery Network.AWS.EMR.ListInstanceFleets.ListInstanceFleets
+ Network.AWS.EMR.ListInstanceFleets: instance Network.AWS.Pager.AWSPager Network.AWS.EMR.ListInstanceFleets.ListInstanceFleets
+ Network.AWS.EMR.ListInstanceFleets: instance Network.AWS.Types.AWSRequest Network.AWS.EMR.ListInstanceFleets.ListInstanceFleets
+ Network.AWS.EMR.ListInstanceFleets: lifClusterId :: Lens' ListInstanceFleets Text
+ Network.AWS.EMR.ListInstanceFleets: lifMarker :: Lens' ListInstanceFleets (Maybe Text)
+ Network.AWS.EMR.ListInstanceFleets: lifrsInstanceFleets :: Lens' ListInstanceFleetsResponse [InstanceFleet]
+ Network.AWS.EMR.ListInstanceFleets: lifrsMarker :: Lens' ListInstanceFleetsResponse (Maybe Text)
+ Network.AWS.EMR.ListInstanceFleets: lifrsResponseStatus :: Lens' ListInstanceFleetsResponse Int
+ Network.AWS.EMR.ListInstanceFleets: listInstanceFleets :: Text -> ListInstanceFleets
+ Network.AWS.EMR.ListInstanceFleets: listInstanceFleetsResponse :: Int -> ListInstanceFleetsResponse
+ Network.AWS.EMR.ListInstances: liInstanceFleetId :: Lens' ListInstances (Maybe Text)
+ Network.AWS.EMR.ListInstances: liInstanceFleetType :: Lens' ListInstances (Maybe InstanceFleetType)
+ Network.AWS.EMR.ModifyInstanceFleet: data ModifyInstanceFleet
+ Network.AWS.EMR.ModifyInstanceFleet: data ModifyInstanceFleetResponse
+ Network.AWS.EMR.ModifyInstanceFleet: instance Control.DeepSeq.NFData Network.AWS.EMR.ModifyInstanceFleet.ModifyInstanceFleet
+ Network.AWS.EMR.ModifyInstanceFleet: instance Control.DeepSeq.NFData Network.AWS.EMR.ModifyInstanceFleet.ModifyInstanceFleetResponse
+ Network.AWS.EMR.ModifyInstanceFleet: instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.EMR.ModifyInstanceFleet.ModifyInstanceFleet
+ Network.AWS.EMR.ModifyInstanceFleet: instance Data.Data.Data Network.AWS.EMR.ModifyInstanceFleet.ModifyInstanceFleet
+ Network.AWS.EMR.ModifyInstanceFleet: instance Data.Data.Data Network.AWS.EMR.ModifyInstanceFleet.ModifyInstanceFleetResponse
+ Network.AWS.EMR.ModifyInstanceFleet: instance Data.Hashable.Class.Hashable Network.AWS.EMR.ModifyInstanceFleet.ModifyInstanceFleet
+ Network.AWS.EMR.ModifyInstanceFleet: instance GHC.Classes.Eq Network.AWS.EMR.ModifyInstanceFleet.ModifyInstanceFleet
+ Network.AWS.EMR.ModifyInstanceFleet: instance GHC.Classes.Eq Network.AWS.EMR.ModifyInstanceFleet.ModifyInstanceFleetResponse
+ Network.AWS.EMR.ModifyInstanceFleet: instance GHC.Generics.Generic Network.AWS.EMR.ModifyInstanceFleet.ModifyInstanceFleet
+ Network.AWS.EMR.ModifyInstanceFleet: instance GHC.Generics.Generic Network.AWS.EMR.ModifyInstanceFleet.ModifyInstanceFleetResponse
+ Network.AWS.EMR.ModifyInstanceFleet: instance GHC.Read.Read Network.AWS.EMR.ModifyInstanceFleet.ModifyInstanceFleet
+ Network.AWS.EMR.ModifyInstanceFleet: instance GHC.Read.Read Network.AWS.EMR.ModifyInstanceFleet.ModifyInstanceFleetResponse
+ Network.AWS.EMR.ModifyInstanceFleet: instance GHC.Show.Show Network.AWS.EMR.ModifyInstanceFleet.ModifyInstanceFleet
+ Network.AWS.EMR.ModifyInstanceFleet: instance GHC.Show.Show Network.AWS.EMR.ModifyInstanceFleet.ModifyInstanceFleetResponse
+ Network.AWS.EMR.ModifyInstanceFleet: instance Network.AWS.Data.Headers.ToHeaders Network.AWS.EMR.ModifyInstanceFleet.ModifyInstanceFleet
+ Network.AWS.EMR.ModifyInstanceFleet: instance Network.AWS.Data.Path.ToPath Network.AWS.EMR.ModifyInstanceFleet.ModifyInstanceFleet
+ Network.AWS.EMR.ModifyInstanceFleet: instance Network.AWS.Data.Query.ToQuery Network.AWS.EMR.ModifyInstanceFleet.ModifyInstanceFleet
+ Network.AWS.EMR.ModifyInstanceFleet: instance Network.AWS.Types.AWSRequest Network.AWS.EMR.ModifyInstanceFleet.ModifyInstanceFleet
+ Network.AWS.EMR.ModifyInstanceFleet: mifClusterId :: Lens' ModifyInstanceFleet Text
+ Network.AWS.EMR.ModifyInstanceFleet: mifInstanceFleet :: Lens' ModifyInstanceFleet InstanceFleetModifyConfig
+ Network.AWS.EMR.ModifyInstanceFleet: modifyInstanceFleet :: Text -> InstanceFleetModifyConfig -> ModifyInstanceFleet
+ Network.AWS.EMR.ModifyInstanceFleet: modifyInstanceFleetResponse :: ModifyInstanceFleetResponse
+ Network.AWS.EMR.RunJobFlow: rjfCustomAMIId :: Lens' RunJobFlow (Maybe Text)
+ Network.AWS.EMR.RunJobFlow: rjfEBSRootVolumeSize :: Lens' RunJobFlow (Maybe Int)
+ Network.AWS.EMR.RunJobFlow: rjfRepoUpgradeOnBoot :: Lens' RunJobFlow (Maybe RepoUpgradeOnBoot)
+ Network.AWS.EMR.Types: CSCRCInstanceFleetTimeout :: ClusterStateChangeReasonCode
+ Network.AWS.EMR.Types: IFSBootstrapping :: InstanceFleetState
+ Network.AWS.EMR.Types: IFSCRCClusterTerminated :: InstanceFleetStateChangeReasonCode
+ Network.AWS.EMR.Types: IFSCRCInstanceFailure :: InstanceFleetStateChangeReasonCode
+ Network.AWS.EMR.Types: IFSCRCInternalError :: InstanceFleetStateChangeReasonCode
+ Network.AWS.EMR.Types: IFSCRCValidationError :: InstanceFleetStateChangeReasonCode
+ Network.AWS.EMR.Types: IFSProvisioning :: InstanceFleetState
+ Network.AWS.EMR.Types: IFSResizing :: InstanceFleetState
+ Network.AWS.EMR.Types: IFSRunning :: InstanceFleetState
+ Network.AWS.EMR.Types: IFSSuspended :: InstanceFleetState
+ Network.AWS.EMR.Types: IFSTerminated :: InstanceFleetState
+ Network.AWS.EMR.Types: IFSTerminating :: InstanceFleetState
+ Network.AWS.EMR.Types: IFTCore :: InstanceFleetType
+ Network.AWS.EMR.Types: IFTMaster :: InstanceFleetType
+ Network.AWS.EMR.Types: IFTTask :: InstanceFleetType
+ Network.AWS.EMR.Types: InstanceFleet :: InstanceCollectionType
+ Network.AWS.EMR.Types: InstanceGroup :: InstanceCollectionType
+ Network.AWS.EMR.Types: RUOBNone :: RepoUpgradeOnBoot
+ Network.AWS.EMR.Types: RUOBSecurity :: RepoUpgradeOnBoot
+ Network.AWS.EMR.Types: SPTASwitchToOnDemand :: SpotProvisioningTimeoutAction
+ Network.AWS.EMR.Types: SPTATerminateCluster :: SpotProvisioningTimeoutAction
+ Network.AWS.EMR.Types: cluCustomAMIId :: Lens' Cluster (Maybe Text)
+ Network.AWS.EMR.Types: cluEBSRootVolumeSize :: Lens' Cluster (Maybe Int)
+ Network.AWS.EMR.Types: cluInstanceCollectionType :: Lens' Cluster (Maybe InstanceCollectionType)
+ Network.AWS.EMR.Types: cluRepoUpgradeOnBoot :: Lens' Cluster (Maybe RepoUpgradeOnBoot)
+ Network.AWS.EMR.Types: data InstanceCollectionType
+ Network.AWS.EMR.Types: data InstanceFleet
+ Network.AWS.EMR.Types: data InstanceFleetConfig
+ Network.AWS.EMR.Types: data InstanceFleetModifyConfig
+ Network.AWS.EMR.Types: data InstanceFleetProvisioningSpecifications
+ Network.AWS.EMR.Types: data InstanceFleetState
+ Network.AWS.EMR.Types: data InstanceFleetStateChangeReason
+ Network.AWS.EMR.Types: data InstanceFleetStateChangeReasonCode
+ Network.AWS.EMR.Types: data InstanceFleetStatus
+ Network.AWS.EMR.Types: data InstanceFleetTimeline
+ Network.AWS.EMR.Types: data InstanceFleetType
+ Network.AWS.EMR.Types: data InstanceTypeConfig
+ Network.AWS.EMR.Types: data InstanceTypeSpecification
+ Network.AWS.EMR.Types: data RepoUpgradeOnBoot
+ Network.AWS.EMR.Types: data SpotProvisioningSpecification
+ Network.AWS.EMR.Types: data SpotProvisioningTimeoutAction
+ Network.AWS.EMR.Types: eiaRequestedEC2AvailabilityZones :: Lens' EC2InstanceAttributes [Text]
+ Network.AWS.EMR.Types: eiaRequestedEC2SubnetIds :: Lens' EC2InstanceAttributes [Text]
+ Network.AWS.EMR.Types: iInstanceFleetId :: Lens' Instance (Maybe Text)
+ Network.AWS.EMR.Types: iInstanceType :: Lens' Instance (Maybe Text)
+ Network.AWS.EMR.Types: iMarket :: Lens' Instance (Maybe MarketType)
+ Network.AWS.EMR.Types: ifId :: Lens' InstanceFleet (Maybe Text)
+ Network.AWS.EMR.Types: ifInstanceFleetType :: Lens' InstanceFleet (Maybe InstanceFleetType)
+ Network.AWS.EMR.Types: ifInstanceTypeSpecifications :: Lens' InstanceFleet [InstanceTypeSpecification]
+ Network.AWS.EMR.Types: ifLaunchSpecifications :: Lens' InstanceFleet (Maybe InstanceFleetProvisioningSpecifications)
+ Network.AWS.EMR.Types: ifName :: Lens' InstanceFleet (Maybe Text)
+ Network.AWS.EMR.Types: ifProvisionedOnDemandCapacity :: Lens' InstanceFleet (Maybe Natural)
+ Network.AWS.EMR.Types: ifProvisionedSpotCapacity :: Lens' InstanceFleet (Maybe Natural)
+ Network.AWS.EMR.Types: ifStatus :: Lens' InstanceFleet (Maybe InstanceFleetStatus)
+ Network.AWS.EMR.Types: ifTargetOnDemandCapacity :: Lens' InstanceFleet (Maybe Natural)
+ Network.AWS.EMR.Types: ifTargetSpotCapacity :: Lens' InstanceFleet (Maybe Natural)
+ Network.AWS.EMR.Types: ifcInstanceFleetType :: Lens' InstanceFleetConfig InstanceFleetType
+ Network.AWS.EMR.Types: ifcInstanceTypeConfigs :: Lens' InstanceFleetConfig [InstanceTypeConfig]
+ Network.AWS.EMR.Types: ifcLaunchSpecifications :: Lens' InstanceFleetConfig (Maybe InstanceFleetProvisioningSpecifications)
+ Network.AWS.EMR.Types: ifcName :: Lens' InstanceFleetConfig (Maybe Text)
+ Network.AWS.EMR.Types: ifcTargetOnDemandCapacity :: Lens' InstanceFleetConfig (Maybe Natural)
+ Network.AWS.EMR.Types: ifcTargetSpotCapacity :: Lens' InstanceFleetConfig (Maybe Natural)
+ Network.AWS.EMR.Types: ifmcInstanceFleetId :: Lens' InstanceFleetModifyConfig Text
+ Network.AWS.EMR.Types: ifmcTargetOnDemandCapacity :: Lens' InstanceFleetModifyConfig (Maybe Natural)
+ Network.AWS.EMR.Types: ifmcTargetSpotCapacity :: Lens' InstanceFleetModifyConfig (Maybe Natural)
+ Network.AWS.EMR.Types: ifpsSpotSpecification :: Lens' InstanceFleetProvisioningSpecifications SpotProvisioningSpecification
+ Network.AWS.EMR.Types: ifsState :: Lens' InstanceFleetStatus (Maybe InstanceFleetState)
+ Network.AWS.EMR.Types: ifsStateChangeReason :: Lens' InstanceFleetStatus (Maybe InstanceFleetStateChangeReason)
+ Network.AWS.EMR.Types: ifsTimeline :: Lens' InstanceFleetStatus (Maybe InstanceFleetTimeline)
+ Network.AWS.EMR.Types: ifscrCode :: Lens' InstanceFleetStateChangeReason (Maybe InstanceFleetStateChangeReasonCode)
+ Network.AWS.EMR.Types: ifscrMessage :: Lens' InstanceFleetStateChangeReason (Maybe Text)
+ Network.AWS.EMR.Types: iftCreationDateTime :: Lens' InstanceFleetTimeline (Maybe UTCTime)
+ Network.AWS.EMR.Types: iftEndDateTime :: Lens' InstanceFleetTimeline (Maybe UTCTime)
+ Network.AWS.EMR.Types: iftReadyDateTime :: Lens' InstanceFleetTimeline (Maybe UTCTime)
+ Network.AWS.EMR.Types: instanceFleet :: InstanceFleet
+ Network.AWS.EMR.Types: instanceFleetConfig :: InstanceFleetType -> InstanceFleetConfig
+ Network.AWS.EMR.Types: instanceFleetModifyConfig :: Text -> InstanceFleetModifyConfig
+ Network.AWS.EMR.Types: instanceFleetProvisioningSpecifications :: SpotProvisioningSpecification -> InstanceFleetProvisioningSpecifications
+ Network.AWS.EMR.Types: instanceFleetStateChangeReason :: InstanceFleetStateChangeReason
+ Network.AWS.EMR.Types: instanceFleetStatus :: InstanceFleetStatus
+ Network.AWS.EMR.Types: instanceFleetTimeline :: InstanceFleetTimeline
+ Network.AWS.EMR.Types: instanceTypeConfig :: Text -> InstanceTypeConfig
+ Network.AWS.EMR.Types: instanceTypeSpecification :: InstanceTypeSpecification
+ Network.AWS.EMR.Types: itcBidPrice :: Lens' InstanceTypeConfig (Maybe Text)
+ Network.AWS.EMR.Types: itcBidPriceAsPercentageOfOnDemandPrice :: Lens' InstanceTypeConfig (Maybe Double)
+ Network.AWS.EMR.Types: itcConfigurations :: Lens' InstanceTypeConfig [Configuration]
+ Network.AWS.EMR.Types: itcEBSConfiguration :: Lens' InstanceTypeConfig (Maybe EBSConfiguration)
+ Network.AWS.EMR.Types: itcInstanceType :: Lens' InstanceTypeConfig Text
+ Network.AWS.EMR.Types: itcWeightedCapacity :: Lens' InstanceTypeConfig (Maybe Natural)
+ Network.AWS.EMR.Types: itsBidPrice :: Lens' InstanceTypeSpecification (Maybe Text)
+ Network.AWS.EMR.Types: itsBidPriceAsPercentageOfOnDemandPrice :: Lens' InstanceTypeSpecification (Maybe Double)
+ Network.AWS.EMR.Types: itsConfigurations :: Lens' InstanceTypeSpecification [Configuration]
+ Network.AWS.EMR.Types: itsEBSBlockDevices :: Lens' InstanceTypeSpecification [EBSBlockDevice]
+ Network.AWS.EMR.Types: itsEBSOptimized :: Lens' InstanceTypeSpecification (Maybe Bool)
+ Network.AWS.EMR.Types: itsInstanceType :: Lens' InstanceTypeSpecification (Maybe Text)
+ Network.AWS.EMR.Types: itsWeightedCapacity :: Lens' InstanceTypeSpecification (Maybe Natural)
+ Network.AWS.EMR.Types: jficEC2SubnetIds :: Lens' JobFlowInstancesConfig [Text]
+ Network.AWS.EMR.Types: jficInstanceFleets :: Lens' JobFlowInstancesConfig [InstanceFleetConfig]
+ Network.AWS.EMR.Types: ptAvailabilityZones :: Lens' PlacementType [Text]
+ Network.AWS.EMR.Types: spotProvisioningSpecification :: Natural -> SpotProvisioningTimeoutAction -> SpotProvisioningSpecification
+ Network.AWS.EMR.Types: spsBlockDurationMinutes :: Lens' SpotProvisioningSpecification (Maybe Natural)
+ Network.AWS.EMR.Types: spsTimeoutAction :: Lens' SpotProvisioningSpecification SpotProvisioningTimeoutAction
+ Network.AWS.EMR.Types: spsTimeoutDurationMinutes :: Lens' SpotProvisioningSpecification Natural
- Network.AWS.EMR: placementType :: Text -> PlacementType
+ Network.AWS.EMR: placementType :: PlacementType
- Network.AWS.EMR: ptAvailabilityZone :: Lens' PlacementType Text
+ Network.AWS.EMR: ptAvailabilityZone :: Lens' PlacementType (Maybe Text)
- Network.AWS.EMR.Types: placementType :: Text -> PlacementType
+ Network.AWS.EMR.Types: placementType :: PlacementType
- Network.AWS.EMR.Types: ptAvailabilityZone :: Lens' PlacementType Text
+ Network.AWS.EMR.Types: ptAvailabilityZone :: Lens' PlacementType (Maybe Text)
Files
- README.md +1/−1
- amazonka-emr.cabal +19/−11
- fixture/AddInstanceFleet.yaml +10/−0
- fixture/AddInstanceFleetResponse.proto +0/−0
- fixture/ListInstanceFleets.yaml +10/−0
- fixture/ListInstanceFleetsResponse.proto +0/−0
- fixture/ModifyInstanceFleet.yaml +10/−0
- fixture/ModifyInstanceFleetResponse.proto +0/−0
- gen/Network/AWS/EMR.hs +153/−27
- gen/Network/AWS/EMR/AddInstanceFleet.hs +156/−0
- gen/Network/AWS/EMR/AddInstanceGroups.hs +28/−27
- gen/Network/AWS/EMR/AddJobFlowSteps.hs +28/−29
- gen/Network/AWS/EMR/AddTags.hs +22/−24
- gen/Network/AWS/EMR/CancelSteps.hs +24/−26
- gen/Network/AWS/EMR/CreateSecurityConfiguration.hs +29/−26
- gen/Network/AWS/EMR/DeleteSecurityConfiguration.hs +21/−20
- gen/Network/AWS/EMR/DescribeCluster.hs +23/−24
- gen/Network/AWS/EMR/DescribeSecurityConfiguration.hs +29/−26
- gen/Network/AWS/EMR/DescribeStep.hs +24/−25
- gen/Network/AWS/EMR/ListBootstrapActions.hs +29/−28
- gen/Network/AWS/EMR/ListClusters.hs +36/−32
- gen/Network/AWS/EMR/ListInstanceFleets.hs +167/−0
- gen/Network/AWS/EMR/ListInstanceGroups.hs +29/−28
- gen/Network/AWS/EMR/ListInstances.hs +59/−35
- gen/Network/AWS/EMR/ListSecurityConfigurations.hs +27/−25
- gen/Network/AWS/EMR/ListSteps.hs +36/−32
- gen/Network/AWS/EMR/ModifyInstanceFleet.hs +122/−0
- gen/Network/AWS/EMR/ModifyInstanceGroups.hs +21/−20
- gen/Network/AWS/EMR/PutAutoScalingPolicy.hs +35/−31
- gen/Network/AWS/EMR/RemoveAutoScalingPolicy.hs +23/−23
- gen/Network/AWS/EMR/RemoveTags.hs +22/−23
- gen/Network/AWS/EMR/RunJobFlow.hs +115/−83
- gen/Network/AWS/EMR/SetTerminationProtection.hs +30/−27
- gen/Network/AWS/EMR/SetVisibleToAllUsers.hs +25/−23
- gen/Network/AWS/EMR/TerminateJobFlows.hs +22/−21
- gen/Network/AWS/EMR/Types.hs +148/−28
- gen/Network/AWS/EMR/Types/Product.hs +4402/−3544
- gen/Network/AWS/EMR/Types/Sum.hs +352/−134
- gen/Network/AWS/EMR/Waiters.hs +52/−53
- test/Main.hs +2/−2
- test/Test/AWS/Gen/EMR.hs +58/−4
README.md view
@@ -8,7 +8,7 @@ ## Version -`1.4.5`+`1.5.0` ## Description
amazonka-emr.cabal view
@@ -1,13 +1,13 @@ name: amazonka-emr-version: 1.4.5+version: 1.5.0 synopsis: Amazon Elastic MapReduce SDK. homepage: https://github.com/brendanhay/amazonka bug-reports: https://github.com/brendanhay/amazonka/issues-license: OtherLicense+license: MPL-2.0 license-file: LICENSE author: Brendan Hay-maintainer: Brendan Hay <brendan.g.hay@gmail.com>-copyright: Copyright (c) 2013-2016 Brendan Hay+maintainer: Brendan Hay <brendan.g.hay+amazonka@gmail.com>+copyright: Copyright (c) 2013-2017 Brendan Hay category: Network, AWS, Cloud, Distributed Computing build-type: Simple cabal-version: >= 1.10@@ -29,17 +29,23 @@ to get started. source-repository head- type: git- location: git://github.com/brendanhay/amazonka.git+ type: git+ location: git://github.com/brendanhay/amazonka.git+ subdir: amazonka-emr library default-language: Haskell2010 hs-source-dirs: src gen - ghc-options: -Wall+ ghc-options:+ -Wall+ -fwarn-incomplete-uni-patterns+ -fwarn-incomplete-record-updates+ -funbox-strict-fields exposed-modules: Network.AWS.EMR+ , Network.AWS.EMR.AddInstanceFleet , Network.AWS.EMR.AddInstanceGroups , Network.AWS.EMR.AddJobFlowSteps , Network.AWS.EMR.AddTags@@ -51,10 +57,12 @@ , Network.AWS.EMR.DescribeStep , Network.AWS.EMR.ListBootstrapActions , Network.AWS.EMR.ListClusters+ , Network.AWS.EMR.ListInstanceFleets , Network.AWS.EMR.ListInstanceGroups , Network.AWS.EMR.ListInstances , Network.AWS.EMR.ListSecurityConfigurations , Network.AWS.EMR.ListSteps+ , Network.AWS.EMR.ModifyInstanceFleet , Network.AWS.EMR.ModifyInstanceGroups , Network.AWS.EMR.PutAutoScalingPolicy , Network.AWS.EMR.RemoveAutoScalingPolicy@@ -71,7 +79,7 @@ , Network.AWS.EMR.Types.Sum build-depends:- amazonka-core == 1.4.5.*+ amazonka-core == 1.5.0.* , base >= 4.7 && < 5 test-suite amazonka-emr-test@@ -91,9 +99,9 @@ , Test.AWS.EMR.Internal build-depends:- amazonka-core == 1.4.5.*- , amazonka-test == 1.4.5.*- , amazonka-emr == 1.4.5.*+ amazonka-core == 1.5.0.*+ , amazonka-test == 1.5.0.*+ , amazonka-emr , base , bytestring , tasty
+ fixture/AddInstanceFleet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/elasticmapreduce/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: elasticmapreduce.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/AddInstanceFleetResponse.proto view
+ fixture/ListInstanceFleets.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/elasticmapreduce/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: elasticmapreduce.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/ListInstanceFleetsResponse.proto view
+ fixture/ModifyInstanceFleet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/elasticmapreduce/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: elasticmapreduce.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/ModifyInstanceFleetResponse.proto view
gen/Network/AWS/EMR.hs view
@@ -5,9 +5,9 @@ -- | -- Module : Network.AWS.EMR--- Copyright : (c) 2013-2016 Brendan Hay+-- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) --@@ -85,12 +85,18 @@ -- ** ListSteps (Paginated) , module Network.AWS.EMR.ListSteps + -- ** AddInstanceFleet+ , module Network.AWS.EMR.AddInstanceFleet+ -- ** AddInstanceGroups , module Network.AWS.EMR.AddInstanceGroups -- ** DeleteSecurityConfiguration , module Network.AWS.EMR.DeleteSecurityConfiguration + -- ** ModifyInstanceFleet+ , module Network.AWS.EMR.ModifyInstanceFleet+ -- ** ListInstanceGroups (Paginated) , module Network.AWS.EMR.ListInstanceGroups @@ -112,6 +118,9 @@ -- ** DescribeSecurityConfiguration , module Network.AWS.EMR.DescribeSecurityConfiguration + -- ** ListInstanceFleets (Paginated)+ , module Network.AWS.EMR.ListInstanceFleets+ -- * Types -- ** ActionOnFailure@@ -138,6 +147,18 @@ -- ** ComparisonOperator , ComparisonOperator (..) + -- ** InstanceCollectionType+ , InstanceCollectionType (..)++ -- ** InstanceFleetState+ , InstanceFleetState (..)++ -- ** InstanceFleetStateChangeReasonCode+ , InstanceFleetStateChangeReasonCode (..)++ -- ** InstanceFleetType+ , InstanceFleetType (..)+ -- ** InstanceGroupState , InstanceGroupState (..) @@ -159,9 +180,15 @@ -- ** MarketType , MarketType (..) + -- ** RepoUpgradeOnBoot+ , RepoUpgradeOnBoot (..)+ -- ** ScaleDownBehavior , ScaleDownBehavior (..) + -- ** SpotProvisioningTimeoutAction+ , SpotProvisioningTimeoutAction (..)+ -- ** Statistic , Statistic (..) @@ -237,13 +264,17 @@ , Cluster , cluster , cluRequestedAMIVersion+ , cluEBSRootVolumeSize , cluEC2InstanceAttributes , cluNormalizedInstanceHours , cluConfigurations+ , cluCustomAMIId , cluAutoScalingRole , cluSecurityConfiguration , cluScaleDownBehavior+ , cluInstanceCollectionType , cluReleaseLabel+ , cluRepoUpgradeOnBoot , cluLogURI , cluRunningAMIVersion , cluMasterPublicDNSName@@ -329,10 +360,12 @@ , eiaEC2KeyName , eiaEmrManagedSlaveSecurityGroup , eiaAdditionalSlaveSecurityGroups+ , eiaRequestedEC2SubnetIds , eiaAdditionalMasterSecurityGroups , eiaIAMInstanceProfile , eiaEmrManagedMasterSecurityGroup , eiaEC2SubnetId+ , eiaRequestedEC2AvailabilityZones , eiaServiceAccessSecurityGroup , eiaEC2AvailabilityZone @@ -366,12 +399,71 @@ , iPublicDNSName , iEBSVolumes , iEC2InstanceId+ , iInstanceType+ , iMarket , iPrivateIPAddress+ , iInstanceFleetId , iId , iInstanceGroupId , iPrivateDNSName , iPublicIPAddress + -- ** InstanceFleet+ , InstanceFleet+ , instanceFleet+ , ifProvisionedSpotCapacity+ , ifStatus+ , ifTargetOnDemandCapacity+ , ifInstanceFleetType+ , ifInstanceTypeSpecifications+ , ifName+ , ifProvisionedOnDemandCapacity+ , ifTargetSpotCapacity+ , ifId+ , ifLaunchSpecifications++ -- ** InstanceFleetConfig+ , InstanceFleetConfig+ , instanceFleetConfig+ , ifcInstanceTypeConfigs+ , ifcTargetOnDemandCapacity+ , ifcName+ , ifcTargetSpotCapacity+ , ifcLaunchSpecifications+ , ifcInstanceFleetType++ -- ** InstanceFleetModifyConfig+ , InstanceFleetModifyConfig+ , instanceFleetModifyConfig+ , ifmcTargetOnDemandCapacity+ , ifmcTargetSpotCapacity+ , ifmcInstanceFleetId++ -- ** InstanceFleetProvisioningSpecifications+ , InstanceFleetProvisioningSpecifications+ , instanceFleetProvisioningSpecifications+ , ifpsSpotSpecification++ -- ** InstanceFleetStateChangeReason+ , InstanceFleetStateChangeReason+ , instanceFleetStateChangeReason+ , ifscrCode+ , ifscrMessage++ -- ** InstanceFleetStatus+ , InstanceFleetStatus+ , instanceFleetStatus+ , ifsState+ , ifsStateChangeReason+ , ifsTimeline++ -- ** InstanceFleetTimeline+ , InstanceFleetTimeline+ , instanceFleetTimeline+ , iftReadyDateTime+ , iftCreationDateTime+ , iftEndDateTime+ -- ** InstanceGroup , InstanceGroup , instanceGroup@@ -458,14 +550,37 @@ , itCreationDateTime , itEndDateTime + -- ** InstanceTypeConfig+ , InstanceTypeConfig+ , instanceTypeConfig+ , itcEBSConfiguration+ , itcBidPrice+ , itcWeightedCapacity+ , itcConfigurations+ , itcBidPriceAsPercentageOfOnDemandPrice+ , itcInstanceType++ -- ** InstanceTypeSpecification+ , InstanceTypeSpecification+ , instanceTypeSpecification+ , itsBidPrice+ , itsWeightedCapacity+ , itsConfigurations+ , itsEBSBlockDevices+ , itsInstanceType+ , itsEBSOptimized+ , itsBidPriceAsPercentageOfOnDemandPrice+ -- ** JobFlowInstancesConfig , JobFlowInstancesConfig , jobFlowInstancesConfig+ , jficInstanceFleets , jficEC2KeyName , jficSlaveInstanceType , jficInstanceCount , jficEmrManagedSlaveSecurityGroup , jficAdditionalSlaveSecurityGroups+ , jficEC2SubnetIds , jficHadoopVersion , jficAdditionalMasterSecurityGroups , jficEmrManagedMasterSecurityGroup@@ -492,6 +607,7 @@ -- ** PlacementType , PlacementType , placementType+ , ptAvailabilityZones , ptAvailabilityZone -- ** ScalingAction@@ -544,6 +660,13 @@ , sspcCoolDown , sspcScalingAdjustment + -- ** SpotProvisioningSpecification+ , SpotProvisioningSpecification+ , spotProvisioningSpecification+ , spsBlockDurationMinutes+ , spsTimeoutDurationMinutes+ , spsTimeoutAction+ -- ** Step , Step , step@@ -610,31 +733,34 @@ , vsSizeInGB ) where -import Network.AWS.EMR.AddInstanceGroups-import Network.AWS.EMR.AddJobFlowSteps-import Network.AWS.EMR.AddTags-import Network.AWS.EMR.CancelSteps-import Network.AWS.EMR.CreateSecurityConfiguration-import Network.AWS.EMR.DeleteSecurityConfiguration-import Network.AWS.EMR.DescribeCluster-import Network.AWS.EMR.DescribeSecurityConfiguration-import Network.AWS.EMR.DescribeStep-import Network.AWS.EMR.ListBootstrapActions-import Network.AWS.EMR.ListClusters-import Network.AWS.EMR.ListInstanceGroups-import Network.AWS.EMR.ListInstances-import Network.AWS.EMR.ListSecurityConfigurations-import Network.AWS.EMR.ListSteps-import Network.AWS.EMR.ModifyInstanceGroups-import Network.AWS.EMR.PutAutoScalingPolicy-import Network.AWS.EMR.RemoveAutoScalingPolicy-import Network.AWS.EMR.RemoveTags-import Network.AWS.EMR.RunJobFlow-import Network.AWS.EMR.SetTerminationProtection-import Network.AWS.EMR.SetVisibleToAllUsers-import Network.AWS.EMR.TerminateJobFlows-import Network.AWS.EMR.Types-import Network.AWS.EMR.Waiters+import Network.AWS.EMR.AddInstanceFleet+import Network.AWS.EMR.AddInstanceGroups+import Network.AWS.EMR.AddJobFlowSteps+import Network.AWS.EMR.AddTags+import Network.AWS.EMR.CancelSteps+import Network.AWS.EMR.CreateSecurityConfiguration+import Network.AWS.EMR.DeleteSecurityConfiguration+import Network.AWS.EMR.DescribeCluster+import Network.AWS.EMR.DescribeSecurityConfiguration+import Network.AWS.EMR.DescribeStep+import Network.AWS.EMR.ListBootstrapActions+import Network.AWS.EMR.ListClusters+import Network.AWS.EMR.ListInstanceFleets+import Network.AWS.EMR.ListInstanceGroups+import Network.AWS.EMR.ListInstances+import Network.AWS.EMR.ListSecurityConfigurations+import Network.AWS.EMR.ListSteps+import Network.AWS.EMR.ModifyInstanceFleet+import Network.AWS.EMR.ModifyInstanceGroups+import Network.AWS.EMR.PutAutoScalingPolicy+import Network.AWS.EMR.RemoveAutoScalingPolicy+import Network.AWS.EMR.RemoveTags+import Network.AWS.EMR.RunJobFlow+import Network.AWS.EMR.SetTerminationProtection+import Network.AWS.EMR.SetVisibleToAllUsers+import Network.AWS.EMR.TerminateJobFlows+import Network.AWS.EMR.Types+import Network.AWS.EMR.Waiters {- $errors Error matchers are designed for use with the functions provided by
+ gen/Network/AWS/EMR/AddInstanceFleet.hs view
@@ -0,0 +1,156 @@+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE TypeFamilies #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module : Network.AWS.EMR.AddInstanceFleet+-- Copyright : (c) 2013-2017 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)+--+-- Adds an instance fleet to a running cluster.+--+--+module Network.AWS.EMR.AddInstanceFleet+ (+ -- * Creating a Request+ addInstanceFleet+ , AddInstanceFleet+ -- * Request Lenses+ , aifClusterId+ , aifInstanceFleet++ -- * Destructuring the Response+ , addInstanceFleetResponse+ , AddInstanceFleetResponse+ -- * Response Lenses+ , aifrsClusterId+ , aifrsInstanceFleetId+ , aifrsResponseStatus+ ) where++import Network.AWS.EMR.Types+import Network.AWS.EMR.Types.Product+import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response++-- | /See:/ 'addInstanceFleet' smart constructor.+data AddInstanceFleet = AddInstanceFleet'+ { _aifClusterId :: !Text+ , _aifInstanceFleet :: !InstanceFleetConfig+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'AddInstanceFleet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aifClusterId' - The unique identifier of the cluster.+--+-- * 'aifInstanceFleet' - Specifies the configuration of the instance fleet.+addInstanceFleet+ :: Text -- ^ 'aifClusterId'+ -> InstanceFleetConfig -- ^ 'aifInstanceFleet'+ -> AddInstanceFleet+addInstanceFleet pClusterId_ pInstanceFleet_ =+ AddInstanceFleet'+ {_aifClusterId = pClusterId_, _aifInstanceFleet = pInstanceFleet_}+++-- | The unique identifier of the cluster.+aifClusterId :: Lens' AddInstanceFleet Text+aifClusterId = lens _aifClusterId (\ s a -> s{_aifClusterId = a});++-- | Specifies the configuration of the instance fleet.+aifInstanceFleet :: Lens' AddInstanceFleet InstanceFleetConfig+aifInstanceFleet = lens _aifInstanceFleet (\ s a -> s{_aifInstanceFleet = a});++instance AWSRequest AddInstanceFleet where+ type Rs AddInstanceFleet = AddInstanceFleetResponse+ request = postJSON emr+ response+ = receiveJSON+ (\ s h x ->+ AddInstanceFleetResponse' <$>+ (x .?> "ClusterId") <*> (x .?> "InstanceFleetId") <*>+ (pure (fromEnum s)))++instance Hashable AddInstanceFleet where++instance NFData AddInstanceFleet where++instance ToHeaders AddInstanceFleet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("ElasticMapReduce.AddInstanceFleet" :: ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON AddInstanceFleet where+ toJSON AddInstanceFleet'{..}+ = object+ (catMaybes+ [Just ("ClusterId" .= _aifClusterId),+ Just ("InstanceFleet" .= _aifInstanceFleet)])++instance ToPath AddInstanceFleet where+ toPath = const "/"++instance ToQuery AddInstanceFleet where+ toQuery = const mempty++-- | /See:/ 'addInstanceFleetResponse' smart constructor.+data AddInstanceFleetResponse = AddInstanceFleetResponse'+ { _aifrsClusterId :: !(Maybe Text)+ , _aifrsInstanceFleetId :: !(Maybe Text)+ , _aifrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'AddInstanceFleetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aifrsClusterId' - The unique identifier of the cluster.+--+-- * 'aifrsInstanceFleetId' - The unique identifier of the instance fleet.+--+-- * 'aifrsResponseStatus' - -- | The response status code.+addInstanceFleetResponse+ :: Int -- ^ 'aifrsResponseStatus'+ -> AddInstanceFleetResponse+addInstanceFleetResponse pResponseStatus_ =+ AddInstanceFleetResponse'+ { _aifrsClusterId = Nothing+ , _aifrsInstanceFleetId = Nothing+ , _aifrsResponseStatus = pResponseStatus_+ }+++-- | The unique identifier of the cluster.+aifrsClusterId :: Lens' AddInstanceFleetResponse (Maybe Text)+aifrsClusterId = lens _aifrsClusterId (\ s a -> s{_aifrsClusterId = a});++-- | The unique identifier of the instance fleet.+aifrsInstanceFleetId :: Lens' AddInstanceFleetResponse (Maybe Text)+aifrsInstanceFleetId = lens _aifrsInstanceFleetId (\ s a -> s{_aifrsInstanceFleetId = a});++-- | -- | The response status code.+aifrsResponseStatus :: Lens' AddInstanceFleetResponse Int+aifrsResponseStatus = lens _aifrsResponseStatus (\ s a -> s{_aifrsResponseStatus = a});++instance NFData AddInstanceFleetResponse where
gen/Network/AWS/EMR/AddInstanceGroups.hs view
@@ -12,9 +12,9 @@ -- | -- Module : Network.AWS.EMR.AddInstanceGroups--- Copyright : (c) 2013-2016 Brendan Hay+-- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) --@@ -39,12 +39,12 @@ , aigrsResponseStatus ) where -import Network.AWS.EMR.Types-import Network.AWS.EMR.Types.Product-import Network.AWS.Lens-import Network.AWS.Prelude-import Network.AWS.Request-import Network.AWS.Response+import Network.AWS.EMR.Types+import Network.AWS.EMR.Types.Product+import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response -- | Input to an AddInstanceGroups call. --@@ -52,10 +52,11 @@ -- -- /See:/ 'addInstanceGroups' smart constructor. data AddInstanceGroups = AddInstanceGroups'- { _aigInstanceGroups :: ![InstanceGroupConfig]- , _aigJobFlowId :: !Text- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _aigInstanceGroups :: ![InstanceGroupConfig]+ , _aigJobFlowId :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'AddInstanceGroups' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -67,11 +68,9 @@ :: Text -- ^ 'aigJobFlowId' -> AddInstanceGroups addInstanceGroups pJobFlowId_ =- AddInstanceGroups'- { _aigInstanceGroups = mempty- , _aigJobFlowId = pJobFlowId_- }+ AddInstanceGroups' {_aigInstanceGroups = mempty, _aigJobFlowId = pJobFlowId_} + -- | Instance groups to add. aigInstanceGroups :: Lens' AddInstanceGroups [InstanceGroupConfig] aigInstanceGroups = lens _aigInstanceGroups (\ s a -> s{_aigInstanceGroups = a}) . _Coerce;@@ -91,9 +90,9 @@ (x .?> "InstanceGroupIds" .!@ mempty) <*> (pure (fromEnum s))) -instance Hashable AddInstanceGroups+instance Hashable AddInstanceGroups where -instance NFData AddInstanceGroups+instance NFData AddInstanceGroups where instance ToHeaders AddInstanceGroups where toHeaders@@ -123,11 +122,12 @@ -- -- /See:/ 'addInstanceGroupsResponse' smart constructor. data AddInstanceGroupsResponse = AddInstanceGroupsResponse'- { _aigrsJobFlowId :: !(Maybe Text)- , _aigrsInstanceGroupIds :: !(Maybe [Text])- , _aigrsResponseStatus :: !Int- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _aigrsJobFlowId :: !(Maybe Text)+ , _aigrsInstanceGroupIds :: !(Maybe [Text])+ , _aigrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'AddInstanceGroupsResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -141,12 +141,13 @@ :: Int -- ^ 'aigrsResponseStatus' -> AddInstanceGroupsResponse addInstanceGroupsResponse pResponseStatus_ =- AddInstanceGroupsResponse'- { _aigrsJobFlowId = Nothing- , _aigrsInstanceGroupIds = Nothing- , _aigrsResponseStatus = pResponseStatus_- }+ AddInstanceGroupsResponse'+ { _aigrsJobFlowId = Nothing+ , _aigrsInstanceGroupIds = Nothing+ , _aigrsResponseStatus = pResponseStatus_+ } + -- | The job flow ID in which the instance groups are added. aigrsJobFlowId :: Lens' AddInstanceGroupsResponse (Maybe Text) aigrsJobFlowId = lens _aigrsJobFlowId (\ s a -> s{_aigrsJobFlowId = a});@@ -159,4 +160,4 @@ aigrsResponseStatus :: Lens' AddInstanceGroupsResponse Int aigrsResponseStatus = lens _aigrsResponseStatus (\ s a -> s{_aigrsResponseStatus = a}); -instance NFData AddInstanceGroupsResponse+instance NFData AddInstanceGroupsResponse where
gen/Network/AWS/EMR/AddJobFlowSteps.hs view
@@ -12,22 +12,22 @@ -- | -- Module : Network.AWS.EMR.AddJobFlowSteps--- Copyright : (c) 2013-2016 Brendan Hay+-- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) ----- AddJobFlowSteps adds new steps to a running job flow. A maximum of 256 steps are allowed in each job flow.+-- AddJobFlowSteps adds new steps to a running cluster. A maximum of 256 steps are allowed in each job flow. -- ----- If your job flow is long-running (such as a Hive data warehouse) or complex, you may require more than 256 steps to process your data. You can bypass the 256-step limitation in various ways, including using the SSH shell to connect to the master node and submitting queries directly to the software running on the master node, such as Hive and Hadoop. For more information on how to do this, see <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/AddMoreThan256Steps.html Add More than 256 Steps to a Job Flow> in the /Amazon EMR Developer's Guide/ .+-- If your cluster is long-running (such as a Hive data warehouse) or complex, you may require more than 256 steps to process your data. You can bypass the 256-step limitation in various ways, including using SSH to connect to the master node and submitting queries directly to the software running on the master node, such as Hive and Hadoop. For more information on how to do this, see <http://docs.aws.amazon.com/ElasticMapReduce/latest/ManagementGuide/AddMoreThan256Steps.html Add More than 256 Steps to a Cluster> in the /Amazon EMR Management Guide/ . ----- A step specifies the location of a JAR file stored either on the master node of the job flow or in Amazon S3. Each step is performed by the main function of the main class of the JAR file. The main class can be specified either in the manifest of the JAR or by using the MainFunction parameter of the step.+-- A step specifies the location of a JAR file stored either on the master node of the cluster or in Amazon S3. Each step is performed by the main function of the main class of the JAR file. The main class can be specified either in the manifest of the JAR or by using the MainFunction parameter of the step. -- -- Amazon EMR executes each step in the order listed. For a step to be considered complete, the main function must exit with a zero exit code and all Hadoop jobs started while the step was running must have completed and run successfully. ----- You can only add steps to a job flow that is in one of the following states: STARTING, BOOTSTRAPPING, RUNNING, or WAITING.+-- You can only add steps to a cluster that is in one of the following states: STARTING, BOOTSTRAPPING, RUNNING, or WAITING. -- module Network.AWS.EMR.AddJobFlowSteps (@@ -46,12 +46,12 @@ , ajfsrsResponseStatus ) where -import Network.AWS.EMR.Types-import Network.AWS.EMR.Types.Product-import Network.AWS.Lens-import Network.AWS.Prelude-import Network.AWS.Request-import Network.AWS.Response+import Network.AWS.EMR.Types+import Network.AWS.EMR.Types.Product+import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response -- | The input argument to the 'AddJobFlowSteps' operation. --@@ -59,10 +59,11 @@ -- -- /See:/ 'addJobFlowSteps' smart constructor. data AddJobFlowSteps = AddJobFlowSteps'- { _ajfsJobFlowId :: !Text- , _ajfsSteps :: ![StepConfig]- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _ajfsJobFlowId :: !Text+ , _ajfsSteps :: ![StepConfig]+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'AddJobFlowSteps' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -74,11 +75,9 @@ :: Text -- ^ 'ajfsJobFlowId' -> AddJobFlowSteps addJobFlowSteps pJobFlowId_ =- AddJobFlowSteps'- { _ajfsJobFlowId = pJobFlowId_- , _ajfsSteps = mempty- }+ AddJobFlowSteps' {_ajfsJobFlowId = pJobFlowId_, _ajfsSteps = mempty} + -- | A string that uniquely identifies the job flow. This identifier is returned by 'RunJobFlow' and can also be obtained from 'ListClusters' . ajfsJobFlowId :: Lens' AddJobFlowSteps Text ajfsJobFlowId = lens _ajfsJobFlowId (\ s a -> s{_ajfsJobFlowId = a});@@ -96,9 +95,9 @@ AddJobFlowStepsResponse' <$> (x .?> "StepIds" .!@ mempty) <*> (pure (fromEnum s))) -instance Hashable AddJobFlowSteps+instance Hashable AddJobFlowSteps where -instance NFData AddJobFlowSteps+instance NFData AddJobFlowSteps where instance ToHeaders AddJobFlowSteps where toHeaders@@ -128,10 +127,11 @@ -- -- /See:/ 'addJobFlowStepsResponse' smart constructor. data AddJobFlowStepsResponse = AddJobFlowStepsResponse'- { _ajfsrsStepIds :: !(Maybe [Text])- , _ajfsrsResponseStatus :: !Int- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _ajfsrsStepIds :: !(Maybe [Text])+ , _ajfsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'AddJobFlowStepsResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -143,11 +143,10 @@ :: Int -- ^ 'ajfsrsResponseStatus' -> AddJobFlowStepsResponse addJobFlowStepsResponse pResponseStatus_ =- AddJobFlowStepsResponse'- { _ajfsrsStepIds = Nothing- , _ajfsrsResponseStatus = pResponseStatus_- }+ AddJobFlowStepsResponse'+ {_ajfsrsStepIds = Nothing, _ajfsrsResponseStatus = pResponseStatus_} + -- | The identifiers of the list of steps added to the job flow. ajfsrsStepIds :: Lens' AddJobFlowStepsResponse [Text] ajfsrsStepIds = lens _ajfsrsStepIds (\ s a -> s{_ajfsrsStepIds = a}) . _Default . _Coerce;@@ -156,4 +155,4 @@ ajfsrsResponseStatus :: Lens' AddJobFlowStepsResponse Int ajfsrsResponseStatus = lens _ajfsrsResponseStatus (\ s a -> s{_ajfsrsResponseStatus = a}); -instance NFData AddJobFlowStepsResponse+instance NFData AddJobFlowStepsResponse where
gen/Network/AWS/EMR/AddTags.hs view
@@ -12,9 +12,9 @@ -- | -- Module : Network.AWS.EMR.AddTags--- Copyright : (c) 2013-2016 Brendan Hay+-- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) --@@ -37,12 +37,12 @@ , atrsResponseStatus ) where -import Network.AWS.EMR.Types-import Network.AWS.EMR.Types.Product-import Network.AWS.Lens-import Network.AWS.Prelude-import Network.AWS.Request-import Network.AWS.Response+import Network.AWS.EMR.Types+import Network.AWS.EMR.Types.Product+import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response -- | This input identifies a cluster and a list of tags to attach. --@@ -50,10 +50,11 @@ -- -- /See:/ 'addTags' smart constructor. data AddTags = AddTags'- { _atResourceId :: !Text- , _atTags :: ![Tag]- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _atResourceId :: !Text+ , _atTags :: ![Tag]+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'AddTags' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -64,12 +65,9 @@ addTags :: Text -- ^ 'atResourceId' -> AddTags-addTags pResourceId_ =- AddTags'- { _atResourceId = pResourceId_- , _atTags = mempty- }+addTags pResourceId_ = AddTags' {_atResourceId = pResourceId_, _atTags = mempty} + -- | The Amazon EMR resource identifier to which tags will be added. This value must be a cluster identifier. atResourceId :: Lens' AddTags Text atResourceId = lens _atResourceId (\ s a -> s{_atResourceId = a});@@ -85,9 +83,9 @@ = receiveEmpty (\ s h x -> AddTagsResponse' <$> (pure (fromEnum s))) -instance Hashable AddTags+instance Hashable AddTags where -instance NFData AddTags+instance NFData AddTags where instance ToHeaders AddTags where toHeaders@@ -117,9 +115,10 @@ -- -- /See:/ 'addTagsResponse' smart constructor. newtype AddTagsResponse = AddTagsResponse'- { _atrsResponseStatus :: Int- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _atrsResponseStatus :: Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'AddTagsResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -129,12 +128,11 @@ :: Int -- ^ 'atrsResponseStatus' -> AddTagsResponse addTagsResponse pResponseStatus_ =- AddTagsResponse'- { _atrsResponseStatus = pResponseStatus_- }+ AddTagsResponse' {_atrsResponseStatus = pResponseStatus_} + -- | -- | The response status code. atrsResponseStatus :: Lens' AddTagsResponse Int atrsResponseStatus = lens _atrsResponseStatus (\ s a -> s{_atrsResponseStatus = a}); -instance NFData AddTagsResponse+instance NFData AddTagsResponse where
gen/Network/AWS/EMR/CancelSteps.hs view
@@ -12,9 +12,9 @@ -- | -- Module : Network.AWS.EMR.CancelSteps--- Copyright : (c) 2013-2016 Brendan Hay+-- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) --@@ -38,12 +38,12 @@ , csrsResponseStatus ) where -import Network.AWS.EMR.Types-import Network.AWS.EMR.Types.Product-import Network.AWS.Lens-import Network.AWS.Prelude-import Network.AWS.Request-import Network.AWS.Response+import Network.AWS.EMR.Types+import Network.AWS.EMR.Types.Product+import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response -- | The input argument to the 'CancelSteps' operation. --@@ -51,10 +51,11 @@ -- -- /See:/ 'cancelSteps' smart constructor. data CancelSteps = CancelSteps'- { _csStepIds :: !(Maybe [Text])- , _csClusterId :: !(Maybe Text)- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _csStepIds :: !(Maybe [Text])+ , _csClusterId :: !(Maybe Text)+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'CancelSteps' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -64,12 +65,9 @@ -- * 'csClusterId' - The @ClusterID@ for which specified steps will be canceled. Use 'RunJobFlow' and 'ListClusters' to get ClusterIDs. cancelSteps :: CancelSteps-cancelSteps =- CancelSteps'- { _csStepIds = Nothing- , _csClusterId = Nothing- }+cancelSteps = CancelSteps' {_csStepIds = Nothing, _csClusterId = Nothing} + -- | The list of @StepIDs@ to cancel. Use 'ListSteps' to get steps and their states for the specified cluster. csStepIds :: Lens' CancelSteps [Text] csStepIds = lens _csStepIds (\ s a -> s{_csStepIds = a}) . _Default . _Coerce;@@ -88,9 +86,9 @@ (x .?> "CancelStepsInfoList" .!@ mempty) <*> (pure (fromEnum s))) -instance Hashable CancelSteps+instance Hashable CancelSteps where -instance NFData CancelSteps+instance NFData CancelSteps where instance ToHeaders CancelSteps where toHeaders@@ -120,10 +118,11 @@ -- -- /See:/ 'cancelStepsResponse' smart constructor. data CancelStepsResponse = CancelStepsResponse'- { _csrsCancelStepsInfoList :: !(Maybe [CancelStepsInfo])- , _csrsResponseStatus :: !Int- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _csrsCancelStepsInfoList :: !(Maybe [CancelStepsInfo])+ , _csrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'CancelStepsResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -135,11 +134,10 @@ :: Int -- ^ 'csrsResponseStatus' -> CancelStepsResponse cancelStepsResponse pResponseStatus_ =- CancelStepsResponse'- { _csrsCancelStepsInfoList = Nothing- , _csrsResponseStatus = pResponseStatus_- }+ CancelStepsResponse'+ {_csrsCancelStepsInfoList = Nothing, _csrsResponseStatus = pResponseStatus_} + -- | A list of 'CancelStepsInfo' , which shows the status of specified cancel requests for each @StepID@ specified. csrsCancelStepsInfoList :: Lens' CancelStepsResponse [CancelStepsInfo] csrsCancelStepsInfoList = lens _csrsCancelStepsInfoList (\ s a -> s{_csrsCancelStepsInfoList = a}) . _Default . _Coerce;@@ -148,4 +146,4 @@ csrsResponseStatus :: Lens' CancelStepsResponse Int csrsResponseStatus = lens _csrsResponseStatus (\ s a -> s{_csrsResponseStatus = a}); -instance NFData CancelStepsResponse+instance NFData CancelStepsResponse where
gen/Network/AWS/EMR/CreateSecurityConfiguration.hs view
@@ -12,9 +12,9 @@ -- | -- Module : Network.AWS.EMR.CreateSecurityConfiguration--- Copyright : (c) 2013-2016 Brendan Hay+-- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) --@@ -39,19 +39,20 @@ , cscrsCreationDateTime ) where -import Network.AWS.EMR.Types-import Network.AWS.EMR.Types.Product-import Network.AWS.Lens-import Network.AWS.Prelude-import Network.AWS.Request-import Network.AWS.Response+import Network.AWS.EMR.Types+import Network.AWS.EMR.Types.Product+import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response -- | /See:/ 'createSecurityConfiguration' smart constructor. data CreateSecurityConfiguration = CreateSecurityConfiguration'- { _cscName :: !Text- , _cscSecurityConfiguration :: !Text- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _cscName :: !Text+ , _cscSecurityConfiguration :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'CreateSecurityConfiguration' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -64,11 +65,10 @@ -> Text -- ^ 'cscSecurityConfiguration' -> CreateSecurityConfiguration createSecurityConfiguration pName_ pSecurityConfiguration_ =- CreateSecurityConfiguration'- { _cscName = pName_- , _cscSecurityConfiguration = pSecurityConfiguration_- }+ CreateSecurityConfiguration'+ {_cscName = pName_, _cscSecurityConfiguration = pSecurityConfiguration_} + -- | The name of the security configuration. cscName :: Lens' CreateSecurityConfiguration Text cscName = lens _cscName (\ s a -> s{_cscName = a});@@ -88,9 +88,9 @@ (pure (fromEnum s)) <*> (x .:> "Name") <*> (x .:> "CreationDateTime")) -instance Hashable CreateSecurityConfiguration+instance Hashable CreateSecurityConfiguration where -instance NFData CreateSecurityConfiguration+instance NFData CreateSecurityConfiguration where instance ToHeaders CreateSecurityConfiguration where toHeaders@@ -119,11 +119,12 @@ -- | /See:/ 'createSecurityConfigurationResponse' smart constructor. data CreateSecurityConfigurationResponse = CreateSecurityConfigurationResponse'- { _cscrsResponseStatus :: !Int- , _cscrsName :: !Text- , _cscrsCreationDateTime :: !POSIX- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _cscrsResponseStatus :: !Int+ , _cscrsName :: !Text+ , _cscrsCreationDateTime :: !POSIX+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'CreateSecurityConfigurationResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -139,12 +140,13 @@ -> UTCTime -- ^ 'cscrsCreationDateTime' -> CreateSecurityConfigurationResponse createSecurityConfigurationResponse pResponseStatus_ pName_ pCreationDateTime_ =- CreateSecurityConfigurationResponse'- { _cscrsResponseStatus = pResponseStatus_- , _cscrsName = pName_- , _cscrsCreationDateTime = _Time # pCreationDateTime_- }+ CreateSecurityConfigurationResponse'+ { _cscrsResponseStatus = pResponseStatus_+ , _cscrsName = pName_+ , _cscrsCreationDateTime = _Time # pCreationDateTime_+ } + -- | -- | The response status code. cscrsResponseStatus :: Lens' CreateSecurityConfigurationResponse Int cscrsResponseStatus = lens _cscrsResponseStatus (\ s a -> s{_cscrsResponseStatus = a});@@ -158,3 +160,4 @@ cscrsCreationDateTime = lens _cscrsCreationDateTime (\ s a -> s{_cscrsCreationDateTime = a}) . _Time; instance NFData CreateSecurityConfigurationResponse+ where
gen/Network/AWS/EMR/DeleteSecurityConfiguration.hs view
@@ -12,9 +12,9 @@ -- | -- Module : Network.AWS.EMR.DeleteSecurityConfiguration--- Copyright : (c) 2013-2016 Brendan Hay+-- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) --@@ -36,18 +36,19 @@ , dscrsResponseStatus ) where -import Network.AWS.EMR.Types-import Network.AWS.EMR.Types.Product-import Network.AWS.Lens-import Network.AWS.Prelude-import Network.AWS.Request-import Network.AWS.Response+import Network.AWS.EMR.Types+import Network.AWS.EMR.Types.Product+import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response -- | /See:/ 'deleteSecurityConfiguration' smart constructor. newtype DeleteSecurityConfiguration = DeleteSecurityConfiguration'- { _dscName :: Text- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _dscName :: Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'DeleteSecurityConfiguration' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -57,10 +58,9 @@ :: Text -- ^ 'dscName' -> DeleteSecurityConfiguration deleteSecurityConfiguration pName_ =- DeleteSecurityConfiguration'- { _dscName = pName_- }+ DeleteSecurityConfiguration' {_dscName = pName_} + -- | The name of the security configuration. dscName :: Lens' DeleteSecurityConfiguration Text dscName = lens _dscName (\ s a -> s{_dscName = a});@@ -75,9 +75,9 @@ DeleteSecurityConfigurationResponse' <$> (pure (fromEnum s))) -instance Hashable DeleteSecurityConfiguration+instance Hashable DeleteSecurityConfiguration where -instance NFData DeleteSecurityConfiguration+instance NFData DeleteSecurityConfiguration where instance ToHeaders DeleteSecurityConfiguration where toHeaders@@ -101,9 +101,10 @@ -- | /See:/ 'deleteSecurityConfigurationResponse' smart constructor. newtype DeleteSecurityConfigurationResponse = DeleteSecurityConfigurationResponse'- { _dscrsResponseStatus :: Int- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _dscrsResponseStatus :: Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'DeleteSecurityConfigurationResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -113,12 +114,12 @@ :: Int -- ^ 'dscrsResponseStatus' -> DeleteSecurityConfigurationResponse deleteSecurityConfigurationResponse pResponseStatus_ =- DeleteSecurityConfigurationResponse'- { _dscrsResponseStatus = pResponseStatus_- }+ DeleteSecurityConfigurationResponse' {_dscrsResponseStatus = pResponseStatus_} + -- | -- | The response status code. dscrsResponseStatus :: Lens' DeleteSecurityConfigurationResponse Int dscrsResponseStatus = lens _dscrsResponseStatus (\ s a -> s{_dscrsResponseStatus = a}); instance NFData DeleteSecurityConfigurationResponse+ where
gen/Network/AWS/EMR/DescribeCluster.hs view
@@ -12,9 +12,9 @@ -- | -- Module : Network.AWS.EMR.DescribeCluster--- Copyright : (c) 2013-2016 Brendan Hay+-- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) --@@ -37,12 +37,12 @@ , dcrsCluster ) where -import Network.AWS.EMR.Types-import Network.AWS.EMR.Types.Product-import Network.AWS.Lens-import Network.AWS.Prelude-import Network.AWS.Request-import Network.AWS.Response+import Network.AWS.EMR.Types+import Network.AWS.EMR.Types.Product+import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response -- | This input determines which cluster to describe. --@@ -50,9 +50,10 @@ -- -- /See:/ 'describeCluster' smart constructor. newtype DescribeCluster = DescribeCluster'- { _dcClusterId :: Text- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _dcClusterId :: Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'DescribeCluster' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -61,11 +62,9 @@ describeCluster :: Text -- ^ 'dcClusterId' -> DescribeCluster-describeCluster pClusterId_ =- DescribeCluster'- { _dcClusterId = pClusterId_- }+describeCluster pClusterId_ = DescribeCluster' {_dcClusterId = pClusterId_} + -- | The identifier of the cluster to describe. dcClusterId :: Lens' DescribeCluster Text dcClusterId = lens _dcClusterId (\ s a -> s{_dcClusterId = a});@@ -79,9 +78,9 @@ DescribeClusterResponse' <$> (pure (fromEnum s)) <*> (x .:> "Cluster")) -instance Hashable DescribeCluster+instance Hashable DescribeCluster where -instance NFData DescribeCluster+instance NFData DescribeCluster where instance ToHeaders DescribeCluster where toHeaders@@ -109,10 +108,11 @@ -- -- /See:/ 'describeClusterResponse' smart constructor. data DescribeClusterResponse = DescribeClusterResponse'- { _dcrsResponseStatus :: !Int- , _dcrsCluster :: !Cluster- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _dcrsResponseStatus :: !Int+ , _dcrsCluster :: !Cluster+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'DescribeClusterResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -125,11 +125,10 @@ -> Cluster -- ^ 'dcrsCluster' -> DescribeClusterResponse describeClusterResponse pResponseStatus_ pCluster_ =- DescribeClusterResponse'- { _dcrsResponseStatus = pResponseStatus_- , _dcrsCluster = pCluster_- }+ DescribeClusterResponse'+ {_dcrsResponseStatus = pResponseStatus_, _dcrsCluster = pCluster_} + -- | -- | The response status code. dcrsResponseStatus :: Lens' DescribeClusterResponse Int dcrsResponseStatus = lens _dcrsResponseStatus (\ s a -> s{_dcrsResponseStatus = a});@@ -138,4 +137,4 @@ dcrsCluster :: Lens' DescribeClusterResponse Cluster dcrsCluster = lens _dcrsCluster (\ s a -> s{_dcrsCluster = a}); -instance NFData DescribeClusterResponse+instance NFData DescribeClusterResponse where
gen/Network/AWS/EMR/DescribeSecurityConfiguration.hs view
@@ -12,9 +12,9 @@ -- | -- Module : Network.AWS.EMR.DescribeSecurityConfiguration--- Copyright : (c) 2013-2016 Brendan Hay+-- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) --@@ -39,18 +39,19 @@ , drsResponseStatus ) where -import Network.AWS.EMR.Types-import Network.AWS.EMR.Types.Product-import Network.AWS.Lens-import Network.AWS.Prelude-import Network.AWS.Request-import Network.AWS.Response+import Network.AWS.EMR.Types+import Network.AWS.EMR.Types.Product+import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response -- | /See:/ 'describeSecurityConfiguration' smart constructor. newtype DescribeSecurityConfiguration = DescribeSecurityConfiguration'- { _dName :: Text- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _dName :: Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'DescribeSecurityConfiguration' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -60,10 +61,9 @@ :: Text -- ^ 'dName' -> DescribeSecurityConfiguration describeSecurityConfiguration pName_ =- DescribeSecurityConfiguration'- { _dName = pName_- }+ DescribeSecurityConfiguration' {_dName = pName_} + -- | The name of the security configuration. dName :: Lens' DescribeSecurityConfiguration Text dName = lens _dName (\ s a -> s{_dName = a});@@ -81,9 +81,9 @@ <*> (x .?> "CreationDateTime") <*> (pure (fromEnum s))) -instance Hashable DescribeSecurityConfiguration+instance Hashable DescribeSecurityConfiguration where -instance NFData DescribeSecurityConfiguration+instance NFData DescribeSecurityConfiguration where instance ToHeaders DescribeSecurityConfiguration where@@ -108,12 +108,13 @@ -- | /See:/ 'describeSecurityConfigurationResponse' smart constructor. data DescribeSecurityConfigurationResponse = DescribeSecurityConfigurationResponse'- { _drsSecurityConfiguration :: !(Maybe Text)- , _drsName :: !(Maybe Text)- , _drsCreationDateTime :: !(Maybe POSIX)- , _drsResponseStatus :: !Int- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _drsSecurityConfiguration :: !(Maybe Text)+ , _drsName :: !(Maybe Text)+ , _drsCreationDateTime :: !(Maybe POSIX)+ , _drsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'DescribeSecurityConfigurationResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -129,13 +130,14 @@ :: Int -- ^ 'drsResponseStatus' -> DescribeSecurityConfigurationResponse describeSecurityConfigurationResponse pResponseStatus_ =- DescribeSecurityConfigurationResponse'- { _drsSecurityConfiguration = Nothing- , _drsName = Nothing- , _drsCreationDateTime = Nothing- , _drsResponseStatus = pResponseStatus_- }+ DescribeSecurityConfigurationResponse'+ { _drsSecurityConfiguration = Nothing+ , _drsName = Nothing+ , _drsCreationDateTime = Nothing+ , _drsResponseStatus = pResponseStatus_+ } + -- | The security configuration details in JSON format. drsSecurityConfiguration :: Lens' DescribeSecurityConfigurationResponse (Maybe Text) drsSecurityConfiguration = lens _drsSecurityConfiguration (\ s a -> s{_drsSecurityConfiguration = a});@@ -153,3 +155,4 @@ drsResponseStatus = lens _drsResponseStatus (\ s a -> s{_drsResponseStatus = a}); instance NFData DescribeSecurityConfigurationResponse+ where
gen/Network/AWS/EMR/DescribeStep.hs view
@@ -12,9 +12,9 @@ -- | -- Module : Network.AWS.EMR.DescribeStep--- Copyright : (c) 2013-2016 Brendan Hay+-- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) --@@ -38,12 +38,12 @@ , dsrsResponseStatus ) where -import Network.AWS.EMR.Types-import Network.AWS.EMR.Types.Product-import Network.AWS.Lens-import Network.AWS.Prelude-import Network.AWS.Request-import Network.AWS.Response+import Network.AWS.EMR.Types+import Network.AWS.EMR.Types.Product+import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response -- | This input determines which step to describe. --@@ -51,10 +51,11 @@ -- -- /See:/ 'describeStep' smart constructor. data DescribeStep = DescribeStep'- { _dsClusterId :: !Text- , _dsStepId :: !Text- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _dsClusterId :: !Text+ , _dsStepId :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'DescribeStep' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -67,11 +68,9 @@ -> Text -- ^ 'dsStepId' -> DescribeStep describeStep pClusterId_ pStepId_ =- DescribeStep'- { _dsClusterId = pClusterId_- , _dsStepId = pStepId_- }+ DescribeStep' {_dsClusterId = pClusterId_, _dsStepId = pStepId_} + -- | The identifier of the cluster with steps to describe. dsClusterId :: Lens' DescribeStep Text dsClusterId = lens _dsClusterId (\ s a -> s{_dsClusterId = a});@@ -89,9 +88,9 @@ DescribeStepResponse' <$> (x .?> "Step") <*> (pure (fromEnum s))) -instance Hashable DescribeStep+instance Hashable DescribeStep where -instance NFData DescribeStep+instance NFData DescribeStep where instance ToHeaders DescribeStep where toHeaders@@ -121,10 +120,11 @@ -- -- /See:/ 'describeStepResponse' smart constructor. data DescribeStepResponse = DescribeStepResponse'- { _dsrsStep :: !(Maybe Step)- , _dsrsResponseStatus :: !Int- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _dsrsStep :: !(Maybe Step)+ , _dsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'DescribeStepResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -136,11 +136,10 @@ :: Int -- ^ 'dsrsResponseStatus' -> DescribeStepResponse describeStepResponse pResponseStatus_ =- DescribeStepResponse'- { _dsrsStep = Nothing- , _dsrsResponseStatus = pResponseStatus_- }+ DescribeStepResponse'+ {_dsrsStep = Nothing, _dsrsResponseStatus = pResponseStatus_} + -- | The step details for the requested step identifier. dsrsStep :: Lens' DescribeStepResponse (Maybe Step) dsrsStep = lens _dsrsStep (\ s a -> s{_dsrsStep = a});@@ -149,4 +148,4 @@ dsrsResponseStatus :: Lens' DescribeStepResponse Int dsrsResponseStatus = lens _dsrsResponseStatus (\ s a -> s{_dsrsResponseStatus = a}); -instance NFData DescribeStepResponse+instance NFData DescribeStepResponse where
gen/Network/AWS/EMR/ListBootstrapActions.hs view
@@ -12,9 +12,9 @@ -- | -- Module : Network.AWS.EMR.ListBootstrapActions--- Copyright : (c) 2013-2016 Brendan Hay+-- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) --@@ -41,13 +41,13 @@ , lbarsResponseStatus ) where -import Network.AWS.EMR.Types-import Network.AWS.EMR.Types.Product-import Network.AWS.Lens-import Network.AWS.Pager-import Network.AWS.Prelude-import Network.AWS.Request-import Network.AWS.Response+import Network.AWS.EMR.Types+import Network.AWS.EMR.Types.Product+import Network.AWS.Lens+import Network.AWS.Pager+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response -- | This input determines which bootstrap actions to retrieve. --@@ -55,10 +55,11 @@ -- -- /See:/ 'listBootstrapActions' smart constructor. data ListBootstrapActions = ListBootstrapActions'- { _lbaMarker :: !(Maybe Text)- , _lbaClusterId :: !Text- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _lbaMarker :: !(Maybe Text)+ , _lbaClusterId :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'ListBootstrapActions' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -70,11 +71,9 @@ :: Text -- ^ 'lbaClusterId' -> ListBootstrapActions listBootstrapActions pClusterId_ =- ListBootstrapActions'- { _lbaMarker = Nothing- , _lbaClusterId = pClusterId_- }+ ListBootstrapActions' {_lbaMarker = Nothing, _lbaClusterId = pClusterId_} + -- | The pagination token that indicates the next set of results to retrieve. lbaMarker :: Lens' ListBootstrapActions (Maybe Text) lbaMarker = lens _lbaMarker (\ s a -> s{_lbaMarker = a});@@ -102,9 +101,9 @@ (x .?> "Marker") <*> (pure (fromEnum s))) -instance Hashable ListBootstrapActions+instance Hashable ListBootstrapActions where -instance NFData ListBootstrapActions+instance NFData ListBootstrapActions where instance ToHeaders ListBootstrapActions where toHeaders@@ -135,11 +134,12 @@ -- -- /See:/ 'listBootstrapActionsResponse' smart constructor. data ListBootstrapActionsResponse = ListBootstrapActionsResponse'- { _lbarsBootstrapActions :: !(Maybe [Command])- , _lbarsMarker :: !(Maybe Text)- , _lbarsResponseStatus :: !Int- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _lbarsBootstrapActions :: !(Maybe [Command])+ , _lbarsMarker :: !(Maybe Text)+ , _lbarsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'ListBootstrapActionsResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -153,12 +153,13 @@ :: Int -- ^ 'lbarsResponseStatus' -> ListBootstrapActionsResponse listBootstrapActionsResponse pResponseStatus_ =- ListBootstrapActionsResponse'- { _lbarsBootstrapActions = Nothing- , _lbarsMarker = Nothing- , _lbarsResponseStatus = pResponseStatus_- }+ ListBootstrapActionsResponse'+ { _lbarsBootstrapActions = Nothing+ , _lbarsMarker = Nothing+ , _lbarsResponseStatus = pResponseStatus_+ } + -- | The bootstrap actions associated with the cluster. lbarsBootstrapActions :: Lens' ListBootstrapActionsResponse [Command] lbarsBootstrapActions = lens _lbarsBootstrapActions (\ s a -> s{_lbarsBootstrapActions = a}) . _Default . _Coerce;@@ -171,4 +172,4 @@ lbarsResponseStatus :: Lens' ListBootstrapActionsResponse Int lbarsResponseStatus = lens _lbarsResponseStatus (\ s a -> s{_lbarsResponseStatus = a}); -instance NFData ListBootstrapActionsResponse+instance NFData ListBootstrapActionsResponse where
gen/Network/AWS/EMR/ListClusters.hs view
@@ -12,9 +12,9 @@ -- | -- Module : Network.AWS.EMR.ListClusters--- Copyright : (c) 2013-2016 Brendan Hay+-- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) --@@ -43,13 +43,13 @@ , lcrsResponseStatus ) where -import Network.AWS.EMR.Types-import Network.AWS.EMR.Types.Product-import Network.AWS.Lens-import Network.AWS.Pager-import Network.AWS.Prelude-import Network.AWS.Request-import Network.AWS.Response+import Network.AWS.EMR.Types+import Network.AWS.EMR.Types.Product+import Network.AWS.Lens+import Network.AWS.Pager+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response -- | This input determines how the ListClusters action filters the list of clusters that it returns. --@@ -57,12 +57,13 @@ -- -- /See:/ 'listClusters' smart constructor. data ListClusters = ListClusters'- { _lcCreatedAfter :: !(Maybe POSIX)- , _lcMarker :: !(Maybe Text)- , _lcClusterStates :: !(Maybe [ClusterState])- , _lcCreatedBefore :: !(Maybe POSIX)- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _lcCreatedAfter :: !(Maybe POSIX)+ , _lcMarker :: !(Maybe Text)+ , _lcClusterStates :: !(Maybe [ClusterState])+ , _lcCreatedBefore :: !(Maybe POSIX)+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'ListClusters' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -77,13 +78,14 @@ listClusters :: ListClusters listClusters =- ListClusters'- { _lcCreatedAfter = Nothing- , _lcMarker = Nothing- , _lcClusterStates = Nothing- , _lcCreatedBefore = Nothing- }+ ListClusters'+ { _lcCreatedAfter = Nothing+ , _lcMarker = Nothing+ , _lcClusterStates = Nothing+ , _lcCreatedBefore = Nothing+ } + -- | The creation date and time beginning value filter for listing clusters. lcCreatedAfter :: Lens' ListClusters (Maybe UTCTime) lcCreatedAfter = lens _lcCreatedAfter (\ s a -> s{_lcCreatedAfter = a}) . mapping _Time;@@ -117,9 +119,9 @@ (x .?> "Marker") <*> (x .?> "Clusters" .!@ mempty) <*> (pure (fromEnum s))) -instance Hashable ListClusters+instance Hashable ListClusters where -instance NFData ListClusters+instance NFData ListClusters where instance ToHeaders ListClusters where toHeaders@@ -151,11 +153,12 @@ -- -- /See:/ 'listClustersResponse' smart constructor. data ListClustersResponse = ListClustersResponse'- { _lcrsMarker :: !(Maybe Text)- , _lcrsClusters :: !(Maybe [ClusterSummary])- , _lcrsResponseStatus :: !Int- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _lcrsMarker :: !(Maybe Text)+ , _lcrsClusters :: !(Maybe [ClusterSummary])+ , _lcrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'ListClustersResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -169,12 +172,13 @@ :: Int -- ^ 'lcrsResponseStatus' -> ListClustersResponse listClustersResponse pResponseStatus_ =- ListClustersResponse'- { _lcrsMarker = Nothing- , _lcrsClusters = Nothing- , _lcrsResponseStatus = pResponseStatus_- }+ ListClustersResponse'+ { _lcrsMarker = Nothing+ , _lcrsClusters = Nothing+ , _lcrsResponseStatus = pResponseStatus_+ } + -- | The pagination token that indicates the next set of results to retrieve. lcrsMarker :: Lens' ListClustersResponse (Maybe Text) lcrsMarker = lens _lcrsMarker (\ s a -> s{_lcrsMarker = a});@@ -187,4 +191,4 @@ lcrsResponseStatus :: Lens' ListClustersResponse Int lcrsResponseStatus = lens _lcrsResponseStatus (\ s a -> s{_lcrsResponseStatus = a}); -instance NFData ListClustersResponse+instance NFData ListClustersResponse where
+ gen/Network/AWS/EMR/ListInstanceFleets.hs view
@@ -0,0 +1,167 @@+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE TypeFamilies #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module : Network.AWS.EMR.ListInstanceFleets+-- Copyright : (c) 2013-2017 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)+--+-- Lists all available details about the instance fleets in a cluster.+--+--+--+-- This operation returns paginated results.+module Network.AWS.EMR.ListInstanceFleets+ (+ -- * Creating a Request+ listInstanceFleets+ , ListInstanceFleets+ -- * Request Lenses+ , lifMarker+ , lifClusterId++ -- * Destructuring the Response+ , listInstanceFleetsResponse+ , ListInstanceFleetsResponse+ -- * Response Lenses+ , lifrsInstanceFleets+ , lifrsMarker+ , lifrsResponseStatus+ ) where++import Network.AWS.EMR.Types+import Network.AWS.EMR.Types.Product+import Network.AWS.Lens+import Network.AWS.Pager+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response++-- | /See:/ 'listInstanceFleets' smart constructor.+data ListInstanceFleets = ListInstanceFleets'+ { _lifMarker :: !(Maybe Text)+ , _lifClusterId :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ListInstanceFleets' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lifMarker' - The pagination token that indicates the next set of results to retrieve.+--+-- * 'lifClusterId' - The unique identifier of the cluster.+listInstanceFleets+ :: Text -- ^ 'lifClusterId'+ -> ListInstanceFleets+listInstanceFleets pClusterId_ =+ ListInstanceFleets' {_lifMarker = Nothing, _lifClusterId = pClusterId_}+++-- | The pagination token that indicates the next set of results to retrieve.+lifMarker :: Lens' ListInstanceFleets (Maybe Text)+lifMarker = lens _lifMarker (\ s a -> s{_lifMarker = a});++-- | The unique identifier of the cluster.+lifClusterId :: Lens' ListInstanceFleets Text+lifClusterId = lens _lifClusterId (\ s a -> s{_lifClusterId = a});++instance AWSPager ListInstanceFleets where+ page rq rs+ | stop (rs ^. lifrsMarker) = Nothing+ | stop (rs ^. lifrsInstanceFleets) = Nothing+ | otherwise =+ Just $ rq & lifMarker .~ rs ^. lifrsMarker++instance AWSRequest ListInstanceFleets where+ type Rs ListInstanceFleets =+ ListInstanceFleetsResponse+ request = postJSON emr+ response+ = receiveJSON+ (\ s h x ->+ ListInstanceFleetsResponse' <$>+ (x .?> "InstanceFleets" .!@ mempty) <*>+ (x .?> "Marker")+ <*> (pure (fromEnum s)))++instance Hashable ListInstanceFleets where++instance NFData ListInstanceFleets where++instance ToHeaders ListInstanceFleets where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("ElasticMapReduce.ListInstanceFleets" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON ListInstanceFleets where+ toJSON ListInstanceFleets'{..}+ = object+ (catMaybes+ [("Marker" .=) <$> _lifMarker,+ Just ("ClusterId" .= _lifClusterId)])++instance ToPath ListInstanceFleets where+ toPath = const "/"++instance ToQuery ListInstanceFleets where+ toQuery = const mempty++-- | /See:/ 'listInstanceFleetsResponse' smart constructor.+data ListInstanceFleetsResponse = ListInstanceFleetsResponse'+ { _lifrsInstanceFleets :: !(Maybe [InstanceFleet])+ , _lifrsMarker :: !(Maybe Text)+ , _lifrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ListInstanceFleetsResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lifrsInstanceFleets' - The list of instance fleets for the cluster and given filters.+--+-- * 'lifrsMarker' - The pagination token that indicates the next set of results to retrieve.+--+-- * 'lifrsResponseStatus' - -- | The response status code.+listInstanceFleetsResponse+ :: Int -- ^ 'lifrsResponseStatus'+ -> ListInstanceFleetsResponse+listInstanceFleetsResponse pResponseStatus_ =+ ListInstanceFleetsResponse'+ { _lifrsInstanceFleets = Nothing+ , _lifrsMarker = Nothing+ , _lifrsResponseStatus = pResponseStatus_+ }+++-- | The list of instance fleets for the cluster and given filters.+lifrsInstanceFleets :: Lens' ListInstanceFleetsResponse [InstanceFleet]+lifrsInstanceFleets = lens _lifrsInstanceFleets (\ s a -> s{_lifrsInstanceFleets = a}) . _Default . _Coerce;++-- | The pagination token that indicates the next set of results to retrieve.+lifrsMarker :: Lens' ListInstanceFleetsResponse (Maybe Text)+lifrsMarker = lens _lifrsMarker (\ s a -> s{_lifrsMarker = a});++-- | -- | The response status code.+lifrsResponseStatus :: Lens' ListInstanceFleetsResponse Int+lifrsResponseStatus = lens _lifrsResponseStatus (\ s a -> s{_lifrsResponseStatus = a});++instance NFData ListInstanceFleetsResponse where
gen/Network/AWS/EMR/ListInstanceGroups.hs view
@@ -12,9 +12,9 @@ -- | -- Module : Network.AWS.EMR.ListInstanceGroups--- Copyright : (c) 2013-2016 Brendan Hay+-- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) --@@ -41,13 +41,13 @@ , ligrsResponseStatus ) where -import Network.AWS.EMR.Types-import Network.AWS.EMR.Types.Product-import Network.AWS.Lens-import Network.AWS.Pager-import Network.AWS.Prelude-import Network.AWS.Request-import Network.AWS.Response+import Network.AWS.EMR.Types+import Network.AWS.EMR.Types.Product+import Network.AWS.Lens+import Network.AWS.Pager+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response -- | This input determines which instance groups to retrieve. --@@ -55,10 +55,11 @@ -- -- /See:/ 'listInstanceGroups' smart constructor. data ListInstanceGroups = ListInstanceGroups'- { _ligMarker :: !(Maybe Text)- , _ligClusterId :: !Text- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _ligMarker :: !(Maybe Text)+ , _ligClusterId :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'ListInstanceGroups' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -70,11 +71,9 @@ :: Text -- ^ 'ligClusterId' -> ListInstanceGroups listInstanceGroups pClusterId_ =- ListInstanceGroups'- { _ligMarker = Nothing- , _ligClusterId = pClusterId_- }+ ListInstanceGroups' {_ligMarker = Nothing, _ligClusterId = pClusterId_} + -- | The pagination token that indicates the next set of results to retrieve. ligMarker :: Lens' ListInstanceGroups (Maybe Text) ligMarker = lens _ligMarker (\ s a -> s{_ligMarker = a});@@ -102,9 +101,9 @@ (x .?> "InstanceGroups" .!@ mempty) <*> (pure (fromEnum s))) -instance Hashable ListInstanceGroups+instance Hashable ListInstanceGroups where -instance NFData ListInstanceGroups+instance NFData ListInstanceGroups where instance ToHeaders ListInstanceGroups where toHeaders@@ -135,11 +134,12 @@ -- -- /See:/ 'listInstanceGroupsResponse' smart constructor. data ListInstanceGroupsResponse = ListInstanceGroupsResponse'- { _ligrsMarker :: !(Maybe Text)- , _ligrsInstanceGroups :: !(Maybe [InstanceGroup])- , _ligrsResponseStatus :: !Int- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _ligrsMarker :: !(Maybe Text)+ , _ligrsInstanceGroups :: !(Maybe [InstanceGroup])+ , _ligrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'ListInstanceGroupsResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -153,12 +153,13 @@ :: Int -- ^ 'ligrsResponseStatus' -> ListInstanceGroupsResponse listInstanceGroupsResponse pResponseStatus_ =- ListInstanceGroupsResponse'- { _ligrsMarker = Nothing- , _ligrsInstanceGroups = Nothing- , _ligrsResponseStatus = pResponseStatus_- }+ ListInstanceGroupsResponse'+ { _ligrsMarker = Nothing+ , _ligrsInstanceGroups = Nothing+ , _ligrsResponseStatus = pResponseStatus_+ } + -- | The pagination token that indicates the next set of results to retrieve. ligrsMarker :: Lens' ListInstanceGroupsResponse (Maybe Text) ligrsMarker = lens _ligrsMarker (\ s a -> s{_ligrsMarker = a});@@ -171,4 +172,4 @@ ligrsResponseStatus :: Lens' ListInstanceGroupsResponse Int ligrsResponseStatus = lens _ligrsResponseStatus (\ s a -> s{_ligrsResponseStatus = a}); -instance NFData ListInstanceGroupsResponse+instance NFData ListInstanceGroupsResponse where
gen/Network/AWS/EMR/ListInstances.hs view
@@ -12,13 +12,13 @@ -- | -- Module : Network.AWS.EMR.ListInstances--- Copyright : (c) 2013-2016 Brendan Hay+-- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) ----- Provides information about the cluster instances that Amazon EMR provisions on behalf of a user when it creates the cluster. For example, this operation indicates when the EC2 instances reach the Ready state, when instances become available to Amazon EMR to use for jobs, and the IP addresses for cluster instances, etc.+-- Provides information for all active EC2 instances and EC2 instances terminated in the last 30 days, up to a maximum of 2,000. EC2 instances in any of the following states are considered active: AWAITING_FULFILLMENT, PROVISIONING, BOOTSTRAPPING, RUNNING. -- -- --@@ -30,7 +30,9 @@ , ListInstances -- * Request Lenses , liInstanceGroupTypes+ , liInstanceFleetType , liMarker+ , liInstanceFleetId , liInstanceStates , liInstanceGroupId , liClusterId@@ -44,13 +46,13 @@ , lirsResponseStatus ) where -import Network.AWS.EMR.Types-import Network.AWS.EMR.Types.Product-import Network.AWS.Lens-import Network.AWS.Pager-import Network.AWS.Prelude-import Network.AWS.Request-import Network.AWS.Response+import Network.AWS.EMR.Types+import Network.AWS.EMR.Types.Product+import Network.AWS.Lens+import Network.AWS.Pager+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response -- | This input determines which instances to list. --@@ -58,21 +60,28 @@ -- -- /See:/ 'listInstances' smart constructor. data ListInstances = ListInstances'- { _liInstanceGroupTypes :: !(Maybe [InstanceGroupType])- , _liMarker :: !(Maybe Text)- , _liInstanceStates :: !(Maybe [InstanceState])- , _liInstanceGroupId :: !(Maybe Text)- , _liClusterId :: !Text- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _liInstanceGroupTypes :: !(Maybe [InstanceGroupType])+ , _liInstanceFleetType :: !(Maybe InstanceFleetType)+ , _liMarker :: !(Maybe Text)+ , _liInstanceFleetId :: !(Maybe Text)+ , _liInstanceStates :: !(Maybe [InstanceState])+ , _liInstanceGroupId :: !(Maybe Text)+ , _liClusterId :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'ListInstances' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'liInstanceGroupTypes' - The type of instance group for which to list the instances. --+-- * 'liInstanceFleetType' - The node type of the instance fleet. For example MASTER, CORE, or TASK.+-- -- * 'liMarker' - The pagination token that indicates the next set of results to retrieve. --+-- * 'liInstanceFleetId' - The unique identifier of the instance fleet.+-- -- * 'liInstanceStates' - A list of instance states that will filter the instances returned with this request. -- -- * 'liInstanceGroupId' - The identifier of the instance group for which to list the instances.@@ -82,22 +91,33 @@ :: Text -- ^ 'liClusterId' -> ListInstances listInstances pClusterId_ =- ListInstances'- { _liInstanceGroupTypes = Nothing- , _liMarker = Nothing- , _liInstanceStates = Nothing- , _liInstanceGroupId = Nothing- , _liClusterId = pClusterId_- }+ ListInstances'+ { _liInstanceGroupTypes = Nothing+ , _liInstanceFleetType = Nothing+ , _liMarker = Nothing+ , _liInstanceFleetId = Nothing+ , _liInstanceStates = Nothing+ , _liInstanceGroupId = Nothing+ , _liClusterId = pClusterId_+ } + -- | The type of instance group for which to list the instances. liInstanceGroupTypes :: Lens' ListInstances [InstanceGroupType] liInstanceGroupTypes = lens _liInstanceGroupTypes (\ s a -> s{_liInstanceGroupTypes = a}) . _Default . _Coerce; +-- | The node type of the instance fleet. For example MASTER, CORE, or TASK.+liInstanceFleetType :: Lens' ListInstances (Maybe InstanceFleetType)+liInstanceFleetType = lens _liInstanceFleetType (\ s a -> s{_liInstanceFleetType = a});+ -- | The pagination token that indicates the next set of results to retrieve. liMarker :: Lens' ListInstances (Maybe Text) liMarker = lens _liMarker (\ s a -> s{_liMarker = a}); +-- | The unique identifier of the instance fleet.+liInstanceFleetId :: Lens' ListInstances (Maybe Text)+liInstanceFleetId = lens _liInstanceFleetId (\ s a -> s{_liInstanceFleetId = a});+ -- | A list of instance states that will filter the instances returned with this request. liInstanceStates :: Lens' ListInstances [InstanceState] liInstanceStates = lens _liInstanceStates (\ s a -> s{_liInstanceStates = a}) . _Default . _Coerce;@@ -127,9 +147,9 @@ (x .?> "Marker") <*> (x .?> "Instances" .!@ mempty) <*> (pure (fromEnum s))) -instance Hashable ListInstances+instance Hashable ListInstances where -instance NFData ListInstances+instance NFData ListInstances where instance ToHeaders ListInstances where toHeaders@@ -145,7 +165,9 @@ = object (catMaybes [("InstanceGroupTypes" .=) <$> _liInstanceGroupTypes,+ ("InstanceFleetType" .=) <$> _liInstanceFleetType, ("Marker" .=) <$> _liMarker,+ ("InstanceFleetId" .=) <$> _liInstanceFleetId, ("InstanceStates" .=) <$> _liInstanceStates, ("InstanceGroupId" .=) <$> _liInstanceGroupId, Just ("ClusterId" .= _liClusterId)])@@ -162,11 +184,12 @@ -- -- /See:/ 'listInstancesResponse' smart constructor. data ListInstancesResponse = ListInstancesResponse'- { _lirsMarker :: !(Maybe Text)- , _lirsInstances :: !(Maybe [Instance])- , _lirsResponseStatus :: !Int- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _lirsMarker :: !(Maybe Text)+ , _lirsInstances :: !(Maybe [Instance])+ , _lirsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'ListInstancesResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -180,12 +203,13 @@ :: Int -- ^ 'lirsResponseStatus' -> ListInstancesResponse listInstancesResponse pResponseStatus_ =- ListInstancesResponse'- { _lirsMarker = Nothing- , _lirsInstances = Nothing- , _lirsResponseStatus = pResponseStatus_- }+ ListInstancesResponse'+ { _lirsMarker = Nothing+ , _lirsInstances = Nothing+ , _lirsResponseStatus = pResponseStatus_+ } + -- | The pagination token that indicates the next set of results to retrieve. lirsMarker :: Lens' ListInstancesResponse (Maybe Text) lirsMarker = lens _lirsMarker (\ s a -> s{_lirsMarker = a});@@ -198,4 +222,4 @@ lirsResponseStatus :: Lens' ListInstancesResponse Int lirsResponseStatus = lens _lirsResponseStatus (\ s a -> s{_lirsResponseStatus = a}); -instance NFData ListInstancesResponse+instance NFData ListInstancesResponse where
gen/Network/AWS/EMR/ListSecurityConfigurations.hs view
@@ -12,9 +12,9 @@ -- | -- Module : Network.AWS.EMR.ListSecurityConfigurations--- Copyright : (c) 2013-2016 Brendan Hay+-- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) --@@ -38,18 +38,19 @@ , lscrsResponseStatus ) where -import Network.AWS.EMR.Types-import Network.AWS.EMR.Types.Product-import Network.AWS.Lens-import Network.AWS.Prelude-import Network.AWS.Request-import Network.AWS.Response+import Network.AWS.EMR.Types+import Network.AWS.EMR.Types.Product+import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response -- | /See:/ 'listSecurityConfigurations' smart constructor. newtype ListSecurityConfigurations = ListSecurityConfigurations'- { _lscMarker :: Maybe Text- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _lscMarker :: Maybe Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'ListSecurityConfigurations' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -57,11 +58,9 @@ -- * 'lscMarker' - The pagination token that indicates the set of results to retrieve. listSecurityConfigurations :: ListSecurityConfigurations-listSecurityConfigurations =- ListSecurityConfigurations'- { _lscMarker = Nothing- }+listSecurityConfigurations = ListSecurityConfigurations' {_lscMarker = Nothing} + -- | The pagination token that indicates the set of results to retrieve. lscMarker :: Lens' ListSecurityConfigurations (Maybe Text) lscMarker = lens _lscMarker (\ s a -> s{_lscMarker = a});@@ -78,9 +77,9 @@ (x .?> "Marker") <*> (pure (fromEnum s))) -instance Hashable ListSecurityConfigurations+instance Hashable ListSecurityConfigurations where -instance NFData ListSecurityConfigurations+instance NFData ListSecurityConfigurations where instance ToHeaders ListSecurityConfigurations where toHeaders@@ -104,11 +103,12 @@ -- | /See:/ 'listSecurityConfigurationsResponse' smart constructor. data ListSecurityConfigurationsResponse = ListSecurityConfigurationsResponse'- { _lscrsSecurityConfigurations :: !(Maybe [SecurityConfigurationSummary])- , _lscrsMarker :: !(Maybe Text)- , _lscrsResponseStatus :: !Int- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _lscrsSecurityConfigurations :: !(Maybe [SecurityConfigurationSummary])+ , _lscrsMarker :: !(Maybe Text)+ , _lscrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'ListSecurityConfigurationsResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -122,12 +122,13 @@ :: Int -- ^ 'lscrsResponseStatus' -> ListSecurityConfigurationsResponse listSecurityConfigurationsResponse pResponseStatus_ =- ListSecurityConfigurationsResponse'- { _lscrsSecurityConfigurations = Nothing- , _lscrsMarker = Nothing- , _lscrsResponseStatus = pResponseStatus_- }+ ListSecurityConfigurationsResponse'+ { _lscrsSecurityConfigurations = Nothing+ , _lscrsMarker = Nothing+ , _lscrsResponseStatus = pResponseStatus_+ } + -- | The creation date and time, and name, of each security configuration. lscrsSecurityConfigurations :: Lens' ListSecurityConfigurationsResponse [SecurityConfigurationSummary] lscrsSecurityConfigurations = lens _lscrsSecurityConfigurations (\ s a -> s{_lscrsSecurityConfigurations = a}) . _Default . _Coerce;@@ -141,3 +142,4 @@ lscrsResponseStatus = lens _lscrsResponseStatus (\ s a -> s{_lscrsResponseStatus = a}); instance NFData ListSecurityConfigurationsResponse+ where
gen/Network/AWS/EMR/ListSteps.hs view
@@ -12,9 +12,9 @@ -- | -- Module : Network.AWS.EMR.ListSteps--- Copyright : (c) 2013-2016 Brendan Hay+-- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) --@@ -43,13 +43,13 @@ , lsrsResponseStatus ) where -import Network.AWS.EMR.Types-import Network.AWS.EMR.Types.Product-import Network.AWS.Lens-import Network.AWS.Pager-import Network.AWS.Prelude-import Network.AWS.Request-import Network.AWS.Response+import Network.AWS.EMR.Types+import Network.AWS.EMR.Types.Product+import Network.AWS.Lens+import Network.AWS.Pager+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response -- | This input determines which steps to list. --@@ -57,12 +57,13 @@ -- -- /See:/ 'listSteps' smart constructor. data ListSteps = ListSteps'- { _lsStepIds :: !(Maybe [Text])- , _lsStepStates :: !(Maybe [StepState])- , _lsMarker :: !(Maybe Text)- , _lsClusterId :: !Text- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _lsStepIds :: !(Maybe [Text])+ , _lsStepStates :: !(Maybe [StepState])+ , _lsMarker :: !(Maybe Text)+ , _lsClusterId :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'ListSteps' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -78,13 +79,14 @@ :: Text -- ^ 'lsClusterId' -> ListSteps listSteps pClusterId_ =- ListSteps'- { _lsStepIds = Nothing- , _lsStepStates = Nothing- , _lsMarker = Nothing- , _lsClusterId = pClusterId_- }+ ListSteps'+ { _lsStepIds = Nothing+ , _lsStepStates = Nothing+ , _lsMarker = Nothing+ , _lsClusterId = pClusterId_+ } + -- | The filter to limit the step list based on the identifier of the steps. lsStepIds :: Lens' ListSteps [Text] lsStepIds = lens _lsStepIds (\ s a -> s{_lsStepIds = a}) . _Default . _Coerce;@@ -118,9 +120,9 @@ (x .?> "Steps" .!@ mempty) <*> (x .?> "Marker") <*> (pure (fromEnum s))) -instance Hashable ListSteps+instance Hashable ListSteps where -instance NFData ListSteps+instance NFData ListSteps where instance ToHeaders ListSteps where toHeaders@@ -152,11 +154,12 @@ -- -- /See:/ 'listStepsResponse' smart constructor. data ListStepsResponse = ListStepsResponse'- { _lsrsSteps :: !(Maybe [StepSummary])- , _lsrsMarker :: !(Maybe Text)- , _lsrsResponseStatus :: !Int- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _lsrsSteps :: !(Maybe [StepSummary])+ , _lsrsMarker :: !(Maybe Text)+ , _lsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'ListStepsResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -170,12 +173,13 @@ :: Int -- ^ 'lsrsResponseStatus' -> ListStepsResponse listStepsResponse pResponseStatus_ =- ListStepsResponse'- { _lsrsSteps = Nothing- , _lsrsMarker = Nothing- , _lsrsResponseStatus = pResponseStatus_- }+ ListStepsResponse'+ { _lsrsSteps = Nothing+ , _lsrsMarker = Nothing+ , _lsrsResponseStatus = pResponseStatus_+ } + -- | The filtered list of steps for the cluster. lsrsSteps :: Lens' ListStepsResponse [StepSummary] lsrsSteps = lens _lsrsSteps (\ s a -> s{_lsrsSteps = a}) . _Default . _Coerce;@@ -188,4 +192,4 @@ lsrsResponseStatus :: Lens' ListStepsResponse Int lsrsResponseStatus = lens _lsrsResponseStatus (\ s a -> s{_lsrsResponseStatus = a}); -instance NFData ListStepsResponse+instance NFData ListStepsResponse where
+ gen/Network/AWS/EMR/ModifyInstanceFleet.hs view
@@ -0,0 +1,122 @@+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE TypeFamilies #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module : Network.AWS.EMR.ModifyInstanceFleet+-- Copyright : (c) 2013-2017 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)+--+-- Modifies the target On-Demand and target Spot capacities for the instance fleet with the specified InstanceFleetID within the cluster specified using ClusterID. The call either succeeds or fails atomically.+--+--+module Network.AWS.EMR.ModifyInstanceFleet+ (+ -- * Creating a Request+ modifyInstanceFleet+ , ModifyInstanceFleet+ -- * Request Lenses+ , mifClusterId+ , mifInstanceFleet++ -- * Destructuring the Response+ , modifyInstanceFleetResponse+ , ModifyInstanceFleetResponse+ ) where++import Network.AWS.EMR.Types+import Network.AWS.EMR.Types.Product+import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response++-- | /See:/ 'modifyInstanceFleet' smart constructor.+data ModifyInstanceFleet = ModifyInstanceFleet'+ { _mifClusterId :: !Text+ , _mifInstanceFleet :: !InstanceFleetModifyConfig+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ModifyInstanceFleet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'mifClusterId' - The unique identifier of the cluster.+--+-- * 'mifInstanceFleet' - The unique identifier of the instance fleet.+modifyInstanceFleet+ :: Text -- ^ 'mifClusterId'+ -> InstanceFleetModifyConfig -- ^ 'mifInstanceFleet'+ -> ModifyInstanceFleet+modifyInstanceFleet pClusterId_ pInstanceFleet_ =+ ModifyInstanceFleet'+ {_mifClusterId = pClusterId_, _mifInstanceFleet = pInstanceFleet_}+++-- | The unique identifier of the cluster.+mifClusterId :: Lens' ModifyInstanceFleet Text+mifClusterId = lens _mifClusterId (\ s a -> s{_mifClusterId = a});++-- | The unique identifier of the instance fleet.+mifInstanceFleet :: Lens' ModifyInstanceFleet InstanceFleetModifyConfig+mifInstanceFleet = lens _mifInstanceFleet (\ s a -> s{_mifInstanceFleet = a});++instance AWSRequest ModifyInstanceFleet where+ type Rs ModifyInstanceFleet =+ ModifyInstanceFleetResponse+ request = postJSON emr+ response = receiveNull ModifyInstanceFleetResponse'++instance Hashable ModifyInstanceFleet where++instance NFData ModifyInstanceFleet where++instance ToHeaders ModifyInstanceFleet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("ElasticMapReduce.ModifyInstanceFleet" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON ModifyInstanceFleet where+ toJSON ModifyInstanceFleet'{..}+ = object+ (catMaybes+ [Just ("ClusterId" .= _mifClusterId),+ Just ("InstanceFleet" .= _mifInstanceFleet)])++instance ToPath ModifyInstanceFleet where+ toPath = const "/"++instance ToQuery ModifyInstanceFleet where+ toQuery = const mempty++-- | /See:/ 'modifyInstanceFleetResponse' smart constructor.+data ModifyInstanceFleetResponse =+ ModifyInstanceFleetResponse'+ deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ModifyInstanceFleetResponse' with the minimum fields required to make a request.+--+modifyInstanceFleetResponse+ :: ModifyInstanceFleetResponse+modifyInstanceFleetResponse = ModifyInstanceFleetResponse'+++instance NFData ModifyInstanceFleetResponse where
gen/Network/AWS/EMR/ModifyInstanceGroups.hs view
@@ -12,9 +12,9 @@ -- | -- Module : Network.AWS.EMR.ModifyInstanceGroups--- Copyright : (c) 2013-2016 Brendan Hay+-- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) --@@ -35,12 +35,12 @@ , ModifyInstanceGroupsResponse ) where -import Network.AWS.EMR.Types-import Network.AWS.EMR.Types.Product-import Network.AWS.Lens-import Network.AWS.Prelude-import Network.AWS.Request-import Network.AWS.Response+import Network.AWS.EMR.Types+import Network.AWS.EMR.Types.Product+import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response -- | Change the size of some instance groups. --@@ -48,10 +48,11 @@ -- -- /See:/ 'modifyInstanceGroups' smart constructor. data ModifyInstanceGroups = ModifyInstanceGroups'- { _migClusterId :: !(Maybe Text)- , _migInstanceGroups :: !(Maybe [InstanceGroupModifyConfig])- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _migClusterId :: !(Maybe Text)+ , _migInstanceGroups :: !(Maybe [InstanceGroupModifyConfig])+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'ModifyInstanceGroups' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -62,11 +63,9 @@ modifyInstanceGroups :: ModifyInstanceGroups modifyInstanceGroups =- ModifyInstanceGroups'- { _migClusterId = Nothing- , _migInstanceGroups = Nothing- }+ ModifyInstanceGroups' {_migClusterId = Nothing, _migInstanceGroups = Nothing} + -- | The ID of the cluster to which the instance group belongs. migClusterId :: Lens' ModifyInstanceGroups (Maybe Text) migClusterId = lens _migClusterId (\ s a -> s{_migClusterId = a});@@ -81,9 +80,9 @@ request = postJSON emr response = receiveNull ModifyInstanceGroupsResponse' -instance Hashable ModifyInstanceGroups+instance Hashable ModifyInstanceGroups where -instance NFData ModifyInstanceGroups+instance NFData ModifyInstanceGroups where instance ToHeaders ModifyInstanceGroups where toHeaders@@ -110,13 +109,15 @@ -- | /See:/ 'modifyInstanceGroupsResponse' smart constructor. data ModifyInstanceGroupsResponse =- ModifyInstanceGroupsResponse'- deriving (Eq,Read,Show,Data,Typeable,Generic)+ ModifyInstanceGroupsResponse'+ deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'ModifyInstanceGroupsResponse' with the minimum fields required to make a request. -- modifyInstanceGroupsResponse :: ModifyInstanceGroupsResponse modifyInstanceGroupsResponse = ModifyInstanceGroupsResponse' -instance NFData ModifyInstanceGroupsResponse++instance NFData ModifyInstanceGroupsResponse where
gen/Network/AWS/EMR/PutAutoScalingPolicy.hs view
@@ -12,9 +12,9 @@ -- | -- Module : Network.AWS.EMR.PutAutoScalingPolicy--- Copyright : (c) 2013-2016 Brendan Hay+-- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) --@@ -41,20 +41,21 @@ , pasprsResponseStatus ) where -import Network.AWS.EMR.Types-import Network.AWS.EMR.Types.Product-import Network.AWS.Lens-import Network.AWS.Prelude-import Network.AWS.Request-import Network.AWS.Response+import Network.AWS.EMR.Types+import Network.AWS.EMR.Types.Product+import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response -- | /See:/ 'putAutoScalingPolicy' smart constructor. data PutAutoScalingPolicy = PutAutoScalingPolicy'- { _paspClusterId :: !Text- , _paspInstanceGroupId :: !Text- , _paspAutoScalingPolicy :: !AutoScalingPolicy- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _paspClusterId :: !Text+ , _paspInstanceGroupId :: !Text+ , _paspAutoScalingPolicy :: !AutoScalingPolicy+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'PutAutoScalingPolicy' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -70,12 +71,13 @@ -> AutoScalingPolicy -- ^ 'paspAutoScalingPolicy' -> PutAutoScalingPolicy putAutoScalingPolicy pClusterId_ pInstanceGroupId_ pAutoScalingPolicy_ =- PutAutoScalingPolicy'- { _paspClusterId = pClusterId_- , _paspInstanceGroupId = pInstanceGroupId_- , _paspAutoScalingPolicy = pAutoScalingPolicy_- }+ PutAutoScalingPolicy'+ { _paspClusterId = pClusterId_+ , _paspInstanceGroupId = pInstanceGroupId_+ , _paspAutoScalingPolicy = pAutoScalingPolicy_+ } + -- | Specifies the ID of a cluster. The instance group to which the automatic scaling policy is applied is within this cluster. paspClusterId :: Lens' PutAutoScalingPolicy Text paspClusterId = lens _paspClusterId (\ s a -> s{_paspClusterId = a});@@ -100,9 +102,9 @@ <*> (x .?> "InstanceGroupId") <*> (pure (fromEnum s))) -instance Hashable PutAutoScalingPolicy+instance Hashable PutAutoScalingPolicy where -instance NFData PutAutoScalingPolicy+instance NFData PutAutoScalingPolicy where instance ToHeaders PutAutoScalingPolicy where toHeaders@@ -131,12 +133,13 @@ -- | /See:/ 'putAutoScalingPolicyResponse' smart constructor. data PutAutoScalingPolicyResponse = PutAutoScalingPolicyResponse'- { _pasprsClusterId :: !(Maybe Text)- , _pasprsAutoScalingPolicy :: !(Maybe AutoScalingPolicyDescription)- , _pasprsInstanceGroupId :: !(Maybe Text)- , _pasprsResponseStatus :: !Int- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _pasprsClusterId :: !(Maybe Text)+ , _pasprsAutoScalingPolicy :: !(Maybe AutoScalingPolicyDescription)+ , _pasprsInstanceGroupId :: !(Maybe Text)+ , _pasprsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'PutAutoScalingPolicyResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -152,13 +155,14 @@ :: Int -- ^ 'pasprsResponseStatus' -> PutAutoScalingPolicyResponse putAutoScalingPolicyResponse pResponseStatus_ =- PutAutoScalingPolicyResponse'- { _pasprsClusterId = Nothing- , _pasprsAutoScalingPolicy = Nothing- , _pasprsInstanceGroupId = Nothing- , _pasprsResponseStatus = pResponseStatus_- }+ PutAutoScalingPolicyResponse'+ { _pasprsClusterId = Nothing+ , _pasprsAutoScalingPolicy = Nothing+ , _pasprsInstanceGroupId = Nothing+ , _pasprsResponseStatus = pResponseStatus_+ } + -- | Specifies the ID of a cluster. The instance group to which the automatic scaling policy is applied is within this cluster. pasprsClusterId :: Lens' PutAutoScalingPolicyResponse (Maybe Text) pasprsClusterId = lens _pasprsClusterId (\ s a -> s{_pasprsClusterId = a});@@ -175,4 +179,4 @@ pasprsResponseStatus :: Lens' PutAutoScalingPolicyResponse Int pasprsResponseStatus = lens _pasprsResponseStatus (\ s a -> s{_pasprsResponseStatus = a}); -instance NFData PutAutoScalingPolicyResponse+instance NFData PutAutoScalingPolicyResponse where
gen/Network/AWS/EMR/RemoveAutoScalingPolicy.hs view
@@ -12,9 +12,9 @@ -- | -- Module : Network.AWS.EMR.RemoveAutoScalingPolicy--- Copyright : (c) 2013-2016 Brendan Hay+-- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) --@@ -37,19 +37,20 @@ , rasprsResponseStatus ) where -import Network.AWS.EMR.Types-import Network.AWS.EMR.Types.Product-import Network.AWS.Lens-import Network.AWS.Prelude-import Network.AWS.Request-import Network.AWS.Response+import Network.AWS.EMR.Types+import Network.AWS.EMR.Types.Product+import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response -- | /See:/ 'removeAutoScalingPolicy' smart constructor. data RemoveAutoScalingPolicy = RemoveAutoScalingPolicy'- { _raspClusterId :: !Text- , _raspInstanceGroupId :: !Text- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _raspClusterId :: !Text+ , _raspInstanceGroupId :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'RemoveAutoScalingPolicy' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -62,11 +63,10 @@ -> Text -- ^ 'raspInstanceGroupId' -> RemoveAutoScalingPolicy removeAutoScalingPolicy pClusterId_ pInstanceGroupId_ =- RemoveAutoScalingPolicy'- { _raspClusterId = pClusterId_- , _raspInstanceGroupId = pInstanceGroupId_- }+ RemoveAutoScalingPolicy'+ {_raspClusterId = pClusterId_, _raspInstanceGroupId = pInstanceGroupId_} + -- | Specifies the ID of a cluster. The instance group to which the automatic scaling policy is applied is within this cluster. raspClusterId :: Lens' RemoveAutoScalingPolicy Text raspClusterId = lens _raspClusterId (\ s a -> s{_raspClusterId = a});@@ -85,9 +85,9 @@ RemoveAutoScalingPolicyResponse' <$> (pure (fromEnum s))) -instance Hashable RemoveAutoScalingPolicy+instance Hashable RemoveAutoScalingPolicy where -instance NFData RemoveAutoScalingPolicy+instance NFData RemoveAutoScalingPolicy where instance ToHeaders RemoveAutoScalingPolicy where toHeaders@@ -114,9 +114,10 @@ -- | /See:/ 'removeAutoScalingPolicyResponse' smart constructor. newtype RemoveAutoScalingPolicyResponse = RemoveAutoScalingPolicyResponse'- { _rasprsResponseStatus :: Int- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _rasprsResponseStatus :: Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'RemoveAutoScalingPolicyResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -126,12 +127,11 @@ :: Int -- ^ 'rasprsResponseStatus' -> RemoveAutoScalingPolicyResponse removeAutoScalingPolicyResponse pResponseStatus_ =- RemoveAutoScalingPolicyResponse'- { _rasprsResponseStatus = pResponseStatus_- }+ RemoveAutoScalingPolicyResponse' {_rasprsResponseStatus = pResponseStatus_} + -- | -- | The response status code. rasprsResponseStatus :: Lens' RemoveAutoScalingPolicyResponse Int rasprsResponseStatus = lens _rasprsResponseStatus (\ s a -> s{_rasprsResponseStatus = a}); -instance NFData RemoveAutoScalingPolicyResponse+instance NFData RemoveAutoScalingPolicyResponse where
gen/Network/AWS/EMR/RemoveTags.hs view
@@ -12,9 +12,9 @@ -- | -- Module : Network.AWS.EMR.RemoveTags--- Copyright : (c) 2013-2016 Brendan Hay+-- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) --@@ -39,12 +39,12 @@ , rtrsResponseStatus ) where -import Network.AWS.EMR.Types-import Network.AWS.EMR.Types.Product-import Network.AWS.Lens-import Network.AWS.Prelude-import Network.AWS.Request-import Network.AWS.Response+import Network.AWS.EMR.Types+import Network.AWS.EMR.Types.Product+import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response -- | This input identifies a cluster and a list of tags to remove. --@@ -52,10 +52,11 @@ -- -- /See:/ 'removeTags' smart constructor. data RemoveTags = RemoveTags'- { _rtResourceId :: !Text- , _rtTagKeys :: ![Text]- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _rtResourceId :: !Text+ , _rtTagKeys :: ![Text]+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'RemoveTags' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -67,11 +68,9 @@ :: Text -- ^ 'rtResourceId' -> RemoveTags removeTags pResourceId_ =- RemoveTags'- { _rtResourceId = pResourceId_- , _rtTagKeys = mempty- }+ RemoveTags' {_rtResourceId = pResourceId_, _rtTagKeys = mempty} + -- | The Amazon EMR resource identifier from which tags will be removed. This value must be a cluster identifier. rtResourceId :: Lens' RemoveTags Text rtResourceId = lens _rtResourceId (\ s a -> s{_rtResourceId = a});@@ -88,9 +87,9 @@ (\ s h x -> RemoveTagsResponse' <$> (pure (fromEnum s))) -instance Hashable RemoveTags+instance Hashable RemoveTags where -instance NFData RemoveTags+instance NFData RemoveTags where instance ToHeaders RemoveTags where toHeaders@@ -120,9 +119,10 @@ -- -- /See:/ 'removeTagsResponse' smart constructor. newtype RemoveTagsResponse = RemoveTagsResponse'- { _rtrsResponseStatus :: Int- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _rtrsResponseStatus :: Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'RemoveTagsResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -132,12 +132,11 @@ :: Int -- ^ 'rtrsResponseStatus' -> RemoveTagsResponse removeTagsResponse pResponseStatus_ =- RemoveTagsResponse'- { _rtrsResponseStatus = pResponseStatus_- }+ RemoveTagsResponse' {_rtrsResponseStatus = pResponseStatus_} + -- | -- | The response status code. rtrsResponseStatus :: Lens' RemoveTagsResponse Int rtrsResponseStatus = lens _rtrsResponseStatus (\ s a -> s{_rtrsResponseStatus = a}); -instance NFData RemoveTagsResponse+instance NFData RemoveTagsResponse where
gen/Network/AWS/EMR/RunJobFlow.hs view
@@ -12,22 +12,22 @@ -- | -- Module : Network.AWS.EMR.RunJobFlow--- Copyright : (c) 2013-2016 Brendan Hay+-- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) ----- RunJobFlow creates and starts running a new job flow. The job flow will run the steps specified. After the job flow completes, the cluster is stopped and the HDFS partition is lost. To prevent loss of data, configure the last step of the job flow to store results in Amazon S3. If the 'JobFlowInstancesConfig' @KeepJobFlowAliveWhenNoSteps@ parameter is set to @TRUE@ , the job flow will transition to the WAITING state rather than shutting down after the steps have completed.+-- RunJobFlow creates and starts running a new cluster (job flow). The cluster runs the steps specified. After the steps complete, the cluster stops and the HDFS partition is lost. To prevent loss of data, configure the last step of the job flow to store results in Amazon S3. If the 'JobFlowInstancesConfig' @KeepJobFlowAliveWhenNoSteps@ parameter is set to @TRUE@ , the cluster transitions to the WAITING state rather than shutting down after the steps have completed. -- ----- For additional protection, you can set the 'JobFlowInstancesConfig' @TerminationProtected@ parameter to @TRUE@ to lock the job flow and prevent it from being terminated by API call, user intervention, or in the event of a job flow error.+-- For additional protection, you can set the 'JobFlowInstancesConfig' @TerminationProtected@ parameter to @TRUE@ to lock the cluster and prevent it from being terminated by API call, user intervention, or in the event of a job flow error. -- -- A maximum of 256 steps are allowed in each job flow. ----- If your job flow is long-running (such as a Hive data warehouse) or complex, you may require more than 256 steps to process your data. You can bypass the 256-step limitation in various ways, including using the SSH shell to connect to the master node and submitting queries directly to the software running on the master node, such as Hive and Hadoop. For more information on how to do this, see <http://docs.aws.amazon.com/ElasticMapReduce/latest/Management/Guide/AddMoreThan256Steps.html Add More than 256 Steps to a Job Flow> in the /Amazon EMR Management Guide/ .+-- If your cluster is long-running (such as a Hive data warehouse) or complex, you may require more than 256 steps to process your data. You can bypass the 256-step limitation in various ways, including using the SSH shell to connect to the master node and submitting queries directly to the software running on the master node, such as Hive and Hadoop. For more information on how to do this, see <http://docs.aws.amazon.com/ElasticMapReduce/latest/Management/Guide/AddMoreThan256Steps.html Add More than 256 Steps to a Cluster> in the /Amazon EMR Management Guide/ . ----- For long running job flows, we recommend that you periodically store your results.+-- For long running clusters, we recommend that you periodically store your results. -- module Network.AWS.EMR.RunJobFlow (@@ -36,8 +36,10 @@ , RunJobFlow -- * Request Lenses , rjfAMIVersion+ , rjfEBSRootVolumeSize , rjfAdditionalInfo , rjfConfigurations+ , rjfCustomAMIId , rjfAutoScalingRole , rjfSecurityConfiguration , rjfScaleDownBehavior@@ -45,6 +47,7 @@ , rjfJobFlowRole , rjfBootstrapActions , rjfReleaseLabel+ , rjfRepoUpgradeOnBoot , rjfLogURI , rjfNewSupportedProducts , rjfVisibleToAllUsers@@ -63,12 +66,12 @@ , rjfrsResponseStatus ) where -import Network.AWS.EMR.Types-import Network.AWS.EMR.Types.Product-import Network.AWS.Lens-import Network.AWS.Prelude-import Network.AWS.Request-import Network.AWS.Response+import Network.AWS.EMR.Types+import Network.AWS.EMR.Types.Product+import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response -- | Input to the 'RunJobFlow' operation. --@@ -76,60 +79,70 @@ -- -- /See:/ 'runJobFlow' smart constructor. data RunJobFlow = RunJobFlow'- { _rjfAMIVersion :: !(Maybe Text)- , _rjfAdditionalInfo :: !(Maybe Text)- , _rjfConfigurations :: !(Maybe [Configuration])- , _rjfAutoScalingRole :: !(Maybe Text)- , _rjfSecurityConfiguration :: !(Maybe Text)- , _rjfScaleDownBehavior :: !(Maybe ScaleDownBehavior)- , _rjfSteps :: !(Maybe [StepConfig])- , _rjfJobFlowRole :: !(Maybe Text)- , _rjfBootstrapActions :: !(Maybe [BootstrapActionConfig])- , _rjfReleaseLabel :: !(Maybe Text)- , _rjfLogURI :: !(Maybe Text)- , _rjfNewSupportedProducts :: !(Maybe [SupportedProductConfig])- , _rjfVisibleToAllUsers :: !(Maybe Bool)- , _rjfSupportedProducts :: !(Maybe [Text])- , _rjfApplications :: !(Maybe [Application])- , _rjfTags :: !(Maybe [Tag])- , _rjfServiceRole :: !(Maybe Text)- , _rjfName :: !Text- , _rjfInstances :: !JobFlowInstancesConfig- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _rjfAMIVersion :: !(Maybe Text)+ , _rjfEBSRootVolumeSize :: !(Maybe Int)+ , _rjfAdditionalInfo :: !(Maybe Text)+ , _rjfConfigurations :: !(Maybe [Configuration])+ , _rjfCustomAMIId :: !(Maybe Text)+ , _rjfAutoScalingRole :: !(Maybe Text)+ , _rjfSecurityConfiguration :: !(Maybe Text)+ , _rjfScaleDownBehavior :: !(Maybe ScaleDownBehavior)+ , _rjfSteps :: !(Maybe [StepConfig])+ , _rjfJobFlowRole :: !(Maybe Text)+ , _rjfBootstrapActions :: !(Maybe [BootstrapActionConfig])+ , _rjfReleaseLabel :: !(Maybe Text)+ , _rjfRepoUpgradeOnBoot :: !(Maybe RepoUpgradeOnBoot)+ , _rjfLogURI :: !(Maybe Text)+ , _rjfNewSupportedProducts :: !(Maybe [SupportedProductConfig])+ , _rjfVisibleToAllUsers :: !(Maybe Bool)+ , _rjfSupportedProducts :: !(Maybe [Text])+ , _rjfApplications :: !(Maybe [Application])+ , _rjfTags :: !(Maybe [Tag])+ , _rjfServiceRole :: !(Maybe Text)+ , _rjfName :: !Text+ , _rjfInstances :: !JobFlowInstancesConfig+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'RunJobFlow' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: ----- * 'rjfAMIVersion' - The version of the Amazon Machine Image (AMI) to use when launching Amazon EC2 instances in the job flow. The following values are valid: * The version number of the AMI to use, for example, "2.0." If the AMI supports multiple versions of Hadoop (for example, AMI 1.0 supports both Hadoop 0.18 and 0.20) you can use the 'JobFlowInstancesConfig' @HadoopVersion@ parameter to modify the version of Hadoop from the defaults shown above. For details about the AMI versions currently supported by Amazon Elastic MapReduce, see <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/EnvironmentConfig_AMIVersion.html#ami-versions-supported AMI Versions Supported in Elastic MapReduce> in the /Amazon Elastic MapReduce Developer Guide./+-- * 'rjfAMIVersion' - For Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases 4.0 and later, the Linux AMI is determined by the @ReleaseLabel@ specified or by @CustomAmiID@ . The version of the Amazon Machine Image (AMI) to use when launching Amazon EC2 instances in the job flow. For details about the AMI versions currently supported in EMR version 3.x and 2.x, see <ElasticMapReduce/latest/DeveloperGuide/emr-dg.pdf#nameddest=ami-versions-supported AMI Versions Supported in EMR> in the /Amazon EMR Developer Guide/ . If the AMI supports multiple versions of Hadoop (for example, AMI 1.0 supports both Hadoop 0.18 and 0.20), you can use the 'JobFlowInstancesConfig' @HadoopVersion@ parameter to modify the version of Hadoop from the defaults shown above. --+-- * 'rjfEBSRootVolumeSize' - The size, in GiB, of the EBS root device volume of the Linux AMI that is used for each EC2 instance. Available in Amazon EMR version 4.x and later.+-- -- * 'rjfAdditionalInfo' - A JSON string for selecting additional features. ----- * 'rjfConfigurations' - The list of configurations supplied for the EMR cluster you are creating.+-- * 'rjfConfigurations' - For Amazon EMR releases 4.0 and later. The list of configurations supplied for the EMR cluster you are creating. --+-- * 'rjfCustomAMIId' - Available only in Amazon EMR version 5.7.0 and later. The ID of a custom Amazon EBS-backed Linux AMI. If specified, Amazon EMR uses this AMI when it launches cluster EC2 instances. For more information about custom AMIs in Amazon EMR, see <http://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-custom-ami.html Using a Custom AMI> in the /Amazon EMR Management Guide/ . If omitted, the cluster uses the base Linux AMI for the @ReleaseLabel@ specified. For Amazon EMR versions 2.x and 3.x, use @AmiVersion@ instead. For information about creating a custom AMI, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html Creating an Amazon EBS-Backed Linux AMI> in the /Amazon Elastic Compute Cloud User Guide for Linux Instances/ . For information about finding an AMI ID, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html Finding a Linux AMI> .+-- -- * 'rjfAutoScalingRole' - An IAM role for automatic scaling policies. The default role is @EMR_AutoScaling_DefaultRole@ . The IAM role provides permissions that the automatic scaling feature requires to launch and terminate EC2 instances in an instance group. -- -- * 'rjfSecurityConfiguration' - The name of a security configuration to apply to the cluster. -- -- * 'rjfScaleDownBehavior' - Specifies the way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized. @TERMINATE_AT_INSTANCE_HOUR@ indicates that Amazon EMR terminates nodes at the instance-hour boundary, regardless of when the request to terminate the instance was submitted. This option is only available with Amazon EMR 5.1.0 and later and is the default for clusters created using that version. @TERMINATE_AT_TASK_COMPLETION@ indicates that Amazon EMR blacklists and drains tasks from nodes before terminating the Amazon EC2 instances, regardless of the instance-hour boundary. With either behavior, Amazon EMR removes the least active nodes first and blocks instance termination if it could lead to HDFS corruption. @TERMINATE_AT_TASK_COMPLETION@ available only in Amazon EMR version 4.1.0 and later, and is the default for versions of Amazon EMR earlier than 5.1.0. ----- * 'rjfSteps' - A list of steps to be executed by the job flow.+-- * 'rjfSteps' - A list of steps to run. -- -- * 'rjfJobFlowRole' - Also called instance profile and EC2 role. An IAM role for an EMR cluster. The EC2 instances of the cluster assume this role. The default role is @EMR_EC2_DefaultRole@ . In order to use the default role, you must have already created it using the CLI or console. ----- * 'rjfBootstrapActions' - A list of bootstrap actions that will be run before Hadoop is started on the cluster nodes.+-- * 'rjfBootstrapActions' - A list of bootstrap actions to run before Hadoop starts on the cluster nodes. ----- * 'rjfReleaseLabel' - The release label for the Amazon EMR release. For Amazon EMR 3.x and 2.x AMIs, use amiVersion instead instead of ReleaseLabel.+-- * 'rjfReleaseLabel' - The release label for the Amazon EMR release. For Amazon EMR 3.x and 2.x AMIs, use @AmiVersion@ instead. --+-- * 'rjfRepoUpgradeOnBoot' - Applies only when @CustomAmiID@ is used. Specifies which updates from the Amazon Linux AMI package repositories to apply automatically when the instance boots using the AMI. If omitted, the default is @SECURITY@ , which indicates that only security updates are applied. If @NONE@ is specified, no updates are applied, and all updates must be applied manually.+-- -- * 'rjfLogURI' - The location in Amazon S3 to write the log files of the job flow. If a value is not provided, logs are not created. ----- * 'rjfNewSupportedProducts' - A list of strings that indicates third-party software to use with the job flow that accepts a user argument list. EMR accepts and forwards the argument list to the corresponding installation script as bootstrap action arguments. For more information, see <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-mapr.html Launch a Job Flow on the MapR Distribution for Hadoop> . Currently supported values are: * "mapr-m3" - launch the cluster using MapR M3 Edition. * "mapr-m5" - launch the cluster using MapR M5 Edition. * "mapr" with the user arguments specifying "--edition,m3" or "--edition,m5" - launch the job flow using MapR M3 or M5 Edition respectively. * "mapr-m7" - launch the cluster using MapR M7 Edition. * "hunk" - launch the cluster with the Hunk Big Data Analtics Platform. * "hue"- launch the cluster with Hue installed. * "spark" - launch the cluster with Apache Spark installed. * "ganglia" - launch the cluster with the Ganglia Monitoring System installed.+-- * 'rjfNewSupportedProducts' - A list of strings that indicates third-party software to use with the job flow that accepts a user argument list. EMR accepts and forwards the argument list to the corresponding installation script as bootstrap action arguments. For more information, see "Launch a Job Flow on the MapR Distribution for Hadoop" in the <http://docs.aws.amazon.com/http:/docs.aws.amazon.com/emr/latest/DeveloperGuide/emr-dg.pdf Amazon EMR Developer Guide> . Supported values are: * "mapr-m3" - launch the cluster using MapR M3 Edition. * "mapr-m5" - launch the cluster using MapR M5 Edition. * "mapr" with the user arguments specifying "--edition,m3" or "--edition,m5" - launch the job flow using MapR M3 or M5 Edition respectively. * "mapr-m7" - launch the cluster using MapR M7 Edition. * "hunk" - launch the cluster with the Hunk Big Data Analtics Platform. * "hue"- launch the cluster with Hue installed. * "spark" - launch the cluster with Apache Spark installed. * "ganglia" - launch the cluster with the Ganglia Monitoring System installed. ----- * 'rjfVisibleToAllUsers' - Whether the job flow is visible to all IAM users of the AWS account associated with the job flow. If this value is set to @true@ , all IAM users of that AWS account can view and (if they have the proper policy permissions set) manage the job flow. If it is set to @false@ , only the IAM user that created the job flow can view and manage it.+-- * 'rjfVisibleToAllUsers' - Whether the cluster is visible to all IAM users of the AWS account associated with the cluster. If this value is set to @true@ , all IAM users of that AWS account can view and (if they have the proper policy permissions set) manage the cluster. If it is set to @false@ , only the IAM user that created the cluster can view and manage it. ----- * 'rjfSupportedProducts' - A list of strings that indicates third-party software to use with the job flow. For more information, see <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-supported-products.html Use Third Party Applications with Amazon EMR> . Currently supported values are: * "mapr-m3" - launch the job flow using MapR M3 Edition. * "mapr-m5" - launch the job flow using MapR M5 Edition.+-- * 'rjfSupportedProducts' - A list of strings that indicates third-party software to use. For more information, see <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-supported-products.html Use Third Party Applications with Amazon EMR> . Currently supported values are: * "mapr-m3" - launch the job flow using MapR M3 Edition. * "mapr-m5" - launch the job flow using MapR M5 Edition. ----- * 'rjfApplications' - A list of applications for the cluster. Valid values are: "Hadoop", "Hive", "Mahout", "Pig", and "Spark." They are case insensitive.+-- * 'rjfApplications' - For Amazon EMR releases 4.0 and later. A list of applications for the cluster. Valid values are: "Hadoop", "Hive", "Mahout", "Pig", and "Spark." They are case insensitive. -- -- * 'rjfTags' - A list of tags to associate with a cluster and propagate to Amazon EC2 instances. --@@ -137,46 +150,58 @@ -- -- * 'rjfName' - The name of the job flow. ----- * 'rjfInstances' - A specification of the number and type of Amazon EC2 instances on which to run the job flow.+-- * 'rjfInstances' - A specification of the number and type of Amazon EC2 instances. runJobFlow :: Text -- ^ 'rjfName' -> JobFlowInstancesConfig -- ^ 'rjfInstances' -> RunJobFlow runJobFlow pName_ pInstances_ =- RunJobFlow'- { _rjfAMIVersion = Nothing- , _rjfAdditionalInfo = Nothing- , _rjfConfigurations = Nothing- , _rjfAutoScalingRole = Nothing- , _rjfSecurityConfiguration = Nothing- , _rjfScaleDownBehavior = Nothing- , _rjfSteps = Nothing- , _rjfJobFlowRole = Nothing- , _rjfBootstrapActions = Nothing- , _rjfReleaseLabel = Nothing- , _rjfLogURI = Nothing- , _rjfNewSupportedProducts = Nothing- , _rjfVisibleToAllUsers = Nothing- , _rjfSupportedProducts = Nothing- , _rjfApplications = Nothing- , _rjfTags = Nothing- , _rjfServiceRole = Nothing- , _rjfName = pName_- , _rjfInstances = pInstances_- }+ RunJobFlow'+ { _rjfAMIVersion = Nothing+ , _rjfEBSRootVolumeSize = Nothing+ , _rjfAdditionalInfo = Nothing+ , _rjfConfigurations = Nothing+ , _rjfCustomAMIId = Nothing+ , _rjfAutoScalingRole = Nothing+ , _rjfSecurityConfiguration = Nothing+ , _rjfScaleDownBehavior = Nothing+ , _rjfSteps = Nothing+ , _rjfJobFlowRole = Nothing+ , _rjfBootstrapActions = Nothing+ , _rjfReleaseLabel = Nothing+ , _rjfRepoUpgradeOnBoot = Nothing+ , _rjfLogURI = Nothing+ , _rjfNewSupportedProducts = Nothing+ , _rjfVisibleToAllUsers = Nothing+ , _rjfSupportedProducts = Nothing+ , _rjfApplications = Nothing+ , _rjfTags = Nothing+ , _rjfServiceRole = Nothing+ , _rjfName = pName_+ , _rjfInstances = pInstances_+ } --- | The version of the Amazon Machine Image (AMI) to use when launching Amazon EC2 instances in the job flow. The following values are valid: * The version number of the AMI to use, for example, "2.0." If the AMI supports multiple versions of Hadoop (for example, AMI 1.0 supports both Hadoop 0.18 and 0.20) you can use the 'JobFlowInstancesConfig' @HadoopVersion@ parameter to modify the version of Hadoop from the defaults shown above. For details about the AMI versions currently supported by Amazon Elastic MapReduce, see <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/EnvironmentConfig_AMIVersion.html#ami-versions-supported AMI Versions Supported in Elastic MapReduce> in the /Amazon Elastic MapReduce Developer Guide./++-- | For Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases 4.0 and later, the Linux AMI is determined by the @ReleaseLabel@ specified or by @CustomAmiID@ . The version of the Amazon Machine Image (AMI) to use when launching Amazon EC2 instances in the job flow. For details about the AMI versions currently supported in EMR version 3.x and 2.x, see <ElasticMapReduce/latest/DeveloperGuide/emr-dg.pdf#nameddest=ami-versions-supported AMI Versions Supported in EMR> in the /Amazon EMR Developer Guide/ . If the AMI supports multiple versions of Hadoop (for example, AMI 1.0 supports both Hadoop 0.18 and 0.20), you can use the 'JobFlowInstancesConfig' @HadoopVersion@ parameter to modify the version of Hadoop from the defaults shown above. rjfAMIVersion :: Lens' RunJobFlow (Maybe Text) rjfAMIVersion = lens _rjfAMIVersion (\ s a -> s{_rjfAMIVersion = a}); +-- | The size, in GiB, of the EBS root device volume of the Linux AMI that is used for each EC2 instance. Available in Amazon EMR version 4.x and later.+rjfEBSRootVolumeSize :: Lens' RunJobFlow (Maybe Int)+rjfEBSRootVolumeSize = lens _rjfEBSRootVolumeSize (\ s a -> s{_rjfEBSRootVolumeSize = a});+ -- | A JSON string for selecting additional features. rjfAdditionalInfo :: Lens' RunJobFlow (Maybe Text) rjfAdditionalInfo = lens _rjfAdditionalInfo (\ s a -> s{_rjfAdditionalInfo = a}); --- | The list of configurations supplied for the EMR cluster you are creating.+-- | For Amazon EMR releases 4.0 and later. The list of configurations supplied for the EMR cluster you are creating. rjfConfigurations :: Lens' RunJobFlow [Configuration] rjfConfigurations = lens _rjfConfigurations (\ s a -> s{_rjfConfigurations = a}) . _Default . _Coerce; +-- | Available only in Amazon EMR version 5.7.0 and later. The ID of a custom Amazon EBS-backed Linux AMI. If specified, Amazon EMR uses this AMI when it launches cluster EC2 instances. For more information about custom AMIs in Amazon EMR, see <http://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-custom-ami.html Using a Custom AMI> in the /Amazon EMR Management Guide/ . If omitted, the cluster uses the base Linux AMI for the @ReleaseLabel@ specified. For Amazon EMR versions 2.x and 3.x, use @AmiVersion@ instead. For information about creating a custom AMI, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html Creating an Amazon EBS-Backed Linux AMI> in the /Amazon Elastic Compute Cloud User Guide for Linux Instances/ . For information about finding an AMI ID, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html Finding a Linux AMI> .+rjfCustomAMIId :: Lens' RunJobFlow (Maybe Text)+rjfCustomAMIId = lens _rjfCustomAMIId (\ s a -> s{_rjfCustomAMIId = a});+ -- | An IAM role for automatic scaling policies. The default role is @EMR_AutoScaling_DefaultRole@ . The IAM role provides permissions that the automatic scaling feature requires to launch and terminate EC2 instances in an instance group. rjfAutoScalingRole :: Lens' RunJobFlow (Maybe Text) rjfAutoScalingRole = lens _rjfAutoScalingRole (\ s a -> s{_rjfAutoScalingRole = a});@@ -189,7 +214,7 @@ rjfScaleDownBehavior :: Lens' RunJobFlow (Maybe ScaleDownBehavior) rjfScaleDownBehavior = lens _rjfScaleDownBehavior (\ s a -> s{_rjfScaleDownBehavior = a}); --- | A list of steps to be executed by the job flow.+-- | A list of steps to run. rjfSteps :: Lens' RunJobFlow [StepConfig] rjfSteps = lens _rjfSteps (\ s a -> s{_rjfSteps = a}) . _Default . _Coerce; @@ -197,31 +222,35 @@ rjfJobFlowRole :: Lens' RunJobFlow (Maybe Text) rjfJobFlowRole = lens _rjfJobFlowRole (\ s a -> s{_rjfJobFlowRole = a}); --- | A list of bootstrap actions that will be run before Hadoop is started on the cluster nodes.+-- | A list of bootstrap actions to run before Hadoop starts on the cluster nodes. rjfBootstrapActions :: Lens' RunJobFlow [BootstrapActionConfig] rjfBootstrapActions = lens _rjfBootstrapActions (\ s a -> s{_rjfBootstrapActions = a}) . _Default . _Coerce; --- | The release label for the Amazon EMR release. For Amazon EMR 3.x and 2.x AMIs, use amiVersion instead instead of ReleaseLabel.+-- | The release label for the Amazon EMR release. For Amazon EMR 3.x and 2.x AMIs, use @AmiVersion@ instead. rjfReleaseLabel :: Lens' RunJobFlow (Maybe Text) rjfReleaseLabel = lens _rjfReleaseLabel (\ s a -> s{_rjfReleaseLabel = a}); +-- | Applies only when @CustomAmiID@ is used. Specifies which updates from the Amazon Linux AMI package repositories to apply automatically when the instance boots using the AMI. If omitted, the default is @SECURITY@ , which indicates that only security updates are applied. If @NONE@ is specified, no updates are applied, and all updates must be applied manually.+rjfRepoUpgradeOnBoot :: Lens' RunJobFlow (Maybe RepoUpgradeOnBoot)+rjfRepoUpgradeOnBoot = lens _rjfRepoUpgradeOnBoot (\ s a -> s{_rjfRepoUpgradeOnBoot = a});+ -- | The location in Amazon S3 to write the log files of the job flow. If a value is not provided, logs are not created. rjfLogURI :: Lens' RunJobFlow (Maybe Text) rjfLogURI = lens _rjfLogURI (\ s a -> s{_rjfLogURI = a}); --- | A list of strings that indicates third-party software to use with the job flow that accepts a user argument list. EMR accepts and forwards the argument list to the corresponding installation script as bootstrap action arguments. For more information, see <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-mapr.html Launch a Job Flow on the MapR Distribution for Hadoop> . Currently supported values are: * "mapr-m3" - launch the cluster using MapR M3 Edition. * "mapr-m5" - launch the cluster using MapR M5 Edition. * "mapr" with the user arguments specifying "--edition,m3" or "--edition,m5" - launch the job flow using MapR M3 or M5 Edition respectively. * "mapr-m7" - launch the cluster using MapR M7 Edition. * "hunk" - launch the cluster with the Hunk Big Data Analtics Platform. * "hue"- launch the cluster with Hue installed. * "spark" - launch the cluster with Apache Spark installed. * "ganglia" - launch the cluster with the Ganglia Monitoring System installed.+-- | A list of strings that indicates third-party software to use with the job flow that accepts a user argument list. EMR accepts and forwards the argument list to the corresponding installation script as bootstrap action arguments. For more information, see "Launch a Job Flow on the MapR Distribution for Hadoop" in the <http://docs.aws.amazon.com/http:/docs.aws.amazon.com/emr/latest/DeveloperGuide/emr-dg.pdf Amazon EMR Developer Guide> . Supported values are: * "mapr-m3" - launch the cluster using MapR M3 Edition. * "mapr-m5" - launch the cluster using MapR M5 Edition. * "mapr" with the user arguments specifying "--edition,m3" or "--edition,m5" - launch the job flow using MapR M3 or M5 Edition respectively. * "mapr-m7" - launch the cluster using MapR M7 Edition. * "hunk" - launch the cluster with the Hunk Big Data Analtics Platform. * "hue"- launch the cluster with Hue installed. * "spark" - launch the cluster with Apache Spark installed. * "ganglia" - launch the cluster with the Ganglia Monitoring System installed. rjfNewSupportedProducts :: Lens' RunJobFlow [SupportedProductConfig] rjfNewSupportedProducts = lens _rjfNewSupportedProducts (\ s a -> s{_rjfNewSupportedProducts = a}) . _Default . _Coerce; --- | Whether the job flow is visible to all IAM users of the AWS account associated with the job flow. If this value is set to @true@ , all IAM users of that AWS account can view and (if they have the proper policy permissions set) manage the job flow. If it is set to @false@ , only the IAM user that created the job flow can view and manage it.+-- | Whether the cluster is visible to all IAM users of the AWS account associated with the cluster. If this value is set to @true@ , all IAM users of that AWS account can view and (if they have the proper policy permissions set) manage the cluster. If it is set to @false@ , only the IAM user that created the cluster can view and manage it. rjfVisibleToAllUsers :: Lens' RunJobFlow (Maybe Bool) rjfVisibleToAllUsers = lens _rjfVisibleToAllUsers (\ s a -> s{_rjfVisibleToAllUsers = a}); --- | A list of strings that indicates third-party software to use with the job flow. For more information, see <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-supported-products.html Use Third Party Applications with Amazon EMR> . Currently supported values are: * "mapr-m3" - launch the job flow using MapR M3 Edition. * "mapr-m5" - launch the job flow using MapR M5 Edition.+-- | A list of strings that indicates third-party software to use. For more information, see <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-supported-products.html Use Third Party Applications with Amazon EMR> . Currently supported values are: * "mapr-m3" - launch the job flow using MapR M3 Edition. * "mapr-m5" - launch the job flow using MapR M5 Edition. rjfSupportedProducts :: Lens' RunJobFlow [Text] rjfSupportedProducts = lens _rjfSupportedProducts (\ s a -> s{_rjfSupportedProducts = a}) . _Default . _Coerce; --- | A list of applications for the cluster. Valid values are: "Hadoop", "Hive", "Mahout", "Pig", and "Spark." They are case insensitive.+-- | For Amazon EMR releases 4.0 and later. A list of applications for the cluster. Valid values are: "Hadoop", "Hive", "Mahout", "Pig", and "Spark." They are case insensitive. rjfApplications :: Lens' RunJobFlow [Application] rjfApplications = lens _rjfApplications (\ s a -> s{_rjfApplications = a}) . _Default . _Coerce; @@ -237,7 +266,7 @@ rjfName :: Lens' RunJobFlow Text rjfName = lens _rjfName (\ s a -> s{_rjfName = a}); --- | A specification of the number and type of Amazon EC2 instances on which to run the job flow.+-- | A specification of the number and type of Amazon EC2 instances. rjfInstances :: Lens' RunJobFlow JobFlowInstancesConfig rjfInstances = lens _rjfInstances (\ s a -> s{_rjfInstances = a}); @@ -250,9 +279,9 @@ RunJobFlowResponse' <$> (x .?> "JobFlowId") <*> (pure (fromEnum s))) -instance Hashable RunJobFlow+instance Hashable RunJobFlow where -instance NFData RunJobFlow+instance NFData RunJobFlow where instance ToHeaders RunJobFlow where toHeaders@@ -268,8 +297,10 @@ = object (catMaybes [("AmiVersion" .=) <$> _rjfAMIVersion,+ ("EbsRootVolumeSize" .=) <$> _rjfEBSRootVolumeSize, ("AdditionalInfo" .=) <$> _rjfAdditionalInfo, ("Configurations" .=) <$> _rjfConfigurations,+ ("CustomAmiId" .=) <$> _rjfCustomAMIId, ("AutoScalingRole" .=) <$> _rjfAutoScalingRole, ("SecurityConfiguration" .=) <$> _rjfSecurityConfiguration,@@ -278,6 +309,7 @@ ("JobFlowRole" .=) <$> _rjfJobFlowRole, ("BootstrapActions" .=) <$> _rjfBootstrapActions, ("ReleaseLabel" .=) <$> _rjfReleaseLabel,+ ("RepoUpgradeOnBoot" .=) <$> _rjfRepoUpgradeOnBoot, ("LogUri" .=) <$> _rjfLogURI, ("NewSupportedProducts" .=) <$> _rjfNewSupportedProducts,@@ -301,10 +333,11 @@ -- -- /See:/ 'runJobFlowResponse' smart constructor. data RunJobFlowResponse = RunJobFlowResponse'- { _rjfrsJobFlowId :: !(Maybe Text)- , _rjfrsResponseStatus :: !Int- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _rjfrsJobFlowId :: !(Maybe Text)+ , _rjfrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'RunJobFlowResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -316,11 +349,10 @@ :: Int -- ^ 'rjfrsResponseStatus' -> RunJobFlowResponse runJobFlowResponse pResponseStatus_ =- RunJobFlowResponse'- { _rjfrsJobFlowId = Nothing- , _rjfrsResponseStatus = pResponseStatus_- }+ RunJobFlowResponse'+ {_rjfrsJobFlowId = Nothing, _rjfrsResponseStatus = pResponseStatus_} + -- | An unique identifier for the job flow. rjfrsJobFlowId :: Lens' RunJobFlowResponse (Maybe Text) rjfrsJobFlowId = lens _rjfrsJobFlowId (\ s a -> s{_rjfrsJobFlowId = a});@@ -329,4 +361,4 @@ rjfrsResponseStatus :: Lens' RunJobFlowResponse Int rjfrsResponseStatus = lens _rjfrsResponseStatus (\ s a -> s{_rjfrsResponseStatus = a}); -instance NFData RunJobFlowResponse+instance NFData RunJobFlowResponse where
gen/Network/AWS/EMR/SetTerminationProtection.hs view
@@ -12,20 +12,20 @@ -- | -- Module : Network.AWS.EMR.SetTerminationProtection--- Copyright : (c) 2013-2016 Brendan Hay+-- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) ----- SetTerminationProtection locks a job flow so the EC2 instances in the cluster cannot be terminated by user intervention, an API call, or in the event of a job-flow error. The cluster still terminates upon successful completion of the job flow. Calling SetTerminationProtection on a job flow is analogous to calling the Amazon EC2 DisableAPITermination API on all of the EC2 instances in a cluster.+-- SetTerminationProtection locks a cluster (job flow) so the EC2 instances in the cluster cannot be terminated by user intervention, an API call, or in the event of a job-flow error. The cluster still terminates upon successful completion of the job flow. Calling @SetTerminationProtection@ on a cluster is similar to calling the Amazon EC2 @DisableAPITermination@ API on all EC2 instances in a cluster. -- ----- SetTerminationProtection is used to prevent accidental termination of a job flow and to ensure that in the event of an error, the instances will persist so you can recover any data stored in their ephemeral instance storage.+-- @SetTerminationProtection@ is used to prevent accidental termination of a cluster and to ensure that in the event of an error, the instances persist so that you can recover any data stored in their ephemeral instance storage. ----- To terminate a job flow that has been locked by setting SetTerminationProtection to @true@ , you must first unlock the job flow by a subsequent call to SetTerminationProtection in which you set the value to @false@ .+-- To terminate a cluster that has been locked by setting @SetTerminationProtection@ to @true@ , you must first unlock the job flow by a subsequent call to @SetTerminationProtection@ in which you set the value to @false@ . ----- For more information, see<http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/UsingEMR_TerminationProtection.html Protecting a Job Flow from Termination> in the /Amazon EMR Guide./+-- For more information, see<http://docs.aws.amazon.com/emr/latest/ManagementGuide/UsingEMR_TerminationProtection.html Managing Cluster Termination> in the /Amazon EMR Management Guide/ . -- module Network.AWS.EMR.SetTerminationProtection (@@ -41,12 +41,12 @@ , SetTerminationProtectionResponse ) where -import Network.AWS.EMR.Types-import Network.AWS.EMR.Types.Product-import Network.AWS.Lens-import Network.AWS.Prelude-import Network.AWS.Request-import Network.AWS.Response+import Network.AWS.EMR.Types+import Network.AWS.EMR.Types.Product+import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response -- | The input argument to the 'TerminationProtection' operation. --@@ -54,31 +54,31 @@ -- -- /See:/ 'setTerminationProtection' smart constructor. data SetTerminationProtection = SetTerminationProtection'- { _stpJobFlowIds :: ![Text]- , _stpTerminationProtected :: !Bool- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _stpJobFlowIds :: ![Text]+ , _stpTerminationProtected :: !Bool+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'SetTerminationProtection' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: ----- * 'stpJobFlowIds' - A list of strings that uniquely identify the job flows to protect. This identifier is returned by 'RunJobFlow' and can also be obtained from 'DescribeJobFlows' .+-- * 'stpJobFlowIds' - A list of strings that uniquely identify the clusters to protect. This identifier is returned by 'RunJobFlow' and can also be obtained from 'DescribeJobFlows' . ----- * 'stpTerminationProtected' - A Boolean that indicates whether to protect the job flow and prevent the Amazon EC2 instances in the cluster from shutting down due to API calls, user intervention, or job-flow error.+-- * 'stpTerminationProtected' - A Boolean that indicates whether to protect the cluster and prevent the Amazon EC2 instances in the cluster from shutting down due to API calls, user intervention, or job-flow error. setTerminationProtection :: Bool -- ^ 'stpTerminationProtected' -> SetTerminationProtection setTerminationProtection pTerminationProtected_ =- SetTerminationProtection'- { _stpJobFlowIds = mempty- , _stpTerminationProtected = pTerminationProtected_- }+ SetTerminationProtection'+ {_stpJobFlowIds = mempty, _stpTerminationProtected = pTerminationProtected_} --- | A list of strings that uniquely identify the job flows to protect. This identifier is returned by 'RunJobFlow' and can also be obtained from 'DescribeJobFlows' .++-- | A list of strings that uniquely identify the clusters to protect. This identifier is returned by 'RunJobFlow' and can also be obtained from 'DescribeJobFlows' . stpJobFlowIds :: Lens' SetTerminationProtection [Text] stpJobFlowIds = lens _stpJobFlowIds (\ s a -> s{_stpJobFlowIds = a}) . _Coerce; --- | A Boolean that indicates whether to protect the job flow and prevent the Amazon EC2 instances in the cluster from shutting down due to API calls, user intervention, or job-flow error.+-- | A Boolean that indicates whether to protect the cluster and prevent the Amazon EC2 instances in the cluster from shutting down due to API calls, user intervention, or job-flow error. stpTerminationProtected :: Lens' SetTerminationProtection Bool stpTerminationProtected = lens _stpTerminationProtected (\ s a -> s{_stpTerminationProtected = a}); @@ -89,9 +89,9 @@ response = receiveNull SetTerminationProtectionResponse' -instance Hashable SetTerminationProtection+instance Hashable SetTerminationProtection where -instance NFData SetTerminationProtection+instance NFData SetTerminationProtection where instance ToHeaders SetTerminationProtection where toHeaders@@ -120,13 +120,16 @@ -- | /See:/ 'setTerminationProtectionResponse' smart constructor. data SetTerminationProtectionResponse =- SetTerminationProtectionResponse'- deriving (Eq,Read,Show,Data,Typeable,Generic)+ SetTerminationProtectionResponse'+ deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'SetTerminationProtectionResponse' with the minimum fields required to make a request. -- setTerminationProtectionResponse :: SetTerminationProtectionResponse setTerminationProtectionResponse = SetTerminationProtectionResponse' + instance NFData SetTerminationProtectionResponse+ where
gen/Network/AWS/EMR/SetVisibleToAllUsers.hs view
@@ -12,13 +12,13 @@ -- | -- Module : Network.AWS.EMR.SetVisibleToAllUsers--- Copyright : (c) 2013-2016 Brendan Hay+-- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) ----- Sets whether all AWS Identity and Access Management (IAM) users under your account can access the specified job flows. This action works on running job flows. You can also set the visibility of a job flow when you launch it using the @VisibleToAllUsers@ parameter of 'RunJobFlow' . The SetVisibleToAllUsers action can be called only by an IAM user who created the job flow or the AWS account that owns the job flow.+-- Sets whether all AWS Identity and Access Management (IAM) users under your account can access the specified clusters (job flows). This action works on running clusters. You can also set the visibility of a cluster when you launch it using the @VisibleToAllUsers@ parameter of 'RunJobFlow' . The SetVisibleToAllUsers action can be called only by an IAM user who created the cluster or the AWS account that owns the cluster. -- -- module Network.AWS.EMR.SetVisibleToAllUsers@@ -35,12 +35,12 @@ , SetVisibleToAllUsersResponse ) where -import Network.AWS.EMR.Types-import Network.AWS.EMR.Types.Product-import Network.AWS.Lens-import Network.AWS.Prelude-import Network.AWS.Request-import Network.AWS.Response+import Network.AWS.EMR.Types+import Network.AWS.EMR.Types.Product+import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response -- | The input to the SetVisibleToAllUsers action. --@@ -48,31 +48,31 @@ -- -- /See:/ 'setVisibleToAllUsers' smart constructor. data SetVisibleToAllUsers = SetVisibleToAllUsers'- { _svtauJobFlowIds :: ![Text]- , _svtauVisibleToAllUsers :: !Bool- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _svtauJobFlowIds :: ![Text]+ , _svtauVisibleToAllUsers :: !Bool+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'SetVisibleToAllUsers' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'svtauJobFlowIds' - Identifiers of the job flows to receive the new visibility setting. ----- * 'svtauVisibleToAllUsers' - Whether the specified job flows are visible to all IAM users of the AWS account associated with the job flow. If this value is set to True, all IAM users of that AWS account can view and, if they have the proper IAM policy permissions set, manage the job flows. If it is set to False, only the IAM user that created a job flow can view and manage it.+-- * 'svtauVisibleToAllUsers' - Whether the specified clusters are visible to all IAM users of the AWS account associated with the cluster. If this value is set to True, all IAM users of that AWS account can view and, if they have the proper IAM policy permissions set, manage the clusters. If it is set to False, only the IAM user that created a cluster can view and manage it. setVisibleToAllUsers :: Bool -- ^ 'svtauVisibleToAllUsers' -> SetVisibleToAllUsers setVisibleToAllUsers pVisibleToAllUsers_ =- SetVisibleToAllUsers'- { _svtauJobFlowIds = mempty- , _svtauVisibleToAllUsers = pVisibleToAllUsers_- }+ SetVisibleToAllUsers'+ {_svtauJobFlowIds = mempty, _svtauVisibleToAllUsers = pVisibleToAllUsers_} + -- | Identifiers of the job flows to receive the new visibility setting. svtauJobFlowIds :: Lens' SetVisibleToAllUsers [Text] svtauJobFlowIds = lens _svtauJobFlowIds (\ s a -> s{_svtauJobFlowIds = a}) . _Coerce; --- | Whether the specified job flows are visible to all IAM users of the AWS account associated with the job flow. If this value is set to True, all IAM users of that AWS account can view and, if they have the proper IAM policy permissions set, manage the job flows. If it is set to False, only the IAM user that created a job flow can view and manage it.+-- | Whether the specified clusters are visible to all IAM users of the AWS account associated with the cluster. If this value is set to True, all IAM users of that AWS account can view and, if they have the proper IAM policy permissions set, manage the clusters. If it is set to False, only the IAM user that created a cluster can view and manage it. svtauVisibleToAllUsers :: Lens' SetVisibleToAllUsers Bool svtauVisibleToAllUsers = lens _svtauVisibleToAllUsers (\ s a -> s{_svtauVisibleToAllUsers = a}); @@ -82,9 +82,9 @@ request = postJSON emr response = receiveNull SetVisibleToAllUsersResponse' -instance Hashable SetVisibleToAllUsers+instance Hashable SetVisibleToAllUsers where -instance NFData SetVisibleToAllUsers+instance NFData SetVisibleToAllUsers where instance ToHeaders SetVisibleToAllUsers where toHeaders@@ -112,13 +112,15 @@ -- | /See:/ 'setVisibleToAllUsersResponse' smart constructor. data SetVisibleToAllUsersResponse =- SetVisibleToAllUsersResponse'- deriving (Eq,Read,Show,Data,Typeable,Generic)+ SetVisibleToAllUsersResponse'+ deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'SetVisibleToAllUsersResponse' with the minimum fields required to make a request. -- setVisibleToAllUsersResponse :: SetVisibleToAllUsersResponse setVisibleToAllUsersResponse = SetVisibleToAllUsersResponse' -instance NFData SetVisibleToAllUsersResponse++instance NFData SetVisibleToAllUsersResponse where
gen/Network/AWS/EMR/TerminateJobFlows.hs view
@@ -12,16 +12,16 @@ -- | -- Module : Network.AWS.EMR.TerminateJobFlows--- Copyright : (c) 2013-2016 Brendan Hay+-- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) ----- TerminateJobFlows shuts a list of job flows down. When a job flow is shut down, any step not yet completed is canceled and the EC2 instances on which the job flow is running are stopped. Any log files not already saved are uploaded to Amazon S3 if a LogUri was specified when the job flow was created.+-- TerminateJobFlows shuts a list of clusters (job flows) down. When a job flow is shut down, any step not yet completed is canceled and the EC2 instances on which the cluster is running are stopped. Any log files not already saved are uploaded to Amazon S3 if a LogUri was specified when the cluster was created. -- ----- The maximum number of JobFlows allowed is 10. The call to TerminateJobFlows is asynchronous. Depending on the configuration of the job flow, it may take up to 1-5 minutes for the job flow to completely terminate and release allocated resources, such as Amazon EC2 instances.+-- The maximum number of clusters allowed is 10. The call to @TerminateJobFlows@ is asynchronous. Depending on the configuration of the cluster, it may take up to 1-5 minutes for the cluster to completely terminate and release allocated resources, such as Amazon EC2 instances. -- module Network.AWS.EMR.TerminateJobFlows (@@ -36,12 +36,12 @@ , TerminateJobFlowsResponse ) where -import Network.AWS.EMR.Types-import Network.AWS.EMR.Types.Product-import Network.AWS.Lens-import Network.AWS.Prelude-import Network.AWS.Request-import Network.AWS.Response+import Network.AWS.EMR.Types+import Network.AWS.EMR.Types.Product+import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response -- | Input to the 'TerminateJobFlows' operation. --@@ -49,9 +49,10 @@ -- -- /See:/ 'terminateJobFlows' smart constructor. newtype TerminateJobFlows = TerminateJobFlows'- { _tjfJobFlowIds :: [Text]- } deriving (Eq,Read,Show,Data,Typeable,Generic)+ { _tjfJobFlowIds :: [Text]+ } deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'TerminateJobFlows' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -59,11 +60,9 @@ -- * 'tjfJobFlowIds' - A list of job flows to be shutdown. terminateJobFlows :: TerminateJobFlows-terminateJobFlows =- TerminateJobFlows'- { _tjfJobFlowIds = mempty- }+terminateJobFlows = TerminateJobFlows' {_tjfJobFlowIds = mempty} + -- | A list of job flows to be shutdown. tjfJobFlowIds :: Lens' TerminateJobFlows [Text] tjfJobFlowIds = lens _tjfJobFlowIds (\ s a -> s{_tjfJobFlowIds = a}) . _Coerce;@@ -73,9 +72,9 @@ request = postJSON emr response = receiveNull TerminateJobFlowsResponse' -instance Hashable TerminateJobFlows+instance Hashable TerminateJobFlows where -instance NFData TerminateJobFlows+instance NFData TerminateJobFlows where instance ToHeaders TerminateJobFlows where toHeaders@@ -99,13 +98,15 @@ -- | /See:/ 'terminateJobFlowsResponse' smart constructor. data TerminateJobFlowsResponse =- TerminateJobFlowsResponse'- deriving (Eq,Read,Show,Data,Typeable,Generic)+ TerminateJobFlowsResponse'+ deriving (Eq, Read, Show, Data, Typeable, Generic) + -- | Creates a value of 'TerminateJobFlowsResponse' with the minimum fields required to make a request. -- terminateJobFlowsResponse :: TerminateJobFlowsResponse terminateJobFlowsResponse = TerminateJobFlowsResponse' -instance NFData TerminateJobFlowsResponse++instance NFData TerminateJobFlowsResponse where
gen/Network/AWS/EMR/Types.hs view
@@ -4,9 +4,9 @@ -- | -- Module : Network.AWS.EMR.Types--- Copyright : (c) 2013-2016 Brendan Hay+-- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) --@@ -44,6 +44,18 @@ -- * ComparisonOperator , ComparisonOperator (..) + -- * InstanceCollectionType+ , InstanceCollectionType (..)++ -- * InstanceFleetState+ , InstanceFleetState (..)++ -- * InstanceFleetStateChangeReasonCode+ , InstanceFleetStateChangeReasonCode (..)++ -- * InstanceFleetType+ , InstanceFleetType (..)+ -- * InstanceGroupState , InstanceGroupState (..) @@ -65,9 +77,15 @@ -- * MarketType , MarketType (..) + -- * RepoUpgradeOnBoot+ , RepoUpgradeOnBoot (..)+ -- * ScaleDownBehavior , ScaleDownBehavior (..) + -- * SpotProvisioningTimeoutAction+ , SpotProvisioningTimeoutAction (..)+ -- * Statistic , Statistic (..) @@ -143,13 +161,17 @@ , Cluster , cluster , cluRequestedAMIVersion+ , cluEBSRootVolumeSize , cluEC2InstanceAttributes , cluNormalizedInstanceHours , cluConfigurations+ , cluCustomAMIId , cluAutoScalingRole , cluSecurityConfiguration , cluScaleDownBehavior+ , cluInstanceCollectionType , cluReleaseLabel+ , cluRepoUpgradeOnBoot , cluLogURI , cluRunningAMIVersion , cluMasterPublicDNSName@@ -235,10 +257,12 @@ , eiaEC2KeyName , eiaEmrManagedSlaveSecurityGroup , eiaAdditionalSlaveSecurityGroups+ , eiaRequestedEC2SubnetIds , eiaAdditionalMasterSecurityGroups , eiaIAMInstanceProfile , eiaEmrManagedMasterSecurityGroup , eiaEC2SubnetId+ , eiaRequestedEC2AvailabilityZones , eiaServiceAccessSecurityGroup , eiaEC2AvailabilityZone @@ -272,12 +296,71 @@ , iPublicDNSName , iEBSVolumes , iEC2InstanceId+ , iInstanceType+ , iMarket , iPrivateIPAddress+ , iInstanceFleetId , iId , iInstanceGroupId , iPrivateDNSName , iPublicIPAddress + -- * InstanceFleet+ , InstanceFleet+ , instanceFleet+ , ifProvisionedSpotCapacity+ , ifStatus+ , ifTargetOnDemandCapacity+ , ifInstanceFleetType+ , ifInstanceTypeSpecifications+ , ifName+ , ifProvisionedOnDemandCapacity+ , ifTargetSpotCapacity+ , ifId+ , ifLaunchSpecifications++ -- * InstanceFleetConfig+ , InstanceFleetConfig+ , instanceFleetConfig+ , ifcInstanceTypeConfigs+ , ifcTargetOnDemandCapacity+ , ifcName+ , ifcTargetSpotCapacity+ , ifcLaunchSpecifications+ , ifcInstanceFleetType++ -- * InstanceFleetModifyConfig+ , InstanceFleetModifyConfig+ , instanceFleetModifyConfig+ , ifmcTargetOnDemandCapacity+ , ifmcTargetSpotCapacity+ , ifmcInstanceFleetId++ -- * InstanceFleetProvisioningSpecifications+ , InstanceFleetProvisioningSpecifications+ , instanceFleetProvisioningSpecifications+ , ifpsSpotSpecification++ -- * InstanceFleetStateChangeReason+ , InstanceFleetStateChangeReason+ , instanceFleetStateChangeReason+ , ifscrCode+ , ifscrMessage++ -- * InstanceFleetStatus+ , InstanceFleetStatus+ , instanceFleetStatus+ , ifsState+ , ifsStateChangeReason+ , ifsTimeline++ -- * InstanceFleetTimeline+ , InstanceFleetTimeline+ , instanceFleetTimeline+ , iftReadyDateTime+ , iftCreationDateTime+ , iftEndDateTime+ -- * InstanceGroup , InstanceGroup , instanceGroup@@ -364,14 +447,37 @@ , itCreationDateTime , itEndDateTime + -- * InstanceTypeConfig+ , InstanceTypeConfig+ , instanceTypeConfig+ , itcEBSConfiguration+ , itcBidPrice+ , itcWeightedCapacity+ , itcConfigurations+ , itcBidPriceAsPercentageOfOnDemandPrice+ , itcInstanceType++ -- * InstanceTypeSpecification+ , InstanceTypeSpecification+ , instanceTypeSpecification+ , itsBidPrice+ , itsWeightedCapacity+ , itsConfigurations+ , itsEBSBlockDevices+ , itsInstanceType+ , itsEBSOptimized+ , itsBidPriceAsPercentageOfOnDemandPrice+ -- * JobFlowInstancesConfig , JobFlowInstancesConfig , jobFlowInstancesConfig+ , jficInstanceFleets , jficEC2KeyName , jficSlaveInstanceType , jficInstanceCount , jficEmrManagedSlaveSecurityGroup , jficAdditionalSlaveSecurityGroups+ , jficEC2SubnetIds , jficHadoopVersion , jficAdditionalMasterSecurityGroups , jficEmrManagedMasterSecurityGroup@@ -398,6 +504,7 @@ -- * PlacementType , PlacementType , placementType+ , ptAvailabilityZones , ptAvailabilityZone -- * ScalingAction@@ -450,6 +557,13 @@ , sspcCoolDown , sspcScalingAdjustment + -- * SpotProvisioningSpecification+ , SpotProvisioningSpecification+ , spotProvisioningSpecification+ , spsBlockDurationMinutes+ , spsTimeoutDurationMinutes+ , spsTimeoutAction+ -- * Step , Step , step@@ -516,38 +630,40 @@ , vsSizeInGB ) where -import Network.AWS.EMR.Types.Product-import Network.AWS.EMR.Types.Sum-import Network.AWS.Lens-import Network.AWS.Prelude-import Network.AWS.Sign.V4+import Network.AWS.EMR.Types.Product+import Network.AWS.EMR.Types.Sum+import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Sign.V4 -- | API version @2009-03-31@ of the Amazon Elastic MapReduce SDK configuration. emr :: Service emr =- Service- { _svcAbbrev = "EMR"- , _svcSigner = v4- , _svcPrefix = "elasticmapreduce"- , _svcVersion = "2009-03-31"- , _svcEndpoint = defaultEndpoint emr- , _svcTimeout = Just 70- , _svcCheck = statusSuccess- , _svcError = parseJSONError "EMR"- , _svcRetry = retry- }+ Service+ { _svcAbbrev = "EMR"+ , _svcSigner = v4+ , _svcPrefix = "elasticmapreduce"+ , _svcVersion = "2009-03-31"+ , _svcEndpoint = defaultEndpoint emr+ , _svcTimeout = Just 70+ , _svcCheck = statusSuccess+ , _svcError = parseJSONError "EMR"+ , _svcRetry = retry+ } where retry =- Exponential- { _retryBase = 5.0e-2- , _retryGrowth = 2- , _retryAttempts = 5- , _retryCheck = check- }+ Exponential+ { _retryBase = 5.0e-2+ , _retryGrowth = 2+ , _retryAttempts = 5+ , _retryCheck = check+ } check e+ | has (hasCode "ThrottledException" . hasStatus 400) e =+ Just "throttled_exception" | has (hasStatus 429) e = Just "too_many_requests" | has (hasCode "ThrottlingException" . hasStatus 400) e =- Just "throttling_exception"+ Just "throttling_exception" | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling" | has (hasStatus 504) e = Just "gateway_timeout" | has (hasStatus 502) e = Just "bad_gateway"@@ -556,20 +672,24 @@ | has (hasStatus 509) e = Just "limit_exceeded" | otherwise = Nothing + -- | This exception occurs when there is something wrong with user input. -- -- _InvalidRequestException :: AsError a => Getting (First ServiceError) a ServiceError-_InvalidRequestException = _ServiceError . hasCode "InvalidRequestException"+_InvalidRequestException = _MatchServiceError emr "InvalidRequestException" + -- | Indicates that an error occurred while processing the request and that the request was not completed. -- -- _InternalServerError :: AsError a => Getting (First ServiceError) a ServiceError-_InternalServerError = _ServiceError . hasCode "InternalServerError"+_InternalServerError = _MatchServiceError emr "InternalServerError" + -- | This exception occurs when there is an internal failure in the EMR service. -- -- _InternalServerException :: AsError a => Getting (First ServiceError) a ServiceError-_InternalServerException = _ServiceError . hasCode "InternalServerException"+_InternalServerException = _MatchServiceError emr "InternalServerException"+
gen/Network/AWS/EMR/Types/Product.hs view
@@ -9,3550 +9,4408 @@ -- | -- Module : Network.AWS.EMR.Types.Product--- Copyright : (c) 2013-2016 Brendan Hay--- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>--- Stability : auto-generated--- Portability : non-portable (GHC extensions)----module Network.AWS.EMR.Types.Product where--import Network.AWS.EMR.Types.Sum-import Network.AWS.Lens-import Network.AWS.Prelude---- | An application is any Amazon or third-party software that you can add to the cluster. This structure contains a list of strings that indicates the software to use with the cluster and accepts a user argument list. Amazon EMR accepts and forwards the argument list to the corresponding installation script as bootstrap action argument. For more information, see <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-mapr.html Launch a Job Flow on the MapR Distribution for Hadoop> . Currently supported values are:--------- * "mapr-m3" - launch the job flow using MapR M3 Edition.------ * "mapr-m5" - launch the job flow using MapR M5 Edition.------ * "mapr" with the user arguments specifying "--edition,m3" or "--edition,m5" - launch the job flow using MapR M3 or M5 Edition, respectively.--------------- /See:/ 'application' smart constructor.-data Application = Application'- { _aArgs :: !(Maybe [Text])- , _aAdditionalInfo :: !(Maybe (Map Text Text))- , _aName :: !(Maybe Text)- , _aVersion :: !(Maybe Text)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'Application' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'aArgs' - Arguments for Amazon EMR to pass to the application.------ * 'aAdditionalInfo' - This option is for advanced users only. This is meta information about third-party applications that third-party vendors use for testing purposes.------ * 'aName' - The name of the application.------ * 'aVersion' - The version of the application.-application- :: Application-application =- Application'- { _aArgs = Nothing- , _aAdditionalInfo = Nothing- , _aName = Nothing- , _aVersion = Nothing- }---- | Arguments for Amazon EMR to pass to the application.-aArgs :: Lens' Application [Text]-aArgs = lens _aArgs (\ s a -> s{_aArgs = a}) . _Default . _Coerce;---- | This option is for advanced users only. This is meta information about third-party applications that third-party vendors use for testing purposes.-aAdditionalInfo :: Lens' Application (HashMap Text Text)-aAdditionalInfo = lens _aAdditionalInfo (\ s a -> s{_aAdditionalInfo = a}) . _Default . _Map;---- | The name of the application.-aName :: Lens' Application (Maybe Text)-aName = lens _aName (\ s a -> s{_aName = a});---- | The version of the application.-aVersion :: Lens' Application (Maybe Text)-aVersion = lens _aVersion (\ s a -> s{_aVersion = a});--instance FromJSON Application where- parseJSON- = withObject "Application"- (\ x ->- Application' <$>- (x .:? "Args" .!= mempty) <*>- (x .:? "AdditionalInfo" .!= mempty)- <*> (x .:? "Name")- <*> (x .:? "Version"))--instance Hashable Application--instance NFData Application--instance ToJSON Application where- toJSON Application'{..}- = object- (catMaybes- [("Args" .=) <$> _aArgs,- ("AdditionalInfo" .=) <$> _aAdditionalInfo,- ("Name" .=) <$> _aName,- ("Version" .=) <$> _aVersion])---- | An automatic scaling policy for a core instance group or task instance group in an Amazon EMR cluster. An automatic scaling policy defines how an instance group dynamically adds and terminates EC2 instances in response to the value of a CloudWatch metric. See 'PutAutoScalingPolicy' .------------ /See:/ 'autoScalingPolicy' smart constructor.-data AutoScalingPolicy = AutoScalingPolicy'- { _aspConstraints :: !ScalingConstraints- , _aspRules :: ![ScalingRule]- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'AutoScalingPolicy' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'aspConstraints' - The upper and lower EC2 instance limits for an automatic scaling policy. Automatic scaling activity will not cause an instance group to grow above or below these limits.------ * 'aspRules' - The scale-in and scale-out rules that comprise the automatic scaling policy.-autoScalingPolicy- :: ScalingConstraints -- ^ 'aspConstraints'- -> AutoScalingPolicy-autoScalingPolicy pConstraints_ =- AutoScalingPolicy'- { _aspConstraints = pConstraints_- , _aspRules = mempty- }---- | The upper and lower EC2 instance limits for an automatic scaling policy. Automatic scaling activity will not cause an instance group to grow above or below these limits.-aspConstraints :: Lens' AutoScalingPolicy ScalingConstraints-aspConstraints = lens _aspConstraints (\ s a -> s{_aspConstraints = a});---- | The scale-in and scale-out rules that comprise the automatic scaling policy.-aspRules :: Lens' AutoScalingPolicy [ScalingRule]-aspRules = lens _aspRules (\ s a -> s{_aspRules = a}) . _Coerce;--instance Hashable AutoScalingPolicy--instance NFData AutoScalingPolicy--instance ToJSON AutoScalingPolicy where- toJSON AutoScalingPolicy'{..}- = object- (catMaybes- [Just ("Constraints" .= _aspConstraints),- Just ("Rules" .= _aspRules)])---- | An automatic scaling policy for a core instance group or task instance group in an Amazon EMR cluster. The automatic scaling policy defines how an instance group dynamically adds and terminates EC2 instances in response to the value of a CloudWatch metric. See 'PutAutoScalingPolicy' .------------ /See:/ 'autoScalingPolicyDescription' smart constructor.-data AutoScalingPolicyDescription = AutoScalingPolicyDescription'- { _aspdStatus :: !(Maybe AutoScalingPolicyStatus)- , _aspdRules :: !(Maybe [ScalingRule])- , _aspdConstraints :: !(Maybe ScalingConstraints)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'AutoScalingPolicyDescription' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'aspdStatus' - The status of an automatic scaling policy.------ * 'aspdRules' - The scale-in and scale-out rules that comprise the automatic scaling policy.------ * 'aspdConstraints' - The upper and lower EC2 instance limits for an automatic scaling policy. Automatic scaling activity will not cause an instance group to grow above or below these limits.-autoScalingPolicyDescription- :: AutoScalingPolicyDescription-autoScalingPolicyDescription =- AutoScalingPolicyDescription'- { _aspdStatus = Nothing- , _aspdRules = Nothing- , _aspdConstraints = Nothing- }---- | The status of an automatic scaling policy.-aspdStatus :: Lens' AutoScalingPolicyDescription (Maybe AutoScalingPolicyStatus)-aspdStatus = lens _aspdStatus (\ s a -> s{_aspdStatus = a});---- | The scale-in and scale-out rules that comprise the automatic scaling policy.-aspdRules :: Lens' AutoScalingPolicyDescription [ScalingRule]-aspdRules = lens _aspdRules (\ s a -> s{_aspdRules = a}) . _Default . _Coerce;---- | The upper and lower EC2 instance limits for an automatic scaling policy. Automatic scaling activity will not cause an instance group to grow above or below these limits.-aspdConstraints :: Lens' AutoScalingPolicyDescription (Maybe ScalingConstraints)-aspdConstraints = lens _aspdConstraints (\ s a -> s{_aspdConstraints = a});--instance FromJSON AutoScalingPolicyDescription where- parseJSON- = withObject "AutoScalingPolicyDescription"- (\ x ->- AutoScalingPolicyDescription' <$>- (x .:? "Status") <*> (x .:? "Rules" .!= mempty) <*>- (x .:? "Constraints"))--instance Hashable AutoScalingPolicyDescription--instance NFData AutoScalingPolicyDescription---- | The reason for an 'AutoScalingPolicyStatus' change.------------ /See:/ 'autoScalingPolicyStateChangeReason' smart constructor.-data AutoScalingPolicyStateChangeReason = AutoScalingPolicyStateChangeReason'- { _aspscrCode :: !(Maybe AutoScalingPolicyStateChangeReasonCode)- , _aspscrMessage :: !(Maybe Text)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'AutoScalingPolicyStateChangeReason' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'aspscrCode' - The code indicating the reason for the change in status.@USER_REQUEST@ indicates that the scaling policy status was changed by a user. @PROVISION_FAILURE@ indicates that the status change was because the policy failed to provision. @CLEANUP_FAILURE@ indicates something unclean happened.-->------ * 'aspscrMessage' - A friendly, more verbose message that accompanies an automatic scaling policy state change.-autoScalingPolicyStateChangeReason- :: AutoScalingPolicyStateChangeReason-autoScalingPolicyStateChangeReason =- AutoScalingPolicyStateChangeReason'- { _aspscrCode = Nothing- , _aspscrMessage = Nothing- }---- | The code indicating the reason for the change in status.@USER_REQUEST@ indicates that the scaling policy status was changed by a user. @PROVISION_FAILURE@ indicates that the status change was because the policy failed to provision. @CLEANUP_FAILURE@ indicates something unclean happened.-->-aspscrCode :: Lens' AutoScalingPolicyStateChangeReason (Maybe AutoScalingPolicyStateChangeReasonCode)-aspscrCode = lens _aspscrCode (\ s a -> s{_aspscrCode = a});---- | A friendly, more verbose message that accompanies an automatic scaling policy state change.-aspscrMessage :: Lens' AutoScalingPolicyStateChangeReason (Maybe Text)-aspscrMessage = lens _aspscrMessage (\ s a -> s{_aspscrMessage = a});--instance FromJSON AutoScalingPolicyStateChangeReason- where- parseJSON- = withObject "AutoScalingPolicyStateChangeReason"- (\ x ->- AutoScalingPolicyStateChangeReason' <$>- (x .:? "Code") <*> (x .:? "Message"))--instance Hashable AutoScalingPolicyStateChangeReason--instance NFData AutoScalingPolicyStateChangeReason---- | The status of an automatic scaling policy.------------ /See:/ 'autoScalingPolicyStatus' smart constructor.-data AutoScalingPolicyStatus = AutoScalingPolicyStatus'- { _aspsState :: !(Maybe AutoScalingPolicyState)- , _aspsStateChangeReason :: !(Maybe AutoScalingPolicyStateChangeReason)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'AutoScalingPolicyStatus' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'aspsState' ------- * 'aspsStateChangeReason' - The reason for a change in status.-autoScalingPolicyStatus- :: AutoScalingPolicyStatus-autoScalingPolicyStatus =- AutoScalingPolicyStatus'- { _aspsState = Nothing- , _aspsStateChangeReason = Nothing- }---- |-aspsState :: Lens' AutoScalingPolicyStatus (Maybe AutoScalingPolicyState)-aspsState = lens _aspsState (\ s a -> s{_aspsState = a});---- | The reason for a change in status.-aspsStateChangeReason :: Lens' AutoScalingPolicyStatus (Maybe AutoScalingPolicyStateChangeReason)-aspsStateChangeReason = lens _aspsStateChangeReason (\ s a -> s{_aspsStateChangeReason = a});--instance FromJSON AutoScalingPolicyStatus where- parseJSON- = withObject "AutoScalingPolicyStatus"- (\ x ->- AutoScalingPolicyStatus' <$>- (x .:? "State") <*> (x .:? "StateChangeReason"))--instance Hashable AutoScalingPolicyStatus--instance NFData AutoScalingPolicyStatus---- | Configuration of a bootstrap action.------------ /See:/ 'bootstrapActionConfig' smart constructor.-data BootstrapActionConfig = BootstrapActionConfig'- { _bacName :: !Text- , _bacScriptBootstrapAction :: !ScriptBootstrapActionConfig- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'BootstrapActionConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'bacName' - The name of the bootstrap action.------ * 'bacScriptBootstrapAction' - The script run by the bootstrap action.-bootstrapActionConfig- :: Text -- ^ 'bacName'- -> ScriptBootstrapActionConfig -- ^ 'bacScriptBootstrapAction'- -> BootstrapActionConfig-bootstrapActionConfig pName_ pScriptBootstrapAction_ =- BootstrapActionConfig'- { _bacName = pName_- , _bacScriptBootstrapAction = pScriptBootstrapAction_- }---- | The name of the bootstrap action.-bacName :: Lens' BootstrapActionConfig Text-bacName = lens _bacName (\ s a -> s{_bacName = a});---- | The script run by the bootstrap action.-bacScriptBootstrapAction :: Lens' BootstrapActionConfig ScriptBootstrapActionConfig-bacScriptBootstrapAction = lens _bacScriptBootstrapAction (\ s a -> s{_bacScriptBootstrapAction = a});--instance Hashable BootstrapActionConfig--instance NFData BootstrapActionConfig--instance ToJSON BootstrapActionConfig where- toJSON BootstrapActionConfig'{..}- = object- (catMaybes- [Just ("Name" .= _bacName),- Just- ("ScriptBootstrapAction" .=- _bacScriptBootstrapAction)])---- | /See:/ 'cancelStepsInfo' smart constructor.-data CancelStepsInfo = CancelStepsInfo'- { _csiStatus :: !(Maybe CancelStepsRequestStatus)- , _csiStepId :: !(Maybe Text)- , _csiReason :: !(Maybe Text)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'CancelStepsInfo' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'csiStatus' - Undocumented member.------ * 'csiStepId' - Undocumented member.------ * 'csiReason' - Undocumented member.-cancelStepsInfo- :: CancelStepsInfo-cancelStepsInfo =- CancelStepsInfo'- { _csiStatus = Nothing- , _csiStepId = Nothing- , _csiReason = Nothing- }---- | Undocumented member.-csiStatus :: Lens' CancelStepsInfo (Maybe CancelStepsRequestStatus)-csiStatus = lens _csiStatus (\ s a -> s{_csiStatus = a});---- | Undocumented member.-csiStepId :: Lens' CancelStepsInfo (Maybe Text)-csiStepId = lens _csiStepId (\ s a -> s{_csiStepId = a});---- | Undocumented member.-csiReason :: Lens' CancelStepsInfo (Maybe Text)-csiReason = lens _csiReason (\ s a -> s{_csiReason = a});--instance FromJSON CancelStepsInfo where- parseJSON- = withObject "CancelStepsInfo"- (\ x ->- CancelStepsInfo' <$>- (x .:? "Status") <*> (x .:? "StepId") <*>- (x .:? "Reason"))--instance Hashable CancelStepsInfo--instance NFData CancelStepsInfo---- | The definition of a CloudWatch metric alarm, which determines when an automatic scaling activity is triggered. When the defined alarm conditions are satisfied, scaling activity begins.------------ /See:/ 'cloudWatchAlarmDefinition' smart constructor.-data CloudWatchAlarmDefinition = CloudWatchAlarmDefinition'- { _cwadEvaluationPeriods :: !(Maybe Int)- , _cwadNamespace :: !(Maybe Text)- , _cwadDimensions :: !(Maybe [MetricDimension])- , _cwadUnit :: !(Maybe Unit)- , _cwadStatistic :: !(Maybe Statistic)- , _cwadComparisonOperator :: !ComparisonOperator- , _cwadMetricName :: !Text- , _cwadPeriod :: !Int- , _cwadThreshold :: !Double- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'CloudWatchAlarmDefinition' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'cwadEvaluationPeriods' - The number of periods, expressed in seconds using @Period@ , during which the alarm condition must exist before the alarm triggers automatic scaling activity. The default value is @1@ .------ * 'cwadNamespace' - The namespace for the CloudWatch metric. The default is @AWS/ElasticMapReduce@ .------ * 'cwadDimensions' - A CloudWatch metric dimension.------ * 'cwadUnit' - The unit of measure associated with the CloudWatch metric being watched. The value specified for @Unit@ must correspond to the units specified in the CloudWatch metric.------ * 'cwadStatistic' - The statistic to apply to the metric associated with the alarm. The default is @AVERAGE@ .------ * 'cwadComparisonOperator' - Determines how the metric specified by @MetricName@ is compared to the value specified by @Threshold@ .------ * 'cwadMetricName' - The name of the CloudWatch metric that is watched to determine an alarm condition.------ * 'cwadPeriod' - The period, in seconds, over which the statistic is applied. EMR CloudWatch metrics are emitted every five minutes (300 seconds), so if an EMR CloudWatch metric is specified, specify @300@ .------ * 'cwadThreshold' - The value against which the specified statistic is compared.-cloudWatchAlarmDefinition- :: ComparisonOperator -- ^ 'cwadComparisonOperator'- -> Text -- ^ 'cwadMetricName'- -> Int -- ^ 'cwadPeriod'- -> Double -- ^ 'cwadThreshold'- -> CloudWatchAlarmDefinition-cloudWatchAlarmDefinition pComparisonOperator_ pMetricName_ pPeriod_ pThreshold_ =- CloudWatchAlarmDefinition'- { _cwadEvaluationPeriods = Nothing- , _cwadNamespace = Nothing- , _cwadDimensions = Nothing- , _cwadUnit = Nothing- , _cwadStatistic = Nothing- , _cwadComparisonOperator = pComparisonOperator_- , _cwadMetricName = pMetricName_- , _cwadPeriod = pPeriod_- , _cwadThreshold = pThreshold_- }---- | The number of periods, expressed in seconds using @Period@ , during which the alarm condition must exist before the alarm triggers automatic scaling activity. The default value is @1@ .-cwadEvaluationPeriods :: Lens' CloudWatchAlarmDefinition (Maybe Int)-cwadEvaluationPeriods = lens _cwadEvaluationPeriods (\ s a -> s{_cwadEvaluationPeriods = a});---- | The namespace for the CloudWatch metric. The default is @AWS/ElasticMapReduce@ .-cwadNamespace :: Lens' CloudWatchAlarmDefinition (Maybe Text)-cwadNamespace = lens _cwadNamespace (\ s a -> s{_cwadNamespace = a});---- | A CloudWatch metric dimension.-cwadDimensions :: Lens' CloudWatchAlarmDefinition [MetricDimension]-cwadDimensions = lens _cwadDimensions (\ s a -> s{_cwadDimensions = a}) . _Default . _Coerce;---- | The unit of measure associated with the CloudWatch metric being watched. The value specified for @Unit@ must correspond to the units specified in the CloudWatch metric.-cwadUnit :: Lens' CloudWatchAlarmDefinition (Maybe Unit)-cwadUnit = lens _cwadUnit (\ s a -> s{_cwadUnit = a});---- | The statistic to apply to the metric associated with the alarm. The default is @AVERAGE@ .-cwadStatistic :: Lens' CloudWatchAlarmDefinition (Maybe Statistic)-cwadStatistic = lens _cwadStatistic (\ s a -> s{_cwadStatistic = a});---- | Determines how the metric specified by @MetricName@ is compared to the value specified by @Threshold@ .-cwadComparisonOperator :: Lens' CloudWatchAlarmDefinition ComparisonOperator-cwadComparisonOperator = lens _cwadComparisonOperator (\ s a -> s{_cwadComparisonOperator = a});---- | The name of the CloudWatch metric that is watched to determine an alarm condition.-cwadMetricName :: Lens' CloudWatchAlarmDefinition Text-cwadMetricName = lens _cwadMetricName (\ s a -> s{_cwadMetricName = a});---- | The period, in seconds, over which the statistic is applied. EMR CloudWatch metrics are emitted every five minutes (300 seconds), so if an EMR CloudWatch metric is specified, specify @300@ .-cwadPeriod :: Lens' CloudWatchAlarmDefinition Int-cwadPeriod = lens _cwadPeriod (\ s a -> s{_cwadPeriod = a});---- | The value against which the specified statistic is compared.-cwadThreshold :: Lens' CloudWatchAlarmDefinition Double-cwadThreshold = lens _cwadThreshold (\ s a -> s{_cwadThreshold = a});--instance FromJSON CloudWatchAlarmDefinition where- parseJSON- = withObject "CloudWatchAlarmDefinition"- (\ x ->- CloudWatchAlarmDefinition' <$>- (x .:? "EvaluationPeriods") <*> (x .:? "Namespace")- <*> (x .:? "Dimensions" .!= mempty)- <*> (x .:? "Unit")- <*> (x .:? "Statistic")- <*> (x .: "ComparisonOperator")- <*> (x .: "MetricName")- <*> (x .: "Period")- <*> (x .: "Threshold"))--instance Hashable CloudWatchAlarmDefinition--instance NFData CloudWatchAlarmDefinition--instance ToJSON CloudWatchAlarmDefinition where- toJSON CloudWatchAlarmDefinition'{..}- = object- (catMaybes- [("EvaluationPeriods" .=) <$> _cwadEvaluationPeriods,- ("Namespace" .=) <$> _cwadNamespace,- ("Dimensions" .=) <$> _cwadDimensions,- ("Unit" .=) <$> _cwadUnit,- ("Statistic" .=) <$> _cwadStatistic,- Just- ("ComparisonOperator" .= _cwadComparisonOperator),- Just ("MetricName" .= _cwadMetricName),- Just ("Period" .= _cwadPeriod),- Just ("Threshold" .= _cwadThreshold)])---- | The detailed description of the cluster.------------ /See:/ 'cluster' smart constructor.-data Cluster = Cluster'- { _cluRequestedAMIVersion :: !(Maybe Text)- , _cluEC2InstanceAttributes :: !(Maybe EC2InstanceAttributes)- , _cluNormalizedInstanceHours :: !(Maybe Int)- , _cluConfigurations :: !(Maybe [Configuration])- , _cluAutoScalingRole :: !(Maybe Text)- , _cluSecurityConfiguration :: !(Maybe Text)- , _cluScaleDownBehavior :: !(Maybe ScaleDownBehavior)- , _cluReleaseLabel :: !(Maybe Text)- , _cluLogURI :: !(Maybe Text)- , _cluRunningAMIVersion :: !(Maybe Text)- , _cluMasterPublicDNSName :: !(Maybe Text)- , _cluTerminationProtected :: !(Maybe Bool)- , _cluVisibleToAllUsers :: !(Maybe Bool)- , _cluAutoTerminate :: !(Maybe Bool)- , _cluApplications :: !(Maybe [Application])- , _cluTags :: !(Maybe [Tag])- , _cluServiceRole :: !(Maybe Text)- , _cluId :: !Text- , _cluName :: !Text- , _cluStatus :: !ClusterStatus- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'Cluster' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'cluRequestedAMIVersion' - The AMI version requested for this cluster.------ * 'cluEC2InstanceAttributes' - Provides information about the EC2 instances in a cluster grouped by category. For example, key name, subnet ID, IAM instance profile, and so on.------ * 'cluNormalizedInstanceHours' - An approximation of the cost of the job flow, represented in m1.small/hours. This value is incremented one time for every hour an m1.small instance runs. Larger instances are weighted more, so an EC2 instance that is roughly four times more expensive would result in the normalized instance hours being incremented by four. This result is only an approximation and does not reflect the actual billing rate.------ * 'cluConfigurations' - The list of Configurations supplied to the EMR cluster.------ * 'cluAutoScalingRole' - An IAM role for automatic scaling policies. The default role is @EMR_AutoScaling_DefaultRole@ . The IAM role provides permissions that the automatic scaling feature requires to launch and terminate EC2 instances in an instance group.------ * 'cluSecurityConfiguration' - The name of the security configuration applied to the cluster.------ * 'cluScaleDownBehavior' - The way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized. @TERMINATE_AT_INSTANCE_HOUR@ indicates that Amazon EMR terminates nodes at the instance-hour boundary, regardless of when the request to terminate the instance was submitted. This option is only available with Amazon EMR 5.1.0 and later and is the default for clusters created using that version. @TERMINATE_AT_TASK_COMPLETION@ indicates that Amazon EMR blacklists and drains tasks from nodes before terminating the Amazon EC2 instances, regardless of the instance-hour boundary. With either behavior, Amazon EMR removes the least active nodes first and blocks instance termination if it could lead to HDFS corruption. @TERMINATE_AT_TASK_COMPLETION@ is available only in Amazon EMR version 4.1.0 and later, and is the default for versions of Amazon EMR earlier than 5.1.0.------ * 'cluReleaseLabel' - The release label for the Amazon EMR release. For Amazon EMR 3.x and 2.x AMIs, use amiVersion instead instead of ReleaseLabel.------ * 'cluLogURI' - The path to the Amazon S3 location where logs for this cluster are stored.------ * 'cluRunningAMIVersion' - The AMI version running on this cluster.------ * 'cluMasterPublicDNSName' - The public DNS name of the master EC2 instance.------ * 'cluTerminationProtected' - Indicates whether Amazon EMR will lock the cluster to prevent the EC2 instances from being terminated by an API call or user intervention, or in the event of a cluster error.------ * 'cluVisibleToAllUsers' - Indicates whether the job flow is visible to all IAM users of the AWS account associated with the job flow. If this value is set to @true@ , all IAM users of that AWS account can view and manage the job flow if they have the proper policy permissions set. If this value is @false@ , only the IAM user that created the cluster can view and manage it. This value can be changed using the 'SetVisibleToAllUsers' action.------ * 'cluAutoTerminate' - Specifies whether the cluster should terminate after completing all steps.------ * 'cluApplications' - The applications installed on this cluster.------ * 'cluTags' - A list of tags associated with a cluster.------ * 'cluServiceRole' - The IAM role that will be assumed by the Amazon EMR service to access AWS resources on your behalf.------ * 'cluId' - The unique identifier for the cluster.------ * 'cluName' - The name of the cluster.------ * 'cluStatus' - The current status details about the cluster.-cluster- :: Text -- ^ 'cluId'- -> Text -- ^ 'cluName'- -> ClusterStatus -- ^ 'cluStatus'- -> Cluster-cluster pId_ pName_ pStatus_ =- Cluster'- { _cluRequestedAMIVersion = Nothing- , _cluEC2InstanceAttributes = Nothing- , _cluNormalizedInstanceHours = Nothing- , _cluConfigurations = Nothing- , _cluAutoScalingRole = Nothing- , _cluSecurityConfiguration = Nothing- , _cluScaleDownBehavior = Nothing- , _cluReleaseLabel = Nothing- , _cluLogURI = Nothing- , _cluRunningAMIVersion = Nothing- , _cluMasterPublicDNSName = Nothing- , _cluTerminationProtected = Nothing- , _cluVisibleToAllUsers = Nothing- , _cluAutoTerminate = Nothing- , _cluApplications = Nothing- , _cluTags = Nothing- , _cluServiceRole = Nothing- , _cluId = pId_- , _cluName = pName_- , _cluStatus = pStatus_- }---- | The AMI version requested for this cluster.-cluRequestedAMIVersion :: Lens' Cluster (Maybe Text)-cluRequestedAMIVersion = lens _cluRequestedAMIVersion (\ s a -> s{_cluRequestedAMIVersion = a});---- | Provides information about the EC2 instances in a cluster grouped by category. For example, key name, subnet ID, IAM instance profile, and so on.-cluEC2InstanceAttributes :: Lens' Cluster (Maybe EC2InstanceAttributes)-cluEC2InstanceAttributes = lens _cluEC2InstanceAttributes (\ s a -> s{_cluEC2InstanceAttributes = a});---- | An approximation of the cost of the job flow, represented in m1.small/hours. This value is incremented one time for every hour an m1.small instance runs. Larger instances are weighted more, so an EC2 instance that is roughly four times more expensive would result in the normalized instance hours being incremented by four. This result is only an approximation and does not reflect the actual billing rate.-cluNormalizedInstanceHours :: Lens' Cluster (Maybe Int)-cluNormalizedInstanceHours = lens _cluNormalizedInstanceHours (\ s a -> s{_cluNormalizedInstanceHours = a});---- | The list of Configurations supplied to the EMR cluster.-cluConfigurations :: Lens' Cluster [Configuration]-cluConfigurations = lens _cluConfigurations (\ s a -> s{_cluConfigurations = a}) . _Default . _Coerce;---- | An IAM role for automatic scaling policies. The default role is @EMR_AutoScaling_DefaultRole@ . The IAM role provides permissions that the automatic scaling feature requires to launch and terminate EC2 instances in an instance group.-cluAutoScalingRole :: Lens' Cluster (Maybe Text)-cluAutoScalingRole = lens _cluAutoScalingRole (\ s a -> s{_cluAutoScalingRole = a});---- | The name of the security configuration applied to the cluster.-cluSecurityConfiguration :: Lens' Cluster (Maybe Text)-cluSecurityConfiguration = lens _cluSecurityConfiguration (\ s a -> s{_cluSecurityConfiguration = a});---- | The way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized. @TERMINATE_AT_INSTANCE_HOUR@ indicates that Amazon EMR terminates nodes at the instance-hour boundary, regardless of when the request to terminate the instance was submitted. This option is only available with Amazon EMR 5.1.0 and later and is the default for clusters created using that version. @TERMINATE_AT_TASK_COMPLETION@ indicates that Amazon EMR blacklists and drains tasks from nodes before terminating the Amazon EC2 instances, regardless of the instance-hour boundary. With either behavior, Amazon EMR removes the least active nodes first and blocks instance termination if it could lead to HDFS corruption. @TERMINATE_AT_TASK_COMPLETION@ is available only in Amazon EMR version 4.1.0 and later, and is the default for versions of Amazon EMR earlier than 5.1.0.-cluScaleDownBehavior :: Lens' Cluster (Maybe ScaleDownBehavior)-cluScaleDownBehavior = lens _cluScaleDownBehavior (\ s a -> s{_cluScaleDownBehavior = a});---- | The release label for the Amazon EMR release. For Amazon EMR 3.x and 2.x AMIs, use amiVersion instead instead of ReleaseLabel.-cluReleaseLabel :: Lens' Cluster (Maybe Text)-cluReleaseLabel = lens _cluReleaseLabel (\ s a -> s{_cluReleaseLabel = a});---- | The path to the Amazon S3 location where logs for this cluster are stored.-cluLogURI :: Lens' Cluster (Maybe Text)-cluLogURI = lens _cluLogURI (\ s a -> s{_cluLogURI = a});---- | The AMI version running on this cluster.-cluRunningAMIVersion :: Lens' Cluster (Maybe Text)-cluRunningAMIVersion = lens _cluRunningAMIVersion (\ s a -> s{_cluRunningAMIVersion = a});---- | The public DNS name of the master EC2 instance.-cluMasterPublicDNSName :: Lens' Cluster (Maybe Text)-cluMasterPublicDNSName = lens _cluMasterPublicDNSName (\ s a -> s{_cluMasterPublicDNSName = a});---- | Indicates whether Amazon EMR will lock the cluster to prevent the EC2 instances from being terminated by an API call or user intervention, or in the event of a cluster error.-cluTerminationProtected :: Lens' Cluster (Maybe Bool)-cluTerminationProtected = lens _cluTerminationProtected (\ s a -> s{_cluTerminationProtected = a});---- | Indicates whether the job flow is visible to all IAM users of the AWS account associated with the job flow. If this value is set to @true@ , all IAM users of that AWS account can view and manage the job flow if they have the proper policy permissions set. If this value is @false@ , only the IAM user that created the cluster can view and manage it. This value can be changed using the 'SetVisibleToAllUsers' action.-cluVisibleToAllUsers :: Lens' Cluster (Maybe Bool)-cluVisibleToAllUsers = lens _cluVisibleToAllUsers (\ s a -> s{_cluVisibleToAllUsers = a});---- | Specifies whether the cluster should terminate after completing all steps.-cluAutoTerminate :: Lens' Cluster (Maybe Bool)-cluAutoTerminate = lens _cluAutoTerminate (\ s a -> s{_cluAutoTerminate = a});---- | The applications installed on this cluster.-cluApplications :: Lens' Cluster [Application]-cluApplications = lens _cluApplications (\ s a -> s{_cluApplications = a}) . _Default . _Coerce;---- | A list of tags associated with a cluster.-cluTags :: Lens' Cluster [Tag]-cluTags = lens _cluTags (\ s a -> s{_cluTags = a}) . _Default . _Coerce;---- | The IAM role that will be assumed by the Amazon EMR service to access AWS resources on your behalf.-cluServiceRole :: Lens' Cluster (Maybe Text)-cluServiceRole = lens _cluServiceRole (\ s a -> s{_cluServiceRole = a});---- | The unique identifier for the cluster.-cluId :: Lens' Cluster Text-cluId = lens _cluId (\ s a -> s{_cluId = a});---- | The name of the cluster.-cluName :: Lens' Cluster Text-cluName = lens _cluName (\ s a -> s{_cluName = a});---- | The current status details about the cluster.-cluStatus :: Lens' Cluster ClusterStatus-cluStatus = lens _cluStatus (\ s a -> s{_cluStatus = a});--instance FromJSON Cluster where- parseJSON- = withObject "Cluster"- (\ x ->- Cluster' <$>- (x .:? "RequestedAmiVersion") <*>- (x .:? "Ec2InstanceAttributes")- <*> (x .:? "NormalizedInstanceHours")- <*> (x .:? "Configurations" .!= mempty)- <*> (x .:? "AutoScalingRole")- <*> (x .:? "SecurityConfiguration")- <*> (x .:? "ScaleDownBehavior")- <*> (x .:? "ReleaseLabel")- <*> (x .:? "LogUri")- <*> (x .:? "RunningAmiVersion")- <*> (x .:? "MasterPublicDnsName")- <*> (x .:? "TerminationProtected")- <*> (x .:? "VisibleToAllUsers")- <*> (x .:? "AutoTerminate")- <*> (x .:? "Applications" .!= mempty)- <*> (x .:? "Tags" .!= mempty)- <*> (x .:? "ServiceRole")- <*> (x .: "Id")- <*> (x .: "Name")- <*> (x .: "Status"))--instance Hashable Cluster--instance NFData Cluster---- | The reason that the cluster changed to its current state.------------ /See:/ 'clusterStateChangeReason' smart constructor.-data ClusterStateChangeReason = ClusterStateChangeReason'- { _cscrCode :: !(Maybe ClusterStateChangeReasonCode)- , _cscrMessage :: !(Maybe Text)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'ClusterStateChangeReason' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'cscrCode' - The programmatic code for the state change reason.------ * 'cscrMessage' - The descriptive message for the state change reason.-clusterStateChangeReason- :: ClusterStateChangeReason-clusterStateChangeReason =- ClusterStateChangeReason'- { _cscrCode = Nothing- , _cscrMessage = Nothing- }---- | The programmatic code for the state change reason.-cscrCode :: Lens' ClusterStateChangeReason (Maybe ClusterStateChangeReasonCode)-cscrCode = lens _cscrCode (\ s a -> s{_cscrCode = a});---- | The descriptive message for the state change reason.-cscrMessage :: Lens' ClusterStateChangeReason (Maybe Text)-cscrMessage = lens _cscrMessage (\ s a -> s{_cscrMessage = a});--instance FromJSON ClusterStateChangeReason where- parseJSON- = withObject "ClusterStateChangeReason"- (\ x ->- ClusterStateChangeReason' <$>- (x .:? "Code") <*> (x .:? "Message"))--instance Hashable ClusterStateChangeReason--instance NFData ClusterStateChangeReason---- | The detailed status of the cluster.------------ /See:/ 'clusterStatus' smart constructor.-data ClusterStatus = ClusterStatus'- { _csState :: !(Maybe ClusterState)- , _csStateChangeReason :: !(Maybe ClusterStateChangeReason)- , _csTimeline :: !(Maybe ClusterTimeline)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'ClusterStatus' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'csState' - The current state of the cluster.------ * 'csStateChangeReason' - The reason for the cluster status change.------ * 'csTimeline' - A timeline that represents the status of a cluster over the lifetime of the cluster.-clusterStatus- :: ClusterStatus-clusterStatus =- ClusterStatus'- { _csState = Nothing- , _csStateChangeReason = Nothing- , _csTimeline = Nothing- }---- | The current state of the cluster.-csState :: Lens' ClusterStatus (Maybe ClusterState)-csState = lens _csState (\ s a -> s{_csState = a});---- | The reason for the cluster status change.-csStateChangeReason :: Lens' ClusterStatus (Maybe ClusterStateChangeReason)-csStateChangeReason = lens _csStateChangeReason (\ s a -> s{_csStateChangeReason = a});---- | A timeline that represents the status of a cluster over the lifetime of the cluster.-csTimeline :: Lens' ClusterStatus (Maybe ClusterTimeline)-csTimeline = lens _csTimeline (\ s a -> s{_csTimeline = a});--instance FromJSON ClusterStatus where- parseJSON- = withObject "ClusterStatus"- (\ x ->- ClusterStatus' <$>- (x .:? "State") <*> (x .:? "StateChangeReason") <*>- (x .:? "Timeline"))--instance Hashable ClusterStatus--instance NFData ClusterStatus---- | The summary description of the cluster.------------ /See:/ 'clusterSummary' smart constructor.-data ClusterSummary = ClusterSummary'- { _csStatus :: !(Maybe ClusterStatus)- , _csNormalizedInstanceHours :: !(Maybe Int)- , _csName :: !(Maybe Text)- , _csId :: !(Maybe Text)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'ClusterSummary' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'csStatus' - The details about the current status of the cluster.------ * 'csNormalizedInstanceHours' - An approximation of the cost of the job flow, represented in m1.small/hours. This value is incremented one time for every hour an m1.small instance runs. Larger instances are weighted more, so an EC2 instance that is roughly four times more expensive would result in the normalized instance hours being incremented by four. This result is only an approximation and does not reflect the actual billing rate.------ * 'csName' - The name of the cluster.------ * 'csId' - The unique identifier for the cluster.-clusterSummary- :: ClusterSummary-clusterSummary =- ClusterSummary'- { _csStatus = Nothing- , _csNormalizedInstanceHours = Nothing- , _csName = Nothing- , _csId = Nothing- }---- | The details about the current status of the cluster.-csStatus :: Lens' ClusterSummary (Maybe ClusterStatus)-csStatus = lens _csStatus (\ s a -> s{_csStatus = a});---- | An approximation of the cost of the job flow, represented in m1.small/hours. This value is incremented one time for every hour an m1.small instance runs. Larger instances are weighted more, so an EC2 instance that is roughly four times more expensive would result in the normalized instance hours being incremented by four. This result is only an approximation and does not reflect the actual billing rate.-csNormalizedInstanceHours :: Lens' ClusterSummary (Maybe Int)-csNormalizedInstanceHours = lens _csNormalizedInstanceHours (\ s a -> s{_csNormalizedInstanceHours = a});---- | The name of the cluster.-csName :: Lens' ClusterSummary (Maybe Text)-csName = lens _csName (\ s a -> s{_csName = a});---- | The unique identifier for the cluster.-csId :: Lens' ClusterSummary (Maybe Text)-csId = lens _csId (\ s a -> s{_csId = a});--instance FromJSON ClusterSummary where- parseJSON- = withObject "ClusterSummary"- (\ x ->- ClusterSummary' <$>- (x .:? "Status") <*>- (x .:? "NormalizedInstanceHours")- <*> (x .:? "Name")- <*> (x .:? "Id"))--instance Hashable ClusterSummary--instance NFData ClusterSummary---- | Represents the timeline of the cluster's lifecycle.------------ /See:/ 'clusterTimeline' smart constructor.-data ClusterTimeline = ClusterTimeline'- { _ctReadyDateTime :: !(Maybe POSIX)- , _ctCreationDateTime :: !(Maybe POSIX)- , _ctEndDateTime :: !(Maybe POSIX)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'ClusterTimeline' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ctReadyDateTime' - The date and time when the cluster was ready to execute steps.------ * 'ctCreationDateTime' - The creation date and time of the cluster.------ * 'ctEndDateTime' - The date and time when the cluster was terminated.-clusterTimeline- :: ClusterTimeline-clusterTimeline =- ClusterTimeline'- { _ctReadyDateTime = Nothing- , _ctCreationDateTime = Nothing- , _ctEndDateTime = Nothing- }---- | The date and time when the cluster was ready to execute steps.-ctReadyDateTime :: Lens' ClusterTimeline (Maybe UTCTime)-ctReadyDateTime = lens _ctReadyDateTime (\ s a -> s{_ctReadyDateTime = a}) . mapping _Time;---- | The creation date and time of the cluster.-ctCreationDateTime :: Lens' ClusterTimeline (Maybe UTCTime)-ctCreationDateTime = lens _ctCreationDateTime (\ s a -> s{_ctCreationDateTime = a}) . mapping _Time;---- | The date and time when the cluster was terminated.-ctEndDateTime :: Lens' ClusterTimeline (Maybe UTCTime)-ctEndDateTime = lens _ctEndDateTime (\ s a -> s{_ctEndDateTime = a}) . mapping _Time;--instance FromJSON ClusterTimeline where- parseJSON- = withObject "ClusterTimeline"- (\ x ->- ClusterTimeline' <$>- (x .:? "ReadyDateTime") <*>- (x .:? "CreationDateTime")- <*> (x .:? "EndDateTime"))--instance Hashable ClusterTimeline--instance NFData ClusterTimeline---- | An entity describing an executable that runs on a cluster.------------ /See:/ 'command' smart constructor.-data Command = Command'- { _cArgs :: !(Maybe [Text])- , _cScriptPath :: !(Maybe Text)- , _cName :: !(Maybe Text)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'Command' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'cArgs' - Arguments for Amazon EMR to pass to the command for execution.------ * 'cScriptPath' - The Amazon S3 location of the command script.------ * 'cName' - The name of the command.-command- :: Command-command =- Command'- { _cArgs = Nothing- , _cScriptPath = Nothing- , _cName = Nothing- }---- | Arguments for Amazon EMR to pass to the command for execution.-cArgs :: Lens' Command [Text]-cArgs = lens _cArgs (\ s a -> s{_cArgs = a}) . _Default . _Coerce;---- | The Amazon S3 location of the command script.-cScriptPath :: Lens' Command (Maybe Text)-cScriptPath = lens _cScriptPath (\ s a -> s{_cScriptPath = a});---- | The name of the command.-cName :: Lens' Command (Maybe Text)-cName = lens _cName (\ s a -> s{_cName = a});--instance FromJSON Command where- parseJSON- = withObject "Command"- (\ x ->- Command' <$>- (x .:? "Args" .!= mempty) <*> (x .:? "ScriptPath")- <*> (x .:? "Name"))--instance Hashable Command--instance NFData Command---- | Specifies a hardware and software configuration of the EMR cluster. This includes configurations for applications and software bundled with Amazon EMR. The Configuration object is a JSON object which is defined by a classification and a set of properties. Configurations can be nested, so a configuration may have its own Configuration objects listed.------------ /See:/ 'configuration' smart constructor.-data Configuration = Configuration'- { _cConfigurations :: !(Maybe [Configuration])- , _cClassification :: !(Maybe Text)- , _cProperties :: !(Maybe (Map Text Text))- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'Configuration' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'cConfigurations' - A list of configurations you apply to this configuration object.------ * 'cClassification' - The classification of a configuration. For more information see, <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/EmrConfigurations.html Amazon EMR Configurations> .------ * 'cProperties' - A set of properties supplied to the Configuration object.-configuration- :: Configuration-configuration =- Configuration'- { _cConfigurations = Nothing- , _cClassification = Nothing- , _cProperties = Nothing- }---- | A list of configurations you apply to this configuration object.-cConfigurations :: Lens' Configuration [Configuration]-cConfigurations = lens _cConfigurations (\ s a -> s{_cConfigurations = a}) . _Default . _Coerce;---- | The classification of a configuration. For more information see, <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/EmrConfigurations.html Amazon EMR Configurations> .-cClassification :: Lens' Configuration (Maybe Text)-cClassification = lens _cClassification (\ s a -> s{_cClassification = a});---- | A set of properties supplied to the Configuration object.-cProperties :: Lens' Configuration (HashMap Text Text)-cProperties = lens _cProperties (\ s a -> s{_cProperties = a}) . _Default . _Map;--instance FromJSON Configuration where- parseJSON- = withObject "Configuration"- (\ x ->- Configuration' <$>- (x .:? "Configurations" .!= mempty) <*>- (x .:? "Classification")- <*> (x .:? "Properties" .!= mempty))--instance Hashable Configuration--instance NFData Configuration--instance ToJSON Configuration where- toJSON Configuration'{..}- = object- (catMaybes- [("Configurations" .=) <$> _cConfigurations,- ("Classification" .=) <$> _cClassification,- ("Properties" .=) <$> _cProperties])---- | Configuration of requested EBS block device associated with the instance group.------------ /See:/ 'ebsBlockDevice' smart constructor.-data EBSBlockDevice = EBSBlockDevice'- { _ebdDevice :: !(Maybe Text)- , _ebdVolumeSpecification :: !(Maybe VolumeSpecification)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'EBSBlockDevice' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ebdDevice' - The device name that is exposed to the instance, such as /dev/sdh.------ * 'ebdVolumeSpecification' - EBS volume specifications such as volume type, IOPS, and size (GiB) that will be requested for the EBS volume attached to an EC2 instance in the cluster.-ebsBlockDevice- :: EBSBlockDevice-ebsBlockDevice =- EBSBlockDevice'- { _ebdDevice = Nothing- , _ebdVolumeSpecification = Nothing- }---- | The device name that is exposed to the instance, such as /dev/sdh.-ebdDevice :: Lens' EBSBlockDevice (Maybe Text)-ebdDevice = lens _ebdDevice (\ s a -> s{_ebdDevice = a});---- | EBS volume specifications such as volume type, IOPS, and size (GiB) that will be requested for the EBS volume attached to an EC2 instance in the cluster.-ebdVolumeSpecification :: Lens' EBSBlockDevice (Maybe VolumeSpecification)-ebdVolumeSpecification = lens _ebdVolumeSpecification (\ s a -> s{_ebdVolumeSpecification = a});--instance FromJSON EBSBlockDevice where- parseJSON- = withObject "EBSBlockDevice"- (\ x ->- EBSBlockDevice' <$>- (x .:? "Device") <*> (x .:? "VolumeSpecification"))--instance Hashable EBSBlockDevice--instance NFData EBSBlockDevice---- | Configuration of requested EBS block device associated with the instance group with count of volumes that will be associated to every instance.------------ /See:/ 'ebsBlockDeviceConfig' smart constructor.-data EBSBlockDeviceConfig = EBSBlockDeviceConfig'- { _ebdcVolumesPerInstance :: !(Maybe Int)- , _ebdcVolumeSpecification :: !VolumeSpecification- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'EBSBlockDeviceConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ebdcVolumesPerInstance' - Number of EBS volumes with a specific volume configuration that will be associated with every instance in the instance group------ * 'ebdcVolumeSpecification' - EBS volume specifications such as volume type, IOPS, and size (GiB) that will be requested for the EBS volume attached to an EC2 instance in the cluster.-ebsBlockDeviceConfig- :: VolumeSpecification -- ^ 'ebdcVolumeSpecification'- -> EBSBlockDeviceConfig-ebsBlockDeviceConfig pVolumeSpecification_ =- EBSBlockDeviceConfig'- { _ebdcVolumesPerInstance = Nothing- , _ebdcVolumeSpecification = pVolumeSpecification_- }---- | Number of EBS volumes with a specific volume configuration that will be associated with every instance in the instance group-ebdcVolumesPerInstance :: Lens' EBSBlockDeviceConfig (Maybe Int)-ebdcVolumesPerInstance = lens _ebdcVolumesPerInstance (\ s a -> s{_ebdcVolumesPerInstance = a});---- | EBS volume specifications such as volume type, IOPS, and size (GiB) that will be requested for the EBS volume attached to an EC2 instance in the cluster.-ebdcVolumeSpecification :: Lens' EBSBlockDeviceConfig VolumeSpecification-ebdcVolumeSpecification = lens _ebdcVolumeSpecification (\ s a -> s{_ebdcVolumeSpecification = a});--instance Hashable EBSBlockDeviceConfig--instance NFData EBSBlockDeviceConfig--instance ToJSON EBSBlockDeviceConfig where- toJSON EBSBlockDeviceConfig'{..}- = object- (catMaybes- [("VolumesPerInstance" .=) <$>- _ebdcVolumesPerInstance,- Just- ("VolumeSpecification" .= _ebdcVolumeSpecification)])---- | The Amazon EBS configuration of a cluster instance.------------ /See:/ 'ebsConfiguration' smart constructor.-data EBSConfiguration = EBSConfiguration'- { _ecEBSOptimized :: !(Maybe Bool)- , _ecEBSBlockDeviceConfigs :: !(Maybe [EBSBlockDeviceConfig])- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'EBSConfiguration' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ecEBSOptimized' - Indicates whether an Amazon EBS volume is EBS-optimized.------ * 'ecEBSBlockDeviceConfigs' - An array of Amazon EBS volume specifications attached to a cluster instance.-ebsConfiguration- :: EBSConfiguration-ebsConfiguration =- EBSConfiguration'- { _ecEBSOptimized = Nothing- , _ecEBSBlockDeviceConfigs = Nothing- }---- | Indicates whether an Amazon EBS volume is EBS-optimized.-ecEBSOptimized :: Lens' EBSConfiguration (Maybe Bool)-ecEBSOptimized = lens _ecEBSOptimized (\ s a -> s{_ecEBSOptimized = a});---- | An array of Amazon EBS volume specifications attached to a cluster instance.-ecEBSBlockDeviceConfigs :: Lens' EBSConfiguration [EBSBlockDeviceConfig]-ecEBSBlockDeviceConfigs = lens _ecEBSBlockDeviceConfigs (\ s a -> s{_ecEBSBlockDeviceConfigs = a}) . _Default . _Coerce;--instance Hashable EBSConfiguration--instance NFData EBSConfiguration--instance ToJSON EBSConfiguration where- toJSON EBSConfiguration'{..}- = object- (catMaybes- [("EbsOptimized" .=) <$> _ecEBSOptimized,- ("EbsBlockDeviceConfigs" .=) <$>- _ecEBSBlockDeviceConfigs])---- | EBS block device that's attached to an EC2 instance.------------ /See:/ 'ebsVolume' smart constructor.-data EBSVolume = EBSVolume'- { _evDevice :: !(Maybe Text)- , _evVolumeId :: !(Maybe Text)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'EBSVolume' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'evDevice' - The device name that is exposed to the instance, such as /dev/sdh.------ * 'evVolumeId' - The volume identifier of the EBS volume.-ebsVolume- :: EBSVolume-ebsVolume =- EBSVolume'- { _evDevice = Nothing- , _evVolumeId = Nothing- }---- | The device name that is exposed to the instance, such as /dev/sdh.-evDevice :: Lens' EBSVolume (Maybe Text)-evDevice = lens _evDevice (\ s a -> s{_evDevice = a});---- | The volume identifier of the EBS volume.-evVolumeId :: Lens' EBSVolume (Maybe Text)-evVolumeId = lens _evVolumeId (\ s a -> s{_evVolumeId = a});--instance FromJSON EBSVolume where- parseJSON- = withObject "EBSVolume"- (\ x ->- EBSVolume' <$>- (x .:? "Device") <*> (x .:? "VolumeId"))--instance Hashable EBSVolume--instance NFData EBSVolume---- | Provides information about the EC2 instances in a cluster grouped by category. For example, key name, subnet ID, IAM instance profile, and so on.------------ /See:/ 'ec2InstanceAttributes' smart constructor.-data EC2InstanceAttributes = EC2InstanceAttributes'- { _eiaEC2KeyName :: !(Maybe Text)- , _eiaEmrManagedSlaveSecurityGroup :: !(Maybe Text)- , _eiaAdditionalSlaveSecurityGroups :: !(Maybe [Text])- , _eiaAdditionalMasterSecurityGroups :: !(Maybe [Text])- , _eiaIAMInstanceProfile :: !(Maybe Text)- , _eiaEmrManagedMasterSecurityGroup :: !(Maybe Text)- , _eiaEC2SubnetId :: !(Maybe Text)- , _eiaServiceAccessSecurityGroup :: !(Maybe Text)- , _eiaEC2AvailabilityZone :: !(Maybe Text)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'EC2InstanceAttributes' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'eiaEC2KeyName' - The name of the Amazon EC2 key pair to use when connecting with SSH into the master node as a user named "hadoop".------ * 'eiaEmrManagedSlaveSecurityGroup' - The identifier of the Amazon EC2 security group for the slave nodes.------ * 'eiaAdditionalSlaveSecurityGroups' - A list of additional Amazon EC2 security group IDs for the slave nodes.------ * 'eiaAdditionalMasterSecurityGroups' - A list of additional Amazon EC2 security group IDs for the master node.------ * 'eiaIAMInstanceProfile' - The IAM role that was specified when the job flow was launched. The EC2 instances of the job flow assume this role.------ * 'eiaEmrManagedMasterSecurityGroup' - The identifier of the Amazon EC2 security group for the master node.------ * 'eiaEC2SubnetId' - To launch the job flow in Amazon VPC, set this parameter to the identifier of the Amazon VPC subnet where you want the job flow to launch. If you do not specify this value, the job flow is launched in the normal AWS cloud, outside of a VPC. Amazon VPC currently does not support cluster compute quadruple extra large (cc1.4xlarge) instances. Thus, you cannot specify the cc1.4xlarge instance type for nodes of a job flow launched in a VPC.------ * 'eiaServiceAccessSecurityGroup' - The identifier of the Amazon EC2 security group for the Amazon EMR service to access clusters in VPC private subnets.------ * 'eiaEC2AvailabilityZone' - The Availability Zone in which the cluster will run.-ec2InstanceAttributes- :: EC2InstanceAttributes-ec2InstanceAttributes =- EC2InstanceAttributes'- { _eiaEC2KeyName = Nothing- , _eiaEmrManagedSlaveSecurityGroup = Nothing- , _eiaAdditionalSlaveSecurityGroups = Nothing- , _eiaAdditionalMasterSecurityGroups = Nothing- , _eiaIAMInstanceProfile = Nothing- , _eiaEmrManagedMasterSecurityGroup = Nothing- , _eiaEC2SubnetId = Nothing- , _eiaServiceAccessSecurityGroup = Nothing- , _eiaEC2AvailabilityZone = Nothing- }---- | The name of the Amazon EC2 key pair to use when connecting with SSH into the master node as a user named "hadoop".-eiaEC2KeyName :: Lens' EC2InstanceAttributes (Maybe Text)-eiaEC2KeyName = lens _eiaEC2KeyName (\ s a -> s{_eiaEC2KeyName = a});---- | The identifier of the Amazon EC2 security group for the slave nodes.-eiaEmrManagedSlaveSecurityGroup :: Lens' EC2InstanceAttributes (Maybe Text)-eiaEmrManagedSlaveSecurityGroup = lens _eiaEmrManagedSlaveSecurityGroup (\ s a -> s{_eiaEmrManagedSlaveSecurityGroup = a});---- | A list of additional Amazon EC2 security group IDs for the slave nodes.-eiaAdditionalSlaveSecurityGroups :: Lens' EC2InstanceAttributes [Text]-eiaAdditionalSlaveSecurityGroups = lens _eiaAdditionalSlaveSecurityGroups (\ s a -> s{_eiaAdditionalSlaveSecurityGroups = a}) . _Default . _Coerce;---- | A list of additional Amazon EC2 security group IDs for the master node.-eiaAdditionalMasterSecurityGroups :: Lens' EC2InstanceAttributes [Text]-eiaAdditionalMasterSecurityGroups = lens _eiaAdditionalMasterSecurityGroups (\ s a -> s{_eiaAdditionalMasterSecurityGroups = a}) . _Default . _Coerce;---- | The IAM role that was specified when the job flow was launched. The EC2 instances of the job flow assume this role.-eiaIAMInstanceProfile :: Lens' EC2InstanceAttributes (Maybe Text)-eiaIAMInstanceProfile = lens _eiaIAMInstanceProfile (\ s a -> s{_eiaIAMInstanceProfile = a});---- | The identifier of the Amazon EC2 security group for the master node.-eiaEmrManagedMasterSecurityGroup :: Lens' EC2InstanceAttributes (Maybe Text)-eiaEmrManagedMasterSecurityGroup = lens _eiaEmrManagedMasterSecurityGroup (\ s a -> s{_eiaEmrManagedMasterSecurityGroup = a});---- | To launch the job flow in Amazon VPC, set this parameter to the identifier of the Amazon VPC subnet where you want the job flow to launch. If you do not specify this value, the job flow is launched in the normal AWS cloud, outside of a VPC. Amazon VPC currently does not support cluster compute quadruple extra large (cc1.4xlarge) instances. Thus, you cannot specify the cc1.4xlarge instance type for nodes of a job flow launched in a VPC.-eiaEC2SubnetId :: Lens' EC2InstanceAttributes (Maybe Text)-eiaEC2SubnetId = lens _eiaEC2SubnetId (\ s a -> s{_eiaEC2SubnetId = a});---- | The identifier of the Amazon EC2 security group for the Amazon EMR service to access clusters in VPC private subnets.-eiaServiceAccessSecurityGroup :: Lens' EC2InstanceAttributes (Maybe Text)-eiaServiceAccessSecurityGroup = lens _eiaServiceAccessSecurityGroup (\ s a -> s{_eiaServiceAccessSecurityGroup = a});---- | The Availability Zone in which the cluster will run.-eiaEC2AvailabilityZone :: Lens' EC2InstanceAttributes (Maybe Text)-eiaEC2AvailabilityZone = lens _eiaEC2AvailabilityZone (\ s a -> s{_eiaEC2AvailabilityZone = a});--instance FromJSON EC2InstanceAttributes where- parseJSON- = withObject "EC2InstanceAttributes"- (\ x ->- EC2InstanceAttributes' <$>- (x .:? "Ec2KeyName") <*>- (x .:? "EmrManagedSlaveSecurityGroup")- <*>- (x .:? "AdditionalSlaveSecurityGroups" .!= mempty)- <*>- (x .:? "AdditionalMasterSecurityGroups" .!= mempty)- <*> (x .:? "IamInstanceProfile")- <*> (x .:? "EmrManagedMasterSecurityGroup")- <*> (x .:? "Ec2SubnetId")- <*> (x .:? "ServiceAccessSecurityGroup")- <*> (x .:? "Ec2AvailabilityZone"))--instance Hashable EC2InstanceAttributes--instance NFData EC2InstanceAttributes---- | The details of the step failure. The service attempts to detect the root cause for many common failures.------------ /See:/ 'failureDetails' smart constructor.-data FailureDetails = FailureDetails'- { _fdLogFile :: !(Maybe Text)- , _fdReason :: !(Maybe Text)- , _fdMessage :: !(Maybe Text)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'FailureDetails' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'fdLogFile' - The path to the log file where the step failure root cause was originally recorded.------ * 'fdReason' - The reason for the step failure. In the case where the service cannot successfully determine the root cause of the failure, it returns "Unknown Error" as a reason.------ * 'fdMessage' - The descriptive message including the error the EMR service has identified as the cause of step failure. This is text from an error log that describes the root cause of the failure.-failureDetails- :: FailureDetails-failureDetails =- FailureDetails'- { _fdLogFile = Nothing- , _fdReason = Nothing- , _fdMessage = Nothing- }---- | The path to the log file where the step failure root cause was originally recorded.-fdLogFile :: Lens' FailureDetails (Maybe Text)-fdLogFile = lens _fdLogFile (\ s a -> s{_fdLogFile = a});---- | The reason for the step failure. In the case where the service cannot successfully determine the root cause of the failure, it returns "Unknown Error" as a reason.-fdReason :: Lens' FailureDetails (Maybe Text)-fdReason = lens _fdReason (\ s a -> s{_fdReason = a});---- | The descriptive message including the error the EMR service has identified as the cause of step failure. This is text from an error log that describes the root cause of the failure.-fdMessage :: Lens' FailureDetails (Maybe Text)-fdMessage = lens _fdMessage (\ s a -> s{_fdMessage = a});--instance FromJSON FailureDetails where- parseJSON- = withObject "FailureDetails"- (\ x ->- FailureDetails' <$>- (x .:? "LogFile") <*> (x .:? "Reason") <*>- (x .:? "Message"))--instance Hashable FailureDetails--instance NFData FailureDetails---- | A job flow step consisting of a JAR file whose main function will be executed. The main function submits a job for Hadoop to execute and waits for the job to finish or fail.------------ /See:/ 'hadoopJARStepConfig' smart constructor.-data HadoopJARStepConfig = HadoopJARStepConfig'- { _hjscArgs :: !(Maybe [Text])- , _hjscMainClass :: !(Maybe Text)- , _hjscProperties :: !(Maybe [KeyValue])- , _hjscJAR :: !Text- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'HadoopJARStepConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'hjscArgs' - A list of command line arguments passed to the JAR file's main function when executed.------ * 'hjscMainClass' - The name of the main class in the specified Java file. If not specified, the JAR file should specify a Main-Class in its manifest file.------ * 'hjscProperties' - A list of Java properties that are set when the step runs. You can use these properties to pass key value pairs to your main function.------ * 'hjscJAR' - A path to a JAR file run during the step.-hadoopJARStepConfig- :: Text -- ^ 'hjscJAR'- -> HadoopJARStepConfig-hadoopJARStepConfig pJAR_ =- HadoopJARStepConfig'- { _hjscArgs = Nothing- , _hjscMainClass = Nothing- , _hjscProperties = Nothing- , _hjscJAR = pJAR_- }---- | A list of command line arguments passed to the JAR file's main function when executed.-hjscArgs :: Lens' HadoopJARStepConfig [Text]-hjscArgs = lens _hjscArgs (\ s a -> s{_hjscArgs = a}) . _Default . _Coerce;---- | The name of the main class in the specified Java file. If not specified, the JAR file should specify a Main-Class in its manifest file.-hjscMainClass :: Lens' HadoopJARStepConfig (Maybe Text)-hjscMainClass = lens _hjscMainClass (\ s a -> s{_hjscMainClass = a});---- | A list of Java properties that are set when the step runs. You can use these properties to pass key value pairs to your main function.-hjscProperties :: Lens' HadoopJARStepConfig [KeyValue]-hjscProperties = lens _hjscProperties (\ s a -> s{_hjscProperties = a}) . _Default . _Coerce;---- | A path to a JAR file run during the step.-hjscJAR :: Lens' HadoopJARStepConfig Text-hjscJAR = lens _hjscJAR (\ s a -> s{_hjscJAR = a});--instance Hashable HadoopJARStepConfig--instance NFData HadoopJARStepConfig--instance ToJSON HadoopJARStepConfig where- toJSON HadoopJARStepConfig'{..}- = object- (catMaybes- [("Args" .=) <$> _hjscArgs,- ("MainClass" .=) <$> _hjscMainClass,- ("Properties" .=) <$> _hjscProperties,- Just ("Jar" .= _hjscJAR)])---- | A cluster step consisting of a JAR file whose main function will be executed. The main function submits a job for Hadoop to execute and waits for the job to finish or fail.------------ /See:/ 'hadoopStepConfig' smart constructor.-data HadoopStepConfig = HadoopStepConfig'- { _hscArgs :: !(Maybe [Text])- , _hscJAR :: !(Maybe Text)- , _hscMainClass :: !(Maybe Text)- , _hscProperties :: !(Maybe (Map Text Text))- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'HadoopStepConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'hscArgs' - The list of command line arguments to pass to the JAR file's main function for execution.------ * 'hscJAR' - The path to the JAR file that runs during the step.------ * 'hscMainClass' - The name of the main class in the specified Java file. If not specified, the JAR file should specify a main class in its manifest file.------ * 'hscProperties' - The list of Java properties that are set when the step runs. You can use these properties to pass key value pairs to your main function.-hadoopStepConfig- :: HadoopStepConfig-hadoopStepConfig =- HadoopStepConfig'- { _hscArgs = Nothing- , _hscJAR = Nothing- , _hscMainClass = Nothing- , _hscProperties = Nothing- }---- | The list of command line arguments to pass to the JAR file's main function for execution.-hscArgs :: Lens' HadoopStepConfig [Text]-hscArgs = lens _hscArgs (\ s a -> s{_hscArgs = a}) . _Default . _Coerce;---- | The path to the JAR file that runs during the step.-hscJAR :: Lens' HadoopStepConfig (Maybe Text)-hscJAR = lens _hscJAR (\ s a -> s{_hscJAR = a});---- | The name of the main class in the specified Java file. If not specified, the JAR file should specify a main class in its manifest file.-hscMainClass :: Lens' HadoopStepConfig (Maybe Text)-hscMainClass = lens _hscMainClass (\ s a -> s{_hscMainClass = a});---- | The list of Java properties that are set when the step runs. You can use these properties to pass key value pairs to your main function.-hscProperties :: Lens' HadoopStepConfig (HashMap Text Text)-hscProperties = lens _hscProperties (\ s a -> s{_hscProperties = a}) . _Default . _Map;--instance FromJSON HadoopStepConfig where- parseJSON- = withObject "HadoopStepConfig"- (\ x ->- HadoopStepConfig' <$>- (x .:? "Args" .!= mempty) <*> (x .:? "Jar") <*>- (x .:? "MainClass")- <*> (x .:? "Properties" .!= mempty))--instance Hashable HadoopStepConfig--instance NFData HadoopStepConfig---- | Represents an EC2 instance provisioned as part of cluster.------------ /See:/ 'instance'' smart constructor.-data Instance = Instance'- { _iStatus :: !(Maybe InstanceStatus)- , _iPublicDNSName :: !(Maybe Text)- , _iEBSVolumes :: !(Maybe [EBSVolume])- , _iEC2InstanceId :: !(Maybe Text)- , _iPrivateIPAddress :: !(Maybe Text)- , _iId :: !(Maybe Text)- , _iInstanceGroupId :: !(Maybe Text)- , _iPrivateDNSName :: !(Maybe Text)- , _iPublicIPAddress :: !(Maybe Text)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'Instance' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'iStatus' - The current status of the instance.------ * 'iPublicDNSName' - The public DNS name of the instance.------ * 'iEBSVolumes' - The list of EBS volumes that are attached to this instance.------ * 'iEC2InstanceId' - The unique identifier of the instance in Amazon EC2.------ * 'iPrivateIPAddress' - The private IP address of the instance.------ * 'iId' - The unique identifier for the instance in Amazon EMR.------ * 'iInstanceGroupId' - The identifier of the instance group to which this instance belongs.------ * 'iPrivateDNSName' - The private DNS name of the instance.------ * 'iPublicIPAddress' - The public IP address of the instance.-instance'- :: Instance-instance' =- Instance'- { _iStatus = Nothing- , _iPublicDNSName = Nothing- , _iEBSVolumes = Nothing- , _iEC2InstanceId = Nothing- , _iPrivateIPAddress = Nothing- , _iId = Nothing- , _iInstanceGroupId = Nothing- , _iPrivateDNSName = Nothing- , _iPublicIPAddress = Nothing- }---- | The current status of the instance.-iStatus :: Lens' Instance (Maybe InstanceStatus)-iStatus = lens _iStatus (\ s a -> s{_iStatus = a});---- | The public DNS name of the instance.-iPublicDNSName :: Lens' Instance (Maybe Text)-iPublicDNSName = lens _iPublicDNSName (\ s a -> s{_iPublicDNSName = a});---- | The list of EBS volumes that are attached to this instance.-iEBSVolumes :: Lens' Instance [EBSVolume]-iEBSVolumes = lens _iEBSVolumes (\ s a -> s{_iEBSVolumes = a}) . _Default . _Coerce;---- | The unique identifier of the instance in Amazon EC2.-iEC2InstanceId :: Lens' Instance (Maybe Text)-iEC2InstanceId = lens _iEC2InstanceId (\ s a -> s{_iEC2InstanceId = a});---- | The private IP address of the instance.-iPrivateIPAddress :: Lens' Instance (Maybe Text)-iPrivateIPAddress = lens _iPrivateIPAddress (\ s a -> s{_iPrivateIPAddress = a});---- | The unique identifier for the instance in Amazon EMR.-iId :: Lens' Instance (Maybe Text)-iId = lens _iId (\ s a -> s{_iId = a});---- | The identifier of the instance group to which this instance belongs.-iInstanceGroupId :: Lens' Instance (Maybe Text)-iInstanceGroupId = lens _iInstanceGroupId (\ s a -> s{_iInstanceGroupId = a});---- | The private DNS name of the instance.-iPrivateDNSName :: Lens' Instance (Maybe Text)-iPrivateDNSName = lens _iPrivateDNSName (\ s a -> s{_iPrivateDNSName = a});---- | The public IP address of the instance.-iPublicIPAddress :: Lens' Instance (Maybe Text)-iPublicIPAddress = lens _iPublicIPAddress (\ s a -> s{_iPublicIPAddress = a});--instance FromJSON Instance where- parseJSON- = withObject "Instance"- (\ x ->- Instance' <$>- (x .:? "Status") <*> (x .:? "PublicDnsName") <*>- (x .:? "EbsVolumes" .!= mempty)- <*> (x .:? "Ec2InstanceId")- <*> (x .:? "PrivateIpAddress")- <*> (x .:? "Id")- <*> (x .:? "InstanceGroupId")- <*> (x .:? "PrivateDnsName")- <*> (x .:? "PublicIpAddress"))--instance Hashable Instance--instance NFData Instance---- | This entity represents an instance group, which is a group of instances that have common purpose. For example, CORE instance group is used for HDFS.------------ /See:/ 'instanceGroup' smart constructor.-data InstanceGroup = InstanceGroup'- { _igStatus :: !(Maybe InstanceGroupStatus)- , _igBidPrice :: !(Maybe Text)- , _igRequestedInstanceCount :: !(Maybe Int)- , _igRunningInstanceCount :: !(Maybe Int)- , _igConfigurations :: !(Maybe [Configuration])- , _igInstanceGroupType :: !(Maybe InstanceGroupType)- , _igEBSBlockDevices :: !(Maybe [EBSBlockDevice])- , _igInstanceType :: !(Maybe Text)- , _igEBSOptimized :: !(Maybe Bool)- , _igMarket :: !(Maybe MarketType)- , _igName :: !(Maybe Text)- , _igAutoScalingPolicy :: !(Maybe AutoScalingPolicyDescription)- , _igShrinkPolicy :: !(Maybe ShrinkPolicy)- , _igId :: !(Maybe Text)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroup' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'igStatus' - The current status of the instance group.------ * 'igBidPrice' - The bid price for each EC2 instance in the instance group when launching nodes as Spot Instances, expressed in USD.------ * 'igRequestedInstanceCount' - The target number of instances for the instance group.------ * 'igRunningInstanceCount' - The number of instances currently running in this instance group.------ * 'igConfigurations' - The list of configurations supplied for an EMR cluster instance group. You can specify a separate configuration for each instance group (master, core, and task).------ * 'igInstanceGroupType' - The type of the instance group. Valid values are MASTER, CORE or TASK.------ * 'igEBSBlockDevices' - The EBS block devices that are mapped to this instance group.------ * 'igInstanceType' - The EC2 instance type for all instances in the instance group.------ * 'igEBSOptimized' - If the instance group is EBS-optimized. An Amazon EBS-optimized instance uses an optimized configuration stack and provides additional, dedicated capacity for Amazon EBS I/O.------ * 'igMarket' - The marketplace to provision instances for this group. Valid values are ON_DEMAND or SPOT.------ * 'igName' - The name of the instance group.------ * 'igAutoScalingPolicy' - An automatic scaling policy for a core instance group or task instance group in an Amazon EMR cluster. The automatic scaling policy defines how an instance group dynamically adds and terminates EC2 instances in response to the value of a CloudWatch metric. See PutAutoScalingPolicy.------ * 'igShrinkPolicy' - Policy for customizing shrink operations.------ * 'igId' - The identifier of the instance group.-instanceGroup- :: InstanceGroup-instanceGroup =- InstanceGroup'- { _igStatus = Nothing- , _igBidPrice = Nothing- , _igRequestedInstanceCount = Nothing- , _igRunningInstanceCount = Nothing- , _igConfigurations = Nothing- , _igInstanceGroupType = Nothing- , _igEBSBlockDevices = Nothing- , _igInstanceType = Nothing- , _igEBSOptimized = Nothing- , _igMarket = Nothing- , _igName = Nothing- , _igAutoScalingPolicy = Nothing- , _igShrinkPolicy = Nothing- , _igId = Nothing- }---- | The current status of the instance group.-igStatus :: Lens' InstanceGroup (Maybe InstanceGroupStatus)-igStatus = lens _igStatus (\ s a -> s{_igStatus = a});---- | The bid price for each EC2 instance in the instance group when launching nodes as Spot Instances, expressed in USD.-igBidPrice :: Lens' InstanceGroup (Maybe Text)-igBidPrice = lens _igBidPrice (\ s a -> s{_igBidPrice = a});---- | The target number of instances for the instance group.-igRequestedInstanceCount :: Lens' InstanceGroup (Maybe Int)-igRequestedInstanceCount = lens _igRequestedInstanceCount (\ s a -> s{_igRequestedInstanceCount = a});---- | The number of instances currently running in this instance group.-igRunningInstanceCount :: Lens' InstanceGroup (Maybe Int)-igRunningInstanceCount = lens _igRunningInstanceCount (\ s a -> s{_igRunningInstanceCount = a});---- | The list of configurations supplied for an EMR cluster instance group. You can specify a separate configuration for each instance group (master, core, and task).-igConfigurations :: Lens' InstanceGroup [Configuration]-igConfigurations = lens _igConfigurations (\ s a -> s{_igConfigurations = a}) . _Default . _Coerce;---- | The type of the instance group. Valid values are MASTER, CORE or TASK.-igInstanceGroupType :: Lens' InstanceGroup (Maybe InstanceGroupType)-igInstanceGroupType = lens _igInstanceGroupType (\ s a -> s{_igInstanceGroupType = a});---- | The EBS block devices that are mapped to this instance group.-igEBSBlockDevices :: Lens' InstanceGroup [EBSBlockDevice]-igEBSBlockDevices = lens _igEBSBlockDevices (\ s a -> s{_igEBSBlockDevices = a}) . _Default . _Coerce;---- | The EC2 instance type for all instances in the instance group.-igInstanceType :: Lens' InstanceGroup (Maybe Text)-igInstanceType = lens _igInstanceType (\ s a -> s{_igInstanceType = a});---- | If the instance group is EBS-optimized. An Amazon EBS-optimized instance uses an optimized configuration stack and provides additional, dedicated capacity for Amazon EBS I/O.-igEBSOptimized :: Lens' InstanceGroup (Maybe Bool)-igEBSOptimized = lens _igEBSOptimized (\ s a -> s{_igEBSOptimized = a});---- | The marketplace to provision instances for this group. Valid values are ON_DEMAND or SPOT.-igMarket :: Lens' InstanceGroup (Maybe MarketType)-igMarket = lens _igMarket (\ s a -> s{_igMarket = a});---- | The name of the instance group.-igName :: Lens' InstanceGroup (Maybe Text)-igName = lens _igName (\ s a -> s{_igName = a});---- | An automatic scaling policy for a core instance group or task instance group in an Amazon EMR cluster. The automatic scaling policy defines how an instance group dynamically adds and terminates EC2 instances in response to the value of a CloudWatch metric. See PutAutoScalingPolicy.-igAutoScalingPolicy :: Lens' InstanceGroup (Maybe AutoScalingPolicyDescription)-igAutoScalingPolicy = lens _igAutoScalingPolicy (\ s a -> s{_igAutoScalingPolicy = a});---- | Policy for customizing shrink operations.-igShrinkPolicy :: Lens' InstanceGroup (Maybe ShrinkPolicy)-igShrinkPolicy = lens _igShrinkPolicy (\ s a -> s{_igShrinkPolicy = a});---- | The identifier of the instance group.-igId :: Lens' InstanceGroup (Maybe Text)-igId = lens _igId (\ s a -> s{_igId = a});--instance FromJSON InstanceGroup where- parseJSON- = withObject "InstanceGroup"- (\ x ->- InstanceGroup' <$>- (x .:? "Status") <*> (x .:? "BidPrice") <*>- (x .:? "RequestedInstanceCount")- <*> (x .:? "RunningInstanceCount")- <*> (x .:? "Configurations" .!= mempty)- <*> (x .:? "InstanceGroupType")- <*> (x .:? "EbsBlockDevices" .!= mempty)- <*> (x .:? "InstanceType")- <*> (x .:? "EbsOptimized")- <*> (x .:? "Market")- <*> (x .:? "Name")- <*> (x .:? "AutoScalingPolicy")- <*> (x .:? "ShrinkPolicy")- <*> (x .:? "Id"))--instance Hashable InstanceGroup--instance NFData InstanceGroup---- | Configuration defining a new instance group.------------ /See:/ 'instanceGroupConfig' smart constructor.-data InstanceGroupConfig = InstanceGroupConfig'- { _igcEBSConfiguration :: !(Maybe EBSConfiguration)- , _igcBidPrice :: !(Maybe Text)- , _igcConfigurations :: !(Maybe [Configuration])- , _igcMarket :: !(Maybe MarketType)- , _igcName :: !(Maybe Text)- , _igcAutoScalingPolicy :: !(Maybe AutoScalingPolicy)- , _igcInstanceRole :: !InstanceRoleType- , _igcInstanceType :: !Text- , _igcInstanceCount :: !Int- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroupConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'igcEBSConfiguration' - EBS configurations that will be attached to each EC2 instance in the instance group.------ * 'igcBidPrice' - Bid price for each EC2 instance in the instance group when launching nodes as Spot Instances, expressed in USD.------ * 'igcConfigurations' - The list of configurations supplied for an EMR cluster instance group. You can specify a separate configuration for each instance group (master, core, and task).------ * 'igcMarket' - Market type of the EC2 instances used to create a cluster node.------ * 'igcName' - Friendly name given to the instance group.------ * 'igcAutoScalingPolicy' - An automatic scaling policy for a core instance group or task instance group in an Amazon EMR cluster. The automatic scaling policy defines how an instance group dynamically adds and terminates EC2 instances in response to the value of a CloudWatch metric. See 'PutAutoScalingPolicy' .------ * 'igcInstanceRole' - The role of the instance group in the cluster.------ * 'igcInstanceType' - The EC2 instance type for all instances in the instance group.------ * 'igcInstanceCount' - Target number of instances for the instance group.-instanceGroupConfig- :: InstanceRoleType -- ^ 'igcInstanceRole'- -> Text -- ^ 'igcInstanceType'- -> Int -- ^ 'igcInstanceCount'- -> InstanceGroupConfig-instanceGroupConfig pInstanceRole_ pInstanceType_ pInstanceCount_ =- InstanceGroupConfig'- { _igcEBSConfiguration = Nothing- , _igcBidPrice = Nothing- , _igcConfigurations = Nothing- , _igcMarket = Nothing- , _igcName = Nothing- , _igcAutoScalingPolicy = Nothing- , _igcInstanceRole = pInstanceRole_- , _igcInstanceType = pInstanceType_- , _igcInstanceCount = pInstanceCount_- }---- | EBS configurations that will be attached to each EC2 instance in the instance group.-igcEBSConfiguration :: Lens' InstanceGroupConfig (Maybe EBSConfiguration)-igcEBSConfiguration = lens _igcEBSConfiguration (\ s a -> s{_igcEBSConfiguration = a});---- | Bid price for each EC2 instance in the instance group when launching nodes as Spot Instances, expressed in USD.-igcBidPrice :: Lens' InstanceGroupConfig (Maybe Text)-igcBidPrice = lens _igcBidPrice (\ s a -> s{_igcBidPrice = a});---- | The list of configurations supplied for an EMR cluster instance group. You can specify a separate configuration for each instance group (master, core, and task).-igcConfigurations :: Lens' InstanceGroupConfig [Configuration]-igcConfigurations = lens _igcConfigurations (\ s a -> s{_igcConfigurations = a}) . _Default . _Coerce;---- | Market type of the EC2 instances used to create a cluster node.-igcMarket :: Lens' InstanceGroupConfig (Maybe MarketType)-igcMarket = lens _igcMarket (\ s a -> s{_igcMarket = a});---- | Friendly name given to the instance group.-igcName :: Lens' InstanceGroupConfig (Maybe Text)-igcName = lens _igcName (\ s a -> s{_igcName = a});---- | An automatic scaling policy for a core instance group or task instance group in an Amazon EMR cluster. The automatic scaling policy defines how an instance group dynamically adds and terminates EC2 instances in response to the value of a CloudWatch metric. See 'PutAutoScalingPolicy' .-igcAutoScalingPolicy :: Lens' InstanceGroupConfig (Maybe AutoScalingPolicy)-igcAutoScalingPolicy = lens _igcAutoScalingPolicy (\ s a -> s{_igcAutoScalingPolicy = a});---- | The role of the instance group in the cluster.-igcInstanceRole :: Lens' InstanceGroupConfig InstanceRoleType-igcInstanceRole = lens _igcInstanceRole (\ s a -> s{_igcInstanceRole = a});---- | The EC2 instance type for all instances in the instance group.-igcInstanceType :: Lens' InstanceGroupConfig Text-igcInstanceType = lens _igcInstanceType (\ s a -> s{_igcInstanceType = a});---- | Target number of instances for the instance group.-igcInstanceCount :: Lens' InstanceGroupConfig Int-igcInstanceCount = lens _igcInstanceCount (\ s a -> s{_igcInstanceCount = a});--instance Hashable InstanceGroupConfig--instance NFData InstanceGroupConfig--instance ToJSON InstanceGroupConfig where- toJSON InstanceGroupConfig'{..}- = object- (catMaybes- [("EbsConfiguration" .=) <$> _igcEBSConfiguration,- ("BidPrice" .=) <$> _igcBidPrice,- ("Configurations" .=) <$> _igcConfigurations,- ("Market" .=) <$> _igcMarket,- ("Name" .=) <$> _igcName,- ("AutoScalingPolicy" .=) <$> _igcAutoScalingPolicy,- Just ("InstanceRole" .= _igcInstanceRole),- Just ("InstanceType" .= _igcInstanceType),- Just ("InstanceCount" .= _igcInstanceCount)])---- | Modify an instance group size.------------ /See:/ 'instanceGroupModifyConfig' smart constructor.-data InstanceGroupModifyConfig = InstanceGroupModifyConfig'- { _igmcInstanceCount :: !(Maybe Int)- , _igmcEC2InstanceIdsToTerminate :: !(Maybe [Text])- , _igmcShrinkPolicy :: !(Maybe ShrinkPolicy)- , _igmcInstanceGroupId :: !Text- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroupModifyConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'igmcInstanceCount' - Target size for the instance group.------ * 'igmcEC2InstanceIdsToTerminate' - The EC2 InstanceIds to terminate. After you terminate the instances, the instance group will not return to its original requested size.------ * 'igmcShrinkPolicy' - Policy for customizing shrink operations.------ * 'igmcInstanceGroupId' - Unique ID of the instance group to expand or shrink.-instanceGroupModifyConfig- :: Text -- ^ 'igmcInstanceGroupId'- -> InstanceGroupModifyConfig-instanceGroupModifyConfig pInstanceGroupId_ =- InstanceGroupModifyConfig'- { _igmcInstanceCount = Nothing- , _igmcEC2InstanceIdsToTerminate = Nothing- , _igmcShrinkPolicy = Nothing- , _igmcInstanceGroupId = pInstanceGroupId_- }---- | Target size for the instance group.-igmcInstanceCount :: Lens' InstanceGroupModifyConfig (Maybe Int)-igmcInstanceCount = lens _igmcInstanceCount (\ s a -> s{_igmcInstanceCount = a});---- | The EC2 InstanceIds to terminate. After you terminate the instances, the instance group will not return to its original requested size.-igmcEC2InstanceIdsToTerminate :: Lens' InstanceGroupModifyConfig [Text]-igmcEC2InstanceIdsToTerminate = lens _igmcEC2InstanceIdsToTerminate (\ s a -> s{_igmcEC2InstanceIdsToTerminate = a}) . _Default . _Coerce;---- | Policy for customizing shrink operations.-igmcShrinkPolicy :: Lens' InstanceGroupModifyConfig (Maybe ShrinkPolicy)-igmcShrinkPolicy = lens _igmcShrinkPolicy (\ s a -> s{_igmcShrinkPolicy = a});---- | Unique ID of the instance group to expand or shrink.-igmcInstanceGroupId :: Lens' InstanceGroupModifyConfig Text-igmcInstanceGroupId = lens _igmcInstanceGroupId (\ s a -> s{_igmcInstanceGroupId = a});--instance Hashable InstanceGroupModifyConfig--instance NFData InstanceGroupModifyConfig--instance ToJSON InstanceGroupModifyConfig where- toJSON InstanceGroupModifyConfig'{..}- = object- (catMaybes- [("InstanceCount" .=) <$> _igmcInstanceCount,- ("EC2InstanceIdsToTerminate" .=) <$>- _igmcEC2InstanceIdsToTerminate,- ("ShrinkPolicy" .=) <$> _igmcShrinkPolicy,- Just ("InstanceGroupId" .= _igmcInstanceGroupId)])---- | The status change reason details for the instance group.------------ /See:/ 'instanceGroupStateChangeReason' smart constructor.-data InstanceGroupStateChangeReason = InstanceGroupStateChangeReason'- { _igscrCode :: !(Maybe InstanceGroupStateChangeReasonCode)- , _igscrMessage :: !(Maybe Text)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroupStateChangeReason' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'igscrCode' - The programmable code for the state change reason.------ * 'igscrMessage' - The status change reason description.-instanceGroupStateChangeReason- :: InstanceGroupStateChangeReason-instanceGroupStateChangeReason =- InstanceGroupStateChangeReason'- { _igscrCode = Nothing- , _igscrMessage = Nothing- }---- | The programmable code for the state change reason.-igscrCode :: Lens' InstanceGroupStateChangeReason (Maybe InstanceGroupStateChangeReasonCode)-igscrCode = lens _igscrCode (\ s a -> s{_igscrCode = a});---- | The status change reason description.-igscrMessage :: Lens' InstanceGroupStateChangeReason (Maybe Text)-igscrMessage = lens _igscrMessage (\ s a -> s{_igscrMessage = a});--instance FromJSON InstanceGroupStateChangeReason- where- parseJSON- = withObject "InstanceGroupStateChangeReason"- (\ x ->- InstanceGroupStateChangeReason' <$>- (x .:? "Code") <*> (x .:? "Message"))--instance Hashable InstanceGroupStateChangeReason--instance NFData InstanceGroupStateChangeReason---- | The details of the instance group status.------------ /See:/ 'instanceGroupStatus' smart constructor.-data InstanceGroupStatus = InstanceGroupStatus'- { _igsState :: !(Maybe InstanceGroupState)- , _igsStateChangeReason :: !(Maybe InstanceGroupStateChangeReason)- , _igsTimeline :: !(Maybe InstanceGroupTimeline)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroupStatus' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'igsState' - The current state of the instance group.------ * 'igsStateChangeReason' - The status change reason details for the instance group.------ * 'igsTimeline' - The timeline of the instance group status over time.-instanceGroupStatus- :: InstanceGroupStatus-instanceGroupStatus =- InstanceGroupStatus'- { _igsState = Nothing- , _igsStateChangeReason = Nothing- , _igsTimeline = Nothing- }---- | The current state of the instance group.-igsState :: Lens' InstanceGroupStatus (Maybe InstanceGroupState)-igsState = lens _igsState (\ s a -> s{_igsState = a});---- | The status change reason details for the instance group.-igsStateChangeReason :: Lens' InstanceGroupStatus (Maybe InstanceGroupStateChangeReason)-igsStateChangeReason = lens _igsStateChangeReason (\ s a -> s{_igsStateChangeReason = a});---- | The timeline of the instance group status over time.-igsTimeline :: Lens' InstanceGroupStatus (Maybe InstanceGroupTimeline)-igsTimeline = lens _igsTimeline (\ s a -> s{_igsTimeline = a});--instance FromJSON InstanceGroupStatus where- parseJSON- = withObject "InstanceGroupStatus"- (\ x ->- InstanceGroupStatus' <$>- (x .:? "State") <*> (x .:? "StateChangeReason") <*>- (x .:? "Timeline"))--instance Hashable InstanceGroupStatus--instance NFData InstanceGroupStatus---- | The timeline of the instance group lifecycle.------------ /See:/ 'instanceGroupTimeline' smart constructor.-data InstanceGroupTimeline = InstanceGroupTimeline'- { _igtReadyDateTime :: !(Maybe POSIX)- , _igtCreationDateTime :: !(Maybe POSIX)- , _igtEndDateTime :: !(Maybe POSIX)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceGroupTimeline' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'igtReadyDateTime' - The date and time when the instance group became ready to perform tasks.------ * 'igtCreationDateTime' - The creation date and time of the instance group.------ * 'igtEndDateTime' - The date and time when the instance group terminated.-instanceGroupTimeline- :: InstanceGroupTimeline-instanceGroupTimeline =- InstanceGroupTimeline'- { _igtReadyDateTime = Nothing- , _igtCreationDateTime = Nothing- , _igtEndDateTime = Nothing- }---- | The date and time when the instance group became ready to perform tasks.-igtReadyDateTime :: Lens' InstanceGroupTimeline (Maybe UTCTime)-igtReadyDateTime = lens _igtReadyDateTime (\ s a -> s{_igtReadyDateTime = a}) . mapping _Time;---- | The creation date and time of the instance group.-igtCreationDateTime :: Lens' InstanceGroupTimeline (Maybe UTCTime)-igtCreationDateTime = lens _igtCreationDateTime (\ s a -> s{_igtCreationDateTime = a}) . mapping _Time;---- | The date and time when the instance group terminated.-igtEndDateTime :: Lens' InstanceGroupTimeline (Maybe UTCTime)-igtEndDateTime = lens _igtEndDateTime (\ s a -> s{_igtEndDateTime = a}) . mapping _Time;--instance FromJSON InstanceGroupTimeline where- parseJSON- = withObject "InstanceGroupTimeline"- (\ x ->- InstanceGroupTimeline' <$>- (x .:? "ReadyDateTime") <*>- (x .:? "CreationDateTime")- <*> (x .:? "EndDateTime"))--instance Hashable InstanceGroupTimeline--instance NFData InstanceGroupTimeline---- | Custom policy for requesting termination protection or termination of specific instances when shrinking an instance group.------------ /See:/ 'instanceResizePolicy' smart constructor.-data InstanceResizePolicy = InstanceResizePolicy'- { _irpInstancesToProtect :: !(Maybe [Text])- , _irpInstancesToTerminate :: !(Maybe [Text])- , _irpInstanceTerminationTimeout :: !(Maybe Int)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceResizePolicy' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'irpInstancesToProtect' - Specific list of instances to be protected when shrinking an instance group.------ * 'irpInstancesToTerminate' - Specific list of instances to be terminated when shrinking an instance group.------ * 'irpInstanceTerminationTimeout' - Decommissioning timeout override for the specific list of instances to be terminated.-instanceResizePolicy- :: InstanceResizePolicy-instanceResizePolicy =- InstanceResizePolicy'- { _irpInstancesToProtect = Nothing- , _irpInstancesToTerminate = Nothing- , _irpInstanceTerminationTimeout = Nothing- }---- | Specific list of instances to be protected when shrinking an instance group.-irpInstancesToProtect :: Lens' InstanceResizePolicy [Text]-irpInstancesToProtect = lens _irpInstancesToProtect (\ s a -> s{_irpInstancesToProtect = a}) . _Default . _Coerce;---- | Specific list of instances to be terminated when shrinking an instance group.-irpInstancesToTerminate :: Lens' InstanceResizePolicy [Text]-irpInstancesToTerminate = lens _irpInstancesToTerminate (\ s a -> s{_irpInstancesToTerminate = a}) . _Default . _Coerce;---- | Decommissioning timeout override for the specific list of instances to be terminated.-irpInstanceTerminationTimeout :: Lens' InstanceResizePolicy (Maybe Int)-irpInstanceTerminationTimeout = lens _irpInstanceTerminationTimeout (\ s a -> s{_irpInstanceTerminationTimeout = a});--instance FromJSON InstanceResizePolicy where- parseJSON- = withObject "InstanceResizePolicy"- (\ x ->- InstanceResizePolicy' <$>- (x .:? "InstancesToProtect" .!= mempty) <*>- (x .:? "InstancesToTerminate" .!= mempty)- <*> (x .:? "InstanceTerminationTimeout"))--instance Hashable InstanceResizePolicy--instance NFData InstanceResizePolicy--instance ToJSON InstanceResizePolicy where- toJSON InstanceResizePolicy'{..}- = object- (catMaybes- [("InstancesToProtect" .=) <$>- _irpInstancesToProtect,- ("InstancesToTerminate" .=) <$>- _irpInstancesToTerminate,- ("InstanceTerminationTimeout" .=) <$>- _irpInstanceTerminationTimeout])---- | The details of the status change reason for the instance.------------ /See:/ 'instanceStateChangeReason' smart constructor.-data InstanceStateChangeReason = InstanceStateChangeReason'- { _iscrCode :: !(Maybe InstanceStateChangeReasonCode)- , _iscrMessage :: !(Maybe Text)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceStateChangeReason' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'iscrCode' - The programmable code for the state change reason.------ * 'iscrMessage' - The status change reason description.-instanceStateChangeReason- :: InstanceStateChangeReason-instanceStateChangeReason =- InstanceStateChangeReason'- { _iscrCode = Nothing- , _iscrMessage = Nothing- }---- | The programmable code for the state change reason.-iscrCode :: Lens' InstanceStateChangeReason (Maybe InstanceStateChangeReasonCode)-iscrCode = lens _iscrCode (\ s a -> s{_iscrCode = a});---- | The status change reason description.-iscrMessage :: Lens' InstanceStateChangeReason (Maybe Text)-iscrMessage = lens _iscrMessage (\ s a -> s{_iscrMessage = a});--instance FromJSON InstanceStateChangeReason where- parseJSON- = withObject "InstanceStateChangeReason"- (\ x ->- InstanceStateChangeReason' <$>- (x .:? "Code") <*> (x .:? "Message"))--instance Hashable InstanceStateChangeReason--instance NFData InstanceStateChangeReason---- | The instance status details.------------ /See:/ 'instanceStatus' smart constructor.-data InstanceStatus = InstanceStatus'- { _isState :: !(Maybe InstanceState)- , _isStateChangeReason :: !(Maybe InstanceStateChangeReason)- , _isTimeline :: !(Maybe InstanceTimeline)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceStatus' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'isState' - The current state of the instance.------ * 'isStateChangeReason' - The details of the status change reason for the instance.------ * 'isTimeline' - The timeline of the instance status over time.-instanceStatus- :: InstanceStatus-instanceStatus =- InstanceStatus'- { _isState = Nothing- , _isStateChangeReason = Nothing- , _isTimeline = Nothing- }---- | The current state of the instance.-isState :: Lens' InstanceStatus (Maybe InstanceState)-isState = lens _isState (\ s a -> s{_isState = a});---- | The details of the status change reason for the instance.-isStateChangeReason :: Lens' InstanceStatus (Maybe InstanceStateChangeReason)-isStateChangeReason = lens _isStateChangeReason (\ s a -> s{_isStateChangeReason = a});---- | The timeline of the instance status over time.-isTimeline :: Lens' InstanceStatus (Maybe InstanceTimeline)-isTimeline = lens _isTimeline (\ s a -> s{_isTimeline = a});--instance FromJSON InstanceStatus where- parseJSON- = withObject "InstanceStatus"- (\ x ->- InstanceStatus' <$>- (x .:? "State") <*> (x .:? "StateChangeReason") <*>- (x .:? "Timeline"))--instance Hashable InstanceStatus--instance NFData InstanceStatus---- | The timeline of the instance lifecycle.------------ /See:/ 'instanceTimeline' smart constructor.-data InstanceTimeline = InstanceTimeline'- { _itReadyDateTime :: !(Maybe POSIX)- , _itCreationDateTime :: !(Maybe POSIX)- , _itEndDateTime :: !(Maybe POSIX)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'InstanceTimeline' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'itReadyDateTime' - The date and time when the instance was ready to perform tasks.------ * 'itCreationDateTime' - The creation date and time of the instance.------ * 'itEndDateTime' - The date and time when the instance was terminated.-instanceTimeline- :: InstanceTimeline-instanceTimeline =- InstanceTimeline'- { _itReadyDateTime = Nothing- , _itCreationDateTime = Nothing- , _itEndDateTime = Nothing- }---- | The date and time when the instance was ready to perform tasks.-itReadyDateTime :: Lens' InstanceTimeline (Maybe UTCTime)-itReadyDateTime = lens _itReadyDateTime (\ s a -> s{_itReadyDateTime = a}) . mapping _Time;---- | The creation date and time of the instance.-itCreationDateTime :: Lens' InstanceTimeline (Maybe UTCTime)-itCreationDateTime = lens _itCreationDateTime (\ s a -> s{_itCreationDateTime = a}) . mapping _Time;---- | The date and time when the instance was terminated.-itEndDateTime :: Lens' InstanceTimeline (Maybe UTCTime)-itEndDateTime = lens _itEndDateTime (\ s a -> s{_itEndDateTime = a}) . mapping _Time;--instance FromJSON InstanceTimeline where- parseJSON- = withObject "InstanceTimeline"- (\ x ->- InstanceTimeline' <$>- (x .:? "ReadyDateTime") <*>- (x .:? "CreationDateTime")- <*> (x .:? "EndDateTime"))--instance Hashable InstanceTimeline--instance NFData InstanceTimeline---- | A description of the Amazon EC2 instance running the job flow. A valid JobFlowInstancesConfig must contain at least InstanceGroups, which is the recommended configuration. However, a valid alternative is to have MasterInstanceType, SlaveInstanceType, and InstanceCount (all three must be present).------------ /See:/ 'jobFlowInstancesConfig' smart constructor.-data JobFlowInstancesConfig = JobFlowInstancesConfig'- { _jficEC2KeyName :: !(Maybe Text)- , _jficSlaveInstanceType :: !(Maybe Text)- , _jficInstanceCount :: !(Maybe Int)- , _jficEmrManagedSlaveSecurityGroup :: !(Maybe Text)- , _jficAdditionalSlaveSecurityGroups :: !(Maybe [Text])- , _jficHadoopVersion :: !(Maybe Text)- , _jficAdditionalMasterSecurityGroups :: !(Maybe [Text])- , _jficEmrManagedMasterSecurityGroup :: !(Maybe Text)- , _jficEC2SubnetId :: !(Maybe Text)- , _jficMasterInstanceType :: !(Maybe Text)- , _jficInstanceGroups :: !(Maybe [InstanceGroupConfig])- , _jficKeepJobFlowAliveWhenNoSteps :: !(Maybe Bool)- , _jficServiceAccessSecurityGroup :: !(Maybe Text)- , _jficTerminationProtected :: !(Maybe Bool)- , _jficPlacement :: !(Maybe PlacementType)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'JobFlowInstancesConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'jficEC2KeyName' - The name of the EC2 key pair that can be used to ssh to the master node as the user called "hadoop."------ * 'jficSlaveInstanceType' - The EC2 instance type of the slave nodes.------ * 'jficInstanceCount' - The number of EC2 instances used to execute the job flow.------ * 'jficEmrManagedSlaveSecurityGroup' - The identifier of the Amazon EC2 security group for the slave nodes.------ * 'jficAdditionalSlaveSecurityGroups' - A list of additional Amazon EC2 security group IDs for the slave nodes.------ * 'jficHadoopVersion' - The Hadoop version for the job flow. Valid inputs are "0.18" (deprecated), "0.20" (deprecated), "0.20.205" (deprecated), "1.0.3", "2.2.0", or "2.4.0". If you do not set this value, the default of 0.18 is used, unless the AmiVersion parameter is set in the RunJobFlow call, in which case the default version of Hadoop for that AMI version is used.------ * 'jficAdditionalMasterSecurityGroups' - A list of additional Amazon EC2 security group IDs for the master node.------ * 'jficEmrManagedMasterSecurityGroup' - The identifier of the Amazon EC2 security group for the master node.------ * 'jficEC2SubnetId' - To launch the job flow in Amazon Virtual Private Cloud (Amazon VPC), set this parameter to the identifier of the Amazon VPC subnet where you want the job flow to launch. If you do not specify this value, the job flow is launched in the normal Amazon Web Services cloud, outside of an Amazon VPC. Amazon VPC currently does not support cluster compute quadruple extra large (cc1.4xlarge) instances. Thus you cannot specify the cc1.4xlarge instance type for nodes of a job flow launched in a Amazon VPC.------ * 'jficMasterInstanceType' - The EC2 instance type of the master node.------ * 'jficInstanceGroups' - Configuration for the job flow's instance groups.------ * 'jficKeepJobFlowAliveWhenNoSteps' - Specifies whether the job flow should be kept alive after completing all steps.------ * 'jficServiceAccessSecurityGroup' - The identifier of the Amazon EC2 security group for the Amazon EMR service to access clusters in VPC private subnets.------ * 'jficTerminationProtected' - Specifies whether to lock the job flow to prevent the Amazon EC2 instances from being terminated by API call, user intervention, or in the event of a job flow error.------ * 'jficPlacement' - The Availability Zone the job flow will run in.-jobFlowInstancesConfig- :: JobFlowInstancesConfig-jobFlowInstancesConfig =- JobFlowInstancesConfig'- { _jficEC2KeyName = Nothing- , _jficSlaveInstanceType = Nothing- , _jficInstanceCount = Nothing- , _jficEmrManagedSlaveSecurityGroup = Nothing- , _jficAdditionalSlaveSecurityGroups = Nothing- , _jficHadoopVersion = Nothing- , _jficAdditionalMasterSecurityGroups = Nothing- , _jficEmrManagedMasterSecurityGroup = Nothing- , _jficEC2SubnetId = Nothing- , _jficMasterInstanceType = Nothing- , _jficInstanceGroups = Nothing- , _jficKeepJobFlowAliveWhenNoSteps = Nothing- , _jficServiceAccessSecurityGroup = Nothing- , _jficTerminationProtected = Nothing- , _jficPlacement = Nothing- }---- | The name of the EC2 key pair that can be used to ssh to the master node as the user called "hadoop."-jficEC2KeyName :: Lens' JobFlowInstancesConfig (Maybe Text)-jficEC2KeyName = lens _jficEC2KeyName (\ s a -> s{_jficEC2KeyName = a});---- | The EC2 instance type of the slave nodes.-jficSlaveInstanceType :: Lens' JobFlowInstancesConfig (Maybe Text)-jficSlaveInstanceType = lens _jficSlaveInstanceType (\ s a -> s{_jficSlaveInstanceType = a});---- | The number of EC2 instances used to execute the job flow.-jficInstanceCount :: Lens' JobFlowInstancesConfig (Maybe Int)-jficInstanceCount = lens _jficInstanceCount (\ s a -> s{_jficInstanceCount = a});---- | The identifier of the Amazon EC2 security group for the slave nodes.-jficEmrManagedSlaveSecurityGroup :: Lens' JobFlowInstancesConfig (Maybe Text)-jficEmrManagedSlaveSecurityGroup = lens _jficEmrManagedSlaveSecurityGroup (\ s a -> s{_jficEmrManagedSlaveSecurityGroup = a});---- | A list of additional Amazon EC2 security group IDs for the slave nodes.-jficAdditionalSlaveSecurityGroups :: Lens' JobFlowInstancesConfig [Text]-jficAdditionalSlaveSecurityGroups = lens _jficAdditionalSlaveSecurityGroups (\ s a -> s{_jficAdditionalSlaveSecurityGroups = a}) . _Default . _Coerce;---- | The Hadoop version for the job flow. Valid inputs are "0.18" (deprecated), "0.20" (deprecated), "0.20.205" (deprecated), "1.0.3", "2.2.0", or "2.4.0". If you do not set this value, the default of 0.18 is used, unless the AmiVersion parameter is set in the RunJobFlow call, in which case the default version of Hadoop for that AMI version is used.-jficHadoopVersion :: Lens' JobFlowInstancesConfig (Maybe Text)-jficHadoopVersion = lens _jficHadoopVersion (\ s a -> s{_jficHadoopVersion = a});---- | A list of additional Amazon EC2 security group IDs for the master node.-jficAdditionalMasterSecurityGroups :: Lens' JobFlowInstancesConfig [Text]-jficAdditionalMasterSecurityGroups = lens _jficAdditionalMasterSecurityGroups (\ s a -> s{_jficAdditionalMasterSecurityGroups = a}) . _Default . _Coerce;---- | The identifier of the Amazon EC2 security group for the master node.-jficEmrManagedMasterSecurityGroup :: Lens' JobFlowInstancesConfig (Maybe Text)-jficEmrManagedMasterSecurityGroup = lens _jficEmrManagedMasterSecurityGroup (\ s a -> s{_jficEmrManagedMasterSecurityGroup = a});---- | To launch the job flow in Amazon Virtual Private Cloud (Amazon VPC), set this parameter to the identifier of the Amazon VPC subnet where you want the job flow to launch. If you do not specify this value, the job flow is launched in the normal Amazon Web Services cloud, outside of an Amazon VPC. Amazon VPC currently does not support cluster compute quadruple extra large (cc1.4xlarge) instances. Thus you cannot specify the cc1.4xlarge instance type for nodes of a job flow launched in a Amazon VPC.-jficEC2SubnetId :: Lens' JobFlowInstancesConfig (Maybe Text)-jficEC2SubnetId = lens _jficEC2SubnetId (\ s a -> s{_jficEC2SubnetId = a});---- | The EC2 instance type of the master node.-jficMasterInstanceType :: Lens' JobFlowInstancesConfig (Maybe Text)-jficMasterInstanceType = lens _jficMasterInstanceType (\ s a -> s{_jficMasterInstanceType = a});---- | Configuration for the job flow's instance groups.-jficInstanceGroups :: Lens' JobFlowInstancesConfig [InstanceGroupConfig]-jficInstanceGroups = lens _jficInstanceGroups (\ s a -> s{_jficInstanceGroups = a}) . _Default . _Coerce;---- | Specifies whether the job flow should be kept alive after completing all steps.-jficKeepJobFlowAliveWhenNoSteps :: Lens' JobFlowInstancesConfig (Maybe Bool)-jficKeepJobFlowAliveWhenNoSteps = lens _jficKeepJobFlowAliveWhenNoSteps (\ s a -> s{_jficKeepJobFlowAliveWhenNoSteps = a});---- | The identifier of the Amazon EC2 security group for the Amazon EMR service to access clusters in VPC private subnets.-jficServiceAccessSecurityGroup :: Lens' JobFlowInstancesConfig (Maybe Text)-jficServiceAccessSecurityGroup = lens _jficServiceAccessSecurityGroup (\ s a -> s{_jficServiceAccessSecurityGroup = a});---- | Specifies whether to lock the job flow to prevent the Amazon EC2 instances from being terminated by API call, user intervention, or in the event of a job flow error.-jficTerminationProtected :: Lens' JobFlowInstancesConfig (Maybe Bool)-jficTerminationProtected = lens _jficTerminationProtected (\ s a -> s{_jficTerminationProtected = a});---- | The Availability Zone the job flow will run in.-jficPlacement :: Lens' JobFlowInstancesConfig (Maybe PlacementType)-jficPlacement = lens _jficPlacement (\ s a -> s{_jficPlacement = a});--instance Hashable JobFlowInstancesConfig--instance NFData JobFlowInstancesConfig--instance ToJSON JobFlowInstancesConfig where- toJSON JobFlowInstancesConfig'{..}- = object- (catMaybes- [("Ec2KeyName" .=) <$> _jficEC2KeyName,- ("SlaveInstanceType" .=) <$> _jficSlaveInstanceType,- ("InstanceCount" .=) <$> _jficInstanceCount,- ("EmrManagedSlaveSecurityGroup" .=) <$>- _jficEmrManagedSlaveSecurityGroup,- ("AdditionalSlaveSecurityGroups" .=) <$>- _jficAdditionalSlaveSecurityGroups,- ("HadoopVersion" .=) <$> _jficHadoopVersion,- ("AdditionalMasterSecurityGroups" .=) <$>- _jficAdditionalMasterSecurityGroups,- ("EmrManagedMasterSecurityGroup" .=) <$>- _jficEmrManagedMasterSecurityGroup,- ("Ec2SubnetId" .=) <$> _jficEC2SubnetId,- ("MasterInstanceType" .=) <$>- _jficMasterInstanceType,- ("InstanceGroups" .=) <$> _jficInstanceGroups,- ("KeepJobFlowAliveWhenNoSteps" .=) <$>- _jficKeepJobFlowAliveWhenNoSteps,- ("ServiceAccessSecurityGroup" .=) <$>- _jficServiceAccessSecurityGroup,- ("TerminationProtected" .=) <$>- _jficTerminationProtected,- ("Placement" .=) <$> _jficPlacement])---- | A key value pair.------------ /See:/ 'keyValue' smart constructor.-data KeyValue = KeyValue'- { _kvValue :: !(Maybe Text)- , _kvKey :: !(Maybe Text)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'KeyValue' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'kvValue' - The value part of the identified key.------ * 'kvKey' - The unique identifier of a key value pair.-keyValue- :: KeyValue-keyValue =- KeyValue'- { _kvValue = Nothing- , _kvKey = Nothing- }---- | The value part of the identified key.-kvValue :: Lens' KeyValue (Maybe Text)-kvValue = lens _kvValue (\ s a -> s{_kvValue = a});---- | The unique identifier of a key value pair.-kvKey :: Lens' KeyValue (Maybe Text)-kvKey = lens _kvKey (\ s a -> s{_kvKey = a});--instance Hashable KeyValue--instance NFData KeyValue--instance ToJSON KeyValue where- toJSON KeyValue'{..}- = object- (catMaybes- [("Value" .=) <$> _kvValue, ("Key" .=) <$> _kvKey])---- | A CloudWatch dimension, which is specified using a @Key@ (known as a @Name@ in CloudWatch), Value pair. By default, Amazon EMR uses one dimension whose @Key@ is @JobFlowID@ and @Value@ is a variable representing the cluster ID, which is @> {emr:cluster_id}@ . This enables the rule to bootstrap when the cluster ID becomes available, and also enables a single automatic scaling policy to be reused for multiple clusters and instance groups.------------ /See:/ 'metricDimension' smart constructor.-data MetricDimension = MetricDimension'- { _mdValue :: !(Maybe Text)- , _mdKey :: !(Maybe Text)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'MetricDimension' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'mdValue' - The dimension value.------ * 'mdKey' - The dimension name.-metricDimension- :: MetricDimension-metricDimension =- MetricDimension'- { _mdValue = Nothing- , _mdKey = Nothing- }---- | The dimension value.-mdValue :: Lens' MetricDimension (Maybe Text)-mdValue = lens _mdValue (\ s a -> s{_mdValue = a});---- | The dimension name.-mdKey :: Lens' MetricDimension (Maybe Text)-mdKey = lens _mdKey (\ s a -> s{_mdKey = a});--instance FromJSON MetricDimension where- parseJSON- = withObject "MetricDimension"- (\ x ->- MetricDimension' <$>- (x .:? "Value") <*> (x .:? "Key"))--instance Hashable MetricDimension--instance NFData MetricDimension--instance ToJSON MetricDimension where- toJSON MetricDimension'{..}- = object- (catMaybes- [("Value" .=) <$> _mdValue, ("Key" .=) <$> _mdKey])---- | The Amazon EC2 location for the job flow.------------ /See:/ 'placementType' smart constructor.-newtype PlacementType = PlacementType'- { _ptAvailabilityZone :: Text- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'PlacementType' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ptAvailabilityZone' - The Amazon EC2 Availability Zone for the job flow.-placementType- :: Text -- ^ 'ptAvailabilityZone'- -> PlacementType-placementType pAvailabilityZone_ =- PlacementType'- { _ptAvailabilityZone = pAvailabilityZone_- }---- | The Amazon EC2 Availability Zone for the job flow.-ptAvailabilityZone :: Lens' PlacementType Text-ptAvailabilityZone = lens _ptAvailabilityZone (\ s a -> s{_ptAvailabilityZone = a});--instance Hashable PlacementType--instance NFData PlacementType--instance ToJSON PlacementType where- toJSON PlacementType'{..}- = object- (catMaybes- [Just ("AvailabilityZone" .= _ptAvailabilityZone)])---- | The type of adjustment the automatic scaling activity makes when triggered, and the periodicity of the adjustment.------------ /See:/ 'scalingAction' smart constructor.-data ScalingAction = ScalingAction'- { _saMarket :: !(Maybe MarketType)- , _saSimpleScalingPolicyConfiguration :: !SimpleScalingPolicyConfiguration- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'ScalingAction' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'saMarket' - Not available for instance groups. Instance groups use the market type specified for the group.------ * 'saSimpleScalingPolicyConfiguration' - The type of adjustment the automatic scaling activity makes when triggered, and the periodicity of the adjustment.-scalingAction- :: SimpleScalingPolicyConfiguration -- ^ 'saSimpleScalingPolicyConfiguration'- -> ScalingAction-scalingAction pSimpleScalingPolicyConfiguration_ =- ScalingAction'- { _saMarket = Nothing- , _saSimpleScalingPolicyConfiguration = pSimpleScalingPolicyConfiguration_- }---- | Not available for instance groups. Instance groups use the market type specified for the group.-saMarket :: Lens' ScalingAction (Maybe MarketType)-saMarket = lens _saMarket (\ s a -> s{_saMarket = a});---- | The type of adjustment the automatic scaling activity makes when triggered, and the periodicity of the adjustment.-saSimpleScalingPolicyConfiguration :: Lens' ScalingAction SimpleScalingPolicyConfiguration-saSimpleScalingPolicyConfiguration = lens _saSimpleScalingPolicyConfiguration (\ s a -> s{_saSimpleScalingPolicyConfiguration = a});--instance FromJSON ScalingAction where- parseJSON- = withObject "ScalingAction"- (\ x ->- ScalingAction' <$>- (x .:? "Market") <*>- (x .: "SimpleScalingPolicyConfiguration"))--instance Hashable ScalingAction--instance NFData ScalingAction--instance ToJSON ScalingAction where- toJSON ScalingAction'{..}- = object- (catMaybes- [("Market" .=) <$> _saMarket,- Just- ("SimpleScalingPolicyConfiguration" .=- _saSimpleScalingPolicyConfiguration)])---- | The upper and lower EC2 instance limits for an automatic scaling policy. Automatic scaling activities triggered by automatic scaling rules will not cause an instance group to grow above or below these limits.------------ /See:/ 'scalingConstraints' smart constructor.-data ScalingConstraints = ScalingConstraints'- { _scMinCapacity :: !Int- , _scMaxCapacity :: !Int- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'ScalingConstraints' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'scMinCapacity' - The lower boundary of EC2 instances in an instance group below which scaling activities are not allowed to shrink. Scale-in activities will not terminate instances below this boundary.------ * 'scMaxCapacity' - The upper boundary of EC2 instances in an instance group beyond which scaling activities are not allowed to grow. Scale-out activities will not add instances beyond this boundary.-scalingConstraints- :: Int -- ^ 'scMinCapacity'- -> Int -- ^ 'scMaxCapacity'- -> ScalingConstraints-scalingConstraints pMinCapacity_ pMaxCapacity_ =- ScalingConstraints'- { _scMinCapacity = pMinCapacity_- , _scMaxCapacity = pMaxCapacity_- }---- | The lower boundary of EC2 instances in an instance group below which scaling activities are not allowed to shrink. Scale-in activities will not terminate instances below this boundary.-scMinCapacity :: Lens' ScalingConstraints Int-scMinCapacity = lens _scMinCapacity (\ s a -> s{_scMinCapacity = a});---- | The upper boundary of EC2 instances in an instance group beyond which scaling activities are not allowed to grow. Scale-out activities will not add instances beyond this boundary.-scMaxCapacity :: Lens' ScalingConstraints Int-scMaxCapacity = lens _scMaxCapacity (\ s a -> s{_scMaxCapacity = a});--instance FromJSON ScalingConstraints where- parseJSON- = withObject "ScalingConstraints"- (\ x ->- ScalingConstraints' <$>- (x .: "MinCapacity") <*> (x .: "MaxCapacity"))--instance Hashable ScalingConstraints--instance NFData ScalingConstraints--instance ToJSON ScalingConstraints where- toJSON ScalingConstraints'{..}- = object- (catMaybes- [Just ("MinCapacity" .= _scMinCapacity),- Just ("MaxCapacity" .= _scMaxCapacity)])---- | A scale-in or scale-out rule that defines scaling activity, including the CloudWatch metric alarm that triggers activity, how EC2 instances are added or removed, and the periodicity of adjustments. The automatic scaling policy for an instance group can comprise one or more automatic scaling rules.------------ /See:/ 'scalingRule' smart constructor.-data ScalingRule = ScalingRule'- { _srDescription :: !(Maybe Text)- , _srName :: !Text- , _srAction :: !ScalingAction- , _srTrigger :: !ScalingTrigger- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'ScalingRule' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'srDescription' - A friendly, more verbose description of the automatic scaling rule.------ * 'srName' - The name used to identify an automatic scaling rule. Rule names must be unique within a scaling policy.------ * 'srAction' - The conditions that trigger an automatic scaling activity.------ * 'srTrigger' - The CloudWatch alarm definition that determines when automatic scaling activity is triggered.-scalingRule- :: Text -- ^ 'srName'- -> ScalingAction -- ^ 'srAction'- -> ScalingTrigger -- ^ 'srTrigger'- -> ScalingRule-scalingRule pName_ pAction_ pTrigger_ =- ScalingRule'- { _srDescription = Nothing- , _srName = pName_- , _srAction = pAction_- , _srTrigger = pTrigger_- }---- | A friendly, more verbose description of the automatic scaling rule.-srDescription :: Lens' ScalingRule (Maybe Text)-srDescription = lens _srDescription (\ s a -> s{_srDescription = a});---- | The name used to identify an automatic scaling rule. Rule names must be unique within a scaling policy.-srName :: Lens' ScalingRule Text-srName = lens _srName (\ s a -> s{_srName = a});---- | The conditions that trigger an automatic scaling activity.-srAction :: Lens' ScalingRule ScalingAction-srAction = lens _srAction (\ s a -> s{_srAction = a});---- | The CloudWatch alarm definition that determines when automatic scaling activity is triggered.-srTrigger :: Lens' ScalingRule ScalingTrigger-srTrigger = lens _srTrigger (\ s a -> s{_srTrigger = a});--instance FromJSON ScalingRule where- parseJSON- = withObject "ScalingRule"- (\ x ->- ScalingRule' <$>- (x .:? "Description") <*> (x .: "Name") <*>- (x .: "Action")- <*> (x .: "Trigger"))--instance Hashable ScalingRule--instance NFData ScalingRule--instance ToJSON ScalingRule where- toJSON ScalingRule'{..}- = object- (catMaybes- [("Description" .=) <$> _srDescription,- Just ("Name" .= _srName),- Just ("Action" .= _srAction),- Just ("Trigger" .= _srTrigger)])---- | The conditions that trigger an automatic scaling activity.------------ /See:/ 'scalingTrigger' smart constructor.-newtype ScalingTrigger = ScalingTrigger'- { _stCloudWatchAlarmDefinition :: CloudWatchAlarmDefinition- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'ScalingTrigger' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'stCloudWatchAlarmDefinition' - The definition of a CloudWatch metric alarm. When the defined alarm conditions are met along with other trigger parameters, scaling activity begins.-scalingTrigger- :: CloudWatchAlarmDefinition -- ^ 'stCloudWatchAlarmDefinition'- -> ScalingTrigger-scalingTrigger pCloudWatchAlarmDefinition_ =- ScalingTrigger'- { _stCloudWatchAlarmDefinition = pCloudWatchAlarmDefinition_- }---- | The definition of a CloudWatch metric alarm. When the defined alarm conditions are met along with other trigger parameters, scaling activity begins.-stCloudWatchAlarmDefinition :: Lens' ScalingTrigger CloudWatchAlarmDefinition-stCloudWatchAlarmDefinition = lens _stCloudWatchAlarmDefinition (\ s a -> s{_stCloudWatchAlarmDefinition = a});--instance FromJSON ScalingTrigger where- parseJSON- = withObject "ScalingTrigger"- (\ x ->- ScalingTrigger' <$>- (x .: "CloudWatchAlarmDefinition"))--instance Hashable ScalingTrigger--instance NFData ScalingTrigger--instance ToJSON ScalingTrigger where- toJSON ScalingTrigger'{..}- = object- (catMaybes- [Just- ("CloudWatchAlarmDefinition" .=- _stCloudWatchAlarmDefinition)])---- | Configuration of the script to run during a bootstrap action.------------ /See:/ 'scriptBootstrapActionConfig' smart constructor.-data ScriptBootstrapActionConfig = ScriptBootstrapActionConfig'- { _sbacArgs :: !(Maybe [Text])- , _sbacPath :: !Text- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'ScriptBootstrapActionConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'sbacArgs' - A list of command line arguments to pass to the bootstrap action script.------ * 'sbacPath' - Location of the script to run during a bootstrap action. Can be either a location in Amazon S3 or on a local file system.-scriptBootstrapActionConfig- :: Text -- ^ 'sbacPath'- -> ScriptBootstrapActionConfig-scriptBootstrapActionConfig pPath_ =- ScriptBootstrapActionConfig'- { _sbacArgs = Nothing- , _sbacPath = pPath_- }---- | A list of command line arguments to pass to the bootstrap action script.-sbacArgs :: Lens' ScriptBootstrapActionConfig [Text]-sbacArgs = lens _sbacArgs (\ s a -> s{_sbacArgs = a}) . _Default . _Coerce;---- | Location of the script to run during a bootstrap action. Can be either a location in Amazon S3 or on a local file system.-sbacPath :: Lens' ScriptBootstrapActionConfig Text-sbacPath = lens _sbacPath (\ s a -> s{_sbacPath = a});--instance Hashable ScriptBootstrapActionConfig--instance NFData ScriptBootstrapActionConfig--instance ToJSON ScriptBootstrapActionConfig where- toJSON ScriptBootstrapActionConfig'{..}- = object- (catMaybes- [("Args" .=) <$> _sbacArgs,- Just ("Path" .= _sbacPath)])---- | The creation date and time, and name, of a security configuration.------------ /See:/ 'securityConfigurationSummary' smart constructor.-data SecurityConfigurationSummary = SecurityConfigurationSummary'- { _scsName :: !(Maybe Text)- , _scsCreationDateTime :: !(Maybe POSIX)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'SecurityConfigurationSummary' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'scsName' - The name of the security configuration.------ * 'scsCreationDateTime' - The date and time the security configuration was created.-securityConfigurationSummary- :: SecurityConfigurationSummary-securityConfigurationSummary =- SecurityConfigurationSummary'- { _scsName = Nothing- , _scsCreationDateTime = Nothing- }---- | The name of the security configuration.-scsName :: Lens' SecurityConfigurationSummary (Maybe Text)-scsName = lens _scsName (\ s a -> s{_scsName = a});---- | The date and time the security configuration was created.-scsCreationDateTime :: Lens' SecurityConfigurationSummary (Maybe UTCTime)-scsCreationDateTime = lens _scsCreationDateTime (\ s a -> s{_scsCreationDateTime = a}) . mapping _Time;--instance FromJSON SecurityConfigurationSummary where- parseJSON- = withObject "SecurityConfigurationSummary"- (\ x ->- SecurityConfigurationSummary' <$>- (x .:? "Name") <*> (x .:? "CreationDateTime"))--instance Hashable SecurityConfigurationSummary--instance NFData SecurityConfigurationSummary---- | Policy for customizing shrink operations. Allows configuration of decommissioning timeout and targeted instance shrinking.------------ /See:/ 'shrinkPolicy' smart constructor.-data ShrinkPolicy = ShrinkPolicy'- { _spDecommissionTimeout :: !(Maybe Int)- , _spInstanceResizePolicy :: !(Maybe InstanceResizePolicy)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'ShrinkPolicy' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'spDecommissionTimeout' - The desired timeout for decommissioning an instance. Overrides the default YARN decommissioning timeout.------ * 'spInstanceResizePolicy' - Custom policy for requesting termination protection or termination of specific instances when shrinking an instance group.-shrinkPolicy- :: ShrinkPolicy-shrinkPolicy =- ShrinkPolicy'- { _spDecommissionTimeout = Nothing- , _spInstanceResizePolicy = Nothing- }---- | The desired timeout for decommissioning an instance. Overrides the default YARN decommissioning timeout.-spDecommissionTimeout :: Lens' ShrinkPolicy (Maybe Int)-spDecommissionTimeout = lens _spDecommissionTimeout (\ s a -> s{_spDecommissionTimeout = a});---- | Custom policy for requesting termination protection or termination of specific instances when shrinking an instance group.-spInstanceResizePolicy :: Lens' ShrinkPolicy (Maybe InstanceResizePolicy)-spInstanceResizePolicy = lens _spInstanceResizePolicy (\ s a -> s{_spInstanceResizePolicy = a});--instance FromJSON ShrinkPolicy where- parseJSON- = withObject "ShrinkPolicy"- (\ x ->- ShrinkPolicy' <$>- (x .:? "DecommissionTimeout") <*>- (x .:? "InstanceResizePolicy"))--instance Hashable ShrinkPolicy--instance NFData ShrinkPolicy--instance ToJSON ShrinkPolicy where- toJSON ShrinkPolicy'{..}- = object- (catMaybes- [("DecommissionTimeout" .=) <$>- _spDecommissionTimeout,- ("InstanceResizePolicy" .=) <$>- _spInstanceResizePolicy])---- | An automatic scaling configuration, which describes how the policy adds or removes instances, the cooldown period, and the number of EC2 instances that will be added each time the CloudWatch metric alarm condition is satisfied.------------ /See:/ 'simpleScalingPolicyConfiguration' smart constructor.-data SimpleScalingPolicyConfiguration = SimpleScalingPolicyConfiguration'- { _sspcAdjustmentType :: !(Maybe AdjustmentType)- , _sspcCoolDown :: !(Maybe Int)- , _sspcScalingAdjustment :: !Int- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'SimpleScalingPolicyConfiguration' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'sspcAdjustmentType' - The way in which EC2 instances are added (if @ScalingAdjustment@ is a positive number) or terminated (if @ScalingAdjustment@ is a negative number) each time the scaling activity is triggered. @CHANGE_IN_CAPACITY@ is the default. @CHANGE_IN_CAPACITY@ indicates that the EC2 instance count increments or decrements by @ScalingAdjustment@ , which should be expressed as an integer. @PERCENT_CHANGE_IN_CAPACITY@ indicates the instance count increments or decrements by the percentage specified by @ScalingAdjustment@ , which should be expressed as a decimal, for example, 0.20 indicates an increase in 20% increments of cluster capacity. @EXACT_CAPACITY@ indicates the scaling activity results in an instance group with the number of EC2 instances specified by @ScalingAdjustment@ , which should be expressed as a positive integer.------ * 'sspcCoolDown' - The amount of time, in seconds, after a scaling activity completes before any further trigger-related scaling activities can start. The default value is 0.------ * 'sspcScalingAdjustment' - The amount by which to scale in or scale out, based on the specified @AdjustmentType@ . A positive value adds to the instance group's EC2 instance count while a negative number removes instances. If @AdjustmentType@ is set to @EXACT_CAPACITY@ , the number should only be a positive integer. If @AdjustmentType@ is set to @PERCENT_CHANGE_IN_CAPACITY@ , the value should express the percentage as a decimal. For example, -0.20 indicates a decrease in 20% increments of cluster capacity.-simpleScalingPolicyConfiguration- :: Int -- ^ 'sspcScalingAdjustment'- -> SimpleScalingPolicyConfiguration-simpleScalingPolicyConfiguration pScalingAdjustment_ =- SimpleScalingPolicyConfiguration'- { _sspcAdjustmentType = Nothing- , _sspcCoolDown = Nothing- , _sspcScalingAdjustment = pScalingAdjustment_- }---- | The way in which EC2 instances are added (if @ScalingAdjustment@ is a positive number) or terminated (if @ScalingAdjustment@ is a negative number) each time the scaling activity is triggered. @CHANGE_IN_CAPACITY@ is the default. @CHANGE_IN_CAPACITY@ indicates that the EC2 instance count increments or decrements by @ScalingAdjustment@ , which should be expressed as an integer. @PERCENT_CHANGE_IN_CAPACITY@ indicates the instance count increments or decrements by the percentage specified by @ScalingAdjustment@ , which should be expressed as a decimal, for example, 0.20 indicates an increase in 20% increments of cluster capacity. @EXACT_CAPACITY@ indicates the scaling activity results in an instance group with the number of EC2 instances specified by @ScalingAdjustment@ , which should be expressed as a positive integer.-sspcAdjustmentType :: Lens' SimpleScalingPolicyConfiguration (Maybe AdjustmentType)-sspcAdjustmentType = lens _sspcAdjustmentType (\ s a -> s{_sspcAdjustmentType = a});---- | The amount of time, in seconds, after a scaling activity completes before any further trigger-related scaling activities can start. The default value is 0.-sspcCoolDown :: Lens' SimpleScalingPolicyConfiguration (Maybe Int)-sspcCoolDown = lens _sspcCoolDown (\ s a -> s{_sspcCoolDown = a});---- | The amount by which to scale in or scale out, based on the specified @AdjustmentType@ . A positive value adds to the instance group's EC2 instance count while a negative number removes instances. If @AdjustmentType@ is set to @EXACT_CAPACITY@ , the number should only be a positive integer. If @AdjustmentType@ is set to @PERCENT_CHANGE_IN_CAPACITY@ , the value should express the percentage as a decimal. For example, -0.20 indicates a decrease in 20% increments of cluster capacity.-sspcScalingAdjustment :: Lens' SimpleScalingPolicyConfiguration Int-sspcScalingAdjustment = lens _sspcScalingAdjustment (\ s a -> s{_sspcScalingAdjustment = a});--instance FromJSON SimpleScalingPolicyConfiguration- where- parseJSON- = withObject "SimpleScalingPolicyConfiguration"- (\ x ->- SimpleScalingPolicyConfiguration' <$>- (x .:? "AdjustmentType") <*> (x .:? "CoolDown") <*>- (x .: "ScalingAdjustment"))--instance Hashable SimpleScalingPolicyConfiguration--instance NFData SimpleScalingPolicyConfiguration--instance ToJSON SimpleScalingPolicyConfiguration- where- toJSON SimpleScalingPolicyConfiguration'{..}- = object- (catMaybes- [("AdjustmentType" .=) <$> _sspcAdjustmentType,- ("CoolDown" .=) <$> _sspcCoolDown,- Just- ("ScalingAdjustment" .= _sspcScalingAdjustment)])---- | This represents a step in a cluster.------------ /See:/ 'step' smart constructor.-data Step = Step'- { _sStatus :: !(Maybe StepStatus)- , _sActionOnFailure :: !(Maybe ActionOnFailure)- , _sConfig :: !(Maybe HadoopStepConfig)- , _sName :: !(Maybe Text)- , _sId :: !(Maybe Text)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'Step' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'sStatus' - The current execution status details of the cluster step.------ * 'sActionOnFailure' - This specifies what action to take when the cluster step fails. Possible values are TERMINATE_CLUSTER, CANCEL_AND_WAIT, and CONTINUE.------ * 'sConfig' - The Hadoop job configuration of the cluster step.------ * 'sName' - The name of the cluster step.------ * 'sId' - The identifier of the cluster step.-step- :: Step-step =- Step'- { _sStatus = Nothing- , _sActionOnFailure = Nothing- , _sConfig = Nothing- , _sName = Nothing- , _sId = Nothing- }---- | The current execution status details of the cluster step.-sStatus :: Lens' Step (Maybe StepStatus)-sStatus = lens _sStatus (\ s a -> s{_sStatus = a});---- | This specifies what action to take when the cluster step fails. Possible values are TERMINATE_CLUSTER, CANCEL_AND_WAIT, and CONTINUE.-sActionOnFailure :: Lens' Step (Maybe ActionOnFailure)-sActionOnFailure = lens _sActionOnFailure (\ s a -> s{_sActionOnFailure = a});---- | The Hadoop job configuration of the cluster step.-sConfig :: Lens' Step (Maybe HadoopStepConfig)-sConfig = lens _sConfig (\ s a -> s{_sConfig = a});---- | The name of the cluster step.-sName :: Lens' Step (Maybe Text)-sName = lens _sName (\ s a -> s{_sName = a});---- | The identifier of the cluster step.-sId :: Lens' Step (Maybe Text)-sId = lens _sId (\ s a -> s{_sId = a});--instance FromJSON Step where- parseJSON- = withObject "Step"- (\ x ->- Step' <$>- (x .:? "Status") <*> (x .:? "ActionOnFailure") <*>- (x .:? "Config")- <*> (x .:? "Name")- <*> (x .:? "Id"))--instance Hashable Step--instance NFData Step---- | Specification of a job flow step.------------ /See:/ 'stepConfig' smart constructor.-data StepConfig = StepConfig'- { _scActionOnFailure :: !(Maybe ActionOnFailure)- , _scName :: !Text- , _scHadoopJARStep :: !HadoopJARStepConfig- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'StepConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'scActionOnFailure' - The action to take if the job flow step fails.------ * 'scName' - The name of the job flow step.------ * 'scHadoopJARStep' - The JAR file used for the job flow step.-stepConfig- :: Text -- ^ 'scName'- -> HadoopJARStepConfig -- ^ 'scHadoopJARStep'- -> StepConfig-stepConfig pName_ pHadoopJARStep_ =- StepConfig'- { _scActionOnFailure = Nothing- , _scName = pName_- , _scHadoopJARStep = pHadoopJARStep_- }---- | The action to take if the job flow step fails.-scActionOnFailure :: Lens' StepConfig (Maybe ActionOnFailure)-scActionOnFailure = lens _scActionOnFailure (\ s a -> s{_scActionOnFailure = a});---- | The name of the job flow step.-scName :: Lens' StepConfig Text-scName = lens _scName (\ s a -> s{_scName = a});---- | The JAR file used for the job flow step.-scHadoopJARStep :: Lens' StepConfig HadoopJARStepConfig-scHadoopJARStep = lens _scHadoopJARStep (\ s a -> s{_scHadoopJARStep = a});--instance Hashable StepConfig--instance NFData StepConfig--instance ToJSON StepConfig where- toJSON StepConfig'{..}- = object- (catMaybes- [("ActionOnFailure" .=) <$> _scActionOnFailure,- Just ("Name" .= _scName),- Just ("HadoopJarStep" .= _scHadoopJARStep)])---- | The details of the step state change reason.------------ /See:/ 'stepStateChangeReason' smart constructor.-data StepStateChangeReason = StepStateChangeReason'- { _sscrCode :: !(Maybe StepStateChangeReasonCode)- , _sscrMessage :: !(Maybe Text)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'StepStateChangeReason' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'sscrCode' - The programmable code for the state change reason. Note: Currently, the service provides no code for the state change.------ * 'sscrMessage' - The descriptive message for the state change reason.-stepStateChangeReason- :: StepStateChangeReason-stepStateChangeReason =- StepStateChangeReason'- { _sscrCode = Nothing- , _sscrMessage = Nothing- }---- | The programmable code for the state change reason. Note: Currently, the service provides no code for the state change.-sscrCode :: Lens' StepStateChangeReason (Maybe StepStateChangeReasonCode)-sscrCode = lens _sscrCode (\ s a -> s{_sscrCode = a});---- | The descriptive message for the state change reason.-sscrMessage :: Lens' StepStateChangeReason (Maybe Text)-sscrMessage = lens _sscrMessage (\ s a -> s{_sscrMessage = a});--instance FromJSON StepStateChangeReason where- parseJSON- = withObject "StepStateChangeReason"- (\ x ->- StepStateChangeReason' <$>- (x .:? "Code") <*> (x .:? "Message"))--instance Hashable StepStateChangeReason--instance NFData StepStateChangeReason---- | The execution status details of the cluster step.------------ /See:/ 'stepStatus' smart constructor.-data StepStatus = StepStatus'- { _ssState :: !(Maybe StepState)- , _ssFailureDetails :: !(Maybe FailureDetails)- , _ssStateChangeReason :: !(Maybe StepStateChangeReason)- , _ssTimeline :: !(Maybe StepTimeline)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'StepStatus' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ssState' - The execution state of the cluster step.------ * 'ssFailureDetails' - The details for the step failure including reason, message, and log file path where the root cause was identified.------ * 'ssStateChangeReason' - The reason for the step execution status change.------ * 'ssTimeline' - The timeline of the cluster step status over time.-stepStatus- :: StepStatus-stepStatus =- StepStatus'- { _ssState = Nothing- , _ssFailureDetails = Nothing- , _ssStateChangeReason = Nothing- , _ssTimeline = Nothing- }---- | The execution state of the cluster step.-ssState :: Lens' StepStatus (Maybe StepState)-ssState = lens _ssState (\ s a -> s{_ssState = a});---- | The details for the step failure including reason, message, and log file path where the root cause was identified.-ssFailureDetails :: Lens' StepStatus (Maybe FailureDetails)-ssFailureDetails = lens _ssFailureDetails (\ s a -> s{_ssFailureDetails = a});---- | The reason for the step execution status change.-ssStateChangeReason :: Lens' StepStatus (Maybe StepStateChangeReason)-ssStateChangeReason = lens _ssStateChangeReason (\ s a -> s{_ssStateChangeReason = a});---- | The timeline of the cluster step status over time.-ssTimeline :: Lens' StepStatus (Maybe StepTimeline)-ssTimeline = lens _ssTimeline (\ s a -> s{_ssTimeline = a});--instance FromJSON StepStatus where- parseJSON- = withObject "StepStatus"- (\ x ->- StepStatus' <$>- (x .:? "State") <*> (x .:? "FailureDetails") <*>- (x .:? "StateChangeReason")- <*> (x .:? "Timeline"))--instance Hashable StepStatus--instance NFData StepStatus---- | The summary of the cluster step.------------ /See:/ 'stepSummary' smart constructor.-data StepSummary = StepSummary'- { _ssStatus :: !(Maybe StepStatus)- , _ssActionOnFailure :: !(Maybe ActionOnFailure)- , _ssConfig :: !(Maybe HadoopStepConfig)- , _ssName :: !(Maybe Text)- , _ssId :: !(Maybe Text)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'StepSummary' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'ssStatus' - The current execution status details of the cluster step.------ * 'ssActionOnFailure' - This specifies what action to take when the cluster step fails. Possible values are TERMINATE_CLUSTER, CANCEL_AND_WAIT, and CONTINUE.------ * 'ssConfig' - The Hadoop job configuration of the cluster step.------ * 'ssName' - The name of the cluster step.------ * 'ssId' - The identifier of the cluster step.-stepSummary- :: StepSummary-stepSummary =- StepSummary'- { _ssStatus = Nothing- , _ssActionOnFailure = Nothing- , _ssConfig = Nothing- , _ssName = Nothing- , _ssId = Nothing- }---- | The current execution status details of the cluster step.-ssStatus :: Lens' StepSummary (Maybe StepStatus)-ssStatus = lens _ssStatus (\ s a -> s{_ssStatus = a});---- | This specifies what action to take when the cluster step fails. Possible values are TERMINATE_CLUSTER, CANCEL_AND_WAIT, and CONTINUE.-ssActionOnFailure :: Lens' StepSummary (Maybe ActionOnFailure)-ssActionOnFailure = lens _ssActionOnFailure (\ s a -> s{_ssActionOnFailure = a});---- | The Hadoop job configuration of the cluster step.-ssConfig :: Lens' StepSummary (Maybe HadoopStepConfig)-ssConfig = lens _ssConfig (\ s a -> s{_ssConfig = a});---- | The name of the cluster step.-ssName :: Lens' StepSummary (Maybe Text)-ssName = lens _ssName (\ s a -> s{_ssName = a});---- | The identifier of the cluster step.-ssId :: Lens' StepSummary (Maybe Text)-ssId = lens _ssId (\ s a -> s{_ssId = a});--instance FromJSON StepSummary where- parseJSON- = withObject "StepSummary"- (\ x ->- StepSummary' <$>- (x .:? "Status") <*> (x .:? "ActionOnFailure") <*>- (x .:? "Config")- <*> (x .:? "Name")- <*> (x .:? "Id"))--instance Hashable StepSummary--instance NFData StepSummary---- | The timeline of the cluster step lifecycle.------------ /See:/ 'stepTimeline' smart constructor.-data StepTimeline = StepTimeline'- { _stCreationDateTime :: !(Maybe POSIX)- , _stEndDateTime :: !(Maybe POSIX)- , _stStartDateTime :: !(Maybe POSIX)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'StepTimeline' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'stCreationDateTime' - The date and time when the cluster step was created.------ * 'stEndDateTime' - The date and time when the cluster step execution completed or failed.------ * 'stStartDateTime' - The date and time when the cluster step execution started.-stepTimeline- :: StepTimeline-stepTimeline =- StepTimeline'- { _stCreationDateTime = Nothing- , _stEndDateTime = Nothing- , _stStartDateTime = Nothing- }---- | The date and time when the cluster step was created.-stCreationDateTime :: Lens' StepTimeline (Maybe UTCTime)-stCreationDateTime = lens _stCreationDateTime (\ s a -> s{_stCreationDateTime = a}) . mapping _Time;---- | The date and time when the cluster step execution completed or failed.-stEndDateTime :: Lens' StepTimeline (Maybe UTCTime)-stEndDateTime = lens _stEndDateTime (\ s a -> s{_stEndDateTime = a}) . mapping _Time;---- | The date and time when the cluster step execution started.-stStartDateTime :: Lens' StepTimeline (Maybe UTCTime)-stStartDateTime = lens _stStartDateTime (\ s a -> s{_stStartDateTime = a}) . mapping _Time;--instance FromJSON StepTimeline where- parseJSON- = withObject "StepTimeline"- (\ x ->- StepTimeline' <$>- (x .:? "CreationDateTime") <*> (x .:? "EndDateTime")- <*> (x .:? "StartDateTime"))--instance Hashable StepTimeline--instance NFData StepTimeline---- | The list of supported product configurations which allow user-supplied arguments. EMR accepts these arguments and forwards them to the corresponding installation script as bootstrap action arguments.------------ /See:/ 'supportedProductConfig' smart constructor.-data SupportedProductConfig = SupportedProductConfig'- { _spcArgs :: !(Maybe [Text])- , _spcName :: !(Maybe Text)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'SupportedProductConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'spcArgs' - The list of user-supplied arguments.------ * 'spcName' - The name of the product configuration.-supportedProductConfig- :: SupportedProductConfig-supportedProductConfig =- SupportedProductConfig'- { _spcArgs = Nothing- , _spcName = Nothing- }---- | The list of user-supplied arguments.-spcArgs :: Lens' SupportedProductConfig [Text]-spcArgs = lens _spcArgs (\ s a -> s{_spcArgs = a}) . _Default . _Coerce;---- | The name of the product configuration.-spcName :: Lens' SupportedProductConfig (Maybe Text)-spcName = lens _spcName (\ s a -> s{_spcName = a});--instance Hashable SupportedProductConfig--instance NFData SupportedProductConfig--instance ToJSON SupportedProductConfig where- toJSON SupportedProductConfig'{..}- = object- (catMaybes- [("Args" .=) <$> _spcArgs, ("Name" .=) <$> _spcName])---- | A key/value pair containing user-defined metadata that you can associate with an Amazon EMR resource. Tags make it easier to associate clusters in various ways, such as grouping clusters to track your Amazon EMR resource allocation costs. For more information, see <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-tags.html Tagging Amazon EMR Resources> .------------ /See:/ 'tag' smart constructor.-data Tag = Tag'- { _tagValue :: !(Maybe Text)- , _tagKey :: !(Maybe Text)- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'Tag' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'tagValue' - A user-defined value, which is optional in a tag. For more information, see <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-tags.html Tagging Amazon EMR Resources> .------ * 'tagKey' - A user-defined key, which is the minimum required information for a valid tag. For more information, see <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-tags.html Tagging Amazon EMR Resources> .-tag- :: Tag-tag =- Tag'- { _tagValue = Nothing- , _tagKey = Nothing- }---- | A user-defined value, which is optional in a tag. For more information, see <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-tags.html Tagging Amazon EMR Resources> .-tagValue :: Lens' Tag (Maybe Text)-tagValue = lens _tagValue (\ s a -> s{_tagValue = a});---- | A user-defined key, which is the minimum required information for a valid tag. For more information, see <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-tags.html Tagging Amazon EMR Resources> .-tagKey :: Lens' Tag (Maybe Text)-tagKey = lens _tagKey (\ s a -> s{_tagKey = a});--instance FromJSON Tag where- parseJSON- = withObject "Tag"- (\ x -> Tag' <$> (x .:? "Value") <*> (x .:? "Key"))--instance Hashable Tag--instance NFData Tag--instance ToJSON Tag where- toJSON Tag'{..}- = object- (catMaybes- [("Value" .=) <$> _tagValue, ("Key" .=) <$> _tagKey])---- | EBS volume specifications such as volume type, IOPS, and size (GiB) that will be requested for the EBS volume attached to an EC2 instance in the cluster.------------ /See:/ 'volumeSpecification' smart constructor.-data VolumeSpecification = VolumeSpecification'- { _vsIOPS :: !(Maybe Int)- , _vsVolumeType :: !Text- , _vsSizeInGB :: !Int- } deriving (Eq,Read,Show,Data,Typeable,Generic)---- | Creates a value of 'VolumeSpecification' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'vsIOPS' - The number of I/O operations per second (IOPS) that the volume supports.------ * 'vsVolumeType' - The volume type. Volume types supported are gp2, io1, standard.------ * 'vsSizeInGB' - The volume size, in gibibytes (GiB). This can be a number from 1 - 1024. If the volume type is EBS-optimized, the minimum value is 10.-volumeSpecification- :: Text -- ^ 'vsVolumeType'- -> Int -- ^ 'vsSizeInGB'- -> VolumeSpecification-volumeSpecification pVolumeType_ pSizeInGB_ =- VolumeSpecification'- { _vsIOPS = Nothing- , _vsVolumeType = pVolumeType_- , _vsSizeInGB = pSizeInGB_- }---- | The number of I/O operations per second (IOPS) that the volume supports.-vsIOPS :: Lens' VolumeSpecification (Maybe Int)-vsIOPS = lens _vsIOPS (\ s a -> s{_vsIOPS = a});---- | The volume type. Volume types supported are gp2, io1, standard.-vsVolumeType :: Lens' VolumeSpecification Text-vsVolumeType = lens _vsVolumeType (\ s a -> s{_vsVolumeType = a});---- | The volume size, in gibibytes (GiB). This can be a number from 1 - 1024. If the volume type is EBS-optimized, the minimum value is 10.-vsSizeInGB :: Lens' VolumeSpecification Int-vsSizeInGB = lens _vsSizeInGB (\ s a -> s{_vsSizeInGB = a});--instance FromJSON VolumeSpecification where- parseJSON- = withObject "VolumeSpecification"- (\ x ->- VolumeSpecification' <$>- (x .:? "Iops") <*> (x .: "VolumeType") <*>- (x .: "SizeInGB"))--instance Hashable VolumeSpecification--instance NFData VolumeSpecification+-- Copyright : (c) 2013-2017 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 Network.AWS.EMR.Types.Product where++import Network.AWS.EMR.Types.Sum+import Network.AWS.Lens+import Network.AWS.Prelude++-- | An application is any Amazon or third-party software that you can add to the cluster. This structure contains a list of strings that indicates the software to use with the cluster and accepts a user argument list. Amazon EMR accepts and forwards the argument list to the corresponding installation script as bootstrap action argument. For more information, see <http://docs.aws.amazon.com/ElasticMapReduce/latest/ManagementGuide/emr-mapr.html Using the MapR Distribution for Hadoop> . Currently supported values are:+--+--+-- * "mapr-m3" - launch the cluster using MapR M3 Edition.+--+-- * "mapr-m5" - launch the cluster using MapR M5 Edition.+--+-- * "mapr" with the user arguments specifying "--edition,m3" or "--edition,m5" - launch the cluster using MapR M3 or M5 Edition, respectively.+--+--+--+--+-- /See:/ 'application' smart constructor.+data Application = Application'+ { _aArgs :: !(Maybe [Text])+ , _aAdditionalInfo :: !(Maybe (Map Text Text))+ , _aName :: !(Maybe Text)+ , _aVersion :: !(Maybe Text)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'Application' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aArgs' - Arguments for Amazon EMR to pass to the application.+--+-- * 'aAdditionalInfo' - This option is for advanced users only. This is meta information about third-party applications that third-party vendors use for testing purposes.+--+-- * 'aName' - The name of the application.+--+-- * 'aVersion' - The version of the application.+application+ :: Application+application =+ Application'+ { _aArgs = Nothing+ , _aAdditionalInfo = Nothing+ , _aName = Nothing+ , _aVersion = Nothing+ }+++-- | Arguments for Amazon EMR to pass to the application.+aArgs :: Lens' Application [Text]+aArgs = lens _aArgs (\ s a -> s{_aArgs = a}) . _Default . _Coerce;++-- | This option is for advanced users only. This is meta information about third-party applications that third-party vendors use for testing purposes.+aAdditionalInfo :: Lens' Application (HashMap Text Text)+aAdditionalInfo = lens _aAdditionalInfo (\ s a -> s{_aAdditionalInfo = a}) . _Default . _Map;++-- | The name of the application.+aName :: Lens' Application (Maybe Text)+aName = lens _aName (\ s a -> s{_aName = a});++-- | The version of the application.+aVersion :: Lens' Application (Maybe Text)+aVersion = lens _aVersion (\ s a -> s{_aVersion = a});++instance FromJSON Application where+ parseJSON+ = withObject "Application"+ (\ x ->+ Application' <$>+ (x .:? "Args" .!= mempty) <*>+ (x .:? "AdditionalInfo" .!= mempty)+ <*> (x .:? "Name")+ <*> (x .:? "Version"))++instance Hashable Application where++instance NFData Application where++instance ToJSON Application where+ toJSON Application'{..}+ = object+ (catMaybes+ [("Args" .=) <$> _aArgs,+ ("AdditionalInfo" .=) <$> _aAdditionalInfo,+ ("Name" .=) <$> _aName,+ ("Version" .=) <$> _aVersion])++-- | An automatic scaling policy for a core instance group or task instance group in an Amazon EMR cluster. An automatic scaling policy defines how an instance group dynamically adds and terminates EC2 instances in response to the value of a CloudWatch metric. See 'PutAutoScalingPolicy' .+--+--+--+-- /See:/ 'autoScalingPolicy' smart constructor.+data AutoScalingPolicy = AutoScalingPolicy'+ { _aspConstraints :: !ScalingConstraints+ , _aspRules :: ![ScalingRule]+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'AutoScalingPolicy' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aspConstraints' - The upper and lower EC2 instance limits for an automatic scaling policy. Automatic scaling activity will not cause an instance group to grow above or below these limits.+--+-- * 'aspRules' - The scale-in and scale-out rules that comprise the automatic scaling policy.+autoScalingPolicy+ :: ScalingConstraints -- ^ 'aspConstraints'+ -> AutoScalingPolicy+autoScalingPolicy pConstraints_ =+ AutoScalingPolicy' {_aspConstraints = pConstraints_, _aspRules = mempty}+++-- | The upper and lower EC2 instance limits for an automatic scaling policy. Automatic scaling activity will not cause an instance group to grow above or below these limits.+aspConstraints :: Lens' AutoScalingPolicy ScalingConstraints+aspConstraints = lens _aspConstraints (\ s a -> s{_aspConstraints = a});++-- | The scale-in and scale-out rules that comprise the automatic scaling policy.+aspRules :: Lens' AutoScalingPolicy [ScalingRule]+aspRules = lens _aspRules (\ s a -> s{_aspRules = a}) . _Coerce;++instance Hashable AutoScalingPolicy where++instance NFData AutoScalingPolicy where++instance ToJSON AutoScalingPolicy where+ toJSON AutoScalingPolicy'{..}+ = object+ (catMaybes+ [Just ("Constraints" .= _aspConstraints),+ Just ("Rules" .= _aspRules)])++-- | An automatic scaling policy for a core instance group or task instance group in an Amazon EMR cluster. The automatic scaling policy defines how an instance group dynamically adds and terminates EC2 instances in response to the value of a CloudWatch metric. See 'PutAutoScalingPolicy' .+--+--+--+-- /See:/ 'autoScalingPolicyDescription' smart constructor.+data AutoScalingPolicyDescription = AutoScalingPolicyDescription'+ { _aspdStatus :: !(Maybe AutoScalingPolicyStatus)+ , _aspdRules :: !(Maybe [ScalingRule])+ , _aspdConstraints :: !(Maybe ScalingConstraints)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'AutoScalingPolicyDescription' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aspdStatus' - The status of an automatic scaling policy.+--+-- * 'aspdRules' - The scale-in and scale-out rules that comprise the automatic scaling policy.+--+-- * 'aspdConstraints' - The upper and lower EC2 instance limits for an automatic scaling policy. Automatic scaling activity will not cause an instance group to grow above or below these limits.+autoScalingPolicyDescription+ :: AutoScalingPolicyDescription+autoScalingPolicyDescription =+ AutoScalingPolicyDescription'+ {_aspdStatus = Nothing, _aspdRules = Nothing, _aspdConstraints = Nothing}+++-- | The status of an automatic scaling policy.+aspdStatus :: Lens' AutoScalingPolicyDescription (Maybe AutoScalingPolicyStatus)+aspdStatus = lens _aspdStatus (\ s a -> s{_aspdStatus = a});++-- | The scale-in and scale-out rules that comprise the automatic scaling policy.+aspdRules :: Lens' AutoScalingPolicyDescription [ScalingRule]+aspdRules = lens _aspdRules (\ s a -> s{_aspdRules = a}) . _Default . _Coerce;++-- | The upper and lower EC2 instance limits for an automatic scaling policy. Automatic scaling activity will not cause an instance group to grow above or below these limits.+aspdConstraints :: Lens' AutoScalingPolicyDescription (Maybe ScalingConstraints)+aspdConstraints = lens _aspdConstraints (\ s a -> s{_aspdConstraints = a});++instance FromJSON AutoScalingPolicyDescription where+ parseJSON+ = withObject "AutoScalingPolicyDescription"+ (\ x ->+ AutoScalingPolicyDescription' <$>+ (x .:? "Status") <*> (x .:? "Rules" .!= mempty) <*>+ (x .:? "Constraints"))++instance Hashable AutoScalingPolicyDescription where++instance NFData AutoScalingPolicyDescription where++-- | The reason for an 'AutoScalingPolicyStatus' change.+--+--+--+-- /See:/ 'autoScalingPolicyStateChangeReason' smart constructor.+data AutoScalingPolicyStateChangeReason = AutoScalingPolicyStateChangeReason'+ { _aspscrCode :: !(Maybe AutoScalingPolicyStateChangeReasonCode)+ , _aspscrMessage :: !(Maybe Text)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'AutoScalingPolicyStateChangeReason' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aspscrCode' - The code indicating the reason for the change in status.@USER_REQUEST@ indicates that the scaling policy status was changed by a user. @PROVISION_FAILURE@ indicates that the status change was because the policy failed to provision. @CLEANUP_FAILURE@ indicates an error.+--+-- * 'aspscrMessage' - A friendly, more verbose message that accompanies an automatic scaling policy state change.+autoScalingPolicyStateChangeReason+ :: AutoScalingPolicyStateChangeReason+autoScalingPolicyStateChangeReason =+ AutoScalingPolicyStateChangeReason'+ {_aspscrCode = Nothing, _aspscrMessage = Nothing}+++-- | The code indicating the reason for the change in status.@USER_REQUEST@ indicates that the scaling policy status was changed by a user. @PROVISION_FAILURE@ indicates that the status change was because the policy failed to provision. @CLEANUP_FAILURE@ indicates an error.+aspscrCode :: Lens' AutoScalingPolicyStateChangeReason (Maybe AutoScalingPolicyStateChangeReasonCode)+aspscrCode = lens _aspscrCode (\ s a -> s{_aspscrCode = a});++-- | A friendly, more verbose message that accompanies an automatic scaling policy state change.+aspscrMessage :: Lens' AutoScalingPolicyStateChangeReason (Maybe Text)+aspscrMessage = lens _aspscrMessage (\ s a -> s{_aspscrMessage = a});++instance FromJSON AutoScalingPolicyStateChangeReason+ where+ parseJSON+ = withObject "AutoScalingPolicyStateChangeReason"+ (\ x ->+ AutoScalingPolicyStateChangeReason' <$>+ (x .:? "Code") <*> (x .:? "Message"))++instance Hashable AutoScalingPolicyStateChangeReason+ where++instance NFData AutoScalingPolicyStateChangeReason+ where++-- | The status of an automatic scaling policy.+--+--+--+-- /See:/ 'autoScalingPolicyStatus' smart constructor.+data AutoScalingPolicyStatus = AutoScalingPolicyStatus'+ { _aspsState :: !(Maybe AutoScalingPolicyState)+ , _aspsStateChangeReason :: !(Maybe AutoScalingPolicyStateChangeReason)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'AutoScalingPolicyStatus' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'aspsState' - Indicates the status of the automatic scaling policy.+--+-- * 'aspsStateChangeReason' - The reason for a change in status.+autoScalingPolicyStatus+ :: AutoScalingPolicyStatus+autoScalingPolicyStatus =+ AutoScalingPolicyStatus'+ {_aspsState = Nothing, _aspsStateChangeReason = Nothing}+++-- | Indicates the status of the automatic scaling policy.+aspsState :: Lens' AutoScalingPolicyStatus (Maybe AutoScalingPolicyState)+aspsState = lens _aspsState (\ s a -> s{_aspsState = a});++-- | The reason for a change in status.+aspsStateChangeReason :: Lens' AutoScalingPolicyStatus (Maybe AutoScalingPolicyStateChangeReason)+aspsStateChangeReason = lens _aspsStateChangeReason (\ s a -> s{_aspsStateChangeReason = a});++instance FromJSON AutoScalingPolicyStatus where+ parseJSON+ = withObject "AutoScalingPolicyStatus"+ (\ x ->+ AutoScalingPolicyStatus' <$>+ (x .:? "State") <*> (x .:? "StateChangeReason"))++instance Hashable AutoScalingPolicyStatus where++instance NFData AutoScalingPolicyStatus where++-- | Configuration of a bootstrap action.+--+--+--+-- /See:/ 'bootstrapActionConfig' smart constructor.+data BootstrapActionConfig = BootstrapActionConfig'+ { _bacName :: !Text+ , _bacScriptBootstrapAction :: !ScriptBootstrapActionConfig+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'BootstrapActionConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bacName' - The name of the bootstrap action.+--+-- * 'bacScriptBootstrapAction' - The script run by the bootstrap action.+bootstrapActionConfig+ :: Text -- ^ 'bacName'+ -> ScriptBootstrapActionConfig -- ^ 'bacScriptBootstrapAction'+ -> BootstrapActionConfig+bootstrapActionConfig pName_ pScriptBootstrapAction_ =+ BootstrapActionConfig'+ {_bacName = pName_, _bacScriptBootstrapAction = pScriptBootstrapAction_}+++-- | The name of the bootstrap action.+bacName :: Lens' BootstrapActionConfig Text+bacName = lens _bacName (\ s a -> s{_bacName = a});++-- | The script run by the bootstrap action.+bacScriptBootstrapAction :: Lens' BootstrapActionConfig ScriptBootstrapActionConfig+bacScriptBootstrapAction = lens _bacScriptBootstrapAction (\ s a -> s{_bacScriptBootstrapAction = a});++instance Hashable BootstrapActionConfig where++instance NFData BootstrapActionConfig where++instance ToJSON BootstrapActionConfig where+ toJSON BootstrapActionConfig'{..}+ = object+ (catMaybes+ [Just ("Name" .= _bacName),+ Just+ ("ScriptBootstrapAction" .=+ _bacScriptBootstrapAction)])++-- | Specification of the status of a CancelSteps request. Available only in Amazon EMR version 4.8.0 and later, excluding version 5.0.0.+--+--+--+-- /See:/ 'cancelStepsInfo' smart constructor.+data CancelStepsInfo = CancelStepsInfo'+ { _csiStatus :: !(Maybe CancelStepsRequestStatus)+ , _csiStepId :: !(Maybe Text)+ , _csiReason :: !(Maybe Text)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CancelStepsInfo' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'csiStatus' - The status of a CancelSteps Request. The value may be SUBMITTED or FAILED.+--+-- * 'csiStepId' - The encrypted StepId of a step.+--+-- * 'csiReason' - The reason for the failure if the CancelSteps request fails.+cancelStepsInfo+ :: CancelStepsInfo+cancelStepsInfo =+ CancelStepsInfo'+ {_csiStatus = Nothing, _csiStepId = Nothing, _csiReason = Nothing}+++-- | The status of a CancelSteps Request. The value may be SUBMITTED or FAILED.+csiStatus :: Lens' CancelStepsInfo (Maybe CancelStepsRequestStatus)+csiStatus = lens _csiStatus (\ s a -> s{_csiStatus = a});++-- | The encrypted StepId of a step.+csiStepId :: Lens' CancelStepsInfo (Maybe Text)+csiStepId = lens _csiStepId (\ s a -> s{_csiStepId = a});++-- | The reason for the failure if the CancelSteps request fails.+csiReason :: Lens' CancelStepsInfo (Maybe Text)+csiReason = lens _csiReason (\ s a -> s{_csiReason = a});++instance FromJSON CancelStepsInfo where+ parseJSON+ = withObject "CancelStepsInfo"+ (\ x ->+ CancelStepsInfo' <$>+ (x .:? "Status") <*> (x .:? "StepId") <*>+ (x .:? "Reason"))++instance Hashable CancelStepsInfo where++instance NFData CancelStepsInfo where++-- | The definition of a CloudWatch metric alarm, which determines when an automatic scaling activity is triggered. When the defined alarm conditions are satisfied, scaling activity begins.+--+--+--+-- /See:/ 'cloudWatchAlarmDefinition' smart constructor.+data CloudWatchAlarmDefinition = CloudWatchAlarmDefinition'+ { _cwadEvaluationPeriods :: !(Maybe Int)+ , _cwadNamespace :: !(Maybe Text)+ , _cwadDimensions :: !(Maybe [MetricDimension])+ , _cwadUnit :: !(Maybe Unit)+ , _cwadStatistic :: !(Maybe Statistic)+ , _cwadComparisonOperator :: !ComparisonOperator+ , _cwadMetricName :: !Text+ , _cwadPeriod :: !Int+ , _cwadThreshold :: !Double+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CloudWatchAlarmDefinition' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cwadEvaluationPeriods' - The number of periods, expressed in seconds using @Period@ , during which the alarm condition must exist before the alarm triggers automatic scaling activity. The default value is @1@ .+--+-- * 'cwadNamespace' - The namespace for the CloudWatch metric. The default is @AWS/ElasticMapReduce@ .+--+-- * 'cwadDimensions' - A CloudWatch metric dimension.+--+-- * 'cwadUnit' - The unit of measure associated with the CloudWatch metric being watched. The value specified for @Unit@ must correspond to the units specified in the CloudWatch metric.+--+-- * 'cwadStatistic' - The statistic to apply to the metric associated with the alarm. The default is @AVERAGE@ .+--+-- * 'cwadComparisonOperator' - Determines how the metric specified by @MetricName@ is compared to the value specified by @Threshold@ .+--+-- * 'cwadMetricName' - The name of the CloudWatch metric that is watched to determine an alarm condition.+--+-- * 'cwadPeriod' - The period, in seconds, over which the statistic is applied. EMR CloudWatch metrics are emitted every five minutes (300 seconds), so if an EMR CloudWatch metric is specified, specify @300@ .+--+-- * 'cwadThreshold' - The value against which the specified statistic is compared.+cloudWatchAlarmDefinition+ :: ComparisonOperator -- ^ 'cwadComparisonOperator'+ -> Text -- ^ 'cwadMetricName'+ -> Int -- ^ 'cwadPeriod'+ -> Double -- ^ 'cwadThreshold'+ -> CloudWatchAlarmDefinition+cloudWatchAlarmDefinition pComparisonOperator_ pMetricName_ pPeriod_ pThreshold_ =+ CloudWatchAlarmDefinition'+ { _cwadEvaluationPeriods = Nothing+ , _cwadNamespace = Nothing+ , _cwadDimensions = Nothing+ , _cwadUnit = Nothing+ , _cwadStatistic = Nothing+ , _cwadComparisonOperator = pComparisonOperator_+ , _cwadMetricName = pMetricName_+ , _cwadPeriod = pPeriod_+ , _cwadThreshold = pThreshold_+ }+++-- | The number of periods, expressed in seconds using @Period@ , during which the alarm condition must exist before the alarm triggers automatic scaling activity. The default value is @1@ .+cwadEvaluationPeriods :: Lens' CloudWatchAlarmDefinition (Maybe Int)+cwadEvaluationPeriods = lens _cwadEvaluationPeriods (\ s a -> s{_cwadEvaluationPeriods = a});++-- | The namespace for the CloudWatch metric. The default is @AWS/ElasticMapReduce@ .+cwadNamespace :: Lens' CloudWatchAlarmDefinition (Maybe Text)+cwadNamespace = lens _cwadNamespace (\ s a -> s{_cwadNamespace = a});++-- | A CloudWatch metric dimension.+cwadDimensions :: Lens' CloudWatchAlarmDefinition [MetricDimension]+cwadDimensions = lens _cwadDimensions (\ s a -> s{_cwadDimensions = a}) . _Default . _Coerce;++-- | The unit of measure associated with the CloudWatch metric being watched. The value specified for @Unit@ must correspond to the units specified in the CloudWatch metric.+cwadUnit :: Lens' CloudWatchAlarmDefinition (Maybe Unit)+cwadUnit = lens _cwadUnit (\ s a -> s{_cwadUnit = a});++-- | The statistic to apply to the metric associated with the alarm. The default is @AVERAGE@ .+cwadStatistic :: Lens' CloudWatchAlarmDefinition (Maybe Statistic)+cwadStatistic = lens _cwadStatistic (\ s a -> s{_cwadStatistic = a});++-- | Determines how the metric specified by @MetricName@ is compared to the value specified by @Threshold@ .+cwadComparisonOperator :: Lens' CloudWatchAlarmDefinition ComparisonOperator+cwadComparisonOperator = lens _cwadComparisonOperator (\ s a -> s{_cwadComparisonOperator = a});++-- | The name of the CloudWatch metric that is watched to determine an alarm condition.+cwadMetricName :: Lens' CloudWatchAlarmDefinition Text+cwadMetricName = lens _cwadMetricName (\ s a -> s{_cwadMetricName = a});++-- | The period, in seconds, over which the statistic is applied. EMR CloudWatch metrics are emitted every five minutes (300 seconds), so if an EMR CloudWatch metric is specified, specify @300@ .+cwadPeriod :: Lens' CloudWatchAlarmDefinition Int+cwadPeriod = lens _cwadPeriod (\ s a -> s{_cwadPeriod = a});++-- | The value against which the specified statistic is compared.+cwadThreshold :: Lens' CloudWatchAlarmDefinition Double+cwadThreshold = lens _cwadThreshold (\ s a -> s{_cwadThreshold = a});++instance FromJSON CloudWatchAlarmDefinition where+ parseJSON+ = withObject "CloudWatchAlarmDefinition"+ (\ x ->+ CloudWatchAlarmDefinition' <$>+ (x .:? "EvaluationPeriods") <*> (x .:? "Namespace")+ <*> (x .:? "Dimensions" .!= mempty)+ <*> (x .:? "Unit")+ <*> (x .:? "Statistic")+ <*> (x .: "ComparisonOperator")+ <*> (x .: "MetricName")+ <*> (x .: "Period")+ <*> (x .: "Threshold"))++instance Hashable CloudWatchAlarmDefinition where++instance NFData CloudWatchAlarmDefinition where++instance ToJSON CloudWatchAlarmDefinition where+ toJSON CloudWatchAlarmDefinition'{..}+ = object+ (catMaybes+ [("EvaluationPeriods" .=) <$> _cwadEvaluationPeriods,+ ("Namespace" .=) <$> _cwadNamespace,+ ("Dimensions" .=) <$> _cwadDimensions,+ ("Unit" .=) <$> _cwadUnit,+ ("Statistic" .=) <$> _cwadStatistic,+ Just+ ("ComparisonOperator" .= _cwadComparisonOperator),+ Just ("MetricName" .= _cwadMetricName),+ Just ("Period" .= _cwadPeriod),+ Just ("Threshold" .= _cwadThreshold)])++-- | The detailed description of the cluster.+--+--+--+-- /See:/ 'cluster' smart constructor.+data Cluster = Cluster'+ { _cluRequestedAMIVersion :: !(Maybe Text)+ , _cluEBSRootVolumeSize :: !(Maybe Int)+ , _cluEC2InstanceAttributes :: !(Maybe EC2InstanceAttributes)+ , _cluNormalizedInstanceHours :: !(Maybe Int)+ , _cluConfigurations :: !(Maybe [Configuration])+ , _cluCustomAMIId :: !(Maybe Text)+ , _cluAutoScalingRole :: !(Maybe Text)+ , _cluSecurityConfiguration :: !(Maybe Text)+ , _cluScaleDownBehavior :: !(Maybe ScaleDownBehavior)+ , _cluInstanceCollectionType :: !(Maybe InstanceCollectionType)+ , _cluReleaseLabel :: !(Maybe Text)+ , _cluRepoUpgradeOnBoot :: !(Maybe RepoUpgradeOnBoot)+ , _cluLogURI :: !(Maybe Text)+ , _cluRunningAMIVersion :: !(Maybe Text)+ , _cluMasterPublicDNSName :: !(Maybe Text)+ , _cluTerminationProtected :: !(Maybe Bool)+ , _cluVisibleToAllUsers :: !(Maybe Bool)+ , _cluAutoTerminate :: !(Maybe Bool)+ , _cluApplications :: !(Maybe [Application])+ , _cluTags :: !(Maybe [Tag])+ , _cluServiceRole :: !(Maybe Text)+ , _cluId :: !Text+ , _cluName :: !Text+ , _cluStatus :: !ClusterStatus+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'Cluster' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cluRequestedAMIVersion' - The AMI version requested for this cluster.+--+-- * 'cluEBSRootVolumeSize' - The size, in GiB, of the EBS root device volume of the Linux AMI that is used for each EC2 instance. Available in Amazon EMR version 4.x and later.+--+-- * 'cluEC2InstanceAttributes' - Provides information about the EC2 instances in a cluster grouped by category. For example, key name, subnet ID, IAM instance profile, and so on.+--+-- * 'cluNormalizedInstanceHours' - An approximation of the cost of the cluster, represented in m1.small/hours. This value is incremented one time for every hour an m1.small instance runs. Larger instances are weighted more, so an EC2 instance that is roughly four times more expensive would result in the normalized instance hours being incremented by four. This result is only an approximation and does not reflect the actual billing rate.+--+-- * 'cluConfigurations' - Applies only to Amazon EMR releases 4.x and later. The list of Configurations supplied to the EMR cluster.+--+-- * 'cluCustomAMIId' - Available only in Amazon EMR version 5.7.0 and later. The ID of a custom Amazon EBS-backed Linux AMI if the cluster uses a custom AMI.+--+-- * 'cluAutoScalingRole' - An IAM role for automatic scaling policies. The default role is @EMR_AutoScaling_DefaultRole@ . The IAM role provides permissions that the automatic scaling feature requires to launch and terminate EC2 instances in an instance group.+--+-- * 'cluSecurityConfiguration' - The name of the security configuration applied to the cluster.+--+-- * 'cluScaleDownBehavior' - The way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized. @TERMINATE_AT_INSTANCE_HOUR@ indicates that Amazon EMR terminates nodes at the instance-hour boundary, regardless of when the request to terminate the instance was submitted. This option is only available with Amazon EMR 5.1.0 and later and is the default for clusters created using that version. @TERMINATE_AT_TASK_COMPLETION@ indicates that Amazon EMR blacklists and drains tasks from nodes before terminating the Amazon EC2 instances, regardless of the instance-hour boundary. With either behavior, Amazon EMR removes the least active nodes first and blocks instance termination if it could lead to HDFS corruption. @TERMINATE_AT_TASK_COMPLETION@ is available only in Amazon EMR version 4.1.0 and later, and is the default for versions of Amazon EMR earlier than 5.1.0.+--+-- * 'cluInstanceCollectionType' - The instance group configuration of the cluster. A value of @INSTANCE_GROUP@ indicates a uniform instance group configuration. A value of @INSTANCE_FLEET@ indicates an instance fleets configuration.+--+-- * 'cluReleaseLabel' - The release label for the Amazon EMR release.+--+-- * 'cluRepoUpgradeOnBoot' - Applies only when @CustomAmiID@ is used. Specifies the type of updates that are applied from the Amazon Linux AMI package repositories when an instance boots using the AMI.+--+-- * 'cluLogURI' - The path to the Amazon S3 location where logs for this cluster are stored.+--+-- * 'cluRunningAMIVersion' - The AMI version running on this cluster.+--+-- * 'cluMasterPublicDNSName' - The public DNS name of the master EC2 instance.+--+-- * 'cluTerminationProtected' - Indicates whether Amazon EMR will lock the cluster to prevent the EC2 instances from being terminated by an API call or user intervention, or in the event of a cluster error.+--+-- * 'cluVisibleToAllUsers' - Indicates whether the cluster is visible to all IAM users of the AWS account associated with the cluster. If this value is set to @true@ , all IAM users of that AWS account can view and manage the cluster if they have the proper policy permissions set. If this value is @false@ , only the IAM user that created the cluster can view and manage it. This value can be changed using the 'SetVisibleToAllUsers' action.+--+-- * 'cluAutoTerminate' - Specifies whether the cluster should terminate after completing all steps.+--+-- * 'cluApplications' - The applications installed on this cluster.+--+-- * 'cluTags' - A list of tags associated with a cluster.+--+-- * 'cluServiceRole' - The IAM role that will be assumed by the Amazon EMR service to access AWS resources on your behalf.+--+-- * 'cluId' - The unique identifier for the cluster.+--+-- * 'cluName' - The name of the cluster.+--+-- * 'cluStatus' - The current status details about the cluster.+cluster+ :: Text -- ^ 'cluId'+ -> Text -- ^ 'cluName'+ -> ClusterStatus -- ^ 'cluStatus'+ -> Cluster+cluster pId_ pName_ pStatus_ =+ Cluster'+ { _cluRequestedAMIVersion = Nothing+ , _cluEBSRootVolumeSize = Nothing+ , _cluEC2InstanceAttributes = Nothing+ , _cluNormalizedInstanceHours = Nothing+ , _cluConfigurations = Nothing+ , _cluCustomAMIId = Nothing+ , _cluAutoScalingRole = Nothing+ , _cluSecurityConfiguration = Nothing+ , _cluScaleDownBehavior = Nothing+ , _cluInstanceCollectionType = Nothing+ , _cluReleaseLabel = Nothing+ , _cluRepoUpgradeOnBoot = Nothing+ , _cluLogURI = Nothing+ , _cluRunningAMIVersion = Nothing+ , _cluMasterPublicDNSName = Nothing+ , _cluTerminationProtected = Nothing+ , _cluVisibleToAllUsers = Nothing+ , _cluAutoTerminate = Nothing+ , _cluApplications = Nothing+ , _cluTags = Nothing+ , _cluServiceRole = Nothing+ , _cluId = pId_+ , _cluName = pName_+ , _cluStatus = pStatus_+ }+++-- | The AMI version requested for this cluster.+cluRequestedAMIVersion :: Lens' Cluster (Maybe Text)+cluRequestedAMIVersion = lens _cluRequestedAMIVersion (\ s a -> s{_cluRequestedAMIVersion = a});++-- | The size, in GiB, of the EBS root device volume of the Linux AMI that is used for each EC2 instance. Available in Amazon EMR version 4.x and later.+cluEBSRootVolumeSize :: Lens' Cluster (Maybe Int)+cluEBSRootVolumeSize = lens _cluEBSRootVolumeSize (\ s a -> s{_cluEBSRootVolumeSize = a});++-- | Provides information about the EC2 instances in a cluster grouped by category. For example, key name, subnet ID, IAM instance profile, and so on.+cluEC2InstanceAttributes :: Lens' Cluster (Maybe EC2InstanceAttributes)+cluEC2InstanceAttributes = lens _cluEC2InstanceAttributes (\ s a -> s{_cluEC2InstanceAttributes = a});++-- | An approximation of the cost of the cluster, represented in m1.small/hours. This value is incremented one time for every hour an m1.small instance runs. Larger instances are weighted more, so an EC2 instance that is roughly four times more expensive would result in the normalized instance hours being incremented by four. This result is only an approximation and does not reflect the actual billing rate.+cluNormalizedInstanceHours :: Lens' Cluster (Maybe Int)+cluNormalizedInstanceHours = lens _cluNormalizedInstanceHours (\ s a -> s{_cluNormalizedInstanceHours = a});++-- | Applies only to Amazon EMR releases 4.x and later. The list of Configurations supplied to the EMR cluster.+cluConfigurations :: Lens' Cluster [Configuration]+cluConfigurations = lens _cluConfigurations (\ s a -> s{_cluConfigurations = a}) . _Default . _Coerce;++-- | Available only in Amazon EMR version 5.7.0 and later. The ID of a custom Amazon EBS-backed Linux AMI if the cluster uses a custom AMI.+cluCustomAMIId :: Lens' Cluster (Maybe Text)+cluCustomAMIId = lens _cluCustomAMIId (\ s a -> s{_cluCustomAMIId = a});++-- | An IAM role for automatic scaling policies. The default role is @EMR_AutoScaling_DefaultRole@ . The IAM role provides permissions that the automatic scaling feature requires to launch and terminate EC2 instances in an instance group.+cluAutoScalingRole :: Lens' Cluster (Maybe Text)+cluAutoScalingRole = lens _cluAutoScalingRole (\ s a -> s{_cluAutoScalingRole = a});++-- | The name of the security configuration applied to the cluster.+cluSecurityConfiguration :: Lens' Cluster (Maybe Text)+cluSecurityConfiguration = lens _cluSecurityConfiguration (\ s a -> s{_cluSecurityConfiguration = a});++-- | The way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized. @TERMINATE_AT_INSTANCE_HOUR@ indicates that Amazon EMR terminates nodes at the instance-hour boundary, regardless of when the request to terminate the instance was submitted. This option is only available with Amazon EMR 5.1.0 and later and is the default for clusters created using that version. @TERMINATE_AT_TASK_COMPLETION@ indicates that Amazon EMR blacklists and drains tasks from nodes before terminating the Amazon EC2 instances, regardless of the instance-hour boundary. With either behavior, Amazon EMR removes the least active nodes first and blocks instance termination if it could lead to HDFS corruption. @TERMINATE_AT_TASK_COMPLETION@ is available only in Amazon EMR version 4.1.0 and later, and is the default for versions of Amazon EMR earlier than 5.1.0.+cluScaleDownBehavior :: Lens' Cluster (Maybe ScaleDownBehavior)+cluScaleDownBehavior = lens _cluScaleDownBehavior (\ s a -> s{_cluScaleDownBehavior = a});++-- | The instance group configuration of the cluster. A value of @INSTANCE_GROUP@ indicates a uniform instance group configuration. A value of @INSTANCE_FLEET@ indicates an instance fleets configuration.+cluInstanceCollectionType :: Lens' Cluster (Maybe InstanceCollectionType)+cluInstanceCollectionType = lens _cluInstanceCollectionType (\ s a -> s{_cluInstanceCollectionType = a});++-- | The release label for the Amazon EMR release.+cluReleaseLabel :: Lens' Cluster (Maybe Text)+cluReleaseLabel = lens _cluReleaseLabel (\ s a -> s{_cluReleaseLabel = a});++-- | Applies only when @CustomAmiID@ is used. Specifies the type of updates that are applied from the Amazon Linux AMI package repositories when an instance boots using the AMI.+cluRepoUpgradeOnBoot :: Lens' Cluster (Maybe RepoUpgradeOnBoot)+cluRepoUpgradeOnBoot = lens _cluRepoUpgradeOnBoot (\ s a -> s{_cluRepoUpgradeOnBoot = a});++-- | The path to the Amazon S3 location where logs for this cluster are stored.+cluLogURI :: Lens' Cluster (Maybe Text)+cluLogURI = lens _cluLogURI (\ s a -> s{_cluLogURI = a});++-- | The AMI version running on this cluster.+cluRunningAMIVersion :: Lens' Cluster (Maybe Text)+cluRunningAMIVersion = lens _cluRunningAMIVersion (\ s a -> s{_cluRunningAMIVersion = a});++-- | The public DNS name of the master EC2 instance.+cluMasterPublicDNSName :: Lens' Cluster (Maybe Text)+cluMasterPublicDNSName = lens _cluMasterPublicDNSName (\ s a -> s{_cluMasterPublicDNSName = a});++-- | Indicates whether Amazon EMR will lock the cluster to prevent the EC2 instances from being terminated by an API call or user intervention, or in the event of a cluster error.+cluTerminationProtected :: Lens' Cluster (Maybe Bool)+cluTerminationProtected = lens _cluTerminationProtected (\ s a -> s{_cluTerminationProtected = a});++-- | Indicates whether the cluster is visible to all IAM users of the AWS account associated with the cluster. If this value is set to @true@ , all IAM users of that AWS account can view and manage the cluster if they have the proper policy permissions set. If this value is @false@ , only the IAM user that created the cluster can view and manage it. This value can be changed using the 'SetVisibleToAllUsers' action.+cluVisibleToAllUsers :: Lens' Cluster (Maybe Bool)+cluVisibleToAllUsers = lens _cluVisibleToAllUsers (\ s a -> s{_cluVisibleToAllUsers = a});++-- | Specifies whether the cluster should terminate after completing all steps.+cluAutoTerminate :: Lens' Cluster (Maybe Bool)+cluAutoTerminate = lens _cluAutoTerminate (\ s a -> s{_cluAutoTerminate = a});++-- | The applications installed on this cluster.+cluApplications :: Lens' Cluster [Application]+cluApplications = lens _cluApplications (\ s a -> s{_cluApplications = a}) . _Default . _Coerce;++-- | A list of tags associated with a cluster.+cluTags :: Lens' Cluster [Tag]+cluTags = lens _cluTags (\ s a -> s{_cluTags = a}) . _Default . _Coerce;++-- | The IAM role that will be assumed by the Amazon EMR service to access AWS resources on your behalf.+cluServiceRole :: Lens' Cluster (Maybe Text)+cluServiceRole = lens _cluServiceRole (\ s a -> s{_cluServiceRole = a});++-- | The unique identifier for the cluster.+cluId :: Lens' Cluster Text+cluId = lens _cluId (\ s a -> s{_cluId = a});++-- | The name of the cluster.+cluName :: Lens' Cluster Text+cluName = lens _cluName (\ s a -> s{_cluName = a});++-- | The current status details about the cluster.+cluStatus :: Lens' Cluster ClusterStatus+cluStatus = lens _cluStatus (\ s a -> s{_cluStatus = a});++instance FromJSON Cluster where+ parseJSON+ = withObject "Cluster"+ (\ x ->+ Cluster' <$>+ (x .:? "RequestedAmiVersion") <*>+ (x .:? "EbsRootVolumeSize")+ <*> (x .:? "Ec2InstanceAttributes")+ <*> (x .:? "NormalizedInstanceHours")+ <*> (x .:? "Configurations" .!= mempty)+ <*> (x .:? "CustomAmiId")+ <*> (x .:? "AutoScalingRole")+ <*> (x .:? "SecurityConfiguration")+ <*> (x .:? "ScaleDownBehavior")+ <*> (x .:? "InstanceCollectionType")+ <*> (x .:? "ReleaseLabel")+ <*> (x .:? "RepoUpgradeOnBoot")+ <*> (x .:? "LogUri")+ <*> (x .:? "RunningAmiVersion")+ <*> (x .:? "MasterPublicDnsName")+ <*> (x .:? "TerminationProtected")+ <*> (x .:? "VisibleToAllUsers")+ <*> (x .:? "AutoTerminate")+ <*> (x .:? "Applications" .!= mempty)+ <*> (x .:? "Tags" .!= mempty)+ <*> (x .:? "ServiceRole")+ <*> (x .: "Id")+ <*> (x .: "Name")+ <*> (x .: "Status"))++instance Hashable Cluster where++instance NFData Cluster where++-- | The reason that the cluster changed to its current state.+--+--+--+-- /See:/ 'clusterStateChangeReason' smart constructor.+data ClusterStateChangeReason = ClusterStateChangeReason'+ { _cscrCode :: !(Maybe ClusterStateChangeReasonCode)+ , _cscrMessage :: !(Maybe Text)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ClusterStateChangeReason' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cscrCode' - The programmatic code for the state change reason.+--+-- * 'cscrMessage' - The descriptive message for the state change reason.+clusterStateChangeReason+ :: ClusterStateChangeReason+clusterStateChangeReason =+ ClusterStateChangeReason' {_cscrCode = Nothing, _cscrMessage = Nothing}+++-- | The programmatic code for the state change reason.+cscrCode :: Lens' ClusterStateChangeReason (Maybe ClusterStateChangeReasonCode)+cscrCode = lens _cscrCode (\ s a -> s{_cscrCode = a});++-- | The descriptive message for the state change reason.+cscrMessage :: Lens' ClusterStateChangeReason (Maybe Text)+cscrMessage = lens _cscrMessage (\ s a -> s{_cscrMessage = a});++instance FromJSON ClusterStateChangeReason where+ parseJSON+ = withObject "ClusterStateChangeReason"+ (\ x ->+ ClusterStateChangeReason' <$>+ (x .:? "Code") <*> (x .:? "Message"))++instance Hashable ClusterStateChangeReason where++instance NFData ClusterStateChangeReason where++-- | The detailed status of the cluster.+--+--+--+-- /See:/ 'clusterStatus' smart constructor.+data ClusterStatus = ClusterStatus'+ { _csState :: !(Maybe ClusterState)+ , _csStateChangeReason :: !(Maybe ClusterStateChangeReason)+ , _csTimeline :: !(Maybe ClusterTimeline)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ClusterStatus' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'csState' - The current state of the cluster.+--+-- * 'csStateChangeReason' - The reason for the cluster status change.+--+-- * 'csTimeline' - A timeline that represents the status of a cluster over the lifetime of the cluster.+clusterStatus+ :: ClusterStatus+clusterStatus =+ ClusterStatus'+ {_csState = Nothing, _csStateChangeReason = Nothing, _csTimeline = Nothing}+++-- | The current state of the cluster.+csState :: Lens' ClusterStatus (Maybe ClusterState)+csState = lens _csState (\ s a -> s{_csState = a});++-- | The reason for the cluster status change.+csStateChangeReason :: Lens' ClusterStatus (Maybe ClusterStateChangeReason)+csStateChangeReason = lens _csStateChangeReason (\ s a -> s{_csStateChangeReason = a});++-- | A timeline that represents the status of a cluster over the lifetime of the cluster.+csTimeline :: Lens' ClusterStatus (Maybe ClusterTimeline)+csTimeline = lens _csTimeline (\ s a -> s{_csTimeline = a});++instance FromJSON ClusterStatus where+ parseJSON+ = withObject "ClusterStatus"+ (\ x ->+ ClusterStatus' <$>+ (x .:? "State") <*> (x .:? "StateChangeReason") <*>+ (x .:? "Timeline"))++instance Hashable ClusterStatus where++instance NFData ClusterStatus where++-- | The summary description of the cluster.+--+--+--+-- /See:/ 'clusterSummary' smart constructor.+data ClusterSummary = ClusterSummary'+ { _csStatus :: !(Maybe ClusterStatus)+ , _csNormalizedInstanceHours :: !(Maybe Int)+ , _csName :: !(Maybe Text)+ , _csId :: !(Maybe Text)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ClusterSummary' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'csStatus' - The details about the current status of the cluster.+--+-- * 'csNormalizedInstanceHours' - An approximation of the cost of the cluster, represented in m1.small/hours. This value is incremented one time for every hour an m1.small instance runs. Larger instances are weighted more, so an EC2 instance that is roughly four times more expensive would result in the normalized instance hours being incremented by four. This result is only an approximation and does not reflect the actual billing rate.+--+-- * 'csName' - The name of the cluster.+--+-- * 'csId' - The unique identifier for the cluster.+clusterSummary+ :: ClusterSummary+clusterSummary =+ ClusterSummary'+ { _csStatus = Nothing+ , _csNormalizedInstanceHours = Nothing+ , _csName = Nothing+ , _csId = Nothing+ }+++-- | The details about the current status of the cluster.+csStatus :: Lens' ClusterSummary (Maybe ClusterStatus)+csStatus = lens _csStatus (\ s a -> s{_csStatus = a});++-- | An approximation of the cost of the cluster, represented in m1.small/hours. This value is incremented one time for every hour an m1.small instance runs. Larger instances are weighted more, so an EC2 instance that is roughly four times more expensive would result in the normalized instance hours being incremented by four. This result is only an approximation and does not reflect the actual billing rate.+csNormalizedInstanceHours :: Lens' ClusterSummary (Maybe Int)+csNormalizedInstanceHours = lens _csNormalizedInstanceHours (\ s a -> s{_csNormalizedInstanceHours = a});++-- | The name of the cluster.+csName :: Lens' ClusterSummary (Maybe Text)+csName = lens _csName (\ s a -> s{_csName = a});++-- | The unique identifier for the cluster.+csId :: Lens' ClusterSummary (Maybe Text)+csId = lens _csId (\ s a -> s{_csId = a});++instance FromJSON ClusterSummary where+ parseJSON+ = withObject "ClusterSummary"+ (\ x ->+ ClusterSummary' <$>+ (x .:? "Status") <*>+ (x .:? "NormalizedInstanceHours")+ <*> (x .:? "Name")+ <*> (x .:? "Id"))++instance Hashable ClusterSummary where++instance NFData ClusterSummary where++-- | Represents the timeline of the cluster's lifecycle.+--+--+--+-- /See:/ 'clusterTimeline' smart constructor.+data ClusterTimeline = ClusterTimeline'+ { _ctReadyDateTime :: !(Maybe POSIX)+ , _ctCreationDateTime :: !(Maybe POSIX)+ , _ctEndDateTime :: !(Maybe POSIX)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ClusterTimeline' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ctReadyDateTime' - The date and time when the cluster was ready to execute steps.+--+-- * 'ctCreationDateTime' - The creation date and time of the cluster.+--+-- * 'ctEndDateTime' - The date and time when the cluster was terminated.+clusterTimeline+ :: ClusterTimeline+clusterTimeline =+ ClusterTimeline'+ { _ctReadyDateTime = Nothing+ , _ctCreationDateTime = Nothing+ , _ctEndDateTime = Nothing+ }+++-- | The date and time when the cluster was ready to execute steps.+ctReadyDateTime :: Lens' ClusterTimeline (Maybe UTCTime)+ctReadyDateTime = lens _ctReadyDateTime (\ s a -> s{_ctReadyDateTime = a}) . mapping _Time;++-- | The creation date and time of the cluster.+ctCreationDateTime :: Lens' ClusterTimeline (Maybe UTCTime)+ctCreationDateTime = lens _ctCreationDateTime (\ s a -> s{_ctCreationDateTime = a}) . mapping _Time;++-- | The date and time when the cluster was terminated.+ctEndDateTime :: Lens' ClusterTimeline (Maybe UTCTime)+ctEndDateTime = lens _ctEndDateTime (\ s a -> s{_ctEndDateTime = a}) . mapping _Time;++instance FromJSON ClusterTimeline where+ parseJSON+ = withObject "ClusterTimeline"+ (\ x ->+ ClusterTimeline' <$>+ (x .:? "ReadyDateTime") <*>+ (x .:? "CreationDateTime")+ <*> (x .:? "EndDateTime"))++instance Hashable ClusterTimeline where++instance NFData ClusterTimeline where++-- | An entity describing an executable that runs on a cluster.+--+--+--+-- /See:/ 'command' smart constructor.+data Command = Command'+ { _cArgs :: !(Maybe [Text])+ , _cScriptPath :: !(Maybe Text)+ , _cName :: !(Maybe Text)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'Command' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cArgs' - Arguments for Amazon EMR to pass to the command for execution.+--+-- * 'cScriptPath' - The Amazon S3 location of the command script.+--+-- * 'cName' - The name of the command.+command+ :: Command+command = Command' {_cArgs = Nothing, _cScriptPath = Nothing, _cName = Nothing}+++-- | Arguments for Amazon EMR to pass to the command for execution.+cArgs :: Lens' Command [Text]+cArgs = lens _cArgs (\ s a -> s{_cArgs = a}) . _Default . _Coerce;++-- | The Amazon S3 location of the command script.+cScriptPath :: Lens' Command (Maybe Text)+cScriptPath = lens _cScriptPath (\ s a -> s{_cScriptPath = a});++-- | The name of the command.+cName :: Lens' Command (Maybe Text)+cName = lens _cName (\ s a -> s{_cName = a});++instance FromJSON Command where+ parseJSON+ = withObject "Command"+ (\ x ->+ Command' <$>+ (x .:? "Args" .!= mempty) <*> (x .:? "ScriptPath")+ <*> (x .:? "Name"))++instance Hashable Command where++instance NFData Command where++-- | An optional configuration specification to be used when provisioning cluster instances, which can include configurations for applications and software bundled with Amazon EMR. A configuration consists of a classification, properties, and optional nested configurations. A classification refers to an application-specific configuration file. Properties are the settings you want to change in that file. For more information, see <http://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html Configuring Applications> .+--+--+--+-- /See:/ 'configuration' smart constructor.+data Configuration = Configuration'+ { _cConfigurations :: !(Maybe [Configuration])+ , _cClassification :: !(Maybe Text)+ , _cProperties :: !(Maybe (Map Text Text))+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'Configuration' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cConfigurations' - A list of additional configurations to apply within a configuration object.+--+-- * 'cClassification' - The classification within a configuration.+--+-- * 'cProperties' - A set of properties specified within a configuration classification.+configuration+ :: Configuration+configuration =+ Configuration'+ { _cConfigurations = Nothing+ , _cClassification = Nothing+ , _cProperties = Nothing+ }+++-- | A list of additional configurations to apply within a configuration object.+cConfigurations :: Lens' Configuration [Configuration]+cConfigurations = lens _cConfigurations (\ s a -> s{_cConfigurations = a}) . _Default . _Coerce;++-- | The classification within a configuration.+cClassification :: Lens' Configuration (Maybe Text)+cClassification = lens _cClassification (\ s a -> s{_cClassification = a});++-- | A set of properties specified within a configuration classification.+cProperties :: Lens' Configuration (HashMap Text Text)+cProperties = lens _cProperties (\ s a -> s{_cProperties = a}) . _Default . _Map;++instance FromJSON Configuration where+ parseJSON+ = withObject "Configuration"+ (\ x ->+ Configuration' <$>+ (x .:? "Configurations" .!= mempty) <*>+ (x .:? "Classification")+ <*> (x .:? "Properties" .!= mempty))++instance Hashable Configuration where++instance NFData Configuration where++instance ToJSON Configuration where+ toJSON Configuration'{..}+ = object+ (catMaybes+ [("Configurations" .=) <$> _cConfigurations,+ ("Classification" .=) <$> _cClassification,+ ("Properties" .=) <$> _cProperties])++-- | Configuration of requested EBS block device associated with the instance group.+--+--+--+-- /See:/ 'ebsBlockDevice' smart constructor.+data EBSBlockDevice = EBSBlockDevice'+ { _ebdDevice :: !(Maybe Text)+ , _ebdVolumeSpecification :: !(Maybe VolumeSpecification)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'EBSBlockDevice' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ebdDevice' - The device name that is exposed to the instance, such as /dev/sdh.+--+-- * 'ebdVolumeSpecification' - EBS volume specifications such as volume type, IOPS, and size (GiB) that will be requested for the EBS volume attached to an EC2 instance in the cluster.+ebsBlockDevice+ :: EBSBlockDevice+ebsBlockDevice =+ EBSBlockDevice' {_ebdDevice = Nothing, _ebdVolumeSpecification = Nothing}+++-- | The device name that is exposed to the instance, such as /dev/sdh.+ebdDevice :: Lens' EBSBlockDevice (Maybe Text)+ebdDevice = lens _ebdDevice (\ s a -> s{_ebdDevice = a});++-- | EBS volume specifications such as volume type, IOPS, and size (GiB) that will be requested for the EBS volume attached to an EC2 instance in the cluster.+ebdVolumeSpecification :: Lens' EBSBlockDevice (Maybe VolumeSpecification)+ebdVolumeSpecification = lens _ebdVolumeSpecification (\ s a -> s{_ebdVolumeSpecification = a});++instance FromJSON EBSBlockDevice where+ parseJSON+ = withObject "EBSBlockDevice"+ (\ x ->+ EBSBlockDevice' <$>+ (x .:? "Device") <*> (x .:? "VolumeSpecification"))++instance Hashable EBSBlockDevice where++instance NFData EBSBlockDevice where++-- | Configuration of requested EBS block device associated with the instance group with count of volumes that will be associated to every instance.+--+--+--+-- /See:/ 'ebsBlockDeviceConfig' smart constructor.+data EBSBlockDeviceConfig = EBSBlockDeviceConfig'+ { _ebdcVolumesPerInstance :: !(Maybe Int)+ , _ebdcVolumeSpecification :: !VolumeSpecification+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'EBSBlockDeviceConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ebdcVolumesPerInstance' - Number of EBS volumes with a specific volume configuration that will be associated with every instance in the instance group+--+-- * 'ebdcVolumeSpecification' - EBS volume specifications such as volume type, IOPS, and size (GiB) that will be requested for the EBS volume attached to an EC2 instance in the cluster.+ebsBlockDeviceConfig+ :: VolumeSpecification -- ^ 'ebdcVolumeSpecification'+ -> EBSBlockDeviceConfig+ebsBlockDeviceConfig pVolumeSpecification_ =+ EBSBlockDeviceConfig'+ { _ebdcVolumesPerInstance = Nothing+ , _ebdcVolumeSpecification = pVolumeSpecification_+ }+++-- | Number of EBS volumes with a specific volume configuration that will be associated with every instance in the instance group+ebdcVolumesPerInstance :: Lens' EBSBlockDeviceConfig (Maybe Int)+ebdcVolumesPerInstance = lens _ebdcVolumesPerInstance (\ s a -> s{_ebdcVolumesPerInstance = a});++-- | EBS volume specifications such as volume type, IOPS, and size (GiB) that will be requested for the EBS volume attached to an EC2 instance in the cluster.+ebdcVolumeSpecification :: Lens' EBSBlockDeviceConfig VolumeSpecification+ebdcVolumeSpecification = lens _ebdcVolumeSpecification (\ s a -> s{_ebdcVolumeSpecification = a});++instance Hashable EBSBlockDeviceConfig where++instance NFData EBSBlockDeviceConfig where++instance ToJSON EBSBlockDeviceConfig where+ toJSON EBSBlockDeviceConfig'{..}+ = object+ (catMaybes+ [("VolumesPerInstance" .=) <$>+ _ebdcVolumesPerInstance,+ Just+ ("VolumeSpecification" .= _ebdcVolumeSpecification)])++-- | The Amazon EBS configuration of a cluster instance.+--+--+--+-- /See:/ 'ebsConfiguration' smart constructor.+data EBSConfiguration = EBSConfiguration'+ { _ecEBSOptimized :: !(Maybe Bool)+ , _ecEBSBlockDeviceConfigs :: !(Maybe [EBSBlockDeviceConfig])+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'EBSConfiguration' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ecEBSOptimized' - Indicates whether an Amazon EBS volume is EBS-optimized.+--+-- * 'ecEBSBlockDeviceConfigs' - An array of Amazon EBS volume specifications attached to a cluster instance.+ebsConfiguration+ :: EBSConfiguration+ebsConfiguration =+ EBSConfiguration'+ {_ecEBSOptimized = Nothing, _ecEBSBlockDeviceConfigs = Nothing}+++-- | Indicates whether an Amazon EBS volume is EBS-optimized.+ecEBSOptimized :: Lens' EBSConfiguration (Maybe Bool)+ecEBSOptimized = lens _ecEBSOptimized (\ s a -> s{_ecEBSOptimized = a});++-- | An array of Amazon EBS volume specifications attached to a cluster instance.+ecEBSBlockDeviceConfigs :: Lens' EBSConfiguration [EBSBlockDeviceConfig]+ecEBSBlockDeviceConfigs = lens _ecEBSBlockDeviceConfigs (\ s a -> s{_ecEBSBlockDeviceConfigs = a}) . _Default . _Coerce;++instance Hashable EBSConfiguration where++instance NFData EBSConfiguration where++instance ToJSON EBSConfiguration where+ toJSON EBSConfiguration'{..}+ = object+ (catMaybes+ [("EbsOptimized" .=) <$> _ecEBSOptimized,+ ("EbsBlockDeviceConfigs" .=) <$>+ _ecEBSBlockDeviceConfigs])++-- | EBS block device that's attached to an EC2 instance.+--+--+--+-- /See:/ 'ebsVolume' smart constructor.+data EBSVolume = EBSVolume'+ { _evDevice :: !(Maybe Text)+ , _evVolumeId :: !(Maybe Text)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'EBSVolume' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'evDevice' - The device name that is exposed to the instance, such as /dev/sdh.+--+-- * 'evVolumeId' - The volume identifier of the EBS volume.+ebsVolume+ :: EBSVolume+ebsVolume = EBSVolume' {_evDevice = Nothing, _evVolumeId = Nothing}+++-- | The device name that is exposed to the instance, such as /dev/sdh.+evDevice :: Lens' EBSVolume (Maybe Text)+evDevice = lens _evDevice (\ s a -> s{_evDevice = a});++-- | The volume identifier of the EBS volume.+evVolumeId :: Lens' EBSVolume (Maybe Text)+evVolumeId = lens _evVolumeId (\ s a -> s{_evVolumeId = a});++instance FromJSON EBSVolume where+ parseJSON+ = withObject "EBSVolume"+ (\ x ->+ EBSVolume' <$>+ (x .:? "Device") <*> (x .:? "VolumeId"))++instance Hashable EBSVolume where++instance NFData EBSVolume where++-- | Provides information about the EC2 instances in a cluster grouped by category. For example, key name, subnet ID, IAM instance profile, and so on.+--+--+--+-- /See:/ 'ec2InstanceAttributes' smart constructor.+data EC2InstanceAttributes = EC2InstanceAttributes'+ { _eiaEC2KeyName :: !(Maybe Text)+ , _eiaEmrManagedSlaveSecurityGroup :: !(Maybe Text)+ , _eiaAdditionalSlaveSecurityGroups :: !(Maybe [Text])+ , _eiaRequestedEC2SubnetIds :: !(Maybe [Text])+ , _eiaAdditionalMasterSecurityGroups :: !(Maybe [Text])+ , _eiaIAMInstanceProfile :: !(Maybe Text)+ , _eiaEmrManagedMasterSecurityGroup :: !(Maybe Text)+ , _eiaEC2SubnetId :: !(Maybe Text)+ , _eiaRequestedEC2AvailabilityZones :: !(Maybe [Text])+ , _eiaServiceAccessSecurityGroup :: !(Maybe Text)+ , _eiaEC2AvailabilityZone :: !(Maybe Text)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'EC2InstanceAttributes' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'eiaEC2KeyName' - The name of the Amazon EC2 key pair to use when connecting with SSH into the master node as a user named "hadoop".+--+-- * 'eiaEmrManagedSlaveSecurityGroup' - The identifier of the Amazon EC2 security group for the slave nodes.+--+-- * 'eiaAdditionalSlaveSecurityGroups' - A list of additional Amazon EC2 security group IDs for the slave nodes.+--+-- * 'eiaRequestedEC2SubnetIds' - Applies to clusters configured with the instance fleets option. Specifies the unique identifier of one or more Amazon EC2 subnets in which to launch EC2 cluster instances. Subnets must exist within the same VPC. Amazon EMR chooses the EC2 subnet with the best fit from among the list of @RequestedEc2SubnetIds@ , and then launches all cluster instances within that Subnet. If this value is not specified, and the account and region support EC2-Classic networks, the cluster launches instances in the EC2-Classic network and uses @RequestedEc2AvailabilityZones@ instead of this setting. If EC2-Classic is not supported, and no Subnet is specified, Amazon EMR chooses the subnet for you. @RequestedEc2SubnetIDs@ and @RequestedEc2AvailabilityZones@ cannot be specified together.+--+-- * 'eiaAdditionalMasterSecurityGroups' - A list of additional Amazon EC2 security group IDs for the master node.+--+-- * 'eiaIAMInstanceProfile' - The IAM role that was specified when the cluster was launched. The EC2 instances of the cluster assume this role.+--+-- * 'eiaEmrManagedMasterSecurityGroup' - The identifier of the Amazon EC2 security group for the master node.+--+-- * 'eiaEC2SubnetId' - To launch the cluster in Amazon VPC, set this parameter to the identifier of the Amazon VPC subnet where you want the cluster to launch. If you do not specify this value, the cluster is launched in the normal AWS cloud, outside of a VPC. Amazon VPC currently does not support cluster compute quadruple extra large (cc1.4xlarge) instances. Thus, you cannot specify the cc1.4xlarge instance type for nodes of a cluster launched in a VPC.+--+-- * 'eiaRequestedEC2AvailabilityZones' - Applies to clusters configured with the instance fleets option. Specifies one or more Availability Zones in which to launch EC2 cluster instances when the EC2-Classic network configuration is supported. Amazon EMR chooses the Availability Zone with the best fit from among the list of @RequestedEc2AvailabilityZones@ , and then launches all cluster instances within that Availability Zone. If you do not specify this value, Amazon EMR chooses the Availability Zone for you. @RequestedEc2SubnetIDs@ and @RequestedEc2AvailabilityZones@ cannot be specified together.+--+-- * 'eiaServiceAccessSecurityGroup' - The identifier of the Amazon EC2 security group for the Amazon EMR service to access clusters in VPC private subnets.+--+-- * 'eiaEC2AvailabilityZone' - The Availability Zone in which the cluster will run.+ec2InstanceAttributes+ :: EC2InstanceAttributes+ec2InstanceAttributes =+ EC2InstanceAttributes'+ { _eiaEC2KeyName = Nothing+ , _eiaEmrManagedSlaveSecurityGroup = Nothing+ , _eiaAdditionalSlaveSecurityGroups = Nothing+ , _eiaRequestedEC2SubnetIds = Nothing+ , _eiaAdditionalMasterSecurityGroups = Nothing+ , _eiaIAMInstanceProfile = Nothing+ , _eiaEmrManagedMasterSecurityGroup = Nothing+ , _eiaEC2SubnetId = Nothing+ , _eiaRequestedEC2AvailabilityZones = Nothing+ , _eiaServiceAccessSecurityGroup = Nothing+ , _eiaEC2AvailabilityZone = Nothing+ }+++-- | The name of the Amazon EC2 key pair to use when connecting with SSH into the master node as a user named "hadoop".+eiaEC2KeyName :: Lens' EC2InstanceAttributes (Maybe Text)+eiaEC2KeyName = lens _eiaEC2KeyName (\ s a -> s{_eiaEC2KeyName = a});++-- | The identifier of the Amazon EC2 security group for the slave nodes.+eiaEmrManagedSlaveSecurityGroup :: Lens' EC2InstanceAttributes (Maybe Text)+eiaEmrManagedSlaveSecurityGroup = lens _eiaEmrManagedSlaveSecurityGroup (\ s a -> s{_eiaEmrManagedSlaveSecurityGroup = a});++-- | A list of additional Amazon EC2 security group IDs for the slave nodes.+eiaAdditionalSlaveSecurityGroups :: Lens' EC2InstanceAttributes [Text]+eiaAdditionalSlaveSecurityGroups = lens _eiaAdditionalSlaveSecurityGroups (\ s a -> s{_eiaAdditionalSlaveSecurityGroups = a}) . _Default . _Coerce;++-- | Applies to clusters configured with the instance fleets option. Specifies the unique identifier of one or more Amazon EC2 subnets in which to launch EC2 cluster instances. Subnets must exist within the same VPC. Amazon EMR chooses the EC2 subnet with the best fit from among the list of @RequestedEc2SubnetIds@ , and then launches all cluster instances within that Subnet. If this value is not specified, and the account and region support EC2-Classic networks, the cluster launches instances in the EC2-Classic network and uses @RequestedEc2AvailabilityZones@ instead of this setting. If EC2-Classic is not supported, and no Subnet is specified, Amazon EMR chooses the subnet for you. @RequestedEc2SubnetIDs@ and @RequestedEc2AvailabilityZones@ cannot be specified together.+eiaRequestedEC2SubnetIds :: Lens' EC2InstanceAttributes [Text]+eiaRequestedEC2SubnetIds = lens _eiaRequestedEC2SubnetIds (\ s a -> s{_eiaRequestedEC2SubnetIds = a}) . _Default . _Coerce;++-- | A list of additional Amazon EC2 security group IDs for the master node.+eiaAdditionalMasterSecurityGroups :: Lens' EC2InstanceAttributes [Text]+eiaAdditionalMasterSecurityGroups = lens _eiaAdditionalMasterSecurityGroups (\ s a -> s{_eiaAdditionalMasterSecurityGroups = a}) . _Default . _Coerce;++-- | The IAM role that was specified when the cluster was launched. The EC2 instances of the cluster assume this role.+eiaIAMInstanceProfile :: Lens' EC2InstanceAttributes (Maybe Text)+eiaIAMInstanceProfile = lens _eiaIAMInstanceProfile (\ s a -> s{_eiaIAMInstanceProfile = a});++-- | The identifier of the Amazon EC2 security group for the master node.+eiaEmrManagedMasterSecurityGroup :: Lens' EC2InstanceAttributes (Maybe Text)+eiaEmrManagedMasterSecurityGroup = lens _eiaEmrManagedMasterSecurityGroup (\ s a -> s{_eiaEmrManagedMasterSecurityGroup = a});++-- | To launch the cluster in Amazon VPC, set this parameter to the identifier of the Amazon VPC subnet where you want the cluster to launch. If you do not specify this value, the cluster is launched in the normal AWS cloud, outside of a VPC. Amazon VPC currently does not support cluster compute quadruple extra large (cc1.4xlarge) instances. Thus, you cannot specify the cc1.4xlarge instance type for nodes of a cluster launched in a VPC.+eiaEC2SubnetId :: Lens' EC2InstanceAttributes (Maybe Text)+eiaEC2SubnetId = lens _eiaEC2SubnetId (\ s a -> s{_eiaEC2SubnetId = a});++-- | Applies to clusters configured with the instance fleets option. Specifies one or more Availability Zones in which to launch EC2 cluster instances when the EC2-Classic network configuration is supported. Amazon EMR chooses the Availability Zone with the best fit from among the list of @RequestedEc2AvailabilityZones@ , and then launches all cluster instances within that Availability Zone. If you do not specify this value, Amazon EMR chooses the Availability Zone for you. @RequestedEc2SubnetIDs@ and @RequestedEc2AvailabilityZones@ cannot be specified together.+eiaRequestedEC2AvailabilityZones :: Lens' EC2InstanceAttributes [Text]+eiaRequestedEC2AvailabilityZones = lens _eiaRequestedEC2AvailabilityZones (\ s a -> s{_eiaRequestedEC2AvailabilityZones = a}) . _Default . _Coerce;++-- | The identifier of the Amazon EC2 security group for the Amazon EMR service to access clusters in VPC private subnets.+eiaServiceAccessSecurityGroup :: Lens' EC2InstanceAttributes (Maybe Text)+eiaServiceAccessSecurityGroup = lens _eiaServiceAccessSecurityGroup (\ s a -> s{_eiaServiceAccessSecurityGroup = a});++-- | The Availability Zone in which the cluster will run.+eiaEC2AvailabilityZone :: Lens' EC2InstanceAttributes (Maybe Text)+eiaEC2AvailabilityZone = lens _eiaEC2AvailabilityZone (\ s a -> s{_eiaEC2AvailabilityZone = a});++instance FromJSON EC2InstanceAttributes where+ parseJSON+ = withObject "EC2InstanceAttributes"+ (\ x ->+ EC2InstanceAttributes' <$>+ (x .:? "Ec2KeyName") <*>+ (x .:? "EmrManagedSlaveSecurityGroup")+ <*>+ (x .:? "AdditionalSlaveSecurityGroups" .!= mempty)+ <*> (x .:? "RequestedEc2SubnetIds" .!= mempty)+ <*>+ (x .:? "AdditionalMasterSecurityGroups" .!= mempty)+ <*> (x .:? "IamInstanceProfile")+ <*> (x .:? "EmrManagedMasterSecurityGroup")+ <*> (x .:? "Ec2SubnetId")+ <*>+ (x .:? "RequestedEc2AvailabilityZones" .!= mempty)+ <*> (x .:? "ServiceAccessSecurityGroup")+ <*> (x .:? "Ec2AvailabilityZone"))++instance Hashable EC2InstanceAttributes where++instance NFData EC2InstanceAttributes where++-- | The details of the step failure. The service attempts to detect the root cause for many common failures.+--+--+--+-- /See:/ 'failureDetails' smart constructor.+data FailureDetails = FailureDetails'+ { _fdLogFile :: !(Maybe Text)+ , _fdReason :: !(Maybe Text)+ , _fdMessage :: !(Maybe Text)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'FailureDetails' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'fdLogFile' - The path to the log file where the step failure root cause was originally recorded.+--+-- * 'fdReason' - The reason for the step failure. In the case where the service cannot successfully determine the root cause of the failure, it returns "Unknown Error" as a reason.+--+-- * 'fdMessage' - The descriptive message including the error the EMR service has identified as the cause of step failure. This is text from an error log that describes the root cause of the failure.+failureDetails+ :: FailureDetails+failureDetails =+ FailureDetails'+ {_fdLogFile = Nothing, _fdReason = Nothing, _fdMessage = Nothing}+++-- | The path to the log file where the step failure root cause was originally recorded.+fdLogFile :: Lens' FailureDetails (Maybe Text)+fdLogFile = lens _fdLogFile (\ s a -> s{_fdLogFile = a});++-- | The reason for the step failure. In the case where the service cannot successfully determine the root cause of the failure, it returns "Unknown Error" as a reason.+fdReason :: Lens' FailureDetails (Maybe Text)+fdReason = lens _fdReason (\ s a -> s{_fdReason = a});++-- | The descriptive message including the error the EMR service has identified as the cause of step failure. This is text from an error log that describes the root cause of the failure.+fdMessage :: Lens' FailureDetails (Maybe Text)+fdMessage = lens _fdMessage (\ s a -> s{_fdMessage = a});++instance FromJSON FailureDetails where+ parseJSON+ = withObject "FailureDetails"+ (\ x ->+ FailureDetails' <$>+ (x .:? "LogFile") <*> (x .:? "Reason") <*>+ (x .:? "Message"))++instance Hashable FailureDetails where++instance NFData FailureDetails where++-- | A job flow step consisting of a JAR file whose main function will be executed. The main function submits a job for Hadoop to execute and waits for the job to finish or fail.+--+--+--+-- /See:/ 'hadoopJARStepConfig' smart constructor.+data HadoopJARStepConfig = HadoopJARStepConfig'+ { _hjscArgs :: !(Maybe [Text])+ , _hjscMainClass :: !(Maybe Text)+ , _hjscProperties :: !(Maybe [KeyValue])+ , _hjscJAR :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'HadoopJARStepConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'hjscArgs' - A list of command line arguments passed to the JAR file's main function when executed.+--+-- * 'hjscMainClass' - The name of the main class in the specified Java file. If not specified, the JAR file should specify a Main-Class in its manifest file.+--+-- * 'hjscProperties' - A list of Java properties that are set when the step runs. You can use these properties to pass key value pairs to your main function.+--+-- * 'hjscJAR' - A path to a JAR file run during the step.+hadoopJARStepConfig+ :: Text -- ^ 'hjscJAR'+ -> HadoopJARStepConfig+hadoopJARStepConfig pJAR_ =+ HadoopJARStepConfig'+ { _hjscArgs = Nothing+ , _hjscMainClass = Nothing+ , _hjscProperties = Nothing+ , _hjscJAR = pJAR_+ }+++-- | A list of command line arguments passed to the JAR file's main function when executed.+hjscArgs :: Lens' HadoopJARStepConfig [Text]+hjscArgs = lens _hjscArgs (\ s a -> s{_hjscArgs = a}) . _Default . _Coerce;++-- | The name of the main class in the specified Java file. If not specified, the JAR file should specify a Main-Class in its manifest file.+hjscMainClass :: Lens' HadoopJARStepConfig (Maybe Text)+hjscMainClass = lens _hjscMainClass (\ s a -> s{_hjscMainClass = a});++-- | A list of Java properties that are set when the step runs. You can use these properties to pass key value pairs to your main function.+hjscProperties :: Lens' HadoopJARStepConfig [KeyValue]+hjscProperties = lens _hjscProperties (\ s a -> s{_hjscProperties = a}) . _Default . _Coerce;++-- | A path to a JAR file run during the step.+hjscJAR :: Lens' HadoopJARStepConfig Text+hjscJAR = lens _hjscJAR (\ s a -> s{_hjscJAR = a});++instance Hashable HadoopJARStepConfig where++instance NFData HadoopJARStepConfig where++instance ToJSON HadoopJARStepConfig where+ toJSON HadoopJARStepConfig'{..}+ = object+ (catMaybes+ [("Args" .=) <$> _hjscArgs,+ ("MainClass" .=) <$> _hjscMainClass,+ ("Properties" .=) <$> _hjscProperties,+ Just ("Jar" .= _hjscJAR)])++-- | A cluster step consisting of a JAR file whose main function will be executed. The main function submits a job for Hadoop to execute and waits for the job to finish or fail.+--+--+--+-- /See:/ 'hadoopStepConfig' smart constructor.+data HadoopStepConfig = HadoopStepConfig'+ { _hscArgs :: !(Maybe [Text])+ , _hscJAR :: !(Maybe Text)+ , _hscMainClass :: !(Maybe Text)+ , _hscProperties :: !(Maybe (Map Text Text))+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'HadoopStepConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'hscArgs' - The list of command line arguments to pass to the JAR file's main function for execution.+--+-- * 'hscJAR' - The path to the JAR file that runs during the step.+--+-- * 'hscMainClass' - The name of the main class in the specified Java file. If not specified, the JAR file should specify a main class in its manifest file.+--+-- * 'hscProperties' - The list of Java properties that are set when the step runs. You can use these properties to pass key value pairs to your main function.+hadoopStepConfig+ :: HadoopStepConfig+hadoopStepConfig =+ HadoopStepConfig'+ { _hscArgs = Nothing+ , _hscJAR = Nothing+ , _hscMainClass = Nothing+ , _hscProperties = Nothing+ }+++-- | The list of command line arguments to pass to the JAR file's main function for execution.+hscArgs :: Lens' HadoopStepConfig [Text]+hscArgs = lens _hscArgs (\ s a -> s{_hscArgs = a}) . _Default . _Coerce;++-- | The path to the JAR file that runs during the step.+hscJAR :: Lens' HadoopStepConfig (Maybe Text)+hscJAR = lens _hscJAR (\ s a -> s{_hscJAR = a});++-- | The name of the main class in the specified Java file. If not specified, the JAR file should specify a main class in its manifest file.+hscMainClass :: Lens' HadoopStepConfig (Maybe Text)+hscMainClass = lens _hscMainClass (\ s a -> s{_hscMainClass = a});++-- | The list of Java properties that are set when the step runs. You can use these properties to pass key value pairs to your main function.+hscProperties :: Lens' HadoopStepConfig (HashMap Text Text)+hscProperties = lens _hscProperties (\ s a -> s{_hscProperties = a}) . _Default . _Map;++instance FromJSON HadoopStepConfig where+ parseJSON+ = withObject "HadoopStepConfig"+ (\ x ->+ HadoopStepConfig' <$>+ (x .:? "Args" .!= mempty) <*> (x .:? "Jar") <*>+ (x .:? "MainClass")+ <*> (x .:? "Properties" .!= mempty))++instance Hashable HadoopStepConfig where++instance NFData HadoopStepConfig where++-- | Represents an EC2 instance provisioned as part of cluster.+--+--+--+-- /See:/ 'instance'' smart constructor.+data Instance = Instance'+ { _iStatus :: !(Maybe InstanceStatus)+ , _iPublicDNSName :: !(Maybe Text)+ , _iEBSVolumes :: !(Maybe [EBSVolume])+ , _iEC2InstanceId :: !(Maybe Text)+ , _iInstanceType :: !(Maybe Text)+ , _iMarket :: !(Maybe MarketType)+ , _iPrivateIPAddress :: !(Maybe Text)+ , _iInstanceFleetId :: !(Maybe Text)+ , _iId :: !(Maybe Text)+ , _iInstanceGroupId :: !(Maybe Text)+ , _iPrivateDNSName :: !(Maybe Text)+ , _iPublicIPAddress :: !(Maybe Text)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'Instance' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'iStatus' - The current status of the instance.+--+-- * 'iPublicDNSName' - The public DNS name of the instance.+--+-- * 'iEBSVolumes' - The list of EBS volumes that are attached to this instance.+--+-- * 'iEC2InstanceId' - The unique identifier of the instance in Amazon EC2.+--+-- * 'iInstanceType' - The EC2 instance type, for example @m3.xlarge@ .+--+-- * 'iMarket' - The instance purchasing option. Valid values are @ON_DEMAND@ or @SPOT@ .+--+-- * 'iPrivateIPAddress' - The private IP address of the instance.+--+-- * 'iInstanceFleetId' - The unique identifier of the instance fleet to which an EC2 instance belongs.+--+-- * 'iId' - The unique identifier for the instance in Amazon EMR.+--+-- * 'iInstanceGroupId' - The identifier of the instance group to which this instance belongs.+--+-- * 'iPrivateDNSName' - The private DNS name of the instance.+--+-- * 'iPublicIPAddress' - The public IP address of the instance.+instance'+ :: Instance+instance' =+ Instance'+ { _iStatus = Nothing+ , _iPublicDNSName = Nothing+ , _iEBSVolumes = Nothing+ , _iEC2InstanceId = Nothing+ , _iInstanceType = Nothing+ , _iMarket = Nothing+ , _iPrivateIPAddress = Nothing+ , _iInstanceFleetId = Nothing+ , _iId = Nothing+ , _iInstanceGroupId = Nothing+ , _iPrivateDNSName = Nothing+ , _iPublicIPAddress = Nothing+ }+++-- | The current status of the instance.+iStatus :: Lens' Instance (Maybe InstanceStatus)+iStatus = lens _iStatus (\ s a -> s{_iStatus = a});++-- | The public DNS name of the instance.+iPublicDNSName :: Lens' Instance (Maybe Text)+iPublicDNSName = lens _iPublicDNSName (\ s a -> s{_iPublicDNSName = a});++-- | The list of EBS volumes that are attached to this instance.+iEBSVolumes :: Lens' Instance [EBSVolume]+iEBSVolumes = lens _iEBSVolumes (\ s a -> s{_iEBSVolumes = a}) . _Default . _Coerce;++-- | The unique identifier of the instance in Amazon EC2.+iEC2InstanceId :: Lens' Instance (Maybe Text)+iEC2InstanceId = lens _iEC2InstanceId (\ s a -> s{_iEC2InstanceId = a});++-- | The EC2 instance type, for example @m3.xlarge@ .+iInstanceType :: Lens' Instance (Maybe Text)+iInstanceType = lens _iInstanceType (\ s a -> s{_iInstanceType = a});++-- | The instance purchasing option. Valid values are @ON_DEMAND@ or @SPOT@ .+iMarket :: Lens' Instance (Maybe MarketType)+iMarket = lens _iMarket (\ s a -> s{_iMarket = a});++-- | The private IP address of the instance.+iPrivateIPAddress :: Lens' Instance (Maybe Text)+iPrivateIPAddress = lens _iPrivateIPAddress (\ s a -> s{_iPrivateIPAddress = a});++-- | The unique identifier of the instance fleet to which an EC2 instance belongs.+iInstanceFleetId :: Lens' Instance (Maybe Text)+iInstanceFleetId = lens _iInstanceFleetId (\ s a -> s{_iInstanceFleetId = a});++-- | The unique identifier for the instance in Amazon EMR.+iId :: Lens' Instance (Maybe Text)+iId = lens _iId (\ s a -> s{_iId = a});++-- | The identifier of the instance group to which this instance belongs.+iInstanceGroupId :: Lens' Instance (Maybe Text)+iInstanceGroupId = lens _iInstanceGroupId (\ s a -> s{_iInstanceGroupId = a});++-- | The private DNS name of the instance.+iPrivateDNSName :: Lens' Instance (Maybe Text)+iPrivateDNSName = lens _iPrivateDNSName (\ s a -> s{_iPrivateDNSName = a});++-- | The public IP address of the instance.+iPublicIPAddress :: Lens' Instance (Maybe Text)+iPublicIPAddress = lens _iPublicIPAddress (\ s a -> s{_iPublicIPAddress = a});++instance FromJSON Instance where+ parseJSON+ = withObject "Instance"+ (\ x ->+ Instance' <$>+ (x .:? "Status") <*> (x .:? "PublicDnsName") <*>+ (x .:? "EbsVolumes" .!= mempty)+ <*> (x .:? "Ec2InstanceId")+ <*> (x .:? "InstanceType")+ <*> (x .:? "Market")+ <*> (x .:? "PrivateIpAddress")+ <*> (x .:? "InstanceFleetId")+ <*> (x .:? "Id")+ <*> (x .:? "InstanceGroupId")+ <*> (x .:? "PrivateDnsName")+ <*> (x .:? "PublicIpAddress"))++instance Hashable Instance where++instance NFData Instance where++-- | Describes an instance fleet, which is a group of EC2 instances that host a particular node type (master, core, or task) in an Amazon EMR cluster. Instance fleets can consist of a mix of instance types and On-Demand and Spot instances, which are provisioned to meet a defined target capacity.+--+--+--+-- /See:/ 'instanceFleet' smart constructor.+data InstanceFleet = InstanceFleet'+ { _ifProvisionedSpotCapacity :: !(Maybe Nat)+ , _ifStatus :: !(Maybe InstanceFleetStatus)+ , _ifTargetOnDemandCapacity :: !(Maybe Nat)+ , _ifInstanceFleetType :: !(Maybe InstanceFleetType)+ , _ifInstanceTypeSpecifications :: !(Maybe [InstanceTypeSpecification])+ , _ifName :: !(Maybe Text)+ , _ifProvisionedOnDemandCapacity :: !(Maybe Nat)+ , _ifTargetSpotCapacity :: !(Maybe Nat)+ , _ifId :: !(Maybe Text)+ , _ifLaunchSpecifications :: !(Maybe InstanceFleetProvisioningSpecifications)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'InstanceFleet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ifProvisionedSpotCapacity' - The number of Spot units that have been provisioned for this instance fleet to fulfill @TargetSpotCapacity@ . This provisioned capacity might be less than or greater than @TargetSpotCapacity@ .+--+-- * 'ifStatus' - The current status of the instance fleet.+--+-- * 'ifTargetOnDemandCapacity' - The target capacity of On-Demand units for the instance fleet, which determines how many On-Demand instances to provision. When the instance fleet launches, Amazon EMR tries to provision On-Demand instances as specified by 'InstanceTypeConfig' . Each instance configuration has a specified @WeightedCapacity@ . When an On-Demand instance is provisioned, the @WeightedCapacity@ units count toward the target capacity. Amazon EMR provisions instances until the target capacity is totally fulfilled, even if this results in an overage. For example, if there are 2 units remaining to fulfill capacity, and Amazon EMR can only provision an instance with a @WeightedCapacity@ of 5 units, the instance is provisioned, and the target capacity is exceeded by 3 units. You can use 'InstanceFleet$ProvisionedOnDemandCapacity' to determine the Spot capacity units that have been provisioned for the instance fleet.+--+-- * 'ifInstanceFleetType' - The node type that the instance fleet hosts. Valid values are MASTER, CORE, or TASK.+--+-- * 'ifInstanceTypeSpecifications' - The specification for the instance types that comprise an instance fleet. Up to five unique instance specifications may be defined for each instance fleet.+--+-- * 'ifName' - A friendly name for the instance fleet.+--+-- * 'ifProvisionedOnDemandCapacity' - The number of On-Demand units that have been provisioned for the instance fleet to fulfill @TargetOnDemandCapacity@ . This provisioned capacity might be less than or greater than @TargetOnDemandCapacity@ .+--+-- * 'ifTargetSpotCapacity' - The target capacity of Spot units for the instance fleet, which determines how many Spot instances to provision. When the instance fleet launches, Amazon EMR tries to provision Spot instances as specified by 'InstanceTypeConfig' . Each instance configuration has a specified @WeightedCapacity@ . When a Spot instance is provisioned, the @WeightedCapacity@ units count toward the target capacity. Amazon EMR provisions instances until the target capacity is totally fulfilled, even if this results in an overage. For example, if there are 2 units remaining to fulfill capacity, and Amazon EMR can only provision an instance with a @WeightedCapacity@ of 5 units, the instance is provisioned, and the target capacity is exceeded by 3 units. You can use 'InstanceFleet$ProvisionedSpotCapacity' to determine the Spot capacity units that have been provisioned for the instance fleet.+--+-- * 'ifId' - The unique identifier of the instance fleet.+--+-- * 'ifLaunchSpecifications' - Describes the launch specification for an instance fleet.+instanceFleet+ :: InstanceFleet+instanceFleet =+ InstanceFleet'+ { _ifProvisionedSpotCapacity = Nothing+ , _ifStatus = Nothing+ , _ifTargetOnDemandCapacity = Nothing+ , _ifInstanceFleetType = Nothing+ , _ifInstanceTypeSpecifications = Nothing+ , _ifName = Nothing+ , _ifProvisionedOnDemandCapacity = Nothing+ , _ifTargetSpotCapacity = Nothing+ , _ifId = Nothing+ , _ifLaunchSpecifications = Nothing+ }+++-- | The number of Spot units that have been provisioned for this instance fleet to fulfill @TargetSpotCapacity@ . This provisioned capacity might be less than or greater than @TargetSpotCapacity@ .+ifProvisionedSpotCapacity :: Lens' InstanceFleet (Maybe Natural)+ifProvisionedSpotCapacity = lens _ifProvisionedSpotCapacity (\ s a -> s{_ifProvisionedSpotCapacity = a}) . mapping _Nat;++-- | The current status of the instance fleet.+ifStatus :: Lens' InstanceFleet (Maybe InstanceFleetStatus)+ifStatus = lens _ifStatus (\ s a -> s{_ifStatus = a});++-- | The target capacity of On-Demand units for the instance fleet, which determines how many On-Demand instances to provision. When the instance fleet launches, Amazon EMR tries to provision On-Demand instances as specified by 'InstanceTypeConfig' . Each instance configuration has a specified @WeightedCapacity@ . When an On-Demand instance is provisioned, the @WeightedCapacity@ units count toward the target capacity. Amazon EMR provisions instances until the target capacity is totally fulfilled, even if this results in an overage. For example, if there are 2 units remaining to fulfill capacity, and Amazon EMR can only provision an instance with a @WeightedCapacity@ of 5 units, the instance is provisioned, and the target capacity is exceeded by 3 units. You can use 'InstanceFleet$ProvisionedOnDemandCapacity' to determine the Spot capacity units that have been provisioned for the instance fleet.+ifTargetOnDemandCapacity :: Lens' InstanceFleet (Maybe Natural)+ifTargetOnDemandCapacity = lens _ifTargetOnDemandCapacity (\ s a -> s{_ifTargetOnDemandCapacity = a}) . mapping _Nat;++-- | The node type that the instance fleet hosts. Valid values are MASTER, CORE, or TASK.+ifInstanceFleetType :: Lens' InstanceFleet (Maybe InstanceFleetType)+ifInstanceFleetType = lens _ifInstanceFleetType (\ s a -> s{_ifInstanceFleetType = a});++-- | The specification for the instance types that comprise an instance fleet. Up to five unique instance specifications may be defined for each instance fleet.+ifInstanceTypeSpecifications :: Lens' InstanceFleet [InstanceTypeSpecification]+ifInstanceTypeSpecifications = lens _ifInstanceTypeSpecifications (\ s a -> s{_ifInstanceTypeSpecifications = a}) . _Default . _Coerce;++-- | A friendly name for the instance fleet.+ifName :: Lens' InstanceFleet (Maybe Text)+ifName = lens _ifName (\ s a -> s{_ifName = a});++-- | The number of On-Demand units that have been provisioned for the instance fleet to fulfill @TargetOnDemandCapacity@ . This provisioned capacity might be less than or greater than @TargetOnDemandCapacity@ .+ifProvisionedOnDemandCapacity :: Lens' InstanceFleet (Maybe Natural)+ifProvisionedOnDemandCapacity = lens _ifProvisionedOnDemandCapacity (\ s a -> s{_ifProvisionedOnDemandCapacity = a}) . mapping _Nat;++-- | The target capacity of Spot units for the instance fleet, which determines how many Spot instances to provision. When the instance fleet launches, Amazon EMR tries to provision Spot instances as specified by 'InstanceTypeConfig' . Each instance configuration has a specified @WeightedCapacity@ . When a Spot instance is provisioned, the @WeightedCapacity@ units count toward the target capacity. Amazon EMR provisions instances until the target capacity is totally fulfilled, even if this results in an overage. For example, if there are 2 units remaining to fulfill capacity, and Amazon EMR can only provision an instance with a @WeightedCapacity@ of 5 units, the instance is provisioned, and the target capacity is exceeded by 3 units. You can use 'InstanceFleet$ProvisionedSpotCapacity' to determine the Spot capacity units that have been provisioned for the instance fleet.+ifTargetSpotCapacity :: Lens' InstanceFleet (Maybe Natural)+ifTargetSpotCapacity = lens _ifTargetSpotCapacity (\ s a -> s{_ifTargetSpotCapacity = a}) . mapping _Nat;++-- | The unique identifier of the instance fleet.+ifId :: Lens' InstanceFleet (Maybe Text)+ifId = lens _ifId (\ s a -> s{_ifId = a});++-- | Describes the launch specification for an instance fleet.+ifLaunchSpecifications :: Lens' InstanceFleet (Maybe InstanceFleetProvisioningSpecifications)+ifLaunchSpecifications = lens _ifLaunchSpecifications (\ s a -> s{_ifLaunchSpecifications = a});++instance FromJSON InstanceFleet where+ parseJSON+ = withObject "InstanceFleet"+ (\ x ->+ InstanceFleet' <$>+ (x .:? "ProvisionedSpotCapacity") <*>+ (x .:? "Status")+ <*> (x .:? "TargetOnDemandCapacity")+ <*> (x .:? "InstanceFleetType")+ <*> (x .:? "InstanceTypeSpecifications" .!= mempty)+ <*> (x .:? "Name")+ <*> (x .:? "ProvisionedOnDemandCapacity")+ <*> (x .:? "TargetSpotCapacity")+ <*> (x .:? "Id")+ <*> (x .:? "LaunchSpecifications"))++instance Hashable InstanceFleet where++instance NFData InstanceFleet where++-- | The configuration that defines an instance fleet.+--+--+--+-- /See:/ 'instanceFleetConfig' smart constructor.+data InstanceFleetConfig = InstanceFleetConfig'+ { _ifcInstanceTypeConfigs :: !(Maybe [InstanceTypeConfig])+ , _ifcTargetOnDemandCapacity :: !(Maybe Nat)+ , _ifcName :: !(Maybe Text)+ , _ifcTargetSpotCapacity :: !(Maybe Nat)+ , _ifcLaunchSpecifications :: !(Maybe InstanceFleetProvisioningSpecifications)+ , _ifcInstanceFleetType :: !InstanceFleetType+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'InstanceFleetConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ifcInstanceTypeConfigs' - The instance type configurations that define the EC2 instances in the instance fleet.+--+-- * 'ifcTargetOnDemandCapacity' - The target capacity of On-Demand units for the instance fleet, which determines how many On-Demand instances to provision. When the instance fleet launches, Amazon EMR tries to provision On-Demand instances as specified by 'InstanceTypeConfig' . Each instance configuration has a specified @WeightedCapacity@ . When an On-Demand instance is provisioned, the @WeightedCapacity@ units count toward the target capacity. Amazon EMR provisions instances until the target capacity is totally fulfilled, even if this results in an overage. For example, if there are 2 units remaining to fulfill capacity, and Amazon EMR can only provision an instance with a @WeightedCapacity@ of 5 units, the instance is provisioned, and the target capacity is exceeded by 3 units.+--+-- * 'ifcName' - The friendly name of the instance fleet.+--+-- * 'ifcTargetSpotCapacity' - The target capacity of Spot units for the instance fleet, which determines how many Spot instances to provision. When the instance fleet launches, Amazon EMR tries to provision Spot instances as specified by 'InstanceTypeConfig' . Each instance configuration has a specified @WeightedCapacity@ . When a Spot instance is provisioned, the @WeightedCapacity@ units count toward the target capacity. Amazon EMR provisions instances until the target capacity is totally fulfilled, even if this results in an overage. For example, if there are 2 units remaining to fulfill capacity, and Amazon EMR can only provision an instance with a @WeightedCapacity@ of 5 units, the instance is provisioned, and the target capacity is exceeded by 3 units.+--+-- * 'ifcLaunchSpecifications' - The launch specification for the instance fleet.+--+-- * 'ifcInstanceFleetType' - The node type that the instance fleet hosts. Valid values are MASTER,CORE,and TASK.+instanceFleetConfig+ :: InstanceFleetType -- ^ 'ifcInstanceFleetType'+ -> InstanceFleetConfig+instanceFleetConfig pInstanceFleetType_ =+ InstanceFleetConfig'+ { _ifcInstanceTypeConfigs = Nothing+ , _ifcTargetOnDemandCapacity = Nothing+ , _ifcName = Nothing+ , _ifcTargetSpotCapacity = Nothing+ , _ifcLaunchSpecifications = Nothing+ , _ifcInstanceFleetType = pInstanceFleetType_+ }+++-- | The instance type configurations that define the EC2 instances in the instance fleet.+ifcInstanceTypeConfigs :: Lens' InstanceFleetConfig [InstanceTypeConfig]+ifcInstanceTypeConfigs = lens _ifcInstanceTypeConfigs (\ s a -> s{_ifcInstanceTypeConfigs = a}) . _Default . _Coerce;++-- | The target capacity of On-Demand units for the instance fleet, which determines how many On-Demand instances to provision. When the instance fleet launches, Amazon EMR tries to provision On-Demand instances as specified by 'InstanceTypeConfig' . Each instance configuration has a specified @WeightedCapacity@ . When an On-Demand instance is provisioned, the @WeightedCapacity@ units count toward the target capacity. Amazon EMR provisions instances until the target capacity is totally fulfilled, even if this results in an overage. For example, if there are 2 units remaining to fulfill capacity, and Amazon EMR can only provision an instance with a @WeightedCapacity@ of 5 units, the instance is provisioned, and the target capacity is exceeded by 3 units.+ifcTargetOnDemandCapacity :: Lens' InstanceFleetConfig (Maybe Natural)+ifcTargetOnDemandCapacity = lens _ifcTargetOnDemandCapacity (\ s a -> s{_ifcTargetOnDemandCapacity = a}) . mapping _Nat;++-- | The friendly name of the instance fleet.+ifcName :: Lens' InstanceFleetConfig (Maybe Text)+ifcName = lens _ifcName (\ s a -> s{_ifcName = a});++-- | The target capacity of Spot units for the instance fleet, which determines how many Spot instances to provision. When the instance fleet launches, Amazon EMR tries to provision Spot instances as specified by 'InstanceTypeConfig' . Each instance configuration has a specified @WeightedCapacity@ . When a Spot instance is provisioned, the @WeightedCapacity@ units count toward the target capacity. Amazon EMR provisions instances until the target capacity is totally fulfilled, even if this results in an overage. For example, if there are 2 units remaining to fulfill capacity, and Amazon EMR can only provision an instance with a @WeightedCapacity@ of 5 units, the instance is provisioned, and the target capacity is exceeded by 3 units.+ifcTargetSpotCapacity :: Lens' InstanceFleetConfig (Maybe Natural)+ifcTargetSpotCapacity = lens _ifcTargetSpotCapacity (\ s a -> s{_ifcTargetSpotCapacity = a}) . mapping _Nat;++-- | The launch specification for the instance fleet.+ifcLaunchSpecifications :: Lens' InstanceFleetConfig (Maybe InstanceFleetProvisioningSpecifications)+ifcLaunchSpecifications = lens _ifcLaunchSpecifications (\ s a -> s{_ifcLaunchSpecifications = a});++-- | The node type that the instance fleet hosts. Valid values are MASTER,CORE,and TASK.+ifcInstanceFleetType :: Lens' InstanceFleetConfig InstanceFleetType+ifcInstanceFleetType = lens _ifcInstanceFleetType (\ s a -> s{_ifcInstanceFleetType = a});++instance Hashable InstanceFleetConfig where++instance NFData InstanceFleetConfig where++instance ToJSON InstanceFleetConfig where+ toJSON InstanceFleetConfig'{..}+ = object+ (catMaybes+ [("InstanceTypeConfigs" .=) <$>+ _ifcInstanceTypeConfigs,+ ("TargetOnDemandCapacity" .=) <$>+ _ifcTargetOnDemandCapacity,+ ("Name" .=) <$> _ifcName,+ ("TargetSpotCapacity" .=) <$> _ifcTargetSpotCapacity,+ ("LaunchSpecifications" .=) <$>+ _ifcLaunchSpecifications,+ Just ("InstanceFleetType" .= _ifcInstanceFleetType)])++-- | Configuration parameters for an instance fleet modification request.+--+--+--+-- /See:/ 'instanceFleetModifyConfig' smart constructor.+data InstanceFleetModifyConfig = InstanceFleetModifyConfig'+ { _ifmcTargetOnDemandCapacity :: !(Maybe Nat)+ , _ifmcTargetSpotCapacity :: !(Maybe Nat)+ , _ifmcInstanceFleetId :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'InstanceFleetModifyConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ifmcTargetOnDemandCapacity' - The target capacity of On-Demand units for the instance fleet. For more information see 'InstanceFleetConfig$TargetOnDemandCapacity' .+--+-- * 'ifmcTargetSpotCapacity' - The target capacity of Spot units for the instance fleet. For more information, see 'InstanceFleetConfig$TargetSpotCapacity' .+--+-- * 'ifmcInstanceFleetId' - A unique identifier for the instance fleet.+instanceFleetModifyConfig+ :: Text -- ^ 'ifmcInstanceFleetId'+ -> InstanceFleetModifyConfig+instanceFleetModifyConfig pInstanceFleetId_ =+ InstanceFleetModifyConfig'+ { _ifmcTargetOnDemandCapacity = Nothing+ , _ifmcTargetSpotCapacity = Nothing+ , _ifmcInstanceFleetId = pInstanceFleetId_+ }+++-- | The target capacity of On-Demand units for the instance fleet. For more information see 'InstanceFleetConfig$TargetOnDemandCapacity' .+ifmcTargetOnDemandCapacity :: Lens' InstanceFleetModifyConfig (Maybe Natural)+ifmcTargetOnDemandCapacity = lens _ifmcTargetOnDemandCapacity (\ s a -> s{_ifmcTargetOnDemandCapacity = a}) . mapping _Nat;++-- | The target capacity of Spot units for the instance fleet. For more information, see 'InstanceFleetConfig$TargetSpotCapacity' .+ifmcTargetSpotCapacity :: Lens' InstanceFleetModifyConfig (Maybe Natural)+ifmcTargetSpotCapacity = lens _ifmcTargetSpotCapacity (\ s a -> s{_ifmcTargetSpotCapacity = a}) . mapping _Nat;++-- | A unique identifier for the instance fleet.+ifmcInstanceFleetId :: Lens' InstanceFleetModifyConfig Text+ifmcInstanceFleetId = lens _ifmcInstanceFleetId (\ s a -> s{_ifmcInstanceFleetId = a});++instance Hashable InstanceFleetModifyConfig where++instance NFData InstanceFleetModifyConfig where++instance ToJSON InstanceFleetModifyConfig where+ toJSON InstanceFleetModifyConfig'{..}+ = object+ (catMaybes+ [("TargetOnDemandCapacity" .=) <$>+ _ifmcTargetOnDemandCapacity,+ ("TargetSpotCapacity" .=) <$>+ _ifmcTargetSpotCapacity,+ Just ("InstanceFleetId" .= _ifmcInstanceFleetId)])++-- | The launch specification for Spot instances in the fleet, which determines the defined duration and provisioning timeout behavior.+--+--+--+-- /See:/ 'instanceFleetProvisioningSpecifications' smart constructor.+newtype InstanceFleetProvisioningSpecifications = InstanceFleetProvisioningSpecifications'+ { _ifpsSpotSpecification :: SpotProvisioningSpecification+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'InstanceFleetProvisioningSpecifications' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ifpsSpotSpecification' - The launch specification for Spot instances in the fleet, which determines the defined duration and provisioning timeout behavior.+instanceFleetProvisioningSpecifications+ :: SpotProvisioningSpecification -- ^ 'ifpsSpotSpecification'+ -> InstanceFleetProvisioningSpecifications+instanceFleetProvisioningSpecifications pSpotSpecification_ =+ InstanceFleetProvisioningSpecifications'+ {_ifpsSpotSpecification = pSpotSpecification_}+++-- | The launch specification for Spot instances in the fleet, which determines the defined duration and provisioning timeout behavior.+ifpsSpotSpecification :: Lens' InstanceFleetProvisioningSpecifications SpotProvisioningSpecification+ifpsSpotSpecification = lens _ifpsSpotSpecification (\ s a -> s{_ifpsSpotSpecification = a});++instance FromJSON+ InstanceFleetProvisioningSpecifications+ where+ parseJSON+ = withObject+ "InstanceFleetProvisioningSpecifications"+ (\ x ->+ InstanceFleetProvisioningSpecifications' <$>+ (x .: "SpotSpecification"))++instance Hashable+ InstanceFleetProvisioningSpecifications+ where++instance NFData+ InstanceFleetProvisioningSpecifications+ where++instance ToJSON+ InstanceFleetProvisioningSpecifications+ where+ toJSON InstanceFleetProvisioningSpecifications'{..}+ = object+ (catMaybes+ [Just+ ("SpotSpecification" .= _ifpsSpotSpecification)])++-- | Provides status change reason details for the instance fleet.+--+--+--+-- /See:/ 'instanceFleetStateChangeReason' smart constructor.+data InstanceFleetStateChangeReason = InstanceFleetStateChangeReason'+ { _ifscrCode :: !(Maybe InstanceFleetStateChangeReasonCode)+ , _ifscrMessage :: !(Maybe Text)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'InstanceFleetStateChangeReason' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ifscrCode' - A code corresponding to the reason the state change occurred.+--+-- * 'ifscrMessage' - An explanatory message.+instanceFleetStateChangeReason+ :: InstanceFleetStateChangeReason+instanceFleetStateChangeReason =+ InstanceFleetStateChangeReason'+ {_ifscrCode = Nothing, _ifscrMessage = Nothing}+++-- | A code corresponding to the reason the state change occurred.+ifscrCode :: Lens' InstanceFleetStateChangeReason (Maybe InstanceFleetStateChangeReasonCode)+ifscrCode = lens _ifscrCode (\ s a -> s{_ifscrCode = a});++-- | An explanatory message.+ifscrMessage :: Lens' InstanceFleetStateChangeReason (Maybe Text)+ifscrMessage = lens _ifscrMessage (\ s a -> s{_ifscrMessage = a});++instance FromJSON InstanceFleetStateChangeReason+ where+ parseJSON+ = withObject "InstanceFleetStateChangeReason"+ (\ x ->+ InstanceFleetStateChangeReason' <$>+ (x .:? "Code") <*> (x .:? "Message"))++instance Hashable InstanceFleetStateChangeReason+ where++instance NFData InstanceFleetStateChangeReason where++-- | The status of the instance fleet.+--+--+--+-- /See:/ 'instanceFleetStatus' smart constructor.+data InstanceFleetStatus = InstanceFleetStatus'+ { _ifsState :: !(Maybe InstanceFleetState)+ , _ifsStateChangeReason :: !(Maybe InstanceFleetStateChangeReason)+ , _ifsTimeline :: !(Maybe InstanceFleetTimeline)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'InstanceFleetStatus' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ifsState' - A code representing the instance fleet status.+--+-- * 'ifsStateChangeReason' - Provides status change reason details for the instance fleet.+--+-- * 'ifsTimeline' - Provides historical timestamps for the instance fleet, including the time of creation, the time it became ready to run jobs, and the time of termination.+instanceFleetStatus+ :: InstanceFleetStatus+instanceFleetStatus =+ InstanceFleetStatus'+ {_ifsState = Nothing, _ifsStateChangeReason = Nothing, _ifsTimeline = Nothing}+++-- | A code representing the instance fleet status.+ifsState :: Lens' InstanceFleetStatus (Maybe InstanceFleetState)+ifsState = lens _ifsState (\ s a -> s{_ifsState = a});++-- | Provides status change reason details for the instance fleet.+ifsStateChangeReason :: Lens' InstanceFleetStatus (Maybe InstanceFleetStateChangeReason)+ifsStateChangeReason = lens _ifsStateChangeReason (\ s a -> s{_ifsStateChangeReason = a});++-- | Provides historical timestamps for the instance fleet, including the time of creation, the time it became ready to run jobs, and the time of termination.+ifsTimeline :: Lens' InstanceFleetStatus (Maybe InstanceFleetTimeline)+ifsTimeline = lens _ifsTimeline (\ s a -> s{_ifsTimeline = a});++instance FromJSON InstanceFleetStatus where+ parseJSON+ = withObject "InstanceFleetStatus"+ (\ x ->+ InstanceFleetStatus' <$>+ (x .:? "State") <*> (x .:? "StateChangeReason") <*>+ (x .:? "Timeline"))++instance Hashable InstanceFleetStatus where++instance NFData InstanceFleetStatus where++-- | Provides historical timestamps for the instance fleet, including the time of creation, the time it became ready to run jobs, and the time of termination.+--+--+--+-- /See:/ 'instanceFleetTimeline' smart constructor.+data InstanceFleetTimeline = InstanceFleetTimeline'+ { _iftReadyDateTime :: !(Maybe POSIX)+ , _iftCreationDateTime :: !(Maybe POSIX)+ , _iftEndDateTime :: !(Maybe POSIX)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'InstanceFleetTimeline' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'iftReadyDateTime' - The time and date the instance fleet was ready to run jobs.+--+-- * 'iftCreationDateTime' - The time and date the instance fleet was created.+--+-- * 'iftEndDateTime' - The time and date the instance fleet terminated.+instanceFleetTimeline+ :: InstanceFleetTimeline+instanceFleetTimeline =+ InstanceFleetTimeline'+ { _iftReadyDateTime = Nothing+ , _iftCreationDateTime = Nothing+ , _iftEndDateTime = Nothing+ }+++-- | The time and date the instance fleet was ready to run jobs.+iftReadyDateTime :: Lens' InstanceFleetTimeline (Maybe UTCTime)+iftReadyDateTime = lens _iftReadyDateTime (\ s a -> s{_iftReadyDateTime = a}) . mapping _Time;++-- | The time and date the instance fleet was created.+iftCreationDateTime :: Lens' InstanceFleetTimeline (Maybe UTCTime)+iftCreationDateTime = lens _iftCreationDateTime (\ s a -> s{_iftCreationDateTime = a}) . mapping _Time;++-- | The time and date the instance fleet terminated.+iftEndDateTime :: Lens' InstanceFleetTimeline (Maybe UTCTime)+iftEndDateTime = lens _iftEndDateTime (\ s a -> s{_iftEndDateTime = a}) . mapping _Time;++instance FromJSON InstanceFleetTimeline where+ parseJSON+ = withObject "InstanceFleetTimeline"+ (\ x ->+ InstanceFleetTimeline' <$>+ (x .:? "ReadyDateTime") <*>+ (x .:? "CreationDateTime")+ <*> (x .:? "EndDateTime"))++instance Hashable InstanceFleetTimeline where++instance NFData InstanceFleetTimeline where++-- | This entity represents an instance group, which is a group of instances that have common purpose. For example, CORE instance group is used for HDFS.+--+--+--+-- /See:/ 'instanceGroup' smart constructor.+data InstanceGroup = InstanceGroup'+ { _igStatus :: !(Maybe InstanceGroupStatus)+ , _igBidPrice :: !(Maybe Text)+ , _igRequestedInstanceCount :: !(Maybe Int)+ , _igRunningInstanceCount :: !(Maybe Int)+ , _igConfigurations :: !(Maybe [Configuration])+ , _igInstanceGroupType :: !(Maybe InstanceGroupType)+ , _igEBSBlockDevices :: !(Maybe [EBSBlockDevice])+ , _igInstanceType :: !(Maybe Text)+ , _igEBSOptimized :: !(Maybe Bool)+ , _igMarket :: !(Maybe MarketType)+ , _igName :: !(Maybe Text)+ , _igAutoScalingPolicy :: !(Maybe AutoScalingPolicyDescription)+ , _igShrinkPolicy :: !(Maybe ShrinkPolicy)+ , _igId :: !(Maybe Text)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'InstanceGroup' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igStatus' - The current status of the instance group.+--+-- * 'igBidPrice' - The bid price for each EC2 instance in the instance group when launching nodes as Spot Instances, expressed in USD.+--+-- * 'igRequestedInstanceCount' - The target number of instances for the instance group.+--+-- * 'igRunningInstanceCount' - The number of instances currently running in this instance group.+--+-- * 'igConfigurations' - The list of configurations supplied for an EMR cluster instance group. You can specify a separate configuration for each instance group (master, core, and task).+--+-- * 'igInstanceGroupType' - The type of the instance group. Valid values are MASTER, CORE or TASK.+--+-- * 'igEBSBlockDevices' - The EBS block devices that are mapped to this instance group.+--+-- * 'igInstanceType' - The EC2 instance type for all instances in the instance group.+--+-- * 'igEBSOptimized' - If the instance group is EBS-optimized. An Amazon EBS-optimized instance uses an optimized configuration stack and provides additional, dedicated capacity for Amazon EBS I/O.+--+-- * 'igMarket' - The marketplace to provision instances for this group. Valid values are ON_DEMAND or SPOT.+--+-- * 'igName' - The name of the instance group.+--+-- * 'igAutoScalingPolicy' - An automatic scaling policy for a core instance group or task instance group in an Amazon EMR cluster. The automatic scaling policy defines how an instance group dynamically adds and terminates EC2 instances in response to the value of a CloudWatch metric. See PutAutoScalingPolicy.+--+-- * 'igShrinkPolicy' - Policy for customizing shrink operations.+--+-- * 'igId' - The identifier of the instance group.+instanceGroup+ :: InstanceGroup+instanceGroup =+ InstanceGroup'+ { _igStatus = Nothing+ , _igBidPrice = Nothing+ , _igRequestedInstanceCount = Nothing+ , _igRunningInstanceCount = Nothing+ , _igConfigurations = Nothing+ , _igInstanceGroupType = Nothing+ , _igEBSBlockDevices = Nothing+ , _igInstanceType = Nothing+ , _igEBSOptimized = Nothing+ , _igMarket = Nothing+ , _igName = Nothing+ , _igAutoScalingPolicy = Nothing+ , _igShrinkPolicy = Nothing+ , _igId = Nothing+ }+++-- | The current status of the instance group.+igStatus :: Lens' InstanceGroup (Maybe InstanceGroupStatus)+igStatus = lens _igStatus (\ s a -> s{_igStatus = a});++-- | The bid price for each EC2 instance in the instance group when launching nodes as Spot Instances, expressed in USD.+igBidPrice :: Lens' InstanceGroup (Maybe Text)+igBidPrice = lens _igBidPrice (\ s a -> s{_igBidPrice = a});++-- | The target number of instances for the instance group.+igRequestedInstanceCount :: Lens' InstanceGroup (Maybe Int)+igRequestedInstanceCount = lens _igRequestedInstanceCount (\ s a -> s{_igRequestedInstanceCount = a});++-- | The number of instances currently running in this instance group.+igRunningInstanceCount :: Lens' InstanceGroup (Maybe Int)+igRunningInstanceCount = lens _igRunningInstanceCount (\ s a -> s{_igRunningInstanceCount = a});++-- | The list of configurations supplied for an EMR cluster instance group. You can specify a separate configuration for each instance group (master, core, and task).+igConfigurations :: Lens' InstanceGroup [Configuration]+igConfigurations = lens _igConfigurations (\ s a -> s{_igConfigurations = a}) . _Default . _Coerce;++-- | The type of the instance group. Valid values are MASTER, CORE or TASK.+igInstanceGroupType :: Lens' InstanceGroup (Maybe InstanceGroupType)+igInstanceGroupType = lens _igInstanceGroupType (\ s a -> s{_igInstanceGroupType = a});++-- | The EBS block devices that are mapped to this instance group.+igEBSBlockDevices :: Lens' InstanceGroup [EBSBlockDevice]+igEBSBlockDevices = lens _igEBSBlockDevices (\ s a -> s{_igEBSBlockDevices = a}) . _Default . _Coerce;++-- | The EC2 instance type for all instances in the instance group.+igInstanceType :: Lens' InstanceGroup (Maybe Text)+igInstanceType = lens _igInstanceType (\ s a -> s{_igInstanceType = a});++-- | If the instance group is EBS-optimized. An Amazon EBS-optimized instance uses an optimized configuration stack and provides additional, dedicated capacity for Amazon EBS I/O.+igEBSOptimized :: Lens' InstanceGroup (Maybe Bool)+igEBSOptimized = lens _igEBSOptimized (\ s a -> s{_igEBSOptimized = a});++-- | The marketplace to provision instances for this group. Valid values are ON_DEMAND or SPOT.+igMarket :: Lens' InstanceGroup (Maybe MarketType)+igMarket = lens _igMarket (\ s a -> s{_igMarket = a});++-- | The name of the instance group.+igName :: Lens' InstanceGroup (Maybe Text)+igName = lens _igName (\ s a -> s{_igName = a});++-- | An automatic scaling policy for a core instance group or task instance group in an Amazon EMR cluster. The automatic scaling policy defines how an instance group dynamically adds and terminates EC2 instances in response to the value of a CloudWatch metric. See PutAutoScalingPolicy.+igAutoScalingPolicy :: Lens' InstanceGroup (Maybe AutoScalingPolicyDescription)+igAutoScalingPolicy = lens _igAutoScalingPolicy (\ s a -> s{_igAutoScalingPolicy = a});++-- | Policy for customizing shrink operations.+igShrinkPolicy :: Lens' InstanceGroup (Maybe ShrinkPolicy)+igShrinkPolicy = lens _igShrinkPolicy (\ s a -> s{_igShrinkPolicy = a});++-- | The identifier of the instance group.+igId :: Lens' InstanceGroup (Maybe Text)+igId = lens _igId (\ s a -> s{_igId = a});++instance FromJSON InstanceGroup where+ parseJSON+ = withObject "InstanceGroup"+ (\ x ->+ InstanceGroup' <$>+ (x .:? "Status") <*> (x .:? "BidPrice") <*>+ (x .:? "RequestedInstanceCount")+ <*> (x .:? "RunningInstanceCount")+ <*> (x .:? "Configurations" .!= mempty)+ <*> (x .:? "InstanceGroupType")+ <*> (x .:? "EbsBlockDevices" .!= mempty)+ <*> (x .:? "InstanceType")+ <*> (x .:? "EbsOptimized")+ <*> (x .:? "Market")+ <*> (x .:? "Name")+ <*> (x .:? "AutoScalingPolicy")+ <*> (x .:? "ShrinkPolicy")+ <*> (x .:? "Id"))++instance Hashable InstanceGroup where++instance NFData InstanceGroup where++-- | Configuration defining a new instance group.+--+--+--+-- /See:/ 'instanceGroupConfig' smart constructor.+data InstanceGroupConfig = InstanceGroupConfig'+ { _igcEBSConfiguration :: !(Maybe EBSConfiguration)+ , _igcBidPrice :: !(Maybe Text)+ , _igcConfigurations :: !(Maybe [Configuration])+ , _igcMarket :: !(Maybe MarketType)+ , _igcName :: !(Maybe Text)+ , _igcAutoScalingPolicy :: !(Maybe AutoScalingPolicy)+ , _igcInstanceRole :: !InstanceRoleType+ , _igcInstanceType :: !Text+ , _igcInstanceCount :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'InstanceGroupConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igcEBSConfiguration' - EBS configurations that will be attached to each EC2 instance in the instance group.+--+-- * 'igcBidPrice' - Bid price for each EC2 instance in the instance group when launching nodes as Spot Instances, expressed in USD.+--+-- * 'igcConfigurations' - The list of configurations supplied for an EMR cluster instance group. You can specify a separate configuration for each instance group (master, core, and task).+--+-- * 'igcMarket' - Market type of the EC2 instances used to create a cluster node.+--+-- * 'igcName' - Friendly name given to the instance group.+--+-- * 'igcAutoScalingPolicy' - An automatic scaling policy for a core instance group or task instance group in an Amazon EMR cluster. The automatic scaling policy defines how an instance group dynamically adds and terminates EC2 instances in response to the value of a CloudWatch metric. See 'PutAutoScalingPolicy' .+--+-- * 'igcInstanceRole' - The role of the instance group in the cluster.+--+-- * 'igcInstanceType' - The EC2 instance type for all instances in the instance group.+--+-- * 'igcInstanceCount' - Target number of instances for the instance group.+instanceGroupConfig+ :: InstanceRoleType -- ^ 'igcInstanceRole'+ -> Text -- ^ 'igcInstanceType'+ -> Int -- ^ 'igcInstanceCount'+ -> InstanceGroupConfig+instanceGroupConfig pInstanceRole_ pInstanceType_ pInstanceCount_ =+ InstanceGroupConfig'+ { _igcEBSConfiguration = Nothing+ , _igcBidPrice = Nothing+ , _igcConfigurations = Nothing+ , _igcMarket = Nothing+ , _igcName = Nothing+ , _igcAutoScalingPolicy = Nothing+ , _igcInstanceRole = pInstanceRole_+ , _igcInstanceType = pInstanceType_+ , _igcInstanceCount = pInstanceCount_+ }+++-- | EBS configurations that will be attached to each EC2 instance in the instance group.+igcEBSConfiguration :: Lens' InstanceGroupConfig (Maybe EBSConfiguration)+igcEBSConfiguration = lens _igcEBSConfiguration (\ s a -> s{_igcEBSConfiguration = a});++-- | Bid price for each EC2 instance in the instance group when launching nodes as Spot Instances, expressed in USD.+igcBidPrice :: Lens' InstanceGroupConfig (Maybe Text)+igcBidPrice = lens _igcBidPrice (\ s a -> s{_igcBidPrice = a});++-- | The list of configurations supplied for an EMR cluster instance group. You can specify a separate configuration for each instance group (master, core, and task).+igcConfigurations :: Lens' InstanceGroupConfig [Configuration]+igcConfigurations = lens _igcConfigurations (\ s a -> s{_igcConfigurations = a}) . _Default . _Coerce;++-- | Market type of the EC2 instances used to create a cluster node.+igcMarket :: Lens' InstanceGroupConfig (Maybe MarketType)+igcMarket = lens _igcMarket (\ s a -> s{_igcMarket = a});++-- | Friendly name given to the instance group.+igcName :: Lens' InstanceGroupConfig (Maybe Text)+igcName = lens _igcName (\ s a -> s{_igcName = a});++-- | An automatic scaling policy for a core instance group or task instance group in an Amazon EMR cluster. The automatic scaling policy defines how an instance group dynamically adds and terminates EC2 instances in response to the value of a CloudWatch metric. See 'PutAutoScalingPolicy' .+igcAutoScalingPolicy :: Lens' InstanceGroupConfig (Maybe AutoScalingPolicy)+igcAutoScalingPolicy = lens _igcAutoScalingPolicy (\ s a -> s{_igcAutoScalingPolicy = a});++-- | The role of the instance group in the cluster.+igcInstanceRole :: Lens' InstanceGroupConfig InstanceRoleType+igcInstanceRole = lens _igcInstanceRole (\ s a -> s{_igcInstanceRole = a});++-- | The EC2 instance type for all instances in the instance group.+igcInstanceType :: Lens' InstanceGroupConfig Text+igcInstanceType = lens _igcInstanceType (\ s a -> s{_igcInstanceType = a});++-- | Target number of instances for the instance group.+igcInstanceCount :: Lens' InstanceGroupConfig Int+igcInstanceCount = lens _igcInstanceCount (\ s a -> s{_igcInstanceCount = a});++instance Hashable InstanceGroupConfig where++instance NFData InstanceGroupConfig where++instance ToJSON InstanceGroupConfig where+ toJSON InstanceGroupConfig'{..}+ = object+ (catMaybes+ [("EbsConfiguration" .=) <$> _igcEBSConfiguration,+ ("BidPrice" .=) <$> _igcBidPrice,+ ("Configurations" .=) <$> _igcConfigurations,+ ("Market" .=) <$> _igcMarket,+ ("Name" .=) <$> _igcName,+ ("AutoScalingPolicy" .=) <$> _igcAutoScalingPolicy,+ Just ("InstanceRole" .= _igcInstanceRole),+ Just ("InstanceType" .= _igcInstanceType),+ Just ("InstanceCount" .= _igcInstanceCount)])++-- | Modify an instance group size.+--+--+--+-- /See:/ 'instanceGroupModifyConfig' smart constructor.+data InstanceGroupModifyConfig = InstanceGroupModifyConfig'+ { _igmcInstanceCount :: !(Maybe Int)+ , _igmcEC2InstanceIdsToTerminate :: !(Maybe [Text])+ , _igmcShrinkPolicy :: !(Maybe ShrinkPolicy)+ , _igmcInstanceGroupId :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'InstanceGroupModifyConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igmcInstanceCount' - Target size for the instance group.+--+-- * 'igmcEC2InstanceIdsToTerminate' - The EC2 InstanceIds to terminate. After you terminate the instances, the instance group will not return to its original requested size.+--+-- * 'igmcShrinkPolicy' - Policy for customizing shrink operations.+--+-- * 'igmcInstanceGroupId' - Unique ID of the instance group to expand or shrink.+instanceGroupModifyConfig+ :: Text -- ^ 'igmcInstanceGroupId'+ -> InstanceGroupModifyConfig+instanceGroupModifyConfig pInstanceGroupId_ =+ InstanceGroupModifyConfig'+ { _igmcInstanceCount = Nothing+ , _igmcEC2InstanceIdsToTerminate = Nothing+ , _igmcShrinkPolicy = Nothing+ , _igmcInstanceGroupId = pInstanceGroupId_+ }+++-- | Target size for the instance group.+igmcInstanceCount :: Lens' InstanceGroupModifyConfig (Maybe Int)+igmcInstanceCount = lens _igmcInstanceCount (\ s a -> s{_igmcInstanceCount = a});++-- | The EC2 InstanceIds to terminate. After you terminate the instances, the instance group will not return to its original requested size.+igmcEC2InstanceIdsToTerminate :: Lens' InstanceGroupModifyConfig [Text]+igmcEC2InstanceIdsToTerminate = lens _igmcEC2InstanceIdsToTerminate (\ s a -> s{_igmcEC2InstanceIdsToTerminate = a}) . _Default . _Coerce;++-- | Policy for customizing shrink operations.+igmcShrinkPolicy :: Lens' InstanceGroupModifyConfig (Maybe ShrinkPolicy)+igmcShrinkPolicy = lens _igmcShrinkPolicy (\ s a -> s{_igmcShrinkPolicy = a});++-- | Unique ID of the instance group to expand or shrink.+igmcInstanceGroupId :: Lens' InstanceGroupModifyConfig Text+igmcInstanceGroupId = lens _igmcInstanceGroupId (\ s a -> s{_igmcInstanceGroupId = a});++instance Hashable InstanceGroupModifyConfig where++instance NFData InstanceGroupModifyConfig where++instance ToJSON InstanceGroupModifyConfig where+ toJSON InstanceGroupModifyConfig'{..}+ = object+ (catMaybes+ [("InstanceCount" .=) <$> _igmcInstanceCount,+ ("EC2InstanceIdsToTerminate" .=) <$>+ _igmcEC2InstanceIdsToTerminate,+ ("ShrinkPolicy" .=) <$> _igmcShrinkPolicy,+ Just ("InstanceGroupId" .= _igmcInstanceGroupId)])++-- | The status change reason details for the instance group.+--+--+--+-- /See:/ 'instanceGroupStateChangeReason' smart constructor.+data InstanceGroupStateChangeReason = InstanceGroupStateChangeReason'+ { _igscrCode :: !(Maybe InstanceGroupStateChangeReasonCode)+ , _igscrMessage :: !(Maybe Text)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'InstanceGroupStateChangeReason' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igscrCode' - The programmable code for the state change reason.+--+-- * 'igscrMessage' - The status change reason description.+instanceGroupStateChangeReason+ :: InstanceGroupStateChangeReason+instanceGroupStateChangeReason =+ InstanceGroupStateChangeReason'+ {_igscrCode = Nothing, _igscrMessage = Nothing}+++-- | The programmable code for the state change reason.+igscrCode :: Lens' InstanceGroupStateChangeReason (Maybe InstanceGroupStateChangeReasonCode)+igscrCode = lens _igscrCode (\ s a -> s{_igscrCode = a});++-- | The status change reason description.+igscrMessage :: Lens' InstanceGroupStateChangeReason (Maybe Text)+igscrMessage = lens _igscrMessage (\ s a -> s{_igscrMessage = a});++instance FromJSON InstanceGroupStateChangeReason+ where+ parseJSON+ = withObject "InstanceGroupStateChangeReason"+ (\ x ->+ InstanceGroupStateChangeReason' <$>+ (x .:? "Code") <*> (x .:? "Message"))++instance Hashable InstanceGroupStateChangeReason+ where++instance NFData InstanceGroupStateChangeReason where++-- | The details of the instance group status.+--+--+--+-- /See:/ 'instanceGroupStatus' smart constructor.+data InstanceGroupStatus = InstanceGroupStatus'+ { _igsState :: !(Maybe InstanceGroupState)+ , _igsStateChangeReason :: !(Maybe InstanceGroupStateChangeReason)+ , _igsTimeline :: !(Maybe InstanceGroupTimeline)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'InstanceGroupStatus' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igsState' - The current state of the instance group.+--+-- * 'igsStateChangeReason' - The status change reason details for the instance group.+--+-- * 'igsTimeline' - The timeline of the instance group status over time.+instanceGroupStatus+ :: InstanceGroupStatus+instanceGroupStatus =+ InstanceGroupStatus'+ {_igsState = Nothing, _igsStateChangeReason = Nothing, _igsTimeline = Nothing}+++-- | The current state of the instance group.+igsState :: Lens' InstanceGroupStatus (Maybe InstanceGroupState)+igsState = lens _igsState (\ s a -> s{_igsState = a});++-- | The status change reason details for the instance group.+igsStateChangeReason :: Lens' InstanceGroupStatus (Maybe InstanceGroupStateChangeReason)+igsStateChangeReason = lens _igsStateChangeReason (\ s a -> s{_igsStateChangeReason = a});++-- | The timeline of the instance group status over time.+igsTimeline :: Lens' InstanceGroupStatus (Maybe InstanceGroupTimeline)+igsTimeline = lens _igsTimeline (\ s a -> s{_igsTimeline = a});++instance FromJSON InstanceGroupStatus where+ parseJSON+ = withObject "InstanceGroupStatus"+ (\ x ->+ InstanceGroupStatus' <$>+ (x .:? "State") <*> (x .:? "StateChangeReason") <*>+ (x .:? "Timeline"))++instance Hashable InstanceGroupStatus where++instance NFData InstanceGroupStatus where++-- | The timeline of the instance group lifecycle.+--+--+--+-- /See:/ 'instanceGroupTimeline' smart constructor.+data InstanceGroupTimeline = InstanceGroupTimeline'+ { _igtReadyDateTime :: !(Maybe POSIX)+ , _igtCreationDateTime :: !(Maybe POSIX)+ , _igtEndDateTime :: !(Maybe POSIX)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'InstanceGroupTimeline' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'igtReadyDateTime' - The date and time when the instance group became ready to perform tasks.+--+-- * 'igtCreationDateTime' - The creation date and time of the instance group.+--+-- * 'igtEndDateTime' - The date and time when the instance group terminated.+instanceGroupTimeline+ :: InstanceGroupTimeline+instanceGroupTimeline =+ InstanceGroupTimeline'+ { _igtReadyDateTime = Nothing+ , _igtCreationDateTime = Nothing+ , _igtEndDateTime = Nothing+ }+++-- | The date and time when the instance group became ready to perform tasks.+igtReadyDateTime :: Lens' InstanceGroupTimeline (Maybe UTCTime)+igtReadyDateTime = lens _igtReadyDateTime (\ s a -> s{_igtReadyDateTime = a}) . mapping _Time;++-- | The creation date and time of the instance group.+igtCreationDateTime :: Lens' InstanceGroupTimeline (Maybe UTCTime)+igtCreationDateTime = lens _igtCreationDateTime (\ s a -> s{_igtCreationDateTime = a}) . mapping _Time;++-- | The date and time when the instance group terminated.+igtEndDateTime :: Lens' InstanceGroupTimeline (Maybe UTCTime)+igtEndDateTime = lens _igtEndDateTime (\ s a -> s{_igtEndDateTime = a}) . mapping _Time;++instance FromJSON InstanceGroupTimeline where+ parseJSON+ = withObject "InstanceGroupTimeline"+ (\ x ->+ InstanceGroupTimeline' <$>+ (x .:? "ReadyDateTime") <*>+ (x .:? "CreationDateTime")+ <*> (x .:? "EndDateTime"))++instance Hashable InstanceGroupTimeline where++instance NFData InstanceGroupTimeline where++-- | Custom policy for requesting termination protection or termination of specific instances when shrinking an instance group.+--+--+--+-- /See:/ 'instanceResizePolicy' smart constructor.+data InstanceResizePolicy = InstanceResizePolicy'+ { _irpInstancesToProtect :: !(Maybe [Text])+ , _irpInstancesToTerminate :: !(Maybe [Text])+ , _irpInstanceTerminationTimeout :: !(Maybe Int)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'InstanceResizePolicy' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'irpInstancesToProtect' - Specific list of instances to be protected when shrinking an instance group.+--+-- * 'irpInstancesToTerminate' - Specific list of instances to be terminated when shrinking an instance group.+--+-- * 'irpInstanceTerminationTimeout' - Decommissioning timeout override for the specific list of instances to be terminated.+instanceResizePolicy+ :: InstanceResizePolicy+instanceResizePolicy =+ InstanceResizePolicy'+ { _irpInstancesToProtect = Nothing+ , _irpInstancesToTerminate = Nothing+ , _irpInstanceTerminationTimeout = Nothing+ }+++-- | Specific list of instances to be protected when shrinking an instance group.+irpInstancesToProtect :: Lens' InstanceResizePolicy [Text]+irpInstancesToProtect = lens _irpInstancesToProtect (\ s a -> s{_irpInstancesToProtect = a}) . _Default . _Coerce;++-- | Specific list of instances to be terminated when shrinking an instance group.+irpInstancesToTerminate :: Lens' InstanceResizePolicy [Text]+irpInstancesToTerminate = lens _irpInstancesToTerminate (\ s a -> s{_irpInstancesToTerminate = a}) . _Default . _Coerce;++-- | Decommissioning timeout override for the specific list of instances to be terminated.+irpInstanceTerminationTimeout :: Lens' InstanceResizePolicy (Maybe Int)+irpInstanceTerminationTimeout = lens _irpInstanceTerminationTimeout (\ s a -> s{_irpInstanceTerminationTimeout = a});++instance FromJSON InstanceResizePolicy where+ parseJSON+ = withObject "InstanceResizePolicy"+ (\ x ->+ InstanceResizePolicy' <$>+ (x .:? "InstancesToProtect" .!= mempty) <*>+ (x .:? "InstancesToTerminate" .!= mempty)+ <*> (x .:? "InstanceTerminationTimeout"))++instance Hashable InstanceResizePolicy where++instance NFData InstanceResizePolicy where++instance ToJSON InstanceResizePolicy where+ toJSON InstanceResizePolicy'{..}+ = object+ (catMaybes+ [("InstancesToProtect" .=) <$>+ _irpInstancesToProtect,+ ("InstancesToTerminate" .=) <$>+ _irpInstancesToTerminate,+ ("InstanceTerminationTimeout" .=) <$>+ _irpInstanceTerminationTimeout])++-- | The details of the status change reason for the instance.+--+--+--+-- /See:/ 'instanceStateChangeReason' smart constructor.+data InstanceStateChangeReason = InstanceStateChangeReason'+ { _iscrCode :: !(Maybe InstanceStateChangeReasonCode)+ , _iscrMessage :: !(Maybe Text)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'InstanceStateChangeReason' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'iscrCode' - The programmable code for the state change reason.+--+-- * 'iscrMessage' - The status change reason description.+instanceStateChangeReason+ :: InstanceStateChangeReason+instanceStateChangeReason =+ InstanceStateChangeReason' {_iscrCode = Nothing, _iscrMessage = Nothing}+++-- | The programmable code for the state change reason.+iscrCode :: Lens' InstanceStateChangeReason (Maybe InstanceStateChangeReasonCode)+iscrCode = lens _iscrCode (\ s a -> s{_iscrCode = a});++-- | The status change reason description.+iscrMessage :: Lens' InstanceStateChangeReason (Maybe Text)+iscrMessage = lens _iscrMessage (\ s a -> s{_iscrMessage = a});++instance FromJSON InstanceStateChangeReason where+ parseJSON+ = withObject "InstanceStateChangeReason"+ (\ x ->+ InstanceStateChangeReason' <$>+ (x .:? "Code") <*> (x .:? "Message"))++instance Hashable InstanceStateChangeReason where++instance NFData InstanceStateChangeReason where++-- | The instance status details.+--+--+--+-- /See:/ 'instanceStatus' smart constructor.+data InstanceStatus = InstanceStatus'+ { _isState :: !(Maybe InstanceState)+ , _isStateChangeReason :: !(Maybe InstanceStateChangeReason)+ , _isTimeline :: !(Maybe InstanceTimeline)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'InstanceStatus' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'isState' - The current state of the instance.+--+-- * 'isStateChangeReason' - The details of the status change reason for the instance.+--+-- * 'isTimeline' - The timeline of the instance status over time.+instanceStatus+ :: InstanceStatus+instanceStatus =+ InstanceStatus'+ {_isState = Nothing, _isStateChangeReason = Nothing, _isTimeline = Nothing}+++-- | The current state of the instance.+isState :: Lens' InstanceStatus (Maybe InstanceState)+isState = lens _isState (\ s a -> s{_isState = a});++-- | The details of the status change reason for the instance.+isStateChangeReason :: Lens' InstanceStatus (Maybe InstanceStateChangeReason)+isStateChangeReason = lens _isStateChangeReason (\ s a -> s{_isStateChangeReason = a});++-- | The timeline of the instance status over time.+isTimeline :: Lens' InstanceStatus (Maybe InstanceTimeline)+isTimeline = lens _isTimeline (\ s a -> s{_isTimeline = a});++instance FromJSON InstanceStatus where+ parseJSON+ = withObject "InstanceStatus"+ (\ x ->+ InstanceStatus' <$>+ (x .:? "State") <*> (x .:? "StateChangeReason") <*>+ (x .:? "Timeline"))++instance Hashable InstanceStatus where++instance NFData InstanceStatus where++-- | The timeline of the instance lifecycle.+--+--+--+-- /See:/ 'instanceTimeline' smart constructor.+data InstanceTimeline = InstanceTimeline'+ { _itReadyDateTime :: !(Maybe POSIX)+ , _itCreationDateTime :: !(Maybe POSIX)+ , _itEndDateTime :: !(Maybe POSIX)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'InstanceTimeline' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'itReadyDateTime' - The date and time when the instance was ready to perform tasks.+--+-- * 'itCreationDateTime' - The creation date and time of the instance.+--+-- * 'itEndDateTime' - The date and time when the instance was terminated.+instanceTimeline+ :: InstanceTimeline+instanceTimeline =+ InstanceTimeline'+ { _itReadyDateTime = Nothing+ , _itCreationDateTime = Nothing+ , _itEndDateTime = Nothing+ }+++-- | The date and time when the instance was ready to perform tasks.+itReadyDateTime :: Lens' InstanceTimeline (Maybe UTCTime)+itReadyDateTime = lens _itReadyDateTime (\ s a -> s{_itReadyDateTime = a}) . mapping _Time;++-- | The creation date and time of the instance.+itCreationDateTime :: Lens' InstanceTimeline (Maybe UTCTime)+itCreationDateTime = lens _itCreationDateTime (\ s a -> s{_itCreationDateTime = a}) . mapping _Time;++-- | The date and time when the instance was terminated.+itEndDateTime :: Lens' InstanceTimeline (Maybe UTCTime)+itEndDateTime = lens _itEndDateTime (\ s a -> s{_itEndDateTime = a}) . mapping _Time;++instance FromJSON InstanceTimeline where+ parseJSON+ = withObject "InstanceTimeline"+ (\ x ->+ InstanceTimeline' <$>+ (x .:? "ReadyDateTime") <*>+ (x .:? "CreationDateTime")+ <*> (x .:? "EndDateTime"))++instance Hashable InstanceTimeline where++instance NFData InstanceTimeline where++-- | An instance type configuration for each instance type in an instance fleet, which determines the EC2 instances Amazon EMR attempts to provision to fulfill On-Demand and Spot target capacities. There can be a maximum of 5 instance type configurations in a fleet.+--+--+--+-- /See:/ 'instanceTypeConfig' smart constructor.+data InstanceTypeConfig = InstanceTypeConfig'+ { _itcEBSConfiguration :: !(Maybe EBSConfiguration)+ , _itcBidPrice :: !(Maybe Text)+ , _itcWeightedCapacity :: !(Maybe Nat)+ , _itcConfigurations :: !(Maybe [Configuration])+ , _itcBidPriceAsPercentageOfOnDemandPrice :: !(Maybe Double)+ , _itcInstanceType :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'InstanceTypeConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'itcEBSConfiguration' - The configuration of Amazon Elastic Block Storage (EBS) attached to each instance as defined by @InstanceType@ .+--+-- * 'itcBidPrice' - The bid price for each EC2 Spot instance type as defined by @InstanceType@ . Expressed in USD. If neither @BidPrice@ nor @BidPriceAsPercentageOfOnDemandPrice@ is provided, @BidPriceAsPercentageOfOnDemandPrice@ defaults to 100%.+--+-- * 'itcWeightedCapacity' - The number of units that a provisioned instance of this type provides toward fulfilling the target capacities defined in 'InstanceFleetConfig' . This value is 1 for a master instance fleet, and must be 1 or greater for core and task instance fleets. Defaults to 1 if not specified.+--+-- * 'itcConfigurations' - A configuration classification that applies when provisioning cluster instances, which can include configurations for applications and software that run on the cluster.+--+-- * 'itcBidPriceAsPercentageOfOnDemandPrice' - The bid price, as a percentage of On-Demand price, for each EC2 Spot instance as defined by @InstanceType@ . Expressed as a number (for example, 20 specifies 20%). If neither @BidPrice@ nor @BidPriceAsPercentageOfOnDemandPrice@ is provided, @BidPriceAsPercentageOfOnDemandPrice@ defaults to 100%.+--+-- * 'itcInstanceType' - An EC2 instance type, such as @m3.xlarge@ .+instanceTypeConfig+ :: Text -- ^ 'itcInstanceType'+ -> InstanceTypeConfig+instanceTypeConfig pInstanceType_ =+ InstanceTypeConfig'+ { _itcEBSConfiguration = Nothing+ , _itcBidPrice = Nothing+ , _itcWeightedCapacity = Nothing+ , _itcConfigurations = Nothing+ , _itcBidPriceAsPercentageOfOnDemandPrice = Nothing+ , _itcInstanceType = pInstanceType_+ }+++-- | The configuration of Amazon Elastic Block Storage (EBS) attached to each instance as defined by @InstanceType@ .+itcEBSConfiguration :: Lens' InstanceTypeConfig (Maybe EBSConfiguration)+itcEBSConfiguration = lens _itcEBSConfiguration (\ s a -> s{_itcEBSConfiguration = a});++-- | The bid price for each EC2 Spot instance type as defined by @InstanceType@ . Expressed in USD. If neither @BidPrice@ nor @BidPriceAsPercentageOfOnDemandPrice@ is provided, @BidPriceAsPercentageOfOnDemandPrice@ defaults to 100%.+itcBidPrice :: Lens' InstanceTypeConfig (Maybe Text)+itcBidPrice = lens _itcBidPrice (\ s a -> s{_itcBidPrice = a});++-- | The number of units that a provisioned instance of this type provides toward fulfilling the target capacities defined in 'InstanceFleetConfig' . This value is 1 for a master instance fleet, and must be 1 or greater for core and task instance fleets. Defaults to 1 if not specified.+itcWeightedCapacity :: Lens' InstanceTypeConfig (Maybe Natural)+itcWeightedCapacity = lens _itcWeightedCapacity (\ s a -> s{_itcWeightedCapacity = a}) . mapping _Nat;++-- | A configuration classification that applies when provisioning cluster instances, which can include configurations for applications and software that run on the cluster.+itcConfigurations :: Lens' InstanceTypeConfig [Configuration]+itcConfigurations = lens _itcConfigurations (\ s a -> s{_itcConfigurations = a}) . _Default . _Coerce;++-- | The bid price, as a percentage of On-Demand price, for each EC2 Spot instance as defined by @InstanceType@ . Expressed as a number (for example, 20 specifies 20%). If neither @BidPrice@ nor @BidPriceAsPercentageOfOnDemandPrice@ is provided, @BidPriceAsPercentageOfOnDemandPrice@ defaults to 100%.+itcBidPriceAsPercentageOfOnDemandPrice :: Lens' InstanceTypeConfig (Maybe Double)+itcBidPriceAsPercentageOfOnDemandPrice = lens _itcBidPriceAsPercentageOfOnDemandPrice (\ s a -> s{_itcBidPriceAsPercentageOfOnDemandPrice = a});++-- | An EC2 instance type, such as @m3.xlarge@ .+itcInstanceType :: Lens' InstanceTypeConfig Text+itcInstanceType = lens _itcInstanceType (\ s a -> s{_itcInstanceType = a});++instance Hashable InstanceTypeConfig where++instance NFData InstanceTypeConfig where++instance ToJSON InstanceTypeConfig where+ toJSON InstanceTypeConfig'{..}+ = object+ (catMaybes+ [("EbsConfiguration" .=) <$> _itcEBSConfiguration,+ ("BidPrice" .=) <$> _itcBidPrice,+ ("WeightedCapacity" .=) <$> _itcWeightedCapacity,+ ("Configurations" .=) <$> _itcConfigurations,+ ("BidPriceAsPercentageOfOnDemandPrice" .=) <$>+ _itcBidPriceAsPercentageOfOnDemandPrice,+ Just ("InstanceType" .= _itcInstanceType)])++-- | The configuration specification for each instance type in an instance fleet.+--+--+--+-- /See:/ 'instanceTypeSpecification' smart constructor.+data InstanceTypeSpecification = InstanceTypeSpecification'+ { _itsBidPrice :: !(Maybe Text)+ , _itsWeightedCapacity :: !(Maybe Nat)+ , _itsConfigurations :: !(Maybe [Configuration])+ , _itsEBSBlockDevices :: !(Maybe [EBSBlockDevice])+ , _itsInstanceType :: !(Maybe Text)+ , _itsEBSOptimized :: !(Maybe Bool)+ , _itsBidPriceAsPercentageOfOnDemandPrice :: !(Maybe Double)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'InstanceTypeSpecification' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'itsBidPrice' - The bid price for each EC2 Spot instance type as defined by @InstanceType@ . Expressed in USD.+--+-- * 'itsWeightedCapacity' - The number of units that a provisioned instance of this type provides toward fulfilling the target capacities defined in 'InstanceFleetConfig' . Capacity values represent performance characteristics such as vCPUs, memory, or I/O. If not specified, the default value is 1.+--+-- * 'itsConfigurations' - A configuration classification that applies when provisioning cluster instances, which can include configurations for applications and software bundled with Amazon EMR.+--+-- * 'itsEBSBlockDevices' - The configuration of Amazon Elastic Block Storage (EBS) attached to each instance as defined by @InstanceType@ .+--+-- * 'itsInstanceType' - The EC2 instance type, for example @m3.xlarge@ .+--+-- * 'itsEBSOptimized' - Evaluates to @TRUE@ when the specified @InstanceType@ is EBS-optimized.+--+-- * 'itsBidPriceAsPercentageOfOnDemandPrice' - The bid price, as a percentage of On-Demand price, for each EC2 Spot instance as defined by @InstanceType@ . Expressed as a number (for example, 20 specifies 20%).+instanceTypeSpecification+ :: InstanceTypeSpecification+instanceTypeSpecification =+ InstanceTypeSpecification'+ { _itsBidPrice = Nothing+ , _itsWeightedCapacity = Nothing+ , _itsConfigurations = Nothing+ , _itsEBSBlockDevices = Nothing+ , _itsInstanceType = Nothing+ , _itsEBSOptimized = Nothing+ , _itsBidPriceAsPercentageOfOnDemandPrice = Nothing+ }+++-- | The bid price for each EC2 Spot instance type as defined by @InstanceType@ . Expressed in USD.+itsBidPrice :: Lens' InstanceTypeSpecification (Maybe Text)+itsBidPrice = lens _itsBidPrice (\ s a -> s{_itsBidPrice = a});++-- | The number of units that a provisioned instance of this type provides toward fulfilling the target capacities defined in 'InstanceFleetConfig' . Capacity values represent performance characteristics such as vCPUs, memory, or I/O. If not specified, the default value is 1.+itsWeightedCapacity :: Lens' InstanceTypeSpecification (Maybe Natural)+itsWeightedCapacity = lens _itsWeightedCapacity (\ s a -> s{_itsWeightedCapacity = a}) . mapping _Nat;++-- | A configuration classification that applies when provisioning cluster instances, which can include configurations for applications and software bundled with Amazon EMR.+itsConfigurations :: Lens' InstanceTypeSpecification [Configuration]+itsConfigurations = lens _itsConfigurations (\ s a -> s{_itsConfigurations = a}) . _Default . _Coerce;++-- | The configuration of Amazon Elastic Block Storage (EBS) attached to each instance as defined by @InstanceType@ .+itsEBSBlockDevices :: Lens' InstanceTypeSpecification [EBSBlockDevice]+itsEBSBlockDevices = lens _itsEBSBlockDevices (\ s a -> s{_itsEBSBlockDevices = a}) . _Default . _Coerce;++-- | The EC2 instance type, for example @m3.xlarge@ .+itsInstanceType :: Lens' InstanceTypeSpecification (Maybe Text)+itsInstanceType = lens _itsInstanceType (\ s a -> s{_itsInstanceType = a});++-- | Evaluates to @TRUE@ when the specified @InstanceType@ is EBS-optimized.+itsEBSOptimized :: Lens' InstanceTypeSpecification (Maybe Bool)+itsEBSOptimized = lens _itsEBSOptimized (\ s a -> s{_itsEBSOptimized = a});++-- | The bid price, as a percentage of On-Demand price, for each EC2 Spot instance as defined by @InstanceType@ . Expressed as a number (for example, 20 specifies 20%).+itsBidPriceAsPercentageOfOnDemandPrice :: Lens' InstanceTypeSpecification (Maybe Double)+itsBidPriceAsPercentageOfOnDemandPrice = lens _itsBidPriceAsPercentageOfOnDemandPrice (\ s a -> s{_itsBidPriceAsPercentageOfOnDemandPrice = a});++instance FromJSON InstanceTypeSpecification where+ parseJSON+ = withObject "InstanceTypeSpecification"+ (\ x ->+ InstanceTypeSpecification' <$>+ (x .:? "BidPrice") <*> (x .:? "WeightedCapacity") <*>+ (x .:? "Configurations" .!= mempty)+ <*> (x .:? "EbsBlockDevices" .!= mempty)+ <*> (x .:? "InstanceType")+ <*> (x .:? "EbsOptimized")+ <*> (x .:? "BidPriceAsPercentageOfOnDemandPrice"))++instance Hashable InstanceTypeSpecification where++instance NFData InstanceTypeSpecification where++-- | A description of the Amazon EC2 instance on which the cluster (job flow) runs. A valid JobFlowInstancesConfig must contain either InstanceGroups or InstanceFleets, which is the recommended configuration. They cannot be used together. You may also have MasterInstanceType, SlaveInstanceType, and InstanceCount (all three must be present), but we don't recommend this configuration.+--+--+--+-- /See:/ 'jobFlowInstancesConfig' smart constructor.+data JobFlowInstancesConfig = JobFlowInstancesConfig'+ { _jficInstanceFleets :: !(Maybe [InstanceFleetConfig])+ , _jficEC2KeyName :: !(Maybe Text)+ , _jficSlaveInstanceType :: !(Maybe Text)+ , _jficInstanceCount :: !(Maybe Int)+ , _jficEmrManagedSlaveSecurityGroup :: !(Maybe Text)+ , _jficAdditionalSlaveSecurityGroups :: !(Maybe [Text])+ , _jficEC2SubnetIds :: !(Maybe [Text])+ , _jficHadoopVersion :: !(Maybe Text)+ , _jficAdditionalMasterSecurityGroups :: !(Maybe [Text])+ , _jficEmrManagedMasterSecurityGroup :: !(Maybe Text)+ , _jficEC2SubnetId :: !(Maybe Text)+ , _jficMasterInstanceType :: !(Maybe Text)+ , _jficInstanceGroups :: !(Maybe [InstanceGroupConfig])+ , _jficKeepJobFlowAliveWhenNoSteps :: !(Maybe Bool)+ , _jficServiceAccessSecurityGroup :: !(Maybe Text)+ , _jficTerminationProtected :: !(Maybe Bool)+ , _jficPlacement :: !(Maybe PlacementType)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'JobFlowInstancesConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'jficInstanceFleets' - Describes the EC2 instances and instance configurations for clusters that use the instance fleet configuration.+--+-- * 'jficEC2KeyName' - The name of the EC2 key pair that can be used to ssh to the master node as the user called "hadoop."+--+-- * 'jficSlaveInstanceType' - The EC2 instance type of the slave nodes.+--+-- * 'jficInstanceCount' - The number of EC2 instances in the cluster.+--+-- * 'jficEmrManagedSlaveSecurityGroup' - The identifier of the Amazon EC2 security group for the slave nodes.+--+-- * 'jficAdditionalSlaveSecurityGroups' - A list of additional Amazon EC2 security group IDs for the slave nodes.+--+-- * 'jficEC2SubnetIds' - Applies to clusters that use the instance fleet configuration. When multiple EC2 subnet IDs are specified, Amazon EMR evaluates them and launches instances in the optimal subnet.+--+-- * 'jficHadoopVersion' - The Hadoop version for the cluster. Valid inputs are "0.18" (deprecated), "0.20" (deprecated), "0.20.205" (deprecated), "1.0.3", "2.2.0", or "2.4.0". If you do not set this value, the default of 0.18 is used, unless the AmiVersion parameter is set in the RunJobFlow call, in which case the default version of Hadoop for that AMI version is used.+--+-- * 'jficAdditionalMasterSecurityGroups' - A list of additional Amazon EC2 security group IDs for the master node.+--+-- * 'jficEmrManagedMasterSecurityGroup' - The identifier of the Amazon EC2 security group for the master node.+--+-- * 'jficEC2SubnetId' - Applies to clusters that use the uniform instance group configuration. To launch the cluster in Amazon Virtual Private Cloud (Amazon VPC), set this parameter to the identifier of the Amazon VPC subnet where you want the cluster to launch. If you do not specify this value, the cluster launches in the normal Amazon Web Services cloud, outside of an Amazon VPC, if the account launching the cluster supports EC2 Classic networks in the region where the cluster launches. Amazon VPC currently does not support cluster compute quadruple extra large (cc1.4xlarge) instances. Thus you cannot specify the cc1.4xlarge instance type for clusters launched in an Amazon VPC.+--+-- * 'jficMasterInstanceType' - The EC2 instance type of the master node.+--+-- * 'jficInstanceGroups' - Configuration for the instance groups in a cluster.+--+-- * 'jficKeepJobFlowAliveWhenNoSteps' - Specifies whether the cluster should remain available after completing all steps.+--+-- * 'jficServiceAccessSecurityGroup' - The identifier of the Amazon EC2 security group for the Amazon EMR service to access clusters in VPC private subnets.+--+-- * 'jficTerminationProtected' - Specifies whether to lock the cluster to prevent the Amazon EC2 instances from being terminated by API call, user intervention, or in the event of a job-flow error.+--+-- * 'jficPlacement' - The Availability Zone in which the cluster runs.+jobFlowInstancesConfig+ :: JobFlowInstancesConfig+jobFlowInstancesConfig =+ JobFlowInstancesConfig'+ { _jficInstanceFleets = Nothing+ , _jficEC2KeyName = Nothing+ , _jficSlaveInstanceType = Nothing+ , _jficInstanceCount = Nothing+ , _jficEmrManagedSlaveSecurityGroup = Nothing+ , _jficAdditionalSlaveSecurityGroups = Nothing+ , _jficEC2SubnetIds = Nothing+ , _jficHadoopVersion = Nothing+ , _jficAdditionalMasterSecurityGroups = Nothing+ , _jficEmrManagedMasterSecurityGroup = Nothing+ , _jficEC2SubnetId = Nothing+ , _jficMasterInstanceType = Nothing+ , _jficInstanceGroups = Nothing+ , _jficKeepJobFlowAliveWhenNoSteps = Nothing+ , _jficServiceAccessSecurityGroup = Nothing+ , _jficTerminationProtected = Nothing+ , _jficPlacement = Nothing+ }+++-- | Describes the EC2 instances and instance configurations for clusters that use the instance fleet configuration.+jficInstanceFleets :: Lens' JobFlowInstancesConfig [InstanceFleetConfig]+jficInstanceFleets = lens _jficInstanceFleets (\ s a -> s{_jficInstanceFleets = a}) . _Default . _Coerce;++-- | The name of the EC2 key pair that can be used to ssh to the master node as the user called "hadoop."+jficEC2KeyName :: Lens' JobFlowInstancesConfig (Maybe Text)+jficEC2KeyName = lens _jficEC2KeyName (\ s a -> s{_jficEC2KeyName = a});++-- | The EC2 instance type of the slave nodes.+jficSlaveInstanceType :: Lens' JobFlowInstancesConfig (Maybe Text)+jficSlaveInstanceType = lens _jficSlaveInstanceType (\ s a -> s{_jficSlaveInstanceType = a});++-- | The number of EC2 instances in the cluster.+jficInstanceCount :: Lens' JobFlowInstancesConfig (Maybe Int)+jficInstanceCount = lens _jficInstanceCount (\ s a -> s{_jficInstanceCount = a});++-- | The identifier of the Amazon EC2 security group for the slave nodes.+jficEmrManagedSlaveSecurityGroup :: Lens' JobFlowInstancesConfig (Maybe Text)+jficEmrManagedSlaveSecurityGroup = lens _jficEmrManagedSlaveSecurityGroup (\ s a -> s{_jficEmrManagedSlaveSecurityGroup = a});++-- | A list of additional Amazon EC2 security group IDs for the slave nodes.+jficAdditionalSlaveSecurityGroups :: Lens' JobFlowInstancesConfig [Text]+jficAdditionalSlaveSecurityGroups = lens _jficAdditionalSlaveSecurityGroups (\ s a -> s{_jficAdditionalSlaveSecurityGroups = a}) . _Default . _Coerce;++-- | Applies to clusters that use the instance fleet configuration. When multiple EC2 subnet IDs are specified, Amazon EMR evaluates them and launches instances in the optimal subnet.+jficEC2SubnetIds :: Lens' JobFlowInstancesConfig [Text]+jficEC2SubnetIds = lens _jficEC2SubnetIds (\ s a -> s{_jficEC2SubnetIds = a}) . _Default . _Coerce;++-- | The Hadoop version for the cluster. Valid inputs are "0.18" (deprecated), "0.20" (deprecated), "0.20.205" (deprecated), "1.0.3", "2.2.0", or "2.4.0". If you do not set this value, the default of 0.18 is used, unless the AmiVersion parameter is set in the RunJobFlow call, in which case the default version of Hadoop for that AMI version is used.+jficHadoopVersion :: Lens' JobFlowInstancesConfig (Maybe Text)+jficHadoopVersion = lens _jficHadoopVersion (\ s a -> s{_jficHadoopVersion = a});++-- | A list of additional Amazon EC2 security group IDs for the master node.+jficAdditionalMasterSecurityGroups :: Lens' JobFlowInstancesConfig [Text]+jficAdditionalMasterSecurityGroups = lens _jficAdditionalMasterSecurityGroups (\ s a -> s{_jficAdditionalMasterSecurityGroups = a}) . _Default . _Coerce;++-- | The identifier of the Amazon EC2 security group for the master node.+jficEmrManagedMasterSecurityGroup :: Lens' JobFlowInstancesConfig (Maybe Text)+jficEmrManagedMasterSecurityGroup = lens _jficEmrManagedMasterSecurityGroup (\ s a -> s{_jficEmrManagedMasterSecurityGroup = a});++-- | Applies to clusters that use the uniform instance group configuration. To launch the cluster in Amazon Virtual Private Cloud (Amazon VPC), set this parameter to the identifier of the Amazon VPC subnet where you want the cluster to launch. If you do not specify this value, the cluster launches in the normal Amazon Web Services cloud, outside of an Amazon VPC, if the account launching the cluster supports EC2 Classic networks in the region where the cluster launches. Amazon VPC currently does not support cluster compute quadruple extra large (cc1.4xlarge) instances. Thus you cannot specify the cc1.4xlarge instance type for clusters launched in an Amazon VPC.+jficEC2SubnetId :: Lens' JobFlowInstancesConfig (Maybe Text)+jficEC2SubnetId = lens _jficEC2SubnetId (\ s a -> s{_jficEC2SubnetId = a});++-- | The EC2 instance type of the master node.+jficMasterInstanceType :: Lens' JobFlowInstancesConfig (Maybe Text)+jficMasterInstanceType = lens _jficMasterInstanceType (\ s a -> s{_jficMasterInstanceType = a});++-- | Configuration for the instance groups in a cluster.+jficInstanceGroups :: Lens' JobFlowInstancesConfig [InstanceGroupConfig]+jficInstanceGroups = lens _jficInstanceGroups (\ s a -> s{_jficInstanceGroups = a}) . _Default . _Coerce;++-- | Specifies whether the cluster should remain available after completing all steps.+jficKeepJobFlowAliveWhenNoSteps :: Lens' JobFlowInstancesConfig (Maybe Bool)+jficKeepJobFlowAliveWhenNoSteps = lens _jficKeepJobFlowAliveWhenNoSteps (\ s a -> s{_jficKeepJobFlowAliveWhenNoSteps = a});++-- | The identifier of the Amazon EC2 security group for the Amazon EMR service to access clusters in VPC private subnets.+jficServiceAccessSecurityGroup :: Lens' JobFlowInstancesConfig (Maybe Text)+jficServiceAccessSecurityGroup = lens _jficServiceAccessSecurityGroup (\ s a -> s{_jficServiceAccessSecurityGroup = a});++-- | Specifies whether to lock the cluster to prevent the Amazon EC2 instances from being terminated by API call, user intervention, or in the event of a job-flow error.+jficTerminationProtected :: Lens' JobFlowInstancesConfig (Maybe Bool)+jficTerminationProtected = lens _jficTerminationProtected (\ s a -> s{_jficTerminationProtected = a});++-- | The Availability Zone in which the cluster runs.+jficPlacement :: Lens' JobFlowInstancesConfig (Maybe PlacementType)+jficPlacement = lens _jficPlacement (\ s a -> s{_jficPlacement = a});++instance Hashable JobFlowInstancesConfig where++instance NFData JobFlowInstancesConfig where++instance ToJSON JobFlowInstancesConfig where+ toJSON JobFlowInstancesConfig'{..}+ = object+ (catMaybes+ [("InstanceFleets" .=) <$> _jficInstanceFleets,+ ("Ec2KeyName" .=) <$> _jficEC2KeyName,+ ("SlaveInstanceType" .=) <$> _jficSlaveInstanceType,+ ("InstanceCount" .=) <$> _jficInstanceCount,+ ("EmrManagedSlaveSecurityGroup" .=) <$>+ _jficEmrManagedSlaveSecurityGroup,+ ("AdditionalSlaveSecurityGroups" .=) <$>+ _jficAdditionalSlaveSecurityGroups,+ ("Ec2SubnetIds" .=) <$> _jficEC2SubnetIds,+ ("HadoopVersion" .=) <$> _jficHadoopVersion,+ ("AdditionalMasterSecurityGroups" .=) <$>+ _jficAdditionalMasterSecurityGroups,+ ("EmrManagedMasterSecurityGroup" .=) <$>+ _jficEmrManagedMasterSecurityGroup,+ ("Ec2SubnetId" .=) <$> _jficEC2SubnetId,+ ("MasterInstanceType" .=) <$>+ _jficMasterInstanceType,+ ("InstanceGroups" .=) <$> _jficInstanceGroups,+ ("KeepJobFlowAliveWhenNoSteps" .=) <$>+ _jficKeepJobFlowAliveWhenNoSteps,+ ("ServiceAccessSecurityGroup" .=) <$>+ _jficServiceAccessSecurityGroup,+ ("TerminationProtected" .=) <$>+ _jficTerminationProtected,+ ("Placement" .=) <$> _jficPlacement])++-- | A key value pair.+--+--+--+-- /See:/ 'keyValue' smart constructor.+data KeyValue = KeyValue'+ { _kvValue :: !(Maybe Text)+ , _kvKey :: !(Maybe Text)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'KeyValue' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'kvValue' - The value part of the identified key.+--+-- * 'kvKey' - The unique identifier of a key value pair.+keyValue+ :: KeyValue+keyValue = KeyValue' {_kvValue = Nothing, _kvKey = Nothing}+++-- | The value part of the identified key.+kvValue :: Lens' KeyValue (Maybe Text)+kvValue = lens _kvValue (\ s a -> s{_kvValue = a});++-- | The unique identifier of a key value pair.+kvKey :: Lens' KeyValue (Maybe Text)+kvKey = lens _kvKey (\ s a -> s{_kvKey = a});++instance Hashable KeyValue where++instance NFData KeyValue where++instance ToJSON KeyValue where+ toJSON KeyValue'{..}+ = object+ (catMaybes+ [("Value" .=) <$> _kvValue, ("Key" .=) <$> _kvKey])++-- | A CloudWatch dimension, which is specified using a @Key@ (known as a @Name@ in CloudWatch), @Value@ pair. By default, Amazon EMR uses one dimension whose @Key@ is @JobFlowID@ and @Value@ is a variable representing the cluster ID, which is @> {emr.clusterId}@ . This enables the rule to bootstrap when the cluster ID becomes available.+--+--+--+-- /See:/ 'metricDimension' smart constructor.+data MetricDimension = MetricDimension'+ { _mdValue :: !(Maybe Text)+ , _mdKey :: !(Maybe Text)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'MetricDimension' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'mdValue' - The dimension value.+--+-- * 'mdKey' - The dimension name.+metricDimension+ :: MetricDimension+metricDimension = MetricDimension' {_mdValue = Nothing, _mdKey = Nothing}+++-- | The dimension value.+mdValue :: Lens' MetricDimension (Maybe Text)+mdValue = lens _mdValue (\ s a -> s{_mdValue = a});++-- | The dimension name.+mdKey :: Lens' MetricDimension (Maybe Text)+mdKey = lens _mdKey (\ s a -> s{_mdKey = a});++instance FromJSON MetricDimension where+ parseJSON+ = withObject "MetricDimension"+ (\ x ->+ MetricDimension' <$>+ (x .:? "Value") <*> (x .:? "Key"))++instance Hashable MetricDimension where++instance NFData MetricDimension where++instance ToJSON MetricDimension where+ toJSON MetricDimension'{..}+ = object+ (catMaybes+ [("Value" .=) <$> _mdValue, ("Key" .=) <$> _mdKey])++-- | The Amazon EC2 Availability Zone configuration of the cluster (job flow).+--+--+--+-- /See:/ 'placementType' smart constructor.+data PlacementType = PlacementType'+ { _ptAvailabilityZones :: !(Maybe [Text])+ , _ptAvailabilityZone :: !(Maybe Text)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'PlacementType' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ptAvailabilityZones' - When multiple Availability Zones are specified, Amazon EMR evaluates them and launches instances in the optimal Availability Zone. @AvailabilityZones@ is used for instance fleets, while @AvailabilityZone@ (singular) is used for uniform instance groups.+--+-- * 'ptAvailabilityZone' - The Amazon EC2 Availability Zone for the cluster. @AvailabilityZone@ is used for uniform instance groups, while @AvailabilityZones@ (plural) is used for instance fleets.+placementType+ :: PlacementType+placementType =+ PlacementType' {_ptAvailabilityZones = Nothing, _ptAvailabilityZone = Nothing}+++-- | When multiple Availability Zones are specified, Amazon EMR evaluates them and launches instances in the optimal Availability Zone. @AvailabilityZones@ is used for instance fleets, while @AvailabilityZone@ (singular) is used for uniform instance groups.+ptAvailabilityZones :: Lens' PlacementType [Text]+ptAvailabilityZones = lens _ptAvailabilityZones (\ s a -> s{_ptAvailabilityZones = a}) . _Default . _Coerce;++-- | The Amazon EC2 Availability Zone for the cluster. @AvailabilityZone@ is used for uniform instance groups, while @AvailabilityZones@ (plural) is used for instance fleets.+ptAvailabilityZone :: Lens' PlacementType (Maybe Text)+ptAvailabilityZone = lens _ptAvailabilityZone (\ s a -> s{_ptAvailabilityZone = a});++instance Hashable PlacementType where++instance NFData PlacementType where++instance ToJSON PlacementType where+ toJSON PlacementType'{..}+ = object+ (catMaybes+ [("AvailabilityZones" .=) <$> _ptAvailabilityZones,+ ("AvailabilityZone" .=) <$> _ptAvailabilityZone])++-- | The type of adjustment the automatic scaling activity makes when triggered, and the periodicity of the adjustment.+--+--+--+-- /See:/ 'scalingAction' smart constructor.+data ScalingAction = ScalingAction'+ { _saMarket :: !(Maybe MarketType)+ , _saSimpleScalingPolicyConfiguration :: !SimpleScalingPolicyConfiguration+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ScalingAction' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'saMarket' - Not available for instance groups. Instance groups use the market type specified for the group.+--+-- * 'saSimpleScalingPolicyConfiguration' - The type of adjustment the automatic scaling activity makes when triggered, and the periodicity of the adjustment.+scalingAction+ :: SimpleScalingPolicyConfiguration -- ^ 'saSimpleScalingPolicyConfiguration'+ -> ScalingAction+scalingAction pSimpleScalingPolicyConfiguration_ =+ ScalingAction'+ { _saMarket = Nothing+ , _saSimpleScalingPolicyConfiguration = pSimpleScalingPolicyConfiguration_+ }+++-- | Not available for instance groups. Instance groups use the market type specified for the group.+saMarket :: Lens' ScalingAction (Maybe MarketType)+saMarket = lens _saMarket (\ s a -> s{_saMarket = a});++-- | The type of adjustment the automatic scaling activity makes when triggered, and the periodicity of the adjustment.+saSimpleScalingPolicyConfiguration :: Lens' ScalingAction SimpleScalingPolicyConfiguration+saSimpleScalingPolicyConfiguration = lens _saSimpleScalingPolicyConfiguration (\ s a -> s{_saSimpleScalingPolicyConfiguration = a});++instance FromJSON ScalingAction where+ parseJSON+ = withObject "ScalingAction"+ (\ x ->+ ScalingAction' <$>+ (x .:? "Market") <*>+ (x .: "SimpleScalingPolicyConfiguration"))++instance Hashable ScalingAction where++instance NFData ScalingAction where++instance ToJSON ScalingAction where+ toJSON ScalingAction'{..}+ = object+ (catMaybes+ [("Market" .=) <$> _saMarket,+ Just+ ("SimpleScalingPolicyConfiguration" .=+ _saSimpleScalingPolicyConfiguration)])++-- | The upper and lower EC2 instance limits for an automatic scaling policy. Automatic scaling activities triggered by automatic scaling rules will not cause an instance group to grow above or below these limits.+--+--+--+-- /See:/ 'scalingConstraints' smart constructor.+data ScalingConstraints = ScalingConstraints'+ { _scMinCapacity :: !Int+ , _scMaxCapacity :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ScalingConstraints' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'scMinCapacity' - The lower boundary of EC2 instances in an instance group below which scaling activities are not allowed to shrink. Scale-in activities will not terminate instances below this boundary.+--+-- * 'scMaxCapacity' - The upper boundary of EC2 instances in an instance group beyond which scaling activities are not allowed to grow. Scale-out activities will not add instances beyond this boundary.+scalingConstraints+ :: Int -- ^ 'scMinCapacity'+ -> Int -- ^ 'scMaxCapacity'+ -> ScalingConstraints+scalingConstraints pMinCapacity_ pMaxCapacity_ =+ ScalingConstraints'+ {_scMinCapacity = pMinCapacity_, _scMaxCapacity = pMaxCapacity_}+++-- | The lower boundary of EC2 instances in an instance group below which scaling activities are not allowed to shrink. Scale-in activities will not terminate instances below this boundary.+scMinCapacity :: Lens' ScalingConstraints Int+scMinCapacity = lens _scMinCapacity (\ s a -> s{_scMinCapacity = a});++-- | The upper boundary of EC2 instances in an instance group beyond which scaling activities are not allowed to grow. Scale-out activities will not add instances beyond this boundary.+scMaxCapacity :: Lens' ScalingConstraints Int+scMaxCapacity = lens _scMaxCapacity (\ s a -> s{_scMaxCapacity = a});++instance FromJSON ScalingConstraints where+ parseJSON+ = withObject "ScalingConstraints"+ (\ x ->+ ScalingConstraints' <$>+ (x .: "MinCapacity") <*> (x .: "MaxCapacity"))++instance Hashable ScalingConstraints where++instance NFData ScalingConstraints where++instance ToJSON ScalingConstraints where+ toJSON ScalingConstraints'{..}+ = object+ (catMaybes+ [Just ("MinCapacity" .= _scMinCapacity),+ Just ("MaxCapacity" .= _scMaxCapacity)])++-- | A scale-in or scale-out rule that defines scaling activity, including the CloudWatch metric alarm that triggers activity, how EC2 instances are added or removed, and the periodicity of adjustments. The automatic scaling policy for an instance group can comprise one or more automatic scaling rules.+--+--+--+-- /See:/ 'scalingRule' smart constructor.+data ScalingRule = ScalingRule'+ { _srDescription :: !(Maybe Text)+ , _srName :: !Text+ , _srAction :: !ScalingAction+ , _srTrigger :: !ScalingTrigger+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ScalingRule' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'srDescription' - A friendly, more verbose description of the automatic scaling rule.+--+-- * 'srName' - The name used to identify an automatic scaling rule. Rule names must be unique within a scaling policy.+--+-- * 'srAction' - The conditions that trigger an automatic scaling activity.+--+-- * 'srTrigger' - The CloudWatch alarm definition that determines when automatic scaling activity is triggered.+scalingRule+ :: Text -- ^ 'srName'+ -> ScalingAction -- ^ 'srAction'+ -> ScalingTrigger -- ^ 'srTrigger'+ -> ScalingRule+scalingRule pName_ pAction_ pTrigger_ =+ ScalingRule'+ { _srDescription = Nothing+ , _srName = pName_+ , _srAction = pAction_+ , _srTrigger = pTrigger_+ }+++-- | A friendly, more verbose description of the automatic scaling rule.+srDescription :: Lens' ScalingRule (Maybe Text)+srDescription = lens _srDescription (\ s a -> s{_srDescription = a});++-- | The name used to identify an automatic scaling rule. Rule names must be unique within a scaling policy.+srName :: Lens' ScalingRule Text+srName = lens _srName (\ s a -> s{_srName = a});++-- | The conditions that trigger an automatic scaling activity.+srAction :: Lens' ScalingRule ScalingAction+srAction = lens _srAction (\ s a -> s{_srAction = a});++-- | The CloudWatch alarm definition that determines when automatic scaling activity is triggered.+srTrigger :: Lens' ScalingRule ScalingTrigger+srTrigger = lens _srTrigger (\ s a -> s{_srTrigger = a});++instance FromJSON ScalingRule where+ parseJSON+ = withObject "ScalingRule"+ (\ x ->+ ScalingRule' <$>+ (x .:? "Description") <*> (x .: "Name") <*>+ (x .: "Action")+ <*> (x .: "Trigger"))++instance Hashable ScalingRule where++instance NFData ScalingRule where++instance ToJSON ScalingRule where+ toJSON ScalingRule'{..}+ = object+ (catMaybes+ [("Description" .=) <$> _srDescription,+ Just ("Name" .= _srName),+ Just ("Action" .= _srAction),+ Just ("Trigger" .= _srTrigger)])++-- | The conditions that trigger an automatic scaling activity.+--+--+--+-- /See:/ 'scalingTrigger' smart constructor.+newtype ScalingTrigger = ScalingTrigger'+ { _stCloudWatchAlarmDefinition :: CloudWatchAlarmDefinition+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ScalingTrigger' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'stCloudWatchAlarmDefinition' - The definition of a CloudWatch metric alarm. When the defined alarm conditions are met along with other trigger parameters, scaling activity begins.+scalingTrigger+ :: CloudWatchAlarmDefinition -- ^ 'stCloudWatchAlarmDefinition'+ -> ScalingTrigger+scalingTrigger pCloudWatchAlarmDefinition_ =+ ScalingTrigger' {_stCloudWatchAlarmDefinition = pCloudWatchAlarmDefinition_}+++-- | The definition of a CloudWatch metric alarm. When the defined alarm conditions are met along with other trigger parameters, scaling activity begins.+stCloudWatchAlarmDefinition :: Lens' ScalingTrigger CloudWatchAlarmDefinition+stCloudWatchAlarmDefinition = lens _stCloudWatchAlarmDefinition (\ s a -> s{_stCloudWatchAlarmDefinition = a});++instance FromJSON ScalingTrigger where+ parseJSON+ = withObject "ScalingTrigger"+ (\ x ->+ ScalingTrigger' <$>+ (x .: "CloudWatchAlarmDefinition"))++instance Hashable ScalingTrigger where++instance NFData ScalingTrigger where++instance ToJSON ScalingTrigger where+ toJSON ScalingTrigger'{..}+ = object+ (catMaybes+ [Just+ ("CloudWatchAlarmDefinition" .=+ _stCloudWatchAlarmDefinition)])++-- | Configuration of the script to run during a bootstrap action.+--+--+--+-- /See:/ 'scriptBootstrapActionConfig' smart constructor.+data ScriptBootstrapActionConfig = ScriptBootstrapActionConfig'+ { _sbacArgs :: !(Maybe [Text])+ , _sbacPath :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ScriptBootstrapActionConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sbacArgs' - A list of command line arguments to pass to the bootstrap action script.+--+-- * 'sbacPath' - Location of the script to run during a bootstrap action. Can be either a location in Amazon S3 or on a local file system.+scriptBootstrapActionConfig+ :: Text -- ^ 'sbacPath'+ -> ScriptBootstrapActionConfig+scriptBootstrapActionConfig pPath_ =+ ScriptBootstrapActionConfig' {_sbacArgs = Nothing, _sbacPath = pPath_}+++-- | A list of command line arguments to pass to the bootstrap action script.+sbacArgs :: Lens' ScriptBootstrapActionConfig [Text]+sbacArgs = lens _sbacArgs (\ s a -> s{_sbacArgs = a}) . _Default . _Coerce;++-- | Location of the script to run during a bootstrap action. Can be either a location in Amazon S3 or on a local file system.+sbacPath :: Lens' ScriptBootstrapActionConfig Text+sbacPath = lens _sbacPath (\ s a -> s{_sbacPath = a});++instance Hashable ScriptBootstrapActionConfig where++instance NFData ScriptBootstrapActionConfig where++instance ToJSON ScriptBootstrapActionConfig where+ toJSON ScriptBootstrapActionConfig'{..}+ = object+ (catMaybes+ [("Args" .=) <$> _sbacArgs,+ Just ("Path" .= _sbacPath)])++-- | The creation date and time, and name, of a security configuration.+--+--+--+-- /See:/ 'securityConfigurationSummary' smart constructor.+data SecurityConfigurationSummary = SecurityConfigurationSummary'+ { _scsName :: !(Maybe Text)+ , _scsCreationDateTime :: !(Maybe POSIX)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'SecurityConfigurationSummary' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'scsName' - The name of the security configuration.+--+-- * 'scsCreationDateTime' - The date and time the security configuration was created.+securityConfigurationSummary+ :: SecurityConfigurationSummary+securityConfigurationSummary =+ SecurityConfigurationSummary'+ {_scsName = Nothing, _scsCreationDateTime = Nothing}+++-- | The name of the security configuration.+scsName :: Lens' SecurityConfigurationSummary (Maybe Text)+scsName = lens _scsName (\ s a -> s{_scsName = a});++-- | The date and time the security configuration was created.+scsCreationDateTime :: Lens' SecurityConfigurationSummary (Maybe UTCTime)+scsCreationDateTime = lens _scsCreationDateTime (\ s a -> s{_scsCreationDateTime = a}) . mapping _Time;++instance FromJSON SecurityConfigurationSummary where+ parseJSON+ = withObject "SecurityConfigurationSummary"+ (\ x ->+ SecurityConfigurationSummary' <$>+ (x .:? "Name") <*> (x .:? "CreationDateTime"))++instance Hashable SecurityConfigurationSummary where++instance NFData SecurityConfigurationSummary where++-- | Policy for customizing shrink operations. Allows configuration of decommissioning timeout and targeted instance shrinking.+--+--+--+-- /See:/ 'shrinkPolicy' smart constructor.+data ShrinkPolicy = ShrinkPolicy'+ { _spDecommissionTimeout :: !(Maybe Int)+ , _spInstanceResizePolicy :: !(Maybe InstanceResizePolicy)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ShrinkPolicy' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'spDecommissionTimeout' - The desired timeout for decommissioning an instance. Overrides the default YARN decommissioning timeout.+--+-- * 'spInstanceResizePolicy' - Custom policy for requesting termination protection or termination of specific instances when shrinking an instance group.+shrinkPolicy+ :: ShrinkPolicy+shrinkPolicy =+ ShrinkPolicy'+ {_spDecommissionTimeout = Nothing, _spInstanceResizePolicy = Nothing}+++-- | The desired timeout for decommissioning an instance. Overrides the default YARN decommissioning timeout.+spDecommissionTimeout :: Lens' ShrinkPolicy (Maybe Int)+spDecommissionTimeout = lens _spDecommissionTimeout (\ s a -> s{_spDecommissionTimeout = a});++-- | Custom policy for requesting termination protection or termination of specific instances when shrinking an instance group.+spInstanceResizePolicy :: Lens' ShrinkPolicy (Maybe InstanceResizePolicy)+spInstanceResizePolicy = lens _spInstanceResizePolicy (\ s a -> s{_spInstanceResizePolicy = a});++instance FromJSON ShrinkPolicy where+ parseJSON+ = withObject "ShrinkPolicy"+ (\ x ->+ ShrinkPolicy' <$>+ (x .:? "DecommissionTimeout") <*>+ (x .:? "InstanceResizePolicy"))++instance Hashable ShrinkPolicy where++instance NFData ShrinkPolicy where++instance ToJSON ShrinkPolicy where+ toJSON ShrinkPolicy'{..}+ = object+ (catMaybes+ [("DecommissionTimeout" .=) <$>+ _spDecommissionTimeout,+ ("InstanceResizePolicy" .=) <$>+ _spInstanceResizePolicy])++-- | An automatic scaling configuration, which describes how the policy adds or removes instances, the cooldown period, and the number of EC2 instances that will be added each time the CloudWatch metric alarm condition is satisfied.+--+--+--+-- /See:/ 'simpleScalingPolicyConfiguration' smart constructor.+data SimpleScalingPolicyConfiguration = SimpleScalingPolicyConfiguration'+ { _sspcAdjustmentType :: !(Maybe AdjustmentType)+ , _sspcCoolDown :: !(Maybe Int)+ , _sspcScalingAdjustment :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'SimpleScalingPolicyConfiguration' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sspcAdjustmentType' - The way in which EC2 instances are added (if @ScalingAdjustment@ is a positive number) or terminated (if @ScalingAdjustment@ is a negative number) each time the scaling activity is triggered. @CHANGE_IN_CAPACITY@ is the default. @CHANGE_IN_CAPACITY@ indicates that the EC2 instance count increments or decrements by @ScalingAdjustment@ , which should be expressed as an integer. @PERCENT_CHANGE_IN_CAPACITY@ indicates the instance count increments or decrements by the percentage specified by @ScalingAdjustment@ , which should be expressed as a decimal. For example, 0.20 indicates an increase in 20% increments of cluster capacity. @EXACT_CAPACITY@ indicates the scaling activity results in an instance group with the number of EC2 instances specified by @ScalingAdjustment@ , which should be expressed as a positive integer.+--+-- * 'sspcCoolDown' - The amount of time, in seconds, after a scaling activity completes before any further trigger-related scaling activities can start. The default value is 0.+--+-- * 'sspcScalingAdjustment' - The amount by which to scale in or scale out, based on the specified @AdjustmentType@ . A positive value adds to the instance group's EC2 instance count while a negative number removes instances. If @AdjustmentType@ is set to @EXACT_CAPACITY@ , the number should only be a positive integer. If @AdjustmentType@ is set to @PERCENT_CHANGE_IN_CAPACITY@ , the value should express the percentage as a decimal. For example, -0.20 indicates a decrease in 20% increments of cluster capacity.+simpleScalingPolicyConfiguration+ :: Int -- ^ 'sspcScalingAdjustment'+ -> SimpleScalingPolicyConfiguration+simpleScalingPolicyConfiguration pScalingAdjustment_ =+ SimpleScalingPolicyConfiguration'+ { _sspcAdjustmentType = Nothing+ , _sspcCoolDown = Nothing+ , _sspcScalingAdjustment = pScalingAdjustment_+ }+++-- | The way in which EC2 instances are added (if @ScalingAdjustment@ is a positive number) or terminated (if @ScalingAdjustment@ is a negative number) each time the scaling activity is triggered. @CHANGE_IN_CAPACITY@ is the default. @CHANGE_IN_CAPACITY@ indicates that the EC2 instance count increments or decrements by @ScalingAdjustment@ , which should be expressed as an integer. @PERCENT_CHANGE_IN_CAPACITY@ indicates the instance count increments or decrements by the percentage specified by @ScalingAdjustment@ , which should be expressed as a decimal. For example, 0.20 indicates an increase in 20% increments of cluster capacity. @EXACT_CAPACITY@ indicates the scaling activity results in an instance group with the number of EC2 instances specified by @ScalingAdjustment@ , which should be expressed as a positive integer.+sspcAdjustmentType :: Lens' SimpleScalingPolicyConfiguration (Maybe AdjustmentType)+sspcAdjustmentType = lens _sspcAdjustmentType (\ s a -> s{_sspcAdjustmentType = a});++-- | The amount of time, in seconds, after a scaling activity completes before any further trigger-related scaling activities can start. The default value is 0.+sspcCoolDown :: Lens' SimpleScalingPolicyConfiguration (Maybe Int)+sspcCoolDown = lens _sspcCoolDown (\ s a -> s{_sspcCoolDown = a});++-- | The amount by which to scale in or scale out, based on the specified @AdjustmentType@ . A positive value adds to the instance group's EC2 instance count while a negative number removes instances. If @AdjustmentType@ is set to @EXACT_CAPACITY@ , the number should only be a positive integer. If @AdjustmentType@ is set to @PERCENT_CHANGE_IN_CAPACITY@ , the value should express the percentage as a decimal. For example, -0.20 indicates a decrease in 20% increments of cluster capacity.+sspcScalingAdjustment :: Lens' SimpleScalingPolicyConfiguration Int+sspcScalingAdjustment = lens _sspcScalingAdjustment (\ s a -> s{_sspcScalingAdjustment = a});++instance FromJSON SimpleScalingPolicyConfiguration+ where+ parseJSON+ = withObject "SimpleScalingPolicyConfiguration"+ (\ x ->+ SimpleScalingPolicyConfiguration' <$>+ (x .:? "AdjustmentType") <*> (x .:? "CoolDown") <*>+ (x .: "ScalingAdjustment"))++instance Hashable SimpleScalingPolicyConfiguration+ where++instance NFData SimpleScalingPolicyConfiguration+ where++instance ToJSON SimpleScalingPolicyConfiguration+ where+ toJSON SimpleScalingPolicyConfiguration'{..}+ = object+ (catMaybes+ [("AdjustmentType" .=) <$> _sspcAdjustmentType,+ ("CoolDown" .=) <$> _sspcCoolDown,+ Just+ ("ScalingAdjustment" .= _sspcScalingAdjustment)])++-- | The launch specification for Spot instances in the instance fleet, which determines the defined duration and provisioning timeout behavior.+--+--+--+-- /See:/ 'spotProvisioningSpecification' smart constructor.+data SpotProvisioningSpecification = SpotProvisioningSpecification'+ { _spsBlockDurationMinutes :: !(Maybe Nat)+ , _spsTimeoutDurationMinutes :: !Nat+ , _spsTimeoutAction :: !SpotProvisioningTimeoutAction+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'SpotProvisioningSpecification' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'spsBlockDurationMinutes' - The defined duration for Spot instances (also known as Spot blocks) in minutes. When specified, the Spot instance does not terminate before the defined duration expires, and defined duration pricing for Spot instances applies. Valid values are 60, 120, 180, 240, 300, or 360. The duration period starts as soon as a Spot instance receives its instance ID. At the end of the duration, Amazon EC2 marks the Spot instance for termination and provides a Spot instance termination notice, which gives the instance a two-minute warning before it terminates.+--+-- * 'spsTimeoutDurationMinutes' - The spot provisioning timeout period in minutes. If Spot instances are not provisioned within this time period, the @TimeOutAction@ is taken. Minimum value is 5 and maximum value is 1440. The timeout applies only during initial provisioning, when the cluster is first created.+--+-- * 'spsTimeoutAction' - The action to take when @TargetSpotCapacity@ has not been fulfilled when the @TimeoutDurationMinutes@ has expired. Spot instances are not uprovisioned within the Spot provisioining timeout. Valid values are @TERMINATE_CLUSTER@ and @SWITCH_TO_ON_DEMAND@ . SWITCH_TO_ON_DEMAND specifies that if no Spot instances are available, On-Demand Instances should be provisioned to fulfill any remaining Spot capacity.+spotProvisioningSpecification+ :: Natural -- ^ 'spsTimeoutDurationMinutes'+ -> SpotProvisioningTimeoutAction -- ^ 'spsTimeoutAction'+ -> SpotProvisioningSpecification+spotProvisioningSpecification pTimeoutDurationMinutes_ pTimeoutAction_ =+ SpotProvisioningSpecification'+ { _spsBlockDurationMinutes = Nothing+ , _spsTimeoutDurationMinutes = _Nat # pTimeoutDurationMinutes_+ , _spsTimeoutAction = pTimeoutAction_+ }+++-- | The defined duration for Spot instances (also known as Spot blocks) in minutes. When specified, the Spot instance does not terminate before the defined duration expires, and defined duration pricing for Spot instances applies. Valid values are 60, 120, 180, 240, 300, or 360. The duration period starts as soon as a Spot instance receives its instance ID. At the end of the duration, Amazon EC2 marks the Spot instance for termination and provides a Spot instance termination notice, which gives the instance a two-minute warning before it terminates.+spsBlockDurationMinutes :: Lens' SpotProvisioningSpecification (Maybe Natural)+spsBlockDurationMinutes = lens _spsBlockDurationMinutes (\ s a -> s{_spsBlockDurationMinutes = a}) . mapping _Nat;++-- | The spot provisioning timeout period in minutes. If Spot instances are not provisioned within this time period, the @TimeOutAction@ is taken. Minimum value is 5 and maximum value is 1440. The timeout applies only during initial provisioning, when the cluster is first created.+spsTimeoutDurationMinutes :: Lens' SpotProvisioningSpecification Natural+spsTimeoutDurationMinutes = lens _spsTimeoutDurationMinutes (\ s a -> s{_spsTimeoutDurationMinutes = a}) . _Nat;++-- | The action to take when @TargetSpotCapacity@ has not been fulfilled when the @TimeoutDurationMinutes@ has expired. Spot instances are not uprovisioned within the Spot provisioining timeout. Valid values are @TERMINATE_CLUSTER@ and @SWITCH_TO_ON_DEMAND@ . SWITCH_TO_ON_DEMAND specifies that if no Spot instances are available, On-Demand Instances should be provisioned to fulfill any remaining Spot capacity.+spsTimeoutAction :: Lens' SpotProvisioningSpecification SpotProvisioningTimeoutAction+spsTimeoutAction = lens _spsTimeoutAction (\ s a -> s{_spsTimeoutAction = a});++instance FromJSON SpotProvisioningSpecification where+ parseJSON+ = withObject "SpotProvisioningSpecification"+ (\ x ->+ SpotProvisioningSpecification' <$>+ (x .:? "BlockDurationMinutes") <*>+ (x .: "TimeoutDurationMinutes")+ <*> (x .: "TimeoutAction"))++instance Hashable SpotProvisioningSpecification where++instance NFData SpotProvisioningSpecification where++instance ToJSON SpotProvisioningSpecification where+ toJSON SpotProvisioningSpecification'{..}+ = object+ (catMaybes+ [("BlockDurationMinutes" .=) <$>+ _spsBlockDurationMinutes,+ Just+ ("TimeoutDurationMinutes" .=+ _spsTimeoutDurationMinutes),+ Just ("TimeoutAction" .= _spsTimeoutAction)])++-- | This represents a step in a cluster.+--+--+--+-- /See:/ 'step' smart constructor.+data Step = Step'+ { _sStatus :: !(Maybe StepStatus)+ , _sActionOnFailure :: !(Maybe ActionOnFailure)+ , _sConfig :: !(Maybe HadoopStepConfig)+ , _sName :: !(Maybe Text)+ , _sId :: !(Maybe Text)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'Step' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sStatus' - The current execution status details of the cluster step.+--+-- * 'sActionOnFailure' - This specifies what action to take when the cluster step fails. Possible values are TERMINATE_CLUSTER, CANCEL_AND_WAIT, and CONTINUE.+--+-- * 'sConfig' - The Hadoop job configuration of the cluster step.+--+-- * 'sName' - The name of the cluster step.+--+-- * 'sId' - The identifier of the cluster step.+step+ :: Step+step =+ Step'+ { _sStatus = Nothing+ , _sActionOnFailure = Nothing+ , _sConfig = Nothing+ , _sName = Nothing+ , _sId = Nothing+ }+++-- | The current execution status details of the cluster step.+sStatus :: Lens' Step (Maybe StepStatus)+sStatus = lens _sStatus (\ s a -> s{_sStatus = a});++-- | This specifies what action to take when the cluster step fails. Possible values are TERMINATE_CLUSTER, CANCEL_AND_WAIT, and CONTINUE.+sActionOnFailure :: Lens' Step (Maybe ActionOnFailure)+sActionOnFailure = lens _sActionOnFailure (\ s a -> s{_sActionOnFailure = a});++-- | The Hadoop job configuration of the cluster step.+sConfig :: Lens' Step (Maybe HadoopStepConfig)+sConfig = lens _sConfig (\ s a -> s{_sConfig = a});++-- | The name of the cluster step.+sName :: Lens' Step (Maybe Text)+sName = lens _sName (\ s a -> s{_sName = a});++-- | The identifier of the cluster step.+sId :: Lens' Step (Maybe Text)+sId = lens _sId (\ s a -> s{_sId = a});++instance FromJSON Step where+ parseJSON+ = withObject "Step"+ (\ x ->+ Step' <$>+ (x .:? "Status") <*> (x .:? "ActionOnFailure") <*>+ (x .:? "Config")+ <*> (x .:? "Name")+ <*> (x .:? "Id"))++instance Hashable Step where++instance NFData Step where++-- | Specification of a cluster (job flow) step.+--+--+--+-- /See:/ 'stepConfig' smart constructor.+data StepConfig = StepConfig'+ { _scActionOnFailure :: !(Maybe ActionOnFailure)+ , _scName :: !Text+ , _scHadoopJARStep :: !HadoopJARStepConfig+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'StepConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'scActionOnFailure' - The action to take if the step fails.+--+-- * 'scName' - The name of the step.+--+-- * 'scHadoopJARStep' - The JAR file used for the step.+stepConfig+ :: Text -- ^ 'scName'+ -> HadoopJARStepConfig -- ^ 'scHadoopJARStep'+ -> StepConfig+stepConfig pName_ pHadoopJARStep_ =+ StepConfig'+ { _scActionOnFailure = Nothing+ , _scName = pName_+ , _scHadoopJARStep = pHadoopJARStep_+ }+++-- | The action to take if the step fails.+scActionOnFailure :: Lens' StepConfig (Maybe ActionOnFailure)+scActionOnFailure = lens _scActionOnFailure (\ s a -> s{_scActionOnFailure = a});++-- | The name of the step.+scName :: Lens' StepConfig Text+scName = lens _scName (\ s a -> s{_scName = a});++-- | The JAR file used for the step.+scHadoopJARStep :: Lens' StepConfig HadoopJARStepConfig+scHadoopJARStep = lens _scHadoopJARStep (\ s a -> s{_scHadoopJARStep = a});++instance Hashable StepConfig where++instance NFData StepConfig where++instance ToJSON StepConfig where+ toJSON StepConfig'{..}+ = object+ (catMaybes+ [("ActionOnFailure" .=) <$> _scActionOnFailure,+ Just ("Name" .= _scName),+ Just ("HadoopJarStep" .= _scHadoopJARStep)])++-- | The details of the step state change reason.+--+--+--+-- /See:/ 'stepStateChangeReason' smart constructor.+data StepStateChangeReason = StepStateChangeReason'+ { _sscrCode :: !(Maybe StepStateChangeReasonCode)+ , _sscrMessage :: !(Maybe Text)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'StepStateChangeReason' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'sscrCode' - The programmable code for the state change reason. Note: Currently, the service provides no code for the state change.+--+-- * 'sscrMessage' - The descriptive message for the state change reason.+stepStateChangeReason+ :: StepStateChangeReason+stepStateChangeReason =+ StepStateChangeReason' {_sscrCode = Nothing, _sscrMessage = Nothing}+++-- | The programmable code for the state change reason. Note: Currently, the service provides no code for the state change.+sscrCode :: Lens' StepStateChangeReason (Maybe StepStateChangeReasonCode)+sscrCode = lens _sscrCode (\ s a -> s{_sscrCode = a});++-- | The descriptive message for the state change reason.+sscrMessage :: Lens' StepStateChangeReason (Maybe Text)+sscrMessage = lens _sscrMessage (\ s a -> s{_sscrMessage = a});++instance FromJSON StepStateChangeReason where+ parseJSON+ = withObject "StepStateChangeReason"+ (\ x ->+ StepStateChangeReason' <$>+ (x .:? "Code") <*> (x .:? "Message"))++instance Hashable StepStateChangeReason where++instance NFData StepStateChangeReason where++-- | The execution status details of the cluster step.+--+--+--+-- /See:/ 'stepStatus' smart constructor.+data StepStatus = StepStatus'+ { _ssState :: !(Maybe StepState)+ , _ssFailureDetails :: !(Maybe FailureDetails)+ , _ssStateChangeReason :: !(Maybe StepStateChangeReason)+ , _ssTimeline :: !(Maybe StepTimeline)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'StepStatus' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ssState' - The execution state of the cluster step.+--+-- * 'ssFailureDetails' - The details for the step failure including reason, message, and log file path where the root cause was identified.+--+-- * 'ssStateChangeReason' - The reason for the step execution status change.+--+-- * 'ssTimeline' - The timeline of the cluster step status over time.+stepStatus+ :: StepStatus+stepStatus =+ StepStatus'+ { _ssState = Nothing+ , _ssFailureDetails = Nothing+ , _ssStateChangeReason = Nothing+ , _ssTimeline = Nothing+ }+++-- | The execution state of the cluster step.+ssState :: Lens' StepStatus (Maybe StepState)+ssState = lens _ssState (\ s a -> s{_ssState = a});++-- | The details for the step failure including reason, message, and log file path where the root cause was identified.+ssFailureDetails :: Lens' StepStatus (Maybe FailureDetails)+ssFailureDetails = lens _ssFailureDetails (\ s a -> s{_ssFailureDetails = a});++-- | The reason for the step execution status change.+ssStateChangeReason :: Lens' StepStatus (Maybe StepStateChangeReason)+ssStateChangeReason = lens _ssStateChangeReason (\ s a -> s{_ssStateChangeReason = a});++-- | The timeline of the cluster step status over time.+ssTimeline :: Lens' StepStatus (Maybe StepTimeline)+ssTimeline = lens _ssTimeline (\ s a -> s{_ssTimeline = a});++instance FromJSON StepStatus where+ parseJSON+ = withObject "StepStatus"+ (\ x ->+ StepStatus' <$>+ (x .:? "State") <*> (x .:? "FailureDetails") <*>+ (x .:? "StateChangeReason")+ <*> (x .:? "Timeline"))++instance Hashable StepStatus where++instance NFData StepStatus where++-- | The summary of the cluster step.+--+--+--+-- /See:/ 'stepSummary' smart constructor.+data StepSummary = StepSummary'+ { _ssStatus :: !(Maybe StepStatus)+ , _ssActionOnFailure :: !(Maybe ActionOnFailure)+ , _ssConfig :: !(Maybe HadoopStepConfig)+ , _ssName :: !(Maybe Text)+ , _ssId :: !(Maybe Text)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'StepSummary' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ssStatus' - The current execution status details of the cluster step.+--+-- * 'ssActionOnFailure' - This specifies what action to take when the cluster step fails. Possible values are TERMINATE_CLUSTER, CANCEL_AND_WAIT, and CONTINUE.+--+-- * 'ssConfig' - The Hadoop job configuration of the cluster step.+--+-- * 'ssName' - The name of the cluster step.+--+-- * 'ssId' - The identifier of the cluster step.+stepSummary+ :: StepSummary+stepSummary =+ StepSummary'+ { _ssStatus = Nothing+ , _ssActionOnFailure = Nothing+ , _ssConfig = Nothing+ , _ssName = Nothing+ , _ssId = Nothing+ }+++-- | The current execution status details of the cluster step.+ssStatus :: Lens' StepSummary (Maybe StepStatus)+ssStatus = lens _ssStatus (\ s a -> s{_ssStatus = a});++-- | This specifies what action to take when the cluster step fails. Possible values are TERMINATE_CLUSTER, CANCEL_AND_WAIT, and CONTINUE.+ssActionOnFailure :: Lens' StepSummary (Maybe ActionOnFailure)+ssActionOnFailure = lens _ssActionOnFailure (\ s a -> s{_ssActionOnFailure = a});++-- | The Hadoop job configuration of the cluster step.+ssConfig :: Lens' StepSummary (Maybe HadoopStepConfig)+ssConfig = lens _ssConfig (\ s a -> s{_ssConfig = a});++-- | The name of the cluster step.+ssName :: Lens' StepSummary (Maybe Text)+ssName = lens _ssName (\ s a -> s{_ssName = a});++-- | The identifier of the cluster step.+ssId :: Lens' StepSummary (Maybe Text)+ssId = lens _ssId (\ s a -> s{_ssId = a});++instance FromJSON StepSummary where+ parseJSON+ = withObject "StepSummary"+ (\ x ->+ StepSummary' <$>+ (x .:? "Status") <*> (x .:? "ActionOnFailure") <*>+ (x .:? "Config")+ <*> (x .:? "Name")+ <*> (x .:? "Id"))++instance Hashable StepSummary where++instance NFData StepSummary where++-- | The timeline of the cluster step lifecycle.+--+--+--+-- /See:/ 'stepTimeline' smart constructor.+data StepTimeline = StepTimeline'+ { _stCreationDateTime :: !(Maybe POSIX)+ , _stEndDateTime :: !(Maybe POSIX)+ , _stStartDateTime :: !(Maybe POSIX)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'StepTimeline' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'stCreationDateTime' - The date and time when the cluster step was created.+--+-- * 'stEndDateTime' - The date and time when the cluster step execution completed or failed.+--+-- * 'stStartDateTime' - The date and time when the cluster step execution started.+stepTimeline+ :: StepTimeline+stepTimeline =+ StepTimeline'+ { _stCreationDateTime = Nothing+ , _stEndDateTime = Nothing+ , _stStartDateTime = Nothing+ }+++-- | The date and time when the cluster step was created.+stCreationDateTime :: Lens' StepTimeline (Maybe UTCTime)+stCreationDateTime = lens _stCreationDateTime (\ s a -> s{_stCreationDateTime = a}) . mapping _Time;++-- | The date and time when the cluster step execution completed or failed.+stEndDateTime :: Lens' StepTimeline (Maybe UTCTime)+stEndDateTime = lens _stEndDateTime (\ s a -> s{_stEndDateTime = a}) . mapping _Time;++-- | The date and time when the cluster step execution started.+stStartDateTime :: Lens' StepTimeline (Maybe UTCTime)+stStartDateTime = lens _stStartDateTime (\ s a -> s{_stStartDateTime = a}) . mapping _Time;++instance FromJSON StepTimeline where+ parseJSON+ = withObject "StepTimeline"+ (\ x ->+ StepTimeline' <$>+ (x .:? "CreationDateTime") <*> (x .:? "EndDateTime")+ <*> (x .:? "StartDateTime"))++instance Hashable StepTimeline where++instance NFData StepTimeline where++-- | The list of supported product configurations which allow user-supplied arguments. EMR accepts these arguments and forwards them to the corresponding installation script as bootstrap action arguments.+--+--+--+-- /See:/ 'supportedProductConfig' smart constructor.+data SupportedProductConfig = SupportedProductConfig'+ { _spcArgs :: !(Maybe [Text])+ , _spcName :: !(Maybe Text)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'SupportedProductConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'spcArgs' - The list of user-supplied arguments.+--+-- * 'spcName' - The name of the product configuration.+supportedProductConfig+ :: SupportedProductConfig+supportedProductConfig =+ SupportedProductConfig' {_spcArgs = Nothing, _spcName = Nothing}+++-- | The list of user-supplied arguments.+spcArgs :: Lens' SupportedProductConfig [Text]+spcArgs = lens _spcArgs (\ s a -> s{_spcArgs = a}) . _Default . _Coerce;++-- | The name of the product configuration.+spcName :: Lens' SupportedProductConfig (Maybe Text)+spcName = lens _spcName (\ s a -> s{_spcName = a});++instance Hashable SupportedProductConfig where++instance NFData SupportedProductConfig where++instance ToJSON SupportedProductConfig where+ toJSON SupportedProductConfig'{..}+ = object+ (catMaybes+ [("Args" .=) <$> _spcArgs, ("Name" .=) <$> _spcName])++-- | A key/value pair containing user-defined metadata that you can associate with an Amazon EMR resource. Tags make it easier to associate clusters in various ways, such as grouping clusters to track your Amazon EMR resource allocation costs. For more information, see <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-tags.html Tagging Amazon EMR Resources> .+--+--+--+-- /See:/ 'tag' smart constructor.+data Tag = Tag'+ { _tagValue :: !(Maybe Text)+ , _tagKey :: !(Maybe Text)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'Tag' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tagValue' - A user-defined value, which is optional in a tag. For more information, see <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-tags.html Tagging Amazon EMR Resources> .+--+-- * 'tagKey' - A user-defined key, which is the minimum required information for a valid tag. For more information, see <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-tags.html Tagging Amazon EMR Resources> .+tag+ :: Tag+tag = Tag' {_tagValue = Nothing, _tagKey = Nothing}+++-- | A user-defined value, which is optional in a tag. For more information, see <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-tags.html Tagging Amazon EMR Resources> .+tagValue :: Lens' Tag (Maybe Text)+tagValue = lens _tagValue (\ s a -> s{_tagValue = a});++-- | A user-defined key, which is the minimum required information for a valid tag. For more information, see <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-tags.html Tagging Amazon EMR Resources> .+tagKey :: Lens' Tag (Maybe Text)+tagKey = lens _tagKey (\ s a -> s{_tagKey = a});++instance FromJSON Tag where+ parseJSON+ = withObject "Tag"+ (\ x -> Tag' <$> (x .:? "Value") <*> (x .:? "Key"))++instance Hashable Tag where++instance NFData Tag where++instance ToJSON Tag where+ toJSON Tag'{..}+ = object+ (catMaybes+ [("Value" .=) <$> _tagValue, ("Key" .=) <$> _tagKey])++-- | EBS volume specifications such as volume type, IOPS, and size (GiB) that will be requested for the EBS volume attached to an EC2 instance in the cluster.+--+--+--+-- /See:/ 'volumeSpecification' smart constructor.+data VolumeSpecification = VolumeSpecification'+ { _vsIOPS :: !(Maybe Int)+ , _vsVolumeType :: !Text+ , _vsSizeInGB :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'VolumeSpecification' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'vsIOPS' - The number of I/O operations per second (IOPS) that the volume supports.+--+-- * 'vsVolumeType' - The volume type. Volume types supported are gp2, io1, standard.+--+-- * 'vsSizeInGB' - The volume size, in gibibytes (GiB). This can be a number from 1 - 1024. If the volume type is EBS-optimized, the minimum value is 10.+volumeSpecification+ :: Text -- ^ 'vsVolumeType'+ -> Int -- ^ 'vsSizeInGB'+ -> VolumeSpecification+volumeSpecification pVolumeType_ pSizeInGB_ =+ VolumeSpecification'+ {_vsIOPS = Nothing, _vsVolumeType = pVolumeType_, _vsSizeInGB = pSizeInGB_}+++-- | The number of I/O operations per second (IOPS) that the volume supports.+vsIOPS :: Lens' VolumeSpecification (Maybe Int)+vsIOPS = lens _vsIOPS (\ s a -> s{_vsIOPS = a});++-- | The volume type. Volume types supported are gp2, io1, standard.+vsVolumeType :: Lens' VolumeSpecification Text+vsVolumeType = lens _vsVolumeType (\ s a -> s{_vsVolumeType = a});++-- | The volume size, in gibibytes (GiB). This can be a number from 1 - 1024. If the volume type is EBS-optimized, the minimum value is 10.+vsSizeInGB :: Lens' VolumeSpecification Int+vsSizeInGB = lens _vsSizeInGB (\ s a -> s{_vsSizeInGB = a});++instance FromJSON VolumeSpecification where+ parseJSON+ = withObject "VolumeSpecification"+ (\ x ->+ VolumeSpecification' <$>+ (x .:? "Iops") <*> (x .: "VolumeType") <*>+ (x .: "SizeInGB"))++instance Hashable VolumeSpecification where++instance NFData VolumeSpecification where instance ToJSON VolumeSpecification where toJSON VolumeSpecification'{..}
gen/Network/AWS/EMR/Types/Sum.hs view
@@ -9,23 +9,24 @@ -- | -- Module : Network.AWS.EMR.Types.Sum--- Copyright : (c) 2013-2016 Brendan Hay+-- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- module Network.AWS.EMR.Types.Sum where -import Network.AWS.Prelude+import Network.AWS.Prelude data ActionOnFailure- = CancelAndWait- | Continue- | TerminateCluster- | TerminateJobFlow- deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)+ = CancelAndWait+ | Continue+ | TerminateCluster+ | TerminateJobFlow+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic) + instance FromText ActionOnFailure where parser = takeLowerText >>= \case "cancel_and_wait" -> pure CancelAndWait@@ -55,11 +56,12 @@ parseJSON = parseJSONText "ActionOnFailure" data AdjustmentType- = ChangeInCapacity- | ExactCapacity- | PercentChangeInCapacity- deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)+ = ChangeInCapacity+ | ExactCapacity+ | PercentChangeInCapacity+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic) + instance FromText AdjustmentType where parser = takeLowerText >>= \case "change_in_capacity" -> pure ChangeInCapacity@@ -87,14 +89,15 @@ parseJSON = parseJSONText "AdjustmentType" data AutoScalingPolicyState- = Attached- | Attaching- | Detached- | Detaching- | Failed- | Pending- deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)+ = Attached+ | Attaching+ | Detached+ | Detaching+ | Failed+ | Pending+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic) + instance FromText AutoScalingPolicyState where parser = takeLowerText >>= \case "attached" -> pure Attached@@ -125,11 +128,12 @@ parseJSON = parseJSONText "AutoScalingPolicyState" data AutoScalingPolicyStateChangeReasonCode- = CleanupFailure- | ProvisionFailure- | UserRequest- deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)+ = CleanupFailure+ | ProvisionFailure+ | UserRequest+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic) + instance FromText AutoScalingPolicyStateChangeReasonCode where parser = takeLowerText >>= \case "cleanup_failure" -> pure CleanupFailure@@ -154,10 +158,11 @@ parseJSON = parseJSONText "AutoScalingPolicyStateChangeReasonCode" data CancelStepsRequestStatus- = CSRSFailed- | CSRSSubmitted- deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)+ = CSRSFailed+ | CSRSSubmitted+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic) + instance FromText CancelStepsRequestStatus where parser = takeLowerText >>= \case "failed" -> pure CSRSFailed@@ -180,15 +185,16 @@ parseJSON = parseJSONText "CancelStepsRequestStatus" data ClusterState- = CSBootstrapping- | CSRunning- | CSStarting- | CSTerminated- | CSTerminatedWithErrors- | CSTerminating- | CSWaiting- deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)+ = CSBootstrapping+ | CSRunning+ | CSStarting+ | CSTerminated+ | CSTerminatedWithErrors+ | CSTerminating+ | CSWaiting+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic) + instance FromText ClusterState where parser = takeLowerText >>= \case "bootstrapping" -> pure CSBootstrapping@@ -224,32 +230,36 @@ parseJSON = parseJSONText "ClusterState" data ClusterStateChangeReasonCode- = CSCRCAllStepsCompleted- | CSCRCBootstrapFailure- | CSCRCInstanceFailure- | CSCRCInternalError- | CSCRCStepFailure- | CSCRCUserRequest- | CSCRCValidationError- deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)+ = CSCRCAllStepsCompleted+ | CSCRCBootstrapFailure+ | CSCRCInstanceFailure+ | CSCRCInstanceFleetTimeout+ | CSCRCInternalError+ | CSCRCStepFailure+ | CSCRCUserRequest+ | CSCRCValidationError+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic) + instance FromText ClusterStateChangeReasonCode where parser = takeLowerText >>= \case "all_steps_completed" -> pure CSCRCAllStepsCompleted "bootstrap_failure" -> pure CSCRCBootstrapFailure "instance_failure" -> pure CSCRCInstanceFailure+ "instance_fleet_timeout" -> pure CSCRCInstanceFleetTimeout "internal_error" -> pure CSCRCInternalError "step_failure" -> pure CSCRCStepFailure "user_request" -> pure CSCRCUserRequest "validation_error" -> pure CSCRCValidationError e -> fromTextError $ "Failure parsing ClusterStateChangeReasonCode from value: '" <> e- <> "'. Accepted values: all_steps_completed, bootstrap_failure, instance_failure, internal_error, step_failure, user_request, validation_error"+ <> "'. Accepted values: all_steps_completed, bootstrap_failure, instance_failure, instance_fleet_timeout, internal_error, step_failure, user_request, validation_error" instance ToText ClusterStateChangeReasonCode where toText = \case CSCRCAllStepsCompleted -> "ALL_STEPS_COMPLETED" CSCRCBootstrapFailure -> "BOOTSTRAP_FAILURE" CSCRCInstanceFailure -> "INSTANCE_FAILURE"+ CSCRCInstanceFleetTimeout -> "INSTANCE_FLEET_TIMEOUT" CSCRCInternalError -> "INTERNAL_ERROR" CSCRCStepFailure -> "STEP_FAILURE" CSCRCUserRequest -> "USER_REQUEST"@@ -265,12 +275,13 @@ parseJSON = parseJSONText "ClusterStateChangeReasonCode" data ComparisonOperator- = GreaterThan- | GreaterThanOrEqual- | LessThan- | LessThanOrEqual- deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)+ = GreaterThan+ | GreaterThanOrEqual+ | LessThan+ | LessThanOrEqual+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic) + instance FromText ComparisonOperator where parser = takeLowerText >>= \case "greater_than" -> pure GreaterThan@@ -299,19 +310,155 @@ instance FromJSON ComparisonOperator where parseJSON = parseJSONText "ComparisonOperator" +data InstanceCollectionType+ = InstanceFleet+ | InstanceGroup+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)+++instance FromText InstanceCollectionType where+ parser = takeLowerText >>= \case+ "instance_fleet" -> pure InstanceFleet+ "instance_group" -> pure InstanceGroup+ e -> fromTextError $ "Failure parsing InstanceCollectionType from value: '" <> e+ <> "'. Accepted values: instance_fleet, instance_group"++instance ToText InstanceCollectionType where+ toText = \case+ InstanceFleet -> "INSTANCE_FLEET"+ InstanceGroup -> "INSTANCE_GROUP"++instance Hashable InstanceCollectionType+instance NFData InstanceCollectionType+instance ToByteString InstanceCollectionType+instance ToQuery InstanceCollectionType+instance ToHeader InstanceCollectionType++instance FromJSON InstanceCollectionType where+ parseJSON = parseJSONText "InstanceCollectionType"++data InstanceFleetState+ = IFSBootstrapping+ | IFSProvisioning+ | IFSResizing+ | IFSRunning+ | IFSSuspended+ | IFSTerminated+ | IFSTerminating+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)+++instance FromText InstanceFleetState where+ parser = takeLowerText >>= \case+ "bootstrapping" -> pure IFSBootstrapping+ "provisioning" -> pure IFSProvisioning+ "resizing" -> pure IFSResizing+ "running" -> pure IFSRunning+ "suspended" -> pure IFSSuspended+ "terminated" -> pure IFSTerminated+ "terminating" -> pure IFSTerminating+ e -> fromTextError $ "Failure parsing InstanceFleetState from value: '" <> e+ <> "'. Accepted values: bootstrapping, provisioning, resizing, running, suspended, terminated, terminating"++instance ToText InstanceFleetState where+ toText = \case+ IFSBootstrapping -> "BOOTSTRAPPING"+ IFSProvisioning -> "PROVISIONING"+ IFSResizing -> "RESIZING"+ IFSRunning -> "RUNNING"+ IFSSuspended -> "SUSPENDED"+ IFSTerminated -> "TERMINATED"+ IFSTerminating -> "TERMINATING"++instance Hashable InstanceFleetState+instance NFData InstanceFleetState+instance ToByteString InstanceFleetState+instance ToQuery InstanceFleetState+instance ToHeader InstanceFleetState++instance FromJSON InstanceFleetState where+ parseJSON = parseJSONText "InstanceFleetState"++data InstanceFleetStateChangeReasonCode+ = IFSCRCClusterTerminated+ | IFSCRCInstanceFailure+ | IFSCRCInternalError+ | IFSCRCValidationError+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)+++instance FromText InstanceFleetStateChangeReasonCode where+ parser = takeLowerText >>= \case+ "cluster_terminated" -> pure IFSCRCClusterTerminated+ "instance_failure" -> pure IFSCRCInstanceFailure+ "internal_error" -> pure IFSCRCInternalError+ "validation_error" -> pure IFSCRCValidationError+ e -> fromTextError $ "Failure parsing InstanceFleetStateChangeReasonCode from value: '" <> e+ <> "'. Accepted values: cluster_terminated, instance_failure, internal_error, validation_error"++instance ToText InstanceFleetStateChangeReasonCode where+ toText = \case+ IFSCRCClusterTerminated -> "CLUSTER_TERMINATED"+ IFSCRCInstanceFailure -> "INSTANCE_FAILURE"+ IFSCRCInternalError -> "INTERNAL_ERROR"+ IFSCRCValidationError -> "VALIDATION_ERROR"++instance Hashable InstanceFleetStateChangeReasonCode+instance NFData InstanceFleetStateChangeReasonCode+instance ToByteString InstanceFleetStateChangeReasonCode+instance ToQuery InstanceFleetStateChangeReasonCode+instance ToHeader InstanceFleetStateChangeReasonCode++instance FromJSON InstanceFleetStateChangeReasonCode where+ parseJSON = parseJSONText "InstanceFleetStateChangeReasonCode"++data InstanceFleetType+ = IFTCore+ | IFTMaster+ | IFTTask+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)+++instance FromText InstanceFleetType where+ parser = takeLowerText >>= \case+ "core" -> pure IFTCore+ "master" -> pure IFTMaster+ "task" -> pure IFTTask+ e -> fromTextError $ "Failure parsing InstanceFleetType from value: '" <> e+ <> "'. Accepted values: core, master, task"++instance ToText InstanceFleetType where+ toText = \case+ IFTCore -> "CORE"+ IFTMaster -> "MASTER"+ IFTTask -> "TASK"++instance Hashable InstanceFleetType+instance NFData InstanceFleetType+instance ToByteString InstanceFleetType+instance ToQuery InstanceFleetType+instance ToHeader InstanceFleetType++instance ToJSON InstanceFleetType where+ toJSON = toJSONText++instance FromJSON InstanceFleetType where+ parseJSON = parseJSONText "InstanceFleetType"+ data InstanceGroupState- = Arrested- | Bootstrapping- | Ended- | Provisioning- | Resizing- | Running- | ShuttingDown- | Suspended- | Terminated- | Terminating- deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)+ = Arrested+ | Bootstrapping+ | Ended+ | Provisioning+ | Resizing+ | Running+ | ShuttingDown+ | Suspended+ | Terminated+ | Terminating+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic) + instance FromText InstanceGroupState where parser = takeLowerText >>= \case "arrested" -> pure Arrested@@ -350,12 +497,13 @@ parseJSON = parseJSONText "InstanceGroupState" data InstanceGroupStateChangeReasonCode- = ClusterTerminated- | InstanceFailure- | InternalError- | ValidationError- deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)+ = ClusterTerminated+ | InstanceFailure+ | InternalError+ | ValidationError+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic) + instance FromText InstanceGroupStateChangeReasonCode where parser = takeLowerText >>= \case "cluster_terminated" -> pure ClusterTerminated@@ -382,11 +530,12 @@ parseJSON = parseJSONText "InstanceGroupStateChangeReasonCode" data InstanceGroupType- = Core- | Master- | Task- deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)+ = Core+ | Master+ | Task+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic) + instance FromText InstanceGroupType where parser = takeLowerText >>= \case "core" -> pure Core@@ -414,11 +563,12 @@ parseJSON = parseJSONText "InstanceGroupType" data InstanceRoleType- = IRTCore- | IRTMaster- | IRTTask- deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)+ = IRTCore+ | IRTMaster+ | IRTTask+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic) + instance FromText InstanceRoleType where parser = takeLowerText >>= \case "core" -> pure IRTCore@@ -443,13 +593,14 @@ toJSON = toJSONText data InstanceState- = ISAwaitingFulfillment- | ISBootstrapping- | ISProvisioning- | ISRunning- | ISTerminated- deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)+ = ISAwaitingFulfillment+ | ISBootstrapping+ | ISProvisioning+ | ISRunning+ | ISTerminated+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic) + instance FromText InstanceState where parser = takeLowerText >>= \case "awaiting_fulfillment" -> pure ISAwaitingFulfillment@@ -481,13 +632,14 @@ parseJSON = parseJSONText "InstanceState" data InstanceStateChangeReasonCode- = ISCRCBootstrapFailure- | ISCRCClusterTerminated- | ISCRCInstanceFailure- | ISCRCInternalError- | ISCRCValidationError- deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)+ = ISCRCBootstrapFailure+ | ISCRCClusterTerminated+ | ISCRCInstanceFailure+ | ISCRCInternalError+ | ISCRCValidationError+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic) + instance FromText InstanceStateChangeReasonCode where parser = takeLowerText >>= \case "bootstrap_failure" -> pure ISCRCBootstrapFailure@@ -516,10 +668,11 @@ parseJSON = parseJSONText "InstanceStateChangeReasonCode" data MarketType- = OnDemand- | Spot- deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)+ = OnDemand+ | Spot+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic) + instance FromText MarketType where parser = takeLowerText >>= \case "on_demand" -> pure OnDemand@@ -544,11 +697,42 @@ instance FromJSON MarketType where parseJSON = parseJSONText "MarketType" +data RepoUpgradeOnBoot+ = RUOBNone+ | RUOBSecurity+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)+++instance FromText RepoUpgradeOnBoot where+ parser = takeLowerText >>= \case+ "none" -> pure RUOBNone+ "security" -> pure RUOBSecurity+ e -> fromTextError $ "Failure parsing RepoUpgradeOnBoot from value: '" <> e+ <> "'. Accepted values: none, security"++instance ToText RepoUpgradeOnBoot where+ toText = \case+ RUOBNone -> "NONE"+ RUOBSecurity -> "SECURITY"++instance Hashable RepoUpgradeOnBoot+instance NFData RepoUpgradeOnBoot+instance ToByteString RepoUpgradeOnBoot+instance ToQuery RepoUpgradeOnBoot+instance ToHeader RepoUpgradeOnBoot++instance ToJSON RepoUpgradeOnBoot where+ toJSON = toJSONText++instance FromJSON RepoUpgradeOnBoot where+ parseJSON = parseJSONText "RepoUpgradeOnBoot"+ data ScaleDownBehavior- = TerminateAtInstanceHour- | TerminateAtTaskCompletion- deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)+ = TerminateAtInstanceHour+ | TerminateAtTaskCompletion+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic) + instance FromText ScaleDownBehavior where parser = takeLowerText >>= \case "terminate_at_instance_hour" -> pure TerminateAtInstanceHour@@ -573,14 +757,45 @@ instance FromJSON ScaleDownBehavior where parseJSON = parseJSONText "ScaleDownBehavior" +data SpotProvisioningTimeoutAction+ = SPTASwitchToOnDemand+ | SPTATerminateCluster+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)+++instance FromText SpotProvisioningTimeoutAction where+ parser = takeLowerText >>= \case+ "switch_to_on_demand" -> pure SPTASwitchToOnDemand+ "terminate_cluster" -> pure SPTATerminateCluster+ e -> fromTextError $ "Failure parsing SpotProvisioningTimeoutAction from value: '" <> e+ <> "'. Accepted values: switch_to_on_demand, terminate_cluster"++instance ToText SpotProvisioningTimeoutAction where+ toText = \case+ SPTASwitchToOnDemand -> "SWITCH_TO_ON_DEMAND"+ SPTATerminateCluster -> "TERMINATE_CLUSTER"++instance Hashable SpotProvisioningTimeoutAction+instance NFData SpotProvisioningTimeoutAction+instance ToByteString SpotProvisioningTimeoutAction+instance ToQuery SpotProvisioningTimeoutAction+instance ToHeader SpotProvisioningTimeoutAction++instance ToJSON SpotProvisioningTimeoutAction where+ toJSON = toJSONText++instance FromJSON SpotProvisioningTimeoutAction where+ parseJSON = parseJSONText "SpotProvisioningTimeoutAction"+ data Statistic- = Average- | Maximum- | Minimum- | SampleCount- | Sum- deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)+ = Average+ | Maximum+ | Minimum+ | SampleCount+ | Sum+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic) + instance FromText Statistic where parser = takeLowerText >>= \case "average" -> pure Average@@ -612,15 +827,16 @@ parseJSON = parseJSONText "Statistic" data StepState- = SSCancelPending- | SSCancelled- | SSCompleted- | SSFailed- | SSInterrupted- | SSPending- | SSRunning- deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)+ = SSCancelPending+ | SSCancelled+ | SSCompleted+ | SSFailed+ | SSInterrupted+ | SSPending+ | SSRunning+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic) + instance FromText StepState where parser = takeLowerText >>= \case "cancel_pending" -> pure SSCancelPending@@ -656,9 +872,10 @@ parseJSON = parseJSONText "StepState" data StepStateChangeReasonCode =- SSCRCNone- deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)+ SSCRCNone+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic) + instance FromText StepStateChangeReasonCode where parser = takeLowerText >>= \case "none" -> pure SSCRCNone@@ -679,34 +896,35 @@ parseJSON = parseJSONText "StepStateChangeReasonCode" data Unit- = Bits- | BitsPerSecond- | Bytes- | BytesPerSecond- | Count- | CountPerSecond- | GigaBits- | GigaBitsPerSecond- | GigaBytes- | GigaBytesPerSecond- | KiloBits- | KiloBitsPerSecond- | KiloBytes- | KiloBytesPerSecond- | MegaBits- | MegaBitsPerSecond- | MegaBytes- | MegaBytesPerSecond- | MicroSeconds- | MilliSeconds- | None- | Percent- | Seconds- | TeraBits- | TeraBitsPerSecond- | TeraBytes- | TeraBytesPerSecond- deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)+ = Bits+ | BitsPerSecond+ | Bytes+ | BytesPerSecond+ | Count+ | CountPerSecond+ | GigaBits+ | GigaBitsPerSecond+ | GigaBytes+ | GigaBytesPerSecond+ | KiloBits+ | KiloBitsPerSecond+ | KiloBytes+ | KiloBytesPerSecond+ | MegaBits+ | MegaBitsPerSecond+ | MegaBytes+ | MegaBytesPerSecond+ | MicroSeconds+ | MilliSeconds+ | None+ | Percent+ | Seconds+ | TeraBits+ | TeraBitsPerSecond+ | TeraBytes+ | TeraBytesPerSecond+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)+ instance FromText Unit where parser = takeLowerText >>= \case
gen/Network/AWS/EMR/Waiters.hs view
@@ -7,70 +7,69 @@ -- | -- Module : Network.AWS.EMR.Waiters--- Copyright : (c) 2013-2016 Brendan Hay+-- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- module Network.AWS.EMR.Waiters where -import Network.AWS.EMR.DescribeCluster-import Network.AWS.EMR.DescribeCluster-import Network.AWS.EMR.Types-import Network.AWS.Lens-import Network.AWS.Prelude-import Network.AWS.Waiter+import Network.AWS.EMR.DescribeCluster+import Network.AWS.EMR.DescribeCluster+import Network.AWS.EMR.Types+import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Waiter -- | Polls 'Network.AWS.EMR.DescribeCluster' every 30 seconds until a successful state is reached. An error is returned after 60 failed checks. clusterTerminated :: Wait DescribeCluster clusterTerminated =- Wait- { _waitName = "ClusterTerminated"- , _waitAttempts = 60- , _waitDelay = 30- , _waitAcceptors = [ matchAll- "TERMINATED"- AcceptSuccess- (dcrsCluster .- cluStatus . csState . _Just . to toTextCI)- , matchAll- "TERMINATED_WITH_ERRORS"- AcceptFailure- (dcrsCluster .- cluStatus . csState . _Just . to toTextCI)]- }+ Wait+ { _waitName = "ClusterTerminated"+ , _waitAttempts = 60+ , _waitDelay = 30+ , _waitAcceptors =+ [ matchAll+ "TERMINATED"+ AcceptSuccess+ (dcrsCluster . cluStatus . csState . _Just . to toTextCI)+ , matchAll+ "TERMINATED_WITH_ERRORS"+ AcceptFailure+ (dcrsCluster . cluStatus . csState . _Just . to toTextCI)+ ]+ } + -- | Polls 'Network.AWS.EMR.DescribeCluster' every 30 seconds until a successful state is reached. An error is returned after 60 failed checks. clusterRunning :: Wait DescribeCluster clusterRunning =- Wait- { _waitName = "ClusterRunning"- , _waitAttempts = 60- , _waitDelay = 30- , _waitAcceptors = [ matchAll- "RUNNING"- AcceptSuccess- (dcrsCluster .- cluStatus . csState . _Just . to toTextCI)- , matchAll- "WAITING"- AcceptSuccess- (dcrsCluster .- cluStatus . csState . _Just . to toTextCI)- , matchAll- "TERMINATING"- AcceptFailure- (dcrsCluster .- cluStatus . csState . _Just . to toTextCI)- , matchAll- "TERMINATED"- AcceptFailure- (dcrsCluster .- cluStatus . csState . _Just . to toTextCI)- , matchAll- "TERMINATED_WITH_ERRORS"- AcceptFailure- (dcrsCluster .- cluStatus . csState . _Just . to toTextCI)]- }+ Wait+ { _waitName = "ClusterRunning"+ , _waitAttempts = 60+ , _waitDelay = 30+ , _waitAcceptors =+ [ matchAll+ "RUNNING"+ AcceptSuccess+ (dcrsCluster . cluStatus . csState . _Just . to toTextCI)+ , matchAll+ "WAITING"+ AcceptSuccess+ (dcrsCluster . cluStatus . csState . _Just . to toTextCI)+ , matchAll+ "TERMINATING"+ AcceptFailure+ (dcrsCluster . cluStatus . csState . _Just . to toTextCI)+ , matchAll+ "TERMINATED"+ AcceptFailure+ (dcrsCluster . cluStatus . csState . _Just . to toTextCI)+ , matchAll+ "TERMINATED_WITH_ERRORS"+ AcceptFailure+ (dcrsCluster . cluStatus . csState . _Just . to toTextCI)+ ]+ }+
test/Main.hs view
@@ -2,9 +2,9 @@ -- | -- Module : Main--- Copyright : (c) 2013-2016 Brendan Hay+-- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) --
test/Test/AWS/Gen/EMR.hs view
@@ -5,20 +5,20 @@ -- | -- Module : Test.AWS.Gen.EMR--- Copyright : (c) 2013-2016 Brendan Hay+-- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0.--- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com> -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- module Test.AWS.Gen.EMR where import Data.Proxy+import Network.AWS.EMR+import Test.AWS.EMR.Internal import Test.AWS.Fixture import Test.AWS.Prelude import Test.Tasty-import Network.AWS.EMR-import Test.AWS.EMR.Internal -- Auto-generated: the actual test selection needs to be manually placed into -- the top-level so that real test data can be incrementally added.@@ -70,12 +70,18 @@ -- , requestListSteps $ -- listSteps --+-- , requestAddInstanceFleet $+-- addInstanceFleet+-- -- , requestAddInstanceGroups $ -- addInstanceGroups -- -- , requestDeleteSecurityConfiguration $ -- deleteSecurityConfiguration --+-- , requestModifyInstanceFleet $+-- modifyInstanceFleet+-- -- , requestListInstanceGroups $ -- listInstanceGroups --@@ -97,6 +103,9 @@ -- , requestDescribeSecurityConfiguration $ -- describeSecurityConfiguration --+-- , requestListInstanceFleets $+-- listInstanceFleets+-- -- ] -- , testGroup "response"@@ -142,12 +151,18 @@ -- , responseListSteps $ -- listStepsResponse --+-- , responseAddInstanceFleet $+-- addInstanceFleetResponse+-- -- , responseAddInstanceGroups $ -- addInstanceGroupsResponse -- -- , responseDeleteSecurityConfiguration $ -- deleteSecurityConfigurationResponse --+-- , responseModifyInstanceFleet $+-- modifyInstanceFleetResponse+-- -- , responseListInstanceGroups $ -- listInstanceGroupsResponse --@@ -169,6 +184,9 @@ -- , responseDescribeSecurityConfiguration $ -- describeSecurityConfigurationResponse --+-- , responseListInstanceFleets $+-- listInstanceFleetsResponse+-- -- ] -- ] @@ -244,6 +262,11 @@ "ListSteps" "fixture/ListSteps.yaml" +requestAddInstanceFleet :: AddInstanceFleet -> TestTree+requestAddInstanceFleet = req+ "AddInstanceFleet"+ "fixture/AddInstanceFleet.yaml"+ requestAddInstanceGroups :: AddInstanceGroups -> TestTree requestAddInstanceGroups = req "AddInstanceGroups"@@ -254,6 +277,11 @@ "DeleteSecurityConfiguration" "fixture/DeleteSecurityConfiguration.yaml" +requestModifyInstanceFleet :: ModifyInstanceFleet -> TestTree+requestModifyInstanceFleet = req+ "ModifyInstanceFleet"+ "fixture/ModifyInstanceFleet.yaml"+ requestListInstanceGroups :: ListInstanceGroups -> TestTree requestListInstanceGroups = req "ListInstanceGroups"@@ -289,6 +317,11 @@ "DescribeSecurityConfiguration" "fixture/DescribeSecurityConfiguration.yaml" +requestListInstanceFleets :: ListInstanceFleets -> TestTree+requestListInstanceFleets = req+ "ListInstanceFleets"+ "fixture/ListInstanceFleets.yaml"+ -- Responses responseRunJobFlow :: RunJobFlowResponse -> TestTree@@ -389,6 +422,13 @@ emr (Proxy :: Proxy ListSteps) +responseAddInstanceFleet :: AddInstanceFleetResponse -> TestTree+responseAddInstanceFleet = res+ "AddInstanceFleetResponse"+ "fixture/AddInstanceFleetResponse.proto"+ emr+ (Proxy :: Proxy AddInstanceFleet)+ responseAddInstanceGroups :: AddInstanceGroupsResponse -> TestTree responseAddInstanceGroups = res "AddInstanceGroupsResponse"@@ -403,6 +443,13 @@ emr (Proxy :: Proxy DeleteSecurityConfiguration) +responseModifyInstanceFleet :: ModifyInstanceFleetResponse -> TestTree+responseModifyInstanceFleet = res+ "ModifyInstanceFleetResponse"+ "fixture/ModifyInstanceFleetResponse.proto"+ emr+ (Proxy :: Proxy ModifyInstanceFleet)+ responseListInstanceGroups :: ListInstanceGroupsResponse -> TestTree responseListInstanceGroups = res "ListInstanceGroupsResponse"@@ -451,3 +498,10 @@ "fixture/DescribeSecurityConfigurationResponse.proto" emr (Proxy :: Proxy DescribeSecurityConfiguration)++responseListInstanceFleets :: ListInstanceFleetsResponse -> TestTree+responseListInstanceFleets = res+ "ListInstanceFleetsResponse"+ "fixture/ListInstanceFleetsResponse.proto"+ emr+ (Proxy :: Proxy ListInstanceFleets)