{-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} -- Module : Network.AWS.OpsWorks.UpdateInstance -- Copyright : (c) 2013-2014 Brendan Hay -- License : This Source Code Form is subject to the terms of -- the Mozilla Public License, v. 2.0. -- A copy of the MPL can be found in the LICENSE file or -- you can obtain it at http://mozilla.org/MPL/2.0/. -- Maintainer : Brendan Hay -- Stability : experimental -- Portability : non-portable (GHC extensions) -- -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | Updates a specified instance. -- -- Required Permissions: To use this action, an IAM user must have a Manage -- permissions level for the stack, or an attached policy that explicitly grants -- permissions. For more information on user permissions, see . -- -- module Network.AWS.OpsWorks.UpdateInstance ( -- * Request UpdateInstance -- ** Request constructor , updateInstance -- ** Request lenses , uiAmiId , uiArchitecture , uiAutoScalingType , uiEbsOptimized , uiHostname , uiInstallUpdatesOnBoot , uiInstanceId , uiInstanceType , uiLayerIds , uiOs , uiSshKeyName -- * Response , UpdateInstanceResponse -- ** Response constructor , updateInstanceResponse ) where import Network.AWS.Prelude import Network.AWS.Request.JSON import Network.AWS.OpsWorks.Types import qualified GHC.Exts data UpdateInstance = UpdateInstance { _uiAmiId :: Maybe Text , _uiArchitecture :: Maybe Architecture , _uiAutoScalingType :: Maybe AutoScalingType , _uiEbsOptimized :: Maybe Bool , _uiHostname :: Maybe Text , _uiInstallUpdatesOnBoot :: Maybe Bool , _uiInstanceId :: Text , _uiInstanceType :: Maybe Text , _uiLayerIds :: List "LayerIds" Text , _uiOs :: Maybe Text , _uiSshKeyName :: Maybe Text } deriving (Eq, Show) -- | 'UpdateInstance' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'uiAmiId' @::@ 'Maybe' 'Text' -- -- * 'uiArchitecture' @::@ 'Maybe' 'Architecture' -- -- * 'uiAutoScalingType' @::@ 'Maybe' 'AutoScalingType' -- -- * 'uiEbsOptimized' @::@ 'Maybe' 'Bool' -- -- * 'uiHostname' @::@ 'Maybe' 'Text' -- -- * 'uiInstallUpdatesOnBoot' @::@ 'Maybe' 'Bool' -- -- * 'uiInstanceId' @::@ 'Text' -- -- * 'uiInstanceType' @::@ 'Maybe' 'Text' -- -- * 'uiLayerIds' @::@ ['Text'] -- -- * 'uiOs' @::@ 'Maybe' 'Text' -- -- * 'uiSshKeyName' @::@ 'Maybe' 'Text' -- updateInstance :: Text -- ^ 'uiInstanceId' -> UpdateInstance updateInstance p1 = UpdateInstance { _uiInstanceId = p1 , _uiLayerIds = mempty , _uiInstanceType = Nothing , _uiAutoScalingType = Nothing , _uiHostname = Nothing , _uiOs = Nothing , _uiAmiId = Nothing , _uiSshKeyName = Nothing , _uiArchitecture = Nothing , _uiInstallUpdatesOnBoot = Nothing , _uiEbsOptimized = Nothing } -- | A custom AMI ID to be used to create the instance. The AMI should be based on -- one of the standard AWS OpsWorks AMIs: Amazon Linux, Ubuntu 12.04 LTS, or -- Ubuntu 14.04 LTS. For more information, see -- -- If you specify a custom AMI, you must set 'Os' to 'Custom'. uiAmiId :: Lens' UpdateInstance (Maybe Text) uiAmiId = lens _uiAmiId (\s a -> s { _uiAmiId = a }) -- | The instance architecture. Instance types do not necessarily support both -- architectures. For a list of the architectures that are supported by the -- different instance types, see . uiArchitecture :: Lens' UpdateInstance (Maybe Architecture) uiArchitecture = lens _uiArchitecture (\s a -> s { _uiArchitecture = a }) -- | For load-based or time-based instances, the type. uiAutoScalingType :: Lens' UpdateInstance (Maybe AutoScalingType) uiAutoScalingType = lens _uiAutoScalingType (\s a -> s { _uiAutoScalingType = a }) -- | Whether this is an Amazon EBS-optimized instance. uiEbsOptimized :: Lens' UpdateInstance (Maybe Bool) uiEbsOptimized = lens _uiEbsOptimized (\s a -> s { _uiEbsOptimized = a }) -- | The instance host name. uiHostname :: Lens' UpdateInstance (Maybe Text) uiHostname = lens _uiHostname (\s a -> s { _uiHostname = a }) -- | Whether to install operating system and package updates when the instance -- boots. The default value is 'true'. To control when updates are installed, set -- this value to 'false'. You must then update your instances manually by using 'CreateDeployment' to run the 'update_dependencies' stack command or manually running 'yum' (Amazon -- Linux) or 'apt-get' (Ubuntu) on the instances. -- -- We strongly recommend using the default value of 'true', to ensure that your -- instances have the latest security updates. -- -- uiInstallUpdatesOnBoot :: Lens' UpdateInstance (Maybe Bool) uiInstallUpdatesOnBoot = lens _uiInstallUpdatesOnBoot (\s a -> s { _uiInstallUpdatesOnBoot = a }) -- | The instance ID. uiInstanceId :: Lens' UpdateInstance Text uiInstanceId = lens _uiInstanceId (\s a -> s { _uiInstanceId = a }) -- | The instance type. AWS OpsWorks supports all instance types except Cluster -- Compute, Cluster GPU, and High Memory Cluster. For more information, see . The parameter values that you use to specify the various types are in the -- API Name column of the Available Instance Types table. uiInstanceType :: Lens' UpdateInstance (Maybe Text) uiInstanceType = lens _uiInstanceType (\s a -> s { _uiInstanceType = a }) -- | The instance's layer IDs. uiLayerIds :: Lens' UpdateInstance [Text] uiLayerIds = lens _uiLayerIds (\s a -> s { _uiLayerIds = a }) . _List -- | The instance's operating system, which must be set to one of the following. -- -- Standard operating systems: An Amazon Linux version such as 'Amazon Linux2014.09', 'Ubuntu 12.04 LTS', or 'Ubuntu 14.04 LTS'. Custom AMIs: 'Custom' The -- default option is the current Amazon Linux version, such as 'Amazon Linux2014.09'. If you set this parameter to 'Custom', you must use the 'CreateInstance' -- action's AmiId parameter to specify the custom AMI that you want to use. For -- more information on the standard operating systems, see For -- more information on how to use custom AMIs with OpsWorks, see . uiOs :: Lens' UpdateInstance (Maybe Text) uiOs = lens _uiOs (\s a -> s { _uiOs = a }) -- | The instance SSH key name. uiSshKeyName :: Lens' UpdateInstance (Maybe Text) uiSshKeyName = lens _uiSshKeyName (\s a -> s { _uiSshKeyName = a }) data UpdateInstanceResponse = UpdateInstanceResponse deriving (Eq, Ord, Show, Generic) -- | 'UpdateInstanceResponse' constructor. updateInstanceResponse :: UpdateInstanceResponse updateInstanceResponse = UpdateInstanceResponse instance ToPath UpdateInstance where toPath = const "/" instance ToQuery UpdateInstance where toQuery = const mempty instance ToHeaders UpdateInstance instance ToJSON UpdateInstance where toJSON UpdateInstance{..} = object [ "InstanceId" .= _uiInstanceId , "LayerIds" .= _uiLayerIds , "InstanceType" .= _uiInstanceType , "AutoScalingType" .= _uiAutoScalingType , "Hostname" .= _uiHostname , "Os" .= _uiOs , "AmiId" .= _uiAmiId , "SshKeyName" .= _uiSshKeyName , "Architecture" .= _uiArchitecture , "InstallUpdatesOnBoot" .= _uiInstallUpdatesOnBoot , "EbsOptimized" .= _uiEbsOptimized ] instance AWSRequest UpdateInstance where type Sv UpdateInstance = OpsWorks type Rs UpdateInstance = UpdateInstanceResponse request = post "UpdateInstance" response = nullResponse UpdateInstanceResponse