diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.4.5`
+`1.5.0`
 
 
 ## Description
diff --git a/amazonka-opsworks.cabal b/amazonka-opsworks.cabal
--- a/amazonka-opsworks.cabal
+++ b/amazonka-opsworks.cabal
@@ -1,13 +1,13 @@
 name:                  amazonka-opsworks
-version:               1.4.5
+version:               1.5.0
 synopsis:              Amazon OpsWorks 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,14 +29,19 @@
     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-opsworks
 
 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.OpsWorks
@@ -86,6 +91,7 @@
         , Network.AWS.OpsWorks.DisassociateElasticIP
         , Network.AWS.OpsWorks.GetHostnameSuggestion
         , Network.AWS.OpsWorks.GrantAccess
+        , Network.AWS.OpsWorks.ListTags
         , Network.AWS.OpsWorks.RebootInstance
         , Network.AWS.OpsWorks.RegisterEcsCluster
         , Network.AWS.OpsWorks.RegisterElasticIP
@@ -99,9 +105,11 @@
         , Network.AWS.OpsWorks.StartStack
         , Network.AWS.OpsWorks.StopInstance
         , Network.AWS.OpsWorks.StopStack
+        , Network.AWS.OpsWorks.TagResource
         , Network.AWS.OpsWorks.Types
         , Network.AWS.OpsWorks.UnassignInstance
         , Network.AWS.OpsWorks.UnassignVolume
+        , Network.AWS.OpsWorks.UntagResource
         , Network.AWS.OpsWorks.UpdateApp
         , Network.AWS.OpsWorks.UpdateElasticIP
         , Network.AWS.OpsWorks.UpdateInstance
@@ -118,7 +126,7 @@
         , Network.AWS.OpsWorks.Types.Sum
 
     build-depends:
-          amazonka-core == 1.4.5.*
+          amazonka-core == 1.5.0.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-opsworks-test
@@ -138,9 +146,9 @@
         , Test.AWS.OpsWorks.Internal
 
     build-depends:
-          amazonka-core == 1.4.5.*
-        , amazonka-test == 1.4.5.*
-        , amazonka-opsworks == 1.4.5.*
+          amazonka-core == 1.5.0.*
+        , amazonka-test == 1.5.0.*
+        , amazonka-opsworks
         , base
         , bytestring
         , tasty
diff --git a/fixture/ListTags.yaml b/fixture/ListTags.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListTags.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/opsworks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  opsworks.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:
+  ''
diff --git a/fixture/ListTagsResponse.proto b/fixture/ListTagsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsResponse.proto
diff --git a/fixture/TagResource.yaml b/fixture/TagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/TagResource.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/opsworks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  opsworks.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:
+  ''
diff --git a/fixture/TagResourceResponse.proto b/fixture/TagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/TagResourceResponse.proto
diff --git a/fixture/UntagResource.yaml b/fixture/UntagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResource.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/opsworks/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  opsworks.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:
+  ''
diff --git a/fixture/UntagResourceResponse.proto b/fixture/UntagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResourceResponse.proto
diff --git a/gen/Network/AWS/OpsWorks.hs b/gen/Network/AWS/OpsWorks.hs
--- a/gen/Network/AWS/OpsWorks.hs
+++ b/gen/Network/AWS/OpsWorks.hs
@@ -5,21 +5,21 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks
--- 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)
 --
 -- __AWS OpsWorks__
 --
--- Welcome to the /AWS OpsWorks API Reference/ . This guide provides descriptions, syntax, and usage examples for AWS OpsWorks actions and data types, including common parameters and error codes.
+-- Welcome to the /AWS OpsWorks Stacks API Reference/ . This guide provides descriptions, syntax, and usage examples for AWS OpsWorks Stacks actions and data types, including common parameters and error codes.
 --
--- AWS OpsWorks is an application management service that provides an integrated experience for overseeing the complete application lifecycle. For information about this product, go to the <http://aws.amazon.com/opsworks/ AWS OpsWorks> details page.
+-- AWS OpsWorks Stacks is an application management service that provides an integrated experience for overseeing the complete application lifecycle. For information about this product, go to the <http://aws.amazon.com/opsworks/ AWS OpsWorks> details page.
 --
 -- __SDKs and CLI__
 --
--- The most common way to use the AWS OpsWorks API is by using the AWS Command Line Interface (CLI) or by using one of the AWS SDKs to implement applications in your preferred language. For more information, see:
+-- The most common way to use the AWS OpsWorks Stacks API is by using the AWS Command Line Interface (CLI) or by using one of the AWS SDKs to implement applications in your preferred language. For more information, see:
 --
 --     * <http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html AWS CLI>
 --
@@ -39,16 +39,20 @@
 --
 -- __Endpoints__
 --
--- AWS OpsWorks supports the following endpoints, all HTTPS. You must connect to one of the following endpoints. Stacks can only be accessed or managed within the endpoint in which they are created.
+-- AWS OpsWorks Stacks supports the following endpoints, all HTTPS. You must connect to one of the following endpoints. Stacks can only be accessed or managed within the endpoint in which they are created.
 --
 --     * opsworks.us-east-1.amazonaws.com
 --
+--     * opsworks.us-east-2.amazonaws.com
+--
 --     * opsworks.us-west-1.amazonaws.com
 --
 --     * opsworks.us-west-2.amazonaws.com
 --
 --     * opsworks.eu-west-1.amazonaws.com
 --
+--     * opsworks.eu-west-2.amazonaws.com
+--
 --     * opsworks.eu-central-1.amazonaws.com
 --
 --     * opsworks.ap-northeast-1.amazonaws.com
@@ -266,6 +270,12 @@
     -- ** DescribeStackProvisioningParameters
     , module Network.AWS.OpsWorks.DescribeStackProvisioningParameters
 
+    -- ** TagResource
+    , module Network.AWS.OpsWorks.TagResource
+
+    -- ** ListTags
+    , module Network.AWS.OpsWorks.ListTags
+
     -- ** UnassignInstance
     , module Network.AWS.OpsWorks.UnassignInstance
 
@@ -284,6 +294,9 @@
     -- ** RegisterRDSDBInstance
     , module Network.AWS.OpsWorks.RegisterRDSDBInstance
 
+    -- ** UntagResource
+    , module Network.AWS.OpsWorks.UntagResource
+
     -- ** StartStack
     , module Network.AWS.OpsWorks.StartStack
 
@@ -305,7 +318,7 @@
     -- ** DeregisterInstance
     , module Network.AWS.OpsWorks.DeregisterInstance
 
-    -- ** DescribeEcsClusters
+    -- ** DescribeEcsClusters (Paginated)
     , module Network.AWS.OpsWorks.DescribeEcsClusters
 
     -- ** DescribeRAIdArrays
@@ -331,6 +344,15 @@
     -- ** AutoScalingType
     , AutoScalingType (..)
 
+    -- ** CloudWatchLogsEncoding
+    , CloudWatchLogsEncoding (..)
+
+    -- ** CloudWatchLogsInitialPosition
+    , CloudWatchLogsInitialPosition (..)
+
+    -- ** CloudWatchLogsTimeZone
+    , CloudWatchLogsTimeZone (..)
+
     -- ** DeploymentCommandName
     , DeploymentCommandName (..)
 
@@ -404,6 +426,27 @@
     , ccBerkshelfVersion
     , ccManageBerkshelf
 
+    -- ** CloudWatchLogsConfiguration
+    , CloudWatchLogsConfiguration
+    , cloudWatchLogsConfiguration
+    , cwlcEnabled
+    , cwlcLogStreams
+
+    -- ** CloudWatchLogsLogStream
+    , CloudWatchLogsLogStream
+    , cloudWatchLogsLogStream
+    , cwllsBatchCount
+    , cwllsFileFingerprintLines
+    , cwllsBufferDuration
+    , cwllsBatchSize
+    , cwllsLogGroupName
+    , cwllsMultiLineStartPattern
+    , cwllsInitialPosition
+    , cwllsDatetimeFormat
+    , cwllsEncoding
+    , cwllsTimeZone
+    , cwllsFile
+
     -- ** Command
     , Command
     , command
@@ -509,6 +552,7 @@
     , iSSHHostRsaKeyFingerprint
     , iSecurityGroupIds
     , iEcsClusterARN
+    , iARN
     , iCreatedAt
     , iEC2InstanceId
     , iSSHKeyName
@@ -572,7 +616,9 @@
     , lCustomInstanceProfileARN
     , lCustomSecurityGroupIds
     , lInstallUpdatesOnBoot
+    , lCloudWatchLogsConfiguration
     , lLifecycleEventConfiguration
+    , lARN
     , lCreatedAt
     , lShortname
     , lDefaultRecipes
@@ -804,78 +850,81 @@
     , wassTuesday
     ) where
 
-import           Network.AWS.OpsWorks.AssignInstance
-import           Network.AWS.OpsWorks.AssignVolume
-import           Network.AWS.OpsWorks.AssociateElasticIP
-import           Network.AWS.OpsWorks.AttachElasticLoadBalancer
-import           Network.AWS.OpsWorks.CloneStack
-import           Network.AWS.OpsWorks.CreateApp
-import           Network.AWS.OpsWorks.CreateDeployment
-import           Network.AWS.OpsWorks.CreateInstance
-import           Network.AWS.OpsWorks.CreateLayer
-import           Network.AWS.OpsWorks.CreateStack
-import           Network.AWS.OpsWorks.CreateUserProfile
-import           Network.AWS.OpsWorks.DeleteApp
-import           Network.AWS.OpsWorks.DeleteInstance
-import           Network.AWS.OpsWorks.DeleteLayer
-import           Network.AWS.OpsWorks.DeleteStack
-import           Network.AWS.OpsWorks.DeleteUserProfile
-import           Network.AWS.OpsWorks.DeregisterEcsCluster
-import           Network.AWS.OpsWorks.DeregisterElasticIP
-import           Network.AWS.OpsWorks.DeregisterInstance
-import           Network.AWS.OpsWorks.DeregisterRDSDBInstance
-import           Network.AWS.OpsWorks.DeregisterVolume
-import           Network.AWS.OpsWorks.DescribeAgentVersions
-import           Network.AWS.OpsWorks.DescribeApps
-import           Network.AWS.OpsWorks.DescribeCommands
-import           Network.AWS.OpsWorks.DescribeDeployments
-import           Network.AWS.OpsWorks.DescribeEcsClusters
-import           Network.AWS.OpsWorks.DescribeElasticIPs
-import           Network.AWS.OpsWorks.DescribeElasticLoadBalancers
-import           Network.AWS.OpsWorks.DescribeInstances
-import           Network.AWS.OpsWorks.DescribeLayers
-import           Network.AWS.OpsWorks.DescribeLoadBasedAutoScaling
-import           Network.AWS.OpsWorks.DescribeMyUserProfile
-import           Network.AWS.OpsWorks.DescribePermissions
-import           Network.AWS.OpsWorks.DescribeRAIdArrays
-import           Network.AWS.OpsWorks.DescribeRDSDBInstances
-import           Network.AWS.OpsWorks.DescribeServiceErrors
-import           Network.AWS.OpsWorks.DescribeStackProvisioningParameters
-import           Network.AWS.OpsWorks.DescribeStacks
-import           Network.AWS.OpsWorks.DescribeStackSummary
-import           Network.AWS.OpsWorks.DescribeTimeBasedAutoScaling
-import           Network.AWS.OpsWorks.DescribeUserProfiles
-import           Network.AWS.OpsWorks.DescribeVolumes
-import           Network.AWS.OpsWorks.DetachElasticLoadBalancer
-import           Network.AWS.OpsWorks.DisassociateElasticIP
-import           Network.AWS.OpsWorks.GetHostnameSuggestion
-import           Network.AWS.OpsWorks.GrantAccess
-import           Network.AWS.OpsWorks.RebootInstance
-import           Network.AWS.OpsWorks.RegisterEcsCluster
-import           Network.AWS.OpsWorks.RegisterElasticIP
-import           Network.AWS.OpsWorks.RegisterInstance
-import           Network.AWS.OpsWorks.RegisterRDSDBInstance
-import           Network.AWS.OpsWorks.RegisterVolume
-import           Network.AWS.OpsWorks.SetLoadBasedAutoScaling
-import           Network.AWS.OpsWorks.SetPermission
-import           Network.AWS.OpsWorks.SetTimeBasedAutoScaling
-import           Network.AWS.OpsWorks.StartInstance
-import           Network.AWS.OpsWorks.StartStack
-import           Network.AWS.OpsWorks.StopInstance
-import           Network.AWS.OpsWorks.StopStack
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.UnassignInstance
-import           Network.AWS.OpsWorks.UnassignVolume
-import           Network.AWS.OpsWorks.UpdateApp
-import           Network.AWS.OpsWorks.UpdateElasticIP
-import           Network.AWS.OpsWorks.UpdateInstance
-import           Network.AWS.OpsWorks.UpdateLayer
-import           Network.AWS.OpsWorks.UpdateMyUserProfile
-import           Network.AWS.OpsWorks.UpdateRDSDBInstance
-import           Network.AWS.OpsWorks.UpdateStack
-import           Network.AWS.OpsWorks.UpdateUserProfile
-import           Network.AWS.OpsWorks.UpdateVolume
-import           Network.AWS.OpsWorks.Waiters
+import Network.AWS.OpsWorks.AssignInstance
+import Network.AWS.OpsWorks.AssignVolume
+import Network.AWS.OpsWorks.AssociateElasticIP
+import Network.AWS.OpsWorks.AttachElasticLoadBalancer
+import Network.AWS.OpsWorks.CloneStack
+import Network.AWS.OpsWorks.CreateApp
+import Network.AWS.OpsWorks.CreateDeployment
+import Network.AWS.OpsWorks.CreateInstance
+import Network.AWS.OpsWorks.CreateLayer
+import Network.AWS.OpsWorks.CreateStack
+import Network.AWS.OpsWorks.CreateUserProfile
+import Network.AWS.OpsWorks.DeleteApp
+import Network.AWS.OpsWorks.DeleteInstance
+import Network.AWS.OpsWorks.DeleteLayer
+import Network.AWS.OpsWorks.DeleteStack
+import Network.AWS.OpsWorks.DeleteUserProfile
+import Network.AWS.OpsWorks.DeregisterEcsCluster
+import Network.AWS.OpsWorks.DeregisterElasticIP
+import Network.AWS.OpsWorks.DeregisterInstance
+import Network.AWS.OpsWorks.DeregisterRDSDBInstance
+import Network.AWS.OpsWorks.DeregisterVolume
+import Network.AWS.OpsWorks.DescribeAgentVersions
+import Network.AWS.OpsWorks.DescribeApps
+import Network.AWS.OpsWorks.DescribeCommands
+import Network.AWS.OpsWorks.DescribeDeployments
+import Network.AWS.OpsWorks.DescribeEcsClusters
+import Network.AWS.OpsWorks.DescribeElasticIPs
+import Network.AWS.OpsWorks.DescribeElasticLoadBalancers
+import Network.AWS.OpsWorks.DescribeInstances
+import Network.AWS.OpsWorks.DescribeLayers
+import Network.AWS.OpsWorks.DescribeLoadBasedAutoScaling
+import Network.AWS.OpsWorks.DescribeMyUserProfile
+import Network.AWS.OpsWorks.DescribePermissions
+import Network.AWS.OpsWorks.DescribeRAIdArrays
+import Network.AWS.OpsWorks.DescribeRDSDBInstances
+import Network.AWS.OpsWorks.DescribeServiceErrors
+import Network.AWS.OpsWorks.DescribeStackProvisioningParameters
+import Network.AWS.OpsWorks.DescribeStacks
+import Network.AWS.OpsWorks.DescribeStackSummary
+import Network.AWS.OpsWorks.DescribeTimeBasedAutoScaling
+import Network.AWS.OpsWorks.DescribeUserProfiles
+import Network.AWS.OpsWorks.DescribeVolumes
+import Network.AWS.OpsWorks.DetachElasticLoadBalancer
+import Network.AWS.OpsWorks.DisassociateElasticIP
+import Network.AWS.OpsWorks.GetHostnameSuggestion
+import Network.AWS.OpsWorks.GrantAccess
+import Network.AWS.OpsWorks.ListTags
+import Network.AWS.OpsWorks.RebootInstance
+import Network.AWS.OpsWorks.RegisterEcsCluster
+import Network.AWS.OpsWorks.RegisterElasticIP
+import Network.AWS.OpsWorks.RegisterInstance
+import Network.AWS.OpsWorks.RegisterRDSDBInstance
+import Network.AWS.OpsWorks.RegisterVolume
+import Network.AWS.OpsWorks.SetLoadBasedAutoScaling
+import Network.AWS.OpsWorks.SetPermission
+import Network.AWS.OpsWorks.SetTimeBasedAutoScaling
+import Network.AWS.OpsWorks.StartInstance
+import Network.AWS.OpsWorks.StartStack
+import Network.AWS.OpsWorks.StopInstance
+import Network.AWS.OpsWorks.StopStack
+import Network.AWS.OpsWorks.TagResource
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.UnassignInstance
+import Network.AWS.OpsWorks.UnassignVolume
+import Network.AWS.OpsWorks.UntagResource
+import Network.AWS.OpsWorks.UpdateApp
+import Network.AWS.OpsWorks.UpdateElasticIP
+import Network.AWS.OpsWorks.UpdateInstance
+import Network.AWS.OpsWorks.UpdateLayer
+import Network.AWS.OpsWorks.UpdateMyUserProfile
+import Network.AWS.OpsWorks.UpdateRDSDBInstance
+import Network.AWS.OpsWorks.UpdateStack
+import Network.AWS.OpsWorks.UpdateUserProfile
+import Network.AWS.OpsWorks.UpdateVolume
+import Network.AWS.OpsWorks.Waiters
 
 {- $errors
 Error matchers are designed for use with the functions provided by
diff --git a/gen/Network/AWS/OpsWorks/AssignInstance.hs b/gen/Network/AWS/OpsWorks/AssignInstance.hs
--- a/gen/Network/AWS/OpsWorks/AssignInstance.hs
+++ b/gen/Network/AWS/OpsWorks/AssignInstance.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.AssignInstance
--- 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)
 --
@@ -25,7 +25,7 @@
 --
 --     * You can assign registered Amazon EC2 instances only to custom layers.
 --
---     * You cannot use this action with instances that were created with AWS OpsWorks.
+--     * You cannot use this action with instances that were created with AWS OpsWorks Stacks.
 --
 --
 --
@@ -45,19 +45,20 @@
     , AssignInstanceResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'assignInstance' smart constructor.
 data AssignInstance = AssignInstance'
-    { _aiInstanceId :: !Text
-    , _aiLayerIds   :: ![Text]
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _aiInstanceId :: !Text
+  , _aiLayerIds   :: ![Text]
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AssignInstance' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -69,11 +70,9 @@
     :: Text -- ^ 'aiInstanceId'
     -> AssignInstance
 assignInstance pInstanceId_ =
-    AssignInstance'
-    { _aiInstanceId = pInstanceId_
-    , _aiLayerIds = mempty
-    }
+  AssignInstance' {_aiInstanceId = pInstanceId_, _aiLayerIds = mempty}
 
+
 -- | The instance ID.
 aiInstanceId :: Lens' AssignInstance Text
 aiInstanceId = lens _aiInstanceId (\ s a -> s{_aiInstanceId = a});
@@ -87,9 +86,9 @@
         request = postJSON opsWorks
         response = receiveNull AssignInstanceResponse'
 
-instance Hashable AssignInstance
+instance Hashable AssignInstance where
 
-instance NFData AssignInstance
+instance NFData AssignInstance where
 
 instance ToHeaders AssignInstance where
         toHeaders
@@ -115,13 +114,15 @@
 
 -- | /See:/ 'assignInstanceResponse' smart constructor.
 data AssignInstanceResponse =
-    AssignInstanceResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  AssignInstanceResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AssignInstanceResponse' with the minimum fields required to make a request.
 --
 assignInstanceResponse
     :: AssignInstanceResponse
 assignInstanceResponse = AssignInstanceResponse'
 
-instance NFData AssignInstanceResponse
+
+instance NFData AssignInstanceResponse where
diff --git a/gen/Network/AWS/OpsWorks/AssignVolume.hs b/gen/Network/AWS/OpsWorks/AssignVolume.hs
--- a/gen/Network/AWS/OpsWorks/AssignVolume.hs
+++ b/gen/Network/AWS/OpsWorks/AssignVolume.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.AssignVolume
--- 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 @@
     , AssignVolumeResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'assignVolume' smart constructor.
 data AssignVolume = AssignVolume'
-    { _avInstanceId :: !(Maybe Text)
-    , _avVolumeId   :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _avInstanceId :: !(Maybe Text)
+  , _avVolumeId   :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AssignVolume' 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 @@
     :: Text -- ^ 'avVolumeId'
     -> AssignVolume
 assignVolume pVolumeId_ =
-    AssignVolume'
-    { _avInstanceId = Nothing
-    , _avVolumeId = pVolumeId_
-    }
+  AssignVolume' {_avInstanceId = Nothing, _avVolumeId = pVolumeId_}
 
+
 -- | The instance ID.
 avInstanceId :: Lens' AssignVolume (Maybe Text)
 avInstanceId = lens _avInstanceId (\ s a -> s{_avInstanceId = a});
@@ -79,9 +78,9 @@
         request = postJSON opsWorks
         response = receiveNull AssignVolumeResponse'
 
-instance Hashable AssignVolume
+instance Hashable AssignVolume where
 
-instance NFData AssignVolume
+instance NFData AssignVolume where
 
 instance ToHeaders AssignVolume where
         toHeaders
@@ -107,13 +106,15 @@
 
 -- | /See:/ 'assignVolumeResponse' smart constructor.
 data AssignVolumeResponse =
-    AssignVolumeResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  AssignVolumeResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AssignVolumeResponse' with the minimum fields required to make a request.
 --
 assignVolumeResponse
     :: AssignVolumeResponse
 assignVolumeResponse = AssignVolumeResponse'
 
-instance NFData AssignVolumeResponse
+
+instance NFData AssignVolumeResponse where
diff --git a/gen/Network/AWS/OpsWorks/AssociateElasticIP.hs b/gen/Network/AWS/OpsWorks/AssociateElasticIP.hs
--- a/gen/Network/AWS/OpsWorks/AssociateElasticIP.hs
+++ b/gen/Network/AWS/OpsWorks/AssociateElasticIP.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.AssociateElasticIP
--- 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 @@
     , AssociateElasticIPResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'associateElasticIP' smart constructor.
 data AssociateElasticIP = AssociateElasticIP'
-    { _aeiInstanceId :: !(Maybe Text)
-    , _aeiElasticIP  :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _aeiInstanceId :: !(Maybe Text)
+  , _aeiElasticIP  :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AssociateElasticIP' 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 @@
     :: Text -- ^ 'aeiElasticIP'
     -> AssociateElasticIP
 associateElasticIP pElasticIP_ =
-    AssociateElasticIP'
-    { _aeiInstanceId = Nothing
-    , _aeiElasticIP = pElasticIP_
-    }
+  AssociateElasticIP' {_aeiInstanceId = Nothing, _aeiElasticIP = pElasticIP_}
 
+
 -- | The instance ID.
 aeiInstanceId :: Lens' AssociateElasticIP (Maybe Text)
 aeiInstanceId = lens _aeiInstanceId (\ s a -> s{_aeiInstanceId = a});
@@ -80,9 +79,9 @@
         request = postJSON opsWorks
         response = receiveNull AssociateElasticIPResponse'
 
-instance Hashable AssociateElasticIP
+instance Hashable AssociateElasticIP where
 
-instance NFData AssociateElasticIP
+instance NFData AssociateElasticIP where
 
 instance ToHeaders AssociateElasticIP where
         toHeaders
@@ -109,13 +108,15 @@
 
 -- | /See:/ 'associateElasticIPResponse' smart constructor.
 data AssociateElasticIPResponse =
-    AssociateElasticIPResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  AssociateElasticIPResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AssociateElasticIPResponse' with the minimum fields required to make a request.
 --
 associateElasticIPResponse
     :: AssociateElasticIPResponse
 associateElasticIPResponse = AssociateElasticIPResponse'
 
-instance NFData AssociateElasticIPResponse
+
+instance NFData AssociateElasticIPResponse where
diff --git a/gen/Network/AWS/OpsWorks/AttachElasticLoadBalancer.hs b/gen/Network/AWS/OpsWorks/AttachElasticLoadBalancer.hs
--- a/gen/Network/AWS/OpsWorks/AttachElasticLoadBalancer.hs
+++ b/gen/Network/AWS/OpsWorks/AttachElasticLoadBalancer.hs
@@ -12,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.AttachElasticLoadBalancer
--- 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)
 --
--- Attaches an Elastic Load Balancing load balancer to a specified layer. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/load-balancer-elb.html Elastic Load Balancing> .
+-- Attaches an Elastic Load Balancing load balancer to a specified layer. AWS OpsWorks Stacks does not support Application Load Balancer. You can only use Classic Load Balancer with AWS OpsWorks Stacks. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/layers-elb.html Elastic Load Balancing> .
 --
 --
 -- __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 <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions> .
@@ -37,19 +37,20 @@
     , AttachElasticLoadBalancerResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'attachElasticLoadBalancer' smart constructor.
 data AttachElasticLoadBalancer = AttachElasticLoadBalancer'
-    { _aelbElasticLoadBalancerName :: !Text
-    , _aelbLayerId                 :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _aelbElasticLoadBalancerName :: !Text
+  , _aelbLayerId                 :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AttachElasticLoadBalancer' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -62,11 +63,12 @@
     -> Text -- ^ 'aelbLayerId'
     -> AttachElasticLoadBalancer
 attachElasticLoadBalancer pElasticLoadBalancerName_ pLayerId_ =
-    AttachElasticLoadBalancer'
-    { _aelbElasticLoadBalancerName = pElasticLoadBalancerName_
-    , _aelbLayerId = pLayerId_
-    }
+  AttachElasticLoadBalancer'
+  { _aelbElasticLoadBalancerName = pElasticLoadBalancerName_
+  , _aelbLayerId = pLayerId_
+  }
 
+
 -- | The Elastic Load Balancing instance's name.
 aelbElasticLoadBalancerName :: Lens' AttachElasticLoadBalancer Text
 aelbElasticLoadBalancerName = lens _aelbElasticLoadBalancerName (\ s a -> s{_aelbElasticLoadBalancerName = a});
@@ -82,9 +84,9 @@
         response
           = receiveNull AttachElasticLoadBalancerResponse'
 
-instance Hashable AttachElasticLoadBalancer
+instance Hashable AttachElasticLoadBalancer where
 
-instance NFData AttachElasticLoadBalancer
+instance NFData AttachElasticLoadBalancer where
 
 instance ToHeaders AttachElasticLoadBalancer where
         toHeaders
@@ -113,13 +115,16 @@
 
 -- | /See:/ 'attachElasticLoadBalancerResponse' smart constructor.
 data AttachElasticLoadBalancerResponse =
-    AttachElasticLoadBalancerResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  AttachElasticLoadBalancerResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AttachElasticLoadBalancerResponse' with the minimum fields required to make a request.
 --
 attachElasticLoadBalancerResponse
     :: AttachElasticLoadBalancerResponse
 attachElasticLoadBalancerResponse = AttachElasticLoadBalancerResponse'
 
+
 instance NFData AttachElasticLoadBalancerResponse
+         where
diff --git a/gen/Network/AWS/OpsWorks/CloneStack.hs b/gen/Network/AWS/OpsWorks/CloneStack.hs
--- a/gen/Network/AWS/OpsWorks/CloneStack.hs
+++ b/gen/Network/AWS/OpsWorks/CloneStack.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.CloneStack
--- 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)
 --
@@ -60,39 +60,40 @@
     , csrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'cloneStack' smart constructor.
 data CloneStack = CloneStack'
-    { _cDefaultInstanceProfileARN :: !(Maybe Text)
-    , _cCloneAppIds               :: !(Maybe [Text])
-    , _cDefaultRootDeviceType     :: !(Maybe RootDeviceType)
-    , _cVPCId                     :: !(Maybe Text)
-    , _cChefConfiguration         :: !(Maybe ChefConfiguration)
-    , _cAgentVersion              :: !(Maybe Text)
-    , _cDefaultSSHKeyName         :: !(Maybe Text)
-    , _cCustomJSON                :: !(Maybe Text)
-    , _cClonePermissions          :: !(Maybe Bool)
-    , _cCustomCookbooksSource     :: !(Maybe Source)
-    , _cDefaultAvailabilityZone   :: !(Maybe Text)
-    , _cAttributes                :: !(Maybe (Map StackAttributesKeys Text))
-    , _cName                      :: !(Maybe Text)
-    , _cDefaultOS                 :: !(Maybe Text)
-    , _cUseOpsworksSecurityGroups :: !(Maybe Bool)
-    , _cUseCustomCookbooks        :: !(Maybe Bool)
-    , _cDefaultSubnetId           :: !(Maybe Text)
-    , _cRegion                    :: !(Maybe Text)
-    , _cConfigurationManager      :: !(Maybe StackConfigurationManager)
-    , _cHostnameTheme             :: !(Maybe Text)
-    , _cSourceStackId             :: !Text
-    , _cServiceRoleARN            :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _cDefaultInstanceProfileARN :: !(Maybe Text)
+  , _cCloneAppIds               :: !(Maybe [Text])
+  , _cDefaultRootDeviceType     :: !(Maybe RootDeviceType)
+  , _cVPCId                     :: !(Maybe Text)
+  , _cChefConfiguration         :: !(Maybe ChefConfiguration)
+  , _cAgentVersion              :: !(Maybe Text)
+  , _cDefaultSSHKeyName         :: !(Maybe Text)
+  , _cCustomJSON                :: !(Maybe Text)
+  , _cClonePermissions          :: !(Maybe Bool)
+  , _cCustomCookbooksSource     :: !(Maybe Source)
+  , _cDefaultAvailabilityZone   :: !(Maybe Text)
+  , _cAttributes                :: !(Maybe (Map StackAttributesKeys Text))
+  , _cName                      :: !(Maybe Text)
+  , _cDefaultOS                 :: !(Maybe Text)
+  , _cUseOpsworksSecurityGroups :: !(Maybe Bool)
+  , _cUseCustomCookbooks        :: !(Maybe Bool)
+  , _cDefaultSubnetId           :: !(Maybe Text)
+  , _cRegion                    :: !(Maybe Text)
+  , _cConfigurationManager      :: !(Maybe StackConfigurationManager)
+  , _cHostnameTheme             :: !(Maybe Text)
+  , _cSourceStackId             :: !Text
+  , _cServiceRoleARN            :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CloneStack' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -103,11 +104,11 @@
 --
 -- * 'cDefaultRootDeviceType' - The default root device type. This value is used by default for all instances in the cloned stack, but you can override it when you create an instance. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device Storage for the Root Device> .
 --
--- * 'cVPCId' - The ID of the VPC that the cloned stack is to be launched into. It must be in the specified region. All instances are launched into this VPC, and you cannot change the ID later.     * If your account supports EC2 Classic, the default value is no VPC.     * If your account does not support EC2 Classic, the default value is the default VPC for the specified region. If the VPC ID corresponds to a default VPC and you have specified either the @DefaultAvailabilityZone@ or the @DefaultSubnetId@ parameter only, AWS OpsWorks infers the value of the other parameter. If you specify neither parameter, AWS OpsWorks sets these parameters to the first valid Availability Zone for the specified region and the corresponding default VPC subnet ID, respectively.  If you specify a nondefault VPC ID, note the following:     * It must belong to a VPC in your account that is in the specified region.     * You must specify a value for @DefaultSubnetId@ . For more information on how to use AWS OpsWorks with a VPC, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-vpc.html Running a Stack in a VPC> . For more information on default VPC and EC2 Classic, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html Supported Platforms> .
+-- * 'cVPCId' - The ID of the VPC that the cloned stack is to be launched into. It must be in the specified region. All instances are launched into this VPC, and you cannot change the ID later.     * If your account supports EC2 Classic, the default value is no VPC.     * If your account does not support EC2 Classic, the default value is the default VPC for the specified region. If the VPC ID corresponds to a default VPC and you have specified either the @DefaultAvailabilityZone@ or the @DefaultSubnetId@ parameter only, AWS OpsWorks Stacks infers the value of the other parameter. If you specify neither parameter, AWS OpsWorks Stacks sets these parameters to the first valid Availability Zone for the specified region and the corresponding default VPC subnet ID, respectively.  If you specify a nondefault VPC ID, note the following:     * It must belong to a VPC in your account that is in the specified region.     * You must specify a value for @DefaultSubnetId@ . For more information on how to use AWS OpsWorks Stacks with a VPC, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-vpc.html Running a Stack in a VPC> . For more information on default VPC and EC2 Classic, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html Supported Platforms> .
 --
 -- * 'cChefConfiguration' - A @ChefConfiguration@ object that specifies whether to enable Berkshelf and the Berkshelf version on Chef 11.10 stacks. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a New Stack> .
 --
--- * 'cAgentVersion' - The default AWS OpsWorks agent version. You have the following options:     * Auto-update - Set this parameter to @LATEST@ . AWS OpsWorks automatically installs new agent versions on the stack's instances as soon as they are available.     * Fixed version - Set this parameter to your preferred agent version. To update the agent version, you must edit the stack configuration and specify a new version. AWS OpsWorks then automatically installs that version on the stack's instances. The default setting is @LATEST@ . To specify an agent version, you must use the complete version number, not the abbreviated number shown on the console. For a list of available agent version numbers, call 'DescribeAgentVersions' .
+-- * 'cAgentVersion' - The default AWS OpsWorks Stacks agent version. You have the following options:     * Auto-update - Set this parameter to @LATEST@ . AWS OpsWorks Stacks automatically installs new agent versions on the stack's instances as soon as they are available.     * Fixed version - Set this parameter to your preferred agent version. To update the agent version, you must edit the stack configuration and specify a new version. AWS OpsWorks Stacks then automatically installs that version on the stack's instances. The default setting is @LATEST@ . To specify an agent version, you must use the complete version number, not the abbreviated number shown on the console. For a list of available agent version numbers, call 'DescribeAgentVersions' . AgentVersion cannot be set to Chef 12.2.
 --
 -- * 'cDefaultSSHKeyName' - A default Amazon EC2 key pair name. The default value is none. If you specify a key pair name, AWS OpsWorks installs the public key on the instance and you can use the private key with an SSH client to log in to the instance. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-ssh.html Using SSH to Communicate with an Instance> and <http://docs.aws.amazon.com/opsworks/latest/userguide/security-ssh-access.html Managing SSH Access> . You can override this setting by specifying a different key pair, or no key pair, when you <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-add.html create an instance> .
 --
@@ -123,9 +124,9 @@
 --
 -- * 'cName' - The cloned stack name.
 --
--- * 'cDefaultOS' - The stack's operating system, which must be set to one of the following.     * A supported Linux operating system: An Amazon Linux version, such as @Amazon Linux 2016.03@ , @Amazon Linux 2015.09@ , or @Amazon Linux 2015.03@ .     * A supported Ubuntu operating system, such as @Ubuntu 16.04 LTS@ , @Ubuntu 14.04 LTS@ , or @Ubuntu 12.04 LTS@ .     * @CentOS 7@      * @Red Hat Enterprise Linux 7@      * @Microsoft Windows Server 2012 R2 Base@ , @Microsoft Windows Server 2012 R2 with SQL Server Express@ , @Microsoft Windows Server 2012 R2 with SQL Server Standard@ , or @Microsoft Windows Server 2012 R2 with SQL Server Web@ .     * A custom AMI: @Custom@ . You specify the custom AMI you want to use when you create instances. For more information on how to use custom AMIs with OpsWorks, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Using Custom AMIs> . The default option is the parent stack's operating system. For more information on the supported operating systems, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html AWS OpsWorks Operating Systems> .
+-- * 'cDefaultOS' - The stack's operating system, which must be set to one of the following.     * A supported Linux operating system: An Amazon Linux version, such as @Amazon Linux 2017.03@ , @Amazon Linux 2016.09@ , @Amazon Linux 2016.03@ , @Amazon Linux 2015.09@ , or @Amazon Linux 2015.03@ .     * A supported Ubuntu operating system, such as @Ubuntu 16.04 LTS@ , @Ubuntu 14.04 LTS@ , or @Ubuntu 12.04 LTS@ .     * @CentOS Linux 7@      * @Red Hat Enterprise Linux 7@      * @Microsoft Windows Server 2012 R2 Base@ , @Microsoft Windows Server 2012 R2 with SQL Server Express@ , @Microsoft Windows Server 2012 R2 with SQL Server Standard@ , or @Microsoft Windows Server 2012 R2 with SQL Server Web@ .     * A custom AMI: @Custom@ . You specify the custom AMI you want to use when you create instances. For more information on how to use custom AMIs with OpsWorks, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Using Custom AMIs> . The default option is the parent stack's operating system. For more information on the supported operating systems, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html AWS OpsWorks Stacks Operating Systems> .
 --
--- * 'cUseOpsworksSecurityGroups' - Whether to associate the AWS OpsWorks built-in security groups with the stack's layers. AWS OpsWorks provides a standard set of built-in security groups, one for each layer, which are associated with layers by default. With @UseOpsworksSecurityGroups@ you can instead provide your own custom security groups. @UseOpsworksSecurityGroups@ has the following settings:      * True - AWS OpsWorks automatically associates the appropriate built-in security group with each layer (default setting). You can associate additional security groups with a layer after you create it but you cannot delete the built-in security group.     * False - AWS OpsWorks does not associate built-in security groups with layers. You must create appropriate Amazon Elastic Compute Cloud (Amazon EC2) security groups and associate a security group with each layer that you create. However, you can still manually associate a built-in security group with a layer on creation; custom security groups are required only for those layers that need custom settings. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a New Stack> .
+-- * 'cUseOpsworksSecurityGroups' - Whether to associate the AWS OpsWorks Stacks built-in security groups with the stack's layers. AWS OpsWorks Stacks provides a standard set of built-in security groups, one for each layer, which are associated with layers by default. With @UseOpsworksSecurityGroups@ you can instead provide your own custom security groups. @UseOpsworksSecurityGroups@ has the following settings:      * True - AWS OpsWorks Stacks automatically associates the appropriate built-in security group with each layer (default setting). You can associate additional security groups with a layer after you create it but you cannot delete the built-in security group.     * False - AWS OpsWorks Stacks does not associate built-in security groups with layers. You must create appropriate Amazon Elastic Compute Cloud (Amazon EC2) security groups and associate a security group with each layer that you create. However, you can still manually associate a built-in security group with a layer on creation; custom security groups are required only for those layers that need custom settings. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a New Stack> .
 --
 -- * 'cUseCustomCookbooks' - Whether to use custom cookbooks.
 --
@@ -139,37 +140,38 @@
 --
 -- * 'cSourceStackId' - The source stack ID.
 --
--- * 'cServiceRoleARN' - The stack AWS Identity and Access Management (IAM) role, which allows AWS OpsWorks to work with AWS resources on your behalf. You must set this parameter to the Amazon Resource Name (ARN) for an existing IAM role. If you create a stack by using the AWS OpsWorks console, it creates the role for you. You can obtain an existing stack's IAM ARN programmatically by calling 'DescribePermissions' . For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers> .
+-- * 'cServiceRoleARN' - The stack AWS Identity and Access Management (IAM) role, which allows AWS OpsWorks Stacks to work with AWS resources on your behalf. You must set this parameter to the Amazon Resource Name (ARN) for an existing IAM role. If you create a stack by using the AWS OpsWorks Stacks console, it creates the role for you. You can obtain an existing stack's IAM ARN programmatically by calling 'DescribePermissions' . For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers> .
 cloneStack
     :: Text -- ^ 'cSourceStackId'
     -> Text -- ^ 'cServiceRoleARN'
     -> CloneStack
 cloneStack pSourceStackId_ pServiceRoleARN_ =
-    CloneStack'
-    { _cDefaultInstanceProfileARN = Nothing
-    , _cCloneAppIds = Nothing
-    , _cDefaultRootDeviceType = Nothing
-    , _cVPCId = Nothing
-    , _cChefConfiguration = Nothing
-    , _cAgentVersion = Nothing
-    , _cDefaultSSHKeyName = Nothing
-    , _cCustomJSON = Nothing
-    , _cClonePermissions = Nothing
-    , _cCustomCookbooksSource = Nothing
-    , _cDefaultAvailabilityZone = Nothing
-    , _cAttributes = Nothing
-    , _cName = Nothing
-    , _cDefaultOS = Nothing
-    , _cUseOpsworksSecurityGroups = Nothing
-    , _cUseCustomCookbooks = Nothing
-    , _cDefaultSubnetId = Nothing
-    , _cRegion = Nothing
-    , _cConfigurationManager = Nothing
-    , _cHostnameTheme = Nothing
-    , _cSourceStackId = pSourceStackId_
-    , _cServiceRoleARN = pServiceRoleARN_
-    }
+  CloneStack'
+  { _cDefaultInstanceProfileARN = Nothing
+  , _cCloneAppIds = Nothing
+  , _cDefaultRootDeviceType = Nothing
+  , _cVPCId = Nothing
+  , _cChefConfiguration = Nothing
+  , _cAgentVersion = Nothing
+  , _cDefaultSSHKeyName = Nothing
+  , _cCustomJSON = Nothing
+  , _cClonePermissions = Nothing
+  , _cCustomCookbooksSource = Nothing
+  , _cDefaultAvailabilityZone = Nothing
+  , _cAttributes = Nothing
+  , _cName = Nothing
+  , _cDefaultOS = Nothing
+  , _cUseOpsworksSecurityGroups = Nothing
+  , _cUseCustomCookbooks = Nothing
+  , _cDefaultSubnetId = Nothing
+  , _cRegion = Nothing
+  , _cConfigurationManager = Nothing
+  , _cHostnameTheme = Nothing
+  , _cSourceStackId = pSourceStackId_
+  , _cServiceRoleARN = pServiceRoleARN_
+  }
 
+
 -- | The Amazon Resource Name (ARN) of an IAM profile that is the default profile for all of the stack's EC2 instances. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers> .
 cDefaultInstanceProfileARN :: Lens' CloneStack (Maybe Text)
 cDefaultInstanceProfileARN = lens _cDefaultInstanceProfileARN (\ s a -> s{_cDefaultInstanceProfileARN = a});
@@ -182,7 +184,7 @@
 cDefaultRootDeviceType :: Lens' CloneStack (Maybe RootDeviceType)
 cDefaultRootDeviceType = lens _cDefaultRootDeviceType (\ s a -> s{_cDefaultRootDeviceType = a});
 
--- | The ID of the VPC that the cloned stack is to be launched into. It must be in the specified region. All instances are launched into this VPC, and you cannot change the ID later.     * If your account supports EC2 Classic, the default value is no VPC.     * If your account does not support EC2 Classic, the default value is the default VPC for the specified region. If the VPC ID corresponds to a default VPC and you have specified either the @DefaultAvailabilityZone@ or the @DefaultSubnetId@ parameter only, AWS OpsWorks infers the value of the other parameter. If you specify neither parameter, AWS OpsWorks sets these parameters to the first valid Availability Zone for the specified region and the corresponding default VPC subnet ID, respectively.  If you specify a nondefault VPC ID, note the following:     * It must belong to a VPC in your account that is in the specified region.     * You must specify a value for @DefaultSubnetId@ . For more information on how to use AWS OpsWorks with a VPC, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-vpc.html Running a Stack in a VPC> . For more information on default VPC and EC2 Classic, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html Supported Platforms> .
+-- | The ID of the VPC that the cloned stack is to be launched into. It must be in the specified region. All instances are launched into this VPC, and you cannot change the ID later.     * If your account supports EC2 Classic, the default value is no VPC.     * If your account does not support EC2 Classic, the default value is the default VPC for the specified region. If the VPC ID corresponds to a default VPC and you have specified either the @DefaultAvailabilityZone@ or the @DefaultSubnetId@ parameter only, AWS OpsWorks Stacks infers the value of the other parameter. If you specify neither parameter, AWS OpsWorks Stacks sets these parameters to the first valid Availability Zone for the specified region and the corresponding default VPC subnet ID, respectively.  If you specify a nondefault VPC ID, note the following:     * It must belong to a VPC in your account that is in the specified region.     * You must specify a value for @DefaultSubnetId@ . For more information on how to use AWS OpsWorks Stacks with a VPC, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-vpc.html Running a Stack in a VPC> . For more information on default VPC and EC2 Classic, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html Supported Platforms> .
 cVPCId :: Lens' CloneStack (Maybe Text)
 cVPCId = lens _cVPCId (\ s a -> s{_cVPCId = a});
 
@@ -190,7 +192,7 @@
 cChefConfiguration :: Lens' CloneStack (Maybe ChefConfiguration)
 cChefConfiguration = lens _cChefConfiguration (\ s a -> s{_cChefConfiguration = a});
 
--- | The default AWS OpsWorks agent version. You have the following options:     * Auto-update - Set this parameter to @LATEST@ . AWS OpsWorks automatically installs new agent versions on the stack's instances as soon as they are available.     * Fixed version - Set this parameter to your preferred agent version. To update the agent version, you must edit the stack configuration and specify a new version. AWS OpsWorks then automatically installs that version on the stack's instances. The default setting is @LATEST@ . To specify an agent version, you must use the complete version number, not the abbreviated number shown on the console. For a list of available agent version numbers, call 'DescribeAgentVersions' .
+-- | The default AWS OpsWorks Stacks agent version. You have the following options:     * Auto-update - Set this parameter to @LATEST@ . AWS OpsWorks Stacks automatically installs new agent versions on the stack's instances as soon as they are available.     * Fixed version - Set this parameter to your preferred agent version. To update the agent version, you must edit the stack configuration and specify a new version. AWS OpsWorks Stacks then automatically installs that version on the stack's instances. The default setting is @LATEST@ . To specify an agent version, you must use the complete version number, not the abbreviated number shown on the console. For a list of available agent version numbers, call 'DescribeAgentVersions' . AgentVersion cannot be set to Chef 12.2.
 cAgentVersion :: Lens' CloneStack (Maybe Text)
 cAgentVersion = lens _cAgentVersion (\ s a -> s{_cAgentVersion = a});
 
@@ -222,11 +224,11 @@
 cName :: Lens' CloneStack (Maybe Text)
 cName = lens _cName (\ s a -> s{_cName = a});
 
--- | The stack's operating system, which must be set to one of the following.     * A supported Linux operating system: An Amazon Linux version, such as @Amazon Linux 2016.03@ , @Amazon Linux 2015.09@ , or @Amazon Linux 2015.03@ .     * A supported Ubuntu operating system, such as @Ubuntu 16.04 LTS@ , @Ubuntu 14.04 LTS@ , or @Ubuntu 12.04 LTS@ .     * @CentOS 7@      * @Red Hat Enterprise Linux 7@      * @Microsoft Windows Server 2012 R2 Base@ , @Microsoft Windows Server 2012 R2 with SQL Server Express@ , @Microsoft Windows Server 2012 R2 with SQL Server Standard@ , or @Microsoft Windows Server 2012 R2 with SQL Server Web@ .     * A custom AMI: @Custom@ . You specify the custom AMI you want to use when you create instances. For more information on how to use custom AMIs with OpsWorks, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Using Custom AMIs> . The default option is the parent stack's operating system. For more information on the supported operating systems, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html AWS OpsWorks Operating Systems> .
+-- | The stack's operating system, which must be set to one of the following.     * A supported Linux operating system: An Amazon Linux version, such as @Amazon Linux 2017.03@ , @Amazon Linux 2016.09@ , @Amazon Linux 2016.03@ , @Amazon Linux 2015.09@ , or @Amazon Linux 2015.03@ .     * A supported Ubuntu operating system, such as @Ubuntu 16.04 LTS@ , @Ubuntu 14.04 LTS@ , or @Ubuntu 12.04 LTS@ .     * @CentOS Linux 7@      * @Red Hat Enterprise Linux 7@      * @Microsoft Windows Server 2012 R2 Base@ , @Microsoft Windows Server 2012 R2 with SQL Server Express@ , @Microsoft Windows Server 2012 R2 with SQL Server Standard@ , or @Microsoft Windows Server 2012 R2 with SQL Server Web@ .     * A custom AMI: @Custom@ . You specify the custom AMI you want to use when you create instances. For more information on how to use custom AMIs with OpsWorks, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Using Custom AMIs> . The default option is the parent stack's operating system. For more information on the supported operating systems, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html AWS OpsWorks Stacks Operating Systems> .
 cDefaultOS :: Lens' CloneStack (Maybe Text)
 cDefaultOS = lens _cDefaultOS (\ s a -> s{_cDefaultOS = a});
 
--- | Whether to associate the AWS OpsWorks built-in security groups with the stack's layers. AWS OpsWorks provides a standard set of built-in security groups, one for each layer, which are associated with layers by default. With @UseOpsworksSecurityGroups@ you can instead provide your own custom security groups. @UseOpsworksSecurityGroups@ has the following settings:      * True - AWS OpsWorks automatically associates the appropriate built-in security group with each layer (default setting). You can associate additional security groups with a layer after you create it but you cannot delete the built-in security group.     * False - AWS OpsWorks does not associate built-in security groups with layers. You must create appropriate Amazon Elastic Compute Cloud (Amazon EC2) security groups and associate a security group with each layer that you create. However, you can still manually associate a built-in security group with a layer on creation; custom security groups are required only for those layers that need custom settings. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a New Stack> .
+-- | Whether to associate the AWS OpsWorks Stacks built-in security groups with the stack's layers. AWS OpsWorks Stacks provides a standard set of built-in security groups, one for each layer, which are associated with layers by default. With @UseOpsworksSecurityGroups@ you can instead provide your own custom security groups. @UseOpsworksSecurityGroups@ has the following settings:      * True - AWS OpsWorks Stacks automatically associates the appropriate built-in security group with each layer (default setting). You can associate additional security groups with a layer after you create it but you cannot delete the built-in security group.     * False - AWS OpsWorks Stacks does not associate built-in security groups with layers. You must create appropriate Amazon Elastic Compute Cloud (Amazon EC2) security groups and associate a security group with each layer that you create. However, you can still manually associate a built-in security group with a layer on creation; custom security groups are required only for those layers that need custom settings. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a New Stack> .
 cUseOpsworksSecurityGroups :: Lens' CloneStack (Maybe Bool)
 cUseOpsworksSecurityGroups = lens _cUseOpsworksSecurityGroups (\ s a -> s{_cUseOpsworksSecurityGroups = a});
 
@@ -254,7 +256,7 @@
 cSourceStackId :: Lens' CloneStack Text
 cSourceStackId = lens _cSourceStackId (\ s a -> s{_cSourceStackId = a});
 
--- | The stack AWS Identity and Access Management (IAM) role, which allows AWS OpsWorks to work with AWS resources on your behalf. You must set this parameter to the Amazon Resource Name (ARN) for an existing IAM role. If you create a stack by using the AWS OpsWorks console, it creates the role for you. You can obtain an existing stack's IAM ARN programmatically by calling 'DescribePermissions' . For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers> .
+-- | The stack AWS Identity and Access Management (IAM) role, which allows AWS OpsWorks Stacks to work with AWS resources on your behalf. You must set this parameter to the Amazon Resource Name (ARN) for an existing IAM role. If you create a stack by using the AWS OpsWorks Stacks console, it creates the role for you. You can obtain an existing stack's IAM ARN programmatically by calling 'DescribePermissions' . For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers> .
 cServiceRoleARN :: Lens' CloneStack Text
 cServiceRoleARN = lens _cServiceRoleARN (\ s a -> s{_cServiceRoleARN = a});
 
@@ -267,9 +269,9 @@
                  CloneStackResponse' <$>
                    (x .?> "StackId") <*> (pure (fromEnum s)))
 
-instance Hashable CloneStack
+instance Hashable CloneStack where
 
-instance NFData CloneStack
+instance NFData CloneStack where
 
 instance ToHeaders CloneStack where
         toHeaders
@@ -325,10 +327,11 @@
 --
 -- /See:/ 'cloneStackResponse' smart constructor.
 data CloneStackResponse = CloneStackResponse'
-    { _csrsStackId        :: !(Maybe Text)
-    , _csrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _csrsStackId        :: !(Maybe Text)
+  , _csrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CloneStackResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -340,11 +343,10 @@
     :: Int -- ^ 'csrsResponseStatus'
     -> CloneStackResponse
 cloneStackResponse pResponseStatus_ =
-    CloneStackResponse'
-    { _csrsStackId = Nothing
-    , _csrsResponseStatus = pResponseStatus_
-    }
+  CloneStackResponse'
+  {_csrsStackId = Nothing, _csrsResponseStatus = pResponseStatus_}
 
+
 -- | The cloned stack ID.
 csrsStackId :: Lens' CloneStackResponse (Maybe Text)
 csrsStackId = lens _csrsStackId (\ s a -> s{_csrsStackId = a});
@@ -353,4 +355,4 @@
 csrsResponseStatus :: Lens' CloneStackResponse Int
 csrsResponseStatus = lens _csrsResponseStatus (\ s a -> s{_csrsResponseStatus = a});
 
-instance NFData CloneStackResponse
+instance NFData CloneStackResponse where
diff --git a/gen/Network/AWS/OpsWorks/CreateApp.hs b/gen/Network/AWS/OpsWorks/CreateApp.hs
--- a/gen/Network/AWS/OpsWorks/CreateApp.hs
+++ b/gen/Network/AWS/OpsWorks/CreateApp.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.CreateApp
--- 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)
 --
@@ -50,29 +50,30 @@
     , carsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'createApp' smart constructor.
 data CreateApp = CreateApp'
-    { _caSSLConfiguration :: !(Maybe SSLConfiguration)
-    , _caEnvironment      :: !(Maybe [EnvironmentVariable])
-    , _caEnableSSL        :: !(Maybe Bool)
-    , _caShortname        :: !(Maybe Text)
-    , _caDataSources      :: !(Maybe [DataSource])
-    , _caAppSource        :: !(Maybe Source)
-    , _caAttributes       :: !(Maybe (Map AppAttributesKeys Text))
-    , _caDomains          :: !(Maybe [Text])
-    , _caDescription      :: !(Maybe Text)
-    , _caStackId          :: !Text
-    , _caName             :: !Text
-    , _caType             :: !AppType
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _caSSLConfiguration :: !(Maybe SSLConfiguration)
+  , _caEnvironment      :: !(Maybe [EnvironmentVariable])
+  , _caEnableSSL        :: !(Maybe Bool)
+  , _caShortname        :: !(Maybe Text)
+  , _caDataSources      :: !(Maybe [DataSource])
+  , _caAppSource        :: !(Maybe Source)
+  , _caAttributes       :: !(Maybe (Map AppAttributesKeys Text))
+  , _caDomains          :: !(Maybe [Text])
+  , _caDescription      :: !(Maybe Text)
+  , _caStackId          :: !Text
+  , _caName             :: !Text
+  , _caType             :: !AppType
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateApp' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -99,28 +100,29 @@
 --
 -- * 'caName' - The app name.
 --
--- * 'caType' - The app type. Each supported type is associated with a particular layer. For example, PHP applications are associated with a PHP layer. AWS OpsWorks deploys an application to those instances that are members of the corresponding layer. If your app isn't one of the standard types, or you prefer to implement your own Deploy recipes, specify @other@ .
+-- * 'caType' - The app type. Each supported type is associated with a particular layer. For example, PHP applications are associated with a PHP layer. AWS OpsWorks Stacks deploys an application to those instances that are members of the corresponding layer. If your app isn't one of the standard types, or you prefer to implement your own Deploy recipes, specify @other@ .
 createApp
     :: Text -- ^ 'caStackId'
     -> Text -- ^ 'caName'
     -> AppType -- ^ 'caType'
     -> CreateApp
 createApp pStackId_ pName_ pType_ =
-    CreateApp'
-    { _caSSLConfiguration = Nothing
-    , _caEnvironment = Nothing
-    , _caEnableSSL = Nothing
-    , _caShortname = Nothing
-    , _caDataSources = Nothing
-    , _caAppSource = Nothing
-    , _caAttributes = Nothing
-    , _caDomains = Nothing
-    , _caDescription = Nothing
-    , _caStackId = pStackId_
-    , _caName = pName_
-    , _caType = pType_
-    }
+  CreateApp'
+  { _caSSLConfiguration = Nothing
+  , _caEnvironment = Nothing
+  , _caEnableSSL = Nothing
+  , _caShortname = Nothing
+  , _caDataSources = Nothing
+  , _caAppSource = Nothing
+  , _caAttributes = Nothing
+  , _caDomains = Nothing
+  , _caDescription = Nothing
+  , _caStackId = pStackId_
+  , _caName = pName_
+  , _caType = pType_
+  }
 
+
 -- | An @SslConfiguration@ object with the SSL configuration.
 caSSLConfiguration :: Lens' CreateApp (Maybe SSLConfiguration)
 caSSLConfiguration = lens _caSSLConfiguration (\ s a -> s{_caSSLConfiguration = a});
@@ -165,7 +167,7 @@
 caName :: Lens' CreateApp Text
 caName = lens _caName (\ s a -> s{_caName = a});
 
--- | The app type. Each supported type is associated with a particular layer. For example, PHP applications are associated with a PHP layer. AWS OpsWorks deploys an application to those instances that are members of the corresponding layer. If your app isn't one of the standard types, or you prefer to implement your own Deploy recipes, specify @other@ .
+-- | The app type. Each supported type is associated with a particular layer. For example, PHP applications are associated with a PHP layer. AWS OpsWorks Stacks deploys an application to those instances that are members of the corresponding layer. If your app isn't one of the standard types, or you prefer to implement your own Deploy recipes, specify @other@ .
 caType :: Lens' CreateApp AppType
 caType = lens _caType (\ s a -> s{_caType = a});
 
@@ -178,9 +180,9 @@
                  CreateAppResponse' <$>
                    (x .?> "AppId") <*> (pure (fromEnum s)))
 
-instance Hashable CreateApp
+instance Hashable CreateApp where
 
-instance NFData CreateApp
+instance NFData CreateApp where
 
 instance ToHeaders CreateApp where
         toHeaders
@@ -219,10 +221,11 @@
 --
 -- /See:/ 'createAppResponse' smart constructor.
 data CreateAppResponse = CreateAppResponse'
-    { _carsAppId          :: !(Maybe Text)
-    , _carsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _carsAppId          :: !(Maybe Text)
+  , _carsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateAppResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -234,11 +237,10 @@
     :: Int -- ^ 'carsResponseStatus'
     -> CreateAppResponse
 createAppResponse pResponseStatus_ =
-    CreateAppResponse'
-    { _carsAppId = Nothing
-    , _carsResponseStatus = pResponseStatus_
-    }
+  CreateAppResponse'
+  {_carsAppId = Nothing, _carsResponseStatus = pResponseStatus_}
 
+
 -- | The app ID.
 carsAppId :: Lens' CreateAppResponse (Maybe Text)
 carsAppId = lens _carsAppId (\ s a -> s{_carsAppId = a});
@@ -247,4 +249,4 @@
 carsResponseStatus :: Lens' CreateAppResponse Int
 carsResponseStatus = lens _carsResponseStatus (\ s a -> s{_carsResponseStatus = a});
 
-instance NFData CreateAppResponse
+instance NFData CreateAppResponse where
diff --git a/gen/Network/AWS/OpsWorks/CreateDeployment.hs b/gen/Network/AWS/OpsWorks/CreateDeployment.hs
--- a/gen/Network/AWS/OpsWorks/CreateDeployment.hs
+++ b/gen/Network/AWS/OpsWorks/CreateDeployment.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.CreateDeployment
--- 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)
 --
@@ -45,24 +45,25 @@
     , cdrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'createDeployment' smart constructor.
 data CreateDeployment = CreateDeployment'
-    { _cdCustomJSON  :: !(Maybe Text)
-    , _cdAppId       :: !(Maybe Text)
-    , _cdInstanceIds :: !(Maybe [Text])
-    , _cdLayerIds    :: !(Maybe [Text])
-    , _cdComment     :: !(Maybe Text)
-    , _cdStackId     :: !Text
-    , _cdCommand     :: !DeploymentCommand
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _cdCustomJSON  :: !(Maybe Text)
+  , _cdAppId       :: !(Maybe Text)
+  , _cdInstanceIds :: !(Maybe [Text])
+  , _cdLayerIds    :: !(Maybe [Text])
+  , _cdComment     :: !(Maybe Text)
+  , _cdStackId     :: !Text
+  , _cdCommand     :: !DeploymentCommand
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateDeployment' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -85,16 +86,17 @@
     -> DeploymentCommand -- ^ 'cdCommand'
     -> CreateDeployment
 createDeployment pStackId_ pCommand_ =
-    CreateDeployment'
-    { _cdCustomJSON = Nothing
-    , _cdAppId = Nothing
-    , _cdInstanceIds = Nothing
-    , _cdLayerIds = Nothing
-    , _cdComment = Nothing
-    , _cdStackId = pStackId_
-    , _cdCommand = pCommand_
-    }
+  CreateDeployment'
+  { _cdCustomJSON = Nothing
+  , _cdAppId = Nothing
+  , _cdInstanceIds = Nothing
+  , _cdLayerIds = Nothing
+  , _cdComment = Nothing
+  , _cdStackId = pStackId_
+  , _cdCommand = pCommand_
+  }
 
+
 -- | A string that contains user-defined, custom JSON. It is used to override the corresponding default stack configuration JSON values. The string should be in the following format: @"{\"key1\": \"value1\", \"key2\": \"value2\",...}"@  For more information on custom JSON, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html Use Custom JSON to Modify the Stack Configuration Attributes> .
 cdCustomJSON :: Lens' CreateDeployment (Maybe Text)
 cdCustomJSON = lens _cdCustomJSON (\ s a -> s{_cdCustomJSON = a});
@@ -132,9 +134,9 @@
                  CreateDeploymentResponse' <$>
                    (x .?> "DeploymentId") <*> (pure (fromEnum s)))
 
-instance Hashable CreateDeployment
+instance Hashable CreateDeployment where
 
-instance NFData CreateDeployment
+instance NFData CreateDeployment where
 
 instance ToHeaders CreateDeployment where
         toHeaders
@@ -169,10 +171,11 @@
 --
 -- /See:/ 'createDeploymentResponse' smart constructor.
 data CreateDeploymentResponse = CreateDeploymentResponse'
-    { _cdrsDeploymentId   :: !(Maybe Text)
-    , _cdrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _cdrsDeploymentId   :: !(Maybe Text)
+  , _cdrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateDeploymentResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -184,11 +187,10 @@
     :: Int -- ^ 'cdrsResponseStatus'
     -> CreateDeploymentResponse
 createDeploymentResponse pResponseStatus_ =
-    CreateDeploymentResponse'
-    { _cdrsDeploymentId = Nothing
-    , _cdrsResponseStatus = pResponseStatus_
-    }
+  CreateDeploymentResponse'
+  {_cdrsDeploymentId = Nothing, _cdrsResponseStatus = pResponseStatus_}
 
+
 -- | The deployment ID, which can be used with other requests to identify the deployment.
 cdrsDeploymentId :: Lens' CreateDeploymentResponse (Maybe Text)
 cdrsDeploymentId = lens _cdrsDeploymentId (\ s a -> s{_cdrsDeploymentId = a});
@@ -197,4 +199,4 @@
 cdrsResponseStatus :: Lens' CreateDeploymentResponse Int
 cdrsResponseStatus = lens _cdrsResponseStatus (\ s a -> s{_cdrsResponseStatus = a});
 
-instance NFData CreateDeploymentResponse
+instance NFData CreateDeploymentResponse where
diff --git a/gen/Network/AWS/OpsWorks/CreateInstance.hs b/gen/Network/AWS/OpsWorks/CreateInstance.hs
--- a/gen/Network/AWS/OpsWorks/CreateInstance.hs
+++ b/gen/Network/AWS/OpsWorks/CreateInstance.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.CreateInstance
--- 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)
 --
@@ -56,35 +56,36 @@
     , cirsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'createInstance' smart constructor.
 data CreateInstance = CreateInstance'
-    { _ciInstallUpdatesOnBoot :: !(Maybe Bool)
-    , _ciVirtualizationType   :: !(Maybe Text)
-    , _ciHostname             :: !(Maybe Text)
-    , _ciSSHKeyName           :: !(Maybe Text)
-    , _ciAgentVersion         :: !(Maybe Text)
-    , _ciSubnetId             :: !(Maybe Text)
-    , _ciEBSOptimized         :: !(Maybe Bool)
-    , _ciOS                   :: !(Maybe Text)
-    , _ciAvailabilityZone     :: !(Maybe Text)
-    , _ciTenancy              :: !(Maybe Text)
-    , _ciAutoScalingType      :: !(Maybe AutoScalingType)
-    , _ciArchitecture         :: !(Maybe Architecture)
-    , _ciAMIId                :: !(Maybe Text)
-    , _ciRootDeviceType       :: !(Maybe RootDeviceType)
-    , _ciBlockDeviceMappings  :: !(Maybe [BlockDeviceMapping])
-    , _ciStackId              :: !Text
-    , _ciLayerIds             :: ![Text]
-    , _ciInstanceType         :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _ciInstallUpdatesOnBoot :: !(Maybe Bool)
+  , _ciVirtualizationType   :: !(Maybe Text)
+  , _ciHostname             :: !(Maybe Text)
+  , _ciSSHKeyName           :: !(Maybe Text)
+  , _ciAgentVersion         :: !(Maybe Text)
+  , _ciSubnetId             :: !(Maybe Text)
+  , _ciEBSOptimized         :: !(Maybe Bool)
+  , _ciOS                   :: !(Maybe Text)
+  , _ciAvailabilityZone     :: !(Maybe Text)
+  , _ciTenancy              :: !(Maybe Text)
+  , _ciAutoScalingType      :: !(Maybe AutoScalingType)
+  , _ciArchitecture         :: !(Maybe Architecture)
+  , _ciAMIId                :: !(Maybe Text)
+  , _ciRootDeviceType       :: !(Maybe RootDeviceType)
+  , _ciBlockDeviceMappings  :: !(Maybe [BlockDeviceMapping])
+  , _ciStackId              :: !Text
+  , _ciLayerIds             :: ![Text]
+  , _ciInstanceType         :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateInstance' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -97,13 +98,13 @@
 --
 -- * 'ciSSHKeyName' - The instance's Amazon EC2 key-pair name.
 --
--- * 'ciAgentVersion' - The default AWS OpsWorks agent version. You have the following options:     * @INHERIT@ - Use the stack's default agent version setting.     * /version_number/ - Use the specified agent version. This value overrides the stack's default setting. To update the agent version, edit the instance configuration and specify a new version. AWS OpsWorks then automatically installs that version on the instance. The default setting is @INHERIT@ . To specify an agent version, you must use the complete version number, not the abbreviated number shown on the console. For a list of available agent version numbers, call 'DescribeAgentVersions' .
+-- * 'ciAgentVersion' - The default AWS OpsWorks Stacks agent version. You have the following options:     * @INHERIT@ - Use the stack's default agent version setting.     * /version_number/ - Use the specified agent version. This value overrides the stack's default setting. To update the agent version, edit the instance configuration and specify a new version. AWS OpsWorks Stacks then automatically installs that version on the instance. The default setting is @INHERIT@ . To specify an agent version, you must use the complete version number, not the abbreviated number shown on the console. For a list of available agent version numbers, call 'DescribeAgentVersions' . AgentVersion cannot be set to Chef 12.2.
 --
--- * 'ciSubnetId' - The ID of the instance's subnet. If the stack is running in a VPC, you can use this parameter to override the stack's default subnet ID value and direct AWS OpsWorks to launch the instance in a different subnet.
+-- * 'ciSubnetId' - The ID of the instance's subnet. If the stack is running in a VPC, you can use this parameter to override the stack's default subnet ID value and direct AWS OpsWorks Stacks to launch the instance in a different subnet.
 --
 -- * 'ciEBSOptimized' - Whether to create an Amazon EBS-optimized instance.
 --
--- * 'ciOS' - The instance's operating system, which must be set to one of the following.     * A supported Linux operating system: An Amazon Linux version, such as @Amazon Linux 2016.03@ , @Amazon Linux 2015.09@ , or @Amazon Linux 2015.03@ .     * A supported Ubuntu operating system, such as @Ubuntu 16.04 LTS@ , @Ubuntu 14.04 LTS@ , or @Ubuntu 12.04 LTS@ .     * @CentOS 7@      * @Red Hat Enterprise Linux 7@      * A supported Windows operating system, such as @Microsoft Windows Server 2012 R2 Base@ , @Microsoft Windows Server 2012 R2 with SQL Server Express@ , @Microsoft Windows Server 2012 R2 with SQL Server Standard@ , or @Microsoft Windows Server 2012 R2 with SQL Server Web@ .     * A custom AMI: @Custom@ . For more information on the supported operating systems, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html AWS OpsWorks Operating Systems> . The default option is the current Amazon Linux version. 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. Block device mappings are not supported if the value is @Custom@ . For more information on the supported operating systems, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html Operating Systems> For more information on how to use custom AMIs with AWS OpsWorks, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Using Custom AMIs> .
+-- * 'ciOS' - The instance's operating system, which must be set to one of the following.     * A supported Linux operating system: An Amazon Linux version, such as @Amazon Linux 2017.03@ , @Amazon Linux 2016.09@ , @Amazon Linux 2016.03@ , @Amazon Linux 2015.09@ , or @Amazon Linux 2015.03@ .     * A supported Ubuntu operating system, such as @Ubuntu 16.04 LTS@ , @Ubuntu 14.04 LTS@ , or @Ubuntu 12.04 LTS@ .     * @CentOS Linux 7@      * @Red Hat Enterprise Linux 7@      * A supported Windows operating system, such as @Microsoft Windows Server 2012 R2 Base@ , @Microsoft Windows Server 2012 R2 with SQL Server Express@ , @Microsoft Windows Server 2012 R2 with SQL Server Standard@ , or @Microsoft Windows Server 2012 R2 with SQL Server Web@ .     * A custom AMI: @Custom@ . For more information on the supported operating systems, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html AWS OpsWorks Stacks Operating Systems> . The default option is the current Amazon Linux version. 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. Block device mappings are not supported if the value is @Custom@ . For more information on the supported operating systems, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html Operating Systems> For more information on how to use custom AMIs with AWS OpsWorks Stacks, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Using Custom AMIs> .
 --
 -- * 'ciAvailabilityZone' - The instance Availability Zone. For more information, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints> .
 --
@@ -129,27 +130,28 @@
     -> Text -- ^ 'ciInstanceType'
     -> CreateInstance
 createInstance pStackId_ pInstanceType_ =
-    CreateInstance'
-    { _ciInstallUpdatesOnBoot = Nothing
-    , _ciVirtualizationType = Nothing
-    , _ciHostname = Nothing
-    , _ciSSHKeyName = Nothing
-    , _ciAgentVersion = Nothing
-    , _ciSubnetId = Nothing
-    , _ciEBSOptimized = Nothing
-    , _ciOS = Nothing
-    , _ciAvailabilityZone = Nothing
-    , _ciTenancy = Nothing
-    , _ciAutoScalingType = Nothing
-    , _ciArchitecture = Nothing
-    , _ciAMIId = Nothing
-    , _ciRootDeviceType = Nothing
-    , _ciBlockDeviceMappings = Nothing
-    , _ciStackId = pStackId_
-    , _ciLayerIds = mempty
-    , _ciInstanceType = pInstanceType_
-    }
+  CreateInstance'
+  { _ciInstallUpdatesOnBoot = Nothing
+  , _ciVirtualizationType = Nothing
+  , _ciHostname = Nothing
+  , _ciSSHKeyName = Nothing
+  , _ciAgentVersion = Nothing
+  , _ciSubnetId = Nothing
+  , _ciEBSOptimized = Nothing
+  , _ciOS = Nothing
+  , _ciAvailabilityZone = Nothing
+  , _ciTenancy = Nothing
+  , _ciAutoScalingType = Nothing
+  , _ciArchitecture = Nothing
+  , _ciAMIId = Nothing
+  , _ciRootDeviceType = Nothing
+  , _ciBlockDeviceMappings = Nothing
+  , _ciStackId = pStackId_
+  , _ciLayerIds = mempty
+  , _ciInstanceType = pInstanceType_
+  }
 
+
 -- | 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 by manually running @yum@ (Amazon Linux) or @apt-get@ (Ubuntu) on the instances.
 ciInstallUpdatesOnBoot :: Lens' CreateInstance (Maybe Bool)
 ciInstallUpdatesOnBoot = lens _ciInstallUpdatesOnBoot (\ s a -> s{_ciInstallUpdatesOnBoot = a});
@@ -166,11 +168,11 @@
 ciSSHKeyName :: Lens' CreateInstance (Maybe Text)
 ciSSHKeyName = lens _ciSSHKeyName (\ s a -> s{_ciSSHKeyName = a});
 
--- | The default AWS OpsWorks agent version. You have the following options:     * @INHERIT@ - Use the stack's default agent version setting.     * /version_number/ - Use the specified agent version. This value overrides the stack's default setting. To update the agent version, edit the instance configuration and specify a new version. AWS OpsWorks then automatically installs that version on the instance. The default setting is @INHERIT@ . To specify an agent version, you must use the complete version number, not the abbreviated number shown on the console. For a list of available agent version numbers, call 'DescribeAgentVersions' .
+-- | The default AWS OpsWorks Stacks agent version. You have the following options:     * @INHERIT@ - Use the stack's default agent version setting.     * /version_number/ - Use the specified agent version. This value overrides the stack's default setting. To update the agent version, edit the instance configuration and specify a new version. AWS OpsWorks Stacks then automatically installs that version on the instance. The default setting is @INHERIT@ . To specify an agent version, you must use the complete version number, not the abbreviated number shown on the console. For a list of available agent version numbers, call 'DescribeAgentVersions' . AgentVersion cannot be set to Chef 12.2.
 ciAgentVersion :: Lens' CreateInstance (Maybe Text)
 ciAgentVersion = lens _ciAgentVersion (\ s a -> s{_ciAgentVersion = a});
 
--- | The ID of the instance's subnet. If the stack is running in a VPC, you can use this parameter to override the stack's default subnet ID value and direct AWS OpsWorks to launch the instance in a different subnet.
+-- | The ID of the instance's subnet. If the stack is running in a VPC, you can use this parameter to override the stack's default subnet ID value and direct AWS OpsWorks Stacks to launch the instance in a different subnet.
 ciSubnetId :: Lens' CreateInstance (Maybe Text)
 ciSubnetId = lens _ciSubnetId (\ s a -> s{_ciSubnetId = a});
 
@@ -178,7 +180,7 @@
 ciEBSOptimized :: Lens' CreateInstance (Maybe Bool)
 ciEBSOptimized = lens _ciEBSOptimized (\ s a -> s{_ciEBSOptimized = a});
 
--- | The instance's operating system, which must be set to one of the following.     * A supported Linux operating system: An Amazon Linux version, such as @Amazon Linux 2016.03@ , @Amazon Linux 2015.09@ , or @Amazon Linux 2015.03@ .     * A supported Ubuntu operating system, such as @Ubuntu 16.04 LTS@ , @Ubuntu 14.04 LTS@ , or @Ubuntu 12.04 LTS@ .     * @CentOS 7@      * @Red Hat Enterprise Linux 7@      * A supported Windows operating system, such as @Microsoft Windows Server 2012 R2 Base@ , @Microsoft Windows Server 2012 R2 with SQL Server Express@ , @Microsoft Windows Server 2012 R2 with SQL Server Standard@ , or @Microsoft Windows Server 2012 R2 with SQL Server Web@ .     * A custom AMI: @Custom@ . For more information on the supported operating systems, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html AWS OpsWorks Operating Systems> . The default option is the current Amazon Linux version. 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. Block device mappings are not supported if the value is @Custom@ . For more information on the supported operating systems, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html Operating Systems> For more information on how to use custom AMIs with AWS OpsWorks, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Using Custom AMIs> .
+-- | The instance's operating system, which must be set to one of the following.     * A supported Linux operating system: An Amazon Linux version, such as @Amazon Linux 2017.03@ , @Amazon Linux 2016.09@ , @Amazon Linux 2016.03@ , @Amazon Linux 2015.09@ , or @Amazon Linux 2015.03@ .     * A supported Ubuntu operating system, such as @Ubuntu 16.04 LTS@ , @Ubuntu 14.04 LTS@ , or @Ubuntu 12.04 LTS@ .     * @CentOS Linux 7@      * @Red Hat Enterprise Linux 7@      * A supported Windows operating system, such as @Microsoft Windows Server 2012 R2 Base@ , @Microsoft Windows Server 2012 R2 with SQL Server Express@ , @Microsoft Windows Server 2012 R2 with SQL Server Standard@ , or @Microsoft Windows Server 2012 R2 with SQL Server Web@ .     * A custom AMI: @Custom@ . For more information on the supported operating systems, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html AWS OpsWorks Stacks Operating Systems> . The default option is the current Amazon Linux version. 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. Block device mappings are not supported if the value is @Custom@ . For more information on the supported operating systems, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html Operating Systems> For more information on how to use custom AMIs with AWS OpsWorks Stacks, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Using Custom AMIs> .
 ciOS :: Lens' CreateInstance (Maybe Text)
 ciOS = lens _ciOS (\ s a -> s{_ciOS = a});
 
@@ -231,9 +233,9 @@
                  CreateInstanceResponse' <$>
                    (x .?> "InstanceId") <*> (pure (fromEnum s)))
 
-instance Hashable CreateInstance
+instance Hashable CreateInstance where
 
-instance NFData CreateInstance
+instance NFData CreateInstance where
 
 instance ToHeaders CreateInstance where
         toHeaders
@@ -281,10 +283,11 @@
 --
 -- /See:/ 'createInstanceResponse' smart constructor.
 data CreateInstanceResponse = CreateInstanceResponse'
-    { _cirsInstanceId     :: !(Maybe Text)
-    , _cirsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _cirsInstanceId     :: !(Maybe Text)
+  , _cirsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateInstanceResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -296,11 +299,10 @@
     :: Int -- ^ 'cirsResponseStatus'
     -> CreateInstanceResponse
 createInstanceResponse pResponseStatus_ =
-    CreateInstanceResponse'
-    { _cirsInstanceId = Nothing
-    , _cirsResponseStatus = pResponseStatus_
-    }
+  CreateInstanceResponse'
+  {_cirsInstanceId = Nothing, _cirsResponseStatus = pResponseStatus_}
 
+
 -- | The instance ID.
 cirsInstanceId :: Lens' CreateInstanceResponse (Maybe Text)
 cirsInstanceId = lens _cirsInstanceId (\ s a -> s{_cirsInstanceId = a});
@@ -309,4 +311,4 @@
 cirsResponseStatus :: Lens' CreateInstanceResponse Int
 cirsResponseStatus = lens _cirsResponseStatus (\ s a -> s{_cirsResponseStatus = a});
 
-instance NFData CreateInstanceResponse
+instance NFData CreateInstanceResponse where
diff --git a/gen/Network/AWS/OpsWorks/CreateLayer.hs b/gen/Network/AWS/OpsWorks/CreateLayer.hs
--- a/gen/Network/AWS/OpsWorks/CreateLayer.hs
+++ b/gen/Network/AWS/OpsWorks/CreateLayer.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.CreateLayer
--- 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)
 --
@@ -32,6 +32,7 @@
     , clCustomInstanceProfileARN
     , clCustomSecurityGroupIds
     , clInstallUpdatesOnBoot
+    , clCloudWatchLogsConfiguration
     , clLifecycleEventConfiguration
     , clCustomRecipes
     , clCustomJSON
@@ -55,34 +56,36 @@
     , clrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'createLayer' smart constructor.
 data CreateLayer = CreateLayer'
-    { _clCustomInstanceProfileARN    :: !(Maybe Text)
-    , _clCustomSecurityGroupIds      :: !(Maybe [Text])
-    , _clInstallUpdatesOnBoot        :: !(Maybe Bool)
-    , _clLifecycleEventConfiguration :: !(Maybe LifecycleEventConfiguration)
-    , _clCustomRecipes               :: !(Maybe Recipes)
-    , _clCustomJSON                  :: !(Maybe Text)
-    , _clVolumeConfigurations        :: !(Maybe [VolumeConfiguration])
-    , _clEnableAutoHealing           :: !(Maybe Bool)
-    , _clPackages                    :: !(Maybe [Text])
-    , _clAttributes                  :: !(Maybe (Map LayerAttributesKeys Text))
-    , _clAutoAssignPublicIPs         :: !(Maybe Bool)
-    , _clUseEBSOptimizedInstances    :: !(Maybe Bool)
-    , _clAutoAssignElasticIPs        :: !(Maybe Bool)
-    , _clStackId                     :: !Text
-    , _clType                        :: !LayerType
-    , _clName                        :: !Text
-    , _clShortname                   :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _clCustomInstanceProfileARN :: !(Maybe Text)
+  , _clCustomSecurityGroupIds :: !(Maybe [Text])
+  , _clInstallUpdatesOnBoot :: !(Maybe Bool)
+  , _clCloudWatchLogsConfiguration :: !(Maybe CloudWatchLogsConfiguration)
+  , _clLifecycleEventConfiguration :: !(Maybe LifecycleEventConfiguration)
+  , _clCustomRecipes :: !(Maybe Recipes)
+  , _clCustomJSON :: !(Maybe Text)
+  , _clVolumeConfigurations :: !(Maybe [VolumeConfiguration])
+  , _clEnableAutoHealing :: !(Maybe Bool)
+  , _clPackages :: !(Maybe [Text])
+  , _clAttributes :: !(Maybe (Map LayerAttributesKeys (Maybe Text)))
+  , _clAutoAssignPublicIPs :: !(Maybe Bool)
+  , _clUseEBSOptimizedInstances :: !(Maybe Bool)
+  , _clAutoAssignElasticIPs :: !(Maybe Bool)
+  , _clStackId :: !Text
+  , _clType :: !LayerType
+  , _clName :: !Text
+  , _clShortname :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateLayer' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -93,6 +96,8 @@
 --
 -- * 'clInstallUpdatesOnBoot' - 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 by manually running @yum@ (Amazon Linux) or @apt-get@ (Ubuntu) on the instances.
 --
+-- * 'clCloudWatchLogsConfiguration' - Specifies CloudWatch Logs configuration options for the layer. For more information, see 'CloudWatchLogsLogStream' .
+--
 -- * 'clLifecycleEventConfiguration' - A @LifeCycleEventConfiguration@ object that you can use to configure the Shutdown event to specify an execution timeout and enable or disable Elastic Load Balancer connection draining.
 --
 -- * 'clCustomRecipes' - A @LayerCustomRecipes@ object that specifies the layer custom recipes.
@@ -119,7 +124,7 @@
 --
 -- * 'clName' - The layer name, which is used by the console.
 --
--- * 'clShortname' - For custom layers only, use this parameter to specify the layer's short name, which is used internally by AWS OpsWorks and by Chef recipes. The short name is also used as the name for the directory where your app files are installed. It can have a maximum of 200 characters, which are limited to the alphanumeric characters, '-', '_', and '.'. The built-in layers' short names are defined by AWS OpsWorks. For more information, see the <http://docs.aws.amazon.com/opsworks/latest/userguide/layers.html Layer Reference> .
+-- * 'clShortname' - For custom layers only, use this parameter to specify the layer's short name, which is used internally by AWS OpsWorks Stacks and by Chef recipes. The short name is also used as the name for the directory where your app files are installed. It can have a maximum of 200 characters, which are limited to the alphanumeric characters, '-', '_', and '.'. The built-in layers' short names are defined by AWS OpsWorks Stacks. For more information, see the <http://docs.aws.amazon.com/opsworks/latest/userguide/layers.html Layer Reference> .
 createLayer
     :: Text -- ^ 'clStackId'
     -> LayerType -- ^ 'clType'
@@ -127,26 +132,28 @@
     -> Text -- ^ 'clShortname'
     -> CreateLayer
 createLayer pStackId_ pType_ pName_ pShortname_ =
-    CreateLayer'
-    { _clCustomInstanceProfileARN = Nothing
-    , _clCustomSecurityGroupIds = Nothing
-    , _clInstallUpdatesOnBoot = Nothing
-    , _clLifecycleEventConfiguration = Nothing
-    , _clCustomRecipes = Nothing
-    , _clCustomJSON = Nothing
-    , _clVolumeConfigurations = Nothing
-    , _clEnableAutoHealing = Nothing
-    , _clPackages = Nothing
-    , _clAttributes = Nothing
-    , _clAutoAssignPublicIPs = Nothing
-    , _clUseEBSOptimizedInstances = Nothing
-    , _clAutoAssignElasticIPs = Nothing
-    , _clStackId = pStackId_
-    , _clType = pType_
-    , _clName = pName_
-    , _clShortname = pShortname_
-    }
+  CreateLayer'
+  { _clCustomInstanceProfileARN = Nothing
+  , _clCustomSecurityGroupIds = Nothing
+  , _clInstallUpdatesOnBoot = Nothing
+  , _clCloudWatchLogsConfiguration = Nothing
+  , _clLifecycleEventConfiguration = Nothing
+  , _clCustomRecipes = Nothing
+  , _clCustomJSON = Nothing
+  , _clVolumeConfigurations = Nothing
+  , _clEnableAutoHealing = Nothing
+  , _clPackages = Nothing
+  , _clAttributes = Nothing
+  , _clAutoAssignPublicIPs = Nothing
+  , _clUseEBSOptimizedInstances = Nothing
+  , _clAutoAssignElasticIPs = Nothing
+  , _clStackId = pStackId_
+  , _clType = pType_
+  , _clName = pName_
+  , _clShortname = pShortname_
+  }
 
+
 -- | The ARN of an IAM profile to be used for the layer's EC2 instances. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers> .
 clCustomInstanceProfileARN :: Lens' CreateLayer (Maybe Text)
 clCustomInstanceProfileARN = lens _clCustomInstanceProfileARN (\ s a -> s{_clCustomInstanceProfileARN = a});
@@ -159,6 +166,10 @@
 clInstallUpdatesOnBoot :: Lens' CreateLayer (Maybe Bool)
 clInstallUpdatesOnBoot = lens _clInstallUpdatesOnBoot (\ s a -> s{_clInstallUpdatesOnBoot = a});
 
+-- | Specifies CloudWatch Logs configuration options for the layer. For more information, see 'CloudWatchLogsLogStream' .
+clCloudWatchLogsConfiguration :: Lens' CreateLayer (Maybe CloudWatchLogsConfiguration)
+clCloudWatchLogsConfiguration = lens _clCloudWatchLogsConfiguration (\ s a -> s{_clCloudWatchLogsConfiguration = a});
+
 -- | A @LifeCycleEventConfiguration@ object that you can use to configure the Shutdown event to specify an execution timeout and enable or disable Elastic Load Balancer connection draining.
 clLifecycleEventConfiguration :: Lens' CreateLayer (Maybe LifecycleEventConfiguration)
 clLifecycleEventConfiguration = lens _clLifecycleEventConfiguration (\ s a -> s{_clLifecycleEventConfiguration = a});
@@ -184,7 +195,7 @@
 clPackages = lens _clPackages (\ s a -> s{_clPackages = a}) . _Default . _Coerce;
 
 -- | One or more user-defined key-value pairs to be added to the stack attributes. To create a cluster layer, set the @EcsClusterArn@ attribute to the cluster's ARN.
-clAttributes :: Lens' CreateLayer (HashMap LayerAttributesKeys Text)
+clAttributes :: Lens' CreateLayer (HashMap LayerAttributesKeys (Maybe Text))
 clAttributes = lens _clAttributes (\ s a -> s{_clAttributes = a}) . _Default . _Map;
 
 -- | For stacks that are running in a VPC, whether to automatically assign a public IP address to the layer's instances. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-basics-edit.html How to Edit a Layer> .
@@ -211,7 +222,7 @@
 clName :: Lens' CreateLayer Text
 clName = lens _clName (\ s a -> s{_clName = a});
 
--- | For custom layers only, use this parameter to specify the layer's short name, which is used internally by AWS OpsWorks and by Chef recipes. The short name is also used as the name for the directory where your app files are installed. It can have a maximum of 200 characters, which are limited to the alphanumeric characters, '-', '_', and '.'. The built-in layers' short names are defined by AWS OpsWorks. For more information, see the <http://docs.aws.amazon.com/opsworks/latest/userguide/layers.html Layer Reference> .
+-- | For custom layers only, use this parameter to specify the layer's short name, which is used internally by AWS OpsWorks Stacks and by Chef recipes. The short name is also used as the name for the directory where your app files are installed. It can have a maximum of 200 characters, which are limited to the alphanumeric characters, '-', '_', and '.'. The built-in layers' short names are defined by AWS OpsWorks Stacks. For more information, see the <http://docs.aws.amazon.com/opsworks/latest/userguide/layers.html Layer Reference> .
 clShortname :: Lens' CreateLayer Text
 clShortname = lens _clShortname (\ s a -> s{_clShortname = a});
 
@@ -224,9 +235,9 @@
                  CreateLayerResponse' <$>
                    (x .?> "LayerId") <*> (pure (fromEnum s)))
 
-instance Hashable CreateLayer
+instance Hashable CreateLayer where
 
-instance NFData CreateLayer
+instance NFData CreateLayer where
 
 instance ToHeaders CreateLayer where
         toHeaders
@@ -247,6 +258,8 @@
                     _clCustomSecurityGroupIds,
                   ("InstallUpdatesOnBoot" .=) <$>
                     _clInstallUpdatesOnBoot,
+                  ("CloudWatchLogsConfiguration" .=) <$>
+                    _clCloudWatchLogsConfiguration,
                   ("LifecycleEventConfiguration" .=) <$>
                     _clLifecycleEventConfiguration,
                   ("CustomRecipes" .=) <$> _clCustomRecipes,
@@ -278,10 +291,11 @@
 --
 -- /See:/ 'createLayerResponse' smart constructor.
 data CreateLayerResponse = CreateLayerResponse'
-    { _clrsLayerId        :: !(Maybe Text)
-    , _clrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _clrsLayerId        :: !(Maybe Text)
+  , _clrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateLayerResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -293,11 +307,10 @@
     :: Int -- ^ 'clrsResponseStatus'
     -> CreateLayerResponse
 createLayerResponse pResponseStatus_ =
-    CreateLayerResponse'
-    { _clrsLayerId = Nothing
-    , _clrsResponseStatus = pResponseStatus_
-    }
+  CreateLayerResponse'
+  {_clrsLayerId = Nothing, _clrsResponseStatus = pResponseStatus_}
 
+
 -- | The layer ID.
 clrsLayerId :: Lens' CreateLayerResponse (Maybe Text)
 clrsLayerId = lens _clrsLayerId (\ s a -> s{_clrsLayerId = a});
@@ -306,4 +319,4 @@
 clrsResponseStatus :: Lens' CreateLayerResponse Int
 clrsResponseStatus = lens _clrsResponseStatus (\ s a -> s{_clrsResponseStatus = a});
 
-instance NFData CreateLayerResponse
+instance NFData CreateLayerResponse where
diff --git a/gen/Network/AWS/OpsWorks/CreateStack.hs b/gen/Network/AWS/OpsWorks/CreateStack.hs
--- a/gen/Network/AWS/OpsWorks/CreateStack.hs
+++ b/gen/Network/AWS/OpsWorks/CreateStack.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.CreateStack
--- 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)
 --
@@ -57,47 +57,48 @@
     , crsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'createStack' smart constructor.
 data CreateStack = CreateStack'
-    { _csDefaultRootDeviceType     :: !(Maybe RootDeviceType)
-    , _csVPCId                     :: !(Maybe Text)
-    , _csChefConfiguration         :: !(Maybe ChefConfiguration)
-    , _csAgentVersion              :: !(Maybe Text)
-    , _csDefaultSSHKeyName         :: !(Maybe Text)
-    , _csCustomJSON                :: !(Maybe Text)
-    , _csCustomCookbooksSource     :: !(Maybe Source)
-    , _csDefaultAvailabilityZone   :: !(Maybe Text)
-    , _csAttributes                :: !(Maybe (Map StackAttributesKeys Text))
-    , _csDefaultOS                 :: !(Maybe Text)
-    , _csUseOpsworksSecurityGroups :: !(Maybe Bool)
-    , _csUseCustomCookbooks        :: !(Maybe Bool)
-    , _csDefaultSubnetId           :: !(Maybe Text)
-    , _csConfigurationManager      :: !(Maybe StackConfigurationManager)
-    , _csHostnameTheme             :: !(Maybe Text)
-    , _csName                      :: !Text
-    , _csRegion                    :: !Text
-    , _csServiceRoleARN            :: !Text
-    , _csDefaultInstanceProfileARN :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _csDefaultRootDeviceType     :: !(Maybe RootDeviceType)
+  , _csVPCId                     :: !(Maybe Text)
+  , _csChefConfiguration         :: !(Maybe ChefConfiguration)
+  , _csAgentVersion              :: !(Maybe Text)
+  , _csDefaultSSHKeyName         :: !(Maybe Text)
+  , _csCustomJSON                :: !(Maybe Text)
+  , _csCustomCookbooksSource     :: !(Maybe Source)
+  , _csDefaultAvailabilityZone   :: !(Maybe Text)
+  , _csAttributes                :: !(Maybe (Map StackAttributesKeys Text))
+  , _csDefaultOS                 :: !(Maybe Text)
+  , _csUseOpsworksSecurityGroups :: !(Maybe Bool)
+  , _csUseCustomCookbooks        :: !(Maybe Bool)
+  , _csDefaultSubnetId           :: !(Maybe Text)
+  , _csConfigurationManager      :: !(Maybe StackConfigurationManager)
+  , _csHostnameTheme             :: !(Maybe Text)
+  , _csName                      :: !Text
+  , _csRegion                    :: !Text
+  , _csServiceRoleARN            :: !Text
+  , _csDefaultInstanceProfileARN :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateStack' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'csDefaultRootDeviceType' - The default root device type. This value is the default for all instances in the stack, but you can override it when you create an instance. The default option is @instance-store@ . For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device Storage for the Root Device> .
 --
--- * 'csVPCId' - The ID of the VPC that the stack is to be launched into. The VPC must be in the stack's region. All instances are launched into this VPC. You cannot change the ID later.     * If your account supports EC2-Classic, the default value is @no VPC@ .     * If your account does not support EC2-Classic, the default value is the default VPC for the specified region. If the VPC ID corresponds to a default VPC and you have specified either the @DefaultAvailabilityZone@ or the @DefaultSubnetId@ parameter only, AWS OpsWorks infers the value of the other parameter. If you specify neither parameter, AWS OpsWorks sets these parameters to the first valid Availability Zone for the specified region and the corresponding default VPC subnet ID, respectively. If you specify a nondefault VPC ID, note the following:     * It must belong to a VPC in your account that is in the specified region.     * You must specify a value for @DefaultSubnetId@ . For more information on how to use AWS OpsWorks with a VPC, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-vpc.html Running a Stack in a VPC> . For more information on default VPC and EC2-Classic, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html Supported Platforms> .
+-- * 'csVPCId' - The ID of the VPC that the stack is to be launched into. The VPC must be in the stack's region. All instances are launched into this VPC. You cannot change the ID later.     * If your account supports EC2-Classic, the default value is @no VPC@ .     * If your account does not support EC2-Classic, the default value is the default VPC for the specified region. If the VPC ID corresponds to a default VPC and you have specified either the @DefaultAvailabilityZone@ or the @DefaultSubnetId@ parameter only, AWS OpsWorks Stacks infers the value of the other parameter. If you specify neither parameter, AWS OpsWorks Stacks sets these parameters to the first valid Availability Zone for the specified region and the corresponding default VPC subnet ID, respectively. If you specify a nondefault VPC ID, note the following:     * It must belong to a VPC in your account that is in the specified region.     * You must specify a value for @DefaultSubnetId@ . For more information on how to use AWS OpsWorks Stacks with a VPC, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-vpc.html Running a Stack in a VPC> . For more information on default VPC and EC2-Classic, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html Supported Platforms> .
 --
 -- * 'csChefConfiguration' - A @ChefConfiguration@ object that specifies whether to enable Berkshelf and the Berkshelf version on Chef 11.10 stacks. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a New Stack> .
 --
--- * 'csAgentVersion' - The default AWS OpsWorks agent version. You have the following options:     * Auto-update - Set this parameter to @LATEST@ . AWS OpsWorks automatically installs new agent versions on the stack's instances as soon as they are available.     * Fixed version - Set this parameter to your preferred agent version. To update the agent version, you must edit the stack configuration and specify a new version. AWS OpsWorks then automatically installs that version on the stack's instances. The default setting is the most recent release of the agent. To specify an agent version, you must use the complete version number, not the abbreviated number shown on the console. For a list of available agent version numbers, call 'DescribeAgentVersions' .
+-- * 'csAgentVersion' - The default AWS OpsWorks Stacks agent version. You have the following options:     * Auto-update - Set this parameter to @LATEST@ . AWS OpsWorks Stacks automatically installs new agent versions on the stack's instances as soon as they are available.     * Fixed version - Set this parameter to your preferred agent version. To update the agent version, you must edit the stack configuration and specify a new version. AWS OpsWorks Stacks then automatically installs that version on the stack's instances. The default setting is the most recent release of the agent. To specify an agent version, you must use the complete version number, not the abbreviated number shown on the console. For a list of available agent version numbers, call 'DescribeAgentVersions' . AgentVersion cannot be set to Chef 12.2.
 --
 -- * 'csDefaultSSHKeyName' - A default Amazon EC2 key pair name. The default value is none. If you specify a key pair name, AWS OpsWorks installs the public key on the instance and you can use the private key with an SSH client to log in to the instance. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-ssh.html Using SSH to Communicate with an Instance> and <http://docs.aws.amazon.com/opsworks/latest/userguide/security-ssh-access.html Managing SSH Access> . You can override this setting by specifying a different key pair, or no key pair, when you <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-add.html create an instance> .
 --
@@ -109,9 +110,9 @@
 --
 -- * 'csAttributes' - One or more user-defined key-value pairs to be added to the stack attributes.
 --
--- * 'csDefaultOS' - The stack's default operating system, which is installed on every instance unless you specify a different operating system when you create the instance. You can specify one of the following.     * A supported Linux operating system: An Amazon Linux version, such as @Amazon Linux 2016.03@ , @Amazon Linux 2015.09@ , or @Amazon Linux 2015.03@ .     * A supported Ubuntu operating system, such as @Ubuntu 16.04 LTS@ , @Ubuntu 14.04 LTS@ , or @Ubuntu 12.04 LTS@ .     * @CentOS 7@      * @Red Hat Enterprise Linux 7@      * A supported Windows operating system, such as @Microsoft Windows Server 2012 R2 Base@ , @Microsoft Windows Server 2012 R2 with SQL Server Express@ , @Microsoft Windows Server 2012 R2 with SQL Server Standard@ , or @Microsoft Windows Server 2012 R2 with SQL Server Web@ .     * A custom AMI: @Custom@ . You specify the custom AMI you want to use when you create instances. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Using Custom AMIs> . The default option is the current Amazon Linux version. For more information on the supported operating systems, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html AWS OpsWorks Operating Systems> .
+-- * 'csDefaultOS' - The stack's default operating system, which is installed on every instance unless you specify a different operating system when you create the instance. You can specify one of the following.     * A supported Linux operating system: An Amazon Linux version, such as @Amazon Linux 2017.03@ , @Amazon Linux 2016.09@ , @Amazon Linux 2016.03@ , @Amazon Linux 2015.09@ , or @Amazon Linux 2015.03@ .     * A supported Ubuntu operating system, such as @Ubuntu 16.04 LTS@ , @Ubuntu 14.04 LTS@ , or @Ubuntu 12.04 LTS@ .     * @CentOS Linux 7@      * @Red Hat Enterprise Linux 7@      * A supported Windows operating system, such as @Microsoft Windows Server 2012 R2 Base@ , @Microsoft Windows Server 2012 R2 with SQL Server Express@ , @Microsoft Windows Server 2012 R2 with SQL Server Standard@ , or @Microsoft Windows Server 2012 R2 with SQL Server Web@ .     * A custom AMI: @Custom@ . You specify the custom AMI you want to use when you create instances. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Using Custom AMIs> . The default option is the current Amazon Linux version. For more information on the supported operating systems, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html AWS OpsWorks Stacks Operating Systems> .
 --
--- * 'csUseOpsworksSecurityGroups' - Whether to associate the AWS OpsWorks built-in security groups with the stack's layers. AWS OpsWorks provides a standard set of built-in security groups, one for each layer, which are associated with layers by default. With @UseOpsworksSecurityGroups@ you can instead provide your own custom security groups. @UseOpsworksSecurityGroups@ has the following settings:      * True - AWS OpsWorks automatically associates the appropriate built-in security group with each layer (default setting). You can associate additional security groups with a layer after you create it, but you cannot delete the built-in security group.     * False - AWS OpsWorks does not associate built-in security groups with layers. You must create appropriate EC2 security groups and associate a security group with each layer that you create. However, you can still manually associate a built-in security group with a layer on creation; custom security groups are required only for those layers that need custom settings. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a New Stack> .
+-- * 'csUseOpsworksSecurityGroups' - Whether to associate the AWS OpsWorks Stacks built-in security groups with the stack's layers. AWS OpsWorks Stacks provides a standard set of built-in security groups, one for each layer, which are associated with layers by default. With @UseOpsworksSecurityGroups@ you can instead provide your own custom security groups. @UseOpsworksSecurityGroups@ has the following settings:      * True - AWS OpsWorks Stacks automatically associates the appropriate built-in security group with each layer (default setting). You can associate additional security groups with a layer after you create it, but you cannot delete the built-in security group.     * False - AWS OpsWorks Stacks does not associate built-in security groups with layers. You must create appropriate EC2 security groups and associate a security group with each layer that you create. However, you can still manually associate a built-in security group with a layer on creation; custom security groups are required only for those layers that need custom settings. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a New Stack> .
 --
 -- * 'csUseCustomCookbooks' - Whether the stack uses custom cookbooks.
 --
@@ -125,7 +126,7 @@
 --
 -- * 'csRegion' - The stack's AWS region, such as "ap-south-1". For more information about Amazon regions, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints> .
 --
--- * 'csServiceRoleARN' - The stack's AWS Identity and Access Management (IAM) role, which allows AWS OpsWorks to work with AWS resources on your behalf. You must set this parameter to the Amazon Resource Name (ARN) for an existing IAM role. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers> .
+-- * 'csServiceRoleARN' - The stack's AWS Identity and Access Management (IAM) role, which allows AWS OpsWorks Stacks to work with AWS resources on your behalf. You must set this parameter to the Amazon Resource Name (ARN) for an existing IAM role. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers> .
 --
 -- * 'csDefaultInstanceProfileARN' - The Amazon Resource Name (ARN) of an IAM profile that is the default profile for all of the stack's EC2 instances. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers> .
 createStack
@@ -135,33 +136,34 @@
     -> Text -- ^ 'csDefaultInstanceProfileARN'
     -> CreateStack
 createStack pName_ pRegion_ pServiceRoleARN_ pDefaultInstanceProfileARN_ =
-    CreateStack'
-    { _csDefaultRootDeviceType = Nothing
-    , _csVPCId = Nothing
-    , _csChefConfiguration = Nothing
-    , _csAgentVersion = Nothing
-    , _csDefaultSSHKeyName = Nothing
-    , _csCustomJSON = Nothing
-    , _csCustomCookbooksSource = Nothing
-    , _csDefaultAvailabilityZone = Nothing
-    , _csAttributes = Nothing
-    , _csDefaultOS = Nothing
-    , _csUseOpsworksSecurityGroups = Nothing
-    , _csUseCustomCookbooks = Nothing
-    , _csDefaultSubnetId = Nothing
-    , _csConfigurationManager = Nothing
-    , _csHostnameTheme = Nothing
-    , _csName = pName_
-    , _csRegion = pRegion_
-    , _csServiceRoleARN = pServiceRoleARN_
-    , _csDefaultInstanceProfileARN = pDefaultInstanceProfileARN_
-    }
+  CreateStack'
+  { _csDefaultRootDeviceType = Nothing
+  , _csVPCId = Nothing
+  , _csChefConfiguration = Nothing
+  , _csAgentVersion = Nothing
+  , _csDefaultSSHKeyName = Nothing
+  , _csCustomJSON = Nothing
+  , _csCustomCookbooksSource = Nothing
+  , _csDefaultAvailabilityZone = Nothing
+  , _csAttributes = Nothing
+  , _csDefaultOS = Nothing
+  , _csUseOpsworksSecurityGroups = Nothing
+  , _csUseCustomCookbooks = Nothing
+  , _csDefaultSubnetId = Nothing
+  , _csConfigurationManager = Nothing
+  , _csHostnameTheme = Nothing
+  , _csName = pName_
+  , _csRegion = pRegion_
+  , _csServiceRoleARN = pServiceRoleARN_
+  , _csDefaultInstanceProfileARN = pDefaultInstanceProfileARN_
+  }
 
+
 -- | The default root device type. This value is the default for all instances in the stack, but you can override it when you create an instance. The default option is @instance-store@ . For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device Storage for the Root Device> .
 csDefaultRootDeviceType :: Lens' CreateStack (Maybe RootDeviceType)
 csDefaultRootDeviceType = lens _csDefaultRootDeviceType (\ s a -> s{_csDefaultRootDeviceType = a});
 
--- | The ID of the VPC that the stack is to be launched into. The VPC must be in the stack's region. All instances are launched into this VPC. You cannot change the ID later.     * If your account supports EC2-Classic, the default value is @no VPC@ .     * If your account does not support EC2-Classic, the default value is the default VPC for the specified region. If the VPC ID corresponds to a default VPC and you have specified either the @DefaultAvailabilityZone@ or the @DefaultSubnetId@ parameter only, AWS OpsWorks infers the value of the other parameter. If you specify neither parameter, AWS OpsWorks sets these parameters to the first valid Availability Zone for the specified region and the corresponding default VPC subnet ID, respectively. If you specify a nondefault VPC ID, note the following:     * It must belong to a VPC in your account that is in the specified region.     * You must specify a value for @DefaultSubnetId@ . For more information on how to use AWS OpsWorks with a VPC, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-vpc.html Running a Stack in a VPC> . For more information on default VPC and EC2-Classic, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html Supported Platforms> .
+-- | The ID of the VPC that the stack is to be launched into. The VPC must be in the stack's region. All instances are launched into this VPC. You cannot change the ID later.     * If your account supports EC2-Classic, the default value is @no VPC@ .     * If your account does not support EC2-Classic, the default value is the default VPC for the specified region. If the VPC ID corresponds to a default VPC and you have specified either the @DefaultAvailabilityZone@ or the @DefaultSubnetId@ parameter only, AWS OpsWorks Stacks infers the value of the other parameter. If you specify neither parameter, AWS OpsWorks Stacks sets these parameters to the first valid Availability Zone for the specified region and the corresponding default VPC subnet ID, respectively. If you specify a nondefault VPC ID, note the following:     * It must belong to a VPC in your account that is in the specified region.     * You must specify a value for @DefaultSubnetId@ . For more information on how to use AWS OpsWorks Stacks with a VPC, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-vpc.html Running a Stack in a VPC> . For more information on default VPC and EC2-Classic, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html Supported Platforms> .
 csVPCId :: Lens' CreateStack (Maybe Text)
 csVPCId = lens _csVPCId (\ s a -> s{_csVPCId = a});
 
@@ -169,7 +171,7 @@
 csChefConfiguration :: Lens' CreateStack (Maybe ChefConfiguration)
 csChefConfiguration = lens _csChefConfiguration (\ s a -> s{_csChefConfiguration = a});
 
--- | The default AWS OpsWorks agent version. You have the following options:     * Auto-update - Set this parameter to @LATEST@ . AWS OpsWorks automatically installs new agent versions on the stack's instances as soon as they are available.     * Fixed version - Set this parameter to your preferred agent version. To update the agent version, you must edit the stack configuration and specify a new version. AWS OpsWorks then automatically installs that version on the stack's instances. The default setting is the most recent release of the agent. To specify an agent version, you must use the complete version number, not the abbreviated number shown on the console. For a list of available agent version numbers, call 'DescribeAgentVersions' .
+-- | The default AWS OpsWorks Stacks agent version. You have the following options:     * Auto-update - Set this parameter to @LATEST@ . AWS OpsWorks Stacks automatically installs new agent versions on the stack's instances as soon as they are available.     * Fixed version - Set this parameter to your preferred agent version. To update the agent version, you must edit the stack configuration and specify a new version. AWS OpsWorks Stacks then automatically installs that version on the stack's instances. The default setting is the most recent release of the agent. To specify an agent version, you must use the complete version number, not the abbreviated number shown on the console. For a list of available agent version numbers, call 'DescribeAgentVersions' . AgentVersion cannot be set to Chef 12.2.
 csAgentVersion :: Lens' CreateStack (Maybe Text)
 csAgentVersion = lens _csAgentVersion (\ s a -> s{_csAgentVersion = a});
 
@@ -193,11 +195,11 @@
 csAttributes :: Lens' CreateStack (HashMap StackAttributesKeys Text)
 csAttributes = lens _csAttributes (\ s a -> s{_csAttributes = a}) . _Default . _Map;
 
--- | The stack's default operating system, which is installed on every instance unless you specify a different operating system when you create the instance. You can specify one of the following.     * A supported Linux operating system: An Amazon Linux version, such as @Amazon Linux 2016.03@ , @Amazon Linux 2015.09@ , or @Amazon Linux 2015.03@ .     * A supported Ubuntu operating system, such as @Ubuntu 16.04 LTS@ , @Ubuntu 14.04 LTS@ , or @Ubuntu 12.04 LTS@ .     * @CentOS 7@      * @Red Hat Enterprise Linux 7@      * A supported Windows operating system, such as @Microsoft Windows Server 2012 R2 Base@ , @Microsoft Windows Server 2012 R2 with SQL Server Express@ , @Microsoft Windows Server 2012 R2 with SQL Server Standard@ , or @Microsoft Windows Server 2012 R2 with SQL Server Web@ .     * A custom AMI: @Custom@ . You specify the custom AMI you want to use when you create instances. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Using Custom AMIs> . The default option is the current Amazon Linux version. For more information on the supported operating systems, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html AWS OpsWorks Operating Systems> .
+-- | The stack's default operating system, which is installed on every instance unless you specify a different operating system when you create the instance. You can specify one of the following.     * A supported Linux operating system: An Amazon Linux version, such as @Amazon Linux 2017.03@ , @Amazon Linux 2016.09@ , @Amazon Linux 2016.03@ , @Amazon Linux 2015.09@ , or @Amazon Linux 2015.03@ .     * A supported Ubuntu operating system, such as @Ubuntu 16.04 LTS@ , @Ubuntu 14.04 LTS@ , or @Ubuntu 12.04 LTS@ .     * @CentOS Linux 7@      * @Red Hat Enterprise Linux 7@      * A supported Windows operating system, such as @Microsoft Windows Server 2012 R2 Base@ , @Microsoft Windows Server 2012 R2 with SQL Server Express@ , @Microsoft Windows Server 2012 R2 with SQL Server Standard@ , or @Microsoft Windows Server 2012 R2 with SQL Server Web@ .     * A custom AMI: @Custom@ . You specify the custom AMI you want to use when you create instances. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Using Custom AMIs> . The default option is the current Amazon Linux version. For more information on the supported operating systems, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html AWS OpsWorks Stacks Operating Systems> .
 csDefaultOS :: Lens' CreateStack (Maybe Text)
 csDefaultOS = lens _csDefaultOS (\ s a -> s{_csDefaultOS = a});
 
--- | Whether to associate the AWS OpsWorks built-in security groups with the stack's layers. AWS OpsWorks provides a standard set of built-in security groups, one for each layer, which are associated with layers by default. With @UseOpsworksSecurityGroups@ you can instead provide your own custom security groups. @UseOpsworksSecurityGroups@ has the following settings:      * True - AWS OpsWorks automatically associates the appropriate built-in security group with each layer (default setting). You can associate additional security groups with a layer after you create it, but you cannot delete the built-in security group.     * False - AWS OpsWorks does not associate built-in security groups with layers. You must create appropriate EC2 security groups and associate a security group with each layer that you create. However, you can still manually associate a built-in security group with a layer on creation; custom security groups are required only for those layers that need custom settings. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a New Stack> .
+-- | Whether to associate the AWS OpsWorks Stacks built-in security groups with the stack's layers. AWS OpsWorks Stacks provides a standard set of built-in security groups, one for each layer, which are associated with layers by default. With @UseOpsworksSecurityGroups@ you can instead provide your own custom security groups. @UseOpsworksSecurityGroups@ has the following settings:      * True - AWS OpsWorks Stacks automatically associates the appropriate built-in security group with each layer (default setting). You can associate additional security groups with a layer after you create it, but you cannot delete the built-in security group.     * False - AWS OpsWorks Stacks does not associate built-in security groups with layers. You must create appropriate EC2 security groups and associate a security group with each layer that you create. However, you can still manually associate a built-in security group with a layer on creation; custom security groups are required only for those layers that need custom settings. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a New Stack> .
 csUseOpsworksSecurityGroups :: Lens' CreateStack (Maybe Bool)
 csUseOpsworksSecurityGroups = lens _csUseOpsworksSecurityGroups (\ s a -> s{_csUseOpsworksSecurityGroups = a});
 
@@ -225,7 +227,7 @@
 csRegion :: Lens' CreateStack Text
 csRegion = lens _csRegion (\ s a -> s{_csRegion = a});
 
--- | The stack's AWS Identity and Access Management (IAM) role, which allows AWS OpsWorks to work with AWS resources on your behalf. You must set this parameter to the Amazon Resource Name (ARN) for an existing IAM role. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers> .
+-- | The stack's AWS Identity and Access Management (IAM) role, which allows AWS OpsWorks Stacks to work with AWS resources on your behalf. You must set this parameter to the Amazon Resource Name (ARN) for an existing IAM role. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers> .
 csServiceRoleARN :: Lens' CreateStack Text
 csServiceRoleARN = lens _csServiceRoleARN (\ s a -> s{_csServiceRoleARN = a});
 
@@ -242,9 +244,9 @@
                  CreateStackResponse' <$>
                    (x .?> "StackId") <*> (pure (fromEnum s)))
 
-instance Hashable CreateStack
+instance Hashable CreateStack where
 
-instance NFData CreateStack
+instance NFData CreateStack where
 
 instance ToHeaders CreateStack where
         toHeaders
@@ -298,10 +300,11 @@
 --
 -- /See:/ 'createStackResponse' smart constructor.
 data CreateStackResponse = CreateStackResponse'
-    { _crsStackId        :: !(Maybe Text)
-    , _crsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _crsStackId        :: !(Maybe Text)
+  , _crsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateStackResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -313,11 +316,10 @@
     :: Int -- ^ 'crsResponseStatus'
     -> CreateStackResponse
 createStackResponse pResponseStatus_ =
-    CreateStackResponse'
-    { _crsStackId = Nothing
-    , _crsResponseStatus = pResponseStatus_
-    }
+  CreateStackResponse'
+  {_crsStackId = Nothing, _crsResponseStatus = pResponseStatus_}
 
+
 -- | The stack ID, which is an opaque string that you use to identify the stack when performing actions such as @DescribeStacks@ .
 crsStackId :: Lens' CreateStackResponse (Maybe Text)
 crsStackId = lens _crsStackId (\ s a -> s{_crsStackId = a});
@@ -326,4 +328,4 @@
 crsResponseStatus :: Lens' CreateStackResponse Int
 crsResponseStatus = lens _crsResponseStatus (\ s a -> s{_crsResponseStatus = a});
 
-instance NFData CreateStackResponse
+instance NFData CreateStackResponse where
diff --git a/gen/Network/AWS/OpsWorks/CreateUserProfile.hs b/gen/Network/AWS/OpsWorks/CreateUserProfile.hs
--- a/gen/Network/AWS/OpsWorks/CreateUserProfile.hs
+++ b/gen/Network/AWS/OpsWorks/CreateUserProfile.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.CreateUserProfile
--- 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)
 --
@@ -42,21 +42,22 @@
     , cuprsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'createUserProfile' smart constructor.
 data CreateUserProfile = CreateUserProfile'
-    { _cupAllowSelfManagement :: !(Maybe Bool)
-    , _cupSSHPublicKey        :: !(Maybe Text)
-    , _cupSSHUsername         :: !(Maybe Text)
-    , _cupIAMUserARN          :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _cupAllowSelfManagement :: !(Maybe Bool)
+  , _cupSSHPublicKey        :: !(Maybe Text)
+  , _cupSSHUsername         :: !(Maybe Text)
+  , _cupIAMUserARN          :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateUserProfile' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -65,20 +66,21 @@
 --
 -- * 'cupSSHPublicKey' - The user's public SSH key.
 --
--- * 'cupSSHUsername' - The user's SSH user name. The allowable characters are [a-z], [A-Z], [0-9], '-', and '_'. If the specified name includes other punctuation marks, AWS OpsWorks removes them. For example, @my.name@ will be changed to @myname@ . If you do not specify an SSH user name, AWS OpsWorks generates one from the IAM user name.
+-- * 'cupSSHUsername' - The user's SSH user name. The allowable characters are [a-z], [A-Z], [0-9], '-', and '_'. If the specified name includes other punctuation marks, AWS OpsWorks Stacks removes them. For example, @my.name@ will be changed to @myname@ . If you do not specify an SSH user name, AWS OpsWorks Stacks generates one from the IAM user name.
 --
 -- * 'cupIAMUserARN' - The user's IAM ARN; this can also be a federated user's ARN.
 createUserProfile
     :: Text -- ^ 'cupIAMUserARN'
     -> CreateUserProfile
 createUserProfile pIAMUserARN_ =
-    CreateUserProfile'
-    { _cupAllowSelfManagement = Nothing
-    , _cupSSHPublicKey = Nothing
-    , _cupSSHUsername = Nothing
-    , _cupIAMUserARN = pIAMUserARN_
-    }
+  CreateUserProfile'
+  { _cupAllowSelfManagement = Nothing
+  , _cupSSHPublicKey = Nothing
+  , _cupSSHUsername = Nothing
+  , _cupIAMUserARN = pIAMUserARN_
+  }
 
+
 -- | Whether users can specify their own SSH public key through the My Settings page. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/security-settingsshkey.html Setting an IAM User's Public SSH Key> .
 cupAllowSelfManagement :: Lens' CreateUserProfile (Maybe Bool)
 cupAllowSelfManagement = lens _cupAllowSelfManagement (\ s a -> s{_cupAllowSelfManagement = a});
@@ -87,7 +89,7 @@
 cupSSHPublicKey :: Lens' CreateUserProfile (Maybe Text)
 cupSSHPublicKey = lens _cupSSHPublicKey (\ s a -> s{_cupSSHPublicKey = a});
 
--- | The user's SSH user name. The allowable characters are [a-z], [A-Z], [0-9], '-', and '_'. If the specified name includes other punctuation marks, AWS OpsWorks removes them. For example, @my.name@ will be changed to @myname@ . If you do not specify an SSH user name, AWS OpsWorks generates one from the IAM user name.
+-- | The user's SSH user name. The allowable characters are [a-z], [A-Z], [0-9], '-', and '_'. If the specified name includes other punctuation marks, AWS OpsWorks Stacks removes them. For example, @my.name@ will be changed to @myname@ . If you do not specify an SSH user name, AWS OpsWorks Stacks generates one from the IAM user name.
 cupSSHUsername :: Lens' CreateUserProfile (Maybe Text)
 cupSSHUsername = lens _cupSSHUsername (\ s a -> s{_cupSSHUsername = a});
 
@@ -104,9 +106,9 @@
                  CreateUserProfileResponse' <$>
                    (x .?> "IamUserArn") <*> (pure (fromEnum s)))
 
-instance Hashable CreateUserProfile
+instance Hashable CreateUserProfile where
 
-instance NFData CreateUserProfile
+instance NFData CreateUserProfile where
 
 instance ToHeaders CreateUserProfile where
         toHeaders
@@ -140,10 +142,11 @@
 --
 -- /See:/ 'createUserProfileResponse' smart constructor.
 data CreateUserProfileResponse = CreateUserProfileResponse'
-    { _cuprsIAMUserARN     :: !(Maybe Text)
-    , _cuprsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _cuprsIAMUserARN     :: !(Maybe Text)
+  , _cuprsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateUserProfileResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -155,11 +158,10 @@
     :: Int -- ^ 'cuprsResponseStatus'
     -> CreateUserProfileResponse
 createUserProfileResponse pResponseStatus_ =
-    CreateUserProfileResponse'
-    { _cuprsIAMUserARN = Nothing
-    , _cuprsResponseStatus = pResponseStatus_
-    }
+  CreateUserProfileResponse'
+  {_cuprsIAMUserARN = Nothing, _cuprsResponseStatus = pResponseStatus_}
 
+
 -- | The user's IAM ARN.
 cuprsIAMUserARN :: Lens' CreateUserProfileResponse (Maybe Text)
 cuprsIAMUserARN = lens _cuprsIAMUserARN (\ s a -> s{_cuprsIAMUserARN = a});
@@ -168,4 +170,4 @@
 cuprsResponseStatus :: Lens' CreateUserProfileResponse Int
 cuprsResponseStatus = lens _cuprsResponseStatus (\ s a -> s{_cuprsResponseStatus = a});
 
-instance NFData CreateUserProfileResponse
+instance NFData CreateUserProfileResponse where
diff --git a/gen/Network/AWS/OpsWorks/DeleteApp.hs b/gen/Network/AWS/OpsWorks/DeleteApp.hs
--- a/gen/Network/AWS/OpsWorks/DeleteApp.hs
+++ b/gen/Network/AWS/OpsWorks/DeleteApp.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DeleteApp
--- 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 @@
     , DeleteAppResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'deleteApp' smart constructor.
 newtype DeleteApp = DeleteApp'
-    { _daAppId :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _daAppId :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteApp' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -56,11 +57,9 @@
 deleteApp
     :: Text -- ^ 'daAppId'
     -> DeleteApp
-deleteApp pAppId_ =
-    DeleteApp'
-    { _daAppId = pAppId_
-    }
+deleteApp pAppId_ = DeleteApp' {_daAppId = pAppId_}
 
+
 -- | The app ID.
 daAppId :: Lens' DeleteApp Text
 daAppId = lens _daAppId (\ s a -> s{_daAppId = a});
@@ -70,9 +69,9 @@
         request = postJSON opsWorks
         response = receiveNull DeleteAppResponse'
 
-instance Hashable DeleteApp
+instance Hashable DeleteApp where
 
-instance NFData DeleteApp
+instance NFData DeleteApp where
 
 instance ToHeaders DeleteApp where
         toHeaders
@@ -95,13 +94,15 @@
 
 -- | /See:/ 'deleteAppResponse' smart constructor.
 data DeleteAppResponse =
-    DeleteAppResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DeleteAppResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteAppResponse' with the minimum fields required to make a request.
 --
 deleteAppResponse
     :: DeleteAppResponse
 deleteAppResponse = DeleteAppResponse'
 
-instance NFData DeleteAppResponse
+
+instance NFData DeleteAppResponse where
diff --git a/gen/Network/AWS/OpsWorks/DeleteInstance.hs b/gen/Network/AWS/OpsWorks/DeleteInstance.hs
--- a/gen/Network/AWS/OpsWorks/DeleteInstance.hs
+++ b/gen/Network/AWS/OpsWorks/DeleteInstance.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DeleteInstance
--- 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)
 --
@@ -40,20 +40,21 @@
     , DeleteInstanceResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'deleteInstance' smart constructor.
 data DeleteInstance = DeleteInstance'
-    { _diDeleteVolumes   :: !(Maybe Bool)
-    , _diDeleteElasticIP :: !(Maybe Bool)
-    , _diInstanceId      :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _diDeleteVolumes   :: !(Maybe Bool)
+  , _diDeleteElasticIP :: !(Maybe Bool)
+  , _diInstanceId      :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteInstance' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -67,12 +68,13 @@
     :: Text -- ^ 'diInstanceId'
     -> DeleteInstance
 deleteInstance pInstanceId_ =
-    DeleteInstance'
-    { _diDeleteVolumes = Nothing
-    , _diDeleteElasticIP = Nothing
-    , _diInstanceId = pInstanceId_
-    }
+  DeleteInstance'
+  { _diDeleteVolumes = Nothing
+  , _diDeleteElasticIP = Nothing
+  , _diInstanceId = pInstanceId_
+  }
 
+
 -- | Whether to delete the instance's Amazon EBS volumes.
 diDeleteVolumes :: Lens' DeleteInstance (Maybe Bool)
 diDeleteVolumes = lens _diDeleteVolumes (\ s a -> s{_diDeleteVolumes = a});
@@ -90,9 +92,9 @@
         request = postJSON opsWorks
         response = receiveNull DeleteInstanceResponse'
 
-instance Hashable DeleteInstance
+instance Hashable DeleteInstance where
 
-instance NFData DeleteInstance
+instance NFData DeleteInstance where
 
 instance ToHeaders DeleteInstance where
         toHeaders
@@ -119,13 +121,15 @@
 
 -- | /See:/ 'deleteInstanceResponse' smart constructor.
 data DeleteInstanceResponse =
-    DeleteInstanceResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DeleteInstanceResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteInstanceResponse' with the minimum fields required to make a request.
 --
 deleteInstanceResponse
     :: DeleteInstanceResponse
 deleteInstanceResponse = DeleteInstanceResponse'
 
-instance NFData DeleteInstanceResponse
+
+instance NFData DeleteInstanceResponse where
diff --git a/gen/Network/AWS/OpsWorks/DeleteLayer.hs b/gen/Network/AWS/OpsWorks/DeleteLayer.hs
--- a/gen/Network/AWS/OpsWorks/DeleteLayer.hs
+++ b/gen/Network/AWS/OpsWorks/DeleteLayer.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DeleteLayer
--- 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 @@
     , DeleteLayerResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'deleteLayer' smart constructor.
 newtype DeleteLayer = DeleteLayer'
-    { _dlLayerId :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dlLayerId :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteLayer' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -56,11 +57,9 @@
 deleteLayer
     :: Text -- ^ 'dlLayerId'
     -> DeleteLayer
-deleteLayer pLayerId_ =
-    DeleteLayer'
-    { _dlLayerId = pLayerId_
-    }
+deleteLayer pLayerId_ = DeleteLayer' {_dlLayerId = pLayerId_}
 
+
 -- | The layer ID.
 dlLayerId :: Lens' DeleteLayer Text
 dlLayerId = lens _dlLayerId (\ s a -> s{_dlLayerId = a});
@@ -70,9 +69,9 @@
         request = postJSON opsWorks
         response = receiveNull DeleteLayerResponse'
 
-instance Hashable DeleteLayer
+instance Hashable DeleteLayer where
 
-instance NFData DeleteLayer
+instance NFData DeleteLayer where
 
 instance ToHeaders DeleteLayer where
         toHeaders
@@ -95,13 +94,15 @@
 
 -- | /See:/ 'deleteLayerResponse' smart constructor.
 data DeleteLayerResponse =
-    DeleteLayerResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DeleteLayerResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteLayerResponse' with the minimum fields required to make a request.
 --
 deleteLayerResponse
     :: DeleteLayerResponse
 deleteLayerResponse = DeleteLayerResponse'
 
-instance NFData DeleteLayerResponse
+
+instance NFData DeleteLayerResponse where
diff --git a/gen/Network/AWS/OpsWorks/DeleteStack.hs b/gen/Network/AWS/OpsWorks/DeleteStack.hs
--- a/gen/Network/AWS/OpsWorks/DeleteStack.hs
+++ b/gen/Network/AWS/OpsWorks/DeleteStack.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DeleteStack
--- 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 @@
     , DeleteStackResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'deleteStack' smart constructor.
 newtype DeleteStack = DeleteStack'
-    { _dsStackId :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dsStackId :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteStack' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -56,11 +57,9 @@
 deleteStack
     :: Text -- ^ 'dsStackId'
     -> DeleteStack
-deleteStack pStackId_ =
-    DeleteStack'
-    { _dsStackId = pStackId_
-    }
+deleteStack pStackId_ = DeleteStack' {_dsStackId = pStackId_}
 
+
 -- | The stack ID.
 dsStackId :: Lens' DeleteStack Text
 dsStackId = lens _dsStackId (\ s a -> s{_dsStackId = a});
@@ -70,9 +69,9 @@
         request = postJSON opsWorks
         response = receiveNull DeleteStackResponse'
 
-instance Hashable DeleteStack
+instance Hashable DeleteStack where
 
-instance NFData DeleteStack
+instance NFData DeleteStack where
 
 instance ToHeaders DeleteStack where
         toHeaders
@@ -95,13 +94,15 @@
 
 -- | /See:/ 'deleteStackResponse' smart constructor.
 data DeleteStackResponse =
-    DeleteStackResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DeleteStackResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteStackResponse' with the minimum fields required to make a request.
 --
 deleteStackResponse
     :: DeleteStackResponse
 deleteStackResponse = DeleteStackResponse'
 
-instance NFData DeleteStackResponse
+
+instance NFData DeleteStackResponse where
diff --git a/gen/Network/AWS/OpsWorks/DeleteUserProfile.hs b/gen/Network/AWS/OpsWorks/DeleteUserProfile.hs
--- a/gen/Network/AWS/OpsWorks/DeleteUserProfile.hs
+++ b/gen/Network/AWS/OpsWorks/DeleteUserProfile.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DeleteUserProfile
--- 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 @@
     , DeleteUserProfileResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'deleteUserProfile' smart constructor.
 newtype DeleteUserProfile = DeleteUserProfile'
-    { _dupIAMUserARN :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dupIAMUserARN :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteUserProfile' 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 -- ^ 'dupIAMUserARN'
     -> DeleteUserProfile
 deleteUserProfile pIAMUserARN_ =
-    DeleteUserProfile'
-    { _dupIAMUserARN = pIAMUserARN_
-    }
+  DeleteUserProfile' {_dupIAMUserARN = pIAMUserARN_}
 
+
 -- | The user's IAM ARN. This can also be a federated user's ARN.
 dupIAMUserARN :: Lens' DeleteUserProfile Text
 dupIAMUserARN = lens _dupIAMUserARN (\ s a -> s{_dupIAMUserARN = a});
@@ -70,9 +70,9 @@
         request = postJSON opsWorks
         response = receiveNull DeleteUserProfileResponse'
 
-instance Hashable DeleteUserProfile
+instance Hashable DeleteUserProfile where
 
-instance NFData DeleteUserProfile
+instance NFData DeleteUserProfile where
 
 instance ToHeaders DeleteUserProfile where
         toHeaders
@@ -97,13 +97,15 @@
 
 -- | /See:/ 'deleteUserProfileResponse' smart constructor.
 data DeleteUserProfileResponse =
-    DeleteUserProfileResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DeleteUserProfileResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteUserProfileResponse' with the minimum fields required to make a request.
 --
 deleteUserProfileResponse
     :: DeleteUserProfileResponse
 deleteUserProfileResponse = DeleteUserProfileResponse'
 
-instance NFData DeleteUserProfileResponse
+
+instance NFData DeleteUserProfileResponse where
diff --git a/gen/Network/AWS/OpsWorks/DeregisterEcsCluster.hs b/gen/Network/AWS/OpsWorks/DeregisterEcsCluster.hs
--- a/gen/Network/AWS/OpsWorks/DeregisterEcsCluster.hs
+++ b/gen/Network/AWS/OpsWorks/DeregisterEcsCluster.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DeregisterEcsCluster
--- 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 @@
     , DeregisterEcsClusterResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'deregisterEcsCluster' smart constructor.
 newtype DeregisterEcsCluster = DeregisterEcsCluster'
-    { _decEcsClusterARN :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _decEcsClusterARN :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeregisterEcsCluster' 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 -- ^ 'decEcsClusterARN'
     -> DeregisterEcsCluster
 deregisterEcsCluster pEcsClusterARN_ =
-    DeregisterEcsCluster'
-    { _decEcsClusterARN = pEcsClusterARN_
-    }
+  DeregisterEcsCluster' {_decEcsClusterARN = pEcsClusterARN_}
 
+
 -- | The cluster's ARN.
 decEcsClusterARN :: Lens' DeregisterEcsCluster Text
 decEcsClusterARN = lens _decEcsClusterARN (\ s a -> s{_decEcsClusterARN = a});
@@ -71,9 +71,9 @@
         request = postJSON opsWorks
         response = receiveNull DeregisterEcsClusterResponse'
 
-instance Hashable DeregisterEcsCluster
+instance Hashable DeregisterEcsCluster where
 
-instance NFData DeregisterEcsCluster
+instance NFData DeregisterEcsCluster where
 
 instance ToHeaders DeregisterEcsCluster where
         toHeaders
@@ -99,13 +99,15 @@
 
 -- | /See:/ 'deregisterEcsClusterResponse' smart constructor.
 data DeregisterEcsClusterResponse =
-    DeregisterEcsClusterResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DeregisterEcsClusterResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeregisterEcsClusterResponse' with the minimum fields required to make a request.
 --
 deregisterEcsClusterResponse
     :: DeregisterEcsClusterResponse
 deregisterEcsClusterResponse = DeregisterEcsClusterResponse'
 
-instance NFData DeregisterEcsClusterResponse
+
+instance NFData DeregisterEcsClusterResponse where
diff --git a/gen/Network/AWS/OpsWorks/DeregisterElasticIP.hs b/gen/Network/AWS/OpsWorks/DeregisterElasticIP.hs
--- a/gen/Network/AWS/OpsWorks/DeregisterElasticIP.hs
+++ b/gen/Network/AWS/OpsWorks/DeregisterElasticIP.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DeregisterElasticIP
--- 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 @@
     , DeregisterElasticIPResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'deregisterElasticIP' smart constructor.
 newtype DeregisterElasticIP = DeregisterElasticIP'
-    { _deipElasticIP :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _deipElasticIP :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeregisterElasticIP' 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 -- ^ 'deipElasticIP'
     -> DeregisterElasticIP
 deregisterElasticIP pElasticIP_ =
-    DeregisterElasticIP'
-    { _deipElasticIP = pElasticIP_
-    }
+  DeregisterElasticIP' {_deipElasticIP = pElasticIP_}
 
+
 -- | The Elastic IP address.
 deipElasticIP :: Lens' DeregisterElasticIP Text
 deipElasticIP = lens _deipElasticIP (\ s a -> s{_deipElasticIP = a});
@@ -71,9 +71,9 @@
         request = postJSON opsWorks
         response = receiveNull DeregisterElasticIPResponse'
 
-instance Hashable DeregisterElasticIP
+instance Hashable DeregisterElasticIP where
 
-instance NFData DeregisterElasticIP
+instance NFData DeregisterElasticIP where
 
 instance ToHeaders DeregisterElasticIP where
         toHeaders
@@ -98,13 +98,15 @@
 
 -- | /See:/ 'deregisterElasticIPResponse' smart constructor.
 data DeregisterElasticIPResponse =
-    DeregisterElasticIPResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DeregisterElasticIPResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeregisterElasticIPResponse' with the minimum fields required to make a request.
 --
 deregisterElasticIPResponse
     :: DeregisterElasticIPResponse
 deregisterElasticIPResponse = DeregisterElasticIPResponse'
 
-instance NFData DeregisterElasticIPResponse
+
+instance NFData DeregisterElasticIPResponse where
diff --git a/gen/Network/AWS/OpsWorks/DeregisterInstance.hs b/gen/Network/AWS/OpsWorks/DeregisterInstance.hs
--- a/gen/Network/AWS/OpsWorks/DeregisterInstance.hs
+++ b/gen/Network/AWS/OpsWorks/DeregisterInstance.hs
@@ -12,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DeregisterInstance
--- 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)
 --
--- Deregister a registered Amazon EC2 or on-premises instance. This action removes the instance from the stack and returns it to your control. This action can not be used with instances that were created with AWS OpsWorks.
+-- Deregister a registered Amazon EC2 or on-premises instance. This action removes the instance from the stack and returns it to your control. This action can not be used with instances that were created with AWS OpsWorks Stacks.
 --
 --
 -- __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 <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions> .
@@ -36,18 +36,19 @@
     , DeregisterInstanceResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'deregisterInstance' smart constructor.
 newtype DeregisterInstance = DeregisterInstance'
-    { _dInstanceId :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dInstanceId :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeregisterInstance' 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 -- ^ 'dInstanceId'
     -> DeregisterInstance
 deregisterInstance pInstanceId_ =
-    DeregisterInstance'
-    { _dInstanceId = pInstanceId_
-    }
+  DeregisterInstance' {_dInstanceId = pInstanceId_}
 
+
 -- | The instance ID.
 dInstanceId :: Lens' DeregisterInstance Text
 dInstanceId = lens _dInstanceId (\ s a -> s{_dInstanceId = a});
@@ -71,9 +71,9 @@
         request = postJSON opsWorks
         response = receiveNull DeregisterInstanceResponse'
 
-instance Hashable DeregisterInstance
+instance Hashable DeregisterInstance where
 
-instance NFData DeregisterInstance
+instance NFData DeregisterInstance where
 
 instance ToHeaders DeregisterInstance where
         toHeaders
@@ -98,13 +98,15 @@
 
 -- | /See:/ 'deregisterInstanceResponse' smart constructor.
 data DeregisterInstanceResponse =
-    DeregisterInstanceResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DeregisterInstanceResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeregisterInstanceResponse' with the minimum fields required to make a request.
 --
 deregisterInstanceResponse
     :: DeregisterInstanceResponse
 deregisterInstanceResponse = DeregisterInstanceResponse'
 
-instance NFData DeregisterInstanceResponse
+
+instance NFData DeregisterInstanceResponse where
diff --git a/gen/Network/AWS/OpsWorks/DeregisterRDSDBInstance.hs b/gen/Network/AWS/OpsWorks/DeregisterRDSDBInstance.hs
--- a/gen/Network/AWS/OpsWorks/DeregisterRDSDBInstance.hs
+++ b/gen/Network/AWS/OpsWorks/DeregisterRDSDBInstance.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DeregisterRDSDBInstance
--- 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 @@
     , DeregisterRDSDBInstanceResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'deregisterRDSDBInstance' smart constructor.
 newtype DeregisterRDSDBInstance = DeregisterRDSDBInstance'
-    { _drdiRDSDBInstanceARN :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _drdiRDSDBInstanceARN :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeregisterRDSDBInstance' 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 -- ^ 'drdiRDSDBInstanceARN'
     -> DeregisterRDSDBInstance
 deregisterRDSDBInstance pRDSDBInstanceARN_ =
-    DeregisterRDSDBInstance'
-    { _drdiRDSDBInstanceARN = pRDSDBInstanceARN_
-    }
+  DeregisterRDSDBInstance' {_drdiRDSDBInstanceARN = pRDSDBInstanceARN_}
 
+
 -- | The Amazon RDS instance's ARN.
 drdiRDSDBInstanceARN :: Lens' DeregisterRDSDBInstance Text
 drdiRDSDBInstanceARN = lens _drdiRDSDBInstanceARN (\ s a -> s{_drdiRDSDBInstanceARN = a});
@@ -72,9 +72,9 @@
         response
           = receiveNull DeregisterRDSDBInstanceResponse'
 
-instance Hashable DeregisterRDSDBInstance
+instance Hashable DeregisterRDSDBInstance where
 
-instance NFData DeregisterRDSDBInstance
+instance NFData DeregisterRDSDBInstance where
 
 instance ToHeaders DeregisterRDSDBInstance where
         toHeaders
@@ -100,13 +100,15 @@
 
 -- | /See:/ 'deregisterRDSDBInstanceResponse' smart constructor.
 data DeregisterRDSDBInstanceResponse =
-    DeregisterRDSDBInstanceResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DeregisterRDSDBInstanceResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeregisterRDSDBInstanceResponse' with the minimum fields required to make a request.
 --
 deregisterRDSDBInstanceResponse
     :: DeregisterRDSDBInstanceResponse
 deregisterRDSDBInstanceResponse = DeregisterRDSDBInstanceResponse'
 
-instance NFData DeregisterRDSDBInstanceResponse
+
+instance NFData DeregisterRDSDBInstanceResponse where
diff --git a/gen/Network/AWS/OpsWorks/DeregisterVolume.hs b/gen/Network/AWS/OpsWorks/DeregisterVolume.hs
--- a/gen/Network/AWS/OpsWorks/DeregisterVolume.hs
+++ b/gen/Network/AWS/OpsWorks/DeregisterVolume.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DeregisterVolume
--- 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,32 +36,31 @@
     , DeregisterVolumeResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'deregisterVolume' smart constructor.
 newtype DeregisterVolume = DeregisterVolume'
-    { _dvVolumeId :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dvVolumeId :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeregisterVolume' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dvVolumeId' - The AWS OpsWorks volume ID, which is the GUID that AWS OpsWorks assigned to the instance when you registered the volume with the stack, not the Amazon EC2 volume ID.
+-- * 'dvVolumeId' - The AWS OpsWorks Stacks volume ID, which is the GUID that AWS OpsWorks Stacks assigned to the instance when you registered the volume with the stack, not the Amazon EC2 volume ID.
 deregisterVolume
     :: Text -- ^ 'dvVolumeId'
     -> DeregisterVolume
-deregisterVolume pVolumeId_ =
-    DeregisterVolume'
-    { _dvVolumeId = pVolumeId_
-    }
+deregisterVolume pVolumeId_ = DeregisterVolume' {_dvVolumeId = pVolumeId_}
 
--- | The AWS OpsWorks volume ID, which is the GUID that AWS OpsWorks assigned to the instance when you registered the volume with the stack, not the Amazon EC2 volume ID.
+
+-- | The AWS OpsWorks Stacks volume ID, which is the GUID that AWS OpsWorks Stacks assigned to the instance when you registered the volume with the stack, not the Amazon EC2 volume ID.
 dvVolumeId :: Lens' DeregisterVolume Text
 dvVolumeId = lens _dvVolumeId (\ s a -> s{_dvVolumeId = a});
 
@@ -70,9 +69,9 @@
         request = postJSON opsWorks
         response = receiveNull DeregisterVolumeResponse'
 
-instance Hashable DeregisterVolume
+instance Hashable DeregisterVolume where
 
-instance NFData DeregisterVolume
+instance NFData DeregisterVolume where
 
 instance ToHeaders DeregisterVolume where
         toHeaders
@@ -96,13 +95,15 @@
 
 -- | /See:/ 'deregisterVolumeResponse' smart constructor.
 data DeregisterVolumeResponse =
-    DeregisterVolumeResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DeregisterVolumeResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeregisterVolumeResponse' with the minimum fields required to make a request.
 --
 deregisterVolumeResponse
     :: DeregisterVolumeResponse
 deregisterVolumeResponse = DeregisterVolumeResponse'
 
-instance NFData DeregisterVolumeResponse
+
+instance NFData DeregisterVolumeResponse where
diff --git a/gen/Network/AWS/OpsWorks/DescribeAgentVersions.hs b/gen/Network/AWS/OpsWorks/DescribeAgentVersions.hs
--- a/gen/Network/AWS/OpsWorks/DescribeAgentVersions.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeAgentVersions.hs
@@ -12,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DescribeAgentVersions
--- 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)
 --
--- Describes the available AWS OpsWorks agent versions. You must specify a stack ID or a configuration manager. @DescribeAgentVersions@ returns a list of available agent versions for the specified stack or configuration manager.
+-- Describes the available AWS OpsWorks Stacks agent versions. You must specify a stack ID or a configuration manager. @DescribeAgentVersions@ returns a list of available agent versions for the specified stack or configuration manager.
 --
 --
 module Network.AWS.OpsWorks.DescribeAgentVersions
@@ -38,19 +38,20 @@
     , davrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'describeAgentVersions' smart constructor.
 data DescribeAgentVersions = DescribeAgentVersions'
-    { _davConfigurationManager :: !(Maybe StackConfigurationManager)
-    , _davStackId              :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _davConfigurationManager :: !(Maybe StackConfigurationManager)
+  , _davStackId              :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeAgentVersions' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -61,11 +62,10 @@
 describeAgentVersions
     :: DescribeAgentVersions
 describeAgentVersions =
-    DescribeAgentVersions'
-    { _davConfigurationManager = Nothing
-    , _davStackId = Nothing
-    }
+  DescribeAgentVersions'
+  {_davConfigurationManager = Nothing, _davStackId = Nothing}
 
+
 -- | The configuration manager.
 davConfigurationManager :: Lens' DescribeAgentVersions (Maybe StackConfigurationManager)
 davConfigurationManager = lens _davConfigurationManager (\ s a -> s{_davConfigurationManager = a});
@@ -85,9 +85,9 @@
                    (x .?> "AgentVersions" .!@ mempty) <*>
                      (pure (fromEnum s)))
 
-instance Hashable DescribeAgentVersions
+instance Hashable DescribeAgentVersions where
 
-instance NFData DescribeAgentVersions
+instance NFData DescribeAgentVersions where
 
 instance ToHeaders DescribeAgentVersions where
         toHeaders
@@ -119,10 +119,11 @@
 --
 -- /See:/ 'describeAgentVersionsResponse' smart constructor.
 data DescribeAgentVersionsResponse = DescribeAgentVersionsResponse'
-    { _davrsAgentVersions  :: !(Maybe [AgentVersion])
-    , _davrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _davrsAgentVersions  :: !(Maybe [AgentVersion])
+  , _davrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeAgentVersionsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -134,11 +135,10 @@
     :: Int -- ^ 'davrsResponseStatus'
     -> DescribeAgentVersionsResponse
 describeAgentVersionsResponse pResponseStatus_ =
-    DescribeAgentVersionsResponse'
-    { _davrsAgentVersions = Nothing
-    , _davrsResponseStatus = pResponseStatus_
-    }
+  DescribeAgentVersionsResponse'
+  {_davrsAgentVersions = Nothing, _davrsResponseStatus = pResponseStatus_}
 
+
 -- | The agent versions for the specified stack or configuration manager. Note that this value is the complete version number, not the abbreviated number used by the console.
 davrsAgentVersions :: Lens' DescribeAgentVersionsResponse [AgentVersion]
 davrsAgentVersions = lens _davrsAgentVersions (\ s a -> s{_davrsAgentVersions = a}) . _Default . _Coerce;
@@ -147,4 +147,4 @@
 davrsResponseStatus :: Lens' DescribeAgentVersionsResponse Int
 davrsResponseStatus = lens _davrsResponseStatus (\ s a -> s{_davrsResponseStatus = a});
 
-instance NFData DescribeAgentVersionsResponse
+instance NFData DescribeAgentVersionsResponse where
diff --git a/gen/Network/AWS/OpsWorks/DescribeApps.hs b/gen/Network/AWS/OpsWorks/DescribeApps.hs
--- a/gen/Network/AWS/OpsWorks/DescribeApps.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeApps.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DescribeApps
--- 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)
 --
@@ -40,19 +40,20 @@
     , darsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'describeApps' smart constructor.
 data DescribeApps = DescribeApps'
-    { _daAppIds  :: !(Maybe [Text])
-    , _daStackId :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _daAppIds  :: !(Maybe [Text])
+  , _daStackId :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeApps' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -62,12 +63,9 @@
 -- * 'daStackId' - The app stack ID. If you use this parameter, @DescribeApps@ returns a description of the apps in the specified stack.
 describeApps
     :: DescribeApps
-describeApps =
-    DescribeApps'
-    { _daAppIds = Nothing
-    , _daStackId = Nothing
-    }
+describeApps = DescribeApps' {_daAppIds = Nothing, _daStackId = Nothing}
 
+
 -- | An array of app IDs for the apps to be described. If you use this parameter, @DescribeApps@ returns a description of the specified apps. Otherwise, it returns a description of every app.
 daAppIds :: Lens' DescribeApps [Text]
 daAppIds = lens _daAppIds (\ s a -> s{_daAppIds = a}) . _Default . _Coerce;
@@ -85,9 +83,9 @@
                  DescribeAppsResponse' <$>
                    (x .?> "Apps" .!@ mempty) <*> (pure (fromEnum s)))
 
-instance Hashable DescribeApps
+instance Hashable DescribeApps where
 
-instance NFData DescribeApps
+instance NFData DescribeApps where
 
 instance ToHeaders DescribeApps where
         toHeaders
@@ -117,10 +115,11 @@
 --
 -- /See:/ 'describeAppsResponse' smart constructor.
 data DescribeAppsResponse = DescribeAppsResponse'
-    { _darsApps           :: !(Maybe [App])
-    , _darsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _darsApps           :: !(Maybe [App])
+  , _darsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeAppsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -132,11 +131,10 @@
     :: Int -- ^ 'darsResponseStatus'
     -> DescribeAppsResponse
 describeAppsResponse pResponseStatus_ =
-    DescribeAppsResponse'
-    { _darsApps = Nothing
-    , _darsResponseStatus = pResponseStatus_
-    }
+  DescribeAppsResponse'
+  {_darsApps = Nothing, _darsResponseStatus = pResponseStatus_}
 
+
 -- | An array of @App@ objects that describe the specified apps.
 darsApps :: Lens' DescribeAppsResponse [App]
 darsApps = lens _darsApps (\ s a -> s{_darsApps = a}) . _Default . _Coerce;
@@ -145,4 +143,4 @@
 darsResponseStatus :: Lens' DescribeAppsResponse Int
 darsResponseStatus = lens _darsResponseStatus (\ s a -> s{_darsResponseStatus = a});
 
-instance NFData DescribeAppsResponse
+instance NFData DescribeAppsResponse where
diff --git a/gen/Network/AWS/OpsWorks/DescribeCommands.hs b/gen/Network/AWS/OpsWorks/DescribeCommands.hs
--- a/gen/Network/AWS/OpsWorks/DescribeCommands.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeCommands.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DescribeCommands
--- 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 @@
     , dcrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'describeCommands' smart constructor.
 data DescribeCommands = DescribeCommands'
-    { _dcDeploymentId :: !(Maybe Text)
-    , _dcInstanceId   :: !(Maybe Text)
-    , _dcCommandIds   :: !(Maybe [Text])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dcDeploymentId :: !(Maybe Text)
+  , _dcInstanceId   :: !(Maybe Text)
+  , _dcCommandIds   :: !(Maybe [Text])
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeCommands' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -67,12 +68,10 @@
 describeCommands
     :: DescribeCommands
 describeCommands =
-    DescribeCommands'
-    { _dcDeploymentId = Nothing
-    , _dcInstanceId = Nothing
-    , _dcCommandIds = Nothing
-    }
+  DescribeCommands'
+  {_dcDeploymentId = Nothing, _dcInstanceId = Nothing, _dcCommandIds = Nothing}
 
+
 -- | The deployment ID. If you include this parameter, @DescribeCommands@ returns a description of the commands associated with the specified deployment.
 dcDeploymentId :: Lens' DescribeCommands (Maybe Text)
 dcDeploymentId = lens _dcDeploymentId (\ s a -> s{_dcDeploymentId = a});
@@ -95,9 +94,9 @@
                    (x .?> "Commands" .!@ mempty) <*>
                      (pure (fromEnum s)))
 
-instance Hashable DescribeCommands
+instance Hashable DescribeCommands where
 
-instance NFData DescribeCommands
+instance NFData DescribeCommands where
 
 instance ToHeaders DescribeCommands where
         toHeaders
@@ -128,10 +127,11 @@
 --
 -- /See:/ 'describeCommandsResponse' smart constructor.
 data DescribeCommandsResponse = DescribeCommandsResponse'
-    { _dcrsCommands       :: !(Maybe [Command])
-    , _dcrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dcrsCommands       :: !(Maybe [Command])
+  , _dcrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeCommandsResponse' 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 -- ^ 'dcrsResponseStatus'
     -> DescribeCommandsResponse
 describeCommandsResponse pResponseStatus_ =
-    DescribeCommandsResponse'
-    { _dcrsCommands = Nothing
-    , _dcrsResponseStatus = pResponseStatus_
-    }
+  DescribeCommandsResponse'
+  {_dcrsCommands = Nothing, _dcrsResponseStatus = pResponseStatus_}
 
+
 -- | An array of @Command@ objects that describe each of the specified commands.
 dcrsCommands :: Lens' DescribeCommandsResponse [Command]
 dcrsCommands = lens _dcrsCommands (\ s a -> s{_dcrsCommands = a}) . _Default . _Coerce;
@@ -156,4 +155,4 @@
 dcrsResponseStatus :: Lens' DescribeCommandsResponse Int
 dcrsResponseStatus = lens _dcrsResponseStatus (\ s a -> s{_dcrsResponseStatus = a});
 
-instance NFData DescribeCommandsResponse
+instance NFData DescribeCommandsResponse where
diff --git a/gen/Network/AWS/OpsWorks/DescribeDeployments.hs b/gen/Network/AWS/OpsWorks/DescribeDeployments.hs
--- a/gen/Network/AWS/OpsWorks/DescribeDeployments.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeDeployments.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DescribeDeployments
--- 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 @@
     , ddrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'describeDeployments' smart constructor.
 data DescribeDeployments = DescribeDeployments'
-    { _ddAppId         :: !(Maybe Text)
-    , _ddDeploymentIds :: !(Maybe [Text])
-    , _ddStackId       :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _ddAppId         :: !(Maybe Text)
+  , _ddDeploymentIds :: !(Maybe [Text])
+  , _ddStackId       :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeDeployments' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -67,12 +68,10 @@
 describeDeployments
     :: DescribeDeployments
 describeDeployments =
-    DescribeDeployments'
-    { _ddAppId = Nothing
-    , _ddDeploymentIds = Nothing
-    , _ddStackId = Nothing
-    }
+  DescribeDeployments'
+  {_ddAppId = Nothing, _ddDeploymentIds = Nothing, _ddStackId = Nothing}
 
+
 -- | The app ID. If you include this parameter, @DescribeDeployments@ returns a description of the commands associated with the specified app.
 ddAppId :: Lens' DescribeDeployments (Maybe Text)
 ddAppId = lens _ddAppId (\ s a -> s{_ddAppId = a});
@@ -96,9 +95,9 @@
                    (x .?> "Deployments" .!@ mempty) <*>
                      (pure (fromEnum s)))
 
-instance Hashable DescribeDeployments
+instance Hashable DescribeDeployments where
 
-instance NFData DescribeDeployments
+instance NFData DescribeDeployments where
 
 instance ToHeaders DescribeDeployments where
         toHeaders
@@ -130,10 +129,11 @@
 --
 -- /See:/ 'describeDeploymentsResponse' smart constructor.
 data DescribeDeploymentsResponse = DescribeDeploymentsResponse'
-    { _ddrsDeployments    :: !(Maybe [Deployment])
-    , _ddrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _ddrsDeployments    :: !(Maybe [Deployment])
+  , _ddrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeDeploymentsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -145,11 +145,10 @@
     :: Int -- ^ 'ddrsResponseStatus'
     -> DescribeDeploymentsResponse
 describeDeploymentsResponse pResponseStatus_ =
-    DescribeDeploymentsResponse'
-    { _ddrsDeployments = Nothing
-    , _ddrsResponseStatus = pResponseStatus_
-    }
+  DescribeDeploymentsResponse'
+  {_ddrsDeployments = Nothing, _ddrsResponseStatus = pResponseStatus_}
 
+
 -- | An array of @Deployment@ objects that describe the deployments.
 ddrsDeployments :: Lens' DescribeDeploymentsResponse [Deployment]
 ddrsDeployments = lens _ddrsDeployments (\ s a -> s{_ddrsDeployments = a}) . _Default . _Coerce;
@@ -158,4 +157,4 @@
 ddrsResponseStatus :: Lens' DescribeDeploymentsResponse Int
 ddrsResponseStatus = lens _ddrsResponseStatus (\ s a -> s{_ddrsResponseStatus = a});
 
-instance NFData DescribeDeploymentsResponse
+instance NFData DescribeDeploymentsResponse where
diff --git a/gen/Network/AWS/OpsWorks/DescribeEcsClusters.hs b/gen/Network/AWS/OpsWorks/DescribeEcsClusters.hs
--- a/gen/Network/AWS/OpsWorks/DescribeEcsClusters.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeEcsClusters.hs
@@ -12,17 +12,21 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DescribeEcsClusters
--- 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)
 --
--- Describes Amazon ECS clusters that are registered with a stack. If you specify only a stack ID, you can use the @MaxResults@ and @NextToken@ parameters to paginate the response. However, AWS OpsWorks currently supports only one cluster per layer, so the result set has a maximum of one element.
+-- Describes Amazon ECS clusters that are registered with a stack. If you specify only a stack ID, you can use the @MaxResults@ and @NextToken@ parameters to paginate the response. However, AWS OpsWorks Stacks currently supports only one cluster per layer, so the result set has a maximum of one element.
 --
 --
 -- __Required Permissions__ : To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack or an attached policy that explicitly grants permission. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions> .
 --
+-- This call accepts only one resource-identifying parameter.
+--
+--
+-- This operation returns paginated results.
 module Network.AWS.OpsWorks.DescribeEcsClusters
     (
     -- * Creating a Request
@@ -43,21 +47,23 @@
     , decrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Pager
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'describeEcsClusters' smart constructor.
 data DescribeEcsClusters = DescribeEcsClusters'
-    { _decNextToken      :: !(Maybe Text)
-    , _decStackId        :: !(Maybe Text)
-    , _decMaxResults     :: !(Maybe Int)
-    , _decEcsClusterARNs :: !(Maybe [Text])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _decNextToken      :: !(Maybe Text)
+  , _decStackId        :: !(Maybe Text)
+  , _decMaxResults     :: !(Maybe Int)
+  , _decEcsClusterARNs :: !(Maybe [Text])
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeEcsClusters' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,13 +78,14 @@
 describeEcsClusters
     :: DescribeEcsClusters
 describeEcsClusters =
-    DescribeEcsClusters'
-    { _decNextToken = Nothing
-    , _decStackId = Nothing
-    , _decMaxResults = Nothing
-    , _decEcsClusterARNs = Nothing
-    }
+  DescribeEcsClusters'
+  { _decNextToken = Nothing
+  , _decStackId = Nothing
+  , _decMaxResults = Nothing
+  , _decEcsClusterARNs = Nothing
+  }
 
+
 -- | If the previous paginated request did not return all of the remaining results, the response object's@NextToken@ parameter value is set to a token. To retrieve the next set of results, call @DescribeEcsClusters@ again and assign that token to the request object's @NextToken@ parameter. If there are no remaining results, the previous response object's @NextToken@ parameter is set to @null@ .
 decNextToken :: Lens' DescribeEcsClusters (Maybe Text)
 decNextToken = lens _decNextToken (\ s a -> s{_decNextToken = a});
@@ -95,6 +102,13 @@
 decEcsClusterARNs :: Lens' DescribeEcsClusters [Text]
 decEcsClusterARNs = lens _decEcsClusterARNs (\ s a -> s{_decEcsClusterARNs = a}) . _Default . _Coerce;
 
+instance AWSPager DescribeEcsClusters where
+        page rq rs
+          | stop (rs ^. decrsNextToken) = Nothing
+          | stop (rs ^. decrsEcsClusters) = Nothing
+          | otherwise =
+            Just $ rq & decNextToken .~ rs ^. decrsNextToken
+
 instance AWSRequest DescribeEcsClusters where
         type Rs DescribeEcsClusters =
              DescribeEcsClustersResponse
@@ -107,9 +121,9 @@
                      (x .?> "EcsClusters" .!@ mempty)
                      <*> (pure (fromEnum s)))
 
-instance Hashable DescribeEcsClusters
+instance Hashable DescribeEcsClusters where
 
-instance NFData DescribeEcsClusters
+instance NFData DescribeEcsClusters where
 
 instance ToHeaders DescribeEcsClusters where
         toHeaders
@@ -142,11 +156,12 @@
 --
 -- /See:/ 'describeEcsClustersResponse' smart constructor.
 data DescribeEcsClustersResponse = DescribeEcsClustersResponse'
-    { _decrsNextToken      :: !(Maybe Text)
-    , _decrsEcsClusters    :: !(Maybe [EcsCluster])
-    , _decrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _decrsNextToken      :: !(Maybe Text)
+  , _decrsEcsClusters    :: !(Maybe [EcsCluster])
+  , _decrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeEcsClustersResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -160,12 +175,13 @@
     :: Int -- ^ 'decrsResponseStatus'
     -> DescribeEcsClustersResponse
 describeEcsClustersResponse pResponseStatus_ =
-    DescribeEcsClustersResponse'
-    { _decrsNextToken = Nothing
-    , _decrsEcsClusters = Nothing
-    , _decrsResponseStatus = pResponseStatus_
-    }
+  DescribeEcsClustersResponse'
+  { _decrsNextToken = Nothing
+  , _decrsEcsClusters = Nothing
+  , _decrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | If a paginated request does not return all of the remaining results, this parameter is set to a token that you can assign to the request object's @NextToken@ parameter to retrieve the next set of results. If the previous paginated request returned all of the remaining results, this parameter is set to @null@ .
 decrsNextToken :: Lens' DescribeEcsClustersResponse (Maybe Text)
 decrsNextToken = lens _decrsNextToken (\ s a -> s{_decrsNextToken = a});
@@ -178,4 +194,4 @@
 decrsResponseStatus :: Lens' DescribeEcsClustersResponse Int
 decrsResponseStatus = lens _decrsResponseStatus (\ s a -> s{_decrsResponseStatus = a});
 
-instance NFData DescribeEcsClustersResponse
+instance NFData DescribeEcsClustersResponse where
diff --git a/gen/Network/AWS/OpsWorks/DescribeElasticIPs.hs b/gen/Network/AWS/OpsWorks/DescribeElasticIPs.hs
--- a/gen/Network/AWS/OpsWorks/DescribeElasticIPs.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeElasticIPs.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DescribeElasticIPs
--- 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 @@
     , deirsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'describeElasticIPs' smart constructor.
 data DescribeElasticIPs = DescribeElasticIPs'
-    { _deiInstanceId :: !(Maybe Text)
-    , _deiIPs        :: !(Maybe [Text])
-    , _deiStackId    :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _deiInstanceId :: !(Maybe Text)
+  , _deiIPs        :: !(Maybe [Text])
+  , _deiStackId    :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeElasticIPs' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -67,12 +68,10 @@
 describeElasticIPs
     :: DescribeElasticIPs
 describeElasticIPs =
-    DescribeElasticIPs'
-    { _deiInstanceId = Nothing
-    , _deiIPs = Nothing
-    , _deiStackId = Nothing
-    }
+  DescribeElasticIPs'
+  {_deiInstanceId = Nothing, _deiIPs = Nothing, _deiStackId = Nothing}
 
+
 -- | The instance ID. If you include this parameter, @DescribeElasticIps@ returns a description of the Elastic IP addresses associated with the specified instance.
 deiInstanceId :: Lens' DescribeElasticIPs (Maybe Text)
 deiInstanceId = lens _deiInstanceId (\ s a -> s{_deiInstanceId = a});
@@ -96,9 +95,9 @@
                    (x .?> "ElasticIps" .!@ mempty) <*>
                      (pure (fromEnum s)))
 
-instance Hashable DescribeElasticIPs
+instance Hashable DescribeElasticIPs where
 
-instance NFData DescribeElasticIPs
+instance NFData DescribeElasticIPs where
 
 instance ToHeaders DescribeElasticIPs where
         toHeaders
@@ -130,10 +129,11 @@
 --
 -- /See:/ 'describeElasticIPsResponse' smart constructor.
 data DescribeElasticIPsResponse = DescribeElasticIPsResponse'
-    { _deirsElasticIPs     :: !(Maybe [ElasticIP])
-    , _deirsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _deirsElasticIPs     :: !(Maybe [ElasticIP])
+  , _deirsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeElasticIPsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -145,11 +145,10 @@
     :: Int -- ^ 'deirsResponseStatus'
     -> DescribeElasticIPsResponse
 describeElasticIPsResponse pResponseStatus_ =
-    DescribeElasticIPsResponse'
-    { _deirsElasticIPs = Nothing
-    , _deirsResponseStatus = pResponseStatus_
-    }
+  DescribeElasticIPsResponse'
+  {_deirsElasticIPs = Nothing, _deirsResponseStatus = pResponseStatus_}
 
+
 -- | An @ElasticIps@ object that describes the specified Elastic IP addresses.
 deirsElasticIPs :: Lens' DescribeElasticIPsResponse [ElasticIP]
 deirsElasticIPs = lens _deirsElasticIPs (\ s a -> s{_deirsElasticIPs = a}) . _Default . _Coerce;
@@ -158,4 +157,4 @@
 deirsResponseStatus :: Lens' DescribeElasticIPsResponse Int
 deirsResponseStatus = lens _deirsResponseStatus (\ s a -> s{_deirsResponseStatus = a});
 
-instance NFData DescribeElasticIPsResponse
+instance NFData DescribeElasticIPsResponse where
diff --git a/gen/Network/AWS/OpsWorks/DescribeElasticLoadBalancers.hs b/gen/Network/AWS/OpsWorks/DescribeElasticLoadBalancers.hs
--- a/gen/Network/AWS/OpsWorks/DescribeElasticLoadBalancers.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeElasticLoadBalancers.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DescribeElasticLoadBalancers
--- 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)
 --
@@ -40,19 +40,20 @@
     , delbrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'describeElasticLoadBalancers' smart constructor.
 data DescribeElasticLoadBalancers = DescribeElasticLoadBalancers'
-    { _delbLayerIds :: !(Maybe [Text])
-    , _delbStackId  :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _delbLayerIds :: !(Maybe [Text])
+  , _delbStackId  :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeElasticLoadBalancers' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -63,11 +64,10 @@
 describeElasticLoadBalancers
     :: DescribeElasticLoadBalancers
 describeElasticLoadBalancers =
-    DescribeElasticLoadBalancers'
-    { _delbLayerIds = Nothing
-    , _delbStackId = Nothing
-    }
+  DescribeElasticLoadBalancers'
+  {_delbLayerIds = Nothing, _delbStackId = Nothing}
 
+
 -- | A list of layer IDs. The action describes the Elastic Load Balancing instances for the specified layers.
 delbLayerIds :: Lens' DescribeElasticLoadBalancers [Text]
 delbLayerIds = lens _delbLayerIds (\ s a -> s{_delbLayerIds = a}) . _Default . _Coerce;
@@ -88,9 +88,9 @@
                    (x .?> "ElasticLoadBalancers" .!@ mempty) <*>
                      (pure (fromEnum s)))
 
-instance Hashable DescribeElasticLoadBalancers
+instance Hashable DescribeElasticLoadBalancers where
 
-instance NFData DescribeElasticLoadBalancers
+instance NFData DescribeElasticLoadBalancers where
 
 instance ToHeaders DescribeElasticLoadBalancers where
         toHeaders
@@ -121,10 +121,11 @@
 --
 -- /See:/ 'describeElasticLoadBalancersResponse' smart constructor.
 data DescribeElasticLoadBalancersResponse = DescribeElasticLoadBalancersResponse'
-    { _delbrsElasticLoadBalancers :: !(Maybe [ElasticLoadBalancer])
-    , _delbrsResponseStatus       :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _delbrsElasticLoadBalancers :: !(Maybe [ElasticLoadBalancer])
+  , _delbrsResponseStatus       :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeElasticLoadBalancersResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -136,11 +137,12 @@
     :: Int -- ^ 'delbrsResponseStatus'
     -> DescribeElasticLoadBalancersResponse
 describeElasticLoadBalancersResponse pResponseStatus_ =
-    DescribeElasticLoadBalancersResponse'
-    { _delbrsElasticLoadBalancers = Nothing
-    , _delbrsResponseStatus = pResponseStatus_
-    }
+  DescribeElasticLoadBalancersResponse'
+  { _delbrsElasticLoadBalancers = Nothing
+  , _delbrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | A list of @ElasticLoadBalancer@ objects that describe the specified Elastic Load Balancing instances.
 delbrsElasticLoadBalancers :: Lens' DescribeElasticLoadBalancersResponse [ElasticLoadBalancer]
 delbrsElasticLoadBalancers = lens _delbrsElasticLoadBalancers (\ s a -> s{_delbrsElasticLoadBalancers = a}) . _Default . _Coerce;
@@ -150,3 +152,4 @@
 delbrsResponseStatus = lens _delbrsResponseStatus (\ s a -> s{_delbrsResponseStatus = a});
 
 instance NFData DescribeElasticLoadBalancersResponse
+         where
diff --git a/gen/Network/AWS/OpsWorks/DescribeInstances.hs b/gen/Network/AWS/OpsWorks/DescribeInstances.hs
--- a/gen/Network/AWS/OpsWorks/DescribeInstances.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeInstances.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DescribeInstances
--- 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 @@
     , dirsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'describeInstances' smart constructor.
 data DescribeInstances = DescribeInstances'
-    { _diInstanceIds :: !(Maybe [Text])
-    , _diStackId     :: !(Maybe Text)
-    , _diLayerId     :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _diInstanceIds :: !(Maybe [Text])
+  , _diStackId     :: !(Maybe Text)
+  , _diLayerId     :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeInstances' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -67,12 +68,10 @@
 describeInstances
     :: DescribeInstances
 describeInstances =
-    DescribeInstances'
-    { _diInstanceIds = Nothing
-    , _diStackId = Nothing
-    , _diLayerId = Nothing
-    }
+  DescribeInstances'
+  {_diInstanceIds = Nothing, _diStackId = Nothing, _diLayerId = Nothing}
 
+
 -- | An array of instance IDs to be described. If you use this parameter, @DescribeInstances@ returns a description of the specified instances. Otherwise, it returns a description of every instance.
 diInstanceIds :: Lens' DescribeInstances [Text]
 diInstanceIds = lens _diInstanceIds (\ s a -> s{_diInstanceIds = a}) . _Default . _Coerce;
@@ -95,9 +94,9 @@
                    (x .?> "Instances" .!@ mempty) <*>
                      (pure (fromEnum s)))
 
-instance Hashable DescribeInstances
+instance Hashable DescribeInstances where
 
-instance NFData DescribeInstances
+instance NFData DescribeInstances where
 
 instance ToHeaders DescribeInstances where
         toHeaders
@@ -129,10 +128,11 @@
 --
 -- /See:/ 'describeInstancesResponse' smart constructor.
 data DescribeInstancesResponse = DescribeInstancesResponse'
-    { _dirsInstances      :: !(Maybe [Instance])
-    , _dirsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dirsInstances      :: !(Maybe [Instance])
+  , _dirsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeInstancesResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -144,11 +144,10 @@
     :: Int -- ^ 'dirsResponseStatus'
     -> DescribeInstancesResponse
 describeInstancesResponse pResponseStatus_ =
-    DescribeInstancesResponse'
-    { _dirsInstances = Nothing
-    , _dirsResponseStatus = pResponseStatus_
-    }
+  DescribeInstancesResponse'
+  {_dirsInstances = Nothing, _dirsResponseStatus = pResponseStatus_}
 
+
 -- | An array of @Instance@ objects that describe the instances.
 dirsInstances :: Lens' DescribeInstancesResponse [Instance]
 dirsInstances = lens _dirsInstances (\ s a -> s{_dirsInstances = a}) . _Default . _Coerce;
@@ -157,4 +156,4 @@
 dirsResponseStatus :: Lens' DescribeInstancesResponse Int
 dirsResponseStatus = lens _dirsResponseStatus (\ s a -> s{_dirsResponseStatus = a});
 
-instance NFData DescribeInstancesResponse
+instance NFData DescribeInstancesResponse where
diff --git a/gen/Network/AWS/OpsWorks/DescribeLayers.hs b/gen/Network/AWS/OpsWorks/DescribeLayers.hs
--- a/gen/Network/AWS/OpsWorks/DescribeLayers.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeLayers.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DescribeLayers
--- 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)
 --
@@ -40,19 +40,20 @@
     , dlrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'describeLayers' smart constructor.
 data DescribeLayers = DescribeLayers'
-    { _dlLayerIds :: !(Maybe [Text])
-    , _dlStackId  :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dlLayerIds :: !(Maybe [Text])
+  , _dlStackId  :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeLayers' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -62,12 +63,9 @@
 -- * 'dlStackId' - The stack ID.
 describeLayers
     :: DescribeLayers
-describeLayers =
-    DescribeLayers'
-    { _dlLayerIds = Nothing
-    , _dlStackId = Nothing
-    }
+describeLayers = DescribeLayers' {_dlLayerIds = Nothing, _dlStackId = Nothing}
 
+
 -- | An array of layer IDs that specify the layers to be described. If you omit this parameter, @DescribeLayers@ returns a description of every layer in the specified stack.
 dlLayerIds :: Lens' DescribeLayers [Text]
 dlLayerIds = lens _dlLayerIds (\ s a -> s{_dlLayerIds = a}) . _Default . _Coerce;
@@ -85,9 +83,9 @@
                  DescribeLayersResponse' <$>
                    (x .?> "Layers" .!@ mempty) <*> (pure (fromEnum s)))
 
-instance Hashable DescribeLayers
+instance Hashable DescribeLayers where
 
-instance NFData DescribeLayers
+instance NFData DescribeLayers where
 
 instance ToHeaders DescribeLayers where
         toHeaders
@@ -117,10 +115,11 @@
 --
 -- /See:/ 'describeLayersResponse' smart constructor.
 data DescribeLayersResponse = DescribeLayersResponse'
-    { _dlrsLayers         :: !(Maybe [Layer])
-    , _dlrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dlrsLayers         :: !(Maybe [Layer])
+  , _dlrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeLayersResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -132,11 +131,10 @@
     :: Int -- ^ 'dlrsResponseStatus'
     -> DescribeLayersResponse
 describeLayersResponse pResponseStatus_ =
-    DescribeLayersResponse'
-    { _dlrsLayers = Nothing
-    , _dlrsResponseStatus = pResponseStatus_
-    }
+  DescribeLayersResponse'
+  {_dlrsLayers = Nothing, _dlrsResponseStatus = pResponseStatus_}
 
+
 -- | An array of @Layer@ objects that describe the layers.
 dlrsLayers :: Lens' DescribeLayersResponse [Layer]
 dlrsLayers = lens _dlrsLayers (\ s a -> s{_dlrsLayers = a}) . _Default . _Coerce;
@@ -145,4 +143,4 @@
 dlrsResponseStatus :: Lens' DescribeLayersResponse Int
 dlrsResponseStatus = lens _dlrsResponseStatus (\ s a -> s{_dlrsResponseStatus = a});
 
-instance NFData DescribeLayersResponse
+instance NFData DescribeLayersResponse where
diff --git a/gen/Network/AWS/OpsWorks/DescribeLoadBasedAutoScaling.hs b/gen/Network/AWS/OpsWorks/DescribeLoadBasedAutoScaling.hs
--- a/gen/Network/AWS/OpsWorks/DescribeLoadBasedAutoScaling.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeLoadBasedAutoScaling.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DescribeLoadBasedAutoScaling
--- 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 @@
     , dlbasrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'describeLoadBasedAutoScaling' smart constructor.
 newtype DescribeLoadBasedAutoScaling = DescribeLoadBasedAutoScaling'
-    { _dlbasLayerIds :: [Text]
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dlbasLayerIds :: [Text]
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeLoadBasedAutoScaling' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -59,10 +60,9 @@
 describeLoadBasedAutoScaling
     :: DescribeLoadBasedAutoScaling
 describeLoadBasedAutoScaling =
-    DescribeLoadBasedAutoScaling'
-    { _dlbasLayerIds = mempty
-    }
+  DescribeLoadBasedAutoScaling' {_dlbasLayerIds = mempty}
 
+
 -- | An array of layer IDs.
 dlbasLayerIds :: Lens' DescribeLoadBasedAutoScaling [Text]
 dlbasLayerIds = lens _dlbasLayerIds (\ s a -> s{_dlbasLayerIds = a}) . _Coerce;
@@ -80,9 +80,9 @@
                       mempty)
                      <*> (pure (fromEnum s)))
 
-instance Hashable DescribeLoadBasedAutoScaling
+instance Hashable DescribeLoadBasedAutoScaling where
 
-instance NFData DescribeLoadBasedAutoScaling
+instance NFData DescribeLoadBasedAutoScaling where
 
 instance ToHeaders DescribeLoadBasedAutoScaling where
         toHeaders
@@ -111,10 +111,11 @@
 --
 -- /See:/ 'describeLoadBasedAutoScalingResponse' smart constructor.
 data DescribeLoadBasedAutoScalingResponse = DescribeLoadBasedAutoScalingResponse'
-    { _dlbasrsLoadBasedAutoScalingConfigurations :: !(Maybe [LoadBasedAutoScalingConfiguration])
-    , _dlbasrsResponseStatus                     :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dlbasrsLoadBasedAutoScalingConfigurations :: !(Maybe [LoadBasedAutoScalingConfiguration])
+  , _dlbasrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeLoadBasedAutoScalingResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -126,11 +127,12 @@
     :: Int -- ^ 'dlbasrsResponseStatus'
     -> DescribeLoadBasedAutoScalingResponse
 describeLoadBasedAutoScalingResponse pResponseStatus_ =
-    DescribeLoadBasedAutoScalingResponse'
-    { _dlbasrsLoadBasedAutoScalingConfigurations = Nothing
-    , _dlbasrsResponseStatus = pResponseStatus_
-    }
+  DescribeLoadBasedAutoScalingResponse'
+  { _dlbasrsLoadBasedAutoScalingConfigurations = Nothing
+  , _dlbasrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | An array of @LoadBasedAutoScalingConfiguration@ objects that describe each layer's configuration.
 dlbasrsLoadBasedAutoScalingConfigurations :: Lens' DescribeLoadBasedAutoScalingResponse [LoadBasedAutoScalingConfiguration]
 dlbasrsLoadBasedAutoScalingConfigurations = lens _dlbasrsLoadBasedAutoScalingConfigurations (\ s a -> s{_dlbasrsLoadBasedAutoScalingConfigurations = a}) . _Default . _Coerce;
@@ -140,3 +142,4 @@
 dlbasrsResponseStatus = lens _dlbasrsResponseStatus (\ s a -> s{_dlbasrsResponseStatus = a});
 
 instance NFData DescribeLoadBasedAutoScalingResponse
+         where
diff --git a/gen/Network/AWS/OpsWorks/DescribeMyUserProfile.hs b/gen/Network/AWS/OpsWorks/DescribeMyUserProfile.hs
--- a/gen/Network/AWS/OpsWorks/DescribeMyUserProfile.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeMyUserProfile.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DescribeMyUserProfile
--- 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,24 +37,26 @@
     , dmuprsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'describeMyUserProfile' smart constructor.
 data DescribeMyUserProfile =
-    DescribeMyUserProfile'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DescribeMyUserProfile'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeMyUserProfile' with the minimum fields required to make a request.
 --
 describeMyUserProfile
     :: DescribeMyUserProfile
 describeMyUserProfile = DescribeMyUserProfile'
 
+
 instance AWSRequest DescribeMyUserProfile where
         type Rs DescribeMyUserProfile =
              DescribeMyUserProfileResponse
@@ -65,9 +67,9 @@
                  DescribeMyUserProfileResponse' <$>
                    (x .?> "UserProfile") <*> (pure (fromEnum s)))
 
-instance Hashable DescribeMyUserProfile
+instance Hashable DescribeMyUserProfile where
 
-instance NFData DescribeMyUserProfile
+instance NFData DescribeMyUserProfile where
 
 instance ToHeaders DescribeMyUserProfile where
         toHeaders
@@ -94,10 +96,11 @@
 --
 -- /See:/ 'describeMyUserProfileResponse' smart constructor.
 data DescribeMyUserProfileResponse = DescribeMyUserProfileResponse'
-    { _dmuprsUserProfile    :: !(Maybe SelfUserProfile)
-    , _dmuprsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dmuprsUserProfile    :: !(Maybe SelfUserProfile)
+  , _dmuprsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeMyUserProfileResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -109,11 +112,10 @@
     :: Int -- ^ 'dmuprsResponseStatus'
     -> DescribeMyUserProfileResponse
 describeMyUserProfileResponse pResponseStatus_ =
-    DescribeMyUserProfileResponse'
-    { _dmuprsUserProfile = Nothing
-    , _dmuprsResponseStatus = pResponseStatus_
-    }
+  DescribeMyUserProfileResponse'
+  {_dmuprsUserProfile = Nothing, _dmuprsResponseStatus = pResponseStatus_}
 
+
 -- | A @UserProfile@ object that describes the user's SSH information.
 dmuprsUserProfile :: Lens' DescribeMyUserProfileResponse (Maybe SelfUserProfile)
 dmuprsUserProfile = lens _dmuprsUserProfile (\ s a -> s{_dmuprsUserProfile = a});
@@ -122,4 +124,4 @@
 dmuprsResponseStatus :: Lens' DescribeMyUserProfileResponse Int
 dmuprsResponseStatus = lens _dmuprsResponseStatus (\ s a -> s{_dmuprsResponseStatus = a});
 
-instance NFData DescribeMyUserProfileResponse
+instance NFData DescribeMyUserProfileResponse where
diff --git a/gen/Network/AWS/OpsWorks/DescribePermissions.hs b/gen/Network/AWS/OpsWorks/DescribePermissions.hs
--- a/gen/Network/AWS/OpsWorks/DescribePermissions.hs
+++ b/gen/Network/AWS/OpsWorks/DescribePermissions.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DescribePermissions
--- 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)
 --
@@ -40,19 +40,20 @@
     , dprsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'describePermissions' smart constructor.
 data DescribePermissions = DescribePermissions'
-    { _dpIAMUserARN :: !(Maybe Text)
-    , _dpStackId    :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dpIAMUserARN :: !(Maybe Text)
+  , _dpStackId    :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribePermissions' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -63,11 +64,9 @@
 describePermissions
     :: DescribePermissions
 describePermissions =
-    DescribePermissions'
-    { _dpIAMUserARN = Nothing
-    , _dpStackId = Nothing
-    }
+  DescribePermissions' {_dpIAMUserARN = Nothing, _dpStackId = Nothing}
 
+
 -- | The user's IAM ARN. This can also be a federated user's ARN. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers> .
 dpIAMUserARN :: Lens' DescribePermissions (Maybe Text)
 dpIAMUserARN = lens _dpIAMUserARN (\ s a -> s{_dpIAMUserARN = a});
@@ -87,9 +86,9 @@
                    (x .?> "Permissions" .!@ mempty) <*>
                      (pure (fromEnum s)))
 
-instance Hashable DescribePermissions
+instance Hashable DescribePermissions where
 
-instance NFData DescribePermissions
+instance NFData DescribePermissions where
 
 instance ToHeaders DescribePermissions where
         toHeaders
@@ -120,10 +119,11 @@
 --
 -- /See:/ 'describePermissionsResponse' smart constructor.
 data DescribePermissionsResponse = DescribePermissionsResponse'
-    { _dprsPermissions    :: !(Maybe [Permission])
-    , _dprsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dprsPermissions    :: !(Maybe [Permission])
+  , _dprsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribePermissionsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -135,11 +135,10 @@
     :: Int -- ^ 'dprsResponseStatus'
     -> DescribePermissionsResponse
 describePermissionsResponse pResponseStatus_ =
-    DescribePermissionsResponse'
-    { _dprsPermissions = Nothing
-    , _dprsResponseStatus = pResponseStatus_
-    }
+  DescribePermissionsResponse'
+  {_dprsPermissions = Nothing, _dprsResponseStatus = pResponseStatus_}
 
+
 -- | An array of @Permission@ objects that describe the stack permissions.     * If the request object contains only a stack ID, the array contains a @Permission@ object with permissions for each of the stack IAM ARNs.     * If the request object contains only an IAM ARN, the array contains a @Permission@ object with permissions for each of the user's stack IDs.     * If the request contains a stack ID and an IAM ARN, the array contains a single @Permission@ object with permissions for the specified stack and IAM ARN.
 dprsPermissions :: Lens' DescribePermissionsResponse [Permission]
 dprsPermissions = lens _dprsPermissions (\ s a -> s{_dprsPermissions = a}) . _Default . _Coerce;
@@ -148,4 +147,4 @@
 dprsResponseStatus :: Lens' DescribePermissionsResponse Int
 dprsResponseStatus = lens _dprsResponseStatus (\ s a -> s{_dprsResponseStatus = a});
 
-instance NFData DescribePermissionsResponse
+instance NFData DescribePermissionsResponse where
diff --git a/gen/Network/AWS/OpsWorks/DescribeRAIdArrays.hs b/gen/Network/AWS/OpsWorks/DescribeRAIdArrays.hs
--- a/gen/Network/AWS/OpsWorks/DescribeRAIdArrays.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeRAIdArrays.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DescribeRAIdArrays
--- 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 @@
     , draiarsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'describeRAIdArrays' smart constructor.
 data DescribeRAIdArrays = DescribeRAIdArrays'
-    { _draiaInstanceId   :: !(Maybe Text)
-    , _draiaRAIdArrayIds :: !(Maybe [Text])
-    , _draiaStackId      :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _draiaInstanceId   :: !(Maybe Text)
+  , _draiaRAIdArrayIds :: !(Maybe [Text])
+  , _draiaStackId      :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeRAIdArrays' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -67,12 +68,13 @@
 describeRAIdArrays
     :: DescribeRAIdArrays
 describeRAIdArrays =
-    DescribeRAIdArrays'
-    { _draiaInstanceId = Nothing
-    , _draiaRAIdArrayIds = Nothing
-    , _draiaStackId = Nothing
-    }
+  DescribeRAIdArrays'
+  { _draiaInstanceId = Nothing
+  , _draiaRAIdArrayIds = Nothing
+  , _draiaStackId = Nothing
+  }
 
+
 -- | The instance ID. If you use this parameter, @DescribeRaidArrays@ returns descriptions of the RAID arrays associated with the specified instance.
 draiaInstanceId :: Lens' DescribeRAIdArrays (Maybe Text)
 draiaInstanceId = lens _draiaInstanceId (\ s a -> s{_draiaInstanceId = a});
@@ -96,9 +98,9 @@
                    (x .?> "RaidArrays" .!@ mempty) <*>
                      (pure (fromEnum s)))
 
-instance Hashable DescribeRAIdArrays
+instance Hashable DescribeRAIdArrays where
 
-instance NFData DescribeRAIdArrays
+instance NFData DescribeRAIdArrays where
 
 instance ToHeaders DescribeRAIdArrays where
         toHeaders
@@ -130,10 +132,11 @@
 --
 -- /See:/ 'describeRAIdArraysResponse' smart constructor.
 data DescribeRAIdArraysResponse = DescribeRAIdArraysResponse'
-    { _draiarsRAIdArrays     :: !(Maybe [RAIdArray])
-    , _draiarsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _draiarsRAIdArrays     :: !(Maybe [RAIdArray])
+  , _draiarsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeRAIdArraysResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -145,11 +148,10 @@
     :: Int -- ^ 'draiarsResponseStatus'
     -> DescribeRAIdArraysResponse
 describeRAIdArraysResponse pResponseStatus_ =
-    DescribeRAIdArraysResponse'
-    { _draiarsRAIdArrays = Nothing
-    , _draiarsResponseStatus = pResponseStatus_
-    }
+  DescribeRAIdArraysResponse'
+  {_draiarsRAIdArrays = Nothing, _draiarsResponseStatus = pResponseStatus_}
 
+
 -- | A @RaidArrays@ object that describes the specified RAID arrays.
 draiarsRAIdArrays :: Lens' DescribeRAIdArraysResponse [RAIdArray]
 draiarsRAIdArrays = lens _draiarsRAIdArrays (\ s a -> s{_draiarsRAIdArrays = a}) . _Default . _Coerce;
@@ -158,4 +160,4 @@
 draiarsResponseStatus :: Lens' DescribeRAIdArraysResponse Int
 draiarsResponseStatus = lens _draiarsResponseStatus (\ s a -> s{_draiarsResponseStatus = a});
 
-instance NFData DescribeRAIdArraysResponse
+instance NFData DescribeRAIdArraysResponse where
diff --git a/gen/Network/AWS/OpsWorks/DescribeRDSDBInstances.hs b/gen/Network/AWS/OpsWorks/DescribeRDSDBInstances.hs
--- a/gen/Network/AWS/OpsWorks/DescribeRDSDBInstances.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeRDSDBInstances.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DescribeRDSDBInstances
--- 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)
 --
@@ -23,6 +23,8 @@
 --
 -- __Required Permissions__ : To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions> .
 --
+-- This call accepts only one resource-identifying parameter.
+--
 module Network.AWS.OpsWorks.DescribeRDSDBInstances
     (
     -- * Creating a Request
@@ -40,19 +42,20 @@
     , drdirsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'describeRDSDBInstances' smart constructor.
 data DescribeRDSDBInstances = DescribeRDSDBInstances'
-    { _drdiRDSDBInstanceARNs :: !(Maybe [Text])
-    , _drdiStackId           :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _drdiRDSDBInstanceARNs :: !(Maybe [Text])
+  , _drdiStackId           :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeRDSDBInstances' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -64,11 +67,10 @@
     :: Text -- ^ 'drdiStackId'
     -> DescribeRDSDBInstances
 describeRDSDBInstances pStackId_ =
-    DescribeRDSDBInstances'
-    { _drdiRDSDBInstanceARNs = Nothing
-    , _drdiStackId = pStackId_
-    }
+  DescribeRDSDBInstances'
+  {_drdiRDSDBInstanceARNs = Nothing, _drdiStackId = pStackId_}
 
+
 -- | An array containing the ARNs of the instances to be described.
 drdiRDSDBInstanceARNs :: Lens' DescribeRDSDBInstances [Text]
 drdiRDSDBInstanceARNs = lens _drdiRDSDBInstanceARNs (\ s a -> s{_drdiRDSDBInstanceARNs = a}) . _Default . _Coerce;
@@ -88,9 +90,9 @@
                    (x .?> "RdsDbInstances" .!@ mempty) <*>
                      (pure (fromEnum s)))
 
-instance Hashable DescribeRDSDBInstances
+instance Hashable DescribeRDSDBInstances where
 
-instance NFData DescribeRDSDBInstances
+instance NFData DescribeRDSDBInstances where
 
 instance ToHeaders DescribeRDSDBInstances where
         toHeaders
@@ -121,10 +123,11 @@
 --
 -- /See:/ 'describeRDSDBInstancesResponse' smart constructor.
 data DescribeRDSDBInstancesResponse = DescribeRDSDBInstancesResponse'
-    { _drdirsRDSDBInstances :: !(Maybe [RDSDBInstance])
-    , _drdirsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _drdirsRDSDBInstances :: !(Maybe [RDSDBInstance])
+  , _drdirsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeRDSDBInstancesResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -136,11 +139,10 @@
     :: Int -- ^ 'drdirsResponseStatus'
     -> DescribeRDSDBInstancesResponse
 describeRDSDBInstancesResponse pResponseStatus_ =
-    DescribeRDSDBInstancesResponse'
-    { _drdirsRDSDBInstances = Nothing
-    , _drdirsResponseStatus = pResponseStatus_
-    }
+  DescribeRDSDBInstancesResponse'
+  {_drdirsRDSDBInstances = Nothing, _drdirsResponseStatus = pResponseStatus_}
 
+
 -- | An a array of @RdsDbInstance@ objects that describe the instances.
 drdirsRDSDBInstances :: Lens' DescribeRDSDBInstancesResponse [RDSDBInstance]
 drdirsRDSDBInstances = lens _drdirsRDSDBInstances (\ s a -> s{_drdirsRDSDBInstances = a}) . _Default . _Coerce;
@@ -149,4 +151,4 @@
 drdirsResponseStatus :: Lens' DescribeRDSDBInstancesResponse Int
 drdirsResponseStatus = lens _drdirsResponseStatus (\ s a -> s{_drdirsResponseStatus = a});
 
-instance NFData DescribeRDSDBInstancesResponse
+instance NFData DescribeRDSDBInstancesResponse where
diff --git a/gen/Network/AWS/OpsWorks/DescribeServiceErrors.hs b/gen/Network/AWS/OpsWorks/DescribeServiceErrors.hs
--- a/gen/Network/AWS/OpsWorks/DescribeServiceErrors.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeServiceErrors.hs
@@ -12,17 +12,19 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DescribeServiceErrors
--- 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)
 --
--- Describes AWS OpsWorks service errors.
+-- Describes AWS OpsWorks Stacks service errors.
 --
 --
 -- __Required Permissions__ : To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions> .
 --
+-- This call accepts only one resource-identifying parameter.
+--
 module Network.AWS.OpsWorks.DescribeServiceErrors
     (
     -- * Creating a Request
@@ -41,20 +43,21 @@
     , dsersResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'describeServiceErrors' smart constructor.
 data DescribeServiceErrors = DescribeServiceErrors'
-    { _dseInstanceId      :: !(Maybe Text)
-    , _dseStackId         :: !(Maybe Text)
-    , _dseServiceErrorIds :: !(Maybe [Text])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dseInstanceId      :: !(Maybe Text)
+  , _dseStackId         :: !(Maybe Text)
+  , _dseServiceErrorIds :: !(Maybe [Text])
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeServiceErrors' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -67,12 +70,13 @@
 describeServiceErrors
     :: DescribeServiceErrors
 describeServiceErrors =
-    DescribeServiceErrors'
-    { _dseInstanceId = Nothing
-    , _dseStackId = Nothing
-    , _dseServiceErrorIds = Nothing
-    }
+  DescribeServiceErrors'
+  { _dseInstanceId = Nothing
+  , _dseStackId = Nothing
+  , _dseServiceErrorIds = Nothing
+  }
 
+
 -- | The instance ID. If you use this parameter, @DescribeServiceErrors@ returns descriptions of the errors associated with the specified instance.
 dseInstanceId :: Lens' DescribeServiceErrors (Maybe Text)
 dseInstanceId = lens _dseInstanceId (\ s a -> s{_dseInstanceId = a});
@@ -96,9 +100,9 @@
                    (x .?> "ServiceErrors" .!@ mempty) <*>
                      (pure (fromEnum s)))
 
-instance Hashable DescribeServiceErrors
+instance Hashable DescribeServiceErrors where
 
-instance NFData DescribeServiceErrors
+instance NFData DescribeServiceErrors where
 
 instance ToHeaders DescribeServiceErrors where
         toHeaders
@@ -130,10 +134,11 @@
 --
 -- /See:/ 'describeServiceErrorsResponse' smart constructor.
 data DescribeServiceErrorsResponse = DescribeServiceErrorsResponse'
-    { _dsersServiceErrors  :: !(Maybe [ServiceError'])
-    , _dsersResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dsersServiceErrors  :: !(Maybe [ServiceError'])
+  , _dsersResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeServiceErrorsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -145,11 +150,10 @@
     :: Int -- ^ 'dsersResponseStatus'
     -> DescribeServiceErrorsResponse
 describeServiceErrorsResponse pResponseStatus_ =
-    DescribeServiceErrorsResponse'
-    { _dsersServiceErrors = Nothing
-    , _dsersResponseStatus = pResponseStatus_
-    }
+  DescribeServiceErrorsResponse'
+  {_dsersServiceErrors = Nothing, _dsersResponseStatus = pResponseStatus_}
 
+
 -- | An array of @ServiceError@ objects that describe the specified service errors.
 dsersServiceErrors :: Lens' DescribeServiceErrorsResponse [ServiceError']
 dsersServiceErrors = lens _dsersServiceErrors (\ s a -> s{_dsersServiceErrors = a}) . _Default . _Coerce;
@@ -158,4 +162,4 @@
 dsersResponseStatus :: Lens' DescribeServiceErrorsResponse Int
 dsersResponseStatus = lens _dsersResponseStatus (\ s a -> s{_dsersResponseStatus = a});
 
-instance NFData DescribeServiceErrorsResponse
+instance NFData DescribeServiceErrorsResponse where
diff --git a/gen/Network/AWS/OpsWorks/DescribeStackProvisioningParameters.hs b/gen/Network/AWS/OpsWorks/DescribeStackProvisioningParameters.hs
--- a/gen/Network/AWS/OpsWorks/DescribeStackProvisioningParameters.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeStackProvisioningParameters.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DescribeStackProvisioningParameters
--- 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)
 --
@@ -40,18 +40,19 @@
     , dspprsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'describeStackProvisioningParameters' smart constructor.
 newtype DescribeStackProvisioningParameters = DescribeStackProvisioningParameters'
-    { _dsppStackId :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dsppStackId :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeStackProvisioningParameters' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -61,16 +62,16 @@
     :: Text -- ^ 'dsppStackId'
     -> DescribeStackProvisioningParameters
 describeStackProvisioningParameters pStackId_ =
-    DescribeStackProvisioningParameters'
-    { _dsppStackId = pStackId_
-    }
+  DescribeStackProvisioningParameters' {_dsppStackId = pStackId_}
 
+
 -- | The stack ID
 dsppStackId :: Lens' DescribeStackProvisioningParameters Text
 dsppStackId = lens _dsppStackId (\ s a -> s{_dsppStackId = a});
 
 instance AWSRequest
-         DescribeStackProvisioningParameters where
+           DescribeStackProvisioningParameters
+         where
         type Rs DescribeStackProvisioningParameters =
              DescribeStackProvisioningParametersResponse
         request = postJSON opsWorks
@@ -83,11 +84,14 @@
                      <*> (pure (fromEnum s)))
 
 instance Hashable DescribeStackProvisioningParameters
+         where
 
 instance NFData DescribeStackProvisioningParameters
+         where
 
 instance ToHeaders
-         DescribeStackProvisioningParameters where
+           DescribeStackProvisioningParameters
+         where
         toHeaders
           = const
               (mconcat
@@ -117,16 +121,17 @@
 --
 -- /See:/ 'describeStackProvisioningParametersResponse' smart constructor.
 data DescribeStackProvisioningParametersResponse = DescribeStackProvisioningParametersResponse'
-    { _dspprsAgentInstallerURL :: !(Maybe Text)
-    , _dspprsParameters        :: !(Maybe (Map Text Text))
-    , _dspprsResponseStatus    :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dspprsAgentInstallerURL :: !(Maybe Text)
+  , _dspprsParameters        :: !(Maybe (Map Text Text))
+  , _dspprsResponseStatus    :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeStackProvisioningParametersResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dspprsAgentInstallerURL' - The AWS OpsWorks agent installer's URL.
+-- * 'dspprsAgentInstallerURL' - The AWS OpsWorks Stacks agent installer's URL.
 --
 -- * 'dspprsParameters' - An embedded object that contains the provisioning parameters.
 --
@@ -135,13 +140,14 @@
     :: Int -- ^ 'dspprsResponseStatus'
     -> DescribeStackProvisioningParametersResponse
 describeStackProvisioningParametersResponse pResponseStatus_ =
-    DescribeStackProvisioningParametersResponse'
-    { _dspprsAgentInstallerURL = Nothing
-    , _dspprsParameters = Nothing
-    , _dspprsResponseStatus = pResponseStatus_
-    }
+  DescribeStackProvisioningParametersResponse'
+  { _dspprsAgentInstallerURL = Nothing
+  , _dspprsParameters = Nothing
+  , _dspprsResponseStatus = pResponseStatus_
+  }
 
--- | The AWS OpsWorks agent installer's URL.
+
+-- | The AWS OpsWorks Stacks agent installer's URL.
 dspprsAgentInstallerURL :: Lens' DescribeStackProvisioningParametersResponse (Maybe Text)
 dspprsAgentInstallerURL = lens _dspprsAgentInstallerURL (\ s a -> s{_dspprsAgentInstallerURL = a});
 
@@ -154,4 +160,5 @@
 dspprsResponseStatus = lens _dspprsResponseStatus (\ s a -> s{_dspprsResponseStatus = a});
 
 instance NFData
-         DescribeStackProvisioningParametersResponse
+           DescribeStackProvisioningParametersResponse
+         where
diff --git a/gen/Network/AWS/OpsWorks/DescribeStackSummary.hs b/gen/Network/AWS/OpsWorks/DescribeStackSummary.hs
--- a/gen/Network/AWS/OpsWorks/DescribeStackSummary.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeStackSummary.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DescribeStackSummary
--- 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 @@
     , dssrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'describeStackSummary' smart constructor.
 newtype DescribeStackSummary = DescribeStackSummary'
-    { _dssStackId :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dssStackId :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeStackSummary' 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 @@
 describeStackSummary
     :: Text -- ^ 'dssStackId'
     -> DescribeStackSummary
-describeStackSummary pStackId_ =
-    DescribeStackSummary'
-    { _dssStackId = pStackId_
-    }
+describeStackSummary pStackId_ = DescribeStackSummary' {_dssStackId = pStackId_}
 
+
 -- | The stack ID.
 dssStackId :: Lens' DescribeStackSummary Text
 dssStackId = lens _dssStackId (\ s a -> s{_dssStackId = a});
@@ -78,9 +77,9 @@
                  DescribeStackSummaryResponse' <$>
                    (x .?> "StackSummary") <*> (pure (fromEnum s)))
 
-instance Hashable DescribeStackSummary
+instance Hashable DescribeStackSummary where
 
-instance NFData DescribeStackSummary
+instance NFData DescribeStackSummary where
 
 instance ToHeaders DescribeStackSummary where
         toHeaders
@@ -109,10 +108,11 @@
 --
 -- /See:/ 'describeStackSummaryResponse' smart constructor.
 data DescribeStackSummaryResponse = DescribeStackSummaryResponse'
-    { _dssrsStackSummary   :: !(Maybe StackSummary)
-    , _dssrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dssrsStackSummary   :: !(Maybe StackSummary)
+  , _dssrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeStackSummaryResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -124,11 +124,10 @@
     :: Int -- ^ 'dssrsResponseStatus'
     -> DescribeStackSummaryResponse
 describeStackSummaryResponse pResponseStatus_ =
-    DescribeStackSummaryResponse'
-    { _dssrsStackSummary = Nothing
-    , _dssrsResponseStatus = pResponseStatus_
-    }
+  DescribeStackSummaryResponse'
+  {_dssrsStackSummary = Nothing, _dssrsResponseStatus = pResponseStatus_}
 
+
 -- | A @StackSummary@ object that contains the results.
 dssrsStackSummary :: Lens' DescribeStackSummaryResponse (Maybe StackSummary)
 dssrsStackSummary = lens _dssrsStackSummary (\ s a -> s{_dssrsStackSummary = a});
@@ -137,4 +136,4 @@
 dssrsResponseStatus :: Lens' DescribeStackSummaryResponse Int
 dssrsResponseStatus = lens _dssrsResponseStatus (\ s a -> s{_dssrsResponseStatus = a});
 
-instance NFData DescribeStackSummaryResponse
+instance NFData DescribeStackSummaryResponse where
diff --git a/gen/Network/AWS/OpsWorks/DescribeStacks.hs b/gen/Network/AWS/OpsWorks/DescribeStacks.hs
--- a/gen/Network/AWS/OpsWorks/DescribeStacks.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeStacks.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DescribeStacks
--- 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 @@
     , dsrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'describeStacks' smart constructor.
 newtype DescribeStacks = DescribeStacks'
-    { _dsStackIds :: Maybe [Text]
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dsStackIds :: Maybe [Text]
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeStacks' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -58,11 +59,9 @@
 -- * 'dsStackIds' - An array of stack IDs that specify the stacks to be described. If you omit this parameter, @DescribeStacks@ returns a description of every stack.
 describeStacks
     :: DescribeStacks
-describeStacks =
-    DescribeStacks'
-    { _dsStackIds = Nothing
-    }
+describeStacks = DescribeStacks' {_dsStackIds = Nothing}
 
+
 -- | An array of stack IDs that specify the stacks to be described. If you omit this parameter, @DescribeStacks@ returns a description of every stack.
 dsStackIds :: Lens' DescribeStacks [Text]
 dsStackIds = lens _dsStackIds (\ s a -> s{_dsStackIds = a}) . _Default . _Coerce;
@@ -76,9 +75,9 @@
                  DescribeStacksResponse' <$>
                    (x .?> "Stacks" .!@ mempty) <*> (pure (fromEnum s)))
 
-instance Hashable DescribeStacks
+instance Hashable DescribeStacks where
 
-instance NFData DescribeStacks
+instance NFData DescribeStacks where
 
 instance ToHeaders DescribeStacks where
         toHeaders
@@ -106,10 +105,11 @@
 --
 -- /See:/ 'describeStacksResponse' smart constructor.
 data DescribeStacksResponse = DescribeStacksResponse'
-    { _dsrsStacks         :: !(Maybe [Stack])
-    , _dsrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dsrsStacks         :: !(Maybe [Stack])
+  , _dsrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeStacksResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -121,11 +121,10 @@
     :: Int -- ^ 'dsrsResponseStatus'
     -> DescribeStacksResponse
 describeStacksResponse pResponseStatus_ =
-    DescribeStacksResponse'
-    { _dsrsStacks = Nothing
-    , _dsrsResponseStatus = pResponseStatus_
-    }
+  DescribeStacksResponse'
+  {_dsrsStacks = Nothing, _dsrsResponseStatus = pResponseStatus_}
 
+
 -- | An array of @Stack@ objects that describe the stacks.
 dsrsStacks :: Lens' DescribeStacksResponse [Stack]
 dsrsStacks = lens _dsrsStacks (\ s a -> s{_dsrsStacks = a}) . _Default . _Coerce;
@@ -134,4 +133,4 @@
 dsrsResponseStatus :: Lens' DescribeStacksResponse Int
 dsrsResponseStatus = lens _dsrsResponseStatus (\ s a -> s{_dsrsResponseStatus = a});
 
-instance NFData DescribeStacksResponse
+instance NFData DescribeStacksResponse where
diff --git a/gen/Network/AWS/OpsWorks/DescribeTimeBasedAutoScaling.hs b/gen/Network/AWS/OpsWorks/DescribeTimeBasedAutoScaling.hs
--- a/gen/Network/AWS/OpsWorks/DescribeTimeBasedAutoScaling.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeTimeBasedAutoScaling.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DescribeTimeBasedAutoScaling
--- 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 @@
     , dtbasrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'describeTimeBasedAutoScaling' smart constructor.
 newtype DescribeTimeBasedAutoScaling = DescribeTimeBasedAutoScaling'
-    { _dtbasInstanceIds :: [Text]
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dtbasInstanceIds :: [Text]
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeTimeBasedAutoScaling' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -59,10 +60,9 @@
 describeTimeBasedAutoScaling
     :: DescribeTimeBasedAutoScaling
 describeTimeBasedAutoScaling =
-    DescribeTimeBasedAutoScaling'
-    { _dtbasInstanceIds = mempty
-    }
+  DescribeTimeBasedAutoScaling' {_dtbasInstanceIds = mempty}
 
+
 -- | An array of instance IDs.
 dtbasInstanceIds :: Lens' DescribeTimeBasedAutoScaling [Text]
 dtbasInstanceIds = lens _dtbasInstanceIds (\ s a -> s{_dtbasInstanceIds = a}) . _Coerce;
@@ -80,9 +80,9 @@
                       mempty)
                      <*> (pure (fromEnum s)))
 
-instance Hashable DescribeTimeBasedAutoScaling
+instance Hashable DescribeTimeBasedAutoScaling where
 
-instance NFData DescribeTimeBasedAutoScaling
+instance NFData DescribeTimeBasedAutoScaling where
 
 instance ToHeaders DescribeTimeBasedAutoScaling where
         toHeaders
@@ -112,10 +112,11 @@
 --
 -- /See:/ 'describeTimeBasedAutoScalingResponse' smart constructor.
 data DescribeTimeBasedAutoScalingResponse = DescribeTimeBasedAutoScalingResponse'
-    { _dtbasrsTimeBasedAutoScalingConfigurations :: !(Maybe [TimeBasedAutoScalingConfiguration])
-    , _dtbasrsResponseStatus                     :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dtbasrsTimeBasedAutoScalingConfigurations :: !(Maybe [TimeBasedAutoScalingConfiguration])
+  , _dtbasrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeTimeBasedAutoScalingResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -127,11 +128,12 @@
     :: Int -- ^ 'dtbasrsResponseStatus'
     -> DescribeTimeBasedAutoScalingResponse
 describeTimeBasedAutoScalingResponse pResponseStatus_ =
-    DescribeTimeBasedAutoScalingResponse'
-    { _dtbasrsTimeBasedAutoScalingConfigurations = Nothing
-    , _dtbasrsResponseStatus = pResponseStatus_
-    }
+  DescribeTimeBasedAutoScalingResponse'
+  { _dtbasrsTimeBasedAutoScalingConfigurations = Nothing
+  , _dtbasrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | An array of @TimeBasedAutoScalingConfiguration@ objects that describe the configuration for the specified instances.
 dtbasrsTimeBasedAutoScalingConfigurations :: Lens' DescribeTimeBasedAutoScalingResponse [TimeBasedAutoScalingConfiguration]
 dtbasrsTimeBasedAutoScalingConfigurations = lens _dtbasrsTimeBasedAutoScalingConfigurations (\ s a -> s{_dtbasrsTimeBasedAutoScalingConfigurations = a}) . _Default . _Coerce;
@@ -141,3 +143,4 @@
 dtbasrsResponseStatus = lens _dtbasrsResponseStatus (\ s a -> s{_dtbasrsResponseStatus = a});
 
 instance NFData DescribeTimeBasedAutoScalingResponse
+         where
diff --git a/gen/Network/AWS/OpsWorks/DescribeUserProfiles.hs b/gen/Network/AWS/OpsWorks/DescribeUserProfiles.hs
--- a/gen/Network/AWS/OpsWorks/DescribeUserProfiles.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeUserProfiles.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DescribeUserProfiles
--- 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 @@
     , duprsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'describeUserProfiles' smart constructor.
 newtype DescribeUserProfiles = DescribeUserProfiles'
-    { _dupIAMUserARNs :: Maybe [Text]
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dupIAMUserARNs :: Maybe [Text]
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeUserProfiles' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -58,11 +59,9 @@
 -- * 'dupIAMUserARNs' - An array of IAM or federated user ARNs that identify the users to be described.
 describeUserProfiles
     :: DescribeUserProfiles
-describeUserProfiles =
-    DescribeUserProfiles'
-    { _dupIAMUserARNs = Nothing
-    }
+describeUserProfiles = DescribeUserProfiles' {_dupIAMUserARNs = Nothing}
 
+
 -- | An array of IAM or federated user ARNs that identify the users to be described.
 dupIAMUserARNs :: Lens' DescribeUserProfiles [Text]
 dupIAMUserARNs = lens _dupIAMUserARNs (\ s a -> s{_dupIAMUserARNs = a}) . _Default . _Coerce;
@@ -78,9 +77,9 @@
                    (x .?> "UserProfiles" .!@ mempty) <*>
                      (pure (fromEnum s)))
 
-instance Hashable DescribeUserProfiles
+instance Hashable DescribeUserProfiles where
 
-instance NFData DescribeUserProfiles
+instance NFData DescribeUserProfiles where
 
 instance ToHeaders DescribeUserProfiles where
         toHeaders
@@ -109,10 +108,11 @@
 --
 -- /See:/ 'describeUserProfilesResponse' smart constructor.
 data DescribeUserProfilesResponse = DescribeUserProfilesResponse'
-    { _duprsUserProfiles   :: !(Maybe [UserProfile])
-    , _duprsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _duprsUserProfiles   :: !(Maybe [UserProfile])
+  , _duprsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeUserProfilesResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -124,11 +124,10 @@
     :: Int -- ^ 'duprsResponseStatus'
     -> DescribeUserProfilesResponse
 describeUserProfilesResponse pResponseStatus_ =
-    DescribeUserProfilesResponse'
-    { _duprsUserProfiles = Nothing
-    , _duprsResponseStatus = pResponseStatus_
-    }
+  DescribeUserProfilesResponse'
+  {_duprsUserProfiles = Nothing, _duprsResponseStatus = pResponseStatus_}
 
+
 -- | A @Users@ object that describes the specified users.
 duprsUserProfiles :: Lens' DescribeUserProfilesResponse [UserProfile]
 duprsUserProfiles = lens _duprsUserProfiles (\ s a -> s{_duprsUserProfiles = a}) . _Default . _Coerce;
@@ -137,4 +136,4 @@
 duprsResponseStatus :: Lens' DescribeUserProfilesResponse Int
 duprsResponseStatus = lens _duprsResponseStatus (\ s a -> s{_duprsResponseStatus = a});
 
-instance NFData DescribeUserProfilesResponse
+instance NFData DescribeUserProfilesResponse where
diff --git a/gen/Network/AWS/OpsWorks/DescribeVolumes.hs b/gen/Network/AWS/OpsWorks/DescribeVolumes.hs
--- a/gen/Network/AWS/OpsWorks/DescribeVolumes.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeVolumes.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DescribeVolumes
--- 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)
 --
@@ -42,21 +42,22 @@
     , dvrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'describeVolumes' smart constructor.
 data DescribeVolumes = DescribeVolumes'
-    { _dvInstanceId  :: !(Maybe Text)
-    , _dvVolumeIds   :: !(Maybe [Text])
-    , _dvRAIdArrayId :: !(Maybe Text)
-    , _dvStackId     :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dvInstanceId  :: !(Maybe Text)
+  , _dvVolumeIds   :: !(Maybe [Text])
+  , _dvRAIdArrayId :: !(Maybe Text)
+  , _dvStackId     :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeVolumes' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -71,13 +72,14 @@
 describeVolumes
     :: DescribeVolumes
 describeVolumes =
-    DescribeVolumes'
-    { _dvInstanceId = Nothing
-    , _dvVolumeIds = Nothing
-    , _dvRAIdArrayId = Nothing
-    , _dvStackId = Nothing
-    }
+  DescribeVolumes'
+  { _dvInstanceId = Nothing
+  , _dvVolumeIds = Nothing
+  , _dvRAIdArrayId = Nothing
+  , _dvStackId = Nothing
+  }
 
+
 -- | The instance ID. If you use this parameter, @DescribeVolumes@ returns descriptions of the volumes associated with the specified instance.
 dvInstanceId :: Lens' DescribeVolumes (Maybe Text)
 dvInstanceId = lens _dvInstanceId (\ s a -> s{_dvInstanceId = a});
@@ -103,9 +105,9 @@
                  DescribeVolumesResponse' <$>
                    (x .?> "Volumes" .!@ mempty) <*> (pure (fromEnum s)))
 
-instance Hashable DescribeVolumes
+instance Hashable DescribeVolumes where
 
-instance NFData DescribeVolumes
+instance NFData DescribeVolumes where
 
 instance ToHeaders DescribeVolumes where
         toHeaders
@@ -137,10 +139,11 @@
 --
 -- /See:/ 'describeVolumesResponse' smart constructor.
 data DescribeVolumesResponse = DescribeVolumesResponse'
-    { _dvrsVolumes        :: !(Maybe [Volume])
-    , _dvrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dvrsVolumes        :: !(Maybe [Volume])
+  , _dvrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeVolumesResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -152,11 +155,10 @@
     :: Int -- ^ 'dvrsResponseStatus'
     -> DescribeVolumesResponse
 describeVolumesResponse pResponseStatus_ =
-    DescribeVolumesResponse'
-    { _dvrsVolumes = Nothing
-    , _dvrsResponseStatus = pResponseStatus_
-    }
+  DescribeVolumesResponse'
+  {_dvrsVolumes = Nothing, _dvrsResponseStatus = pResponseStatus_}
 
+
 -- | An array of volume IDs.
 dvrsVolumes :: Lens' DescribeVolumesResponse [Volume]
 dvrsVolumes = lens _dvrsVolumes (\ s a -> s{_dvrsVolumes = a}) . _Default . _Coerce;
@@ -165,4 +167,4 @@
 dvrsResponseStatus :: Lens' DescribeVolumesResponse Int
 dvrsResponseStatus = lens _dvrsResponseStatus (\ s a -> s{_dvrsResponseStatus = a});
 
-instance NFData DescribeVolumesResponse
+instance NFData DescribeVolumesResponse where
diff --git a/gen/Network/AWS/OpsWorks/DetachElasticLoadBalancer.hs b/gen/Network/AWS/OpsWorks/DetachElasticLoadBalancer.hs
--- a/gen/Network/AWS/OpsWorks/DetachElasticLoadBalancer.hs
+++ b/gen/Network/AWS/OpsWorks/DetachElasticLoadBalancer.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DetachElasticLoadBalancer
--- 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 @@
     , DetachElasticLoadBalancerResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'detachElasticLoadBalancer' smart constructor.
 data DetachElasticLoadBalancer = DetachElasticLoadBalancer'
-    { _delbElasticLoadBalancerName :: !Text
-    , _delbLayerId                 :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _delbElasticLoadBalancerName :: !Text
+  , _delbLayerId                 :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DetachElasticLoadBalancer' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -62,11 +63,12 @@
     -> Text -- ^ 'delbLayerId'
     -> DetachElasticLoadBalancer
 detachElasticLoadBalancer pElasticLoadBalancerName_ pLayerId_ =
-    DetachElasticLoadBalancer'
-    { _delbElasticLoadBalancerName = pElasticLoadBalancerName_
-    , _delbLayerId = pLayerId_
-    }
+  DetachElasticLoadBalancer'
+  { _delbElasticLoadBalancerName = pElasticLoadBalancerName_
+  , _delbLayerId = pLayerId_
+  }
 
+
 -- | The Elastic Load Balancing instance's name.
 delbElasticLoadBalancerName :: Lens' DetachElasticLoadBalancer Text
 delbElasticLoadBalancerName = lens _delbElasticLoadBalancerName (\ s a -> s{_delbElasticLoadBalancerName = a});
@@ -82,9 +84,9 @@
         response
           = receiveNull DetachElasticLoadBalancerResponse'
 
-instance Hashable DetachElasticLoadBalancer
+instance Hashable DetachElasticLoadBalancer where
 
-instance NFData DetachElasticLoadBalancer
+instance NFData DetachElasticLoadBalancer where
 
 instance ToHeaders DetachElasticLoadBalancer where
         toHeaders
@@ -113,13 +115,16 @@
 
 -- | /See:/ 'detachElasticLoadBalancerResponse' smart constructor.
 data DetachElasticLoadBalancerResponse =
-    DetachElasticLoadBalancerResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DetachElasticLoadBalancerResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DetachElasticLoadBalancerResponse' with the minimum fields required to make a request.
 --
 detachElasticLoadBalancerResponse
     :: DetachElasticLoadBalancerResponse
 detachElasticLoadBalancerResponse = DetachElasticLoadBalancerResponse'
 
+
 instance NFData DetachElasticLoadBalancerResponse
+         where
diff --git a/gen/Network/AWS/OpsWorks/DisassociateElasticIP.hs b/gen/Network/AWS/OpsWorks/DisassociateElasticIP.hs
--- a/gen/Network/AWS/OpsWorks/DisassociateElasticIP.hs
+++ b/gen/Network/AWS/OpsWorks/DisassociateElasticIP.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.DisassociateElasticIP
--- 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 @@
     , DisassociateElasticIPResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'disassociateElasticIP' smart constructor.
 newtype DisassociateElasticIP = DisassociateElasticIP'
-    { _deiElasticIP :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _deiElasticIP :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DisassociateElasticIP' 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 -- ^ 'deiElasticIP'
     -> DisassociateElasticIP
 disassociateElasticIP pElasticIP_ =
-    DisassociateElasticIP'
-    { _deiElasticIP = pElasticIP_
-    }
+  DisassociateElasticIP' {_deiElasticIP = pElasticIP_}
 
+
 -- | The Elastic IP address.
 deiElasticIP :: Lens' DisassociateElasticIP Text
 deiElasticIP = lens _deiElasticIP (\ s a -> s{_deiElasticIP = a});
@@ -71,9 +71,9 @@
         request = postJSON opsWorks
         response = receiveNull DisassociateElasticIPResponse'
 
-instance Hashable DisassociateElasticIP
+instance Hashable DisassociateElasticIP where
 
-instance NFData DisassociateElasticIP
+instance NFData DisassociateElasticIP where
 
 instance ToHeaders DisassociateElasticIP where
         toHeaders
@@ -98,13 +98,15 @@
 
 -- | /See:/ 'disassociateElasticIPResponse' smart constructor.
 data DisassociateElasticIPResponse =
-    DisassociateElasticIPResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DisassociateElasticIPResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DisassociateElasticIPResponse' with the minimum fields required to make a request.
 --
 disassociateElasticIPResponse
     :: DisassociateElasticIPResponse
 disassociateElasticIPResponse = DisassociateElasticIPResponse'
 
-instance NFData DisassociateElasticIPResponse
+
+instance NFData DisassociateElasticIPResponse where
diff --git a/gen/Network/AWS/OpsWorks/GetHostnameSuggestion.hs b/gen/Network/AWS/OpsWorks/GetHostnameSuggestion.hs
--- a/gen/Network/AWS/OpsWorks/GetHostnameSuggestion.hs
+++ b/gen/Network/AWS/OpsWorks/GetHostnameSuggestion.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.GetHostnameSuggestion
--- 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)
 --
@@ -40,18 +40,19 @@
     , ghsrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'getHostnameSuggestion' smart constructor.
 newtype GetHostnameSuggestion = GetHostnameSuggestion'
-    { _ghsLayerId :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _ghsLayerId :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetHostnameSuggestion' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -61,10 +62,9 @@
     :: Text -- ^ 'ghsLayerId'
     -> GetHostnameSuggestion
 getHostnameSuggestion pLayerId_ =
-    GetHostnameSuggestion'
-    { _ghsLayerId = pLayerId_
-    }
+  GetHostnameSuggestion' {_ghsLayerId = pLayerId_}
 
+
 -- | The layer ID.
 ghsLayerId :: Lens' GetHostnameSuggestion Text
 ghsLayerId = lens _ghsLayerId (\ s a -> s{_ghsLayerId = a});
@@ -80,9 +80,9 @@
                    (x .?> "Hostname") <*> (x .?> "LayerId") <*>
                      (pure (fromEnum s)))
 
-instance Hashable GetHostnameSuggestion
+instance Hashable GetHostnameSuggestion where
 
-instance NFData GetHostnameSuggestion
+instance NFData GetHostnameSuggestion where
 
 instance ToHeaders GetHostnameSuggestion where
         toHeaders
@@ -111,11 +111,12 @@
 --
 -- /See:/ 'getHostnameSuggestionResponse' smart constructor.
 data GetHostnameSuggestionResponse = GetHostnameSuggestionResponse'
-    { _ghsrsHostname       :: !(Maybe Text)
-    , _ghsrsLayerId        :: !(Maybe Text)
-    , _ghsrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _ghsrsHostname       :: !(Maybe Text)
+  , _ghsrsLayerId        :: !(Maybe Text)
+  , _ghsrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetHostnameSuggestionResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -129,12 +130,13 @@
     :: Int -- ^ 'ghsrsResponseStatus'
     -> GetHostnameSuggestionResponse
 getHostnameSuggestionResponse pResponseStatus_ =
-    GetHostnameSuggestionResponse'
-    { _ghsrsHostname = Nothing
-    , _ghsrsLayerId = Nothing
-    , _ghsrsResponseStatus = pResponseStatus_
-    }
+  GetHostnameSuggestionResponse'
+  { _ghsrsHostname = Nothing
+  , _ghsrsLayerId = Nothing
+  , _ghsrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | The generated host name.
 ghsrsHostname :: Lens' GetHostnameSuggestionResponse (Maybe Text)
 ghsrsHostname = lens _ghsrsHostname (\ s a -> s{_ghsrsHostname = a});
@@ -147,4 +149,4 @@
 ghsrsResponseStatus :: Lens' GetHostnameSuggestionResponse Int
 ghsrsResponseStatus = lens _ghsrsResponseStatus (\ s a -> s{_ghsrsResponseStatus = a});
 
-instance NFData GetHostnameSuggestionResponse
+instance NFData GetHostnameSuggestionResponse where
diff --git a/gen/Network/AWS/OpsWorks/GrantAccess.hs b/gen/Network/AWS/OpsWorks/GrantAccess.hs
--- a/gen/Network/AWS/OpsWorks/GrantAccess.hs
+++ b/gen/Network/AWS/OpsWorks/GrantAccess.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.GrantAccess
--- 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,40 +38,39 @@
     , garsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'grantAccess' smart constructor.
 data GrantAccess = GrantAccess'
-    { _gaValidForInMinutes :: !(Maybe Nat)
-    , _gaInstanceId        :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gaValidForInMinutes :: !(Maybe Nat)
+  , _gaInstanceId        :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GrantAccess' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'gaValidForInMinutes' - The length of time (in minutes) that the grant is valid. When the grant expires at the end of this period, the user will no longer be able to use the credentials to log in. If the user is logged in at the time, he or she automatically will be logged out.
 --
--- * 'gaInstanceId' - The instance's AWS OpsWorks ID.
+-- * 'gaInstanceId' - The instance's AWS OpsWorks Stacks ID.
 grantAccess
     :: Text -- ^ 'gaInstanceId'
     -> GrantAccess
 grantAccess pInstanceId_ =
-    GrantAccess'
-    { _gaValidForInMinutes = Nothing
-    , _gaInstanceId = pInstanceId_
-    }
+  GrantAccess' {_gaValidForInMinutes = Nothing, _gaInstanceId = pInstanceId_}
 
+
 -- | The length of time (in minutes) that the grant is valid. When the grant expires at the end of this period, the user will no longer be able to use the credentials to log in. If the user is logged in at the time, he or she automatically will be logged out.
 gaValidForInMinutes :: Lens' GrantAccess (Maybe Natural)
 gaValidForInMinutes = lens _gaValidForInMinutes (\ s a -> s{_gaValidForInMinutes = a}) . mapping _Nat;
 
--- | The instance's AWS OpsWorks ID.
+-- | The instance's AWS OpsWorks Stacks ID.
 gaInstanceId :: Lens' GrantAccess Text
 gaInstanceId = lens _gaInstanceId (\ s a -> s{_gaInstanceId = a});
 
@@ -85,9 +84,9 @@
                    (x .?> "TemporaryCredential") <*>
                      (pure (fromEnum s)))
 
-instance Hashable GrantAccess
+instance Hashable GrantAccess where
 
-instance NFData GrantAccess
+instance NFData GrantAccess where
 
 instance ToHeaders GrantAccess where
         toHeaders
@@ -117,10 +116,11 @@
 --
 -- /See:/ 'grantAccessResponse' smart constructor.
 data GrantAccessResponse = GrantAccessResponse'
-    { _garsTemporaryCredential :: !(Maybe TemporaryCredential)
-    , _garsResponseStatus      :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _garsTemporaryCredential :: !(Maybe TemporaryCredential)
+  , _garsResponseStatus      :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GrantAccessResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -132,11 +132,10 @@
     :: Int -- ^ 'garsResponseStatus'
     -> GrantAccessResponse
 grantAccessResponse pResponseStatus_ =
-    GrantAccessResponse'
-    { _garsTemporaryCredential = Nothing
-    , _garsResponseStatus = pResponseStatus_
-    }
+  GrantAccessResponse'
+  {_garsTemporaryCredential = Nothing, _garsResponseStatus = pResponseStatus_}
 
+
 -- | A @TemporaryCredential@ object that contains the data needed to log in to the instance by RDP clients, such as the Microsoft Remote Desktop Connection.
 garsTemporaryCredential :: Lens' GrantAccessResponse (Maybe TemporaryCredential)
 garsTemporaryCredential = lens _garsTemporaryCredential (\ s a -> s{_garsTemporaryCredential = a});
@@ -145,4 +144,4 @@
 garsResponseStatus :: Lens' GrantAccessResponse Int
 garsResponseStatus = lens _garsResponseStatus (\ s a -> s{_garsResponseStatus = a});
 
-instance NFData GrantAccessResponse
+instance NFData GrantAccessResponse where
diff --git a/gen/Network/AWS/OpsWorks/ListTags.hs b/gen/Network/AWS/OpsWorks/ListTags.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/OpsWorks/ListTags.hs
@@ -0,0 +1,171 @@
+{-# 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.OpsWorks.ListTags
+-- 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)
+--
+-- Returns a list of tags that are applied to the specified stack or layer.
+--
+--
+module Network.AWS.OpsWorks.ListTags
+    (
+    -- * Creating a Request
+      listTags
+    , ListTags
+    -- * Request Lenses
+    , ltNextToken
+    , ltMaxResults
+    , ltResourceARN
+
+    -- * Destructuring the Response
+    , listTagsResponse
+    , ListTagsResponse
+    -- * Response Lenses
+    , ltrsNextToken
+    , ltrsTags
+    , ltrsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+
+-- | /See:/ 'listTags' smart constructor.
+data ListTags = ListTags'
+  { _ltNextToken   :: !(Maybe Text)
+  , _ltMaxResults  :: !(Maybe Int)
+  , _ltResourceARN :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListTags' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ltNextToken' - Do not use. A validation exception occurs if you add a @NextToken@ parameter to a @ListTagsRequest@ call.
+--
+-- * 'ltMaxResults' - Do not use. A validation exception occurs if you add a @MaxResults@ parameter to a @ListTagsRequest@ call.
+--
+-- * 'ltResourceARN' - The stack or layer's Amazon Resource Number (ARN).
+listTags
+    :: Text -- ^ 'ltResourceARN'
+    -> ListTags
+listTags pResourceARN_ =
+  ListTags'
+  { _ltNextToken = Nothing
+  , _ltMaxResults = Nothing
+  , _ltResourceARN = pResourceARN_
+  }
+
+
+-- | Do not use. A validation exception occurs if you add a @NextToken@ parameter to a @ListTagsRequest@ call.
+ltNextToken :: Lens' ListTags (Maybe Text)
+ltNextToken = lens _ltNextToken (\ s a -> s{_ltNextToken = a});
+
+-- | Do not use. A validation exception occurs if you add a @MaxResults@ parameter to a @ListTagsRequest@ call.
+ltMaxResults :: Lens' ListTags (Maybe Int)
+ltMaxResults = lens _ltMaxResults (\ s a -> s{_ltMaxResults = a});
+
+-- | The stack or layer's Amazon Resource Number (ARN).
+ltResourceARN :: Lens' ListTags Text
+ltResourceARN = lens _ltResourceARN (\ s a -> s{_ltResourceARN = a});
+
+instance AWSRequest ListTags where
+        type Rs ListTags = ListTagsResponse
+        request = postJSON opsWorks
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListTagsResponse' <$>
+                   (x .?> "NextToken") <*> (x .?> "Tags" .!@ mempty) <*>
+                     (pure (fromEnum s)))
+
+instance Hashable ListTags where
+
+instance NFData ListTags where
+
+instance ToHeaders ListTags where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.ListTags" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON ListTags where
+        toJSON ListTags'{..}
+          = object
+              (catMaybes
+                 [("NextToken" .=) <$> _ltNextToken,
+                  ("MaxResults" .=) <$> _ltMaxResults,
+                  Just ("ResourceArn" .= _ltResourceARN)])
+
+instance ToPath ListTags where
+        toPath = const "/"
+
+instance ToQuery ListTags where
+        toQuery = const mempty
+
+-- | Contains the response to a @ListTags@ request.
+--
+--
+--
+-- /See:/ 'listTagsResponse' smart constructor.
+data ListTagsResponse = ListTagsResponse'
+  { _ltrsNextToken      :: !(Maybe Text)
+  , _ltrsTags           :: !(Maybe (Map Text Text))
+  , _ltrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListTagsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ltrsNextToken' - If a paginated request does not return all of the remaining results, this parameter is set to a token that you can assign to the request object's @NextToken@ parameter to get the next set of results. If the previous paginated request returned all of the remaining results, this parameter is set to @null@ .
+--
+-- * 'ltrsTags' - A set of key-value pairs that contain tag keys and tag values that are attached to a stack or layer.
+--
+-- * 'ltrsResponseStatus' - -- | The response status code.
+listTagsResponse
+    :: Int -- ^ 'ltrsResponseStatus'
+    -> ListTagsResponse
+listTagsResponse pResponseStatus_ =
+  ListTagsResponse'
+  { _ltrsNextToken = Nothing
+  , _ltrsTags = Nothing
+  , _ltrsResponseStatus = pResponseStatus_
+  }
+
+
+-- | If a paginated request does not return all of the remaining results, this parameter is set to a token that you can assign to the request object's @NextToken@ parameter to get the next set of results. If the previous paginated request returned all of the remaining results, this parameter is set to @null@ .
+ltrsNextToken :: Lens' ListTagsResponse (Maybe Text)
+ltrsNextToken = lens _ltrsNextToken (\ s a -> s{_ltrsNextToken = a});
+
+-- | A set of key-value pairs that contain tag keys and tag values that are attached to a stack or layer.
+ltrsTags :: Lens' ListTagsResponse (HashMap Text Text)
+ltrsTags = lens _ltrsTags (\ s a -> s{_ltrsTags = a}) . _Default . _Map;
+
+-- | -- | The response status code.
+ltrsResponseStatus :: Lens' ListTagsResponse Int
+ltrsResponseStatus = lens _ltrsResponseStatus (\ s a -> s{_ltrsResponseStatus = a});
+
+instance NFData ListTagsResponse where
diff --git a/gen/Network/AWS/OpsWorks/RebootInstance.hs b/gen/Network/AWS/OpsWorks/RebootInstance.hs
--- a/gen/Network/AWS/OpsWorks/RebootInstance.hs
+++ b/gen/Network/AWS/OpsWorks/RebootInstance.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.RebootInstance
--- 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 @@
     , RebootInstanceResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'rebootInstance' smart constructor.
 newtype RebootInstance = RebootInstance'
-    { _riInstanceId :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _riInstanceId :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RebootInstance' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -56,11 +57,9 @@
 rebootInstance
     :: Text -- ^ 'riInstanceId'
     -> RebootInstance
-rebootInstance pInstanceId_ =
-    RebootInstance'
-    { _riInstanceId = pInstanceId_
-    }
+rebootInstance pInstanceId_ = RebootInstance' {_riInstanceId = pInstanceId_}
 
+
 -- | The instance ID.
 riInstanceId :: Lens' RebootInstance Text
 riInstanceId = lens _riInstanceId (\ s a -> s{_riInstanceId = a});
@@ -70,9 +69,9 @@
         request = postJSON opsWorks
         response = receiveNull RebootInstanceResponse'
 
-instance Hashable RebootInstance
+instance Hashable RebootInstance where
 
-instance NFData RebootInstance
+instance NFData RebootInstance where
 
 instance ToHeaders RebootInstance where
         toHeaders
@@ -96,13 +95,15 @@
 
 -- | /See:/ 'rebootInstanceResponse' smart constructor.
 data RebootInstanceResponse =
-    RebootInstanceResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  RebootInstanceResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RebootInstanceResponse' with the minimum fields required to make a request.
 --
 rebootInstanceResponse
     :: RebootInstanceResponse
 rebootInstanceResponse = RebootInstanceResponse'
 
-instance NFData RebootInstanceResponse
+
+instance NFData RebootInstanceResponse where
diff --git a/gen/Network/AWS/OpsWorks/RegisterEcsCluster.hs b/gen/Network/AWS/OpsWorks/RegisterEcsCluster.hs
--- a/gen/Network/AWS/OpsWorks/RegisterEcsCluster.hs
+++ b/gen/Network/AWS/OpsWorks/RegisterEcsCluster.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.RegisterEcsCluster
--- 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)
 --
@@ -40,19 +40,20 @@
     , recrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'registerEcsCluster' smart constructor.
 data RegisterEcsCluster = RegisterEcsCluster'
-    { _recEcsClusterARN :: !Text
-    , _recStackId       :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _recEcsClusterARN :: !Text
+  , _recStackId       :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegisterEcsCluster' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -65,11 +66,10 @@
     -> Text -- ^ 'recStackId'
     -> RegisterEcsCluster
 registerEcsCluster pEcsClusterARN_ pStackId_ =
-    RegisterEcsCluster'
-    { _recEcsClusterARN = pEcsClusterARN_
-    , _recStackId = pStackId_
-    }
+  RegisterEcsCluster'
+  {_recEcsClusterARN = pEcsClusterARN_, _recStackId = pStackId_}
 
+
 -- | The cluster's ARN.
 recEcsClusterARN :: Lens' RegisterEcsCluster Text
 recEcsClusterARN = lens _recEcsClusterARN (\ s a -> s{_recEcsClusterARN = a});
@@ -88,9 +88,9 @@
                  RegisterEcsClusterResponse' <$>
                    (x .?> "EcsClusterArn") <*> (pure (fromEnum s)))
 
-instance Hashable RegisterEcsCluster
+instance Hashable RegisterEcsCluster where
 
-instance NFData RegisterEcsCluster
+instance NFData RegisterEcsCluster where
 
 instance ToHeaders RegisterEcsCluster where
         toHeaders
@@ -121,10 +121,11 @@
 --
 -- /See:/ 'registerEcsClusterResponse' smart constructor.
 data RegisterEcsClusterResponse = RegisterEcsClusterResponse'
-    { _recrsEcsClusterARN  :: !(Maybe Text)
-    , _recrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _recrsEcsClusterARN  :: !(Maybe Text)
+  , _recrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegisterEcsClusterResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -136,11 +137,10 @@
     :: Int -- ^ 'recrsResponseStatus'
     -> RegisterEcsClusterResponse
 registerEcsClusterResponse pResponseStatus_ =
-    RegisterEcsClusterResponse'
-    { _recrsEcsClusterARN = Nothing
-    , _recrsResponseStatus = pResponseStatus_
-    }
+  RegisterEcsClusterResponse'
+  {_recrsEcsClusterARN = Nothing, _recrsResponseStatus = pResponseStatus_}
 
+
 -- | The cluster's ARN.
 recrsEcsClusterARN :: Lens' RegisterEcsClusterResponse (Maybe Text)
 recrsEcsClusterARN = lens _recrsEcsClusterARN (\ s a -> s{_recrsEcsClusterARN = a});
@@ -149,4 +149,4 @@
 recrsResponseStatus :: Lens' RegisterEcsClusterResponse Int
 recrsResponseStatus = lens _recrsResponseStatus (\ s a -> s{_recrsResponseStatus = a});
 
-instance NFData RegisterEcsClusterResponse
+instance NFData RegisterEcsClusterResponse where
diff --git a/gen/Network/AWS/OpsWorks/RegisterElasticIP.hs b/gen/Network/AWS/OpsWorks/RegisterElasticIP.hs
--- a/gen/Network/AWS/OpsWorks/RegisterElasticIP.hs
+++ b/gen/Network/AWS/OpsWorks/RegisterElasticIP.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.RegisterElasticIP
--- 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)
 --
@@ -40,19 +40,20 @@
     , reirsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'registerElasticIP' smart constructor.
 data RegisterElasticIP = RegisterElasticIP'
-    { _reiElasticIP :: !Text
-    , _reiStackId   :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _reiElasticIP :: !Text
+  , _reiStackId   :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegisterElasticIP' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -65,11 +66,9 @@
     -> Text -- ^ 'reiStackId'
     -> RegisterElasticIP
 registerElasticIP pElasticIP_ pStackId_ =
-    RegisterElasticIP'
-    { _reiElasticIP = pElasticIP_
-    , _reiStackId = pStackId_
-    }
+  RegisterElasticIP' {_reiElasticIP = pElasticIP_, _reiStackId = pStackId_}
 
+
 -- | The Elastic IP address.
 reiElasticIP :: Lens' RegisterElasticIP Text
 reiElasticIP = lens _reiElasticIP (\ s a -> s{_reiElasticIP = a});
@@ -87,9 +86,9 @@
                  RegisterElasticIPResponse' <$>
                    (x .?> "ElasticIp") <*> (pure (fromEnum s)))
 
-instance Hashable RegisterElasticIP
+instance Hashable RegisterElasticIP where
 
-instance NFData RegisterElasticIP
+instance NFData RegisterElasticIP where
 
 instance ToHeaders RegisterElasticIP where
         toHeaders
@@ -120,10 +119,11 @@
 --
 -- /See:/ 'registerElasticIPResponse' smart constructor.
 data RegisterElasticIPResponse = RegisterElasticIPResponse'
-    { _reirsElasticIP      :: !(Maybe Text)
-    , _reirsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _reirsElasticIP      :: !(Maybe Text)
+  , _reirsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegisterElasticIPResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -135,11 +135,10 @@
     :: Int -- ^ 'reirsResponseStatus'
     -> RegisterElasticIPResponse
 registerElasticIPResponse pResponseStatus_ =
-    RegisterElasticIPResponse'
-    { _reirsElasticIP = Nothing
-    , _reirsResponseStatus = pResponseStatus_
-    }
+  RegisterElasticIPResponse'
+  {_reirsElasticIP = Nothing, _reirsResponseStatus = pResponseStatus_}
 
+
 -- | The Elastic IP address.
 reirsElasticIP :: Lens' RegisterElasticIPResponse (Maybe Text)
 reirsElasticIP = lens _reirsElasticIP (\ s a -> s{_reirsElasticIP = a});
@@ -148,4 +147,4 @@
 reirsResponseStatus :: Lens' RegisterElasticIPResponse Int
 reirsResponseStatus = lens _reirsResponseStatus (\ s a -> s{_reirsResponseStatus = a});
 
-instance NFData RegisterElasticIPResponse
+instance NFData RegisterElasticIPResponse where
diff --git a/gen/Network/AWS/OpsWorks/RegisterInstance.hs b/gen/Network/AWS/OpsWorks/RegisterInstance.hs
--- a/gen/Network/AWS/OpsWorks/RegisterInstance.hs
+++ b/gen/Network/AWS/OpsWorks/RegisterInstance.hs
@@ -12,15 +12,17 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.RegisterInstance
--- 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)
 --
--- Registers instances with a specified stack that were created outside of AWS OpsWorks.
+-- Registers instances that were created outside of AWS OpsWorks Stacks with a specified stack.
 --
 --
+-- Registered instances have the same requirements as instances that are created by using the 'CreateInstance' API. For example, registered instances must be running a supported Linux-based operating system, and they must have a supported instance type. For more information about requirements for instances that you want to register, see <http://docs.aws.amazon.com/opsworks/latest/userguide/registered-instances-register-registering-preparer.html Preparing the 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 <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions> .
 --
 module Network.AWS.OpsWorks.RegisterInstance
@@ -45,24 +47,25 @@
     , rirsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'registerInstance' smart constructor.
 data RegisterInstance = RegisterInstance'
-    { _riPrivateIP               :: !(Maybe Text)
-    , _riHostname                :: !(Maybe Text)
-    , _riInstanceIdentity        :: !(Maybe InstanceIdentity)
-    , _riPublicIP                :: !(Maybe Text)
-    , _riRsaPublicKeyFingerprint :: !(Maybe Text)
-    , _riRsaPublicKey            :: !(Maybe Text)
-    , _riStackId                 :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _riPrivateIP               :: !(Maybe Text)
+  , _riHostname                :: !(Maybe Text)
+  , _riInstanceIdentity        :: !(Maybe InstanceIdentity)
+  , _riPublicIP                :: !(Maybe Text)
+  , _riRsaPublicKeyFingerprint :: !(Maybe Text)
+  , _riRsaPublicKey            :: !(Maybe Text)
+  , _riStackId                 :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegisterInstance' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -84,16 +87,17 @@
     :: Text -- ^ 'riStackId'
     -> RegisterInstance
 registerInstance pStackId_ =
-    RegisterInstance'
-    { _riPrivateIP = Nothing
-    , _riHostname = Nothing
-    , _riInstanceIdentity = Nothing
-    , _riPublicIP = Nothing
-    , _riRsaPublicKeyFingerprint = Nothing
-    , _riRsaPublicKey = Nothing
-    , _riStackId = pStackId_
-    }
+  RegisterInstance'
+  { _riPrivateIP = Nothing
+  , _riHostname = Nothing
+  , _riInstanceIdentity = Nothing
+  , _riPublicIP = Nothing
+  , _riRsaPublicKeyFingerprint = Nothing
+  , _riRsaPublicKey = Nothing
+  , _riStackId = pStackId_
+  }
 
+
 -- | The instance's private IP address.
 riPrivateIP :: Lens' RegisterInstance (Maybe Text)
 riPrivateIP = lens _riPrivateIP (\ s a -> s{_riPrivateIP = a});
@@ -131,9 +135,9 @@
                  RegisterInstanceResponse' <$>
                    (x .?> "InstanceId") <*> (pure (fromEnum s)))
 
-instance Hashable RegisterInstance
+instance Hashable RegisterInstance where
 
-instance NFData RegisterInstance
+instance NFData RegisterInstance where
 
 instance ToHeaders RegisterInstance where
         toHeaders
@@ -169,27 +173,27 @@
 --
 -- /See:/ 'registerInstanceResponse' smart constructor.
 data RegisterInstanceResponse = RegisterInstanceResponse'
-    { _rirsInstanceId     :: !(Maybe Text)
-    , _rirsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _rirsInstanceId     :: !(Maybe Text)
+  , _rirsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegisterInstanceResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rirsInstanceId' - The registered instance's AWS OpsWorks ID.
+-- * 'rirsInstanceId' - The registered instance's AWS OpsWorks Stacks ID.
 --
 -- * 'rirsResponseStatus' - -- | The response status code.
 registerInstanceResponse
     :: Int -- ^ 'rirsResponseStatus'
     -> RegisterInstanceResponse
 registerInstanceResponse pResponseStatus_ =
-    RegisterInstanceResponse'
-    { _rirsInstanceId = Nothing
-    , _rirsResponseStatus = pResponseStatus_
-    }
+  RegisterInstanceResponse'
+  {_rirsInstanceId = Nothing, _rirsResponseStatus = pResponseStatus_}
 
--- | The registered instance's AWS OpsWorks ID.
+
+-- | The registered instance's AWS OpsWorks Stacks ID.
 rirsInstanceId :: Lens' RegisterInstanceResponse (Maybe Text)
 rirsInstanceId = lens _rirsInstanceId (\ s a -> s{_rirsInstanceId = a});
 
@@ -197,4 +201,4 @@
 rirsResponseStatus :: Lens' RegisterInstanceResponse Int
 rirsResponseStatus = lens _rirsResponseStatus (\ s a -> s{_rirsResponseStatus = a});
 
-instance NFData RegisterInstanceResponse
+instance NFData RegisterInstanceResponse where
diff --git a/gen/Network/AWS/OpsWorks/RegisterRDSDBInstance.hs b/gen/Network/AWS/OpsWorks/RegisterRDSDBInstance.hs
--- a/gen/Network/AWS/OpsWorks/RegisterRDSDBInstance.hs
+++ b/gen/Network/AWS/OpsWorks/RegisterRDSDBInstance.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.RegisterRDSDBInstance
--- 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,21 +39,22 @@
     , RegisterRDSDBInstanceResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'registerRDSDBInstance' smart constructor.
 data RegisterRDSDBInstance = RegisterRDSDBInstance'
-    { _rrdiStackId          :: !Text
-    , _rrdiRDSDBInstanceARN :: !Text
-    , _rrdiDBUser           :: !Text
-    , _rrdiDBPassword       :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _rrdiStackId          :: !Text
+  , _rrdiRDSDBInstanceARN :: !Text
+  , _rrdiDBUser           :: !Text
+  , _rrdiDBPassword       :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegisterRDSDBInstance' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,13 +73,14 @@
     -> Text -- ^ 'rrdiDBPassword'
     -> RegisterRDSDBInstance
 registerRDSDBInstance pStackId_ pRDSDBInstanceARN_ pDBUser_ pDBPassword_ =
-    RegisterRDSDBInstance'
-    { _rrdiStackId = pStackId_
-    , _rrdiRDSDBInstanceARN = pRDSDBInstanceARN_
-    , _rrdiDBUser = pDBUser_
-    , _rrdiDBPassword = pDBPassword_
-    }
+  RegisterRDSDBInstance'
+  { _rrdiStackId = pStackId_
+  , _rrdiRDSDBInstanceARN = pRDSDBInstanceARN_
+  , _rrdiDBUser = pDBUser_
+  , _rrdiDBPassword = pDBPassword_
+  }
 
+
 -- | The stack ID.
 rrdiStackId :: Lens' RegisterRDSDBInstance Text
 rrdiStackId = lens _rrdiStackId (\ s a -> s{_rrdiStackId = a});
@@ -101,9 +103,9 @@
         request = postJSON opsWorks
         response = receiveNull RegisterRDSDBInstanceResponse'
 
-instance Hashable RegisterRDSDBInstance
+instance Hashable RegisterRDSDBInstance where
 
-instance NFData RegisterRDSDBInstance
+instance NFData RegisterRDSDBInstance where
 
 instance ToHeaders RegisterRDSDBInstance where
         toHeaders
@@ -132,13 +134,15 @@
 
 -- | /See:/ 'registerRDSDBInstanceResponse' smart constructor.
 data RegisterRDSDBInstanceResponse =
-    RegisterRDSDBInstanceResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  RegisterRDSDBInstanceResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegisterRDSDBInstanceResponse' with the minimum fields required to make a request.
 --
 registerRDSDBInstanceResponse
     :: RegisterRDSDBInstanceResponse
 registerRDSDBInstanceResponse = RegisterRDSDBInstanceResponse'
 
-instance NFData RegisterRDSDBInstanceResponse
+
+instance NFData RegisterRDSDBInstanceResponse where
diff --git a/gen/Network/AWS/OpsWorks/RegisterVolume.hs b/gen/Network/AWS/OpsWorks/RegisterVolume.hs
--- a/gen/Network/AWS/OpsWorks/RegisterVolume.hs
+++ b/gen/Network/AWS/OpsWorks/RegisterVolume.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.RegisterVolume
--- 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)
 --
@@ -40,19 +40,20 @@
     , rvrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'registerVolume' smart constructor.
 data RegisterVolume = RegisterVolume'
-    { _rvEC2VolumeId :: !(Maybe Text)
-    , _rvStackId     :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _rvEC2VolumeId :: !(Maybe Text)
+  , _rvStackId     :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegisterVolume' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -64,11 +65,9 @@
     :: Text -- ^ 'rvStackId'
     -> RegisterVolume
 registerVolume pStackId_ =
-    RegisterVolume'
-    { _rvEC2VolumeId = Nothing
-    , _rvStackId = pStackId_
-    }
+  RegisterVolume' {_rvEC2VolumeId = Nothing, _rvStackId = pStackId_}
 
+
 -- | The Amazon EBS volume ID.
 rvEC2VolumeId :: Lens' RegisterVolume (Maybe Text)
 rvEC2VolumeId = lens _rvEC2VolumeId (\ s a -> s{_rvEC2VolumeId = a});
@@ -86,9 +85,9 @@
                  RegisterVolumeResponse' <$>
                    (x .?> "VolumeId") <*> (pure (fromEnum s)))
 
-instance Hashable RegisterVolume
+instance Hashable RegisterVolume where
 
-instance NFData RegisterVolume
+instance NFData RegisterVolume where
 
 instance ToHeaders RegisterVolume where
         toHeaders
@@ -118,10 +117,11 @@
 --
 -- /See:/ 'registerVolumeResponse' smart constructor.
 data RegisterVolumeResponse = RegisterVolumeResponse'
-    { _rvrsVolumeId       :: !(Maybe Text)
-    , _rvrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _rvrsVolumeId       :: !(Maybe Text)
+  , _rvrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegisterVolumeResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -133,11 +133,10 @@
     :: Int -- ^ 'rvrsResponseStatus'
     -> RegisterVolumeResponse
 registerVolumeResponse pResponseStatus_ =
-    RegisterVolumeResponse'
-    { _rvrsVolumeId = Nothing
-    , _rvrsResponseStatus = pResponseStatus_
-    }
+  RegisterVolumeResponse'
+  {_rvrsVolumeId = Nothing, _rvrsResponseStatus = pResponseStatus_}
 
+
 -- | The volume ID.
 rvrsVolumeId :: Lens' RegisterVolumeResponse (Maybe Text)
 rvrsVolumeId = lens _rvrsVolumeId (\ s a -> s{_rvrsVolumeId = a});
@@ -146,4 +145,4 @@
 rvrsResponseStatus :: Lens' RegisterVolumeResponse Int
 rvrsResponseStatus = lens _rvrsResponseStatus (\ s a -> s{_rvrsResponseStatus = a});
 
-instance NFData RegisterVolumeResponse
+instance NFData RegisterVolumeResponse where
diff --git a/gen/Network/AWS/OpsWorks/SetLoadBasedAutoScaling.hs b/gen/Network/AWS/OpsWorks/SetLoadBasedAutoScaling.hs
--- a/gen/Network/AWS/OpsWorks/SetLoadBasedAutoScaling.hs
+++ b/gen/Network/AWS/OpsWorks/SetLoadBasedAutoScaling.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.SetLoadBasedAutoScaling
--- 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,44 +39,46 @@
     , SetLoadBasedAutoScalingResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'setLoadBasedAutoScaling' smart constructor.
 data SetLoadBasedAutoScaling = SetLoadBasedAutoScaling'
-    { _slbasUpScaling   :: !(Maybe AutoScalingThresholds)
-    , _slbasEnable      :: !(Maybe Bool)
-    , _slbasDownScaling :: !(Maybe AutoScalingThresholds)
-    , _slbasLayerId     :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _slbasUpScaling   :: !(Maybe AutoScalingThresholds)
+  , _slbasEnable      :: !(Maybe Bool)
+  , _slbasDownScaling :: !(Maybe AutoScalingThresholds)
+  , _slbasLayerId     :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SetLoadBasedAutoScaling' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'slbasUpScaling' - An @AutoScalingThresholds@ object with the upscaling threshold configuration. If the load exceeds these thresholds for a specified amount of time, AWS OpsWorks starts a specified number of instances.
+-- * 'slbasUpScaling' - An @AutoScalingThresholds@ object with the upscaling threshold configuration. If the load exceeds these thresholds for a specified amount of time, AWS OpsWorks Stacks starts a specified number of instances.
 --
 -- * 'slbasEnable' - Enables load-based auto scaling for the layer.
 --
--- * 'slbasDownScaling' - An @AutoScalingThresholds@ object with the downscaling threshold configuration. If the load falls below these thresholds for a specified amount of time, AWS OpsWorks stops a specified number of instances.
+-- * 'slbasDownScaling' - An @AutoScalingThresholds@ object with the downscaling threshold configuration. If the load falls below these thresholds for a specified amount of time, AWS OpsWorks Stacks stops a specified number of instances.
 --
 -- * 'slbasLayerId' - The layer ID.
 setLoadBasedAutoScaling
     :: Text -- ^ 'slbasLayerId'
     -> SetLoadBasedAutoScaling
 setLoadBasedAutoScaling pLayerId_ =
-    SetLoadBasedAutoScaling'
-    { _slbasUpScaling = Nothing
-    , _slbasEnable = Nothing
-    , _slbasDownScaling = Nothing
-    , _slbasLayerId = pLayerId_
-    }
+  SetLoadBasedAutoScaling'
+  { _slbasUpScaling = Nothing
+  , _slbasEnable = Nothing
+  , _slbasDownScaling = Nothing
+  , _slbasLayerId = pLayerId_
+  }
 
--- | An @AutoScalingThresholds@ object with the upscaling threshold configuration. If the load exceeds these thresholds for a specified amount of time, AWS OpsWorks starts a specified number of instances.
+
+-- | An @AutoScalingThresholds@ object with the upscaling threshold configuration. If the load exceeds these thresholds for a specified amount of time, AWS OpsWorks Stacks starts a specified number of instances.
 slbasUpScaling :: Lens' SetLoadBasedAutoScaling (Maybe AutoScalingThresholds)
 slbasUpScaling = lens _slbasUpScaling (\ s a -> s{_slbasUpScaling = a});
 
@@ -84,7 +86,7 @@
 slbasEnable :: Lens' SetLoadBasedAutoScaling (Maybe Bool)
 slbasEnable = lens _slbasEnable (\ s a -> s{_slbasEnable = a});
 
--- | An @AutoScalingThresholds@ object with the downscaling threshold configuration. If the load falls below these thresholds for a specified amount of time, AWS OpsWorks stops a specified number of instances.
+-- | An @AutoScalingThresholds@ object with the downscaling threshold configuration. If the load falls below these thresholds for a specified amount of time, AWS OpsWorks Stacks stops a specified number of instances.
 slbasDownScaling :: Lens' SetLoadBasedAutoScaling (Maybe AutoScalingThresholds)
 slbasDownScaling = lens _slbasDownScaling (\ s a -> s{_slbasDownScaling = a});
 
@@ -99,9 +101,9 @@
         response
           = receiveNull SetLoadBasedAutoScalingResponse'
 
-instance Hashable SetLoadBasedAutoScaling
+instance Hashable SetLoadBasedAutoScaling where
 
-instance NFData SetLoadBasedAutoScaling
+instance NFData SetLoadBasedAutoScaling where
 
 instance ToHeaders SetLoadBasedAutoScaling where
         toHeaders
@@ -130,13 +132,15 @@
 
 -- | /See:/ 'setLoadBasedAutoScalingResponse' smart constructor.
 data SetLoadBasedAutoScalingResponse =
-    SetLoadBasedAutoScalingResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  SetLoadBasedAutoScalingResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SetLoadBasedAutoScalingResponse' with the minimum fields required to make a request.
 --
 setLoadBasedAutoScalingResponse
     :: SetLoadBasedAutoScalingResponse
 setLoadBasedAutoScalingResponse = SetLoadBasedAutoScalingResponse'
 
-instance NFData SetLoadBasedAutoScalingResponse
+
+instance NFData SetLoadBasedAutoScalingResponse where
diff --git a/gen/Network/AWS/OpsWorks/SetPermission.hs b/gen/Network/AWS/OpsWorks/SetPermission.hs
--- a/gen/Network/AWS/OpsWorks/SetPermission.hs
+++ b/gen/Network/AWS/OpsWorks/SetPermission.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.SetPermission
--- 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)
 --
@@ -40,22 +40,23 @@
     , SetPermissionResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'setPermission' smart constructor.
 data SetPermission = SetPermission'
-    { _spAllowSudo  :: !(Maybe Bool)
-    , _spLevel      :: !(Maybe Text)
-    , _spAllowSSH   :: !(Maybe Bool)
-    , _spStackId    :: !Text
-    , _spIAMUserARN :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _spAllowSudo  :: !(Maybe Bool)
+  , _spLevel      :: !(Maybe Text)
+  , _spAllowSSH   :: !(Maybe Bool)
+  , _spStackId    :: !Text
+  , _spIAMUserARN :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SetPermission' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -74,14 +75,15 @@
     -> Text -- ^ 'spIAMUserARN'
     -> SetPermission
 setPermission pStackId_ pIAMUserARN_ =
-    SetPermission'
-    { _spAllowSudo = Nothing
-    , _spLevel = Nothing
-    , _spAllowSSH = Nothing
-    , _spStackId = pStackId_
-    , _spIAMUserARN = pIAMUserARN_
-    }
+  SetPermission'
+  { _spAllowSudo = Nothing
+  , _spLevel = Nothing
+  , _spAllowSSH = Nothing
+  , _spStackId = pStackId_
+  , _spIAMUserARN = pIAMUserARN_
+  }
 
+
 -- | The user is allowed to use __sudo__ to elevate privileges.
 spAllowSudo :: Lens' SetPermission (Maybe Bool)
 spAllowSudo = lens _spAllowSudo (\ s a -> s{_spAllowSudo = a});
@@ -107,9 +109,9 @@
         request = postJSON opsWorks
         response = receiveNull SetPermissionResponse'
 
-instance Hashable SetPermission
+instance Hashable SetPermission where
 
-instance NFData SetPermission
+instance NFData SetPermission where
 
 instance ToHeaders SetPermission where
         toHeaders
@@ -138,13 +140,15 @@
 
 -- | /See:/ 'setPermissionResponse' smart constructor.
 data SetPermissionResponse =
-    SetPermissionResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  SetPermissionResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SetPermissionResponse' with the minimum fields required to make a request.
 --
 setPermissionResponse
     :: SetPermissionResponse
 setPermissionResponse = SetPermissionResponse'
 
-instance NFData SetPermissionResponse
+
+instance NFData SetPermissionResponse where
diff --git a/gen/Network/AWS/OpsWorks/SetTimeBasedAutoScaling.hs b/gen/Network/AWS/OpsWorks/SetTimeBasedAutoScaling.hs
--- a/gen/Network/AWS/OpsWorks/SetTimeBasedAutoScaling.hs
+++ b/gen/Network/AWS/OpsWorks/SetTimeBasedAutoScaling.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.SetTimeBasedAutoScaling
--- 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 @@
     , SetTimeBasedAutoScalingResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'setTimeBasedAutoScaling' smart constructor.
 data SetTimeBasedAutoScaling = SetTimeBasedAutoScaling'
-    { _stbasAutoScalingSchedule :: !(Maybe WeeklyAutoScalingSchedule)
-    , _stbasInstanceId          :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _stbasAutoScalingSchedule :: !(Maybe WeeklyAutoScalingSchedule)
+  , _stbasInstanceId          :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SetTimeBasedAutoScaling' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -61,11 +62,10 @@
     :: Text -- ^ 'stbasInstanceId'
     -> SetTimeBasedAutoScaling
 setTimeBasedAutoScaling pInstanceId_ =
-    SetTimeBasedAutoScaling'
-    { _stbasAutoScalingSchedule = Nothing
-    , _stbasInstanceId = pInstanceId_
-    }
+  SetTimeBasedAutoScaling'
+  {_stbasAutoScalingSchedule = Nothing, _stbasInstanceId = pInstanceId_}
 
+
 -- | An @AutoScalingSchedule@ with the instance schedule.
 stbasAutoScalingSchedule :: Lens' SetTimeBasedAutoScaling (Maybe WeeklyAutoScalingSchedule)
 stbasAutoScalingSchedule = lens _stbasAutoScalingSchedule (\ s a -> s{_stbasAutoScalingSchedule = a});
@@ -81,9 +81,9 @@
         response
           = receiveNull SetTimeBasedAutoScalingResponse'
 
-instance Hashable SetTimeBasedAutoScaling
+instance Hashable SetTimeBasedAutoScaling where
 
-instance NFData SetTimeBasedAutoScaling
+instance NFData SetTimeBasedAutoScaling where
 
 instance ToHeaders SetTimeBasedAutoScaling where
         toHeaders
@@ -111,13 +111,15 @@
 
 -- | /See:/ 'setTimeBasedAutoScalingResponse' smart constructor.
 data SetTimeBasedAutoScalingResponse =
-    SetTimeBasedAutoScalingResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  SetTimeBasedAutoScalingResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SetTimeBasedAutoScalingResponse' with the minimum fields required to make a request.
 --
 setTimeBasedAutoScalingResponse
     :: SetTimeBasedAutoScalingResponse
 setTimeBasedAutoScalingResponse = SetTimeBasedAutoScalingResponse'
 
-instance NFData SetTimeBasedAutoScalingResponse
+
+instance NFData SetTimeBasedAutoScalingResponse where
diff --git a/gen/Network/AWS/OpsWorks/StartInstance.hs b/gen/Network/AWS/OpsWorks/StartInstance.hs
--- a/gen/Network/AWS/OpsWorks/StartInstance.hs
+++ b/gen/Network/AWS/OpsWorks/StartInstance.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.StartInstance
--- 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 @@
     , StartInstanceResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'startInstance' smart constructor.
 newtype StartInstance = StartInstance'
-    { _sInstanceId :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _sInstanceId :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StartInstance' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -56,11 +57,9 @@
 startInstance
     :: Text -- ^ 'sInstanceId'
     -> StartInstance
-startInstance pInstanceId_ =
-    StartInstance'
-    { _sInstanceId = pInstanceId_
-    }
+startInstance pInstanceId_ = StartInstance' {_sInstanceId = pInstanceId_}
 
+
 -- | The instance ID.
 sInstanceId :: Lens' StartInstance Text
 sInstanceId = lens _sInstanceId (\ s a -> s{_sInstanceId = a});
@@ -70,9 +69,9 @@
         request = postJSON opsWorks
         response = receiveNull StartInstanceResponse'
 
-instance Hashable StartInstance
+instance Hashable StartInstance where
 
-instance NFData StartInstance
+instance NFData StartInstance where
 
 instance ToHeaders StartInstance where
         toHeaders
@@ -96,13 +95,15 @@
 
 -- | /See:/ 'startInstanceResponse' smart constructor.
 data StartInstanceResponse =
-    StartInstanceResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  StartInstanceResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StartInstanceResponse' with the minimum fields required to make a request.
 --
 startInstanceResponse
     :: StartInstanceResponse
 startInstanceResponse = StartInstanceResponse'
 
-instance NFData StartInstanceResponse
+
+instance NFData StartInstanceResponse where
diff --git a/gen/Network/AWS/OpsWorks/StartStack.hs b/gen/Network/AWS/OpsWorks/StartStack.hs
--- a/gen/Network/AWS/OpsWorks/StartStack.hs
+++ b/gen/Network/AWS/OpsWorks/StartStack.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.StartStack
--- 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 @@
     , StartStackResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'startStack' smart constructor.
 newtype StartStack = StartStack'
-    { _staStackId :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _staStackId :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StartStack' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -56,11 +57,9 @@
 startStack
     :: Text -- ^ 'staStackId'
     -> StartStack
-startStack pStackId_ =
-    StartStack'
-    { _staStackId = pStackId_
-    }
+startStack pStackId_ = StartStack' {_staStackId = pStackId_}
 
+
 -- | The stack ID.
 staStackId :: Lens' StartStack Text
 staStackId = lens _staStackId (\ s a -> s{_staStackId = a});
@@ -70,9 +69,9 @@
         request = postJSON opsWorks
         response = receiveNull StartStackResponse'
 
-instance Hashable StartStack
+instance Hashable StartStack where
 
-instance NFData StartStack
+instance NFData StartStack where
 
 instance ToHeaders StartStack where
         toHeaders
@@ -96,13 +95,15 @@
 
 -- | /See:/ 'startStackResponse' smart constructor.
 data StartStackResponse =
-    StartStackResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  StartStackResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StartStackResponse' with the minimum fields required to make a request.
 --
 startStackResponse
     :: StartStackResponse
 startStackResponse = StartStackResponse'
 
-instance NFData StartStackResponse
+
+instance NFData StartStackResponse where
diff --git a/gen/Network/AWS/OpsWorks/StopInstance.hs b/gen/Network/AWS/OpsWorks/StopInstance.hs
--- a/gen/Network/AWS/OpsWorks/StopInstance.hs
+++ b/gen/Network/AWS/OpsWorks/StopInstance.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.StopInstance
--- 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 @@
     , StopInstanceResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'stopInstance' smart constructor.
 newtype StopInstance = StopInstance'
-    { _siInstanceId :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _siInstanceId :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StopInstance' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -56,11 +57,9 @@
 stopInstance
     :: Text -- ^ 'siInstanceId'
     -> StopInstance
-stopInstance pInstanceId_ =
-    StopInstance'
-    { _siInstanceId = pInstanceId_
-    }
+stopInstance pInstanceId_ = StopInstance' {_siInstanceId = pInstanceId_}
 
+
 -- | The instance ID.
 siInstanceId :: Lens' StopInstance Text
 siInstanceId = lens _siInstanceId (\ s a -> s{_siInstanceId = a});
@@ -70,9 +69,9 @@
         request = postJSON opsWorks
         response = receiveNull StopInstanceResponse'
 
-instance Hashable StopInstance
+instance Hashable StopInstance where
 
-instance NFData StopInstance
+instance NFData StopInstance where
 
 instance ToHeaders StopInstance where
         toHeaders
@@ -96,13 +95,15 @@
 
 -- | /See:/ 'stopInstanceResponse' smart constructor.
 data StopInstanceResponse =
-    StopInstanceResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  StopInstanceResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StopInstanceResponse' with the minimum fields required to make a request.
 --
 stopInstanceResponse
     :: StopInstanceResponse
 stopInstanceResponse = StopInstanceResponse'
 
-instance NFData StopInstanceResponse
+
+instance NFData StopInstanceResponse where
diff --git a/gen/Network/AWS/OpsWorks/StopStack.hs b/gen/Network/AWS/OpsWorks/StopStack.hs
--- a/gen/Network/AWS/OpsWorks/StopStack.hs
+++ b/gen/Network/AWS/OpsWorks/StopStack.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.StopStack
--- 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 @@
     , StopStackResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'stopStack' smart constructor.
 newtype StopStack = StopStack'
-    { _stoStackId :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _stoStackId :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StopStack' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -56,11 +57,9 @@
 stopStack
     :: Text -- ^ 'stoStackId'
     -> StopStack
-stopStack pStackId_ =
-    StopStack'
-    { _stoStackId = pStackId_
-    }
+stopStack pStackId_ = StopStack' {_stoStackId = pStackId_}
 
+
 -- | The stack ID.
 stoStackId :: Lens' StopStack Text
 stoStackId = lens _stoStackId (\ s a -> s{_stoStackId = a});
@@ -70,9 +69,9 @@
         request = postJSON opsWorks
         response = receiveNull StopStackResponse'
 
-instance Hashable StopStack
+instance Hashable StopStack where
 
-instance NFData StopStack
+instance NFData StopStack where
 
 instance ToHeaders StopStack where
         toHeaders
@@ -96,13 +95,15 @@
 
 -- | /See:/ 'stopStackResponse' smart constructor.
 data StopStackResponse =
-    StopStackResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  StopStackResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StopStackResponse' with the minimum fields required to make a request.
 --
 stopStackResponse
     :: StopStackResponse
 stopStackResponse = StopStackResponse'
 
-instance NFData StopStackResponse
+
+instance NFData StopStackResponse where
diff --git a/gen/Network/AWS/OpsWorks/TagResource.hs b/gen/Network/AWS/OpsWorks/TagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/OpsWorks/TagResource.hs
@@ -0,0 +1,118 @@
+{-# 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.OpsWorks.TagResource
+-- 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)
+--
+-- Apply cost-allocation tags to a specified stack or layer in AWS OpsWorks Stacks. For more information about how tagging works, see <http://docs.aws.amazon.com/opsworks/latest/userguide/tagging.html Tags> in the AWS OpsWorks User Guide.
+--
+--
+module Network.AWS.OpsWorks.TagResource
+    (
+    -- * Creating a Request
+      tagResource
+    , TagResource
+    -- * Request Lenses
+    , trResourceARN
+    , trTags
+
+    -- * Destructuring the Response
+    , tagResourceResponse
+    , TagResourceResponse
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+
+-- | /See:/ 'tagResource' smart constructor.
+data TagResource = TagResource'
+  { _trResourceARN :: !Text
+  , _trTags        :: !(Map Text Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'TagResource' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'trResourceARN' - The stack or layer's Amazon Resource Number (ARN).
+--
+-- * 'trTags' - A map that contains tag keys and tag values that are attached to a stack or layer.     * The key cannot be empty.     * The key can be a maximum of 127 characters, and can contain only Unicode letters, numbers, or separators, or the following special characters: @+ - = . _ : /@      * The value can be a maximum 255 characters, and contain only Unicode letters, numbers, or separators, or the following special characters: @+ - = . _ : /@      * Leading and trailing white spaces are trimmed from both the key and value.     * A maximum of 40 tags is allowed for any resource.
+tagResource
+    :: Text -- ^ 'trResourceARN'
+    -> TagResource
+tagResource pResourceARN_ =
+  TagResource' {_trResourceARN = pResourceARN_, _trTags = mempty}
+
+
+-- | The stack or layer's Amazon Resource Number (ARN).
+trResourceARN :: Lens' TagResource Text
+trResourceARN = lens _trResourceARN (\ s a -> s{_trResourceARN = a});
+
+-- | A map that contains tag keys and tag values that are attached to a stack or layer.     * The key cannot be empty.     * The key can be a maximum of 127 characters, and can contain only Unicode letters, numbers, or separators, or the following special characters: @+ - = . _ : /@      * The value can be a maximum 255 characters, and contain only Unicode letters, numbers, or separators, or the following special characters: @+ - = . _ : /@      * Leading and trailing white spaces are trimmed from both the key and value.     * A maximum of 40 tags is allowed for any resource.
+trTags :: Lens' TagResource (HashMap Text Text)
+trTags = lens _trTags (\ s a -> s{_trTags = a}) . _Map;
+
+instance AWSRequest TagResource where
+        type Rs TagResource = TagResourceResponse
+        request = postJSON opsWorks
+        response = receiveNull TagResourceResponse'
+
+instance Hashable TagResource where
+
+instance NFData TagResource where
+
+instance ToHeaders TagResource where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.TagResource" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON TagResource where
+        toJSON TagResource'{..}
+          = object
+              (catMaybes
+                 [Just ("ResourceArn" .= _trResourceARN),
+                  Just ("Tags" .= _trTags)])
+
+instance ToPath TagResource where
+        toPath = const "/"
+
+instance ToQuery TagResource where
+        toQuery = const mempty
+
+-- | /See:/ 'tagResourceResponse' smart constructor.
+data TagResourceResponse =
+  TagResourceResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'TagResourceResponse' with the minimum fields required to make a request.
+--
+tagResourceResponse
+    :: TagResourceResponse
+tagResourceResponse = TagResourceResponse'
+
+
+instance NFData TagResourceResponse where
diff --git a/gen/Network/AWS/OpsWorks/Types.hs b/gen/Network/AWS/OpsWorks/Types.hs
--- a/gen/Network/AWS/OpsWorks/Types.hs
+++ b/gen/Network/AWS/OpsWorks/Types.hs
@@ -4,9 +4,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.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)
 --
@@ -31,6 +31,15 @@
     -- * AutoScalingType
     , AutoScalingType (..)
 
+    -- * CloudWatchLogsEncoding
+    , CloudWatchLogsEncoding (..)
+
+    -- * CloudWatchLogsInitialPosition
+    , CloudWatchLogsInitialPosition (..)
+
+    -- * CloudWatchLogsTimeZone
+    , CloudWatchLogsTimeZone (..)
+
     -- * DeploymentCommandName
     , DeploymentCommandName (..)
 
@@ -104,6 +113,27 @@
     , ccBerkshelfVersion
     , ccManageBerkshelf
 
+    -- * CloudWatchLogsConfiguration
+    , CloudWatchLogsConfiguration
+    , cloudWatchLogsConfiguration
+    , cwlcEnabled
+    , cwlcLogStreams
+
+    -- * CloudWatchLogsLogStream
+    , CloudWatchLogsLogStream
+    , cloudWatchLogsLogStream
+    , cwllsBatchCount
+    , cwllsFileFingerprintLines
+    , cwllsBufferDuration
+    , cwllsBatchSize
+    , cwllsLogGroupName
+    , cwllsMultiLineStartPattern
+    , cwllsInitialPosition
+    , cwllsDatetimeFormat
+    , cwllsEncoding
+    , cwllsTimeZone
+    , cwllsFile
+
     -- * Command
     , Command
     , command
@@ -209,6 +239,7 @@
     , iSSHHostRsaKeyFingerprint
     , iSecurityGroupIds
     , iEcsClusterARN
+    , iARN
     , iCreatedAt
     , iEC2InstanceId
     , iSSHKeyName
@@ -272,7 +303,9 @@
     , lCustomInstanceProfileARN
     , lCustomSecurityGroupIds
     , lInstallUpdatesOnBoot
+    , lCloudWatchLogsConfiguration
     , lLifecycleEventConfiguration
+    , lARN
     , lCreatedAt
     , lShortname
     , lDefaultRecipes
@@ -504,38 +537,40 @@
     , wassTuesday
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.OpsWorks.Types.Sum
-import           Network.AWS.Prelude
-import           Network.AWS.Sign.V4
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.OpsWorks.Types.Sum
+import Network.AWS.Prelude
+import Network.AWS.Sign.V4
 
 -- | API version @2013-02-18@ of the Amazon OpsWorks SDK configuration.
 opsWorks :: Service
 opsWorks =
-    Service
-    { _svcAbbrev = "OpsWorks"
-    , _svcSigner = v4
-    , _svcPrefix = "opsworks"
-    , _svcVersion = "2013-02-18"
-    , _svcEndpoint = defaultEndpoint opsWorks
-    , _svcTimeout = Just 70
-    , _svcCheck = statusSuccess
-    , _svcError = parseJSONError "OpsWorks"
-    , _svcRetry = retry
-    }
+  Service
+  { _svcAbbrev = "OpsWorks"
+  , _svcSigner = v4
+  , _svcPrefix = "opsworks"
+  , _svcVersion = "2013-02-18"
+  , _svcEndpoint = defaultEndpoint opsWorks
+  , _svcTimeout = Just 70
+  , _svcCheck = statusSuccess
+  , _svcError = parseJSONError "OpsWorks"
+  , _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"
@@ -544,15 +579,18 @@
       | has (hasStatus 509) e = Just "limit_exceeded"
       | otherwise = Nothing
 
+
 -- | Indicates that a request was not valid.
 --
 --
 _ValidationException :: AsError a => Getting (First ServiceError) a ServiceError
-_ValidationException = _ServiceError . hasCode "ValidationException"
+_ValidationException = _MatchServiceError opsWorks "ValidationException"
 
+
 -- | Indicates that a resource was not found.
 --
 --
 _ResourceNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
 _ResourceNotFoundException =
-    _ServiceError . hasCode "ResourceNotFoundException"
+  _MatchServiceError opsWorks "ResourceNotFoundException"
+
diff --git a/gen/Network/AWS/OpsWorks/Types/Product.hs b/gen/Network/AWS/OpsWorks/Types/Product.hs
--- a/gen/Network/AWS/OpsWorks/Types/Product.hs
+++ b/gen/Network/AWS/OpsWorks/Types/Product.hs
@@ -9,3814 +9,4091 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.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.OpsWorks.Types.Product where
-
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types.Sum
-import           Network.AWS.Prelude
-
--- | Describes an agent version.
---
---
---
--- /See:/ 'agentVersion' smart constructor.
-data AgentVersion = AgentVersion'
-    { _avVersion              :: !(Maybe Text)
-    , _avConfigurationManager :: !(Maybe StackConfigurationManager)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AgentVersion' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'avVersion' - The agent version.
---
--- * 'avConfigurationManager' - The configuration manager.
-agentVersion
-    :: AgentVersion
-agentVersion =
-    AgentVersion'
-    { _avVersion = Nothing
-    , _avConfigurationManager = Nothing
-    }
-
--- | The agent version.
-avVersion :: Lens' AgentVersion (Maybe Text)
-avVersion = lens _avVersion (\ s a -> s{_avVersion = a});
-
--- | The configuration manager.
-avConfigurationManager :: Lens' AgentVersion (Maybe StackConfigurationManager)
-avConfigurationManager = lens _avConfigurationManager (\ s a -> s{_avConfigurationManager = a});
-
-instance FromJSON AgentVersion where
-        parseJSON
-          = withObject "AgentVersion"
-              (\ x ->
-                 AgentVersion' <$>
-                   (x .:? "Version") <*> (x .:? "ConfigurationManager"))
-
-instance Hashable AgentVersion
-
-instance NFData AgentVersion
-
--- | A description of the app.
---
---
---
--- /See:/ 'app' smart constructor.
-data App = App'
-    { _appSSLConfiguration :: !(Maybe SSLConfiguration)
-    , _appEnvironment      :: !(Maybe [EnvironmentVariable])
-    , _appEnableSSL        :: !(Maybe Bool)
-    , _appCreatedAt        :: !(Maybe Text)
-    , _appShortname        :: !(Maybe Text)
-    , _appDataSources      :: !(Maybe [DataSource])
-    , _appAppSource        :: !(Maybe Source)
-    , _appAppId            :: !(Maybe Text)
-    , _appAttributes       :: !(Maybe (Map AppAttributesKeys Text))
-    , _appName             :: !(Maybe Text)
-    , _appType             :: !(Maybe AppType)
-    , _appStackId          :: !(Maybe Text)
-    , _appDomains          :: !(Maybe [Text])
-    , _appDescription      :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'App' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'appSSLConfiguration' - An @SslConfiguration@ object with the SSL configuration.
---
--- * 'appEnvironment' - An array of @EnvironmentVariable@ objects that specify environment variables to be associated with the app. After you deploy the app, these variables are defined on the associated app server instances. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-creating.html#workingapps-creating-environment Environment Variables> .
---
--- * 'appEnableSSL' - Whether to enable SSL for the app.
---
--- * 'appCreatedAt' - When the app was created.
---
--- * 'appShortname' - The app's short name.
---
--- * 'appDataSources' - The app's data sources.
---
--- * 'appAppSource' - A @Source@ object that describes the app repository.
---
--- * 'appAppId' - The app ID.
---
--- * 'appAttributes' - The stack attributes.
---
--- * 'appName' - The app name.
---
--- * 'appType' - The app type.
---
--- * 'appStackId' - The app stack ID.
---
--- * 'appDomains' - The app vhost settings with multiple domains separated by commas. For example: @'www.example.com, example.com'@
---
--- * 'appDescription' - A description of the app.
-app
-    :: App
-app =
-    App'
-    { _appSSLConfiguration = Nothing
-    , _appEnvironment = Nothing
-    , _appEnableSSL = Nothing
-    , _appCreatedAt = Nothing
-    , _appShortname = Nothing
-    , _appDataSources = Nothing
-    , _appAppSource = Nothing
-    , _appAppId = Nothing
-    , _appAttributes = Nothing
-    , _appName = Nothing
-    , _appType = Nothing
-    , _appStackId = Nothing
-    , _appDomains = Nothing
-    , _appDescription = Nothing
-    }
-
--- | An @SslConfiguration@ object with the SSL configuration.
-appSSLConfiguration :: Lens' App (Maybe SSLConfiguration)
-appSSLConfiguration = lens _appSSLConfiguration (\ s a -> s{_appSSLConfiguration = a});
-
--- | An array of @EnvironmentVariable@ objects that specify environment variables to be associated with the app. After you deploy the app, these variables are defined on the associated app server instances. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-creating.html#workingapps-creating-environment Environment Variables> .
-appEnvironment :: Lens' App [EnvironmentVariable]
-appEnvironment = lens _appEnvironment (\ s a -> s{_appEnvironment = a}) . _Default . _Coerce;
-
--- | Whether to enable SSL for the app.
-appEnableSSL :: Lens' App (Maybe Bool)
-appEnableSSL = lens _appEnableSSL (\ s a -> s{_appEnableSSL = a});
-
--- | When the app was created.
-appCreatedAt :: Lens' App (Maybe Text)
-appCreatedAt = lens _appCreatedAt (\ s a -> s{_appCreatedAt = a});
-
--- | The app's short name.
-appShortname :: Lens' App (Maybe Text)
-appShortname = lens _appShortname (\ s a -> s{_appShortname = a});
-
--- | The app's data sources.
-appDataSources :: Lens' App [DataSource]
-appDataSources = lens _appDataSources (\ s a -> s{_appDataSources = a}) . _Default . _Coerce;
-
--- | A @Source@ object that describes the app repository.
-appAppSource :: Lens' App (Maybe Source)
-appAppSource = lens _appAppSource (\ s a -> s{_appAppSource = a});
-
--- | The app ID.
-appAppId :: Lens' App (Maybe Text)
-appAppId = lens _appAppId (\ s a -> s{_appAppId = a});
-
--- | The stack attributes.
-appAttributes :: Lens' App (HashMap AppAttributesKeys Text)
-appAttributes = lens _appAttributes (\ s a -> s{_appAttributes = a}) . _Default . _Map;
-
--- | The app name.
-appName :: Lens' App (Maybe Text)
-appName = lens _appName (\ s a -> s{_appName = a});
-
--- | The app type.
-appType :: Lens' App (Maybe AppType)
-appType = lens _appType (\ s a -> s{_appType = a});
-
--- | The app stack ID.
-appStackId :: Lens' App (Maybe Text)
-appStackId = lens _appStackId (\ s a -> s{_appStackId = a});
-
--- | The app vhost settings with multiple domains separated by commas. For example: @'www.example.com, example.com'@
-appDomains :: Lens' App [Text]
-appDomains = lens _appDomains (\ s a -> s{_appDomains = a}) . _Default . _Coerce;
-
--- | A description of the app.
-appDescription :: Lens' App (Maybe Text)
-appDescription = lens _appDescription (\ s a -> s{_appDescription = a});
-
-instance FromJSON App where
-        parseJSON
-          = withObject "App"
-              (\ x ->
-                 App' <$>
-                   (x .:? "SslConfiguration") <*>
-                     (x .:? "Environment" .!= mempty)
-                     <*> (x .:? "EnableSsl")
-                     <*> (x .:? "CreatedAt")
-                     <*> (x .:? "Shortname")
-                     <*> (x .:? "DataSources" .!= mempty)
-                     <*> (x .:? "AppSource")
-                     <*> (x .:? "AppId")
-                     <*> (x .:? "Attributes" .!= mempty)
-                     <*> (x .:? "Name")
-                     <*> (x .:? "Type")
-                     <*> (x .:? "StackId")
-                     <*> (x .:? "Domains" .!= mempty)
-                     <*> (x .:? "Description"))
-
-instance Hashable App
-
-instance NFData App
-
--- | Describes a load-based auto scaling upscaling or downscaling threshold configuration, which specifies when AWS OpsWorks starts or stops load-based instances.
---
---
---
--- /See:/ 'autoScalingThresholds' smart constructor.
-data AutoScalingThresholds = AutoScalingThresholds'
-    { _astInstanceCount      :: !(Maybe Int)
-    , _astIgnoreMetricsTime  :: !(Maybe Nat)
-    , _astLoadThreshold      :: !(Maybe Double)
-    , _astThresholdsWaitTime :: !(Maybe Nat)
-    , _astAlarms             :: !(Maybe [Text])
-    , _astMemoryThreshold    :: !(Maybe Double)
-    , _astCPUThreshold       :: !(Maybe Double)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AutoScalingThresholds' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'astInstanceCount' - The number of instances to add or remove when the load exceeds a threshold.
---
--- * 'astIgnoreMetricsTime' - The amount of time (in minutes) after a scaling event occurs that AWS OpsWorks should ignore metrics and suppress additional scaling events. For example, AWS OpsWorks adds new instances following an upscaling event but the instances won't start reducing the load until they have been booted and configured. There is no point in raising additional scaling events during that operation, which typically takes several minutes. @IgnoreMetricsTime@ allows you to direct AWS OpsWorks to suppress scaling events long enough to get the new instances online.
---
--- * 'astLoadThreshold' - The load threshold. A value of -1 disables the threshold. For more information about how load is computed, see <http://en.wikipedia.org/wiki/Load_%28computing%29 Load (computing)> .
---
--- * 'astThresholdsWaitTime' - The amount of time, in minutes, that the load must exceed a threshold before more instances are added or removed.
---
--- * 'astAlarms' - Custom Cloudwatch auto scaling alarms, to be used as thresholds. This parameter takes a list of up to five alarm names, which are case sensitive and must be in the same region as the stack.
---
--- * 'astMemoryThreshold' - The memory utilization threshold, as a percent of the available memory. A value of -1 disables the threshold.
---
--- * 'astCPUThreshold' - The CPU utilization threshold, as a percent of the available CPU. A value of -1 disables the threshold.
-autoScalingThresholds
-    :: AutoScalingThresholds
-autoScalingThresholds =
-    AutoScalingThresholds'
-    { _astInstanceCount = Nothing
-    , _astIgnoreMetricsTime = Nothing
-    , _astLoadThreshold = Nothing
-    , _astThresholdsWaitTime = Nothing
-    , _astAlarms = Nothing
-    , _astMemoryThreshold = Nothing
-    , _astCPUThreshold = Nothing
-    }
-
--- | The number of instances to add or remove when the load exceeds a threshold.
-astInstanceCount :: Lens' AutoScalingThresholds (Maybe Int)
-astInstanceCount = lens _astInstanceCount (\ s a -> s{_astInstanceCount = a});
-
--- | The amount of time (in minutes) after a scaling event occurs that AWS OpsWorks should ignore metrics and suppress additional scaling events. For example, AWS OpsWorks adds new instances following an upscaling event but the instances won't start reducing the load until they have been booted and configured. There is no point in raising additional scaling events during that operation, which typically takes several minutes. @IgnoreMetricsTime@ allows you to direct AWS OpsWorks to suppress scaling events long enough to get the new instances online.
-astIgnoreMetricsTime :: Lens' AutoScalingThresholds (Maybe Natural)
-astIgnoreMetricsTime = lens _astIgnoreMetricsTime (\ s a -> s{_astIgnoreMetricsTime = a}) . mapping _Nat;
-
--- | The load threshold. A value of -1 disables the threshold. For more information about how load is computed, see <http://en.wikipedia.org/wiki/Load_%28computing%29 Load (computing)> .
-astLoadThreshold :: Lens' AutoScalingThresholds (Maybe Double)
-astLoadThreshold = lens _astLoadThreshold (\ s a -> s{_astLoadThreshold = a});
-
--- | The amount of time, in minutes, that the load must exceed a threshold before more instances are added or removed.
-astThresholdsWaitTime :: Lens' AutoScalingThresholds (Maybe Natural)
-astThresholdsWaitTime = lens _astThresholdsWaitTime (\ s a -> s{_astThresholdsWaitTime = a}) . mapping _Nat;
-
--- | Custom Cloudwatch auto scaling alarms, to be used as thresholds. This parameter takes a list of up to five alarm names, which are case sensitive and must be in the same region as the stack.
-astAlarms :: Lens' AutoScalingThresholds [Text]
-astAlarms = lens _astAlarms (\ s a -> s{_astAlarms = a}) . _Default . _Coerce;
-
--- | The memory utilization threshold, as a percent of the available memory. A value of -1 disables the threshold.
-astMemoryThreshold :: Lens' AutoScalingThresholds (Maybe Double)
-astMemoryThreshold = lens _astMemoryThreshold (\ s a -> s{_astMemoryThreshold = a});
-
--- | The CPU utilization threshold, as a percent of the available CPU. A value of -1 disables the threshold.
-astCPUThreshold :: Lens' AutoScalingThresholds (Maybe Double)
-astCPUThreshold = lens _astCPUThreshold (\ s a -> s{_astCPUThreshold = a});
-
-instance FromJSON AutoScalingThresholds where
-        parseJSON
-          = withObject "AutoScalingThresholds"
-              (\ x ->
-                 AutoScalingThresholds' <$>
-                   (x .:? "InstanceCount") <*>
-                     (x .:? "IgnoreMetricsTime")
-                     <*> (x .:? "LoadThreshold")
-                     <*> (x .:? "ThresholdsWaitTime")
-                     <*> (x .:? "Alarms" .!= mempty)
-                     <*> (x .:? "MemoryThreshold")
-                     <*> (x .:? "CpuThreshold"))
-
-instance Hashable AutoScalingThresholds
-
-instance NFData AutoScalingThresholds
-
-instance ToJSON AutoScalingThresholds where
-        toJSON AutoScalingThresholds'{..}
-          = object
-              (catMaybes
-                 [("InstanceCount" .=) <$> _astInstanceCount,
-                  ("IgnoreMetricsTime" .=) <$> _astIgnoreMetricsTime,
-                  ("LoadThreshold" .=) <$> _astLoadThreshold,
-                  ("ThresholdsWaitTime" .=) <$> _astThresholdsWaitTime,
-                  ("Alarms" .=) <$> _astAlarms,
-                  ("MemoryThreshold" .=) <$> _astMemoryThreshold,
-                  ("CpuThreshold" .=) <$> _astCPUThreshold])
-
--- | Describes a block device mapping. This data type maps directly to the Amazon EC2 <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_BlockDeviceMapping.html BlockDeviceMapping> data type.
---
---
---
--- /See:/ 'blockDeviceMapping' smart constructor.
-data BlockDeviceMapping = BlockDeviceMapping'
-    { _bdmVirtualName :: !(Maybe Text)
-    , _bdmNoDevice    :: !(Maybe Text)
-    , _bdmEBS         :: !(Maybe EBSBlockDevice)
-    , _bdmDeviceName  :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'BlockDeviceMapping' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bdmVirtualName' - The virtual device name. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_BlockDeviceMapping.html BlockDeviceMapping> .
---
--- * 'bdmNoDevice' - Suppresses the specified device included in the AMI's block device mapping.
---
--- * 'bdmEBS' - An @EBSBlockDevice@ that defines how to configure an Amazon EBS volume when the instance is launched.
---
--- * 'bdmDeviceName' - The device name that is exposed to the instance, such as @/dev/sdh@ . For the root device, you can use the explicit device name or you can set this parameter to @ROOT_DEVICE@ and AWS OpsWorks will provide the correct device name.
-blockDeviceMapping
-    :: BlockDeviceMapping
-blockDeviceMapping =
-    BlockDeviceMapping'
-    { _bdmVirtualName = Nothing
-    , _bdmNoDevice = Nothing
-    , _bdmEBS = Nothing
-    , _bdmDeviceName = Nothing
-    }
-
--- | The virtual device name. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_BlockDeviceMapping.html BlockDeviceMapping> .
-bdmVirtualName :: Lens' BlockDeviceMapping (Maybe Text)
-bdmVirtualName = lens _bdmVirtualName (\ s a -> s{_bdmVirtualName = a});
-
--- | Suppresses the specified device included in the AMI's block device mapping.
-bdmNoDevice :: Lens' BlockDeviceMapping (Maybe Text)
-bdmNoDevice = lens _bdmNoDevice (\ s a -> s{_bdmNoDevice = a});
-
--- | An @EBSBlockDevice@ that defines how to configure an Amazon EBS volume when the instance is launched.
-bdmEBS :: Lens' BlockDeviceMapping (Maybe EBSBlockDevice)
-bdmEBS = lens _bdmEBS (\ s a -> s{_bdmEBS = a});
-
--- | The device name that is exposed to the instance, such as @/dev/sdh@ . For the root device, you can use the explicit device name or you can set this parameter to @ROOT_DEVICE@ and AWS OpsWorks will provide the correct device name.
-bdmDeviceName :: Lens' BlockDeviceMapping (Maybe Text)
-bdmDeviceName = lens _bdmDeviceName (\ s a -> s{_bdmDeviceName = a});
-
-instance FromJSON BlockDeviceMapping where
-        parseJSON
-          = withObject "BlockDeviceMapping"
-              (\ x ->
-                 BlockDeviceMapping' <$>
-                   (x .:? "VirtualName") <*> (x .:? "NoDevice") <*>
-                     (x .:? "Ebs")
-                     <*> (x .:? "DeviceName"))
-
-instance Hashable BlockDeviceMapping
-
-instance NFData BlockDeviceMapping
-
-instance ToJSON BlockDeviceMapping where
-        toJSON BlockDeviceMapping'{..}
-          = object
-              (catMaybes
-                 [("VirtualName" .=) <$> _bdmVirtualName,
-                  ("NoDevice" .=) <$> _bdmNoDevice,
-                  ("Ebs" .=) <$> _bdmEBS,
-                  ("DeviceName" .=) <$> _bdmDeviceName])
-
--- | Describes the Chef configuration.
---
---
---
--- /See:/ 'chefConfiguration' smart constructor.
-data ChefConfiguration = ChefConfiguration'
-    { _ccBerkshelfVersion :: !(Maybe Text)
-    , _ccManageBerkshelf  :: !(Maybe Bool)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ChefConfiguration' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ccBerkshelfVersion' - The Berkshelf version.
---
--- * 'ccManageBerkshelf' - Whether to enable Berkshelf.
-chefConfiguration
-    :: ChefConfiguration
-chefConfiguration =
-    ChefConfiguration'
-    { _ccBerkshelfVersion = Nothing
-    , _ccManageBerkshelf = Nothing
-    }
-
--- | The Berkshelf version.
-ccBerkshelfVersion :: Lens' ChefConfiguration (Maybe Text)
-ccBerkshelfVersion = lens _ccBerkshelfVersion (\ s a -> s{_ccBerkshelfVersion = a});
-
--- | Whether to enable Berkshelf.
-ccManageBerkshelf :: Lens' ChefConfiguration (Maybe Bool)
-ccManageBerkshelf = lens _ccManageBerkshelf (\ s a -> s{_ccManageBerkshelf = a});
-
-instance FromJSON ChefConfiguration where
-        parseJSON
-          = withObject "ChefConfiguration"
-              (\ x ->
-                 ChefConfiguration' <$>
-                   (x .:? "BerkshelfVersion") <*>
-                     (x .:? "ManageBerkshelf"))
-
-instance Hashable ChefConfiguration
-
-instance NFData ChefConfiguration
-
-instance ToJSON ChefConfiguration where
-        toJSON ChefConfiguration'{..}
-          = object
-              (catMaybes
-                 [("BerkshelfVersion" .=) <$> _ccBerkshelfVersion,
-                  ("ManageBerkshelf" .=) <$> _ccManageBerkshelf])
-
--- | Describes a command.
---
---
---
--- /See:/ 'command' smart constructor.
-data Command = Command'
-    { _cDeploymentId   :: !(Maybe Text)
-    , _cInstanceId     :: !(Maybe Text)
-    , _cStatus         :: !(Maybe Text)
-    , _cLogURL         :: !(Maybe Text)
-    , _cCreatedAt      :: !(Maybe Text)
-    , _cCommandId      :: !(Maybe Text)
-    , _cExitCode       :: !(Maybe Int)
-    , _cType           :: !(Maybe Text)
-    , _cCompletedAt    :: !(Maybe Text)
-    , _cAcknowledgedAt :: !(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:
---
--- * 'cDeploymentId' - The command deployment ID.
---
--- * 'cInstanceId' - The ID of the instance where the command was executed.
---
--- * 'cStatus' - The command status:     * failed     * successful     * skipped     * pending
---
--- * 'cLogURL' - The URL of the command log.
---
--- * 'cCreatedAt' - Date and time when the command was run.
---
--- * 'cCommandId' - The command ID.
---
--- * 'cExitCode' - The command exit code.
---
--- * 'cType' - The command type:     * @deploy@      * @rollback@      * @start@      * @stop@      * @restart@      * @undeploy@      * @update_dependencies@      * @install_dependencies@      * @update_custom_cookbooks@      * @execute_recipes@
---
--- * 'cCompletedAt' - Date when the command completed.
---
--- * 'cAcknowledgedAt' - Date and time when the command was acknowledged.
-command
-    :: Command
-command =
-    Command'
-    { _cDeploymentId = Nothing
-    , _cInstanceId = Nothing
-    , _cStatus = Nothing
-    , _cLogURL = Nothing
-    , _cCreatedAt = Nothing
-    , _cCommandId = Nothing
-    , _cExitCode = Nothing
-    , _cType = Nothing
-    , _cCompletedAt = Nothing
-    , _cAcknowledgedAt = Nothing
-    }
-
--- | The command deployment ID.
-cDeploymentId :: Lens' Command (Maybe Text)
-cDeploymentId = lens _cDeploymentId (\ s a -> s{_cDeploymentId = a});
-
--- | The ID of the instance where the command was executed.
-cInstanceId :: Lens' Command (Maybe Text)
-cInstanceId = lens _cInstanceId (\ s a -> s{_cInstanceId = a});
-
--- | The command status:     * failed     * successful     * skipped     * pending
-cStatus :: Lens' Command (Maybe Text)
-cStatus = lens _cStatus (\ s a -> s{_cStatus = a});
-
--- | The URL of the command log.
-cLogURL :: Lens' Command (Maybe Text)
-cLogURL = lens _cLogURL (\ s a -> s{_cLogURL = a});
-
--- | Date and time when the command was run.
-cCreatedAt :: Lens' Command (Maybe Text)
-cCreatedAt = lens _cCreatedAt (\ s a -> s{_cCreatedAt = a});
-
--- | The command ID.
-cCommandId :: Lens' Command (Maybe Text)
-cCommandId = lens _cCommandId (\ s a -> s{_cCommandId = a});
-
--- | The command exit code.
-cExitCode :: Lens' Command (Maybe Int)
-cExitCode = lens _cExitCode (\ s a -> s{_cExitCode = a});
-
--- | The command type:     * @deploy@      * @rollback@      * @start@      * @stop@      * @restart@      * @undeploy@      * @update_dependencies@      * @install_dependencies@      * @update_custom_cookbooks@      * @execute_recipes@
-cType :: Lens' Command (Maybe Text)
-cType = lens _cType (\ s a -> s{_cType = a});
-
--- | Date when the command completed.
-cCompletedAt :: Lens' Command (Maybe Text)
-cCompletedAt = lens _cCompletedAt (\ s a -> s{_cCompletedAt = a});
-
--- | Date and time when the command was acknowledged.
-cAcknowledgedAt :: Lens' Command (Maybe Text)
-cAcknowledgedAt = lens _cAcknowledgedAt (\ s a -> s{_cAcknowledgedAt = a});
-
-instance FromJSON Command where
-        parseJSON
-          = withObject "Command"
-              (\ x ->
-                 Command' <$>
-                   (x .:? "DeploymentId") <*> (x .:? "InstanceId") <*>
-                     (x .:? "Status")
-                     <*> (x .:? "LogUrl")
-                     <*> (x .:? "CreatedAt")
-                     <*> (x .:? "CommandId")
-                     <*> (x .:? "ExitCode")
-                     <*> (x .:? "Type")
-                     <*> (x .:? "CompletedAt")
-                     <*> (x .:? "AcknowledgedAt"))
-
-instance Hashable Command
-
-instance NFData Command
-
--- | Describes an app's data source.
---
---
---
--- /See:/ 'dataSource' smart constructor.
-data DataSource = DataSource'
-    { _dsARN          :: !(Maybe Text)
-    , _dsDatabaseName :: !(Maybe Text)
-    , _dsType         :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DataSource' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dsARN' - The data source's ARN.
---
--- * 'dsDatabaseName' - The database name.
---
--- * 'dsType' - The data source's type, @AutoSelectOpsworksMysqlInstance@ , @OpsworksMysqlInstance@ , or @RdsDbInstance@ .
-dataSource
-    :: DataSource
-dataSource =
-    DataSource'
-    { _dsARN = Nothing
-    , _dsDatabaseName = Nothing
-    , _dsType = Nothing
-    }
-
--- | The data source's ARN.
-dsARN :: Lens' DataSource (Maybe Text)
-dsARN = lens _dsARN (\ s a -> s{_dsARN = a});
-
--- | The database name.
-dsDatabaseName :: Lens' DataSource (Maybe Text)
-dsDatabaseName = lens _dsDatabaseName (\ s a -> s{_dsDatabaseName = a});
-
--- | The data source's type, @AutoSelectOpsworksMysqlInstance@ , @OpsworksMysqlInstance@ , or @RdsDbInstance@ .
-dsType :: Lens' DataSource (Maybe Text)
-dsType = lens _dsType (\ s a -> s{_dsType = a});
-
-instance FromJSON DataSource where
-        parseJSON
-          = withObject "DataSource"
-              (\ x ->
-                 DataSource' <$>
-                   (x .:? "Arn") <*> (x .:? "DatabaseName") <*>
-                     (x .:? "Type"))
-
-instance Hashable DataSource
-
-instance NFData DataSource
-
-instance ToJSON DataSource where
-        toJSON DataSource'{..}
-          = object
-              (catMaybes
-                 [("Arn" .=) <$> _dsARN,
-                  ("DatabaseName" .=) <$> _dsDatabaseName,
-                  ("Type" .=) <$> _dsType])
-
--- | Describes a deployment of a stack or app.
---
---
---
--- /See:/ 'deployment' smart constructor.
-data Deployment = Deployment'
-    { _dDeploymentId :: !(Maybe Text)
-    , _dStatus       :: !(Maybe Text)
-    , _dCommand      :: !(Maybe DeploymentCommand)
-    , _dCreatedAt    :: !(Maybe Text)
-    , _dCustomJSON   :: !(Maybe Text)
-    , _dIAMUserARN   :: !(Maybe Text)
-    , _dAppId        :: !(Maybe Text)
-    , _dInstanceIds  :: !(Maybe [Text])
-    , _dCompletedAt  :: !(Maybe Text)
-    , _dStackId      :: !(Maybe Text)
-    , _dComment      :: !(Maybe Text)
-    , _dDuration     :: !(Maybe Int)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Deployment' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dDeploymentId' - The deployment ID.
---
--- * 'dStatus' - The deployment status:     * running     * successful     * failed
---
--- * 'dCommand' - Undocumented member.
---
--- * 'dCreatedAt' - Date when the deployment was created.
---
--- * 'dCustomJSON' - A string that contains user-defined custom JSON. It can be used to override the corresponding default stack configuration attribute values for stack or to pass data to recipes. The string should be in the following format: @"{\"key1\": \"value1\", \"key2\": \"value2\",...}"@  For more information on custom JSON, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html Use Custom JSON to Modify the Stack Configuration Attributes> .
---
--- * 'dIAMUserARN' - The user's IAM ARN.
---
--- * 'dAppId' - The app ID.
---
--- * 'dInstanceIds' - The IDs of the target instances.
---
--- * 'dCompletedAt' - Date when the deployment completed.
---
--- * 'dStackId' - The stack ID.
---
--- * 'dComment' - A user-defined comment.
---
--- * 'dDuration' - The deployment duration.
-deployment
-    :: Deployment
-deployment =
-    Deployment'
-    { _dDeploymentId = Nothing
-    , _dStatus = Nothing
-    , _dCommand = Nothing
-    , _dCreatedAt = Nothing
-    , _dCustomJSON = Nothing
-    , _dIAMUserARN = Nothing
-    , _dAppId = Nothing
-    , _dInstanceIds = Nothing
-    , _dCompletedAt = Nothing
-    , _dStackId = Nothing
-    , _dComment = Nothing
-    , _dDuration = Nothing
-    }
-
--- | The deployment ID.
-dDeploymentId :: Lens' Deployment (Maybe Text)
-dDeploymentId = lens _dDeploymentId (\ s a -> s{_dDeploymentId = a});
-
--- | The deployment status:     * running     * successful     * failed
-dStatus :: Lens' Deployment (Maybe Text)
-dStatus = lens _dStatus (\ s a -> s{_dStatus = a});
-
--- | Undocumented member.
-dCommand :: Lens' Deployment (Maybe DeploymentCommand)
-dCommand = lens _dCommand (\ s a -> s{_dCommand = a});
-
--- | Date when the deployment was created.
-dCreatedAt :: Lens' Deployment (Maybe Text)
-dCreatedAt = lens _dCreatedAt (\ s a -> s{_dCreatedAt = a});
-
--- | A string that contains user-defined custom JSON. It can be used to override the corresponding default stack configuration attribute values for stack or to pass data to recipes. The string should be in the following format: @"{\"key1\": \"value1\", \"key2\": \"value2\",...}"@  For more information on custom JSON, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html Use Custom JSON to Modify the Stack Configuration Attributes> .
-dCustomJSON :: Lens' Deployment (Maybe Text)
-dCustomJSON = lens _dCustomJSON (\ s a -> s{_dCustomJSON = a});
-
--- | The user's IAM ARN.
-dIAMUserARN :: Lens' Deployment (Maybe Text)
-dIAMUserARN = lens _dIAMUserARN (\ s a -> s{_dIAMUserARN = a});
-
--- | The app ID.
-dAppId :: Lens' Deployment (Maybe Text)
-dAppId = lens _dAppId (\ s a -> s{_dAppId = a});
-
--- | The IDs of the target instances.
-dInstanceIds :: Lens' Deployment [Text]
-dInstanceIds = lens _dInstanceIds (\ s a -> s{_dInstanceIds = a}) . _Default . _Coerce;
-
--- | Date when the deployment completed.
-dCompletedAt :: Lens' Deployment (Maybe Text)
-dCompletedAt = lens _dCompletedAt (\ s a -> s{_dCompletedAt = a});
-
--- | The stack ID.
-dStackId :: Lens' Deployment (Maybe Text)
-dStackId = lens _dStackId (\ s a -> s{_dStackId = a});
-
--- | A user-defined comment.
-dComment :: Lens' Deployment (Maybe Text)
-dComment = lens _dComment (\ s a -> s{_dComment = a});
-
--- | The deployment duration.
-dDuration :: Lens' Deployment (Maybe Int)
-dDuration = lens _dDuration (\ s a -> s{_dDuration = a});
-
-instance FromJSON Deployment where
-        parseJSON
-          = withObject "Deployment"
-              (\ x ->
-                 Deployment' <$>
-                   (x .:? "DeploymentId") <*> (x .:? "Status") <*>
-                     (x .:? "Command")
-                     <*> (x .:? "CreatedAt")
-                     <*> (x .:? "CustomJson")
-                     <*> (x .:? "IamUserArn")
-                     <*> (x .:? "AppId")
-                     <*> (x .:? "InstanceIds" .!= mempty)
-                     <*> (x .:? "CompletedAt")
-                     <*> (x .:? "StackId")
-                     <*> (x .:? "Comment")
-                     <*> (x .:? "Duration"))
-
-instance Hashable Deployment
-
-instance NFData Deployment
-
--- | Used to specify a stack or deployment command.
---
---
---
--- /See:/ 'deploymentCommand' smart constructor.
-data DeploymentCommand = DeploymentCommand'
-    { _dcArgs :: !(Maybe (Map Text [Text]))
-    , _dcName :: !DeploymentCommandName
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DeploymentCommand' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dcArgs' - The arguments of those commands that take arguments. It should be set to a JSON object with the following format: @{"arg_name1" : ["value1", "value2", ...], "arg_name2" : ["value1", "value2", ...], ...}@  The @update_dependencies@ command takes two arguments:     * @upgrade_os_to@ - Specifies the desired Amazon Linux version for instances whose OS you want to upgrade, such as @Amazon Linux 2014.09@ . You must also set the @allow_reboot@ argument to true.     * @allow_reboot@ - Specifies whether to allow AWS OpsWorks to reboot the instances if necessary, after installing the updates. This argument can be set to either @true@ or @false@ . The default value is @false@ . For example, to upgrade an instance to Amazon Linux 2014.09, set @Args@ to the following. @{ "upgrade_os_to":["Amazon Linux 2014.09"], "allow_reboot":["true"] } @
---
--- * 'dcName' - Specifies the operation. You can specify only one command. For stacks, the following commands are available:     * @execute_recipes@ : Execute one or more recipes. To specify the recipes, set an @Args@ parameter named @recipes@ to the list of recipes to be executed. For example, to execute @phpapp::appsetup@ , set @Args@ to @{"recipes":["phpapp::appsetup"]}@ .     * @install_dependencies@ : Install the stack's dependencies.     * @update_custom_cookbooks@ : Update the stack's custom cookbooks.     * @update_dependencies@ : Update the stack's dependencies. For apps, the following commands are available:     * @deploy@ : Deploy an app. Ruby on Rails apps have an optional @Args@ parameter named @migrate@ . Set @Args@ to {"migrate":["true"]} to migrate the database. The default setting is {"migrate":["false"]}.     * @rollback@ Roll the app back to the previous version. When you update an app, AWS OpsWorks stores the previous version, up to a maximum of five versions. You can use this command to roll an app back as many as four versions.     * @start@ : Start the app's web or application server.     * @stop@ : Stop the app's web or application server.     * @restart@ : Restart the app's web or application server.     * @undeploy@ : Undeploy the app.
-deploymentCommand
-    :: DeploymentCommandName -- ^ 'dcName'
-    -> DeploymentCommand
-deploymentCommand pName_ =
-    DeploymentCommand'
-    { _dcArgs = Nothing
-    , _dcName = pName_
-    }
-
--- | The arguments of those commands that take arguments. It should be set to a JSON object with the following format: @{"arg_name1" : ["value1", "value2", ...], "arg_name2" : ["value1", "value2", ...], ...}@  The @update_dependencies@ command takes two arguments:     * @upgrade_os_to@ - Specifies the desired Amazon Linux version for instances whose OS you want to upgrade, such as @Amazon Linux 2014.09@ . You must also set the @allow_reboot@ argument to true.     * @allow_reboot@ - Specifies whether to allow AWS OpsWorks to reboot the instances if necessary, after installing the updates. This argument can be set to either @true@ or @false@ . The default value is @false@ . For example, to upgrade an instance to Amazon Linux 2014.09, set @Args@ to the following. @{ "upgrade_os_to":["Amazon Linux 2014.09"], "allow_reboot":["true"] } @
-dcArgs :: Lens' DeploymentCommand (HashMap Text [Text])
-dcArgs = lens _dcArgs (\ s a -> s{_dcArgs = a}) . _Default . _Map;
-
--- | Specifies the operation. You can specify only one command. For stacks, the following commands are available:     * @execute_recipes@ : Execute one or more recipes. To specify the recipes, set an @Args@ parameter named @recipes@ to the list of recipes to be executed. For example, to execute @phpapp::appsetup@ , set @Args@ to @{"recipes":["phpapp::appsetup"]}@ .     * @install_dependencies@ : Install the stack's dependencies.     * @update_custom_cookbooks@ : Update the stack's custom cookbooks.     * @update_dependencies@ : Update the stack's dependencies. For apps, the following commands are available:     * @deploy@ : Deploy an app. Ruby on Rails apps have an optional @Args@ parameter named @migrate@ . Set @Args@ to {"migrate":["true"]} to migrate the database. The default setting is {"migrate":["false"]}.     * @rollback@ Roll the app back to the previous version. When you update an app, AWS OpsWorks stores the previous version, up to a maximum of five versions. You can use this command to roll an app back as many as four versions.     * @start@ : Start the app's web or application server.     * @stop@ : Stop the app's web or application server.     * @restart@ : Restart the app's web or application server.     * @undeploy@ : Undeploy the app.
-dcName :: Lens' DeploymentCommand DeploymentCommandName
-dcName = lens _dcName (\ s a -> s{_dcName = a});
-
-instance FromJSON DeploymentCommand where
-        parseJSON
-          = withObject "DeploymentCommand"
-              (\ x ->
-                 DeploymentCommand' <$>
-                   (x .:? "Args" .!= mempty) <*> (x .: "Name"))
-
-instance Hashable DeploymentCommand
-
-instance NFData DeploymentCommand
-
-instance ToJSON DeploymentCommand where
-        toJSON DeploymentCommand'{..}
-          = object
-              (catMaybes
-                 [("Args" .=) <$> _dcArgs, Just ("Name" .= _dcName)])
-
--- | Describes an Amazon EBS volume. This data type maps directly to the Amazon EC2 <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_EbsBlockDevice.html EbsBlockDevice> data type.
---
---
---
--- /See:/ 'ebsBlockDevice' smart constructor.
-data EBSBlockDevice = EBSBlockDevice'
-    { _ebdDeleteOnTermination :: !(Maybe Bool)
-    , _ebdVolumeSize          :: !(Maybe Int)
-    , _ebdIOPS                :: !(Maybe Int)
-    , _ebdVolumeType          :: !(Maybe VolumeType)
-    , _ebdSnapshotId          :: !(Maybe Text)
-    } 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:
---
--- * 'ebdDeleteOnTermination' - Whether the volume is deleted on instance termination.
---
--- * 'ebdVolumeSize' - The volume size, in GiB. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_EbsBlockDevice.html EbsBlockDevice> .
---
--- * 'ebdIOPS' - The number of I/O operations per second (IOPS) that the volume supports. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_EbsBlockDevice.html EbsBlockDevice> .
---
--- * 'ebdVolumeType' - The volume type. @gp2@ for General Purpose (SSD) volumes, @io1@ for Provisioned IOPS (SSD) volumes, and @standard@ for Magnetic volumes.
---
--- * 'ebdSnapshotId' - The snapshot ID.
-ebsBlockDevice
-    :: EBSBlockDevice
-ebsBlockDevice =
-    EBSBlockDevice'
-    { _ebdDeleteOnTermination = Nothing
-    , _ebdVolumeSize = Nothing
-    , _ebdIOPS = Nothing
-    , _ebdVolumeType = Nothing
-    , _ebdSnapshotId = Nothing
-    }
-
--- | Whether the volume is deleted on instance termination.
-ebdDeleteOnTermination :: Lens' EBSBlockDevice (Maybe Bool)
-ebdDeleteOnTermination = lens _ebdDeleteOnTermination (\ s a -> s{_ebdDeleteOnTermination = a});
-
--- | The volume size, in GiB. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_EbsBlockDevice.html EbsBlockDevice> .
-ebdVolumeSize :: Lens' EBSBlockDevice (Maybe Int)
-ebdVolumeSize = lens _ebdVolumeSize (\ s a -> s{_ebdVolumeSize = a});
-
--- | The number of I/O operations per second (IOPS) that the volume supports. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_EbsBlockDevice.html EbsBlockDevice> .
-ebdIOPS :: Lens' EBSBlockDevice (Maybe Int)
-ebdIOPS = lens _ebdIOPS (\ s a -> s{_ebdIOPS = a});
-
--- | The volume type. @gp2@ for General Purpose (SSD) volumes, @io1@ for Provisioned IOPS (SSD) volumes, and @standard@ for Magnetic volumes.
-ebdVolumeType :: Lens' EBSBlockDevice (Maybe VolumeType)
-ebdVolumeType = lens _ebdVolumeType (\ s a -> s{_ebdVolumeType = a});
-
--- | The snapshot ID.
-ebdSnapshotId :: Lens' EBSBlockDevice (Maybe Text)
-ebdSnapshotId = lens _ebdSnapshotId (\ s a -> s{_ebdSnapshotId = a});
-
-instance FromJSON EBSBlockDevice where
-        parseJSON
-          = withObject "EBSBlockDevice"
-              (\ x ->
-                 EBSBlockDevice' <$>
-                   (x .:? "DeleteOnTermination") <*>
-                     (x .:? "VolumeSize")
-                     <*> (x .:? "Iops")
-                     <*> (x .:? "VolumeType")
-                     <*> (x .:? "SnapshotId"))
-
-instance Hashable EBSBlockDevice
-
-instance NFData EBSBlockDevice
-
-instance ToJSON EBSBlockDevice where
-        toJSON EBSBlockDevice'{..}
-          = object
-              (catMaybes
-                 [("DeleteOnTermination" .=) <$>
-                    _ebdDeleteOnTermination,
-                  ("VolumeSize" .=) <$> _ebdVolumeSize,
-                  ("Iops" .=) <$> _ebdIOPS,
-                  ("VolumeType" .=) <$> _ebdVolumeType,
-                  ("SnapshotId" .=) <$> _ebdSnapshotId])
-
--- | Describes a registered Amazon ECS cluster.
---
---
---
--- /See:/ 'ecsCluster' smart constructor.
-data EcsCluster = EcsCluster'
-    { _ecEcsClusterARN  :: !(Maybe Text)
-    , _ecEcsClusterName :: !(Maybe Text)
-    , _ecRegisteredAt   :: !(Maybe Text)
-    , _ecStackId        :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'EcsCluster' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ecEcsClusterARN' - The cluster's ARN.
---
--- * 'ecEcsClusterName' - The cluster name.
---
--- * 'ecRegisteredAt' - The time and date that the cluster was registered with the stack.
---
--- * 'ecStackId' - The stack ID.
-ecsCluster
-    :: EcsCluster
-ecsCluster =
-    EcsCluster'
-    { _ecEcsClusterARN = Nothing
-    , _ecEcsClusterName = Nothing
-    , _ecRegisteredAt = Nothing
-    , _ecStackId = Nothing
-    }
-
--- | The cluster's ARN.
-ecEcsClusterARN :: Lens' EcsCluster (Maybe Text)
-ecEcsClusterARN = lens _ecEcsClusterARN (\ s a -> s{_ecEcsClusterARN = a});
-
--- | The cluster name.
-ecEcsClusterName :: Lens' EcsCluster (Maybe Text)
-ecEcsClusterName = lens _ecEcsClusterName (\ s a -> s{_ecEcsClusterName = a});
-
--- | The time and date that the cluster was registered with the stack.
-ecRegisteredAt :: Lens' EcsCluster (Maybe Text)
-ecRegisteredAt = lens _ecRegisteredAt (\ s a -> s{_ecRegisteredAt = a});
-
--- | The stack ID.
-ecStackId :: Lens' EcsCluster (Maybe Text)
-ecStackId = lens _ecStackId (\ s a -> s{_ecStackId = a});
-
-instance FromJSON EcsCluster where
-        parseJSON
-          = withObject "EcsCluster"
-              (\ x ->
-                 EcsCluster' <$>
-                   (x .:? "EcsClusterArn") <*> (x .:? "EcsClusterName")
-                     <*> (x .:? "RegisteredAt")
-                     <*> (x .:? "StackId"))
-
-instance Hashable EcsCluster
-
-instance NFData EcsCluster
-
--- | Describes an Elastic IP address.
---
---
---
--- /See:/ 'elasticIP' smart constructor.
-data ElasticIP = ElasticIP'
-    { _eiInstanceId :: !(Maybe Text)
-    , _eiDomain     :: !(Maybe Text)
-    , _eiIP         :: !(Maybe Text)
-    , _eiName       :: !(Maybe Text)
-    , _eiRegion     :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ElasticIP' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eiInstanceId' - The ID of the instance that the address is attached to.
---
--- * 'eiDomain' - The domain.
---
--- * 'eiIP' - The IP address.
---
--- * 'eiName' - The name.
---
--- * 'eiRegion' - The AWS region. For more information, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints> .
-elasticIP
-    :: ElasticIP
-elasticIP =
-    ElasticIP'
-    { _eiInstanceId = Nothing
-    , _eiDomain = Nothing
-    , _eiIP = Nothing
-    , _eiName = Nothing
-    , _eiRegion = Nothing
-    }
-
--- | The ID of the instance that the address is attached to.
-eiInstanceId :: Lens' ElasticIP (Maybe Text)
-eiInstanceId = lens _eiInstanceId (\ s a -> s{_eiInstanceId = a});
-
--- | The domain.
-eiDomain :: Lens' ElasticIP (Maybe Text)
-eiDomain = lens _eiDomain (\ s a -> s{_eiDomain = a});
-
--- | The IP address.
-eiIP :: Lens' ElasticIP (Maybe Text)
-eiIP = lens _eiIP (\ s a -> s{_eiIP = a});
-
--- | The name.
-eiName :: Lens' ElasticIP (Maybe Text)
-eiName = lens _eiName (\ s a -> s{_eiName = a});
-
--- | The AWS region. For more information, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints> .
-eiRegion :: Lens' ElasticIP (Maybe Text)
-eiRegion = lens _eiRegion (\ s a -> s{_eiRegion = a});
-
-instance FromJSON ElasticIP where
-        parseJSON
-          = withObject "ElasticIP"
-              (\ x ->
-                 ElasticIP' <$>
-                   (x .:? "InstanceId") <*> (x .:? "Domain") <*>
-                     (x .:? "Ip")
-                     <*> (x .:? "Name")
-                     <*> (x .:? "Region"))
-
-instance Hashable ElasticIP
-
-instance NFData ElasticIP
-
--- | Describes an Elastic Load Balancing instance.
---
---
---
--- /See:/ 'elasticLoadBalancer' smart constructor.
-data ElasticLoadBalancer = ElasticLoadBalancer'
-    { _elbSubnetIds               :: !(Maybe [Text])
-    , _elbVPCId                   :: !(Maybe Text)
-    , _elbAvailabilityZones       :: !(Maybe [Text])
-    , _elbRegion                  :: !(Maybe Text)
-    , _elbElasticLoadBalancerName :: !(Maybe Text)
-    , _elbStackId                 :: !(Maybe Text)
-    , _elbEC2InstanceIds          :: !(Maybe [Text])
-    , _elbLayerId                 :: !(Maybe Text)
-    , _elbDNSName                 :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ElasticLoadBalancer' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'elbSubnetIds' - A list of subnet IDs, if the stack is running in a VPC.
---
--- * 'elbVPCId' - The VPC ID.
---
--- * 'elbAvailabilityZones' - A list of Availability Zones.
---
--- * 'elbRegion' - The instance's AWS region.
---
--- * 'elbElasticLoadBalancerName' - The Elastic Load Balancing instance's name.
---
--- * 'elbStackId' - The ID of the stack that the instance is associated with.
---
--- * 'elbEC2InstanceIds' - A list of the EC2 instances that the Elastic Load Balancing instance is managing traffic for.
---
--- * 'elbLayerId' - The ID of the layer that the instance is attached to.
---
--- * 'elbDNSName' - The instance's public DNS name.
-elasticLoadBalancer
-    :: ElasticLoadBalancer
-elasticLoadBalancer =
-    ElasticLoadBalancer'
-    { _elbSubnetIds = Nothing
-    , _elbVPCId = Nothing
-    , _elbAvailabilityZones = Nothing
-    , _elbRegion = Nothing
-    , _elbElasticLoadBalancerName = Nothing
-    , _elbStackId = Nothing
-    , _elbEC2InstanceIds = Nothing
-    , _elbLayerId = Nothing
-    , _elbDNSName = Nothing
-    }
-
--- | A list of subnet IDs, if the stack is running in a VPC.
-elbSubnetIds :: Lens' ElasticLoadBalancer [Text]
-elbSubnetIds = lens _elbSubnetIds (\ s a -> s{_elbSubnetIds = a}) . _Default . _Coerce;
-
--- | The VPC ID.
-elbVPCId :: Lens' ElasticLoadBalancer (Maybe Text)
-elbVPCId = lens _elbVPCId (\ s a -> s{_elbVPCId = a});
-
--- | A list of Availability Zones.
-elbAvailabilityZones :: Lens' ElasticLoadBalancer [Text]
-elbAvailabilityZones = lens _elbAvailabilityZones (\ s a -> s{_elbAvailabilityZones = a}) . _Default . _Coerce;
-
--- | The instance's AWS region.
-elbRegion :: Lens' ElasticLoadBalancer (Maybe Text)
-elbRegion = lens _elbRegion (\ s a -> s{_elbRegion = a});
-
--- | The Elastic Load Balancing instance's name.
-elbElasticLoadBalancerName :: Lens' ElasticLoadBalancer (Maybe Text)
-elbElasticLoadBalancerName = lens _elbElasticLoadBalancerName (\ s a -> s{_elbElasticLoadBalancerName = a});
-
--- | The ID of the stack that the instance is associated with.
-elbStackId :: Lens' ElasticLoadBalancer (Maybe Text)
-elbStackId = lens _elbStackId (\ s a -> s{_elbStackId = a});
-
--- | A list of the EC2 instances that the Elastic Load Balancing instance is managing traffic for.
-elbEC2InstanceIds :: Lens' ElasticLoadBalancer [Text]
-elbEC2InstanceIds = lens _elbEC2InstanceIds (\ s a -> s{_elbEC2InstanceIds = a}) . _Default . _Coerce;
-
--- | The ID of the layer that the instance is attached to.
-elbLayerId :: Lens' ElasticLoadBalancer (Maybe Text)
-elbLayerId = lens _elbLayerId (\ s a -> s{_elbLayerId = a});
-
--- | The instance's public DNS name.
-elbDNSName :: Lens' ElasticLoadBalancer (Maybe Text)
-elbDNSName = lens _elbDNSName (\ s a -> s{_elbDNSName = a});
-
-instance FromJSON ElasticLoadBalancer where
-        parseJSON
-          = withObject "ElasticLoadBalancer"
-              (\ x ->
-                 ElasticLoadBalancer' <$>
-                   (x .:? "SubnetIds" .!= mempty) <*> (x .:? "VpcId")
-                     <*> (x .:? "AvailabilityZones" .!= mempty)
-                     <*> (x .:? "Region")
-                     <*> (x .:? "ElasticLoadBalancerName")
-                     <*> (x .:? "StackId")
-                     <*> (x .:? "Ec2InstanceIds" .!= mempty)
-                     <*> (x .:? "LayerId")
-                     <*> (x .:? "DnsName"))
-
-instance Hashable ElasticLoadBalancer
-
-instance NFData ElasticLoadBalancer
-
--- | Represents an app's environment variable.
---
---
---
--- /See:/ 'environmentVariable' smart constructor.
-data EnvironmentVariable = EnvironmentVariable'
-    { _evSecure :: !(Maybe Bool)
-    , _evKey    :: !Text
-    , _evValue  :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'EnvironmentVariable' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'evSecure' - (Optional) Whether the variable's value will be returned by the 'DescribeApps' action. To conceal an environment variable's value, set @Secure@ to @true@ . @DescribeApps@ then returns @*****FILTERED*****@ instead of the actual value. The default value for @Secure@ is @false@ .
---
--- * 'evKey' - (Required) The environment variable's name, which can consist of up to 64 characters and must be specified. The name can contain upper- and lowercase letters, numbers, and underscores (_), but it must start with a letter or underscore.
---
--- * 'evValue' - (Optional) The environment variable's value, which can be left empty. If you specify a value, it can contain up to 256 characters, which must all be printable.
-environmentVariable
-    :: Text -- ^ 'evKey'
-    -> Text -- ^ 'evValue'
-    -> EnvironmentVariable
-environmentVariable pKey_ pValue_ =
-    EnvironmentVariable'
-    { _evSecure = Nothing
-    , _evKey = pKey_
-    , _evValue = pValue_
-    }
-
--- | (Optional) Whether the variable's value will be returned by the 'DescribeApps' action. To conceal an environment variable's value, set @Secure@ to @true@ . @DescribeApps@ then returns @*****FILTERED*****@ instead of the actual value. The default value for @Secure@ is @false@ .
-evSecure :: Lens' EnvironmentVariable (Maybe Bool)
-evSecure = lens _evSecure (\ s a -> s{_evSecure = a});
-
--- | (Required) The environment variable's name, which can consist of up to 64 characters and must be specified. The name can contain upper- and lowercase letters, numbers, and underscores (_), but it must start with a letter or underscore.
-evKey :: Lens' EnvironmentVariable Text
-evKey = lens _evKey (\ s a -> s{_evKey = a});
-
--- | (Optional) The environment variable's value, which can be left empty. If you specify a value, it can contain up to 256 characters, which must all be printable.
-evValue :: Lens' EnvironmentVariable Text
-evValue = lens _evValue (\ s a -> s{_evValue = a});
-
-instance FromJSON EnvironmentVariable where
-        parseJSON
-          = withObject "EnvironmentVariable"
-              (\ x ->
-                 EnvironmentVariable' <$>
-                   (x .:? "Secure") <*> (x .: "Key") <*> (x .: "Value"))
-
-instance Hashable EnvironmentVariable
-
-instance NFData EnvironmentVariable
-
-instance ToJSON EnvironmentVariable where
-        toJSON EnvironmentVariable'{..}
-          = object
-              (catMaybes
-                 [("Secure" .=) <$> _evSecure, Just ("Key" .= _evKey),
-                  Just ("Value" .= _evValue)])
-
--- | Describes an instance.
---
---
---
--- /See:/ 'instance'' smart constructor.
-data Instance = Instance'
-    { _iPrivateDNS               :: !(Maybe Text)
-    , _iReportedAgentVersion     :: !(Maybe Text)
-    , _iInstanceId               :: !(Maybe Text)
-    , _iStatus                   :: !(Maybe Text)
-    , _iPrivateIP                :: !(Maybe Text)
-    , _iInstallUpdatesOnBoot     :: !(Maybe Bool)
-    , _iVirtualizationType       :: !(Maybe VirtualizationType)
-    , _iInstanceProfileARN       :: !(Maybe Text)
-    , _iPlatform                 :: !(Maybe Text)
-    , _iHostname                 :: !(Maybe Text)
-    , _iSSHHostRsaKeyFingerprint :: !(Maybe Text)
-    , _iSecurityGroupIds         :: !(Maybe [Text])
-    , _iEcsClusterARN            :: !(Maybe Text)
-    , _iCreatedAt                :: !(Maybe Text)
-    , _iEC2InstanceId            :: !(Maybe Text)
-    , _iSSHKeyName               :: !(Maybe Text)
-    , _iAgentVersion             :: !(Maybe Text)
-    , _iRootDeviceVolumeId       :: !(Maybe Text)
-    , _iSubnetId                 :: !(Maybe Text)
-    , _iInfrastructureClass      :: !(Maybe Text)
-    , _iSSHHostDsaKeyFingerprint :: !(Maybe Text)
-    , _iInstanceType             :: !(Maybe Text)
-    , _iEBSOptimized             :: !(Maybe Bool)
-    , _iElasticIP                :: !(Maybe Text)
-    , _iOS                       :: !(Maybe Text)
-    , _iAvailabilityZone         :: !(Maybe Text)
-    , _iLastServiceErrorId       :: !(Maybe Text)
-    , _iTenancy                  :: !(Maybe Text)
-    , _iAutoScalingType          :: !(Maybe AutoScalingType)
-    , _iLayerIds                 :: !(Maybe [Text])
-    , _iArchitecture             :: !(Maybe Architecture)
-    , _iPublicDNS                :: !(Maybe Text)
-    , _iAMIId                    :: !(Maybe Text)
-    , _iPublicIP                 :: !(Maybe Text)
-    , _iReportedOS               :: !(Maybe ReportedOS)
-    , _iRegisteredBy             :: !(Maybe Text)
-    , _iStackId                  :: !(Maybe Text)
-    , _iRootDeviceType           :: !(Maybe RootDeviceType)
-    , _iEcsContainerInstanceARN  :: !(Maybe Text)
-    , _iBlockDeviceMappings      :: !(Maybe [BlockDeviceMapping])
-    } 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:
---
--- * 'iPrivateDNS' - The The instance's private DNS name.
---
--- * 'iReportedAgentVersion' - The instance's reported AWS OpsWorks agent version.
---
--- * 'iInstanceId' - The instance ID.
---
--- * 'iStatus' - The instance status:     * @booting@      * @connection_lost@      * @online@      * @pending@      * @rebooting@      * @requested@      * @running_setup@      * @setup_failed@      * @shutting_down@      * @start_failed@      * @stop_failed@      * @stopped@      * @stopping@      * @terminated@      * @terminating@
---
--- * 'iPrivateIP' - The instance's private IP address.
---
--- * 'iInstallUpdatesOnBoot' - Whether to install operating system and package updates when the instance boots. The default value is @true@ . If this value is set to @false@ , you must then update your instances manually by using 'CreateDeployment' to run the @update_dependencies@ stack command or by manually running @yum@ (Amazon Linux) or @apt-get@ (Ubuntu) on the instances.
---
--- * 'iVirtualizationType' - The instance's virtualization type: @paravirtual@ or @hvm@ .
---
--- * 'iInstanceProfileARN' - The ARN of the instance's IAM profile. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers> .
---
--- * 'iPlatform' - The instance's platform.
---
--- * 'iHostname' - The instance host name.
---
--- * 'iSSHHostRsaKeyFingerprint' - The SSH key's RSA fingerprint.
---
--- * 'iSecurityGroupIds' - An array containing the instance security group IDs.
---
--- * 'iEcsClusterARN' - For container instances, the Amazon ECS cluster's ARN.
---
--- * 'iCreatedAt' - The time that the instance was created.
---
--- * 'iEC2InstanceId' - The ID of the associated Amazon EC2 instance.
---
--- * 'iSSHKeyName' - The instance's Amazon EC2 key-pair name.
---
--- * 'iAgentVersion' - The agent version. This parameter is set to @INHERIT@ if the instance inherits the default stack setting or to a a version number for a fixed agent version.
---
--- * 'iRootDeviceVolumeId' - The root device volume ID.
---
--- * 'iSubnetId' - The instance's subnet ID; applicable only if the stack is running in a VPC.
---
--- * 'iInfrastructureClass' - For registered instances, the infrastructure class: @ec2@ or @on-premises@ .
---
--- * 'iSSHHostDsaKeyFingerprint' - The SSH key's Deep Security Agent (DSA) fingerprint.
---
--- * 'iInstanceType' - The instance type, such as @t2.micro@ .
---
--- * 'iEBSOptimized' - Whether this is an Amazon EBS-optimized instance.
---
--- * 'iElasticIP' - The instance <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP address > .
---
--- * 'iOS' - The instance's operating system.
---
--- * 'iAvailabilityZone' - The instance Availability Zone. For more information, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints> .
---
--- * 'iLastServiceErrorId' - The ID of the last service error. For more information, call 'DescribeServiceErrors' .
---
--- * 'iTenancy' - The instance's tenancy option, such as @dedicated@ or @host@ .
---
--- * 'iAutoScalingType' - For load-based or time-based instances, the type.
---
--- * 'iLayerIds' - An array containing the instance layer IDs.
---
--- * 'iArchitecture' - The instance architecture: "i386" or "x86_64".
---
--- * 'iPublicDNS' - The instance public DNS name.
---
--- * 'iAMIId' - A custom AMI ID to be used to create the instance. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Instances>
---
--- * 'iPublicIP' - The instance public IP address.
---
--- * 'iReportedOS' - For registered instances, the reported operating system.
---
--- * 'iRegisteredBy' - For registered instances, who performed the registration.
---
--- * 'iStackId' - The stack ID.
---
--- * 'iRootDeviceType' - The instance's root device type. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device Storage for the Root Device> .
---
--- * 'iEcsContainerInstanceARN' - For container instances, the instance's ARN.
---
--- * 'iBlockDeviceMappings' - An array of @BlockDeviceMapping@ objects that specify the instance's block device mappings.
-instance'
-    :: Instance
-instance' =
-    Instance'
-    { _iPrivateDNS = Nothing
-    , _iReportedAgentVersion = Nothing
-    , _iInstanceId = Nothing
-    , _iStatus = Nothing
-    , _iPrivateIP = Nothing
-    , _iInstallUpdatesOnBoot = Nothing
-    , _iVirtualizationType = Nothing
-    , _iInstanceProfileARN = Nothing
-    , _iPlatform = Nothing
-    , _iHostname = Nothing
-    , _iSSHHostRsaKeyFingerprint = Nothing
-    , _iSecurityGroupIds = Nothing
-    , _iEcsClusterARN = Nothing
-    , _iCreatedAt = Nothing
-    , _iEC2InstanceId = Nothing
-    , _iSSHKeyName = Nothing
-    , _iAgentVersion = Nothing
-    , _iRootDeviceVolumeId = Nothing
-    , _iSubnetId = Nothing
-    , _iInfrastructureClass = Nothing
-    , _iSSHHostDsaKeyFingerprint = Nothing
-    , _iInstanceType = Nothing
-    , _iEBSOptimized = Nothing
-    , _iElasticIP = Nothing
-    , _iOS = Nothing
-    , _iAvailabilityZone = Nothing
-    , _iLastServiceErrorId = Nothing
-    , _iTenancy = Nothing
-    , _iAutoScalingType = Nothing
-    , _iLayerIds = Nothing
-    , _iArchitecture = Nothing
-    , _iPublicDNS = Nothing
-    , _iAMIId = Nothing
-    , _iPublicIP = Nothing
-    , _iReportedOS = Nothing
-    , _iRegisteredBy = Nothing
-    , _iStackId = Nothing
-    , _iRootDeviceType = Nothing
-    , _iEcsContainerInstanceARN = Nothing
-    , _iBlockDeviceMappings = Nothing
-    }
-
--- | The The instance's private DNS name.
-iPrivateDNS :: Lens' Instance (Maybe Text)
-iPrivateDNS = lens _iPrivateDNS (\ s a -> s{_iPrivateDNS = a});
-
--- | The instance's reported AWS OpsWorks agent version.
-iReportedAgentVersion :: Lens' Instance (Maybe Text)
-iReportedAgentVersion = lens _iReportedAgentVersion (\ s a -> s{_iReportedAgentVersion = a});
-
--- | The instance ID.
-iInstanceId :: Lens' Instance (Maybe Text)
-iInstanceId = lens _iInstanceId (\ s a -> s{_iInstanceId = a});
-
--- | The instance status:     * @booting@      * @connection_lost@      * @online@      * @pending@      * @rebooting@      * @requested@      * @running_setup@      * @setup_failed@      * @shutting_down@      * @start_failed@      * @stop_failed@      * @stopped@      * @stopping@      * @terminated@      * @terminating@
-iStatus :: Lens' Instance (Maybe Text)
-iStatus = lens _iStatus (\ s a -> s{_iStatus = a});
-
--- | The instance's private IP address.
-iPrivateIP :: Lens' Instance (Maybe Text)
-iPrivateIP = lens _iPrivateIP (\ s a -> s{_iPrivateIP = a});
-
--- | Whether to install operating system and package updates when the instance boots. The default value is @true@ . If this value is set to @false@ , you must then update your instances manually by using 'CreateDeployment' to run the @update_dependencies@ stack command or by manually running @yum@ (Amazon Linux) or @apt-get@ (Ubuntu) on the instances.
-iInstallUpdatesOnBoot :: Lens' Instance (Maybe Bool)
-iInstallUpdatesOnBoot = lens _iInstallUpdatesOnBoot (\ s a -> s{_iInstallUpdatesOnBoot = a});
-
--- | The instance's virtualization type: @paravirtual@ or @hvm@ .
-iVirtualizationType :: Lens' Instance (Maybe VirtualizationType)
-iVirtualizationType = lens _iVirtualizationType (\ s a -> s{_iVirtualizationType = a});
-
--- | The ARN of the instance's IAM profile. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers> .
-iInstanceProfileARN :: Lens' Instance (Maybe Text)
-iInstanceProfileARN = lens _iInstanceProfileARN (\ s a -> s{_iInstanceProfileARN = a});
-
--- | The instance's platform.
-iPlatform :: Lens' Instance (Maybe Text)
-iPlatform = lens _iPlatform (\ s a -> s{_iPlatform = a});
-
--- | The instance host name.
-iHostname :: Lens' Instance (Maybe Text)
-iHostname = lens _iHostname (\ s a -> s{_iHostname = a});
-
--- | The SSH key's RSA fingerprint.
-iSSHHostRsaKeyFingerprint :: Lens' Instance (Maybe Text)
-iSSHHostRsaKeyFingerprint = lens _iSSHHostRsaKeyFingerprint (\ s a -> s{_iSSHHostRsaKeyFingerprint = a});
-
--- | An array containing the instance security group IDs.
-iSecurityGroupIds :: Lens' Instance [Text]
-iSecurityGroupIds = lens _iSecurityGroupIds (\ s a -> s{_iSecurityGroupIds = a}) . _Default . _Coerce;
-
--- | For container instances, the Amazon ECS cluster's ARN.
-iEcsClusterARN :: Lens' Instance (Maybe Text)
-iEcsClusterARN = lens _iEcsClusterARN (\ s a -> s{_iEcsClusterARN = a});
-
--- | The time that the instance was created.
-iCreatedAt :: Lens' Instance (Maybe Text)
-iCreatedAt = lens _iCreatedAt (\ s a -> s{_iCreatedAt = a});
-
--- | The ID of the associated Amazon EC2 instance.
-iEC2InstanceId :: Lens' Instance (Maybe Text)
-iEC2InstanceId = lens _iEC2InstanceId (\ s a -> s{_iEC2InstanceId = a});
-
--- | The instance's Amazon EC2 key-pair name.
-iSSHKeyName :: Lens' Instance (Maybe Text)
-iSSHKeyName = lens _iSSHKeyName (\ s a -> s{_iSSHKeyName = a});
-
--- | The agent version. This parameter is set to @INHERIT@ if the instance inherits the default stack setting or to a a version number for a fixed agent version.
-iAgentVersion :: Lens' Instance (Maybe Text)
-iAgentVersion = lens _iAgentVersion (\ s a -> s{_iAgentVersion = a});
-
--- | The root device volume ID.
-iRootDeviceVolumeId :: Lens' Instance (Maybe Text)
-iRootDeviceVolumeId = lens _iRootDeviceVolumeId (\ s a -> s{_iRootDeviceVolumeId = a});
-
--- | The instance's subnet ID; applicable only if the stack is running in a VPC.
-iSubnetId :: Lens' Instance (Maybe Text)
-iSubnetId = lens _iSubnetId (\ s a -> s{_iSubnetId = a});
-
--- | For registered instances, the infrastructure class: @ec2@ or @on-premises@ .
-iInfrastructureClass :: Lens' Instance (Maybe Text)
-iInfrastructureClass = lens _iInfrastructureClass (\ s a -> s{_iInfrastructureClass = a});
-
--- | The SSH key's Deep Security Agent (DSA) fingerprint.
-iSSHHostDsaKeyFingerprint :: Lens' Instance (Maybe Text)
-iSSHHostDsaKeyFingerprint = lens _iSSHHostDsaKeyFingerprint (\ s a -> s{_iSSHHostDsaKeyFingerprint = a});
-
--- | The instance type, such as @t2.micro@ .
-iInstanceType :: Lens' Instance (Maybe Text)
-iInstanceType = lens _iInstanceType (\ s a -> s{_iInstanceType = a});
-
--- | Whether this is an Amazon EBS-optimized instance.
-iEBSOptimized :: Lens' Instance (Maybe Bool)
-iEBSOptimized = lens _iEBSOptimized (\ s a -> s{_iEBSOptimized = a});
-
--- | The instance <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP address > .
-iElasticIP :: Lens' Instance (Maybe Text)
-iElasticIP = lens _iElasticIP (\ s a -> s{_iElasticIP = a});
-
--- | The instance's operating system.
-iOS :: Lens' Instance (Maybe Text)
-iOS = lens _iOS (\ s a -> s{_iOS = a});
-
--- | The instance Availability Zone. For more information, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints> .
-iAvailabilityZone :: Lens' Instance (Maybe Text)
-iAvailabilityZone = lens _iAvailabilityZone (\ s a -> s{_iAvailabilityZone = a});
-
--- | The ID of the last service error. For more information, call 'DescribeServiceErrors' .
-iLastServiceErrorId :: Lens' Instance (Maybe Text)
-iLastServiceErrorId = lens _iLastServiceErrorId (\ s a -> s{_iLastServiceErrorId = a});
-
--- | The instance's tenancy option, such as @dedicated@ or @host@ .
-iTenancy :: Lens' Instance (Maybe Text)
-iTenancy = lens _iTenancy (\ s a -> s{_iTenancy = a});
-
--- | For load-based or time-based instances, the type.
-iAutoScalingType :: Lens' Instance (Maybe AutoScalingType)
-iAutoScalingType = lens _iAutoScalingType (\ s a -> s{_iAutoScalingType = a});
-
--- | An array containing the instance layer IDs.
-iLayerIds :: Lens' Instance [Text]
-iLayerIds = lens _iLayerIds (\ s a -> s{_iLayerIds = a}) . _Default . _Coerce;
-
--- | The instance architecture: "i386" or "x86_64".
-iArchitecture :: Lens' Instance (Maybe Architecture)
-iArchitecture = lens _iArchitecture (\ s a -> s{_iArchitecture = a});
-
--- | The instance public DNS name.
-iPublicDNS :: Lens' Instance (Maybe Text)
-iPublicDNS = lens _iPublicDNS (\ s a -> s{_iPublicDNS = a});
-
--- | A custom AMI ID to be used to create the instance. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Instances>
-iAMIId :: Lens' Instance (Maybe Text)
-iAMIId = lens _iAMIId (\ s a -> s{_iAMIId = a});
-
--- | The instance public IP address.
-iPublicIP :: Lens' Instance (Maybe Text)
-iPublicIP = lens _iPublicIP (\ s a -> s{_iPublicIP = a});
-
--- | For registered instances, the reported operating system.
-iReportedOS :: Lens' Instance (Maybe ReportedOS)
-iReportedOS = lens _iReportedOS (\ s a -> s{_iReportedOS = a});
-
--- | For registered instances, who performed the registration.
-iRegisteredBy :: Lens' Instance (Maybe Text)
-iRegisteredBy = lens _iRegisteredBy (\ s a -> s{_iRegisteredBy = a});
-
--- | The stack ID.
-iStackId :: Lens' Instance (Maybe Text)
-iStackId = lens _iStackId (\ s a -> s{_iStackId = a});
-
--- | The instance's root device type. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device Storage for the Root Device> .
-iRootDeviceType :: Lens' Instance (Maybe RootDeviceType)
-iRootDeviceType = lens _iRootDeviceType (\ s a -> s{_iRootDeviceType = a});
-
--- | For container instances, the instance's ARN.
-iEcsContainerInstanceARN :: Lens' Instance (Maybe Text)
-iEcsContainerInstanceARN = lens _iEcsContainerInstanceARN (\ s a -> s{_iEcsContainerInstanceARN = a});
-
--- | An array of @BlockDeviceMapping@ objects that specify the instance's block device mappings.
-iBlockDeviceMappings :: Lens' Instance [BlockDeviceMapping]
-iBlockDeviceMappings = lens _iBlockDeviceMappings (\ s a -> s{_iBlockDeviceMappings = a}) . _Default . _Coerce;
-
-instance FromJSON Instance where
-        parseJSON
-          = withObject "Instance"
-              (\ x ->
-                 Instance' <$>
-                   (x .:? "PrivateDns") <*>
-                     (x .:? "ReportedAgentVersion")
-                     <*> (x .:? "InstanceId")
-                     <*> (x .:? "Status")
-                     <*> (x .:? "PrivateIp")
-                     <*> (x .:? "InstallUpdatesOnBoot")
-                     <*> (x .:? "VirtualizationType")
-                     <*> (x .:? "InstanceProfileArn")
-                     <*> (x .:? "Platform")
-                     <*> (x .:? "Hostname")
-                     <*> (x .:? "SshHostRsaKeyFingerprint")
-                     <*> (x .:? "SecurityGroupIds" .!= mempty)
-                     <*> (x .:? "EcsClusterArn")
-                     <*> (x .:? "CreatedAt")
-                     <*> (x .:? "Ec2InstanceId")
-                     <*> (x .:? "SshKeyName")
-                     <*> (x .:? "AgentVersion")
-                     <*> (x .:? "RootDeviceVolumeId")
-                     <*> (x .:? "SubnetId")
-                     <*> (x .:? "InfrastructureClass")
-                     <*> (x .:? "SshHostDsaKeyFingerprint")
-                     <*> (x .:? "InstanceType")
-                     <*> (x .:? "EbsOptimized")
-                     <*> (x .:? "ElasticIp")
-                     <*> (x .:? "Os")
-                     <*> (x .:? "AvailabilityZone")
-                     <*> (x .:? "LastServiceErrorId")
-                     <*> (x .:? "Tenancy")
-                     <*> (x .:? "AutoScalingType")
-                     <*> (x .:? "LayerIds" .!= mempty)
-                     <*> (x .:? "Architecture")
-                     <*> (x .:? "PublicDns")
-                     <*> (x .:? "AmiId")
-                     <*> (x .:? "PublicIp")
-                     <*> (x .:? "ReportedOs")
-                     <*> (x .:? "RegisteredBy")
-                     <*> (x .:? "StackId")
-                     <*> (x .:? "RootDeviceType")
-                     <*> (x .:? "EcsContainerInstanceArn")
-                     <*> (x .:? "BlockDeviceMappings" .!= mempty))
-
-instance Hashable Instance
-
-instance NFData Instance
-
--- | Contains a description of an Amazon EC2 instance from the Amazon EC2 metadata service. For more information, see <http://docs.aws.amazon.com/sdkfornet/latest/apidocs/Index.html Instance Metadata and User Data> .
---
---
---
--- /See:/ 'instanceIdentity' smart constructor.
-data InstanceIdentity = InstanceIdentity'
-    { _iiSignature :: !(Maybe Text)
-    , _iiDocument  :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceIdentity' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iiSignature' - A signature that can be used to verify the document's accuracy and authenticity.
---
--- * 'iiDocument' - A JSON document that contains the metadata.
-instanceIdentity
-    :: InstanceIdentity
-instanceIdentity =
-    InstanceIdentity'
-    { _iiSignature = Nothing
-    , _iiDocument = Nothing
-    }
-
--- | A signature that can be used to verify the document's accuracy and authenticity.
-iiSignature :: Lens' InstanceIdentity (Maybe Text)
-iiSignature = lens _iiSignature (\ s a -> s{_iiSignature = a});
-
--- | A JSON document that contains the metadata.
-iiDocument :: Lens' InstanceIdentity (Maybe Text)
-iiDocument = lens _iiDocument (\ s a -> s{_iiDocument = a});
-
-instance Hashable InstanceIdentity
-
-instance NFData InstanceIdentity
-
-instance ToJSON InstanceIdentity where
-        toJSON InstanceIdentity'{..}
-          = object
-              (catMaybes
-                 [("Signature" .=) <$> _iiSignature,
-                  ("Document" .=) <$> _iiDocument])
-
--- | Describes how many instances a stack has for each status.
---
---
---
--- /See:/ 'instancesCount' smart constructor.
-data InstancesCount = InstancesCount'
-    { _icTerminating    :: !(Maybe Int)
-    , _icPending        :: !(Maybe Int)
-    , _icOnline         :: !(Maybe Int)
-    , _icUnassigning    :: !(Maybe Int)
-    , _icDeregistering  :: !(Maybe Int)
-    , _icRunningSetup   :: !(Maybe Int)
-    , _icRequested      :: !(Maybe Int)
-    , _icBooting        :: !(Maybe Int)
-    , _icStopped        :: !(Maybe Int)
-    , _icRebooting      :: !(Maybe Int)
-    , _icAssigning      :: !(Maybe Int)
-    , _icShuttingDown   :: !(Maybe Int)
-    , _icSetupFailed    :: !(Maybe Int)
-    , _icConnectionLost :: !(Maybe Int)
-    , _icTerminated     :: !(Maybe Int)
-    , _icStopping       :: !(Maybe Int)
-    , _icRegistered     :: !(Maybe Int)
-    , _icStartFailed    :: !(Maybe Int)
-    , _icRegistering    :: !(Maybe Int)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstancesCount' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'icTerminating' - The number of instances with @terminating@ status.
---
--- * 'icPending' - The number of instances with @pending@ status.
---
--- * 'icOnline' - The number of instances with @online@ status.
---
--- * 'icUnassigning' - The number of instances in the Unassigning state.
---
--- * 'icDeregistering' - The number of instances in the Deregistering state.
---
--- * 'icRunningSetup' - The number of instances with @running_setup@ status.
---
--- * 'icRequested' - The number of instances with @requested@ status.
---
--- * 'icBooting' - The number of instances with @booting@ status.
---
--- * 'icStopped' - The number of instances with @stopped@ status.
---
--- * 'icRebooting' - The number of instances with @rebooting@ status.
---
--- * 'icAssigning' - The number of instances in the Assigning state.
---
--- * 'icShuttingDown' - The number of instances with @shutting_down@ status.
---
--- * 'icSetupFailed' - The number of instances with @setup_failed@ status.
---
--- * 'icConnectionLost' - The number of instances with @connection_lost@ status.
---
--- * 'icTerminated' - The number of instances with @terminated@ status.
---
--- * 'icStopping' - The number of instances with @stopping@ status.
---
--- * 'icRegistered' - The number of instances in the Registered state.
---
--- * 'icStartFailed' - The number of instances with @start_failed@ status.
---
--- * 'icRegistering' - The number of instances in the Registering state.
-instancesCount
-    :: InstancesCount
-instancesCount =
-    InstancesCount'
-    { _icTerminating = Nothing
-    , _icPending = Nothing
-    , _icOnline = Nothing
-    , _icUnassigning = Nothing
-    , _icDeregistering = Nothing
-    , _icRunningSetup = Nothing
-    , _icRequested = Nothing
-    , _icBooting = Nothing
-    , _icStopped = Nothing
-    , _icRebooting = Nothing
-    , _icAssigning = Nothing
-    , _icShuttingDown = Nothing
-    , _icSetupFailed = Nothing
-    , _icConnectionLost = Nothing
-    , _icTerminated = Nothing
-    , _icStopping = Nothing
-    , _icRegistered = Nothing
-    , _icStartFailed = Nothing
-    , _icRegistering = Nothing
-    }
-
--- | The number of instances with @terminating@ status.
-icTerminating :: Lens' InstancesCount (Maybe Int)
-icTerminating = lens _icTerminating (\ s a -> s{_icTerminating = a});
-
--- | The number of instances with @pending@ status.
-icPending :: Lens' InstancesCount (Maybe Int)
-icPending = lens _icPending (\ s a -> s{_icPending = a});
-
--- | The number of instances with @online@ status.
-icOnline :: Lens' InstancesCount (Maybe Int)
-icOnline = lens _icOnline (\ s a -> s{_icOnline = a});
-
--- | The number of instances in the Unassigning state.
-icUnassigning :: Lens' InstancesCount (Maybe Int)
-icUnassigning = lens _icUnassigning (\ s a -> s{_icUnassigning = a});
-
--- | The number of instances in the Deregistering state.
-icDeregistering :: Lens' InstancesCount (Maybe Int)
-icDeregistering = lens _icDeregistering (\ s a -> s{_icDeregistering = a});
-
--- | The number of instances with @running_setup@ status.
-icRunningSetup :: Lens' InstancesCount (Maybe Int)
-icRunningSetup = lens _icRunningSetup (\ s a -> s{_icRunningSetup = a});
-
--- | The number of instances with @requested@ status.
-icRequested :: Lens' InstancesCount (Maybe Int)
-icRequested = lens _icRequested (\ s a -> s{_icRequested = a});
-
--- | The number of instances with @booting@ status.
-icBooting :: Lens' InstancesCount (Maybe Int)
-icBooting = lens _icBooting (\ s a -> s{_icBooting = a});
-
--- | The number of instances with @stopped@ status.
-icStopped :: Lens' InstancesCount (Maybe Int)
-icStopped = lens _icStopped (\ s a -> s{_icStopped = a});
-
--- | The number of instances with @rebooting@ status.
-icRebooting :: Lens' InstancesCount (Maybe Int)
-icRebooting = lens _icRebooting (\ s a -> s{_icRebooting = a});
-
--- | The number of instances in the Assigning state.
-icAssigning :: Lens' InstancesCount (Maybe Int)
-icAssigning = lens _icAssigning (\ s a -> s{_icAssigning = a});
-
--- | The number of instances with @shutting_down@ status.
-icShuttingDown :: Lens' InstancesCount (Maybe Int)
-icShuttingDown = lens _icShuttingDown (\ s a -> s{_icShuttingDown = a});
-
--- | The number of instances with @setup_failed@ status.
-icSetupFailed :: Lens' InstancesCount (Maybe Int)
-icSetupFailed = lens _icSetupFailed (\ s a -> s{_icSetupFailed = a});
-
--- | The number of instances with @connection_lost@ status.
-icConnectionLost :: Lens' InstancesCount (Maybe Int)
-icConnectionLost = lens _icConnectionLost (\ s a -> s{_icConnectionLost = a});
-
--- | The number of instances with @terminated@ status.
-icTerminated :: Lens' InstancesCount (Maybe Int)
-icTerminated = lens _icTerminated (\ s a -> s{_icTerminated = a});
-
--- | The number of instances with @stopping@ status.
-icStopping :: Lens' InstancesCount (Maybe Int)
-icStopping = lens _icStopping (\ s a -> s{_icStopping = a});
-
--- | The number of instances in the Registered state.
-icRegistered :: Lens' InstancesCount (Maybe Int)
-icRegistered = lens _icRegistered (\ s a -> s{_icRegistered = a});
-
--- | The number of instances with @start_failed@ status.
-icStartFailed :: Lens' InstancesCount (Maybe Int)
-icStartFailed = lens _icStartFailed (\ s a -> s{_icStartFailed = a});
-
--- | The number of instances in the Registering state.
-icRegistering :: Lens' InstancesCount (Maybe Int)
-icRegistering = lens _icRegistering (\ s a -> s{_icRegistering = a});
-
-instance FromJSON InstancesCount where
-        parseJSON
-          = withObject "InstancesCount"
-              (\ x ->
-                 InstancesCount' <$>
-                   (x .:? "Terminating") <*> (x .:? "Pending") <*>
-                     (x .:? "Online")
-                     <*> (x .:? "Unassigning")
-                     <*> (x .:? "Deregistering")
-                     <*> (x .:? "RunningSetup")
-                     <*> (x .:? "Requested")
-                     <*> (x .:? "Booting")
-                     <*> (x .:? "Stopped")
-                     <*> (x .:? "Rebooting")
-                     <*> (x .:? "Assigning")
-                     <*> (x .:? "ShuttingDown")
-                     <*> (x .:? "SetupFailed")
-                     <*> (x .:? "ConnectionLost")
-                     <*> (x .:? "Terminated")
-                     <*> (x .:? "Stopping")
-                     <*> (x .:? "Registered")
-                     <*> (x .:? "StartFailed")
-                     <*> (x .:? "Registering"))
-
-instance Hashable InstancesCount
-
-instance NFData InstancesCount
-
--- | Describes a layer.
---
---
---
--- /See:/ 'layer' smart constructor.
-data Layer = Layer'
-    { _lCustomInstanceProfileARN    :: !(Maybe Text)
-    , _lCustomSecurityGroupIds      :: !(Maybe [Text])
-    , _lInstallUpdatesOnBoot        :: !(Maybe Bool)
-    , _lLifecycleEventConfiguration :: !(Maybe LifecycleEventConfiguration)
-    , _lCreatedAt                   :: !(Maybe Text)
-    , _lShortname                   :: !(Maybe Text)
-    , _lDefaultRecipes              :: !(Maybe Recipes)
-    , _lCustomRecipes               :: !(Maybe Recipes)
-    , _lCustomJSON                  :: !(Maybe Text)
-    , _lVolumeConfigurations        :: !(Maybe [VolumeConfiguration])
-    , _lEnableAutoHealing           :: !(Maybe Bool)
-    , _lPackages                    :: !(Maybe [Text])
-    , _lAttributes                  :: !(Maybe (Map LayerAttributesKeys Text))
-    , _lName                        :: !(Maybe Text)
-    , _lAutoAssignPublicIPs         :: !(Maybe Bool)
-    , _lType                        :: !(Maybe LayerType)
-    , _lUseEBSOptimizedInstances    :: !(Maybe Bool)
-    , _lStackId                     :: !(Maybe Text)
-    , _lLayerId                     :: !(Maybe Text)
-    , _lDefaultSecurityGroupNames   :: !(Maybe [Text])
-    , _lAutoAssignElasticIPs        :: !(Maybe Bool)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Layer' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lCustomInstanceProfileARN' - The ARN of the default IAM profile to be used for the layer's EC2 instances. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers> .
---
--- * 'lCustomSecurityGroupIds' - An array containing the layer's custom security group IDs.
---
--- * 'lInstallUpdatesOnBoot' - Whether to install operating system and package updates when the instance boots. The default value is @true@ . If this value is set 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.
---
--- * 'lLifecycleEventConfiguration' - A @LifeCycleEventConfiguration@ object that specifies the Shutdown event configuration.
---
--- * 'lCreatedAt' - Date when the layer was created.
---
--- * 'lShortname' - The layer short name.
---
--- * 'lDefaultRecipes' - Undocumented member.
---
--- * 'lCustomRecipes' - A @LayerCustomRecipes@ object that specifies the layer's custom recipes.
---
--- * 'lCustomJSON' - A JSON formatted string containing the layer's custom stack configuration and deployment attributes.
---
--- * 'lVolumeConfigurations' - A @VolumeConfigurations@ object that describes the layer's Amazon EBS volumes.
---
--- * 'lEnableAutoHealing' - Whether auto healing is disabled for the layer.
---
--- * 'lPackages' - An array of @Package@ objects that describe the layer's packages.
---
--- * 'lAttributes' - The layer attributes. For the @HaproxyStatsPassword@ , @MysqlRootPassword@ , and @GangliaPassword@ attributes, AWS OpsWorks returns @*****FILTERED*****@ instead of the actual value For an ECS Cluster layer, AWS OpsWorks the @EcsClusterArn@ attribute is set to the cluster's ARN.
---
--- * 'lName' - The layer name.
---
--- * 'lAutoAssignPublicIPs' - For stacks that are running in a VPC, whether to automatically assign a public IP address to the layer's instances. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-basics-edit.html How to Edit a Layer> .
---
--- * 'lType' - The layer type.
---
--- * 'lUseEBSOptimizedInstances' - Whether the layer uses Amazon EBS-optimized instances.
---
--- * 'lStackId' - The layer stack ID.
---
--- * 'lLayerId' - The layer ID.
---
--- * 'lDefaultSecurityGroupNames' - An array containing the layer's security group names.
---
--- * 'lAutoAssignElasticIPs' - Whether to automatically assign an <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP address> to the layer's instances. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-basics-edit.html How to Edit a Layer> .
-layer
-    :: Layer
-layer =
-    Layer'
-    { _lCustomInstanceProfileARN = Nothing
-    , _lCustomSecurityGroupIds = Nothing
-    , _lInstallUpdatesOnBoot = Nothing
-    , _lLifecycleEventConfiguration = Nothing
-    , _lCreatedAt = Nothing
-    , _lShortname = Nothing
-    , _lDefaultRecipes = Nothing
-    , _lCustomRecipes = Nothing
-    , _lCustomJSON = Nothing
-    , _lVolumeConfigurations = Nothing
-    , _lEnableAutoHealing = Nothing
-    , _lPackages = Nothing
-    , _lAttributes = Nothing
-    , _lName = Nothing
-    , _lAutoAssignPublicIPs = Nothing
-    , _lType = Nothing
-    , _lUseEBSOptimizedInstances = Nothing
-    , _lStackId = Nothing
-    , _lLayerId = Nothing
-    , _lDefaultSecurityGroupNames = Nothing
-    , _lAutoAssignElasticIPs = Nothing
-    }
-
--- | The ARN of the default IAM profile to be used for the layer's EC2 instances. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers> .
-lCustomInstanceProfileARN :: Lens' Layer (Maybe Text)
-lCustomInstanceProfileARN = lens _lCustomInstanceProfileARN (\ s a -> s{_lCustomInstanceProfileARN = a});
-
--- | An array containing the layer's custom security group IDs.
-lCustomSecurityGroupIds :: Lens' Layer [Text]
-lCustomSecurityGroupIds = lens _lCustomSecurityGroupIds (\ s a -> s{_lCustomSecurityGroupIds = a}) . _Default . _Coerce;
-
--- | Whether to install operating system and package updates when the instance boots. The default value is @true@ . If this value is set 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.
-lInstallUpdatesOnBoot :: Lens' Layer (Maybe Bool)
-lInstallUpdatesOnBoot = lens _lInstallUpdatesOnBoot (\ s a -> s{_lInstallUpdatesOnBoot = a});
-
--- | A @LifeCycleEventConfiguration@ object that specifies the Shutdown event configuration.
-lLifecycleEventConfiguration :: Lens' Layer (Maybe LifecycleEventConfiguration)
-lLifecycleEventConfiguration = lens _lLifecycleEventConfiguration (\ s a -> s{_lLifecycleEventConfiguration = a});
-
--- | Date when the layer was created.
-lCreatedAt :: Lens' Layer (Maybe Text)
-lCreatedAt = lens _lCreatedAt (\ s a -> s{_lCreatedAt = a});
-
--- | The layer short name.
-lShortname :: Lens' Layer (Maybe Text)
-lShortname = lens _lShortname (\ s a -> s{_lShortname = a});
-
--- | Undocumented member.
-lDefaultRecipes :: Lens' Layer (Maybe Recipes)
-lDefaultRecipes = lens _lDefaultRecipes (\ s a -> s{_lDefaultRecipes = a});
-
--- | A @LayerCustomRecipes@ object that specifies the layer's custom recipes.
-lCustomRecipes :: Lens' Layer (Maybe Recipes)
-lCustomRecipes = lens _lCustomRecipes (\ s a -> s{_lCustomRecipes = a});
-
--- | A JSON formatted string containing the layer's custom stack configuration and deployment attributes.
-lCustomJSON :: Lens' Layer (Maybe Text)
-lCustomJSON = lens _lCustomJSON (\ s a -> s{_lCustomJSON = a});
-
--- | A @VolumeConfigurations@ object that describes the layer's Amazon EBS volumes.
-lVolumeConfigurations :: Lens' Layer [VolumeConfiguration]
-lVolumeConfigurations = lens _lVolumeConfigurations (\ s a -> s{_lVolumeConfigurations = a}) . _Default . _Coerce;
-
--- | Whether auto healing is disabled for the layer.
-lEnableAutoHealing :: Lens' Layer (Maybe Bool)
-lEnableAutoHealing = lens _lEnableAutoHealing (\ s a -> s{_lEnableAutoHealing = a});
-
--- | An array of @Package@ objects that describe the layer's packages.
-lPackages :: Lens' Layer [Text]
-lPackages = lens _lPackages (\ s a -> s{_lPackages = a}) . _Default . _Coerce;
-
--- | The layer attributes. For the @HaproxyStatsPassword@ , @MysqlRootPassword@ , and @GangliaPassword@ attributes, AWS OpsWorks returns @*****FILTERED*****@ instead of the actual value For an ECS Cluster layer, AWS OpsWorks the @EcsClusterArn@ attribute is set to the cluster's ARN.
-lAttributes :: Lens' Layer (HashMap LayerAttributesKeys Text)
-lAttributes = lens _lAttributes (\ s a -> s{_lAttributes = a}) . _Default . _Map;
-
--- | The layer name.
-lName :: Lens' Layer (Maybe Text)
-lName = lens _lName (\ s a -> s{_lName = a});
-
--- | For stacks that are running in a VPC, whether to automatically assign a public IP address to the layer's instances. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-basics-edit.html How to Edit a Layer> .
-lAutoAssignPublicIPs :: Lens' Layer (Maybe Bool)
-lAutoAssignPublicIPs = lens _lAutoAssignPublicIPs (\ s a -> s{_lAutoAssignPublicIPs = a});
-
--- | The layer type.
-lType :: Lens' Layer (Maybe LayerType)
-lType = lens _lType (\ s a -> s{_lType = a});
-
--- | Whether the layer uses Amazon EBS-optimized instances.
-lUseEBSOptimizedInstances :: Lens' Layer (Maybe Bool)
-lUseEBSOptimizedInstances = lens _lUseEBSOptimizedInstances (\ s a -> s{_lUseEBSOptimizedInstances = a});
-
--- | The layer stack ID.
-lStackId :: Lens' Layer (Maybe Text)
-lStackId = lens _lStackId (\ s a -> s{_lStackId = a});
-
--- | The layer ID.
-lLayerId :: Lens' Layer (Maybe Text)
-lLayerId = lens _lLayerId (\ s a -> s{_lLayerId = a});
-
--- | An array containing the layer's security group names.
-lDefaultSecurityGroupNames :: Lens' Layer [Text]
-lDefaultSecurityGroupNames = lens _lDefaultSecurityGroupNames (\ s a -> s{_lDefaultSecurityGroupNames = a}) . _Default . _Coerce;
-
--- | Whether to automatically assign an <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP address> to the layer's instances. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-basics-edit.html How to Edit a Layer> .
-lAutoAssignElasticIPs :: Lens' Layer (Maybe Bool)
-lAutoAssignElasticIPs = lens _lAutoAssignElasticIPs (\ s a -> s{_lAutoAssignElasticIPs = a});
-
-instance FromJSON Layer where
-        parseJSON
-          = withObject "Layer"
-              (\ x ->
-                 Layer' <$>
-                   (x .:? "CustomInstanceProfileArn") <*>
-                     (x .:? "CustomSecurityGroupIds" .!= mempty)
-                     <*> (x .:? "InstallUpdatesOnBoot")
-                     <*> (x .:? "LifecycleEventConfiguration")
-                     <*> (x .:? "CreatedAt")
-                     <*> (x .:? "Shortname")
-                     <*> (x .:? "DefaultRecipes")
-                     <*> (x .:? "CustomRecipes")
-                     <*> (x .:? "CustomJson")
-                     <*> (x .:? "VolumeConfigurations" .!= mempty)
-                     <*> (x .:? "EnableAutoHealing")
-                     <*> (x .:? "Packages" .!= mempty)
-                     <*> (x .:? "Attributes" .!= mempty)
-                     <*> (x .:? "Name")
-                     <*> (x .:? "AutoAssignPublicIps")
-                     <*> (x .:? "Type")
-                     <*> (x .:? "UseEbsOptimizedInstances")
-                     <*> (x .:? "StackId")
-                     <*> (x .:? "LayerId")
-                     <*> (x .:? "DefaultSecurityGroupNames" .!= mempty)
-                     <*> (x .:? "AutoAssignElasticIps"))
-
-instance Hashable Layer
-
-instance NFData Layer
-
--- | Specifies the lifecycle event configuration
---
---
---
--- /See:/ 'lifecycleEventConfiguration' smart constructor.
-newtype LifecycleEventConfiguration = LifecycleEventConfiguration'
-    { _lecShutdown :: Maybe ShutdownEventConfiguration
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'LifecycleEventConfiguration' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lecShutdown' - A @ShutdownEventConfiguration@ object that specifies the Shutdown event configuration.
-lifecycleEventConfiguration
-    :: LifecycleEventConfiguration
-lifecycleEventConfiguration =
-    LifecycleEventConfiguration'
-    { _lecShutdown = Nothing
-    }
-
--- | A @ShutdownEventConfiguration@ object that specifies the Shutdown event configuration.
-lecShutdown :: Lens' LifecycleEventConfiguration (Maybe ShutdownEventConfiguration)
-lecShutdown = lens _lecShutdown (\ s a -> s{_lecShutdown = a});
-
-instance FromJSON LifecycleEventConfiguration where
-        parseJSON
-          = withObject "LifecycleEventConfiguration"
-              (\ x ->
-                 LifecycleEventConfiguration' <$> (x .:? "Shutdown"))
-
-instance Hashable LifecycleEventConfiguration
-
-instance NFData LifecycleEventConfiguration
-
-instance ToJSON LifecycleEventConfiguration where
-        toJSON LifecycleEventConfiguration'{..}
-          = object
-              (catMaybes [("Shutdown" .=) <$> _lecShutdown])
-
--- | Describes a layer's load-based auto scaling configuration.
---
---
---
--- /See:/ 'loadBasedAutoScalingConfiguration' smart constructor.
-data LoadBasedAutoScalingConfiguration = LoadBasedAutoScalingConfiguration'
-    { _lbascUpScaling   :: !(Maybe AutoScalingThresholds)
-    , _lbascEnable      :: !(Maybe Bool)
-    , _lbascDownScaling :: !(Maybe AutoScalingThresholds)
-    , _lbascLayerId     :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'LoadBasedAutoScalingConfiguration' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lbascUpScaling' - An @AutoScalingThresholds@ object that describes the upscaling configuration, which defines how and when AWS OpsWorks increases the number of instances.
---
--- * 'lbascEnable' - Whether load-based auto scaling is enabled for the layer.
---
--- * 'lbascDownScaling' - An @AutoScalingThresholds@ object that describes the downscaling configuration, which defines how and when AWS OpsWorks reduces the number of instances.
---
--- * 'lbascLayerId' - The layer ID.
-loadBasedAutoScalingConfiguration
-    :: LoadBasedAutoScalingConfiguration
-loadBasedAutoScalingConfiguration =
-    LoadBasedAutoScalingConfiguration'
-    { _lbascUpScaling = Nothing
-    , _lbascEnable = Nothing
-    , _lbascDownScaling = Nothing
-    , _lbascLayerId = Nothing
-    }
-
--- | An @AutoScalingThresholds@ object that describes the upscaling configuration, which defines how and when AWS OpsWorks increases the number of instances.
-lbascUpScaling :: Lens' LoadBasedAutoScalingConfiguration (Maybe AutoScalingThresholds)
-lbascUpScaling = lens _lbascUpScaling (\ s a -> s{_lbascUpScaling = a});
-
--- | Whether load-based auto scaling is enabled for the layer.
-lbascEnable :: Lens' LoadBasedAutoScalingConfiguration (Maybe Bool)
-lbascEnable = lens _lbascEnable (\ s a -> s{_lbascEnable = a});
-
--- | An @AutoScalingThresholds@ object that describes the downscaling configuration, which defines how and when AWS OpsWorks reduces the number of instances.
-lbascDownScaling :: Lens' LoadBasedAutoScalingConfiguration (Maybe AutoScalingThresholds)
-lbascDownScaling = lens _lbascDownScaling (\ s a -> s{_lbascDownScaling = a});
-
--- | The layer ID.
-lbascLayerId :: Lens' LoadBasedAutoScalingConfiguration (Maybe Text)
-lbascLayerId = lens _lbascLayerId (\ s a -> s{_lbascLayerId = a});
-
-instance FromJSON LoadBasedAutoScalingConfiguration
-         where
-        parseJSON
-          = withObject "LoadBasedAutoScalingConfiguration"
-              (\ x ->
-                 LoadBasedAutoScalingConfiguration' <$>
-                   (x .:? "UpScaling") <*> (x .:? "Enable") <*>
-                     (x .:? "DownScaling")
-                     <*> (x .:? "LayerId"))
-
-instance Hashable LoadBasedAutoScalingConfiguration
-
-instance NFData LoadBasedAutoScalingConfiguration
-
--- | Describes stack or user permissions.
---
---
---
--- /See:/ 'permission' smart constructor.
-data Permission = Permission'
-    { _pIAMUserARN :: !(Maybe Text)
-    , _pAllowSudo  :: !(Maybe Bool)
-    , _pStackId    :: !(Maybe Text)
-    , _pLevel      :: !(Maybe Text)
-    , _pAllowSSH   :: !(Maybe Bool)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Permission' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pIAMUserARN' - The Amazon Resource Name (ARN) for an AWS Identity and Access Management (IAM) role. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers> .
---
--- * 'pAllowSudo' - Whether the user can use __sudo__ .
---
--- * 'pStackId' - A stack ID.
---
--- * 'pLevel' - The user's permission level, which must be the following:     * @deny@      * @show@      * @deploy@      * @manage@      * @iam_only@  For more information on the permissions associated with these levels, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>
---
--- * 'pAllowSSH' - Whether the user can use SSH.
-permission
-    :: Permission
-permission =
-    Permission'
-    { _pIAMUserARN = Nothing
-    , _pAllowSudo = Nothing
-    , _pStackId = Nothing
-    , _pLevel = Nothing
-    , _pAllowSSH = Nothing
-    }
-
--- | The Amazon Resource Name (ARN) for an AWS Identity and Access Management (IAM) role. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers> .
-pIAMUserARN :: Lens' Permission (Maybe Text)
-pIAMUserARN = lens _pIAMUserARN (\ s a -> s{_pIAMUserARN = a});
-
--- | Whether the user can use __sudo__ .
-pAllowSudo :: Lens' Permission (Maybe Bool)
-pAllowSudo = lens _pAllowSudo (\ s a -> s{_pAllowSudo = a});
-
--- | A stack ID.
-pStackId :: Lens' Permission (Maybe Text)
-pStackId = lens _pStackId (\ s a -> s{_pStackId = a});
-
--- | The user's permission level, which must be the following:     * @deny@      * @show@      * @deploy@      * @manage@      * @iam_only@  For more information on the permissions associated with these levels, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>
-pLevel :: Lens' Permission (Maybe Text)
-pLevel = lens _pLevel (\ s a -> s{_pLevel = a});
-
--- | Whether the user can use SSH.
-pAllowSSH :: Lens' Permission (Maybe Bool)
-pAllowSSH = lens _pAllowSSH (\ s a -> s{_pAllowSSH = a});
-
-instance FromJSON Permission where
-        parseJSON
-          = withObject "Permission"
-              (\ x ->
-                 Permission' <$>
-                   (x .:? "IamUserArn") <*> (x .:? "AllowSudo") <*>
-                     (x .:? "StackId")
-                     <*> (x .:? "Level")
-                     <*> (x .:? "AllowSsh"))
-
-instance Hashable Permission
-
-instance NFData Permission
-
--- | Describes an instance's RAID array.
---
---
---
--- /See:/ 'rAIdArray' smart constructor.
-data RAIdArray = RAIdArray'
-    { _raiaInstanceId       :: !(Maybe Text)
-    , _raiaSize             :: !(Maybe Int)
-    , _raiaIOPS             :: !(Maybe Int)
-    , _raiaCreatedAt        :: !(Maybe Text)
-    , _raiaRAIdLevel        :: !(Maybe Int)
-    , _raiaDevice           :: !(Maybe Text)
-    , _raiaNumberOfDisks    :: !(Maybe Int)
-    , _raiaAvailabilityZone :: !(Maybe Text)
-    , _raiaName             :: !(Maybe Text)
-    , _raiaRAIdArrayId      :: !(Maybe Text)
-    , _raiaVolumeType       :: !(Maybe Text)
-    , _raiaStackId          :: !(Maybe Text)
-    , _raiaMountPoint       :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RAIdArray' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'raiaInstanceId' - The instance ID.
---
--- * 'raiaSize' - The array's size.
---
--- * 'raiaIOPS' - For PIOPS volumes, the IOPS per disk.
---
--- * 'raiaCreatedAt' - When the RAID array was created.
---
--- * 'raiaRAIdLevel' - The <http://en.wikipedia.org/wiki/Standard_RAID_levels RAID level> .
---
--- * 'raiaDevice' - The array's Linux device. For example /dev/mdadm0.
---
--- * 'raiaNumberOfDisks' - The number of disks in the array.
---
--- * 'raiaAvailabilityZone' - The array's Availability Zone. For more information, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints> .
---
--- * 'raiaName' - The array name.
---
--- * 'raiaRAIdArrayId' - The array ID.
---
--- * 'raiaVolumeType' - The volume type, standard or PIOPS.
---
--- * 'raiaStackId' - The stack ID.
---
--- * 'raiaMountPoint' - The array's mount point.
-rAIdArray
-    :: RAIdArray
-rAIdArray =
-    RAIdArray'
-    { _raiaInstanceId = Nothing
-    , _raiaSize = Nothing
-    , _raiaIOPS = Nothing
-    , _raiaCreatedAt = Nothing
-    , _raiaRAIdLevel = Nothing
-    , _raiaDevice = Nothing
-    , _raiaNumberOfDisks = Nothing
-    , _raiaAvailabilityZone = Nothing
-    , _raiaName = Nothing
-    , _raiaRAIdArrayId = Nothing
-    , _raiaVolumeType = Nothing
-    , _raiaStackId = Nothing
-    , _raiaMountPoint = Nothing
-    }
-
--- | The instance ID.
-raiaInstanceId :: Lens' RAIdArray (Maybe Text)
-raiaInstanceId = lens _raiaInstanceId (\ s a -> s{_raiaInstanceId = a});
-
--- | The array's size.
-raiaSize :: Lens' RAIdArray (Maybe Int)
-raiaSize = lens _raiaSize (\ s a -> s{_raiaSize = a});
-
--- | For PIOPS volumes, the IOPS per disk.
-raiaIOPS :: Lens' RAIdArray (Maybe Int)
-raiaIOPS = lens _raiaIOPS (\ s a -> s{_raiaIOPS = a});
-
--- | When the RAID array was created.
-raiaCreatedAt :: Lens' RAIdArray (Maybe Text)
-raiaCreatedAt = lens _raiaCreatedAt (\ s a -> s{_raiaCreatedAt = a});
-
--- | The <http://en.wikipedia.org/wiki/Standard_RAID_levels RAID level> .
-raiaRAIdLevel :: Lens' RAIdArray (Maybe Int)
-raiaRAIdLevel = lens _raiaRAIdLevel (\ s a -> s{_raiaRAIdLevel = a});
-
--- | The array's Linux device. For example /dev/mdadm0.
-raiaDevice :: Lens' RAIdArray (Maybe Text)
-raiaDevice = lens _raiaDevice (\ s a -> s{_raiaDevice = a});
-
--- | The number of disks in the array.
-raiaNumberOfDisks :: Lens' RAIdArray (Maybe Int)
-raiaNumberOfDisks = lens _raiaNumberOfDisks (\ s a -> s{_raiaNumberOfDisks = a});
-
--- | The array's Availability Zone. For more information, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints> .
-raiaAvailabilityZone :: Lens' RAIdArray (Maybe Text)
-raiaAvailabilityZone = lens _raiaAvailabilityZone (\ s a -> s{_raiaAvailabilityZone = a});
-
--- | The array name.
-raiaName :: Lens' RAIdArray (Maybe Text)
-raiaName = lens _raiaName (\ s a -> s{_raiaName = a});
-
--- | The array ID.
-raiaRAIdArrayId :: Lens' RAIdArray (Maybe Text)
-raiaRAIdArrayId = lens _raiaRAIdArrayId (\ s a -> s{_raiaRAIdArrayId = a});
-
--- | The volume type, standard or PIOPS.
-raiaVolumeType :: Lens' RAIdArray (Maybe Text)
-raiaVolumeType = lens _raiaVolumeType (\ s a -> s{_raiaVolumeType = a});
-
--- | The stack ID.
-raiaStackId :: Lens' RAIdArray (Maybe Text)
-raiaStackId = lens _raiaStackId (\ s a -> s{_raiaStackId = a});
-
--- | The array's mount point.
-raiaMountPoint :: Lens' RAIdArray (Maybe Text)
-raiaMountPoint = lens _raiaMountPoint (\ s a -> s{_raiaMountPoint = a});
-
-instance FromJSON RAIdArray where
-        parseJSON
-          = withObject "RAIdArray"
-              (\ x ->
-                 RAIdArray' <$>
-                   (x .:? "InstanceId") <*> (x .:? "Size") <*>
-                     (x .:? "Iops")
-                     <*> (x .:? "CreatedAt")
-                     <*> (x .:? "RaidLevel")
-                     <*> (x .:? "Device")
-                     <*> (x .:? "NumberOfDisks")
-                     <*> (x .:? "AvailabilityZone")
-                     <*> (x .:? "Name")
-                     <*> (x .:? "RaidArrayId")
-                     <*> (x .:? "VolumeType")
-                     <*> (x .:? "StackId")
-                     <*> (x .:? "MountPoint"))
-
-instance Hashable RAIdArray
-
-instance NFData RAIdArray
-
--- | Describes an Amazon RDS instance.
---
---
---
--- /See:/ 'rdsDBInstance' smart constructor.
-data RDSDBInstance = RDSDBInstance'
-    { _rdiRDSDBInstanceARN     :: !(Maybe Text)
-    , _rdiDBUser               :: !(Maybe Text)
-    , _rdiMissingOnRDS         :: !(Maybe Bool)
-    , _rdiEngine               :: !(Maybe Text)
-    , _rdiAddress              :: !(Maybe Text)
-    , _rdiDBInstanceIdentifier :: !(Maybe Text)
-    , _rdiRegion               :: !(Maybe Text)
-    , _rdiStackId              :: !(Maybe Text)
-    , _rdiDBPassword           :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RDSDBInstance' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rdiRDSDBInstanceARN' - The instance's ARN.
---
--- * 'rdiDBUser' - The master user name.
---
--- * 'rdiMissingOnRDS' - Set to @true@ if AWS OpsWorks was unable to discover the Amazon RDS instance. AWS OpsWorks attempts to discover the instance only once. If this value is set to @true@ , you must deregister the instance and then register it again.
---
--- * 'rdiEngine' - The instance's database engine.
---
--- * 'rdiAddress' - The instance's address.
---
--- * 'rdiDBInstanceIdentifier' - The DB instance identifier.
---
--- * 'rdiRegion' - The instance's AWS region.
---
--- * 'rdiStackId' - The ID of the stack that the instance is registered with.
---
--- * 'rdiDBPassword' - AWS OpsWorks returns @*****FILTERED*****@ instead of the actual value.
-rdsDBInstance
-    :: RDSDBInstance
-rdsDBInstance =
-    RDSDBInstance'
-    { _rdiRDSDBInstanceARN = Nothing
-    , _rdiDBUser = Nothing
-    , _rdiMissingOnRDS = Nothing
-    , _rdiEngine = Nothing
-    , _rdiAddress = Nothing
-    , _rdiDBInstanceIdentifier = Nothing
-    , _rdiRegion = Nothing
-    , _rdiStackId = Nothing
-    , _rdiDBPassword = Nothing
-    }
-
--- | The instance's ARN.
-rdiRDSDBInstanceARN :: Lens' RDSDBInstance (Maybe Text)
-rdiRDSDBInstanceARN = lens _rdiRDSDBInstanceARN (\ s a -> s{_rdiRDSDBInstanceARN = a});
-
--- | The master user name.
-rdiDBUser :: Lens' RDSDBInstance (Maybe Text)
-rdiDBUser = lens _rdiDBUser (\ s a -> s{_rdiDBUser = a});
-
--- | Set to @true@ if AWS OpsWorks was unable to discover the Amazon RDS instance. AWS OpsWorks attempts to discover the instance only once. If this value is set to @true@ , you must deregister the instance and then register it again.
-rdiMissingOnRDS :: Lens' RDSDBInstance (Maybe Bool)
-rdiMissingOnRDS = lens _rdiMissingOnRDS (\ s a -> s{_rdiMissingOnRDS = a});
-
--- | The instance's database engine.
-rdiEngine :: Lens' RDSDBInstance (Maybe Text)
-rdiEngine = lens _rdiEngine (\ s a -> s{_rdiEngine = a});
-
--- | The instance's address.
-rdiAddress :: Lens' RDSDBInstance (Maybe Text)
-rdiAddress = lens _rdiAddress (\ s a -> s{_rdiAddress = a});
-
--- | The DB instance identifier.
-rdiDBInstanceIdentifier :: Lens' RDSDBInstance (Maybe Text)
-rdiDBInstanceIdentifier = lens _rdiDBInstanceIdentifier (\ s a -> s{_rdiDBInstanceIdentifier = a});
-
--- | The instance's AWS region.
-rdiRegion :: Lens' RDSDBInstance (Maybe Text)
-rdiRegion = lens _rdiRegion (\ s a -> s{_rdiRegion = a});
-
--- | The ID of the stack that the instance is registered with.
-rdiStackId :: Lens' RDSDBInstance (Maybe Text)
-rdiStackId = lens _rdiStackId (\ s a -> s{_rdiStackId = a});
-
--- | AWS OpsWorks returns @*****FILTERED*****@ instead of the actual value.
-rdiDBPassword :: Lens' RDSDBInstance (Maybe Text)
-rdiDBPassword = lens _rdiDBPassword (\ s a -> s{_rdiDBPassword = a});
-
-instance FromJSON RDSDBInstance where
-        parseJSON
-          = withObject "RDSDBInstance"
-              (\ x ->
-                 RDSDBInstance' <$>
-                   (x .:? "RdsDbInstanceArn") <*> (x .:? "DbUser") <*>
-                     (x .:? "MissingOnRds")
-                     <*> (x .:? "Engine")
-                     <*> (x .:? "Address")
-                     <*> (x .:? "DbInstanceIdentifier")
-                     <*> (x .:? "Region")
-                     <*> (x .:? "StackId")
-                     <*> (x .:? "DbPassword"))
-
-instance Hashable RDSDBInstance
-
-instance NFData RDSDBInstance
-
--- | AWS OpsWorks supports five lifecycle events: __setup__ , __configuration__ , __deploy__ , __undeploy__ , and __shutdown__ . For each layer, AWS OpsWorks runs a set of standard recipes for each event. In addition, you can provide custom recipes for any or all layers and events. AWS OpsWorks runs custom event recipes after the standard recipes. @LayerCustomRecipes@ specifies the custom recipes for a particular layer to be run in response to each of the five events.
---
---
--- To specify a recipe, use the cookbook's directory name in the repository followed by two colons and the recipe name, which is the recipe's file name without the .rb extension. For example: phpapp2::dbsetup specifies the dbsetup.rb recipe in the repository's phpapp2 folder.
---
---
--- /See:/ 'recipes' smart constructor.
-data Recipes = Recipes'
-    { _rSetup     :: !(Maybe [Text])
-    , _rShutdown  :: !(Maybe [Text])
-    , _rUndeploy  :: !(Maybe [Text])
-    , _rConfigure :: !(Maybe [Text])
-    , _rDeploy    :: !(Maybe [Text])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Recipes' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rSetup' - An array of custom recipe names to be run following a @setup@ event.
---
--- * 'rShutdown' - An array of custom recipe names to be run following a @shutdown@ event.
---
--- * 'rUndeploy' - An array of custom recipe names to be run following a @undeploy@ event.
---
--- * 'rConfigure' - An array of custom recipe names to be run following a @configure@ event.
---
--- * 'rDeploy' - An array of custom recipe names to be run following a @deploy@ event.
-recipes
-    :: Recipes
-recipes =
-    Recipes'
-    { _rSetup = Nothing
-    , _rShutdown = Nothing
-    , _rUndeploy = Nothing
-    , _rConfigure = Nothing
-    , _rDeploy = Nothing
-    }
-
--- | An array of custom recipe names to be run following a @setup@ event.
-rSetup :: Lens' Recipes [Text]
-rSetup = lens _rSetup (\ s a -> s{_rSetup = a}) . _Default . _Coerce;
-
--- | An array of custom recipe names to be run following a @shutdown@ event.
-rShutdown :: Lens' Recipes [Text]
-rShutdown = lens _rShutdown (\ s a -> s{_rShutdown = a}) . _Default . _Coerce;
-
--- | An array of custom recipe names to be run following a @undeploy@ event.
-rUndeploy :: Lens' Recipes [Text]
-rUndeploy = lens _rUndeploy (\ s a -> s{_rUndeploy = a}) . _Default . _Coerce;
-
--- | An array of custom recipe names to be run following a @configure@ event.
-rConfigure :: Lens' Recipes [Text]
-rConfigure = lens _rConfigure (\ s a -> s{_rConfigure = a}) . _Default . _Coerce;
-
--- | An array of custom recipe names to be run following a @deploy@ event.
-rDeploy :: Lens' Recipes [Text]
-rDeploy = lens _rDeploy (\ s a -> s{_rDeploy = a}) . _Default . _Coerce;
-
-instance FromJSON Recipes where
-        parseJSON
-          = withObject "Recipes"
-              (\ x ->
-                 Recipes' <$>
-                   (x .:? "Setup" .!= mempty) <*>
-                     (x .:? "Shutdown" .!= mempty)
-                     <*> (x .:? "Undeploy" .!= mempty)
-                     <*> (x .:? "Configure" .!= mempty)
-                     <*> (x .:? "Deploy" .!= mempty))
-
-instance Hashable Recipes
-
-instance NFData Recipes
-
-instance ToJSON Recipes where
-        toJSON Recipes'{..}
-          = object
-              (catMaybes
-                 [("Setup" .=) <$> _rSetup,
-                  ("Shutdown" .=) <$> _rShutdown,
-                  ("Undeploy" .=) <$> _rUndeploy,
-                  ("Configure" .=) <$> _rConfigure,
-                  ("Deploy" .=) <$> _rDeploy])
-
--- | A registered instance's reported operating system.
---
---
---
--- /See:/ 'reportedOS' smart constructor.
-data ReportedOS = ReportedOS'
-    { _roFamily  :: !(Maybe Text)
-    , _roName    :: !(Maybe Text)
-    , _roVersion :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ReportedOS' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'roFamily' - The operating system family.
---
--- * 'roName' - The operating system name.
---
--- * 'roVersion' - The operating system version.
-reportedOS
-    :: ReportedOS
-reportedOS =
-    ReportedOS'
-    { _roFamily = Nothing
-    , _roName = Nothing
-    , _roVersion = Nothing
-    }
-
--- | The operating system family.
-roFamily :: Lens' ReportedOS (Maybe Text)
-roFamily = lens _roFamily (\ s a -> s{_roFamily = a});
-
--- | The operating system name.
-roName :: Lens' ReportedOS (Maybe Text)
-roName = lens _roName (\ s a -> s{_roName = a});
-
--- | The operating system version.
-roVersion :: Lens' ReportedOS (Maybe Text)
-roVersion = lens _roVersion (\ s a -> s{_roVersion = a});
-
-instance FromJSON ReportedOS where
-        parseJSON
-          = withObject "ReportedOS"
-              (\ x ->
-                 ReportedOS' <$>
-                   (x .:? "Family") <*> (x .:? "Name") <*>
-                     (x .:? "Version"))
-
-instance Hashable ReportedOS
-
-instance NFData ReportedOS
-
--- | Describes an app's SSL configuration.
---
---
---
--- /See:/ 'sslConfiguration' smart constructor.
-data SSLConfiguration = SSLConfiguration'
-    { _scChain       :: !(Maybe Text)
-    , _scCertificate :: !Text
-    , _scPrivateKey  :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SSLConfiguration' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'scChain' - Optional. Can be used to specify an intermediate certificate authority key or client authentication.
---
--- * 'scCertificate' - The contents of the certificate's domain.crt file.
---
--- * 'scPrivateKey' - The private key; the contents of the certificate's domain.kex file.
-sslConfiguration
-    :: Text -- ^ 'scCertificate'
-    -> Text -- ^ 'scPrivateKey'
-    -> SSLConfiguration
-sslConfiguration pCertificate_ pPrivateKey_ =
-    SSLConfiguration'
-    { _scChain = Nothing
-    , _scCertificate = pCertificate_
-    , _scPrivateKey = pPrivateKey_
-    }
-
--- | Optional. Can be used to specify an intermediate certificate authority key or client authentication.
-scChain :: Lens' SSLConfiguration (Maybe Text)
-scChain = lens _scChain (\ s a -> s{_scChain = a});
-
--- | The contents of the certificate's domain.crt file.
-scCertificate :: Lens' SSLConfiguration Text
-scCertificate = lens _scCertificate (\ s a -> s{_scCertificate = a});
-
--- | The private key; the contents of the certificate's domain.kex file.
-scPrivateKey :: Lens' SSLConfiguration Text
-scPrivateKey = lens _scPrivateKey (\ s a -> s{_scPrivateKey = a});
-
-instance FromJSON SSLConfiguration where
-        parseJSON
-          = withObject "SSLConfiguration"
-              (\ x ->
-                 SSLConfiguration' <$>
-                   (x .:? "Chain") <*> (x .: "Certificate") <*>
-                     (x .: "PrivateKey"))
-
-instance Hashable SSLConfiguration
-
-instance NFData SSLConfiguration
-
-instance ToJSON SSLConfiguration where
-        toJSON SSLConfiguration'{..}
-          = object
-              (catMaybes
-                 [("Chain" .=) <$> _scChain,
-                  Just ("Certificate" .= _scCertificate),
-                  Just ("PrivateKey" .= _scPrivateKey)])
-
--- | Describes a user's SSH information.
---
---
---
--- /See:/ 'selfUserProfile' smart constructor.
-data SelfUserProfile = SelfUserProfile'
-    { _supSSHPublicKey :: !(Maybe Text)
-    , _supSSHUsername  :: !(Maybe Text)
-    , _supIAMUserARN   :: !(Maybe Text)
-    , _supName         :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SelfUserProfile' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'supSSHPublicKey' - The user's SSH public key.
---
--- * 'supSSHUsername' - The user's SSH user name.
---
--- * 'supIAMUserARN' - The user's IAM ARN.
---
--- * 'supName' - The user's name.
-selfUserProfile
-    :: SelfUserProfile
-selfUserProfile =
-    SelfUserProfile'
-    { _supSSHPublicKey = Nothing
-    , _supSSHUsername = Nothing
-    , _supIAMUserARN = Nothing
-    , _supName = Nothing
-    }
-
--- | The user's SSH public key.
-supSSHPublicKey :: Lens' SelfUserProfile (Maybe Text)
-supSSHPublicKey = lens _supSSHPublicKey (\ s a -> s{_supSSHPublicKey = a});
-
--- | The user's SSH user name.
-supSSHUsername :: Lens' SelfUserProfile (Maybe Text)
-supSSHUsername = lens _supSSHUsername (\ s a -> s{_supSSHUsername = a});
-
--- | The user's IAM ARN.
-supIAMUserARN :: Lens' SelfUserProfile (Maybe Text)
-supIAMUserARN = lens _supIAMUserARN (\ s a -> s{_supIAMUserARN = a});
-
--- | The user's name.
-supName :: Lens' SelfUserProfile (Maybe Text)
-supName = lens _supName (\ s a -> s{_supName = a});
-
-instance FromJSON SelfUserProfile where
-        parseJSON
-          = withObject "SelfUserProfile"
-              (\ x ->
-                 SelfUserProfile' <$>
-                   (x .:? "SshPublicKey") <*> (x .:? "SshUsername") <*>
-                     (x .:? "IamUserArn")
-                     <*> (x .:? "Name"))
-
-instance Hashable SelfUserProfile
-
-instance NFData SelfUserProfile
-
--- | Describes an AWS OpsWorks service error.
---
---
---
--- /See:/ 'serviceError'' smart constructor.
-data ServiceError' = ServiceError''
-    { _seInstanceId     :: !(Maybe Text)
-    , _seCreatedAt      :: !(Maybe Text)
-    , _seServiceErrorId :: !(Maybe Text)
-    , _seType           :: !(Maybe Text)
-    , _seStackId        :: !(Maybe Text)
-    , _seMessage        :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ServiceError'' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'seInstanceId' - The instance ID.
---
--- * 'seCreatedAt' - When the error occurred.
---
--- * 'seServiceErrorId' - The error ID.
---
--- * 'seType' - The error type.
---
--- * 'seStackId' - The stack ID.
---
--- * 'seMessage' - A message that describes the error.
-serviceError'
-    :: ServiceError'
-serviceError' =
-    ServiceError''
-    { _seInstanceId = Nothing
-    , _seCreatedAt = Nothing
-    , _seServiceErrorId = Nothing
-    , _seType = Nothing
-    , _seStackId = Nothing
-    , _seMessage = Nothing
-    }
-
--- | The instance ID.
-seInstanceId :: Lens' ServiceError' (Maybe Text)
-seInstanceId = lens _seInstanceId (\ s a -> s{_seInstanceId = a});
-
--- | When the error occurred.
-seCreatedAt :: Lens' ServiceError' (Maybe Text)
-seCreatedAt = lens _seCreatedAt (\ s a -> s{_seCreatedAt = a});
-
--- | The error ID.
-seServiceErrorId :: Lens' ServiceError' (Maybe Text)
-seServiceErrorId = lens _seServiceErrorId (\ s a -> s{_seServiceErrorId = a});
-
--- | The error type.
-seType :: Lens' ServiceError' (Maybe Text)
-seType = lens _seType (\ s a -> s{_seType = a});
-
--- | The stack ID.
-seStackId :: Lens' ServiceError' (Maybe Text)
-seStackId = lens _seStackId (\ s a -> s{_seStackId = a});
-
--- | A message that describes the error.
-seMessage :: Lens' ServiceError' (Maybe Text)
-seMessage = lens _seMessage (\ s a -> s{_seMessage = a});
-
-instance FromJSON ServiceError' where
-        parseJSON
-          = withObject "ServiceError'"
-              (\ x ->
-                 ServiceError'' <$>
-                   (x .:? "InstanceId") <*> (x .:? "CreatedAt") <*>
-                     (x .:? "ServiceErrorId")
-                     <*> (x .:? "Type")
-                     <*> (x .:? "StackId")
-                     <*> (x .:? "Message"))
-
-instance Hashable ServiceError'
-
-instance NFData ServiceError'
-
--- | The Shutdown event configuration.
---
---
---
--- /See:/ 'shutdownEventConfiguration' smart constructor.
-data ShutdownEventConfiguration = ShutdownEventConfiguration'
-    { _secExecutionTimeout                :: !(Maybe Int)
-    , _secDelayUntilElbConnectionsDrained :: !(Maybe Bool)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ShutdownEventConfiguration' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'secExecutionTimeout' - The time, in seconds, that AWS OpsWorks will wait after triggering a Shutdown event before shutting down an instance.
---
--- * 'secDelayUntilElbConnectionsDrained' - Whether to enable Elastic Load Balancing connection draining. For more information, see <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/TerminologyandKeyConcepts.html#conn-drain Connection Draining>
-shutdownEventConfiguration
-    :: ShutdownEventConfiguration
-shutdownEventConfiguration =
-    ShutdownEventConfiguration'
-    { _secExecutionTimeout = Nothing
-    , _secDelayUntilElbConnectionsDrained = Nothing
-    }
-
--- | The time, in seconds, that AWS OpsWorks will wait after triggering a Shutdown event before shutting down an instance.
-secExecutionTimeout :: Lens' ShutdownEventConfiguration (Maybe Int)
-secExecutionTimeout = lens _secExecutionTimeout (\ s a -> s{_secExecutionTimeout = a});
-
--- | Whether to enable Elastic Load Balancing connection draining. For more information, see <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/TerminologyandKeyConcepts.html#conn-drain Connection Draining>
-secDelayUntilElbConnectionsDrained :: Lens' ShutdownEventConfiguration (Maybe Bool)
-secDelayUntilElbConnectionsDrained = lens _secDelayUntilElbConnectionsDrained (\ s a -> s{_secDelayUntilElbConnectionsDrained = a});
-
-instance FromJSON ShutdownEventConfiguration where
-        parseJSON
-          = withObject "ShutdownEventConfiguration"
-              (\ x ->
-                 ShutdownEventConfiguration' <$>
-                   (x .:? "ExecutionTimeout") <*>
-                     (x .:? "DelayUntilElbConnectionsDrained"))
-
-instance Hashable ShutdownEventConfiguration
-
-instance NFData ShutdownEventConfiguration
-
-instance ToJSON ShutdownEventConfiguration where
-        toJSON ShutdownEventConfiguration'{..}
-          = object
-              (catMaybes
-                 [("ExecutionTimeout" .=) <$> _secExecutionTimeout,
-                  ("DelayUntilElbConnectionsDrained" .=) <$>
-                    _secDelayUntilElbConnectionsDrained])
-
--- | Contains the information required to retrieve an app or cookbook from a repository. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-creating.html Creating Apps> or <http://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook.html Custom Recipes and Cookbooks> .
---
---
---
--- /See:/ 'source' smart constructor.
-data Source = Source'
-    { _sURL      :: !(Maybe Text)
-    , _sUsername :: !(Maybe Text)
-    , _sSSHKey   :: !(Maybe Text)
-    , _sPassword :: !(Maybe Text)
-    , _sType     :: !(Maybe SourceType)
-    , _sRevision :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Source' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sURL' - The source URL.
---
--- * 'sUsername' - This parameter depends on the repository type.     * For Amazon S3 bundles, set @Username@ to the appropriate IAM access key ID.     * For HTTP bundles, Git repositories, and Subversion repositories, set @Username@ to the user name.
---
--- * 'sSSHKey' - In requests, the repository's SSH key. In responses, AWS OpsWorks returns @*****FILTERED*****@ instead of the actual value.
---
--- * 'sPassword' - When included in a request, the parameter depends on the repository type.     * For Amazon S3 bundles, set @Password@ to the appropriate IAM secret access key.     * For HTTP bundles and Subversion repositories, set @Password@ to the password. For more information on how to safely handle IAM credentials, see <http://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html http://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html> . In responses, AWS OpsWorks returns @*****FILTERED*****@ instead of the actual value.
---
--- * 'sType' - The repository type.
---
--- * 'sRevision' - The application's version. AWS OpsWorks enables you to easily deploy new versions of an application. One of the simplest approaches is to have branches or revisions in your repository that represent different versions that can potentially be deployed.
-source
-    :: Source
-source =
-    Source'
-    { _sURL = Nothing
-    , _sUsername = Nothing
-    , _sSSHKey = Nothing
-    , _sPassword = Nothing
-    , _sType = Nothing
-    , _sRevision = Nothing
-    }
-
--- | The source URL.
-sURL :: Lens' Source (Maybe Text)
-sURL = lens _sURL (\ s a -> s{_sURL = a});
-
--- | This parameter depends on the repository type.     * For Amazon S3 bundles, set @Username@ to the appropriate IAM access key ID.     * For HTTP bundles, Git repositories, and Subversion repositories, set @Username@ to the user name.
-sUsername :: Lens' Source (Maybe Text)
-sUsername = lens _sUsername (\ s a -> s{_sUsername = a});
-
--- | In requests, the repository's SSH key. In responses, AWS OpsWorks returns @*****FILTERED*****@ instead of the actual value.
-sSSHKey :: Lens' Source (Maybe Text)
-sSSHKey = lens _sSSHKey (\ s a -> s{_sSSHKey = a});
-
--- | When included in a request, the parameter depends on the repository type.     * For Amazon S3 bundles, set @Password@ to the appropriate IAM secret access key.     * For HTTP bundles and Subversion repositories, set @Password@ to the password. For more information on how to safely handle IAM credentials, see <http://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html http://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html> . In responses, AWS OpsWorks returns @*****FILTERED*****@ instead of the actual value.
-sPassword :: Lens' Source (Maybe Text)
-sPassword = lens _sPassword (\ s a -> s{_sPassword = a});
-
--- | The repository type.
-sType :: Lens' Source (Maybe SourceType)
-sType = lens _sType (\ s a -> s{_sType = a});
-
--- | The application's version. AWS OpsWorks enables you to easily deploy new versions of an application. One of the simplest approaches is to have branches or revisions in your repository that represent different versions that can potentially be deployed.
-sRevision :: Lens' Source (Maybe Text)
-sRevision = lens _sRevision (\ s a -> s{_sRevision = a});
-
-instance FromJSON Source where
-        parseJSON
-          = withObject "Source"
-              (\ x ->
-                 Source' <$>
-                   (x .:? "Url") <*> (x .:? "Username") <*>
-                     (x .:? "SshKey")
-                     <*> (x .:? "Password")
-                     <*> (x .:? "Type")
-                     <*> (x .:? "Revision"))
-
-instance Hashable Source
-
-instance NFData Source
-
-instance ToJSON Source where
-        toJSON Source'{..}
-          = object
-              (catMaybes
-                 [("Url" .=) <$> _sURL,
-                  ("Username" .=) <$> _sUsername,
-                  ("SshKey" .=) <$> _sSSHKey,
-                  ("Password" .=) <$> _sPassword,
-                  ("Type" .=) <$> _sType,
-                  ("Revision" .=) <$> _sRevision])
-
--- | Describes a stack.
---
---
---
--- /See:/ 'stack' smart constructor.
-data Stack = Stack'
-    { _sDefaultInstanceProfileARN :: !(Maybe Text)
-    , _sServiceRoleARN            :: !(Maybe Text)
-    , _sDefaultRootDeviceType     :: !(Maybe RootDeviceType)
-    , _sARN                       :: !(Maybe Text)
-    , _sCreatedAt                 :: !(Maybe Text)
-    , _sVPCId                     :: !(Maybe Text)
-    , _sChefConfiguration         :: !(Maybe ChefConfiguration)
-    , _sAgentVersion              :: !(Maybe Text)
-    , _sDefaultSSHKeyName         :: !(Maybe Text)
-    , _sCustomJSON                :: !(Maybe Text)
-    , _sCustomCookbooksSource     :: !(Maybe Source)
-    , _sDefaultAvailabilityZone   :: !(Maybe Text)
-    , _sAttributes                :: !(Maybe (Map StackAttributesKeys Text))
-    , _sName                      :: !(Maybe Text)
-    , _sDefaultOS                 :: !(Maybe Text)
-    , _sUseOpsworksSecurityGroups :: !(Maybe Bool)
-    , _sUseCustomCookbooks        :: !(Maybe Bool)
-    , _sDefaultSubnetId           :: !(Maybe Text)
-    , _sRegion                    :: !(Maybe Text)
-    , _sConfigurationManager      :: !(Maybe StackConfigurationManager)
-    , _sStackId                   :: !(Maybe Text)
-    , _sHostnameTheme             :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Stack' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sDefaultInstanceProfileARN' - The ARN of an IAM profile that is the default profile for all of the stack's EC2 instances. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers> .
---
--- * 'sServiceRoleARN' - The stack AWS Identity and Access Management (IAM) role.
---
--- * 'sDefaultRootDeviceType' - The default root device type. This value is used by default for all instances in the stack, but you can override it when you create an instance. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device Storage for the Root Device> .
---
--- * 'sARN' - The stack's ARN.
---
--- * 'sCreatedAt' - The date when the stack was created.
---
--- * 'sVPCId' - The VPC ID; applicable only if the stack is running in a VPC.
---
--- * 'sChefConfiguration' - A @ChefConfiguration@ object that specifies whether to enable Berkshelf and the Berkshelf version. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a New Stack> .
---
--- * 'sAgentVersion' - The agent version. This parameter is set to @LATEST@ for auto-update. or a version number for a fixed agent version.
---
--- * 'sDefaultSSHKeyName' - A default Amazon EC2 key pair for the stack's instances. You can override this value when you create or update an instance.
---
--- * 'sCustomJSON' - A JSON object that contains user-defined attributes to be added to the stack configuration and deployment attributes. You can use custom JSON to override the corresponding default stack configuration attribute values or to pass data to recipes. The string should be in the following format: @"{\"key1\": \"value1\", \"key2\": \"value2\",...}"@  For more information on custom JSON, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html Use Custom JSON to Modify the Stack Configuration Attributes> .
---
--- * 'sCustomCookbooksSource' - Undocumented member.
---
--- * 'sDefaultAvailabilityZone' - The stack's default Availability Zone. For more information, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints> .
---
--- * 'sAttributes' - The stack's attributes.
---
--- * 'sName' - The stack name.
---
--- * 'sDefaultOS' - The stack's default operating system.
---
--- * 'sUseOpsworksSecurityGroups' - Whether the stack automatically associates the AWS OpsWorks built-in security groups with the stack's layers.
---
--- * 'sUseCustomCookbooks' - Whether the stack uses custom cookbooks.
---
--- * 'sDefaultSubnetId' - The default subnet ID; applicable only if the stack is running in a VPC.
---
--- * 'sRegion' - The stack AWS region, such as "ap-northeast-2". For more information about AWS regions, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints> .
---
--- * 'sConfigurationManager' - The configuration manager.
---
--- * 'sStackId' - The stack ID.
---
--- * 'sHostnameTheme' - The stack host name theme, with spaces replaced by underscores.
-stack
-    :: Stack
-stack =
-    Stack'
-    { _sDefaultInstanceProfileARN = Nothing
-    , _sServiceRoleARN = Nothing
-    , _sDefaultRootDeviceType = Nothing
-    , _sARN = Nothing
-    , _sCreatedAt = Nothing
-    , _sVPCId = Nothing
-    , _sChefConfiguration = Nothing
-    , _sAgentVersion = Nothing
-    , _sDefaultSSHKeyName = Nothing
-    , _sCustomJSON = Nothing
-    , _sCustomCookbooksSource = Nothing
-    , _sDefaultAvailabilityZone = Nothing
-    , _sAttributes = Nothing
-    , _sName = Nothing
-    , _sDefaultOS = Nothing
-    , _sUseOpsworksSecurityGroups = Nothing
-    , _sUseCustomCookbooks = Nothing
-    , _sDefaultSubnetId = Nothing
-    , _sRegion = Nothing
-    , _sConfigurationManager = Nothing
-    , _sStackId = Nothing
-    , _sHostnameTheme = Nothing
-    }
-
--- | The ARN of an IAM profile that is the default profile for all of the stack's EC2 instances. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers> .
-sDefaultInstanceProfileARN :: Lens' Stack (Maybe Text)
-sDefaultInstanceProfileARN = lens _sDefaultInstanceProfileARN (\ s a -> s{_sDefaultInstanceProfileARN = a});
-
--- | The stack AWS Identity and Access Management (IAM) role.
-sServiceRoleARN :: Lens' Stack (Maybe Text)
-sServiceRoleARN = lens _sServiceRoleARN (\ s a -> s{_sServiceRoleARN = a});
-
--- | The default root device type. This value is used by default for all instances in the stack, but you can override it when you create an instance. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device Storage for the Root Device> .
-sDefaultRootDeviceType :: Lens' Stack (Maybe RootDeviceType)
-sDefaultRootDeviceType = lens _sDefaultRootDeviceType (\ s a -> s{_sDefaultRootDeviceType = a});
-
--- | The stack's ARN.
-sARN :: Lens' Stack (Maybe Text)
-sARN = lens _sARN (\ s a -> s{_sARN = a});
-
--- | The date when the stack was created.
-sCreatedAt :: Lens' Stack (Maybe Text)
-sCreatedAt = lens _sCreatedAt (\ s a -> s{_sCreatedAt = a});
-
--- | The VPC ID; applicable only if the stack is running in a VPC.
-sVPCId :: Lens' Stack (Maybe Text)
-sVPCId = lens _sVPCId (\ s a -> s{_sVPCId = a});
-
--- | A @ChefConfiguration@ object that specifies whether to enable Berkshelf and the Berkshelf version. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a New Stack> .
-sChefConfiguration :: Lens' Stack (Maybe ChefConfiguration)
-sChefConfiguration = lens _sChefConfiguration (\ s a -> s{_sChefConfiguration = a});
-
--- | The agent version. This parameter is set to @LATEST@ for auto-update. or a version number for a fixed agent version.
-sAgentVersion :: Lens' Stack (Maybe Text)
-sAgentVersion = lens _sAgentVersion (\ s a -> s{_sAgentVersion = a});
-
--- | A default Amazon EC2 key pair for the stack's instances. You can override this value when you create or update an instance.
-sDefaultSSHKeyName :: Lens' Stack (Maybe Text)
-sDefaultSSHKeyName = lens _sDefaultSSHKeyName (\ s a -> s{_sDefaultSSHKeyName = a});
-
--- | A JSON object that contains user-defined attributes to be added to the stack configuration and deployment attributes. You can use custom JSON to override the corresponding default stack configuration attribute values or to pass data to recipes. The string should be in the following format: @"{\"key1\": \"value1\", \"key2\": \"value2\",...}"@  For more information on custom JSON, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html Use Custom JSON to Modify the Stack Configuration Attributes> .
-sCustomJSON :: Lens' Stack (Maybe Text)
-sCustomJSON = lens _sCustomJSON (\ s a -> s{_sCustomJSON = a});
-
--- | Undocumented member.
-sCustomCookbooksSource :: Lens' Stack (Maybe Source)
-sCustomCookbooksSource = lens _sCustomCookbooksSource (\ s a -> s{_sCustomCookbooksSource = a});
-
--- | The stack's default Availability Zone. For more information, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints> .
-sDefaultAvailabilityZone :: Lens' Stack (Maybe Text)
-sDefaultAvailabilityZone = lens _sDefaultAvailabilityZone (\ s a -> s{_sDefaultAvailabilityZone = a});
-
--- | The stack's attributes.
-sAttributes :: Lens' Stack (HashMap StackAttributesKeys Text)
-sAttributes = lens _sAttributes (\ s a -> s{_sAttributes = a}) . _Default . _Map;
-
--- | The stack name.
-sName :: Lens' Stack (Maybe Text)
-sName = lens _sName (\ s a -> s{_sName = a});
-
--- | The stack's default operating system.
-sDefaultOS :: Lens' Stack (Maybe Text)
-sDefaultOS = lens _sDefaultOS (\ s a -> s{_sDefaultOS = a});
-
--- | Whether the stack automatically associates the AWS OpsWorks built-in security groups with the stack's layers.
-sUseOpsworksSecurityGroups :: Lens' Stack (Maybe Bool)
-sUseOpsworksSecurityGroups = lens _sUseOpsworksSecurityGroups (\ s a -> s{_sUseOpsworksSecurityGroups = a});
-
--- | Whether the stack uses custom cookbooks.
-sUseCustomCookbooks :: Lens' Stack (Maybe Bool)
-sUseCustomCookbooks = lens _sUseCustomCookbooks (\ s a -> s{_sUseCustomCookbooks = a});
-
--- | The default subnet ID; applicable only if the stack is running in a VPC.
-sDefaultSubnetId :: Lens' Stack (Maybe Text)
-sDefaultSubnetId = lens _sDefaultSubnetId (\ s a -> s{_sDefaultSubnetId = a});
-
--- | The stack AWS region, such as "ap-northeast-2". For more information about AWS regions, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints> .
-sRegion :: Lens' Stack (Maybe Text)
-sRegion = lens _sRegion (\ s a -> s{_sRegion = a});
-
--- | The configuration manager.
-sConfigurationManager :: Lens' Stack (Maybe StackConfigurationManager)
-sConfigurationManager = lens _sConfigurationManager (\ s a -> s{_sConfigurationManager = a});
-
--- | The stack ID.
-sStackId :: Lens' Stack (Maybe Text)
-sStackId = lens _sStackId (\ s a -> s{_sStackId = a});
-
--- | The stack host name theme, with spaces replaced by underscores.
-sHostnameTheme :: Lens' Stack (Maybe Text)
-sHostnameTheme = lens _sHostnameTheme (\ s a -> s{_sHostnameTheme = a});
-
-instance FromJSON Stack where
-        parseJSON
-          = withObject "Stack"
-              (\ x ->
-                 Stack' <$>
-                   (x .:? "DefaultInstanceProfileArn") <*>
-                     (x .:? "ServiceRoleArn")
-                     <*> (x .:? "DefaultRootDeviceType")
-                     <*> (x .:? "Arn")
-                     <*> (x .:? "CreatedAt")
-                     <*> (x .:? "VpcId")
-                     <*> (x .:? "ChefConfiguration")
-                     <*> (x .:? "AgentVersion")
-                     <*> (x .:? "DefaultSshKeyName")
-                     <*> (x .:? "CustomJson")
-                     <*> (x .:? "CustomCookbooksSource")
-                     <*> (x .:? "DefaultAvailabilityZone")
-                     <*> (x .:? "Attributes" .!= mempty)
-                     <*> (x .:? "Name")
-                     <*> (x .:? "DefaultOs")
-                     <*> (x .:? "UseOpsworksSecurityGroups")
-                     <*> (x .:? "UseCustomCookbooks")
-                     <*> (x .:? "DefaultSubnetId")
-                     <*> (x .:? "Region")
-                     <*> (x .:? "ConfigurationManager")
-                     <*> (x .:? "StackId")
-                     <*> (x .:? "HostnameTheme"))
-
-instance Hashable Stack
-
-instance NFData Stack
-
--- | Describes the configuration manager.
---
---
---
--- /See:/ 'stackConfigurationManager' smart constructor.
-data StackConfigurationManager = StackConfigurationManager'
-    { _scmName    :: !(Maybe Text)
-    , _scmVersion :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'StackConfigurationManager' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'scmName' - The name. This parameter must be set to "Chef".
---
--- * 'scmVersion' - The Chef version. This parameter must be set to 12, 11.10, or 11.4 for Linux stacks, and to 12.2 for Windows stacks. The default value for Linux stacks is 11.4.
-stackConfigurationManager
-    :: StackConfigurationManager
-stackConfigurationManager =
-    StackConfigurationManager'
-    { _scmName = Nothing
-    , _scmVersion = Nothing
-    }
-
--- | The name. This parameter must be set to "Chef".
-scmName :: Lens' StackConfigurationManager (Maybe Text)
-scmName = lens _scmName (\ s a -> s{_scmName = a});
-
--- | The Chef version. This parameter must be set to 12, 11.10, or 11.4 for Linux stacks, and to 12.2 for Windows stacks. The default value for Linux stacks is 11.4.
-scmVersion :: Lens' StackConfigurationManager (Maybe Text)
-scmVersion = lens _scmVersion (\ s a -> s{_scmVersion = a});
-
-instance FromJSON StackConfigurationManager where
-        parseJSON
-          = withObject "StackConfigurationManager"
-              (\ x ->
-                 StackConfigurationManager' <$>
-                   (x .:? "Name") <*> (x .:? "Version"))
-
-instance Hashable StackConfigurationManager
-
-instance NFData StackConfigurationManager
-
-instance ToJSON StackConfigurationManager where
-        toJSON StackConfigurationManager'{..}
-          = object
-              (catMaybes
-                 [("Name" .=) <$> _scmName,
-                  ("Version" .=) <$> _scmVersion])
-
--- | Summarizes the number of layers, instances, and apps in a stack.
---
---
---
--- /See:/ 'stackSummary' smart constructor.
-data StackSummary = StackSummary'
-    { _ssARN            :: !(Maybe Text)
-    , _ssAppsCount      :: !(Maybe Int)
-    , _ssName           :: !(Maybe Text)
-    , _ssStackId        :: !(Maybe Text)
-    , _ssLayersCount    :: !(Maybe Int)
-    , _ssInstancesCount :: !(Maybe InstancesCount)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'StackSummary' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ssARN' - The stack's ARN.
---
--- * 'ssAppsCount' - The number of apps.
---
--- * 'ssName' - The stack name.
---
--- * 'ssStackId' - The stack ID.
---
--- * 'ssLayersCount' - The number of layers.
---
--- * 'ssInstancesCount' - An @InstancesCount@ object with the number of instances in each status.
-stackSummary
-    :: StackSummary
-stackSummary =
-    StackSummary'
-    { _ssARN = Nothing
-    , _ssAppsCount = Nothing
-    , _ssName = Nothing
-    , _ssStackId = Nothing
-    , _ssLayersCount = Nothing
-    , _ssInstancesCount = Nothing
-    }
-
--- | The stack's ARN.
-ssARN :: Lens' StackSummary (Maybe Text)
-ssARN = lens _ssARN (\ s a -> s{_ssARN = a});
-
--- | The number of apps.
-ssAppsCount :: Lens' StackSummary (Maybe Int)
-ssAppsCount = lens _ssAppsCount (\ s a -> s{_ssAppsCount = a});
-
--- | The stack name.
-ssName :: Lens' StackSummary (Maybe Text)
-ssName = lens _ssName (\ s a -> s{_ssName = a});
-
--- | The stack ID.
-ssStackId :: Lens' StackSummary (Maybe Text)
-ssStackId = lens _ssStackId (\ s a -> s{_ssStackId = a});
-
--- | The number of layers.
-ssLayersCount :: Lens' StackSummary (Maybe Int)
-ssLayersCount = lens _ssLayersCount (\ s a -> s{_ssLayersCount = a});
-
--- | An @InstancesCount@ object with the number of instances in each status.
-ssInstancesCount :: Lens' StackSummary (Maybe InstancesCount)
-ssInstancesCount = lens _ssInstancesCount (\ s a -> s{_ssInstancesCount = a});
-
-instance FromJSON StackSummary where
-        parseJSON
-          = withObject "StackSummary"
-              (\ x ->
-                 StackSummary' <$>
-                   (x .:? "Arn") <*> (x .:? "AppsCount") <*>
-                     (x .:? "Name")
-                     <*> (x .:? "StackId")
-                     <*> (x .:? "LayersCount")
-                     <*> (x .:? "InstancesCount"))
-
-instance Hashable StackSummary
-
-instance NFData StackSummary
-
--- | Contains the data needed by RDP clients such as the Microsoft Remote Desktop Connection to log in to the instance.
---
---
---
--- /See:/ 'temporaryCredential' smart constructor.
-data TemporaryCredential = TemporaryCredential'
-    { _tcInstanceId        :: !(Maybe Text)
-    , _tcUsername          :: !(Maybe Text)
-    , _tcPassword          :: !(Maybe Text)
-    , _tcValidForInMinutes :: !(Maybe Int)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TemporaryCredential' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tcInstanceId' - The instance's AWS OpsWorks ID.
---
--- * 'tcUsername' - The user name.
---
--- * 'tcPassword' - The password.
---
--- * 'tcValidForInMinutes' - The length of time (in minutes) that the grant is valid. When the grant expires, at the end of this period, the user will no longer be able to use the credentials to log in. If they are logged in at the time, they will be automatically logged out.
-temporaryCredential
-    :: TemporaryCredential
-temporaryCredential =
-    TemporaryCredential'
-    { _tcInstanceId = Nothing
-    , _tcUsername = Nothing
-    , _tcPassword = Nothing
-    , _tcValidForInMinutes = Nothing
-    }
-
--- | The instance's AWS OpsWorks ID.
-tcInstanceId :: Lens' TemporaryCredential (Maybe Text)
-tcInstanceId = lens _tcInstanceId (\ s a -> s{_tcInstanceId = a});
-
--- | The user name.
-tcUsername :: Lens' TemporaryCredential (Maybe Text)
-tcUsername = lens _tcUsername (\ s a -> s{_tcUsername = a});
-
--- | The password.
-tcPassword :: Lens' TemporaryCredential (Maybe Text)
-tcPassword = lens _tcPassword (\ s a -> s{_tcPassword = a});
-
--- | The length of time (in minutes) that the grant is valid. When the grant expires, at the end of this period, the user will no longer be able to use the credentials to log in. If they are logged in at the time, they will be automatically logged out.
-tcValidForInMinutes :: Lens' TemporaryCredential (Maybe Int)
-tcValidForInMinutes = lens _tcValidForInMinutes (\ s a -> s{_tcValidForInMinutes = a});
-
-instance FromJSON TemporaryCredential where
-        parseJSON
-          = withObject "TemporaryCredential"
-              (\ x ->
-                 TemporaryCredential' <$>
-                   (x .:? "InstanceId") <*> (x .:? "Username") <*>
-                     (x .:? "Password")
-                     <*> (x .:? "ValidForInMinutes"))
-
-instance Hashable TemporaryCredential
-
-instance NFData TemporaryCredential
-
--- | Describes an instance's time-based auto scaling configuration.
---
---
---
--- /See:/ 'timeBasedAutoScalingConfiguration' smart constructor.
-data TimeBasedAutoScalingConfiguration = TimeBasedAutoScalingConfiguration'
-    { _tbascInstanceId          :: !(Maybe Text)
-    , _tbascAutoScalingSchedule :: !(Maybe WeeklyAutoScalingSchedule)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TimeBasedAutoScalingConfiguration' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tbascInstanceId' - The instance ID.
---
--- * 'tbascAutoScalingSchedule' - A @WeeklyAutoScalingSchedule@ object with the instance schedule.
-timeBasedAutoScalingConfiguration
-    :: TimeBasedAutoScalingConfiguration
-timeBasedAutoScalingConfiguration =
-    TimeBasedAutoScalingConfiguration'
-    { _tbascInstanceId = Nothing
-    , _tbascAutoScalingSchedule = Nothing
-    }
-
--- | The instance ID.
-tbascInstanceId :: Lens' TimeBasedAutoScalingConfiguration (Maybe Text)
-tbascInstanceId = lens _tbascInstanceId (\ s a -> s{_tbascInstanceId = a});
-
--- | A @WeeklyAutoScalingSchedule@ object with the instance schedule.
-tbascAutoScalingSchedule :: Lens' TimeBasedAutoScalingConfiguration (Maybe WeeklyAutoScalingSchedule)
-tbascAutoScalingSchedule = lens _tbascAutoScalingSchedule (\ s a -> s{_tbascAutoScalingSchedule = a});
-
-instance FromJSON TimeBasedAutoScalingConfiguration
-         where
-        parseJSON
-          = withObject "TimeBasedAutoScalingConfiguration"
-              (\ x ->
-                 TimeBasedAutoScalingConfiguration' <$>
-                   (x .:? "InstanceId") <*>
-                     (x .:? "AutoScalingSchedule"))
-
-instance Hashable TimeBasedAutoScalingConfiguration
-
-instance NFData TimeBasedAutoScalingConfiguration
-
--- | Describes a user's SSH information.
---
---
---
--- /See:/ 'userProfile' smart constructor.
-data UserProfile = UserProfile'
-    { _upAllowSelfManagement :: !(Maybe Bool)
-    , _upSSHPublicKey        :: !(Maybe Text)
-    , _upSSHUsername         :: !(Maybe Text)
-    , _upIAMUserARN          :: !(Maybe Text)
-    , _upName                :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UserProfile' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'upAllowSelfManagement' - Whether users can specify their own SSH public key through the My Settings page. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/security-settingsshkey.html Managing User Permissions> .
---
--- * 'upSSHPublicKey' - The user's SSH public key.
---
--- * 'upSSHUsername' - The user's SSH user name.
---
--- * 'upIAMUserARN' - The user's IAM ARN.
---
--- * 'upName' - The user's name.
-userProfile
-    :: UserProfile
-userProfile =
-    UserProfile'
-    { _upAllowSelfManagement = Nothing
-    , _upSSHPublicKey = Nothing
-    , _upSSHUsername = Nothing
-    , _upIAMUserARN = Nothing
-    , _upName = Nothing
-    }
-
--- | Whether users can specify their own SSH public key through the My Settings page. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/security-settingsshkey.html Managing User Permissions> .
-upAllowSelfManagement :: Lens' UserProfile (Maybe Bool)
-upAllowSelfManagement = lens _upAllowSelfManagement (\ s a -> s{_upAllowSelfManagement = a});
-
--- | The user's SSH public key.
-upSSHPublicKey :: Lens' UserProfile (Maybe Text)
-upSSHPublicKey = lens _upSSHPublicKey (\ s a -> s{_upSSHPublicKey = a});
-
--- | The user's SSH user name.
-upSSHUsername :: Lens' UserProfile (Maybe Text)
-upSSHUsername = lens _upSSHUsername (\ s a -> s{_upSSHUsername = a});
-
--- | The user's IAM ARN.
-upIAMUserARN :: Lens' UserProfile (Maybe Text)
-upIAMUserARN = lens _upIAMUserARN (\ s a -> s{_upIAMUserARN = a});
-
--- | The user's name.
-upName :: Lens' UserProfile (Maybe Text)
-upName = lens _upName (\ s a -> s{_upName = a});
-
-instance FromJSON UserProfile where
-        parseJSON
-          = withObject "UserProfile"
-              (\ x ->
-                 UserProfile' <$>
-                   (x .:? "AllowSelfManagement") <*>
-                     (x .:? "SshPublicKey")
-                     <*> (x .:? "SshUsername")
-                     <*> (x .:? "IamUserArn")
-                     <*> (x .:? "Name"))
-
-instance Hashable UserProfile
-
-instance NFData UserProfile
-
--- | Describes an instance's Amazon EBS volume.
---
---
---
--- /See:/ 'volume' smart constructor.
-data Volume = Volume'
-    { _vInstanceId       :: !(Maybe Text)
-    , _vStatus           :: !(Maybe Text)
-    , _vSize             :: !(Maybe Int)
-    , _vIOPS             :: !(Maybe Int)
-    , _vDevice           :: !(Maybe Text)
-    , _vAvailabilityZone :: !(Maybe Text)
-    , _vName             :: !(Maybe Text)
-    , _vRAIdArrayId      :: !(Maybe Text)
-    , _vVolumeId         :: !(Maybe Text)
-    , _vRegion           :: !(Maybe Text)
-    , _vVolumeType       :: !(Maybe Text)
-    , _vEC2VolumeId      :: !(Maybe Text)
-    , _vMountPoint       :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Volume' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vInstanceId' - The instance ID.
---
--- * 'vStatus' - The value returned by <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeVolumes.html DescribeVolumes> .
---
--- * 'vSize' - The volume size.
---
--- * 'vIOPS' - For PIOPS volumes, the IOPS per disk.
---
--- * 'vDevice' - The device name.
---
--- * 'vAvailabilityZone' - The volume Availability Zone. For more information, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints> .
---
--- * 'vName' - The volume name.
---
--- * 'vRAIdArrayId' - The RAID array ID.
---
--- * 'vVolumeId' - The volume ID.
---
--- * 'vRegion' - The AWS region. For more information about AWS regions, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints> .
---
--- * 'vVolumeType' - The volume type, standard or PIOPS.
---
--- * 'vEC2VolumeId' - The Amazon EC2 volume ID.
---
--- * 'vMountPoint' - The volume mount point. For example, "/mnt/disk1".
-volume
-    :: Volume
-volume =
-    Volume'
-    { _vInstanceId = Nothing
-    , _vStatus = Nothing
-    , _vSize = Nothing
-    , _vIOPS = Nothing
-    , _vDevice = Nothing
-    , _vAvailabilityZone = Nothing
-    , _vName = Nothing
-    , _vRAIdArrayId = Nothing
-    , _vVolumeId = Nothing
-    , _vRegion = Nothing
-    , _vVolumeType = Nothing
-    , _vEC2VolumeId = Nothing
-    , _vMountPoint = Nothing
-    }
-
--- | The instance ID.
-vInstanceId :: Lens' Volume (Maybe Text)
-vInstanceId = lens _vInstanceId (\ s a -> s{_vInstanceId = a});
-
--- | The value returned by <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeVolumes.html DescribeVolumes> .
-vStatus :: Lens' Volume (Maybe Text)
-vStatus = lens _vStatus (\ s a -> s{_vStatus = a});
-
--- | The volume size.
-vSize :: Lens' Volume (Maybe Int)
-vSize = lens _vSize (\ s a -> s{_vSize = a});
-
--- | For PIOPS volumes, the IOPS per disk.
-vIOPS :: Lens' Volume (Maybe Int)
-vIOPS = lens _vIOPS (\ s a -> s{_vIOPS = a});
-
--- | The device name.
-vDevice :: Lens' Volume (Maybe Text)
-vDevice = lens _vDevice (\ s a -> s{_vDevice = a});
-
--- | The volume Availability Zone. For more information, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints> .
-vAvailabilityZone :: Lens' Volume (Maybe Text)
-vAvailabilityZone = lens _vAvailabilityZone (\ s a -> s{_vAvailabilityZone = a});
-
--- | The volume name.
-vName :: Lens' Volume (Maybe Text)
-vName = lens _vName (\ s a -> s{_vName = a});
-
--- | The RAID array ID.
-vRAIdArrayId :: Lens' Volume (Maybe Text)
-vRAIdArrayId = lens _vRAIdArrayId (\ s a -> s{_vRAIdArrayId = a});
-
--- | The volume ID.
-vVolumeId :: Lens' Volume (Maybe Text)
-vVolumeId = lens _vVolumeId (\ s a -> s{_vVolumeId = a});
-
--- | The AWS region. For more information about AWS regions, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints> .
-vRegion :: Lens' Volume (Maybe Text)
-vRegion = lens _vRegion (\ s a -> s{_vRegion = a});
-
--- | The volume type, standard or PIOPS.
-vVolumeType :: Lens' Volume (Maybe Text)
-vVolumeType = lens _vVolumeType (\ s a -> s{_vVolumeType = a});
-
--- | The Amazon EC2 volume ID.
-vEC2VolumeId :: Lens' Volume (Maybe Text)
-vEC2VolumeId = lens _vEC2VolumeId (\ s a -> s{_vEC2VolumeId = a});
-
--- | The volume mount point. For example, "/mnt/disk1".
-vMountPoint :: Lens' Volume (Maybe Text)
-vMountPoint = lens _vMountPoint (\ s a -> s{_vMountPoint = a});
-
-instance FromJSON Volume where
-        parseJSON
-          = withObject "Volume"
-              (\ x ->
-                 Volume' <$>
-                   (x .:? "InstanceId") <*> (x .:? "Status") <*>
-                     (x .:? "Size")
-                     <*> (x .:? "Iops")
-                     <*> (x .:? "Device")
-                     <*> (x .:? "AvailabilityZone")
-                     <*> (x .:? "Name")
-                     <*> (x .:? "RaidArrayId")
-                     <*> (x .:? "VolumeId")
-                     <*> (x .:? "Region")
-                     <*> (x .:? "VolumeType")
-                     <*> (x .:? "Ec2VolumeId")
-                     <*> (x .:? "MountPoint"))
-
-instance Hashable Volume
-
-instance NFData Volume
-
--- | Describes an Amazon EBS volume configuration.
---
---
---
--- /See:/ 'volumeConfiguration' smart constructor.
-data VolumeConfiguration = VolumeConfiguration'
-    { _vcIOPS          :: !(Maybe Int)
-    , _vcRAIdLevel     :: !(Maybe Int)
-    , _vcVolumeType    :: !(Maybe Text)
-    , _vcMountPoint    :: !Text
-    , _vcNumberOfDisks :: !Int
-    , _vcSize          :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VolumeConfiguration' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vcIOPS' - For PIOPS volumes, the IOPS per disk.
---
--- * 'vcRAIdLevel' - The volume <http://en.wikipedia.org/wiki/Standard_RAID_levels RAID level> .
---
--- * 'vcVolumeType' - The volume type:     * @standard@ - Magnetic     * @io1@ - Provisioned IOPS (SSD)     * @gp2@ - General Purpose (SSD)
---
--- * 'vcMountPoint' - The volume mount point. For example "/dev/sdh".
---
--- * 'vcNumberOfDisks' - The number of disks in the volume.
---
--- * 'vcSize' - The volume size.
-volumeConfiguration
-    :: Text -- ^ 'vcMountPoint'
-    -> Int -- ^ 'vcNumberOfDisks'
-    -> Int -- ^ 'vcSize'
-    -> VolumeConfiguration
-volumeConfiguration pMountPoint_ pNumberOfDisks_ pSize_ =
-    VolumeConfiguration'
-    { _vcIOPS = Nothing
-    , _vcRAIdLevel = Nothing
-    , _vcVolumeType = Nothing
-    , _vcMountPoint = pMountPoint_
-    , _vcNumberOfDisks = pNumberOfDisks_
-    , _vcSize = pSize_
-    }
-
--- | For PIOPS volumes, the IOPS per disk.
-vcIOPS :: Lens' VolumeConfiguration (Maybe Int)
-vcIOPS = lens _vcIOPS (\ s a -> s{_vcIOPS = a});
-
--- | The volume <http://en.wikipedia.org/wiki/Standard_RAID_levels RAID level> .
-vcRAIdLevel :: Lens' VolumeConfiguration (Maybe Int)
-vcRAIdLevel = lens _vcRAIdLevel (\ s a -> s{_vcRAIdLevel = a});
-
--- | The volume type:     * @standard@ - Magnetic     * @io1@ - Provisioned IOPS (SSD)     * @gp2@ - General Purpose (SSD)
-vcVolumeType :: Lens' VolumeConfiguration (Maybe Text)
-vcVolumeType = lens _vcVolumeType (\ s a -> s{_vcVolumeType = a});
-
--- | The volume mount point. For example "/dev/sdh".
-vcMountPoint :: Lens' VolumeConfiguration Text
-vcMountPoint = lens _vcMountPoint (\ s a -> s{_vcMountPoint = a});
-
--- | The number of disks in the volume.
-vcNumberOfDisks :: Lens' VolumeConfiguration Int
-vcNumberOfDisks = lens _vcNumberOfDisks (\ s a -> s{_vcNumberOfDisks = a});
-
--- | The volume size.
-vcSize :: Lens' VolumeConfiguration Int
-vcSize = lens _vcSize (\ s a -> s{_vcSize = a});
-
-instance FromJSON VolumeConfiguration where
-        parseJSON
-          = withObject "VolumeConfiguration"
-              (\ x ->
-                 VolumeConfiguration' <$>
-                   (x .:? "Iops") <*> (x .:? "RaidLevel") <*>
-                     (x .:? "VolumeType")
-                     <*> (x .: "MountPoint")
-                     <*> (x .: "NumberOfDisks")
-                     <*> (x .: "Size"))
-
-instance Hashable VolumeConfiguration
-
-instance NFData VolumeConfiguration
-
-instance ToJSON VolumeConfiguration where
-        toJSON VolumeConfiguration'{..}
-          = object
-              (catMaybes
-                 [("Iops" .=) <$> _vcIOPS,
-                  ("RaidLevel" .=) <$> _vcRAIdLevel,
-                  ("VolumeType" .=) <$> _vcVolumeType,
-                  Just ("MountPoint" .= _vcMountPoint),
-                  Just ("NumberOfDisks" .= _vcNumberOfDisks),
-                  Just ("Size" .= _vcSize)])
-
--- | Describes a time-based instance's auto scaling schedule. The schedule consists of a set of key-value pairs.
---
---
---     * The key is the time period (a UTC hour) and must be an integer from 0 - 23.
---
---     * The value indicates whether the instance should be online or offline for the specified period, and must be set to "on" or "off"
---
---
---
--- The default setting for all time periods is off, so you use the following parameters primarily to specify the online periods. You don't have to explicitly specify offline periods unless you want to change an online period to an offline period.
---
--- The following example specifies that the instance should be online for four hours, from UTC 1200 - 1600. It will be off for the remainder of the day.
---
--- @{ "12":"on", "13":"on", "14":"on", "15":"on" } @
---
---
--- /See:/ 'weeklyAutoScalingSchedule' smart constructor.
-data WeeklyAutoScalingSchedule = WeeklyAutoScalingSchedule'
-    { _wassThursday  :: !(Maybe (Map Text Text))
-    , _wassWednesday :: !(Maybe (Map Text Text))
-    , _wassSaturday  :: !(Maybe (Map Text Text))
-    , _wassMonday    :: !(Maybe (Map Text Text))
-    , _wassFriday    :: !(Maybe (Map Text Text))
-    , _wassSunday    :: !(Maybe (Map Text Text))
-    , _wassTuesday   :: !(Maybe (Map Text Text))
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'WeeklyAutoScalingSchedule' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'wassThursday' - The schedule for Thursday.
---
--- * 'wassWednesday' - The schedule for Wednesday.
---
--- * 'wassSaturday' - The schedule for Saturday.
---
--- * 'wassMonday' - The schedule for Monday.
---
--- * 'wassFriday' - The schedule for Friday.
---
--- * 'wassSunday' - The schedule for Sunday.
---
--- * 'wassTuesday' - The schedule for Tuesday.
-weeklyAutoScalingSchedule
-    :: WeeklyAutoScalingSchedule
-weeklyAutoScalingSchedule =
-    WeeklyAutoScalingSchedule'
-    { _wassThursday = Nothing
-    , _wassWednesday = Nothing
-    , _wassSaturday = Nothing
-    , _wassMonday = Nothing
-    , _wassFriday = Nothing
-    , _wassSunday = Nothing
-    , _wassTuesday = Nothing
-    }
-
--- | The schedule for Thursday.
-wassThursday :: Lens' WeeklyAutoScalingSchedule (HashMap Text Text)
-wassThursday = lens _wassThursday (\ s a -> s{_wassThursday = a}) . _Default . _Map;
-
--- | The schedule for Wednesday.
-wassWednesday :: Lens' WeeklyAutoScalingSchedule (HashMap Text Text)
-wassWednesday = lens _wassWednesday (\ s a -> s{_wassWednesday = a}) . _Default . _Map;
-
--- | The schedule for Saturday.
-wassSaturday :: Lens' WeeklyAutoScalingSchedule (HashMap Text Text)
-wassSaturday = lens _wassSaturday (\ s a -> s{_wassSaturday = a}) . _Default . _Map;
-
--- | The schedule for Monday.
-wassMonday :: Lens' WeeklyAutoScalingSchedule (HashMap Text Text)
-wassMonday = lens _wassMonday (\ s a -> s{_wassMonday = a}) . _Default . _Map;
-
--- | The schedule for Friday.
-wassFriday :: Lens' WeeklyAutoScalingSchedule (HashMap Text Text)
-wassFriday = lens _wassFriday (\ s a -> s{_wassFriday = a}) . _Default . _Map;
-
--- | The schedule for Sunday.
-wassSunday :: Lens' WeeklyAutoScalingSchedule (HashMap Text Text)
-wassSunday = lens _wassSunday (\ s a -> s{_wassSunday = a}) . _Default . _Map;
-
--- | The schedule for Tuesday.
-wassTuesday :: Lens' WeeklyAutoScalingSchedule (HashMap Text Text)
-wassTuesday = lens _wassTuesday (\ s a -> s{_wassTuesday = a}) . _Default . _Map;
-
-instance FromJSON WeeklyAutoScalingSchedule where
-        parseJSON
-          = withObject "WeeklyAutoScalingSchedule"
-              (\ x ->
-                 WeeklyAutoScalingSchedule' <$>
-                   (x .:? "Thursday" .!= mempty) <*>
-                     (x .:? "Wednesday" .!= mempty)
-                     <*> (x .:? "Saturday" .!= mempty)
-                     <*> (x .:? "Monday" .!= mempty)
-                     <*> (x .:? "Friday" .!= mempty)
-                     <*> (x .:? "Sunday" .!= mempty)
-                     <*> (x .:? "Tuesday" .!= mempty))
-
-instance Hashable WeeklyAutoScalingSchedule
-
-instance NFData WeeklyAutoScalingSchedule
+-- 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.OpsWorks.Types.Product where
+
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types.Sum
+import Network.AWS.Prelude
+
+-- | Describes an agent version.
+--
+--
+--
+-- /See:/ 'agentVersion' smart constructor.
+data AgentVersion = AgentVersion'
+  { _avVersion              :: !(Maybe Text)
+  , _avConfigurationManager :: !(Maybe StackConfigurationManager)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AgentVersion' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'avVersion' - The agent version.
+--
+-- * 'avConfigurationManager' - The configuration manager.
+agentVersion
+    :: AgentVersion
+agentVersion =
+  AgentVersion' {_avVersion = Nothing, _avConfigurationManager = Nothing}
+
+
+-- | The agent version.
+avVersion :: Lens' AgentVersion (Maybe Text)
+avVersion = lens _avVersion (\ s a -> s{_avVersion = a});
+
+-- | The configuration manager.
+avConfigurationManager :: Lens' AgentVersion (Maybe StackConfigurationManager)
+avConfigurationManager = lens _avConfigurationManager (\ s a -> s{_avConfigurationManager = a});
+
+instance FromJSON AgentVersion where
+        parseJSON
+          = withObject "AgentVersion"
+              (\ x ->
+                 AgentVersion' <$>
+                   (x .:? "Version") <*> (x .:? "ConfigurationManager"))
+
+instance Hashable AgentVersion where
+
+instance NFData AgentVersion where
+
+-- | A description of the app.
+--
+--
+--
+-- /See:/ 'app' smart constructor.
+data App = App'
+  { _appSSLConfiguration :: !(Maybe SSLConfiguration)
+  , _appEnvironment      :: !(Maybe [EnvironmentVariable])
+  , _appEnableSSL        :: !(Maybe Bool)
+  , _appCreatedAt        :: !(Maybe Text)
+  , _appShortname        :: !(Maybe Text)
+  , _appDataSources      :: !(Maybe [DataSource])
+  , _appAppSource        :: !(Maybe Source)
+  , _appAppId            :: !(Maybe Text)
+  , _appAttributes       :: !(Maybe (Map AppAttributesKeys Text))
+  , _appName             :: !(Maybe Text)
+  , _appType             :: !(Maybe AppType)
+  , _appStackId          :: !(Maybe Text)
+  , _appDomains          :: !(Maybe [Text])
+  , _appDescription      :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'App' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'appSSLConfiguration' - An @SslConfiguration@ object with the SSL configuration.
+--
+-- * 'appEnvironment' - An array of @EnvironmentVariable@ objects that specify environment variables to be associated with the app. After you deploy the app, these variables are defined on the associated app server instances. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-creating.html#workingapps-creating-environment Environment Variables> .
+--
+-- * 'appEnableSSL' - Whether to enable SSL for the app.
+--
+-- * 'appCreatedAt' - When the app was created.
+--
+-- * 'appShortname' - The app's short name.
+--
+-- * 'appDataSources' - The app's data sources.
+--
+-- * 'appAppSource' - A @Source@ object that describes the app repository.
+--
+-- * 'appAppId' - The app ID.
+--
+-- * 'appAttributes' - The stack attributes.
+--
+-- * 'appName' - The app name.
+--
+-- * 'appType' - The app type.
+--
+-- * 'appStackId' - The app stack ID.
+--
+-- * 'appDomains' - The app vhost settings with multiple domains separated by commas. For example: @'www.example.com, example.com'@
+--
+-- * 'appDescription' - A description of the app.
+app
+    :: App
+app =
+  App'
+  { _appSSLConfiguration = Nothing
+  , _appEnvironment = Nothing
+  , _appEnableSSL = Nothing
+  , _appCreatedAt = Nothing
+  , _appShortname = Nothing
+  , _appDataSources = Nothing
+  , _appAppSource = Nothing
+  , _appAppId = Nothing
+  , _appAttributes = Nothing
+  , _appName = Nothing
+  , _appType = Nothing
+  , _appStackId = Nothing
+  , _appDomains = Nothing
+  , _appDescription = Nothing
+  }
+
+
+-- | An @SslConfiguration@ object with the SSL configuration.
+appSSLConfiguration :: Lens' App (Maybe SSLConfiguration)
+appSSLConfiguration = lens _appSSLConfiguration (\ s a -> s{_appSSLConfiguration = a});
+
+-- | An array of @EnvironmentVariable@ objects that specify environment variables to be associated with the app. After you deploy the app, these variables are defined on the associated app server instances. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-creating.html#workingapps-creating-environment Environment Variables> .
+appEnvironment :: Lens' App [EnvironmentVariable]
+appEnvironment = lens _appEnvironment (\ s a -> s{_appEnvironment = a}) . _Default . _Coerce;
+
+-- | Whether to enable SSL for the app.
+appEnableSSL :: Lens' App (Maybe Bool)
+appEnableSSL = lens _appEnableSSL (\ s a -> s{_appEnableSSL = a});
+
+-- | When the app was created.
+appCreatedAt :: Lens' App (Maybe Text)
+appCreatedAt = lens _appCreatedAt (\ s a -> s{_appCreatedAt = a});
+
+-- | The app's short name.
+appShortname :: Lens' App (Maybe Text)
+appShortname = lens _appShortname (\ s a -> s{_appShortname = a});
+
+-- | The app's data sources.
+appDataSources :: Lens' App [DataSource]
+appDataSources = lens _appDataSources (\ s a -> s{_appDataSources = a}) . _Default . _Coerce;
+
+-- | A @Source@ object that describes the app repository.
+appAppSource :: Lens' App (Maybe Source)
+appAppSource = lens _appAppSource (\ s a -> s{_appAppSource = a});
+
+-- | The app ID.
+appAppId :: Lens' App (Maybe Text)
+appAppId = lens _appAppId (\ s a -> s{_appAppId = a});
+
+-- | The stack attributes.
+appAttributes :: Lens' App (HashMap AppAttributesKeys Text)
+appAttributes = lens _appAttributes (\ s a -> s{_appAttributes = a}) . _Default . _Map;
+
+-- | The app name.
+appName :: Lens' App (Maybe Text)
+appName = lens _appName (\ s a -> s{_appName = a});
+
+-- | The app type.
+appType :: Lens' App (Maybe AppType)
+appType = lens _appType (\ s a -> s{_appType = a});
+
+-- | The app stack ID.
+appStackId :: Lens' App (Maybe Text)
+appStackId = lens _appStackId (\ s a -> s{_appStackId = a});
+
+-- | The app vhost settings with multiple domains separated by commas. For example: @'www.example.com, example.com'@
+appDomains :: Lens' App [Text]
+appDomains = lens _appDomains (\ s a -> s{_appDomains = a}) . _Default . _Coerce;
+
+-- | A description of the app.
+appDescription :: Lens' App (Maybe Text)
+appDescription = lens _appDescription (\ s a -> s{_appDescription = a});
+
+instance FromJSON App where
+        parseJSON
+          = withObject "App"
+              (\ x ->
+                 App' <$>
+                   (x .:? "SslConfiguration") <*>
+                     (x .:? "Environment" .!= mempty)
+                     <*> (x .:? "EnableSsl")
+                     <*> (x .:? "CreatedAt")
+                     <*> (x .:? "Shortname")
+                     <*> (x .:? "DataSources" .!= mempty)
+                     <*> (x .:? "AppSource")
+                     <*> (x .:? "AppId")
+                     <*> (x .:? "Attributes" .!= mempty)
+                     <*> (x .:? "Name")
+                     <*> (x .:? "Type")
+                     <*> (x .:? "StackId")
+                     <*> (x .:? "Domains" .!= mempty)
+                     <*> (x .:? "Description"))
+
+instance Hashable App where
+
+instance NFData App where
+
+-- | Describes a load-based auto scaling upscaling or downscaling threshold configuration, which specifies when AWS OpsWorks Stacks starts or stops load-based instances.
+--
+--
+--
+-- /See:/ 'autoScalingThresholds' smart constructor.
+data AutoScalingThresholds = AutoScalingThresholds'
+  { _astInstanceCount      :: !(Maybe Int)
+  , _astIgnoreMetricsTime  :: !(Maybe Nat)
+  , _astLoadThreshold      :: !(Maybe Double)
+  , _astThresholdsWaitTime :: !(Maybe Nat)
+  , _astAlarms             :: !(Maybe [Text])
+  , _astMemoryThreshold    :: !(Maybe Double)
+  , _astCPUThreshold       :: !(Maybe Double)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AutoScalingThresholds' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'astInstanceCount' - The number of instances to add or remove when the load exceeds a threshold.
+--
+-- * 'astIgnoreMetricsTime' - The amount of time (in minutes) after a scaling event occurs that AWS OpsWorks Stacks should ignore metrics and suppress additional scaling events. For example, AWS OpsWorks Stacks adds new instances following an upscaling event but the instances won't start reducing the load until they have been booted and configured. There is no point in raising additional scaling events during that operation, which typically takes several minutes. @IgnoreMetricsTime@ allows you to direct AWS OpsWorks Stacks to suppress scaling events long enough to get the new instances online.
+--
+-- * 'astLoadThreshold' - The load threshold. A value of -1 disables the threshold. For more information about how load is computed, see <http://en.wikipedia.org/wiki/Load_%28computing%29 Load (computing)> .
+--
+-- * 'astThresholdsWaitTime' - The amount of time, in minutes, that the load must exceed a threshold before more instances are added or removed.
+--
+-- * 'astAlarms' - Custom Cloudwatch auto scaling alarms, to be used as thresholds. This parameter takes a list of up to five alarm names, which are case sensitive and must be in the same region as the stack.
+--
+-- * 'astMemoryThreshold' - The memory utilization threshold, as a percent of the available memory. A value of -1 disables the threshold.
+--
+-- * 'astCPUThreshold' - The CPU utilization threshold, as a percent of the available CPU. A value of -1 disables the threshold.
+autoScalingThresholds
+    :: AutoScalingThresholds
+autoScalingThresholds =
+  AutoScalingThresholds'
+  { _astInstanceCount = Nothing
+  , _astIgnoreMetricsTime = Nothing
+  , _astLoadThreshold = Nothing
+  , _astThresholdsWaitTime = Nothing
+  , _astAlarms = Nothing
+  , _astMemoryThreshold = Nothing
+  , _astCPUThreshold = Nothing
+  }
+
+
+-- | The number of instances to add or remove when the load exceeds a threshold.
+astInstanceCount :: Lens' AutoScalingThresholds (Maybe Int)
+astInstanceCount = lens _astInstanceCount (\ s a -> s{_astInstanceCount = a});
+
+-- | The amount of time (in minutes) after a scaling event occurs that AWS OpsWorks Stacks should ignore metrics and suppress additional scaling events. For example, AWS OpsWorks Stacks adds new instances following an upscaling event but the instances won't start reducing the load until they have been booted and configured. There is no point in raising additional scaling events during that operation, which typically takes several minutes. @IgnoreMetricsTime@ allows you to direct AWS OpsWorks Stacks to suppress scaling events long enough to get the new instances online.
+astIgnoreMetricsTime :: Lens' AutoScalingThresholds (Maybe Natural)
+astIgnoreMetricsTime = lens _astIgnoreMetricsTime (\ s a -> s{_astIgnoreMetricsTime = a}) . mapping _Nat;
+
+-- | The load threshold. A value of -1 disables the threshold. For more information about how load is computed, see <http://en.wikipedia.org/wiki/Load_%28computing%29 Load (computing)> .
+astLoadThreshold :: Lens' AutoScalingThresholds (Maybe Double)
+astLoadThreshold = lens _astLoadThreshold (\ s a -> s{_astLoadThreshold = a});
+
+-- | The amount of time, in minutes, that the load must exceed a threshold before more instances are added or removed.
+astThresholdsWaitTime :: Lens' AutoScalingThresholds (Maybe Natural)
+astThresholdsWaitTime = lens _astThresholdsWaitTime (\ s a -> s{_astThresholdsWaitTime = a}) . mapping _Nat;
+
+-- | Custom Cloudwatch auto scaling alarms, to be used as thresholds. This parameter takes a list of up to five alarm names, which are case sensitive and must be in the same region as the stack.
+astAlarms :: Lens' AutoScalingThresholds [Text]
+astAlarms = lens _astAlarms (\ s a -> s{_astAlarms = a}) . _Default . _Coerce;
+
+-- | The memory utilization threshold, as a percent of the available memory. A value of -1 disables the threshold.
+astMemoryThreshold :: Lens' AutoScalingThresholds (Maybe Double)
+astMemoryThreshold = lens _astMemoryThreshold (\ s a -> s{_astMemoryThreshold = a});
+
+-- | The CPU utilization threshold, as a percent of the available CPU. A value of -1 disables the threshold.
+astCPUThreshold :: Lens' AutoScalingThresholds (Maybe Double)
+astCPUThreshold = lens _astCPUThreshold (\ s a -> s{_astCPUThreshold = a});
+
+instance FromJSON AutoScalingThresholds where
+        parseJSON
+          = withObject "AutoScalingThresholds"
+              (\ x ->
+                 AutoScalingThresholds' <$>
+                   (x .:? "InstanceCount") <*>
+                     (x .:? "IgnoreMetricsTime")
+                     <*> (x .:? "LoadThreshold")
+                     <*> (x .:? "ThresholdsWaitTime")
+                     <*> (x .:? "Alarms" .!= mempty)
+                     <*> (x .:? "MemoryThreshold")
+                     <*> (x .:? "CpuThreshold"))
+
+instance Hashable AutoScalingThresholds where
+
+instance NFData AutoScalingThresholds where
+
+instance ToJSON AutoScalingThresholds where
+        toJSON AutoScalingThresholds'{..}
+          = object
+              (catMaybes
+                 [("InstanceCount" .=) <$> _astInstanceCount,
+                  ("IgnoreMetricsTime" .=) <$> _astIgnoreMetricsTime,
+                  ("LoadThreshold" .=) <$> _astLoadThreshold,
+                  ("ThresholdsWaitTime" .=) <$> _astThresholdsWaitTime,
+                  ("Alarms" .=) <$> _astAlarms,
+                  ("MemoryThreshold" .=) <$> _astMemoryThreshold,
+                  ("CpuThreshold" .=) <$> _astCPUThreshold])
+
+-- | Describes a block device mapping. This data type maps directly to the Amazon EC2 <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_BlockDeviceMapping.html BlockDeviceMapping> data type.
+--
+--
+--
+-- /See:/ 'blockDeviceMapping' smart constructor.
+data BlockDeviceMapping = BlockDeviceMapping'
+  { _bdmVirtualName :: !(Maybe Text)
+  , _bdmNoDevice    :: !(Maybe Text)
+  , _bdmEBS         :: !(Maybe EBSBlockDevice)
+  , _bdmDeviceName  :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'BlockDeviceMapping' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bdmVirtualName' - The virtual device name. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_BlockDeviceMapping.html BlockDeviceMapping> .
+--
+-- * 'bdmNoDevice' - Suppresses the specified device included in the AMI's block device mapping.
+--
+-- * 'bdmEBS' - An @EBSBlockDevice@ that defines how to configure an Amazon EBS volume when the instance is launched.
+--
+-- * 'bdmDeviceName' - The device name that is exposed to the instance, such as @/dev/sdh@ . For the root device, you can use the explicit device name or you can set this parameter to @ROOT_DEVICE@ and AWS OpsWorks Stacks will provide the correct device name.
+blockDeviceMapping
+    :: BlockDeviceMapping
+blockDeviceMapping =
+  BlockDeviceMapping'
+  { _bdmVirtualName = Nothing
+  , _bdmNoDevice = Nothing
+  , _bdmEBS = Nothing
+  , _bdmDeviceName = Nothing
+  }
+
+
+-- | The virtual device name. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_BlockDeviceMapping.html BlockDeviceMapping> .
+bdmVirtualName :: Lens' BlockDeviceMapping (Maybe Text)
+bdmVirtualName = lens _bdmVirtualName (\ s a -> s{_bdmVirtualName = a});
+
+-- | Suppresses the specified device included in the AMI's block device mapping.
+bdmNoDevice :: Lens' BlockDeviceMapping (Maybe Text)
+bdmNoDevice = lens _bdmNoDevice (\ s a -> s{_bdmNoDevice = a});
+
+-- | An @EBSBlockDevice@ that defines how to configure an Amazon EBS volume when the instance is launched.
+bdmEBS :: Lens' BlockDeviceMapping (Maybe EBSBlockDevice)
+bdmEBS = lens _bdmEBS (\ s a -> s{_bdmEBS = a});
+
+-- | The device name that is exposed to the instance, such as @/dev/sdh@ . For the root device, you can use the explicit device name or you can set this parameter to @ROOT_DEVICE@ and AWS OpsWorks Stacks will provide the correct device name.
+bdmDeviceName :: Lens' BlockDeviceMapping (Maybe Text)
+bdmDeviceName = lens _bdmDeviceName (\ s a -> s{_bdmDeviceName = a});
+
+instance FromJSON BlockDeviceMapping where
+        parseJSON
+          = withObject "BlockDeviceMapping"
+              (\ x ->
+                 BlockDeviceMapping' <$>
+                   (x .:? "VirtualName") <*> (x .:? "NoDevice") <*>
+                     (x .:? "Ebs")
+                     <*> (x .:? "DeviceName"))
+
+instance Hashable BlockDeviceMapping where
+
+instance NFData BlockDeviceMapping where
+
+instance ToJSON BlockDeviceMapping where
+        toJSON BlockDeviceMapping'{..}
+          = object
+              (catMaybes
+                 [("VirtualName" .=) <$> _bdmVirtualName,
+                  ("NoDevice" .=) <$> _bdmNoDevice,
+                  ("Ebs" .=) <$> _bdmEBS,
+                  ("DeviceName" .=) <$> _bdmDeviceName])
+
+-- | Describes the Chef configuration.
+--
+--
+--
+-- /See:/ 'chefConfiguration' smart constructor.
+data ChefConfiguration = ChefConfiguration'
+  { _ccBerkshelfVersion :: !(Maybe Text)
+  , _ccManageBerkshelf  :: !(Maybe Bool)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ChefConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ccBerkshelfVersion' - The Berkshelf version.
+--
+-- * 'ccManageBerkshelf' - Whether to enable Berkshelf.
+chefConfiguration
+    :: ChefConfiguration
+chefConfiguration =
+  ChefConfiguration'
+  {_ccBerkshelfVersion = Nothing, _ccManageBerkshelf = Nothing}
+
+
+-- | The Berkshelf version.
+ccBerkshelfVersion :: Lens' ChefConfiguration (Maybe Text)
+ccBerkshelfVersion = lens _ccBerkshelfVersion (\ s a -> s{_ccBerkshelfVersion = a});
+
+-- | Whether to enable Berkshelf.
+ccManageBerkshelf :: Lens' ChefConfiguration (Maybe Bool)
+ccManageBerkshelf = lens _ccManageBerkshelf (\ s a -> s{_ccManageBerkshelf = a});
+
+instance FromJSON ChefConfiguration where
+        parseJSON
+          = withObject "ChefConfiguration"
+              (\ x ->
+                 ChefConfiguration' <$>
+                   (x .:? "BerkshelfVersion") <*>
+                     (x .:? "ManageBerkshelf"))
+
+instance Hashable ChefConfiguration where
+
+instance NFData ChefConfiguration where
+
+instance ToJSON ChefConfiguration where
+        toJSON ChefConfiguration'{..}
+          = object
+              (catMaybes
+                 [("BerkshelfVersion" .=) <$> _ccBerkshelfVersion,
+                  ("ManageBerkshelf" .=) <$> _ccManageBerkshelf])
+
+-- | Describes the Amazon CloudWatch logs configuration for a layer.
+--
+--
+--
+-- /See:/ 'cloudWatchLogsConfiguration' smart constructor.
+data CloudWatchLogsConfiguration = CloudWatchLogsConfiguration'
+  { _cwlcEnabled    :: !(Maybe Bool)
+  , _cwlcLogStreams :: !(Maybe [CloudWatchLogsLogStream])
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CloudWatchLogsConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cwlcEnabled' - Whether CloudWatch Logs is enabled for a layer.
+--
+-- * 'cwlcLogStreams' - A list of configuration options for CloudWatch Logs.
+cloudWatchLogsConfiguration
+    :: CloudWatchLogsConfiguration
+cloudWatchLogsConfiguration =
+  CloudWatchLogsConfiguration'
+  {_cwlcEnabled = Nothing, _cwlcLogStreams = Nothing}
+
+
+-- | Whether CloudWatch Logs is enabled for a layer.
+cwlcEnabled :: Lens' CloudWatchLogsConfiguration (Maybe Bool)
+cwlcEnabled = lens _cwlcEnabled (\ s a -> s{_cwlcEnabled = a});
+
+-- | A list of configuration options for CloudWatch Logs.
+cwlcLogStreams :: Lens' CloudWatchLogsConfiguration [CloudWatchLogsLogStream]
+cwlcLogStreams = lens _cwlcLogStreams (\ s a -> s{_cwlcLogStreams = a}) . _Default . _Coerce;
+
+instance FromJSON CloudWatchLogsConfiguration where
+        parseJSON
+          = withObject "CloudWatchLogsConfiguration"
+              (\ x ->
+                 CloudWatchLogsConfiguration' <$>
+                   (x .:? "Enabled") <*>
+                     (x .:? "LogStreams" .!= mempty))
+
+instance Hashable CloudWatchLogsConfiguration where
+
+instance NFData CloudWatchLogsConfiguration where
+
+instance ToJSON CloudWatchLogsConfiguration where
+        toJSON CloudWatchLogsConfiguration'{..}
+          = object
+              (catMaybes
+                 [("Enabled" .=) <$> _cwlcEnabled,
+                  ("LogStreams" .=) <$> _cwlcLogStreams])
+
+-- | Describes the Amazon CloudWatch logs configuration for a layer. For detailed information about members of this data type, see the <http://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AgentReference.html CloudWatch Logs Agent Reference> .
+--
+--
+--
+-- /See:/ 'cloudWatchLogsLogStream' smart constructor.
+data CloudWatchLogsLogStream = CloudWatchLogsLogStream'
+  { _cwllsBatchCount            :: !(Maybe Int)
+  , _cwllsFileFingerprintLines  :: !(Maybe Text)
+  , _cwllsBufferDuration        :: !(Maybe Int)
+  , _cwllsBatchSize             :: !(Maybe Int)
+  , _cwllsLogGroupName          :: !(Maybe Text)
+  , _cwllsMultiLineStartPattern :: !(Maybe Text)
+  , _cwllsInitialPosition       :: !(Maybe CloudWatchLogsInitialPosition)
+  , _cwllsDatetimeFormat        :: !(Maybe Text)
+  , _cwllsEncoding              :: !(Maybe CloudWatchLogsEncoding)
+  , _cwllsTimeZone              :: !(Maybe CloudWatchLogsTimeZone)
+  , _cwllsFile                  :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CloudWatchLogsLogStream' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cwllsBatchCount' - Specifies the max number of log events in a batch, up to 10000. The default value is 1000.
+--
+-- * 'cwllsFileFingerprintLines' - Specifies the range of lines for identifying a file. The valid values are one number, or two dash-delimited numbers, such as '1', '2-5'. The default value is '1', meaning the first line is used to calculate the fingerprint. Fingerprint lines are not sent to CloudWatch Logs unless all specified lines are available.
+--
+-- * 'cwllsBufferDuration' - Specifies the time duration for the batching of log events. The minimum value is 5000ms and default value is 5000ms.
+--
+-- * 'cwllsBatchSize' - Specifies the maximum size of log events in a batch, in bytes, up to 1048576 bytes. The default value is 32768 bytes. This size is calculated as the sum of all event messages in UTF-8, plus 26 bytes for each log event.
+--
+-- * 'cwllsLogGroupName' - Specifies the destination log group. A log group is created automatically if it doesn't already exist. Log group names can be between 1 and 512 characters long. Allowed characters include a-z, A-Z, 0-9, '_' (underscore), '-' (hyphen), '/' (forward slash), and '.' (period).
+--
+-- * 'cwllsMultiLineStartPattern' - Specifies the pattern for identifying the start of a log message.
+--
+-- * 'cwllsInitialPosition' - Specifies where to start to read data (start_of_file or end_of_file). The default is start_of_file. This setting is only used if there is no state persisted for that log stream.
+--
+-- * 'cwllsDatetimeFormat' - Specifies how the time stamp is extracted from logs. For more information, see the <http://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AgentReference.html CloudWatch Logs Agent Reference> .
+--
+-- * 'cwllsEncoding' - Specifies the encoding of the log file so that the file can be read correctly. The default is @utf_8@ . Encodings supported by Python @codecs.decode()@ can be used here.
+--
+-- * 'cwllsTimeZone' - Specifies the time zone of log event time stamps.
+--
+-- * 'cwllsFile' - Specifies log files that you want to push to CloudWatch Logs. @File@ can point to a specific file or multiple files (by using wild card characters such as @/var/log/system.log*@ ). Only the latest file is pushed to CloudWatch Logs, based on file modification time. We recommend that you use wild card characters to specify a series of files of the same type, such as @access_log.2014-06-01-01@ , @access_log.2014-06-01-02@ , and so on by using a pattern like @access_log.*@ . Don't use a wildcard to match multiple file types, such as @access_log_80@ and @access_log_443@ . To specify multiple, different file types, add another log stream entry to the configuration file, so that each log file type is stored in a different log group. Zipped files are not supported.
+cloudWatchLogsLogStream
+    :: CloudWatchLogsLogStream
+cloudWatchLogsLogStream =
+  CloudWatchLogsLogStream'
+  { _cwllsBatchCount = Nothing
+  , _cwllsFileFingerprintLines = Nothing
+  , _cwllsBufferDuration = Nothing
+  , _cwllsBatchSize = Nothing
+  , _cwllsLogGroupName = Nothing
+  , _cwllsMultiLineStartPattern = Nothing
+  , _cwllsInitialPosition = Nothing
+  , _cwllsDatetimeFormat = Nothing
+  , _cwllsEncoding = Nothing
+  , _cwllsTimeZone = Nothing
+  , _cwllsFile = Nothing
+  }
+
+
+-- | Specifies the max number of log events in a batch, up to 10000. The default value is 1000.
+cwllsBatchCount :: Lens' CloudWatchLogsLogStream (Maybe Int)
+cwllsBatchCount = lens _cwllsBatchCount (\ s a -> s{_cwllsBatchCount = a});
+
+-- | Specifies the range of lines for identifying a file. The valid values are one number, or two dash-delimited numbers, such as '1', '2-5'. The default value is '1', meaning the first line is used to calculate the fingerprint. Fingerprint lines are not sent to CloudWatch Logs unless all specified lines are available.
+cwllsFileFingerprintLines :: Lens' CloudWatchLogsLogStream (Maybe Text)
+cwllsFileFingerprintLines = lens _cwllsFileFingerprintLines (\ s a -> s{_cwllsFileFingerprintLines = a});
+
+-- | Specifies the time duration for the batching of log events. The minimum value is 5000ms and default value is 5000ms.
+cwllsBufferDuration :: Lens' CloudWatchLogsLogStream (Maybe Int)
+cwllsBufferDuration = lens _cwllsBufferDuration (\ s a -> s{_cwllsBufferDuration = a});
+
+-- | Specifies the maximum size of log events in a batch, in bytes, up to 1048576 bytes. The default value is 32768 bytes. This size is calculated as the sum of all event messages in UTF-8, plus 26 bytes for each log event.
+cwllsBatchSize :: Lens' CloudWatchLogsLogStream (Maybe Int)
+cwllsBatchSize = lens _cwllsBatchSize (\ s a -> s{_cwllsBatchSize = a});
+
+-- | Specifies the destination log group. A log group is created automatically if it doesn't already exist. Log group names can be between 1 and 512 characters long. Allowed characters include a-z, A-Z, 0-9, '_' (underscore), '-' (hyphen), '/' (forward slash), and '.' (period).
+cwllsLogGroupName :: Lens' CloudWatchLogsLogStream (Maybe Text)
+cwllsLogGroupName = lens _cwllsLogGroupName (\ s a -> s{_cwllsLogGroupName = a});
+
+-- | Specifies the pattern for identifying the start of a log message.
+cwllsMultiLineStartPattern :: Lens' CloudWatchLogsLogStream (Maybe Text)
+cwllsMultiLineStartPattern = lens _cwllsMultiLineStartPattern (\ s a -> s{_cwllsMultiLineStartPattern = a});
+
+-- | Specifies where to start to read data (start_of_file or end_of_file). The default is start_of_file. This setting is only used if there is no state persisted for that log stream.
+cwllsInitialPosition :: Lens' CloudWatchLogsLogStream (Maybe CloudWatchLogsInitialPosition)
+cwllsInitialPosition = lens _cwllsInitialPosition (\ s a -> s{_cwllsInitialPosition = a});
+
+-- | Specifies how the time stamp is extracted from logs. For more information, see the <http://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AgentReference.html CloudWatch Logs Agent Reference> .
+cwllsDatetimeFormat :: Lens' CloudWatchLogsLogStream (Maybe Text)
+cwllsDatetimeFormat = lens _cwllsDatetimeFormat (\ s a -> s{_cwllsDatetimeFormat = a});
+
+-- | Specifies the encoding of the log file so that the file can be read correctly. The default is @utf_8@ . Encodings supported by Python @codecs.decode()@ can be used here.
+cwllsEncoding :: Lens' CloudWatchLogsLogStream (Maybe CloudWatchLogsEncoding)
+cwllsEncoding = lens _cwllsEncoding (\ s a -> s{_cwllsEncoding = a});
+
+-- | Specifies the time zone of log event time stamps.
+cwllsTimeZone :: Lens' CloudWatchLogsLogStream (Maybe CloudWatchLogsTimeZone)
+cwllsTimeZone = lens _cwllsTimeZone (\ s a -> s{_cwllsTimeZone = a});
+
+-- | Specifies log files that you want to push to CloudWatch Logs. @File@ can point to a specific file or multiple files (by using wild card characters such as @/var/log/system.log*@ ). Only the latest file is pushed to CloudWatch Logs, based on file modification time. We recommend that you use wild card characters to specify a series of files of the same type, such as @access_log.2014-06-01-01@ , @access_log.2014-06-01-02@ , and so on by using a pattern like @access_log.*@ . Don't use a wildcard to match multiple file types, such as @access_log_80@ and @access_log_443@ . To specify multiple, different file types, add another log stream entry to the configuration file, so that each log file type is stored in a different log group. Zipped files are not supported.
+cwllsFile :: Lens' CloudWatchLogsLogStream (Maybe Text)
+cwllsFile = lens _cwllsFile (\ s a -> s{_cwllsFile = a});
+
+instance FromJSON CloudWatchLogsLogStream where
+        parseJSON
+          = withObject "CloudWatchLogsLogStream"
+              (\ x ->
+                 CloudWatchLogsLogStream' <$>
+                   (x .:? "BatchCount") <*>
+                     (x .:? "FileFingerprintLines")
+                     <*> (x .:? "BufferDuration")
+                     <*> (x .:? "BatchSize")
+                     <*> (x .:? "LogGroupName")
+                     <*> (x .:? "MultiLineStartPattern")
+                     <*> (x .:? "InitialPosition")
+                     <*> (x .:? "DatetimeFormat")
+                     <*> (x .:? "Encoding")
+                     <*> (x .:? "TimeZone")
+                     <*> (x .:? "File"))
+
+instance Hashable CloudWatchLogsLogStream where
+
+instance NFData CloudWatchLogsLogStream where
+
+instance ToJSON CloudWatchLogsLogStream where
+        toJSON CloudWatchLogsLogStream'{..}
+          = object
+              (catMaybes
+                 [("BatchCount" .=) <$> _cwllsBatchCount,
+                  ("FileFingerprintLines" .=) <$>
+                    _cwllsFileFingerprintLines,
+                  ("BufferDuration" .=) <$> _cwllsBufferDuration,
+                  ("BatchSize" .=) <$> _cwllsBatchSize,
+                  ("LogGroupName" .=) <$> _cwllsLogGroupName,
+                  ("MultiLineStartPattern" .=) <$>
+                    _cwllsMultiLineStartPattern,
+                  ("InitialPosition" .=) <$> _cwllsInitialPosition,
+                  ("DatetimeFormat" .=) <$> _cwllsDatetimeFormat,
+                  ("Encoding" .=) <$> _cwllsEncoding,
+                  ("TimeZone" .=) <$> _cwllsTimeZone,
+                  ("File" .=) <$> _cwllsFile])
+
+-- | Describes a command.
+--
+--
+--
+-- /See:/ 'command' smart constructor.
+data Command = Command'
+  { _cDeploymentId   :: !(Maybe Text)
+  , _cInstanceId     :: !(Maybe Text)
+  , _cStatus         :: !(Maybe Text)
+  , _cLogURL         :: !(Maybe Text)
+  , _cCreatedAt      :: !(Maybe Text)
+  , _cCommandId      :: !(Maybe Text)
+  , _cExitCode       :: !(Maybe Int)
+  , _cType           :: !(Maybe Text)
+  , _cCompletedAt    :: !(Maybe Text)
+  , _cAcknowledgedAt :: !(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:
+--
+-- * 'cDeploymentId' - The command deployment ID.
+--
+-- * 'cInstanceId' - The ID of the instance where the command was executed.
+--
+-- * 'cStatus' - The command status:     * failed     * successful     * skipped     * pending
+--
+-- * 'cLogURL' - The URL of the command log.
+--
+-- * 'cCreatedAt' - Date and time when the command was run.
+--
+-- * 'cCommandId' - The command ID.
+--
+-- * 'cExitCode' - The command exit code.
+--
+-- * 'cType' - The command type:     * @configure@      * @deploy@      * @execute_recipes@      * @install_dependencies@      * @restart@      * @rollback@      * @setup@      * @start@      * @stop@      * @undeploy@      * @update_custom_cookbooks@      * @update_dependencies@
+--
+-- * 'cCompletedAt' - Date when the command completed.
+--
+-- * 'cAcknowledgedAt' - Date and time when the command was acknowledged.
+command
+    :: Command
+command =
+  Command'
+  { _cDeploymentId = Nothing
+  , _cInstanceId = Nothing
+  , _cStatus = Nothing
+  , _cLogURL = Nothing
+  , _cCreatedAt = Nothing
+  , _cCommandId = Nothing
+  , _cExitCode = Nothing
+  , _cType = Nothing
+  , _cCompletedAt = Nothing
+  , _cAcknowledgedAt = Nothing
+  }
+
+
+-- | The command deployment ID.
+cDeploymentId :: Lens' Command (Maybe Text)
+cDeploymentId = lens _cDeploymentId (\ s a -> s{_cDeploymentId = a});
+
+-- | The ID of the instance where the command was executed.
+cInstanceId :: Lens' Command (Maybe Text)
+cInstanceId = lens _cInstanceId (\ s a -> s{_cInstanceId = a});
+
+-- | The command status:     * failed     * successful     * skipped     * pending
+cStatus :: Lens' Command (Maybe Text)
+cStatus = lens _cStatus (\ s a -> s{_cStatus = a});
+
+-- | The URL of the command log.
+cLogURL :: Lens' Command (Maybe Text)
+cLogURL = lens _cLogURL (\ s a -> s{_cLogURL = a});
+
+-- | Date and time when the command was run.
+cCreatedAt :: Lens' Command (Maybe Text)
+cCreatedAt = lens _cCreatedAt (\ s a -> s{_cCreatedAt = a});
+
+-- | The command ID.
+cCommandId :: Lens' Command (Maybe Text)
+cCommandId = lens _cCommandId (\ s a -> s{_cCommandId = a});
+
+-- | The command exit code.
+cExitCode :: Lens' Command (Maybe Int)
+cExitCode = lens _cExitCode (\ s a -> s{_cExitCode = a});
+
+-- | The command type:     * @configure@      * @deploy@      * @execute_recipes@      * @install_dependencies@      * @restart@      * @rollback@      * @setup@      * @start@      * @stop@      * @undeploy@      * @update_custom_cookbooks@      * @update_dependencies@
+cType :: Lens' Command (Maybe Text)
+cType = lens _cType (\ s a -> s{_cType = a});
+
+-- | Date when the command completed.
+cCompletedAt :: Lens' Command (Maybe Text)
+cCompletedAt = lens _cCompletedAt (\ s a -> s{_cCompletedAt = a});
+
+-- | Date and time when the command was acknowledged.
+cAcknowledgedAt :: Lens' Command (Maybe Text)
+cAcknowledgedAt = lens _cAcknowledgedAt (\ s a -> s{_cAcknowledgedAt = a});
+
+instance FromJSON Command where
+        parseJSON
+          = withObject "Command"
+              (\ x ->
+                 Command' <$>
+                   (x .:? "DeploymentId") <*> (x .:? "InstanceId") <*>
+                     (x .:? "Status")
+                     <*> (x .:? "LogUrl")
+                     <*> (x .:? "CreatedAt")
+                     <*> (x .:? "CommandId")
+                     <*> (x .:? "ExitCode")
+                     <*> (x .:? "Type")
+                     <*> (x .:? "CompletedAt")
+                     <*> (x .:? "AcknowledgedAt"))
+
+instance Hashable Command where
+
+instance NFData Command where
+
+-- | Describes an app's data source.
+--
+--
+--
+-- /See:/ 'dataSource' smart constructor.
+data DataSource = DataSource'
+  { _dsARN          :: !(Maybe Text)
+  , _dsDatabaseName :: !(Maybe Text)
+  , _dsType         :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DataSource' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dsARN' - The data source's ARN.
+--
+-- * 'dsDatabaseName' - The database name.
+--
+-- * 'dsType' - The data source's type, @AutoSelectOpsworksMysqlInstance@ , @OpsworksMysqlInstance@ , or @RdsDbInstance@ .
+dataSource
+    :: DataSource
+dataSource =
+  DataSource' {_dsARN = Nothing, _dsDatabaseName = Nothing, _dsType = Nothing}
+
+
+-- | The data source's ARN.
+dsARN :: Lens' DataSource (Maybe Text)
+dsARN = lens _dsARN (\ s a -> s{_dsARN = a});
+
+-- | The database name.
+dsDatabaseName :: Lens' DataSource (Maybe Text)
+dsDatabaseName = lens _dsDatabaseName (\ s a -> s{_dsDatabaseName = a});
+
+-- | The data source's type, @AutoSelectOpsworksMysqlInstance@ , @OpsworksMysqlInstance@ , or @RdsDbInstance@ .
+dsType :: Lens' DataSource (Maybe Text)
+dsType = lens _dsType (\ s a -> s{_dsType = a});
+
+instance FromJSON DataSource where
+        parseJSON
+          = withObject "DataSource"
+              (\ x ->
+                 DataSource' <$>
+                   (x .:? "Arn") <*> (x .:? "DatabaseName") <*>
+                     (x .:? "Type"))
+
+instance Hashable DataSource where
+
+instance NFData DataSource where
+
+instance ToJSON DataSource where
+        toJSON DataSource'{..}
+          = object
+              (catMaybes
+                 [("Arn" .=) <$> _dsARN,
+                  ("DatabaseName" .=) <$> _dsDatabaseName,
+                  ("Type" .=) <$> _dsType])
+
+-- | Describes a deployment of a stack or app.
+--
+--
+--
+-- /See:/ 'deployment' smart constructor.
+data Deployment = Deployment'
+  { _dDeploymentId :: !(Maybe Text)
+  , _dStatus       :: !(Maybe Text)
+  , _dCommand      :: !(Maybe DeploymentCommand)
+  , _dCreatedAt    :: !(Maybe Text)
+  , _dCustomJSON   :: !(Maybe Text)
+  , _dIAMUserARN   :: !(Maybe Text)
+  , _dAppId        :: !(Maybe Text)
+  , _dInstanceIds  :: !(Maybe [Text])
+  , _dCompletedAt  :: !(Maybe Text)
+  , _dStackId      :: !(Maybe Text)
+  , _dComment      :: !(Maybe Text)
+  , _dDuration     :: !(Maybe Int)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Deployment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dDeploymentId' - The deployment ID.
+--
+-- * 'dStatus' - The deployment status:     * running     * successful     * failed
+--
+-- * 'dCommand' - Undocumented member.
+--
+-- * 'dCreatedAt' - Date when the deployment was created.
+--
+-- * 'dCustomJSON' - A string that contains user-defined custom JSON. It can be used to override the corresponding default stack configuration attribute values for stack or to pass data to recipes. The string should be in the following format: @"{\"key1\": \"value1\", \"key2\": \"value2\",...}"@  For more information on custom JSON, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html Use Custom JSON to Modify the Stack Configuration Attributes> .
+--
+-- * 'dIAMUserARN' - The user's IAM ARN.
+--
+-- * 'dAppId' - The app ID.
+--
+-- * 'dInstanceIds' - The IDs of the target instances.
+--
+-- * 'dCompletedAt' - Date when the deployment completed.
+--
+-- * 'dStackId' - The stack ID.
+--
+-- * 'dComment' - A user-defined comment.
+--
+-- * 'dDuration' - The deployment duration.
+deployment
+    :: Deployment
+deployment =
+  Deployment'
+  { _dDeploymentId = Nothing
+  , _dStatus = Nothing
+  , _dCommand = Nothing
+  , _dCreatedAt = Nothing
+  , _dCustomJSON = Nothing
+  , _dIAMUserARN = Nothing
+  , _dAppId = Nothing
+  , _dInstanceIds = Nothing
+  , _dCompletedAt = Nothing
+  , _dStackId = Nothing
+  , _dComment = Nothing
+  , _dDuration = Nothing
+  }
+
+
+-- | The deployment ID.
+dDeploymentId :: Lens' Deployment (Maybe Text)
+dDeploymentId = lens _dDeploymentId (\ s a -> s{_dDeploymentId = a});
+
+-- | The deployment status:     * running     * successful     * failed
+dStatus :: Lens' Deployment (Maybe Text)
+dStatus = lens _dStatus (\ s a -> s{_dStatus = a});
+
+-- | Undocumented member.
+dCommand :: Lens' Deployment (Maybe DeploymentCommand)
+dCommand = lens _dCommand (\ s a -> s{_dCommand = a});
+
+-- | Date when the deployment was created.
+dCreatedAt :: Lens' Deployment (Maybe Text)
+dCreatedAt = lens _dCreatedAt (\ s a -> s{_dCreatedAt = a});
+
+-- | A string that contains user-defined custom JSON. It can be used to override the corresponding default stack configuration attribute values for stack or to pass data to recipes. The string should be in the following format: @"{\"key1\": \"value1\", \"key2\": \"value2\",...}"@  For more information on custom JSON, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html Use Custom JSON to Modify the Stack Configuration Attributes> .
+dCustomJSON :: Lens' Deployment (Maybe Text)
+dCustomJSON = lens _dCustomJSON (\ s a -> s{_dCustomJSON = a});
+
+-- | The user's IAM ARN.
+dIAMUserARN :: Lens' Deployment (Maybe Text)
+dIAMUserARN = lens _dIAMUserARN (\ s a -> s{_dIAMUserARN = a});
+
+-- | The app ID.
+dAppId :: Lens' Deployment (Maybe Text)
+dAppId = lens _dAppId (\ s a -> s{_dAppId = a});
+
+-- | The IDs of the target instances.
+dInstanceIds :: Lens' Deployment [Text]
+dInstanceIds = lens _dInstanceIds (\ s a -> s{_dInstanceIds = a}) . _Default . _Coerce;
+
+-- | Date when the deployment completed.
+dCompletedAt :: Lens' Deployment (Maybe Text)
+dCompletedAt = lens _dCompletedAt (\ s a -> s{_dCompletedAt = a});
+
+-- | The stack ID.
+dStackId :: Lens' Deployment (Maybe Text)
+dStackId = lens _dStackId (\ s a -> s{_dStackId = a});
+
+-- | A user-defined comment.
+dComment :: Lens' Deployment (Maybe Text)
+dComment = lens _dComment (\ s a -> s{_dComment = a});
+
+-- | The deployment duration.
+dDuration :: Lens' Deployment (Maybe Int)
+dDuration = lens _dDuration (\ s a -> s{_dDuration = a});
+
+instance FromJSON Deployment where
+        parseJSON
+          = withObject "Deployment"
+              (\ x ->
+                 Deployment' <$>
+                   (x .:? "DeploymentId") <*> (x .:? "Status") <*>
+                     (x .:? "Command")
+                     <*> (x .:? "CreatedAt")
+                     <*> (x .:? "CustomJson")
+                     <*> (x .:? "IamUserArn")
+                     <*> (x .:? "AppId")
+                     <*> (x .:? "InstanceIds" .!= mempty)
+                     <*> (x .:? "CompletedAt")
+                     <*> (x .:? "StackId")
+                     <*> (x .:? "Comment")
+                     <*> (x .:? "Duration"))
+
+instance Hashable Deployment where
+
+instance NFData Deployment where
+
+-- | Used to specify a stack or deployment command.
+--
+--
+--
+-- /See:/ 'deploymentCommand' smart constructor.
+data DeploymentCommand = DeploymentCommand'
+  { _dcArgs :: !(Maybe (Map Text [Text]))
+  , _dcName :: !DeploymentCommandName
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DeploymentCommand' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcArgs' - The arguments of those commands that take arguments. It should be set to a JSON object with the following format: @{"arg_name1" : ["value1", "value2", ...], "arg_name2" : ["value1", "value2", ...], ...}@  The @update_dependencies@ command takes two arguments:     * @upgrade_os_to@ - Specifies the desired Amazon Linux version for instances whose OS you want to upgrade, such as @Amazon Linux 2016.09@ . You must also set the @allow_reboot@ argument to true.     * @allow_reboot@ - Specifies whether to allow AWS OpsWorks Stacks to reboot the instances if necessary, after installing the updates. This argument can be set to either @true@ or @false@ . The default value is @false@ . For example, to upgrade an instance to Amazon Linux 2016.09, set @Args@ to the following. @{ "upgrade_os_to":["Amazon Linux 2016.09"], "allow_reboot":["true"] } @
+--
+-- * 'dcName' - Specifies the operation. You can specify only one command. For stacks, the following commands are available:     * @execute_recipes@ : Execute one or more recipes. To specify the recipes, set an @Args@ parameter named @recipes@ to the list of recipes to be executed. For example, to execute @phpapp::appsetup@ , set @Args@ to @{"recipes":["phpapp::appsetup"]}@ .     * @install_dependencies@ : Install the stack's dependencies.     * @update_custom_cookbooks@ : Update the stack's custom cookbooks.     * @update_dependencies@ : Update the stack's dependencies. For apps, the following commands are available:     * @deploy@ : Deploy an app. Ruby on Rails apps have an optional @Args@ parameter named @migrate@ . Set @Args@ to {"migrate":["true"]} to migrate the database. The default setting is {"migrate":["false"]}.     * @rollback@ Roll the app back to the previous version. When you update an app, AWS OpsWorks Stacks stores the previous version, up to a maximum of five versions. You can use this command to roll an app back as many as four versions.     * @start@ : Start the app's web or application server.     * @stop@ : Stop the app's web or application server.     * @restart@ : Restart the app's web or application server.     * @undeploy@ : Undeploy the app.
+deploymentCommand
+    :: DeploymentCommandName -- ^ 'dcName'
+    -> DeploymentCommand
+deploymentCommand pName_ =
+  DeploymentCommand' {_dcArgs = Nothing, _dcName = pName_}
+
+
+-- | The arguments of those commands that take arguments. It should be set to a JSON object with the following format: @{"arg_name1" : ["value1", "value2", ...], "arg_name2" : ["value1", "value2", ...], ...}@  The @update_dependencies@ command takes two arguments:     * @upgrade_os_to@ - Specifies the desired Amazon Linux version for instances whose OS you want to upgrade, such as @Amazon Linux 2016.09@ . You must also set the @allow_reboot@ argument to true.     * @allow_reboot@ - Specifies whether to allow AWS OpsWorks Stacks to reboot the instances if necessary, after installing the updates. This argument can be set to either @true@ or @false@ . The default value is @false@ . For example, to upgrade an instance to Amazon Linux 2016.09, set @Args@ to the following. @{ "upgrade_os_to":["Amazon Linux 2016.09"], "allow_reboot":["true"] } @
+dcArgs :: Lens' DeploymentCommand (HashMap Text [Text])
+dcArgs = lens _dcArgs (\ s a -> s{_dcArgs = a}) . _Default . _Map;
+
+-- | Specifies the operation. You can specify only one command. For stacks, the following commands are available:     * @execute_recipes@ : Execute one or more recipes. To specify the recipes, set an @Args@ parameter named @recipes@ to the list of recipes to be executed. For example, to execute @phpapp::appsetup@ , set @Args@ to @{"recipes":["phpapp::appsetup"]}@ .     * @install_dependencies@ : Install the stack's dependencies.     * @update_custom_cookbooks@ : Update the stack's custom cookbooks.     * @update_dependencies@ : Update the stack's dependencies. For apps, the following commands are available:     * @deploy@ : Deploy an app. Ruby on Rails apps have an optional @Args@ parameter named @migrate@ . Set @Args@ to {"migrate":["true"]} to migrate the database. The default setting is {"migrate":["false"]}.     * @rollback@ Roll the app back to the previous version. When you update an app, AWS OpsWorks Stacks stores the previous version, up to a maximum of five versions. You can use this command to roll an app back as many as four versions.     * @start@ : Start the app's web or application server.     * @stop@ : Stop the app's web or application server.     * @restart@ : Restart the app's web or application server.     * @undeploy@ : Undeploy the app.
+dcName :: Lens' DeploymentCommand DeploymentCommandName
+dcName = lens _dcName (\ s a -> s{_dcName = a});
+
+instance FromJSON DeploymentCommand where
+        parseJSON
+          = withObject "DeploymentCommand"
+              (\ x ->
+                 DeploymentCommand' <$>
+                   (x .:? "Args" .!= mempty) <*> (x .: "Name"))
+
+instance Hashable DeploymentCommand where
+
+instance NFData DeploymentCommand where
+
+instance ToJSON DeploymentCommand where
+        toJSON DeploymentCommand'{..}
+          = object
+              (catMaybes
+                 [("Args" .=) <$> _dcArgs, Just ("Name" .= _dcName)])
+
+-- | Describes an Amazon EBS volume. This data type maps directly to the Amazon EC2 <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_EbsBlockDevice.html EbsBlockDevice> data type.
+--
+--
+--
+-- /See:/ 'ebsBlockDevice' smart constructor.
+data EBSBlockDevice = EBSBlockDevice'
+  { _ebdDeleteOnTermination :: !(Maybe Bool)
+  , _ebdVolumeSize          :: !(Maybe Int)
+  , _ebdIOPS                :: !(Maybe Int)
+  , _ebdVolumeType          :: !(Maybe VolumeType)
+  , _ebdSnapshotId          :: !(Maybe Text)
+  } 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:
+--
+-- * 'ebdDeleteOnTermination' - Whether the volume is deleted on instance termination.
+--
+-- * 'ebdVolumeSize' - The volume size, in GiB. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_EbsBlockDevice.html EbsBlockDevice> .
+--
+-- * 'ebdIOPS' - The number of I/O operations per second (IOPS) that the volume supports. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_EbsBlockDevice.html EbsBlockDevice> .
+--
+-- * 'ebdVolumeType' - The volume type. @gp2@ for General Purpose (SSD) volumes, @io1@ for Provisioned IOPS (SSD) volumes, and @standard@ for Magnetic volumes.
+--
+-- * 'ebdSnapshotId' - The snapshot ID.
+ebsBlockDevice
+    :: EBSBlockDevice
+ebsBlockDevice =
+  EBSBlockDevice'
+  { _ebdDeleteOnTermination = Nothing
+  , _ebdVolumeSize = Nothing
+  , _ebdIOPS = Nothing
+  , _ebdVolumeType = Nothing
+  , _ebdSnapshotId = Nothing
+  }
+
+
+-- | Whether the volume is deleted on instance termination.
+ebdDeleteOnTermination :: Lens' EBSBlockDevice (Maybe Bool)
+ebdDeleteOnTermination = lens _ebdDeleteOnTermination (\ s a -> s{_ebdDeleteOnTermination = a});
+
+-- | The volume size, in GiB. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_EbsBlockDevice.html EbsBlockDevice> .
+ebdVolumeSize :: Lens' EBSBlockDevice (Maybe Int)
+ebdVolumeSize = lens _ebdVolumeSize (\ s a -> s{_ebdVolumeSize = a});
+
+-- | The number of I/O operations per second (IOPS) that the volume supports. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_EbsBlockDevice.html EbsBlockDevice> .
+ebdIOPS :: Lens' EBSBlockDevice (Maybe Int)
+ebdIOPS = lens _ebdIOPS (\ s a -> s{_ebdIOPS = a});
+
+-- | The volume type. @gp2@ for General Purpose (SSD) volumes, @io1@ for Provisioned IOPS (SSD) volumes, and @standard@ for Magnetic volumes.
+ebdVolumeType :: Lens' EBSBlockDevice (Maybe VolumeType)
+ebdVolumeType = lens _ebdVolumeType (\ s a -> s{_ebdVolumeType = a});
+
+-- | The snapshot ID.
+ebdSnapshotId :: Lens' EBSBlockDevice (Maybe Text)
+ebdSnapshotId = lens _ebdSnapshotId (\ s a -> s{_ebdSnapshotId = a});
+
+instance FromJSON EBSBlockDevice where
+        parseJSON
+          = withObject "EBSBlockDevice"
+              (\ x ->
+                 EBSBlockDevice' <$>
+                   (x .:? "DeleteOnTermination") <*>
+                     (x .:? "VolumeSize")
+                     <*> (x .:? "Iops")
+                     <*> (x .:? "VolumeType")
+                     <*> (x .:? "SnapshotId"))
+
+instance Hashable EBSBlockDevice where
+
+instance NFData EBSBlockDevice where
+
+instance ToJSON EBSBlockDevice where
+        toJSON EBSBlockDevice'{..}
+          = object
+              (catMaybes
+                 [("DeleteOnTermination" .=) <$>
+                    _ebdDeleteOnTermination,
+                  ("VolumeSize" .=) <$> _ebdVolumeSize,
+                  ("Iops" .=) <$> _ebdIOPS,
+                  ("VolumeType" .=) <$> _ebdVolumeType,
+                  ("SnapshotId" .=) <$> _ebdSnapshotId])
+
+-- | Describes a registered Amazon ECS cluster.
+--
+--
+--
+-- /See:/ 'ecsCluster' smart constructor.
+data EcsCluster = EcsCluster'
+  { _ecEcsClusterARN  :: !(Maybe Text)
+  , _ecEcsClusterName :: !(Maybe Text)
+  , _ecRegisteredAt   :: !(Maybe Text)
+  , _ecStackId        :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'EcsCluster' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ecEcsClusterARN' - The cluster's ARN.
+--
+-- * 'ecEcsClusterName' - The cluster name.
+--
+-- * 'ecRegisteredAt' - The time and date that the cluster was registered with the stack.
+--
+-- * 'ecStackId' - The stack ID.
+ecsCluster
+    :: EcsCluster
+ecsCluster =
+  EcsCluster'
+  { _ecEcsClusterARN = Nothing
+  , _ecEcsClusterName = Nothing
+  , _ecRegisteredAt = Nothing
+  , _ecStackId = Nothing
+  }
+
+
+-- | The cluster's ARN.
+ecEcsClusterARN :: Lens' EcsCluster (Maybe Text)
+ecEcsClusterARN = lens _ecEcsClusterARN (\ s a -> s{_ecEcsClusterARN = a});
+
+-- | The cluster name.
+ecEcsClusterName :: Lens' EcsCluster (Maybe Text)
+ecEcsClusterName = lens _ecEcsClusterName (\ s a -> s{_ecEcsClusterName = a});
+
+-- | The time and date that the cluster was registered with the stack.
+ecRegisteredAt :: Lens' EcsCluster (Maybe Text)
+ecRegisteredAt = lens _ecRegisteredAt (\ s a -> s{_ecRegisteredAt = a});
+
+-- | The stack ID.
+ecStackId :: Lens' EcsCluster (Maybe Text)
+ecStackId = lens _ecStackId (\ s a -> s{_ecStackId = a});
+
+instance FromJSON EcsCluster where
+        parseJSON
+          = withObject "EcsCluster"
+              (\ x ->
+                 EcsCluster' <$>
+                   (x .:? "EcsClusterArn") <*> (x .:? "EcsClusterName")
+                     <*> (x .:? "RegisteredAt")
+                     <*> (x .:? "StackId"))
+
+instance Hashable EcsCluster where
+
+instance NFData EcsCluster where
+
+-- | Describes an Elastic IP address.
+--
+--
+--
+-- /See:/ 'elasticIP' smart constructor.
+data ElasticIP = ElasticIP'
+  { _eiInstanceId :: !(Maybe Text)
+  , _eiDomain     :: !(Maybe Text)
+  , _eiIP         :: !(Maybe Text)
+  , _eiName       :: !(Maybe Text)
+  , _eiRegion     :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ElasticIP' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eiInstanceId' - The ID of the instance that the address is attached to.
+--
+-- * 'eiDomain' - The domain.
+--
+-- * 'eiIP' - The IP address.
+--
+-- * 'eiName' - The name.
+--
+-- * 'eiRegion' - The AWS region. For more information, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints> .
+elasticIP
+    :: ElasticIP
+elasticIP =
+  ElasticIP'
+  { _eiInstanceId = Nothing
+  , _eiDomain = Nothing
+  , _eiIP = Nothing
+  , _eiName = Nothing
+  , _eiRegion = Nothing
+  }
+
+
+-- | The ID of the instance that the address is attached to.
+eiInstanceId :: Lens' ElasticIP (Maybe Text)
+eiInstanceId = lens _eiInstanceId (\ s a -> s{_eiInstanceId = a});
+
+-- | The domain.
+eiDomain :: Lens' ElasticIP (Maybe Text)
+eiDomain = lens _eiDomain (\ s a -> s{_eiDomain = a});
+
+-- | The IP address.
+eiIP :: Lens' ElasticIP (Maybe Text)
+eiIP = lens _eiIP (\ s a -> s{_eiIP = a});
+
+-- | The name.
+eiName :: Lens' ElasticIP (Maybe Text)
+eiName = lens _eiName (\ s a -> s{_eiName = a});
+
+-- | The AWS region. For more information, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints> .
+eiRegion :: Lens' ElasticIP (Maybe Text)
+eiRegion = lens _eiRegion (\ s a -> s{_eiRegion = a});
+
+instance FromJSON ElasticIP where
+        parseJSON
+          = withObject "ElasticIP"
+              (\ x ->
+                 ElasticIP' <$>
+                   (x .:? "InstanceId") <*> (x .:? "Domain") <*>
+                     (x .:? "Ip")
+                     <*> (x .:? "Name")
+                     <*> (x .:? "Region"))
+
+instance Hashable ElasticIP where
+
+instance NFData ElasticIP where
+
+-- | Describes an Elastic Load Balancing instance.
+--
+--
+--
+-- /See:/ 'elasticLoadBalancer' smart constructor.
+data ElasticLoadBalancer = ElasticLoadBalancer'
+  { _elbSubnetIds               :: !(Maybe [Text])
+  , _elbVPCId                   :: !(Maybe Text)
+  , _elbAvailabilityZones       :: !(Maybe [Text])
+  , _elbRegion                  :: !(Maybe Text)
+  , _elbElasticLoadBalancerName :: !(Maybe Text)
+  , _elbStackId                 :: !(Maybe Text)
+  , _elbEC2InstanceIds          :: !(Maybe [Text])
+  , _elbLayerId                 :: !(Maybe Text)
+  , _elbDNSName                 :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ElasticLoadBalancer' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'elbSubnetIds' - A list of subnet IDs, if the stack is running in a VPC.
+--
+-- * 'elbVPCId' - The VPC ID.
+--
+-- * 'elbAvailabilityZones' - A list of Availability Zones.
+--
+-- * 'elbRegion' - The instance's AWS region.
+--
+-- * 'elbElasticLoadBalancerName' - The Elastic Load Balancing instance's name.
+--
+-- * 'elbStackId' - The ID of the stack that the instance is associated with.
+--
+-- * 'elbEC2InstanceIds' - A list of the EC2 instances that the Elastic Load Balancing instance is managing traffic for.
+--
+-- * 'elbLayerId' - The ID of the layer that the instance is attached to.
+--
+-- * 'elbDNSName' - The instance's public DNS name.
+elasticLoadBalancer
+    :: ElasticLoadBalancer
+elasticLoadBalancer =
+  ElasticLoadBalancer'
+  { _elbSubnetIds = Nothing
+  , _elbVPCId = Nothing
+  , _elbAvailabilityZones = Nothing
+  , _elbRegion = Nothing
+  , _elbElasticLoadBalancerName = Nothing
+  , _elbStackId = Nothing
+  , _elbEC2InstanceIds = Nothing
+  , _elbLayerId = Nothing
+  , _elbDNSName = Nothing
+  }
+
+
+-- | A list of subnet IDs, if the stack is running in a VPC.
+elbSubnetIds :: Lens' ElasticLoadBalancer [Text]
+elbSubnetIds = lens _elbSubnetIds (\ s a -> s{_elbSubnetIds = a}) . _Default . _Coerce;
+
+-- | The VPC ID.
+elbVPCId :: Lens' ElasticLoadBalancer (Maybe Text)
+elbVPCId = lens _elbVPCId (\ s a -> s{_elbVPCId = a});
+
+-- | A list of Availability Zones.
+elbAvailabilityZones :: Lens' ElasticLoadBalancer [Text]
+elbAvailabilityZones = lens _elbAvailabilityZones (\ s a -> s{_elbAvailabilityZones = a}) . _Default . _Coerce;
+
+-- | The instance's AWS region.
+elbRegion :: Lens' ElasticLoadBalancer (Maybe Text)
+elbRegion = lens _elbRegion (\ s a -> s{_elbRegion = a});
+
+-- | The Elastic Load Balancing instance's name.
+elbElasticLoadBalancerName :: Lens' ElasticLoadBalancer (Maybe Text)
+elbElasticLoadBalancerName = lens _elbElasticLoadBalancerName (\ s a -> s{_elbElasticLoadBalancerName = a});
+
+-- | The ID of the stack that the instance is associated with.
+elbStackId :: Lens' ElasticLoadBalancer (Maybe Text)
+elbStackId = lens _elbStackId (\ s a -> s{_elbStackId = a});
+
+-- | A list of the EC2 instances that the Elastic Load Balancing instance is managing traffic for.
+elbEC2InstanceIds :: Lens' ElasticLoadBalancer [Text]
+elbEC2InstanceIds = lens _elbEC2InstanceIds (\ s a -> s{_elbEC2InstanceIds = a}) . _Default . _Coerce;
+
+-- | The ID of the layer that the instance is attached to.
+elbLayerId :: Lens' ElasticLoadBalancer (Maybe Text)
+elbLayerId = lens _elbLayerId (\ s a -> s{_elbLayerId = a});
+
+-- | The instance's public DNS name.
+elbDNSName :: Lens' ElasticLoadBalancer (Maybe Text)
+elbDNSName = lens _elbDNSName (\ s a -> s{_elbDNSName = a});
+
+instance FromJSON ElasticLoadBalancer where
+        parseJSON
+          = withObject "ElasticLoadBalancer"
+              (\ x ->
+                 ElasticLoadBalancer' <$>
+                   (x .:? "SubnetIds" .!= mempty) <*> (x .:? "VpcId")
+                     <*> (x .:? "AvailabilityZones" .!= mempty)
+                     <*> (x .:? "Region")
+                     <*> (x .:? "ElasticLoadBalancerName")
+                     <*> (x .:? "StackId")
+                     <*> (x .:? "Ec2InstanceIds" .!= mempty)
+                     <*> (x .:? "LayerId")
+                     <*> (x .:? "DnsName"))
+
+instance Hashable ElasticLoadBalancer where
+
+instance NFData ElasticLoadBalancer where
+
+-- | Represents an app's environment variable.
+--
+--
+--
+-- /See:/ 'environmentVariable' smart constructor.
+data EnvironmentVariable = EnvironmentVariable'
+  { _evSecure :: !(Maybe Bool)
+  , _evKey    :: !Text
+  , _evValue  :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'EnvironmentVariable' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'evSecure' - (Optional) Whether the variable's value will be returned by the 'DescribeApps' action. To conceal an environment variable's value, set @Secure@ to @true@ . @DescribeApps@ then returns @*****FILTERED*****@ instead of the actual value. The default value for @Secure@ is @false@ .
+--
+-- * 'evKey' - (Required) The environment variable's name, which can consist of up to 64 characters and must be specified. The name can contain upper- and lowercase letters, numbers, and underscores (_), but it must start with a letter or underscore.
+--
+-- * 'evValue' - (Optional) The environment variable's value, which can be left empty. If you specify a value, it can contain up to 256 characters, which must all be printable.
+environmentVariable
+    :: Text -- ^ 'evKey'
+    -> Text -- ^ 'evValue'
+    -> EnvironmentVariable
+environmentVariable pKey_ pValue_ =
+  EnvironmentVariable' {_evSecure = Nothing, _evKey = pKey_, _evValue = pValue_}
+
+
+-- | (Optional) Whether the variable's value will be returned by the 'DescribeApps' action. To conceal an environment variable's value, set @Secure@ to @true@ . @DescribeApps@ then returns @*****FILTERED*****@ instead of the actual value. The default value for @Secure@ is @false@ .
+evSecure :: Lens' EnvironmentVariable (Maybe Bool)
+evSecure = lens _evSecure (\ s a -> s{_evSecure = a});
+
+-- | (Required) The environment variable's name, which can consist of up to 64 characters and must be specified. The name can contain upper- and lowercase letters, numbers, and underscores (_), but it must start with a letter or underscore.
+evKey :: Lens' EnvironmentVariable Text
+evKey = lens _evKey (\ s a -> s{_evKey = a});
+
+-- | (Optional) The environment variable's value, which can be left empty. If you specify a value, it can contain up to 256 characters, which must all be printable.
+evValue :: Lens' EnvironmentVariable Text
+evValue = lens _evValue (\ s a -> s{_evValue = a});
+
+instance FromJSON EnvironmentVariable where
+        parseJSON
+          = withObject "EnvironmentVariable"
+              (\ x ->
+                 EnvironmentVariable' <$>
+                   (x .:? "Secure") <*> (x .: "Key") <*> (x .: "Value"))
+
+instance Hashable EnvironmentVariable where
+
+instance NFData EnvironmentVariable where
+
+instance ToJSON EnvironmentVariable where
+        toJSON EnvironmentVariable'{..}
+          = object
+              (catMaybes
+                 [("Secure" .=) <$> _evSecure, Just ("Key" .= _evKey),
+                  Just ("Value" .= _evValue)])
+
+-- | Describes an instance.
+--
+--
+--
+-- /See:/ 'instance'' smart constructor.
+data Instance = Instance'
+  { _iPrivateDNS               :: !(Maybe Text)
+  , _iReportedAgentVersion     :: !(Maybe Text)
+  , _iInstanceId               :: !(Maybe Text)
+  , _iStatus                   :: !(Maybe Text)
+  , _iPrivateIP                :: !(Maybe Text)
+  , _iInstallUpdatesOnBoot     :: !(Maybe Bool)
+  , _iVirtualizationType       :: !(Maybe VirtualizationType)
+  , _iInstanceProfileARN       :: !(Maybe Text)
+  , _iPlatform                 :: !(Maybe Text)
+  , _iHostname                 :: !(Maybe Text)
+  , _iSSHHostRsaKeyFingerprint :: !(Maybe Text)
+  , _iSecurityGroupIds         :: !(Maybe [Text])
+  , _iEcsClusterARN            :: !(Maybe Text)
+  , _iARN                      :: !(Maybe Text)
+  , _iCreatedAt                :: !(Maybe Text)
+  , _iEC2InstanceId            :: !(Maybe Text)
+  , _iSSHKeyName               :: !(Maybe Text)
+  , _iAgentVersion             :: !(Maybe Text)
+  , _iRootDeviceVolumeId       :: !(Maybe Text)
+  , _iSubnetId                 :: !(Maybe Text)
+  , _iInfrastructureClass      :: !(Maybe Text)
+  , _iSSHHostDsaKeyFingerprint :: !(Maybe Text)
+  , _iInstanceType             :: !(Maybe Text)
+  , _iEBSOptimized             :: !(Maybe Bool)
+  , _iElasticIP                :: !(Maybe Text)
+  , _iOS                       :: !(Maybe Text)
+  , _iAvailabilityZone         :: !(Maybe Text)
+  , _iLastServiceErrorId       :: !(Maybe Text)
+  , _iTenancy                  :: !(Maybe Text)
+  , _iAutoScalingType          :: !(Maybe AutoScalingType)
+  , _iLayerIds                 :: !(Maybe [Text])
+  , _iArchitecture             :: !(Maybe Architecture)
+  , _iPublicDNS                :: !(Maybe Text)
+  , _iAMIId                    :: !(Maybe Text)
+  , _iPublicIP                 :: !(Maybe Text)
+  , _iReportedOS               :: !(Maybe ReportedOS)
+  , _iRegisteredBy             :: !(Maybe Text)
+  , _iStackId                  :: !(Maybe Text)
+  , _iRootDeviceType           :: !(Maybe RootDeviceType)
+  , _iEcsContainerInstanceARN  :: !(Maybe Text)
+  , _iBlockDeviceMappings      :: !(Maybe [BlockDeviceMapping])
+  } 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:
+--
+-- * 'iPrivateDNS' - The instance's private DNS name.
+--
+-- * 'iReportedAgentVersion' - The instance's reported AWS OpsWorks Stacks agent version.
+--
+-- * 'iInstanceId' - The instance ID.
+--
+-- * 'iStatus' - The instance status:     * @booting@      * @connection_lost@      * @online@      * @pending@      * @rebooting@      * @requested@      * @running_setup@      * @setup_failed@      * @shutting_down@      * @start_failed@      * @stop_failed@      * @stopped@      * @stopping@      * @terminated@      * @terminating@
+--
+-- * 'iPrivateIP' - The instance's private IP address.
+--
+-- * 'iInstallUpdatesOnBoot' - Whether to install operating system and package updates when the instance boots. The default value is @true@ . If this value is set to @false@ , you must then update your instances manually by using 'CreateDeployment' to run the @update_dependencies@ stack command or by manually running @yum@ (Amazon Linux) or @apt-get@ (Ubuntu) on the instances.
+--
+-- * 'iVirtualizationType' - The instance's virtualization type: @paravirtual@ or @hvm@ .
+--
+-- * 'iInstanceProfileARN' - The ARN of the instance's IAM profile. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers> .
+--
+-- * 'iPlatform' - The instance's platform.
+--
+-- * 'iHostname' - The instance host name.
+--
+-- * 'iSSHHostRsaKeyFingerprint' - The SSH key's RSA fingerprint.
+--
+-- * 'iSecurityGroupIds' - An array containing the instance security group IDs.
+--
+-- * 'iEcsClusterARN' - For container instances, the Amazon ECS cluster's ARN.
+--
+-- * 'iARN' - Undocumented member.
+--
+-- * 'iCreatedAt' - The time that the instance was created.
+--
+-- * 'iEC2InstanceId' - The ID of the associated Amazon EC2 instance.
+--
+-- * 'iSSHKeyName' - The instance's Amazon EC2 key-pair name.
+--
+-- * 'iAgentVersion' - The agent version. This parameter is set to @INHERIT@ if the instance inherits the default stack setting or to a a version number for a fixed agent version.
+--
+-- * 'iRootDeviceVolumeId' - The root device volume ID.
+--
+-- * 'iSubnetId' - The instance's subnet ID; applicable only if the stack is running in a VPC.
+--
+-- * 'iInfrastructureClass' - For registered instances, the infrastructure class: @ec2@ or @on-premises@ .
+--
+-- * 'iSSHHostDsaKeyFingerprint' - The SSH key's Deep Security Agent (DSA) fingerprint.
+--
+-- * 'iInstanceType' - The instance type, such as @t2.micro@ .
+--
+-- * 'iEBSOptimized' - Whether this is an Amazon EBS-optimized instance.
+--
+-- * 'iElasticIP' - The instance <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP address > .
+--
+-- * 'iOS' - The instance's operating system.
+--
+-- * 'iAvailabilityZone' - The instance Availability Zone. For more information, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints> .
+--
+-- * 'iLastServiceErrorId' - The ID of the last service error. For more information, call 'DescribeServiceErrors' .
+--
+-- * 'iTenancy' - The instance's tenancy option, such as @dedicated@ or @host@ .
+--
+-- * 'iAutoScalingType' - For load-based or time-based instances, the type.
+--
+-- * 'iLayerIds' - An array containing the instance layer IDs.
+--
+-- * 'iArchitecture' - The instance architecture: "i386" or "x86_64".
+--
+-- * 'iPublicDNS' - The instance public DNS name.
+--
+-- * 'iAMIId' - A custom AMI ID to be used to create the instance. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Instances>
+--
+-- * 'iPublicIP' - The instance public IP address.
+--
+-- * 'iReportedOS' - For registered instances, the reported operating system.
+--
+-- * 'iRegisteredBy' - For registered instances, who performed the registration.
+--
+-- * 'iStackId' - The stack ID.
+--
+-- * 'iRootDeviceType' - The instance's root device type. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device Storage for the Root Device> .
+--
+-- * 'iEcsContainerInstanceARN' - For container instances, the instance's ARN.
+--
+-- * 'iBlockDeviceMappings' - An array of @BlockDeviceMapping@ objects that specify the instance's block device mappings.
+instance'
+    :: Instance
+instance' =
+  Instance'
+  { _iPrivateDNS = Nothing
+  , _iReportedAgentVersion = Nothing
+  , _iInstanceId = Nothing
+  , _iStatus = Nothing
+  , _iPrivateIP = Nothing
+  , _iInstallUpdatesOnBoot = Nothing
+  , _iVirtualizationType = Nothing
+  , _iInstanceProfileARN = Nothing
+  , _iPlatform = Nothing
+  , _iHostname = Nothing
+  , _iSSHHostRsaKeyFingerprint = Nothing
+  , _iSecurityGroupIds = Nothing
+  , _iEcsClusterARN = Nothing
+  , _iARN = Nothing
+  , _iCreatedAt = Nothing
+  , _iEC2InstanceId = Nothing
+  , _iSSHKeyName = Nothing
+  , _iAgentVersion = Nothing
+  , _iRootDeviceVolumeId = Nothing
+  , _iSubnetId = Nothing
+  , _iInfrastructureClass = Nothing
+  , _iSSHHostDsaKeyFingerprint = Nothing
+  , _iInstanceType = Nothing
+  , _iEBSOptimized = Nothing
+  , _iElasticIP = Nothing
+  , _iOS = Nothing
+  , _iAvailabilityZone = Nothing
+  , _iLastServiceErrorId = Nothing
+  , _iTenancy = Nothing
+  , _iAutoScalingType = Nothing
+  , _iLayerIds = Nothing
+  , _iArchitecture = Nothing
+  , _iPublicDNS = Nothing
+  , _iAMIId = Nothing
+  , _iPublicIP = Nothing
+  , _iReportedOS = Nothing
+  , _iRegisteredBy = Nothing
+  , _iStackId = Nothing
+  , _iRootDeviceType = Nothing
+  , _iEcsContainerInstanceARN = Nothing
+  , _iBlockDeviceMappings = Nothing
+  }
+
+
+-- | The instance's private DNS name.
+iPrivateDNS :: Lens' Instance (Maybe Text)
+iPrivateDNS = lens _iPrivateDNS (\ s a -> s{_iPrivateDNS = a});
+
+-- | The instance's reported AWS OpsWorks Stacks agent version.
+iReportedAgentVersion :: Lens' Instance (Maybe Text)
+iReportedAgentVersion = lens _iReportedAgentVersion (\ s a -> s{_iReportedAgentVersion = a});
+
+-- | The instance ID.
+iInstanceId :: Lens' Instance (Maybe Text)
+iInstanceId = lens _iInstanceId (\ s a -> s{_iInstanceId = a});
+
+-- | The instance status:     * @booting@      * @connection_lost@      * @online@      * @pending@      * @rebooting@      * @requested@      * @running_setup@      * @setup_failed@      * @shutting_down@      * @start_failed@      * @stop_failed@      * @stopped@      * @stopping@      * @terminated@      * @terminating@
+iStatus :: Lens' Instance (Maybe Text)
+iStatus = lens _iStatus (\ s a -> s{_iStatus = a});
+
+-- | The instance's private IP address.
+iPrivateIP :: Lens' Instance (Maybe Text)
+iPrivateIP = lens _iPrivateIP (\ s a -> s{_iPrivateIP = a});
+
+-- | Whether to install operating system and package updates when the instance boots. The default value is @true@ . If this value is set to @false@ , you must then update your instances manually by using 'CreateDeployment' to run the @update_dependencies@ stack command or by manually running @yum@ (Amazon Linux) or @apt-get@ (Ubuntu) on the instances.
+iInstallUpdatesOnBoot :: Lens' Instance (Maybe Bool)
+iInstallUpdatesOnBoot = lens _iInstallUpdatesOnBoot (\ s a -> s{_iInstallUpdatesOnBoot = a});
+
+-- | The instance's virtualization type: @paravirtual@ or @hvm@ .
+iVirtualizationType :: Lens' Instance (Maybe VirtualizationType)
+iVirtualizationType = lens _iVirtualizationType (\ s a -> s{_iVirtualizationType = a});
+
+-- | The ARN of the instance's IAM profile. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers> .
+iInstanceProfileARN :: Lens' Instance (Maybe Text)
+iInstanceProfileARN = lens _iInstanceProfileARN (\ s a -> s{_iInstanceProfileARN = a});
+
+-- | The instance's platform.
+iPlatform :: Lens' Instance (Maybe Text)
+iPlatform = lens _iPlatform (\ s a -> s{_iPlatform = a});
+
+-- | The instance host name.
+iHostname :: Lens' Instance (Maybe Text)
+iHostname = lens _iHostname (\ s a -> s{_iHostname = a});
+
+-- | The SSH key's RSA fingerprint.
+iSSHHostRsaKeyFingerprint :: Lens' Instance (Maybe Text)
+iSSHHostRsaKeyFingerprint = lens _iSSHHostRsaKeyFingerprint (\ s a -> s{_iSSHHostRsaKeyFingerprint = a});
+
+-- | An array containing the instance security group IDs.
+iSecurityGroupIds :: Lens' Instance [Text]
+iSecurityGroupIds = lens _iSecurityGroupIds (\ s a -> s{_iSecurityGroupIds = a}) . _Default . _Coerce;
+
+-- | For container instances, the Amazon ECS cluster's ARN.
+iEcsClusterARN :: Lens' Instance (Maybe Text)
+iEcsClusterARN = lens _iEcsClusterARN (\ s a -> s{_iEcsClusterARN = a});
+
+-- | Undocumented member.
+iARN :: Lens' Instance (Maybe Text)
+iARN = lens _iARN (\ s a -> s{_iARN = a});
+
+-- | The time that the instance was created.
+iCreatedAt :: Lens' Instance (Maybe Text)
+iCreatedAt = lens _iCreatedAt (\ s a -> s{_iCreatedAt = a});
+
+-- | The ID of the associated Amazon EC2 instance.
+iEC2InstanceId :: Lens' Instance (Maybe Text)
+iEC2InstanceId = lens _iEC2InstanceId (\ s a -> s{_iEC2InstanceId = a});
+
+-- | The instance's Amazon EC2 key-pair name.
+iSSHKeyName :: Lens' Instance (Maybe Text)
+iSSHKeyName = lens _iSSHKeyName (\ s a -> s{_iSSHKeyName = a});
+
+-- | The agent version. This parameter is set to @INHERIT@ if the instance inherits the default stack setting or to a a version number for a fixed agent version.
+iAgentVersion :: Lens' Instance (Maybe Text)
+iAgentVersion = lens _iAgentVersion (\ s a -> s{_iAgentVersion = a});
+
+-- | The root device volume ID.
+iRootDeviceVolumeId :: Lens' Instance (Maybe Text)
+iRootDeviceVolumeId = lens _iRootDeviceVolumeId (\ s a -> s{_iRootDeviceVolumeId = a});
+
+-- | The instance's subnet ID; applicable only if the stack is running in a VPC.
+iSubnetId :: Lens' Instance (Maybe Text)
+iSubnetId = lens _iSubnetId (\ s a -> s{_iSubnetId = a});
+
+-- | For registered instances, the infrastructure class: @ec2@ or @on-premises@ .
+iInfrastructureClass :: Lens' Instance (Maybe Text)
+iInfrastructureClass = lens _iInfrastructureClass (\ s a -> s{_iInfrastructureClass = a});
+
+-- | The SSH key's Deep Security Agent (DSA) fingerprint.
+iSSHHostDsaKeyFingerprint :: Lens' Instance (Maybe Text)
+iSSHHostDsaKeyFingerprint = lens _iSSHHostDsaKeyFingerprint (\ s a -> s{_iSSHHostDsaKeyFingerprint = a});
+
+-- | The instance type, such as @t2.micro@ .
+iInstanceType :: Lens' Instance (Maybe Text)
+iInstanceType = lens _iInstanceType (\ s a -> s{_iInstanceType = a});
+
+-- | Whether this is an Amazon EBS-optimized instance.
+iEBSOptimized :: Lens' Instance (Maybe Bool)
+iEBSOptimized = lens _iEBSOptimized (\ s a -> s{_iEBSOptimized = a});
+
+-- | The instance <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP address > .
+iElasticIP :: Lens' Instance (Maybe Text)
+iElasticIP = lens _iElasticIP (\ s a -> s{_iElasticIP = a});
+
+-- | The instance's operating system.
+iOS :: Lens' Instance (Maybe Text)
+iOS = lens _iOS (\ s a -> s{_iOS = a});
+
+-- | The instance Availability Zone. For more information, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints> .
+iAvailabilityZone :: Lens' Instance (Maybe Text)
+iAvailabilityZone = lens _iAvailabilityZone (\ s a -> s{_iAvailabilityZone = a});
+
+-- | The ID of the last service error. For more information, call 'DescribeServiceErrors' .
+iLastServiceErrorId :: Lens' Instance (Maybe Text)
+iLastServiceErrorId = lens _iLastServiceErrorId (\ s a -> s{_iLastServiceErrorId = a});
+
+-- | The instance's tenancy option, such as @dedicated@ or @host@ .
+iTenancy :: Lens' Instance (Maybe Text)
+iTenancy = lens _iTenancy (\ s a -> s{_iTenancy = a});
+
+-- | For load-based or time-based instances, the type.
+iAutoScalingType :: Lens' Instance (Maybe AutoScalingType)
+iAutoScalingType = lens _iAutoScalingType (\ s a -> s{_iAutoScalingType = a});
+
+-- | An array containing the instance layer IDs.
+iLayerIds :: Lens' Instance [Text]
+iLayerIds = lens _iLayerIds (\ s a -> s{_iLayerIds = a}) . _Default . _Coerce;
+
+-- | The instance architecture: "i386" or "x86_64".
+iArchitecture :: Lens' Instance (Maybe Architecture)
+iArchitecture = lens _iArchitecture (\ s a -> s{_iArchitecture = a});
+
+-- | The instance public DNS name.
+iPublicDNS :: Lens' Instance (Maybe Text)
+iPublicDNS = lens _iPublicDNS (\ s a -> s{_iPublicDNS = a});
+
+-- | A custom AMI ID to be used to create the instance. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Instances>
+iAMIId :: Lens' Instance (Maybe Text)
+iAMIId = lens _iAMIId (\ s a -> s{_iAMIId = a});
+
+-- | The instance public IP address.
+iPublicIP :: Lens' Instance (Maybe Text)
+iPublicIP = lens _iPublicIP (\ s a -> s{_iPublicIP = a});
+
+-- | For registered instances, the reported operating system.
+iReportedOS :: Lens' Instance (Maybe ReportedOS)
+iReportedOS = lens _iReportedOS (\ s a -> s{_iReportedOS = a});
+
+-- | For registered instances, who performed the registration.
+iRegisteredBy :: Lens' Instance (Maybe Text)
+iRegisteredBy = lens _iRegisteredBy (\ s a -> s{_iRegisteredBy = a});
+
+-- | The stack ID.
+iStackId :: Lens' Instance (Maybe Text)
+iStackId = lens _iStackId (\ s a -> s{_iStackId = a});
+
+-- | The instance's root device type. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device Storage for the Root Device> .
+iRootDeviceType :: Lens' Instance (Maybe RootDeviceType)
+iRootDeviceType = lens _iRootDeviceType (\ s a -> s{_iRootDeviceType = a});
+
+-- | For container instances, the instance's ARN.
+iEcsContainerInstanceARN :: Lens' Instance (Maybe Text)
+iEcsContainerInstanceARN = lens _iEcsContainerInstanceARN (\ s a -> s{_iEcsContainerInstanceARN = a});
+
+-- | An array of @BlockDeviceMapping@ objects that specify the instance's block device mappings.
+iBlockDeviceMappings :: Lens' Instance [BlockDeviceMapping]
+iBlockDeviceMappings = lens _iBlockDeviceMappings (\ s a -> s{_iBlockDeviceMappings = a}) . _Default . _Coerce;
+
+instance FromJSON Instance where
+        parseJSON
+          = withObject "Instance"
+              (\ x ->
+                 Instance' <$>
+                   (x .:? "PrivateDns") <*>
+                     (x .:? "ReportedAgentVersion")
+                     <*> (x .:? "InstanceId")
+                     <*> (x .:? "Status")
+                     <*> (x .:? "PrivateIp")
+                     <*> (x .:? "InstallUpdatesOnBoot")
+                     <*> (x .:? "VirtualizationType")
+                     <*> (x .:? "InstanceProfileArn")
+                     <*> (x .:? "Platform")
+                     <*> (x .:? "Hostname")
+                     <*> (x .:? "SshHostRsaKeyFingerprint")
+                     <*> (x .:? "SecurityGroupIds" .!= mempty)
+                     <*> (x .:? "EcsClusterArn")
+                     <*> (x .:? "Arn")
+                     <*> (x .:? "CreatedAt")
+                     <*> (x .:? "Ec2InstanceId")
+                     <*> (x .:? "SshKeyName")
+                     <*> (x .:? "AgentVersion")
+                     <*> (x .:? "RootDeviceVolumeId")
+                     <*> (x .:? "SubnetId")
+                     <*> (x .:? "InfrastructureClass")
+                     <*> (x .:? "SshHostDsaKeyFingerprint")
+                     <*> (x .:? "InstanceType")
+                     <*> (x .:? "EbsOptimized")
+                     <*> (x .:? "ElasticIp")
+                     <*> (x .:? "Os")
+                     <*> (x .:? "AvailabilityZone")
+                     <*> (x .:? "LastServiceErrorId")
+                     <*> (x .:? "Tenancy")
+                     <*> (x .:? "AutoScalingType")
+                     <*> (x .:? "LayerIds" .!= mempty)
+                     <*> (x .:? "Architecture")
+                     <*> (x .:? "PublicDns")
+                     <*> (x .:? "AmiId")
+                     <*> (x .:? "PublicIp")
+                     <*> (x .:? "ReportedOs")
+                     <*> (x .:? "RegisteredBy")
+                     <*> (x .:? "StackId")
+                     <*> (x .:? "RootDeviceType")
+                     <*> (x .:? "EcsContainerInstanceArn")
+                     <*> (x .:? "BlockDeviceMappings" .!= mempty))
+
+instance Hashable Instance where
+
+instance NFData Instance where
+
+-- | Contains a description of an Amazon EC2 instance from the Amazon EC2 metadata service. For more information, see <http://docs.aws.amazon.com/sdkfornet/latest/apidocs/Index.html Instance Metadata and User Data> .
+--
+--
+--
+-- /See:/ 'instanceIdentity' smart constructor.
+data InstanceIdentity = InstanceIdentity'
+  { _iiSignature :: !(Maybe Text)
+  , _iiDocument  :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InstanceIdentity' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iiSignature' - A signature that can be used to verify the document's accuracy and authenticity.
+--
+-- * 'iiDocument' - A JSON document that contains the metadata.
+instanceIdentity
+    :: InstanceIdentity
+instanceIdentity =
+  InstanceIdentity' {_iiSignature = Nothing, _iiDocument = Nothing}
+
+
+-- | A signature that can be used to verify the document's accuracy and authenticity.
+iiSignature :: Lens' InstanceIdentity (Maybe Text)
+iiSignature = lens _iiSignature (\ s a -> s{_iiSignature = a});
+
+-- | A JSON document that contains the metadata.
+iiDocument :: Lens' InstanceIdentity (Maybe Text)
+iiDocument = lens _iiDocument (\ s a -> s{_iiDocument = a});
+
+instance Hashable InstanceIdentity where
+
+instance NFData InstanceIdentity where
+
+instance ToJSON InstanceIdentity where
+        toJSON InstanceIdentity'{..}
+          = object
+              (catMaybes
+                 [("Signature" .=) <$> _iiSignature,
+                  ("Document" .=) <$> _iiDocument])
+
+-- | Describes how many instances a stack has for each status.
+--
+--
+--
+-- /See:/ 'instancesCount' smart constructor.
+data InstancesCount = InstancesCount'
+  { _icTerminating    :: !(Maybe Int)
+  , _icPending        :: !(Maybe Int)
+  , _icOnline         :: !(Maybe Int)
+  , _icUnassigning    :: !(Maybe Int)
+  , _icDeregistering  :: !(Maybe Int)
+  , _icRunningSetup   :: !(Maybe Int)
+  , _icRequested      :: !(Maybe Int)
+  , _icBooting        :: !(Maybe Int)
+  , _icStopped        :: !(Maybe Int)
+  , _icRebooting      :: !(Maybe Int)
+  , _icAssigning      :: !(Maybe Int)
+  , _icShuttingDown   :: !(Maybe Int)
+  , _icSetupFailed    :: !(Maybe Int)
+  , _icConnectionLost :: !(Maybe Int)
+  , _icTerminated     :: !(Maybe Int)
+  , _icStopping       :: !(Maybe Int)
+  , _icRegistered     :: !(Maybe Int)
+  , _icStartFailed    :: !(Maybe Int)
+  , _icRegistering    :: !(Maybe Int)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InstancesCount' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'icTerminating' - The number of instances with @terminating@ status.
+--
+-- * 'icPending' - The number of instances with @pending@ status.
+--
+-- * 'icOnline' - The number of instances with @online@ status.
+--
+-- * 'icUnassigning' - The number of instances in the Unassigning state.
+--
+-- * 'icDeregistering' - The number of instances in the Deregistering state.
+--
+-- * 'icRunningSetup' - The number of instances with @running_setup@ status.
+--
+-- * 'icRequested' - The number of instances with @requested@ status.
+--
+-- * 'icBooting' - The number of instances with @booting@ status.
+--
+-- * 'icStopped' - The number of instances with @stopped@ status.
+--
+-- * 'icRebooting' - The number of instances with @rebooting@ status.
+--
+-- * 'icAssigning' - The number of instances in the Assigning state.
+--
+-- * 'icShuttingDown' - The number of instances with @shutting_down@ status.
+--
+-- * 'icSetupFailed' - The number of instances with @setup_failed@ status.
+--
+-- * 'icConnectionLost' - The number of instances with @connection_lost@ status.
+--
+-- * 'icTerminated' - The number of instances with @terminated@ status.
+--
+-- * 'icStopping' - The number of instances with @stopping@ status.
+--
+-- * 'icRegistered' - The number of instances in the Registered state.
+--
+-- * 'icStartFailed' - The number of instances with @start_failed@ status.
+--
+-- * 'icRegistering' - The number of instances in the Registering state.
+instancesCount
+    :: InstancesCount
+instancesCount =
+  InstancesCount'
+  { _icTerminating = Nothing
+  , _icPending = Nothing
+  , _icOnline = Nothing
+  , _icUnassigning = Nothing
+  , _icDeregistering = Nothing
+  , _icRunningSetup = Nothing
+  , _icRequested = Nothing
+  , _icBooting = Nothing
+  , _icStopped = Nothing
+  , _icRebooting = Nothing
+  , _icAssigning = Nothing
+  , _icShuttingDown = Nothing
+  , _icSetupFailed = Nothing
+  , _icConnectionLost = Nothing
+  , _icTerminated = Nothing
+  , _icStopping = Nothing
+  , _icRegistered = Nothing
+  , _icStartFailed = Nothing
+  , _icRegistering = Nothing
+  }
+
+
+-- | The number of instances with @terminating@ status.
+icTerminating :: Lens' InstancesCount (Maybe Int)
+icTerminating = lens _icTerminating (\ s a -> s{_icTerminating = a});
+
+-- | The number of instances with @pending@ status.
+icPending :: Lens' InstancesCount (Maybe Int)
+icPending = lens _icPending (\ s a -> s{_icPending = a});
+
+-- | The number of instances with @online@ status.
+icOnline :: Lens' InstancesCount (Maybe Int)
+icOnline = lens _icOnline (\ s a -> s{_icOnline = a});
+
+-- | The number of instances in the Unassigning state.
+icUnassigning :: Lens' InstancesCount (Maybe Int)
+icUnassigning = lens _icUnassigning (\ s a -> s{_icUnassigning = a});
+
+-- | The number of instances in the Deregistering state.
+icDeregistering :: Lens' InstancesCount (Maybe Int)
+icDeregistering = lens _icDeregistering (\ s a -> s{_icDeregistering = a});
+
+-- | The number of instances with @running_setup@ status.
+icRunningSetup :: Lens' InstancesCount (Maybe Int)
+icRunningSetup = lens _icRunningSetup (\ s a -> s{_icRunningSetup = a});
+
+-- | The number of instances with @requested@ status.
+icRequested :: Lens' InstancesCount (Maybe Int)
+icRequested = lens _icRequested (\ s a -> s{_icRequested = a});
+
+-- | The number of instances with @booting@ status.
+icBooting :: Lens' InstancesCount (Maybe Int)
+icBooting = lens _icBooting (\ s a -> s{_icBooting = a});
+
+-- | The number of instances with @stopped@ status.
+icStopped :: Lens' InstancesCount (Maybe Int)
+icStopped = lens _icStopped (\ s a -> s{_icStopped = a});
+
+-- | The number of instances with @rebooting@ status.
+icRebooting :: Lens' InstancesCount (Maybe Int)
+icRebooting = lens _icRebooting (\ s a -> s{_icRebooting = a});
+
+-- | The number of instances in the Assigning state.
+icAssigning :: Lens' InstancesCount (Maybe Int)
+icAssigning = lens _icAssigning (\ s a -> s{_icAssigning = a});
+
+-- | The number of instances with @shutting_down@ status.
+icShuttingDown :: Lens' InstancesCount (Maybe Int)
+icShuttingDown = lens _icShuttingDown (\ s a -> s{_icShuttingDown = a});
+
+-- | The number of instances with @setup_failed@ status.
+icSetupFailed :: Lens' InstancesCount (Maybe Int)
+icSetupFailed = lens _icSetupFailed (\ s a -> s{_icSetupFailed = a});
+
+-- | The number of instances with @connection_lost@ status.
+icConnectionLost :: Lens' InstancesCount (Maybe Int)
+icConnectionLost = lens _icConnectionLost (\ s a -> s{_icConnectionLost = a});
+
+-- | The number of instances with @terminated@ status.
+icTerminated :: Lens' InstancesCount (Maybe Int)
+icTerminated = lens _icTerminated (\ s a -> s{_icTerminated = a});
+
+-- | The number of instances with @stopping@ status.
+icStopping :: Lens' InstancesCount (Maybe Int)
+icStopping = lens _icStopping (\ s a -> s{_icStopping = a});
+
+-- | The number of instances in the Registered state.
+icRegistered :: Lens' InstancesCount (Maybe Int)
+icRegistered = lens _icRegistered (\ s a -> s{_icRegistered = a});
+
+-- | The number of instances with @start_failed@ status.
+icStartFailed :: Lens' InstancesCount (Maybe Int)
+icStartFailed = lens _icStartFailed (\ s a -> s{_icStartFailed = a});
+
+-- | The number of instances in the Registering state.
+icRegistering :: Lens' InstancesCount (Maybe Int)
+icRegistering = lens _icRegistering (\ s a -> s{_icRegistering = a});
+
+instance FromJSON InstancesCount where
+        parseJSON
+          = withObject "InstancesCount"
+              (\ x ->
+                 InstancesCount' <$>
+                   (x .:? "Terminating") <*> (x .:? "Pending") <*>
+                     (x .:? "Online")
+                     <*> (x .:? "Unassigning")
+                     <*> (x .:? "Deregistering")
+                     <*> (x .:? "RunningSetup")
+                     <*> (x .:? "Requested")
+                     <*> (x .:? "Booting")
+                     <*> (x .:? "Stopped")
+                     <*> (x .:? "Rebooting")
+                     <*> (x .:? "Assigning")
+                     <*> (x .:? "ShuttingDown")
+                     <*> (x .:? "SetupFailed")
+                     <*> (x .:? "ConnectionLost")
+                     <*> (x .:? "Terminated")
+                     <*> (x .:? "Stopping")
+                     <*> (x .:? "Registered")
+                     <*> (x .:? "StartFailed")
+                     <*> (x .:? "Registering"))
+
+instance Hashable InstancesCount where
+
+instance NFData InstancesCount where
+
+-- | Describes a layer.
+--
+--
+--
+-- /See:/ 'layer' smart constructor.
+data Layer = Layer'
+  { _lCustomInstanceProfileARN :: !(Maybe Text)
+  , _lCustomSecurityGroupIds :: !(Maybe [Text])
+  , _lInstallUpdatesOnBoot :: !(Maybe Bool)
+  , _lCloudWatchLogsConfiguration :: !(Maybe CloudWatchLogsConfiguration)
+  , _lLifecycleEventConfiguration :: !(Maybe LifecycleEventConfiguration)
+  , _lARN :: !(Maybe Text)
+  , _lCreatedAt :: !(Maybe Text)
+  , _lShortname :: !(Maybe Text)
+  , _lDefaultRecipes :: !(Maybe Recipes)
+  , _lCustomRecipes :: !(Maybe Recipes)
+  , _lCustomJSON :: !(Maybe Text)
+  , _lVolumeConfigurations :: !(Maybe [VolumeConfiguration])
+  , _lEnableAutoHealing :: !(Maybe Bool)
+  , _lPackages :: !(Maybe [Text])
+  , _lAttributes :: !(Maybe (Map LayerAttributesKeys (Maybe Text)))
+  , _lName :: !(Maybe Text)
+  , _lAutoAssignPublicIPs :: !(Maybe Bool)
+  , _lType :: !(Maybe LayerType)
+  , _lUseEBSOptimizedInstances :: !(Maybe Bool)
+  , _lStackId :: !(Maybe Text)
+  , _lLayerId :: !(Maybe Text)
+  , _lDefaultSecurityGroupNames :: !(Maybe [Text])
+  , _lAutoAssignElasticIPs :: !(Maybe Bool)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Layer' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lCustomInstanceProfileARN' - The ARN of the default IAM profile to be used for the layer's EC2 instances. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers> .
+--
+-- * 'lCustomSecurityGroupIds' - An array containing the layer's custom security group IDs.
+--
+-- * 'lInstallUpdatesOnBoot' - Whether to install operating system and package updates when the instance boots. The default value is @true@ . If this value is set 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.
+--
+-- * 'lCloudWatchLogsConfiguration' - The Amazon CloudWatch Logs configuration settings for the layer.
+--
+-- * 'lLifecycleEventConfiguration' - A @LifeCycleEventConfiguration@ object that specifies the Shutdown event configuration.
+--
+-- * 'lARN' - Undocumented member.
+--
+-- * 'lCreatedAt' - Date when the layer was created.
+--
+-- * 'lShortname' - The layer short name.
+--
+-- * 'lDefaultRecipes' - Undocumented member.
+--
+-- * 'lCustomRecipes' - A @LayerCustomRecipes@ object that specifies the layer's custom recipes.
+--
+-- * 'lCustomJSON' - A JSON formatted string containing the layer's custom stack configuration and deployment attributes.
+--
+-- * 'lVolumeConfigurations' - A @VolumeConfigurations@ object that describes the layer's Amazon EBS volumes.
+--
+-- * 'lEnableAutoHealing' - Whether auto healing is disabled for the layer.
+--
+-- * 'lPackages' - An array of @Package@ objects that describe the layer's packages.
+--
+-- * 'lAttributes' - The layer attributes. For the @HaproxyStatsPassword@ , @MysqlRootPassword@ , and @GangliaPassword@ attributes, AWS OpsWorks Stacks returns @*****FILTERED*****@ instead of the actual value For an ECS Cluster layer, AWS OpsWorks Stacks the @EcsClusterArn@ attribute is set to the cluster's ARN.
+--
+-- * 'lName' - The layer name.
+--
+-- * 'lAutoAssignPublicIPs' - For stacks that are running in a VPC, whether to automatically assign a public IP address to the layer's instances. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-basics-edit.html How to Edit a Layer> .
+--
+-- * 'lType' - The layer type.
+--
+-- * 'lUseEBSOptimizedInstances' - Whether the layer uses Amazon EBS-optimized instances.
+--
+-- * 'lStackId' - The layer stack ID.
+--
+-- * 'lLayerId' - The layer ID.
+--
+-- * 'lDefaultSecurityGroupNames' - An array containing the layer's security group names.
+--
+-- * 'lAutoAssignElasticIPs' - Whether to automatically assign an <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP address> to the layer's instances. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-basics-edit.html How to Edit a Layer> .
+layer
+    :: Layer
+layer =
+  Layer'
+  { _lCustomInstanceProfileARN = Nothing
+  , _lCustomSecurityGroupIds = Nothing
+  , _lInstallUpdatesOnBoot = Nothing
+  , _lCloudWatchLogsConfiguration = Nothing
+  , _lLifecycleEventConfiguration = Nothing
+  , _lARN = Nothing
+  , _lCreatedAt = Nothing
+  , _lShortname = Nothing
+  , _lDefaultRecipes = Nothing
+  , _lCustomRecipes = Nothing
+  , _lCustomJSON = Nothing
+  , _lVolumeConfigurations = Nothing
+  , _lEnableAutoHealing = Nothing
+  , _lPackages = Nothing
+  , _lAttributes = Nothing
+  , _lName = Nothing
+  , _lAutoAssignPublicIPs = Nothing
+  , _lType = Nothing
+  , _lUseEBSOptimizedInstances = Nothing
+  , _lStackId = Nothing
+  , _lLayerId = Nothing
+  , _lDefaultSecurityGroupNames = Nothing
+  , _lAutoAssignElasticIPs = Nothing
+  }
+
+
+-- | The ARN of the default IAM profile to be used for the layer's EC2 instances. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers> .
+lCustomInstanceProfileARN :: Lens' Layer (Maybe Text)
+lCustomInstanceProfileARN = lens _lCustomInstanceProfileARN (\ s a -> s{_lCustomInstanceProfileARN = a});
+
+-- | An array containing the layer's custom security group IDs.
+lCustomSecurityGroupIds :: Lens' Layer [Text]
+lCustomSecurityGroupIds = lens _lCustomSecurityGroupIds (\ s a -> s{_lCustomSecurityGroupIds = a}) . _Default . _Coerce;
+
+-- | Whether to install operating system and package updates when the instance boots. The default value is @true@ . If this value is set 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.
+lInstallUpdatesOnBoot :: Lens' Layer (Maybe Bool)
+lInstallUpdatesOnBoot = lens _lInstallUpdatesOnBoot (\ s a -> s{_lInstallUpdatesOnBoot = a});
+
+-- | The Amazon CloudWatch Logs configuration settings for the layer.
+lCloudWatchLogsConfiguration :: Lens' Layer (Maybe CloudWatchLogsConfiguration)
+lCloudWatchLogsConfiguration = lens _lCloudWatchLogsConfiguration (\ s a -> s{_lCloudWatchLogsConfiguration = a});
+
+-- | A @LifeCycleEventConfiguration@ object that specifies the Shutdown event configuration.
+lLifecycleEventConfiguration :: Lens' Layer (Maybe LifecycleEventConfiguration)
+lLifecycleEventConfiguration = lens _lLifecycleEventConfiguration (\ s a -> s{_lLifecycleEventConfiguration = a});
+
+-- | Undocumented member.
+lARN :: Lens' Layer (Maybe Text)
+lARN = lens _lARN (\ s a -> s{_lARN = a});
+
+-- | Date when the layer was created.
+lCreatedAt :: Lens' Layer (Maybe Text)
+lCreatedAt = lens _lCreatedAt (\ s a -> s{_lCreatedAt = a});
+
+-- | The layer short name.
+lShortname :: Lens' Layer (Maybe Text)
+lShortname = lens _lShortname (\ s a -> s{_lShortname = a});
+
+-- | Undocumented member.
+lDefaultRecipes :: Lens' Layer (Maybe Recipes)
+lDefaultRecipes = lens _lDefaultRecipes (\ s a -> s{_lDefaultRecipes = a});
+
+-- | A @LayerCustomRecipes@ object that specifies the layer's custom recipes.
+lCustomRecipes :: Lens' Layer (Maybe Recipes)
+lCustomRecipes = lens _lCustomRecipes (\ s a -> s{_lCustomRecipes = a});
+
+-- | A JSON formatted string containing the layer's custom stack configuration and deployment attributes.
+lCustomJSON :: Lens' Layer (Maybe Text)
+lCustomJSON = lens _lCustomJSON (\ s a -> s{_lCustomJSON = a});
+
+-- | A @VolumeConfigurations@ object that describes the layer's Amazon EBS volumes.
+lVolumeConfigurations :: Lens' Layer [VolumeConfiguration]
+lVolumeConfigurations = lens _lVolumeConfigurations (\ s a -> s{_lVolumeConfigurations = a}) . _Default . _Coerce;
+
+-- | Whether auto healing is disabled for the layer.
+lEnableAutoHealing :: Lens' Layer (Maybe Bool)
+lEnableAutoHealing = lens _lEnableAutoHealing (\ s a -> s{_lEnableAutoHealing = a});
+
+-- | An array of @Package@ objects that describe the layer's packages.
+lPackages :: Lens' Layer [Text]
+lPackages = lens _lPackages (\ s a -> s{_lPackages = a}) . _Default . _Coerce;
+
+-- | The layer attributes. For the @HaproxyStatsPassword@ , @MysqlRootPassword@ , and @GangliaPassword@ attributes, AWS OpsWorks Stacks returns @*****FILTERED*****@ instead of the actual value For an ECS Cluster layer, AWS OpsWorks Stacks the @EcsClusterArn@ attribute is set to the cluster's ARN.
+lAttributes :: Lens' Layer (HashMap LayerAttributesKeys (Maybe Text))
+lAttributes = lens _lAttributes (\ s a -> s{_lAttributes = a}) . _Default . _Map;
+
+-- | The layer name.
+lName :: Lens' Layer (Maybe Text)
+lName = lens _lName (\ s a -> s{_lName = a});
+
+-- | For stacks that are running in a VPC, whether to automatically assign a public IP address to the layer's instances. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-basics-edit.html How to Edit a Layer> .
+lAutoAssignPublicIPs :: Lens' Layer (Maybe Bool)
+lAutoAssignPublicIPs = lens _lAutoAssignPublicIPs (\ s a -> s{_lAutoAssignPublicIPs = a});
+
+-- | The layer type.
+lType :: Lens' Layer (Maybe LayerType)
+lType = lens _lType (\ s a -> s{_lType = a});
+
+-- | Whether the layer uses Amazon EBS-optimized instances.
+lUseEBSOptimizedInstances :: Lens' Layer (Maybe Bool)
+lUseEBSOptimizedInstances = lens _lUseEBSOptimizedInstances (\ s a -> s{_lUseEBSOptimizedInstances = a});
+
+-- | The layer stack ID.
+lStackId :: Lens' Layer (Maybe Text)
+lStackId = lens _lStackId (\ s a -> s{_lStackId = a});
+
+-- | The layer ID.
+lLayerId :: Lens' Layer (Maybe Text)
+lLayerId = lens _lLayerId (\ s a -> s{_lLayerId = a});
+
+-- | An array containing the layer's security group names.
+lDefaultSecurityGroupNames :: Lens' Layer [Text]
+lDefaultSecurityGroupNames = lens _lDefaultSecurityGroupNames (\ s a -> s{_lDefaultSecurityGroupNames = a}) . _Default . _Coerce;
+
+-- | Whether to automatically assign an <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP address> to the layer's instances. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-basics-edit.html How to Edit a Layer> .
+lAutoAssignElasticIPs :: Lens' Layer (Maybe Bool)
+lAutoAssignElasticIPs = lens _lAutoAssignElasticIPs (\ s a -> s{_lAutoAssignElasticIPs = a});
+
+instance FromJSON Layer where
+        parseJSON
+          = withObject "Layer"
+              (\ x ->
+                 Layer' <$>
+                   (x .:? "CustomInstanceProfileArn") <*>
+                     (x .:? "CustomSecurityGroupIds" .!= mempty)
+                     <*> (x .:? "InstallUpdatesOnBoot")
+                     <*> (x .:? "CloudWatchLogsConfiguration")
+                     <*> (x .:? "LifecycleEventConfiguration")
+                     <*> (x .:? "Arn")
+                     <*> (x .:? "CreatedAt")
+                     <*> (x .:? "Shortname")
+                     <*> (x .:? "DefaultRecipes")
+                     <*> (x .:? "CustomRecipes")
+                     <*> (x .:? "CustomJson")
+                     <*> (x .:? "VolumeConfigurations" .!= mempty)
+                     <*> (x .:? "EnableAutoHealing")
+                     <*> (x .:? "Packages" .!= mempty)
+                     <*> (x .:? "Attributes" .!= mempty)
+                     <*> (x .:? "Name")
+                     <*> (x .:? "AutoAssignPublicIps")
+                     <*> (x .:? "Type")
+                     <*> (x .:? "UseEbsOptimizedInstances")
+                     <*> (x .:? "StackId")
+                     <*> (x .:? "LayerId")
+                     <*> (x .:? "DefaultSecurityGroupNames" .!= mempty)
+                     <*> (x .:? "AutoAssignElasticIps"))
+
+instance Hashable Layer where
+
+instance NFData Layer where
+
+-- | Specifies the lifecycle event configuration
+--
+--
+--
+-- /See:/ 'lifecycleEventConfiguration' smart constructor.
+newtype LifecycleEventConfiguration = LifecycleEventConfiguration'
+  { _lecShutdown :: Maybe ShutdownEventConfiguration
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'LifecycleEventConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lecShutdown' - A @ShutdownEventConfiguration@ object that specifies the Shutdown event configuration.
+lifecycleEventConfiguration
+    :: LifecycleEventConfiguration
+lifecycleEventConfiguration =
+  LifecycleEventConfiguration' {_lecShutdown = Nothing}
+
+
+-- | A @ShutdownEventConfiguration@ object that specifies the Shutdown event configuration.
+lecShutdown :: Lens' LifecycleEventConfiguration (Maybe ShutdownEventConfiguration)
+lecShutdown = lens _lecShutdown (\ s a -> s{_lecShutdown = a});
+
+instance FromJSON LifecycleEventConfiguration where
+        parseJSON
+          = withObject "LifecycleEventConfiguration"
+              (\ x ->
+                 LifecycleEventConfiguration' <$> (x .:? "Shutdown"))
+
+instance Hashable LifecycleEventConfiguration where
+
+instance NFData LifecycleEventConfiguration where
+
+instance ToJSON LifecycleEventConfiguration where
+        toJSON LifecycleEventConfiguration'{..}
+          = object
+              (catMaybes [("Shutdown" .=) <$> _lecShutdown])
+
+-- | Describes a layer's load-based auto scaling configuration.
+--
+--
+--
+-- /See:/ 'loadBasedAutoScalingConfiguration' smart constructor.
+data LoadBasedAutoScalingConfiguration = LoadBasedAutoScalingConfiguration'
+  { _lbascUpScaling   :: !(Maybe AutoScalingThresholds)
+  , _lbascEnable      :: !(Maybe Bool)
+  , _lbascDownScaling :: !(Maybe AutoScalingThresholds)
+  , _lbascLayerId     :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'LoadBasedAutoScalingConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lbascUpScaling' - An @AutoScalingThresholds@ object that describes the upscaling configuration, which defines how and when AWS OpsWorks Stacks increases the number of instances.
+--
+-- * 'lbascEnable' - Whether load-based auto scaling is enabled for the layer.
+--
+-- * 'lbascDownScaling' - An @AutoScalingThresholds@ object that describes the downscaling configuration, which defines how and when AWS OpsWorks Stacks reduces the number of instances.
+--
+-- * 'lbascLayerId' - The layer ID.
+loadBasedAutoScalingConfiguration
+    :: LoadBasedAutoScalingConfiguration
+loadBasedAutoScalingConfiguration =
+  LoadBasedAutoScalingConfiguration'
+  { _lbascUpScaling = Nothing
+  , _lbascEnable = Nothing
+  , _lbascDownScaling = Nothing
+  , _lbascLayerId = Nothing
+  }
+
+
+-- | An @AutoScalingThresholds@ object that describes the upscaling configuration, which defines how and when AWS OpsWorks Stacks increases the number of instances.
+lbascUpScaling :: Lens' LoadBasedAutoScalingConfiguration (Maybe AutoScalingThresholds)
+lbascUpScaling = lens _lbascUpScaling (\ s a -> s{_lbascUpScaling = a});
+
+-- | Whether load-based auto scaling is enabled for the layer.
+lbascEnable :: Lens' LoadBasedAutoScalingConfiguration (Maybe Bool)
+lbascEnable = lens _lbascEnable (\ s a -> s{_lbascEnable = a});
+
+-- | An @AutoScalingThresholds@ object that describes the downscaling configuration, which defines how and when AWS OpsWorks Stacks reduces the number of instances.
+lbascDownScaling :: Lens' LoadBasedAutoScalingConfiguration (Maybe AutoScalingThresholds)
+lbascDownScaling = lens _lbascDownScaling (\ s a -> s{_lbascDownScaling = a});
+
+-- | The layer ID.
+lbascLayerId :: Lens' LoadBasedAutoScalingConfiguration (Maybe Text)
+lbascLayerId = lens _lbascLayerId (\ s a -> s{_lbascLayerId = a});
+
+instance FromJSON LoadBasedAutoScalingConfiguration
+         where
+        parseJSON
+          = withObject "LoadBasedAutoScalingConfiguration"
+              (\ x ->
+                 LoadBasedAutoScalingConfiguration' <$>
+                   (x .:? "UpScaling") <*> (x .:? "Enable") <*>
+                     (x .:? "DownScaling")
+                     <*> (x .:? "LayerId"))
+
+instance Hashable LoadBasedAutoScalingConfiguration
+         where
+
+instance NFData LoadBasedAutoScalingConfiguration
+         where
+
+-- | Describes stack or user permissions.
+--
+--
+--
+-- /See:/ 'permission' smart constructor.
+data Permission = Permission'
+  { _pIAMUserARN :: !(Maybe Text)
+  , _pAllowSudo  :: !(Maybe Bool)
+  , _pStackId    :: !(Maybe Text)
+  , _pLevel      :: !(Maybe Text)
+  , _pAllowSSH   :: !(Maybe Bool)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Permission' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pIAMUserARN' - The Amazon Resource Name (ARN) for an AWS Identity and Access Management (IAM) role. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers> .
+--
+-- * 'pAllowSudo' - Whether the user can use __sudo__ .
+--
+-- * 'pStackId' - A stack ID.
+--
+-- * 'pLevel' - The user's permission level, which must be the following:     * @deny@      * @show@      * @deploy@      * @manage@      * @iam_only@  For more information on the permissions associated with these levels, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>
+--
+-- * 'pAllowSSH' - Whether the user can use SSH.
+permission
+    :: Permission
+permission =
+  Permission'
+  { _pIAMUserARN = Nothing
+  , _pAllowSudo = Nothing
+  , _pStackId = Nothing
+  , _pLevel = Nothing
+  , _pAllowSSH = Nothing
+  }
+
+
+-- | The Amazon Resource Name (ARN) for an AWS Identity and Access Management (IAM) role. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers> .
+pIAMUserARN :: Lens' Permission (Maybe Text)
+pIAMUserARN = lens _pIAMUserARN (\ s a -> s{_pIAMUserARN = a});
+
+-- | Whether the user can use __sudo__ .
+pAllowSudo :: Lens' Permission (Maybe Bool)
+pAllowSudo = lens _pAllowSudo (\ s a -> s{_pAllowSudo = a});
+
+-- | A stack ID.
+pStackId :: Lens' Permission (Maybe Text)
+pStackId = lens _pStackId (\ s a -> s{_pStackId = a});
+
+-- | The user's permission level, which must be the following:     * @deny@      * @show@      * @deploy@      * @manage@      * @iam_only@  For more information on the permissions associated with these levels, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>
+pLevel :: Lens' Permission (Maybe Text)
+pLevel = lens _pLevel (\ s a -> s{_pLevel = a});
+
+-- | Whether the user can use SSH.
+pAllowSSH :: Lens' Permission (Maybe Bool)
+pAllowSSH = lens _pAllowSSH (\ s a -> s{_pAllowSSH = a});
+
+instance FromJSON Permission where
+        parseJSON
+          = withObject "Permission"
+              (\ x ->
+                 Permission' <$>
+                   (x .:? "IamUserArn") <*> (x .:? "AllowSudo") <*>
+                     (x .:? "StackId")
+                     <*> (x .:? "Level")
+                     <*> (x .:? "AllowSsh"))
+
+instance Hashable Permission where
+
+instance NFData Permission where
+
+-- | Describes an instance's RAID array.
+--
+--
+--
+-- /See:/ 'rAIdArray' smart constructor.
+data RAIdArray = RAIdArray'
+  { _raiaInstanceId       :: !(Maybe Text)
+  , _raiaSize             :: !(Maybe Int)
+  , _raiaIOPS             :: !(Maybe Int)
+  , _raiaCreatedAt        :: !(Maybe Text)
+  , _raiaRAIdLevel        :: !(Maybe Int)
+  , _raiaDevice           :: !(Maybe Text)
+  , _raiaNumberOfDisks    :: !(Maybe Int)
+  , _raiaAvailabilityZone :: !(Maybe Text)
+  , _raiaName             :: !(Maybe Text)
+  , _raiaRAIdArrayId      :: !(Maybe Text)
+  , _raiaVolumeType       :: !(Maybe Text)
+  , _raiaStackId          :: !(Maybe Text)
+  , _raiaMountPoint       :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'RAIdArray' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'raiaInstanceId' - The instance ID.
+--
+-- * 'raiaSize' - The array's size.
+--
+-- * 'raiaIOPS' - For PIOPS volumes, the IOPS per disk.
+--
+-- * 'raiaCreatedAt' - When the RAID array was created.
+--
+-- * 'raiaRAIdLevel' - The <http://en.wikipedia.org/wiki/Standard_RAID_levels RAID level> .
+--
+-- * 'raiaDevice' - The array's Linux device. For example /dev/mdadm0.
+--
+-- * 'raiaNumberOfDisks' - The number of disks in the array.
+--
+-- * 'raiaAvailabilityZone' - The array's Availability Zone. For more information, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints> .
+--
+-- * 'raiaName' - The array name.
+--
+-- * 'raiaRAIdArrayId' - The array ID.
+--
+-- * 'raiaVolumeType' - The volume type, standard or PIOPS.
+--
+-- * 'raiaStackId' - The stack ID.
+--
+-- * 'raiaMountPoint' - The array's mount point.
+rAIdArray
+    :: RAIdArray
+rAIdArray =
+  RAIdArray'
+  { _raiaInstanceId = Nothing
+  , _raiaSize = Nothing
+  , _raiaIOPS = Nothing
+  , _raiaCreatedAt = Nothing
+  , _raiaRAIdLevel = Nothing
+  , _raiaDevice = Nothing
+  , _raiaNumberOfDisks = Nothing
+  , _raiaAvailabilityZone = Nothing
+  , _raiaName = Nothing
+  , _raiaRAIdArrayId = Nothing
+  , _raiaVolumeType = Nothing
+  , _raiaStackId = Nothing
+  , _raiaMountPoint = Nothing
+  }
+
+
+-- | The instance ID.
+raiaInstanceId :: Lens' RAIdArray (Maybe Text)
+raiaInstanceId = lens _raiaInstanceId (\ s a -> s{_raiaInstanceId = a});
+
+-- | The array's size.
+raiaSize :: Lens' RAIdArray (Maybe Int)
+raiaSize = lens _raiaSize (\ s a -> s{_raiaSize = a});
+
+-- | For PIOPS volumes, the IOPS per disk.
+raiaIOPS :: Lens' RAIdArray (Maybe Int)
+raiaIOPS = lens _raiaIOPS (\ s a -> s{_raiaIOPS = a});
+
+-- | When the RAID array was created.
+raiaCreatedAt :: Lens' RAIdArray (Maybe Text)
+raiaCreatedAt = lens _raiaCreatedAt (\ s a -> s{_raiaCreatedAt = a});
+
+-- | The <http://en.wikipedia.org/wiki/Standard_RAID_levels RAID level> .
+raiaRAIdLevel :: Lens' RAIdArray (Maybe Int)
+raiaRAIdLevel = lens _raiaRAIdLevel (\ s a -> s{_raiaRAIdLevel = a});
+
+-- | The array's Linux device. For example /dev/mdadm0.
+raiaDevice :: Lens' RAIdArray (Maybe Text)
+raiaDevice = lens _raiaDevice (\ s a -> s{_raiaDevice = a});
+
+-- | The number of disks in the array.
+raiaNumberOfDisks :: Lens' RAIdArray (Maybe Int)
+raiaNumberOfDisks = lens _raiaNumberOfDisks (\ s a -> s{_raiaNumberOfDisks = a});
+
+-- | The array's Availability Zone. For more information, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints> .
+raiaAvailabilityZone :: Lens' RAIdArray (Maybe Text)
+raiaAvailabilityZone = lens _raiaAvailabilityZone (\ s a -> s{_raiaAvailabilityZone = a});
+
+-- | The array name.
+raiaName :: Lens' RAIdArray (Maybe Text)
+raiaName = lens _raiaName (\ s a -> s{_raiaName = a});
+
+-- | The array ID.
+raiaRAIdArrayId :: Lens' RAIdArray (Maybe Text)
+raiaRAIdArrayId = lens _raiaRAIdArrayId (\ s a -> s{_raiaRAIdArrayId = a});
+
+-- | The volume type, standard or PIOPS.
+raiaVolumeType :: Lens' RAIdArray (Maybe Text)
+raiaVolumeType = lens _raiaVolumeType (\ s a -> s{_raiaVolumeType = a});
+
+-- | The stack ID.
+raiaStackId :: Lens' RAIdArray (Maybe Text)
+raiaStackId = lens _raiaStackId (\ s a -> s{_raiaStackId = a});
+
+-- | The array's mount point.
+raiaMountPoint :: Lens' RAIdArray (Maybe Text)
+raiaMountPoint = lens _raiaMountPoint (\ s a -> s{_raiaMountPoint = a});
+
+instance FromJSON RAIdArray where
+        parseJSON
+          = withObject "RAIdArray"
+              (\ x ->
+                 RAIdArray' <$>
+                   (x .:? "InstanceId") <*> (x .:? "Size") <*>
+                     (x .:? "Iops")
+                     <*> (x .:? "CreatedAt")
+                     <*> (x .:? "RaidLevel")
+                     <*> (x .:? "Device")
+                     <*> (x .:? "NumberOfDisks")
+                     <*> (x .:? "AvailabilityZone")
+                     <*> (x .:? "Name")
+                     <*> (x .:? "RaidArrayId")
+                     <*> (x .:? "VolumeType")
+                     <*> (x .:? "StackId")
+                     <*> (x .:? "MountPoint"))
+
+instance Hashable RAIdArray where
+
+instance NFData RAIdArray where
+
+-- | Describes an Amazon RDS instance.
+--
+--
+--
+-- /See:/ 'rdsDBInstance' smart constructor.
+data RDSDBInstance = RDSDBInstance'
+  { _rdiRDSDBInstanceARN     :: !(Maybe Text)
+  , _rdiDBUser               :: !(Maybe Text)
+  , _rdiMissingOnRDS         :: !(Maybe Bool)
+  , _rdiEngine               :: !(Maybe Text)
+  , _rdiAddress              :: !(Maybe Text)
+  , _rdiDBInstanceIdentifier :: !(Maybe Text)
+  , _rdiRegion               :: !(Maybe Text)
+  , _rdiStackId              :: !(Maybe Text)
+  , _rdiDBPassword           :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'RDSDBInstance' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdiRDSDBInstanceARN' - The instance's ARN.
+--
+-- * 'rdiDBUser' - The master user name.
+--
+-- * 'rdiMissingOnRDS' - Set to @true@ if AWS OpsWorks Stacks is unable to discover the Amazon RDS instance. AWS OpsWorks Stacks attempts to discover the instance only once. If this value is set to @true@ , you must deregister the instance, and then register it again.
+--
+-- * 'rdiEngine' - The instance's database engine.
+--
+-- * 'rdiAddress' - The instance's address.
+--
+-- * 'rdiDBInstanceIdentifier' - The DB instance identifier.
+--
+-- * 'rdiRegion' - The instance's AWS region.
+--
+-- * 'rdiStackId' - The ID of the stack with which the instance is registered.
+--
+-- * 'rdiDBPassword' - AWS OpsWorks Stacks returns @*****FILTERED*****@ instead of the actual value.
+rdsDBInstance
+    :: RDSDBInstance
+rdsDBInstance =
+  RDSDBInstance'
+  { _rdiRDSDBInstanceARN = Nothing
+  , _rdiDBUser = Nothing
+  , _rdiMissingOnRDS = Nothing
+  , _rdiEngine = Nothing
+  , _rdiAddress = Nothing
+  , _rdiDBInstanceIdentifier = Nothing
+  , _rdiRegion = Nothing
+  , _rdiStackId = Nothing
+  , _rdiDBPassword = Nothing
+  }
+
+
+-- | The instance's ARN.
+rdiRDSDBInstanceARN :: Lens' RDSDBInstance (Maybe Text)
+rdiRDSDBInstanceARN = lens _rdiRDSDBInstanceARN (\ s a -> s{_rdiRDSDBInstanceARN = a});
+
+-- | The master user name.
+rdiDBUser :: Lens' RDSDBInstance (Maybe Text)
+rdiDBUser = lens _rdiDBUser (\ s a -> s{_rdiDBUser = a});
+
+-- | Set to @true@ if AWS OpsWorks Stacks is unable to discover the Amazon RDS instance. AWS OpsWorks Stacks attempts to discover the instance only once. If this value is set to @true@ , you must deregister the instance, and then register it again.
+rdiMissingOnRDS :: Lens' RDSDBInstance (Maybe Bool)
+rdiMissingOnRDS = lens _rdiMissingOnRDS (\ s a -> s{_rdiMissingOnRDS = a});
+
+-- | The instance's database engine.
+rdiEngine :: Lens' RDSDBInstance (Maybe Text)
+rdiEngine = lens _rdiEngine (\ s a -> s{_rdiEngine = a});
+
+-- | The instance's address.
+rdiAddress :: Lens' RDSDBInstance (Maybe Text)
+rdiAddress = lens _rdiAddress (\ s a -> s{_rdiAddress = a});
+
+-- | The DB instance identifier.
+rdiDBInstanceIdentifier :: Lens' RDSDBInstance (Maybe Text)
+rdiDBInstanceIdentifier = lens _rdiDBInstanceIdentifier (\ s a -> s{_rdiDBInstanceIdentifier = a});
+
+-- | The instance's AWS region.
+rdiRegion :: Lens' RDSDBInstance (Maybe Text)
+rdiRegion = lens _rdiRegion (\ s a -> s{_rdiRegion = a});
+
+-- | The ID of the stack with which the instance is registered.
+rdiStackId :: Lens' RDSDBInstance (Maybe Text)
+rdiStackId = lens _rdiStackId (\ s a -> s{_rdiStackId = a});
+
+-- | AWS OpsWorks Stacks returns @*****FILTERED*****@ instead of the actual value.
+rdiDBPassword :: Lens' RDSDBInstance (Maybe Text)
+rdiDBPassword = lens _rdiDBPassword (\ s a -> s{_rdiDBPassword = a});
+
+instance FromJSON RDSDBInstance where
+        parseJSON
+          = withObject "RDSDBInstance"
+              (\ x ->
+                 RDSDBInstance' <$>
+                   (x .:? "RdsDbInstanceArn") <*> (x .:? "DbUser") <*>
+                     (x .:? "MissingOnRds")
+                     <*> (x .:? "Engine")
+                     <*> (x .:? "Address")
+                     <*> (x .:? "DbInstanceIdentifier")
+                     <*> (x .:? "Region")
+                     <*> (x .:? "StackId")
+                     <*> (x .:? "DbPassword"))
+
+instance Hashable RDSDBInstance where
+
+instance NFData RDSDBInstance where
+
+-- | AWS OpsWorks Stacks supports five lifecycle events: __setup__ , __configuration__ , __deploy__ , __undeploy__ , and __shutdown__ . For each layer, AWS OpsWorks Stacks runs a set of standard recipes for each event. In addition, you can provide custom recipes for any or all layers and events. AWS OpsWorks Stacks runs custom event recipes after the standard recipes. @LayerCustomRecipes@ specifies the custom recipes for a particular layer to be run in response to each of the five events.
+--
+--
+-- To specify a recipe, use the cookbook's directory name in the repository followed by two colons and the recipe name, which is the recipe's file name without the .rb extension. For example: phpapp2::dbsetup specifies the dbsetup.rb recipe in the repository's phpapp2 folder.
+--
+--
+-- /See:/ 'recipes' smart constructor.
+data Recipes = Recipes'
+  { _rSetup     :: !(Maybe [Text])
+  , _rShutdown  :: !(Maybe [Text])
+  , _rUndeploy  :: !(Maybe [Text])
+  , _rConfigure :: !(Maybe [Text])
+  , _rDeploy    :: !(Maybe [Text])
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Recipes' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rSetup' - An array of custom recipe names to be run following a @setup@ event.
+--
+-- * 'rShutdown' - An array of custom recipe names to be run following a @shutdown@ event.
+--
+-- * 'rUndeploy' - An array of custom recipe names to be run following a @undeploy@ event.
+--
+-- * 'rConfigure' - An array of custom recipe names to be run following a @configure@ event.
+--
+-- * 'rDeploy' - An array of custom recipe names to be run following a @deploy@ event.
+recipes
+    :: Recipes
+recipes =
+  Recipes'
+  { _rSetup = Nothing
+  , _rShutdown = Nothing
+  , _rUndeploy = Nothing
+  , _rConfigure = Nothing
+  , _rDeploy = Nothing
+  }
+
+
+-- | An array of custom recipe names to be run following a @setup@ event.
+rSetup :: Lens' Recipes [Text]
+rSetup = lens _rSetup (\ s a -> s{_rSetup = a}) . _Default . _Coerce;
+
+-- | An array of custom recipe names to be run following a @shutdown@ event.
+rShutdown :: Lens' Recipes [Text]
+rShutdown = lens _rShutdown (\ s a -> s{_rShutdown = a}) . _Default . _Coerce;
+
+-- | An array of custom recipe names to be run following a @undeploy@ event.
+rUndeploy :: Lens' Recipes [Text]
+rUndeploy = lens _rUndeploy (\ s a -> s{_rUndeploy = a}) . _Default . _Coerce;
+
+-- | An array of custom recipe names to be run following a @configure@ event.
+rConfigure :: Lens' Recipes [Text]
+rConfigure = lens _rConfigure (\ s a -> s{_rConfigure = a}) . _Default . _Coerce;
+
+-- | An array of custom recipe names to be run following a @deploy@ event.
+rDeploy :: Lens' Recipes [Text]
+rDeploy = lens _rDeploy (\ s a -> s{_rDeploy = a}) . _Default . _Coerce;
+
+instance FromJSON Recipes where
+        parseJSON
+          = withObject "Recipes"
+              (\ x ->
+                 Recipes' <$>
+                   (x .:? "Setup" .!= mempty) <*>
+                     (x .:? "Shutdown" .!= mempty)
+                     <*> (x .:? "Undeploy" .!= mempty)
+                     <*> (x .:? "Configure" .!= mempty)
+                     <*> (x .:? "Deploy" .!= mempty))
+
+instance Hashable Recipes where
+
+instance NFData Recipes where
+
+instance ToJSON Recipes where
+        toJSON Recipes'{..}
+          = object
+              (catMaybes
+                 [("Setup" .=) <$> _rSetup,
+                  ("Shutdown" .=) <$> _rShutdown,
+                  ("Undeploy" .=) <$> _rUndeploy,
+                  ("Configure" .=) <$> _rConfigure,
+                  ("Deploy" .=) <$> _rDeploy])
+
+-- | A registered instance's reported operating system.
+--
+--
+--
+-- /See:/ 'reportedOS' smart constructor.
+data ReportedOS = ReportedOS'
+  { _roFamily  :: !(Maybe Text)
+  , _roName    :: !(Maybe Text)
+  , _roVersion :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ReportedOS' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'roFamily' - The operating system family.
+--
+-- * 'roName' - The operating system name.
+--
+-- * 'roVersion' - The operating system version.
+reportedOS
+    :: ReportedOS
+reportedOS =
+  ReportedOS' {_roFamily = Nothing, _roName = Nothing, _roVersion = Nothing}
+
+
+-- | The operating system family.
+roFamily :: Lens' ReportedOS (Maybe Text)
+roFamily = lens _roFamily (\ s a -> s{_roFamily = a});
+
+-- | The operating system name.
+roName :: Lens' ReportedOS (Maybe Text)
+roName = lens _roName (\ s a -> s{_roName = a});
+
+-- | The operating system version.
+roVersion :: Lens' ReportedOS (Maybe Text)
+roVersion = lens _roVersion (\ s a -> s{_roVersion = a});
+
+instance FromJSON ReportedOS where
+        parseJSON
+          = withObject "ReportedOS"
+              (\ x ->
+                 ReportedOS' <$>
+                   (x .:? "Family") <*> (x .:? "Name") <*>
+                     (x .:? "Version"))
+
+instance Hashable ReportedOS where
+
+instance NFData ReportedOS where
+
+-- | Describes an app's SSL configuration.
+--
+--
+--
+-- /See:/ 'sslConfiguration' smart constructor.
+data SSLConfiguration = SSLConfiguration'
+  { _scChain       :: !(Maybe Text)
+  , _scCertificate :: !Text
+  , _scPrivateKey  :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SSLConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'scChain' - Optional. Can be used to specify an intermediate certificate authority key or client authentication.
+--
+-- * 'scCertificate' - The contents of the certificate's domain.crt file.
+--
+-- * 'scPrivateKey' - The private key; the contents of the certificate's domain.kex file.
+sslConfiguration
+    :: Text -- ^ 'scCertificate'
+    -> Text -- ^ 'scPrivateKey'
+    -> SSLConfiguration
+sslConfiguration pCertificate_ pPrivateKey_ =
+  SSLConfiguration'
+  { _scChain = Nothing
+  , _scCertificate = pCertificate_
+  , _scPrivateKey = pPrivateKey_
+  }
+
+
+-- | Optional. Can be used to specify an intermediate certificate authority key or client authentication.
+scChain :: Lens' SSLConfiguration (Maybe Text)
+scChain = lens _scChain (\ s a -> s{_scChain = a});
+
+-- | The contents of the certificate's domain.crt file.
+scCertificate :: Lens' SSLConfiguration Text
+scCertificate = lens _scCertificate (\ s a -> s{_scCertificate = a});
+
+-- | The private key; the contents of the certificate's domain.kex file.
+scPrivateKey :: Lens' SSLConfiguration Text
+scPrivateKey = lens _scPrivateKey (\ s a -> s{_scPrivateKey = a});
+
+instance FromJSON SSLConfiguration where
+        parseJSON
+          = withObject "SSLConfiguration"
+              (\ x ->
+                 SSLConfiguration' <$>
+                   (x .:? "Chain") <*> (x .: "Certificate") <*>
+                     (x .: "PrivateKey"))
+
+instance Hashable SSLConfiguration where
+
+instance NFData SSLConfiguration where
+
+instance ToJSON SSLConfiguration where
+        toJSON SSLConfiguration'{..}
+          = object
+              (catMaybes
+                 [("Chain" .=) <$> _scChain,
+                  Just ("Certificate" .= _scCertificate),
+                  Just ("PrivateKey" .= _scPrivateKey)])
+
+-- | Describes a user's SSH information.
+--
+--
+--
+-- /See:/ 'selfUserProfile' smart constructor.
+data SelfUserProfile = SelfUserProfile'
+  { _supSSHPublicKey :: !(Maybe Text)
+  , _supSSHUsername  :: !(Maybe Text)
+  , _supIAMUserARN   :: !(Maybe Text)
+  , _supName         :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SelfUserProfile' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'supSSHPublicKey' - The user's SSH public key.
+--
+-- * 'supSSHUsername' - The user's SSH user name.
+--
+-- * 'supIAMUserARN' - The user's IAM ARN.
+--
+-- * 'supName' - The user's name.
+selfUserProfile
+    :: SelfUserProfile
+selfUserProfile =
+  SelfUserProfile'
+  { _supSSHPublicKey = Nothing
+  , _supSSHUsername = Nothing
+  , _supIAMUserARN = Nothing
+  , _supName = Nothing
+  }
+
+
+-- | The user's SSH public key.
+supSSHPublicKey :: Lens' SelfUserProfile (Maybe Text)
+supSSHPublicKey = lens _supSSHPublicKey (\ s a -> s{_supSSHPublicKey = a});
+
+-- | The user's SSH user name.
+supSSHUsername :: Lens' SelfUserProfile (Maybe Text)
+supSSHUsername = lens _supSSHUsername (\ s a -> s{_supSSHUsername = a});
+
+-- | The user's IAM ARN.
+supIAMUserARN :: Lens' SelfUserProfile (Maybe Text)
+supIAMUserARN = lens _supIAMUserARN (\ s a -> s{_supIAMUserARN = a});
+
+-- | The user's name.
+supName :: Lens' SelfUserProfile (Maybe Text)
+supName = lens _supName (\ s a -> s{_supName = a});
+
+instance FromJSON SelfUserProfile where
+        parseJSON
+          = withObject "SelfUserProfile"
+              (\ x ->
+                 SelfUserProfile' <$>
+                   (x .:? "SshPublicKey") <*> (x .:? "SshUsername") <*>
+                     (x .:? "IamUserArn")
+                     <*> (x .:? "Name"))
+
+instance Hashable SelfUserProfile where
+
+instance NFData SelfUserProfile where
+
+-- | Describes an AWS OpsWorks Stacks service error.
+--
+--
+--
+-- /See:/ 'serviceError'' smart constructor.
+data ServiceError' = ServiceError''
+  { _seInstanceId     :: !(Maybe Text)
+  , _seCreatedAt      :: !(Maybe Text)
+  , _seServiceErrorId :: !(Maybe Text)
+  , _seType           :: !(Maybe Text)
+  , _seStackId        :: !(Maybe Text)
+  , _seMessage        :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ServiceError'' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'seInstanceId' - The instance ID.
+--
+-- * 'seCreatedAt' - When the error occurred.
+--
+-- * 'seServiceErrorId' - The error ID.
+--
+-- * 'seType' - The error type.
+--
+-- * 'seStackId' - The stack ID.
+--
+-- * 'seMessage' - A message that describes the error.
+serviceError'
+    :: ServiceError'
+serviceError' =
+  ServiceError''
+  { _seInstanceId = Nothing
+  , _seCreatedAt = Nothing
+  , _seServiceErrorId = Nothing
+  , _seType = Nothing
+  , _seStackId = Nothing
+  , _seMessage = Nothing
+  }
+
+
+-- | The instance ID.
+seInstanceId :: Lens' ServiceError' (Maybe Text)
+seInstanceId = lens _seInstanceId (\ s a -> s{_seInstanceId = a});
+
+-- | When the error occurred.
+seCreatedAt :: Lens' ServiceError' (Maybe Text)
+seCreatedAt = lens _seCreatedAt (\ s a -> s{_seCreatedAt = a});
+
+-- | The error ID.
+seServiceErrorId :: Lens' ServiceError' (Maybe Text)
+seServiceErrorId = lens _seServiceErrorId (\ s a -> s{_seServiceErrorId = a});
+
+-- | The error type.
+seType :: Lens' ServiceError' (Maybe Text)
+seType = lens _seType (\ s a -> s{_seType = a});
+
+-- | The stack ID.
+seStackId :: Lens' ServiceError' (Maybe Text)
+seStackId = lens _seStackId (\ s a -> s{_seStackId = a});
+
+-- | A message that describes the error.
+seMessage :: Lens' ServiceError' (Maybe Text)
+seMessage = lens _seMessage (\ s a -> s{_seMessage = a});
+
+instance FromJSON ServiceError' where
+        parseJSON
+          = withObject "ServiceError'"
+              (\ x ->
+                 ServiceError'' <$>
+                   (x .:? "InstanceId") <*> (x .:? "CreatedAt") <*>
+                     (x .:? "ServiceErrorId")
+                     <*> (x .:? "Type")
+                     <*> (x .:? "StackId")
+                     <*> (x .:? "Message"))
+
+instance Hashable ServiceError' where
+
+instance NFData ServiceError' where
+
+-- | The Shutdown event configuration.
+--
+--
+--
+-- /See:/ 'shutdownEventConfiguration' smart constructor.
+data ShutdownEventConfiguration = ShutdownEventConfiguration'
+  { _secExecutionTimeout                :: !(Maybe Int)
+  , _secDelayUntilElbConnectionsDrained :: !(Maybe Bool)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ShutdownEventConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'secExecutionTimeout' - The time, in seconds, that AWS OpsWorks Stacks will wait after triggering a Shutdown event before shutting down an instance.
+--
+-- * 'secDelayUntilElbConnectionsDrained' - Whether to enable Elastic Load Balancing connection draining. For more information, see <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/TerminologyandKeyConcepts.html#conn-drain Connection Draining>
+shutdownEventConfiguration
+    :: ShutdownEventConfiguration
+shutdownEventConfiguration =
+  ShutdownEventConfiguration'
+  { _secExecutionTimeout = Nothing
+  , _secDelayUntilElbConnectionsDrained = Nothing
+  }
+
+
+-- | The time, in seconds, that AWS OpsWorks Stacks will wait after triggering a Shutdown event before shutting down an instance.
+secExecutionTimeout :: Lens' ShutdownEventConfiguration (Maybe Int)
+secExecutionTimeout = lens _secExecutionTimeout (\ s a -> s{_secExecutionTimeout = a});
+
+-- | Whether to enable Elastic Load Balancing connection draining. For more information, see <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/TerminologyandKeyConcepts.html#conn-drain Connection Draining>
+secDelayUntilElbConnectionsDrained :: Lens' ShutdownEventConfiguration (Maybe Bool)
+secDelayUntilElbConnectionsDrained = lens _secDelayUntilElbConnectionsDrained (\ s a -> s{_secDelayUntilElbConnectionsDrained = a});
+
+instance FromJSON ShutdownEventConfiguration where
+        parseJSON
+          = withObject "ShutdownEventConfiguration"
+              (\ x ->
+                 ShutdownEventConfiguration' <$>
+                   (x .:? "ExecutionTimeout") <*>
+                     (x .:? "DelayUntilElbConnectionsDrained"))
+
+instance Hashable ShutdownEventConfiguration where
+
+instance NFData ShutdownEventConfiguration where
+
+instance ToJSON ShutdownEventConfiguration where
+        toJSON ShutdownEventConfiguration'{..}
+          = object
+              (catMaybes
+                 [("ExecutionTimeout" .=) <$> _secExecutionTimeout,
+                  ("DelayUntilElbConnectionsDrained" .=) <$>
+                    _secDelayUntilElbConnectionsDrained])
+
+-- | Contains the information required to retrieve an app or cookbook from a repository. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-creating.html Creating Apps> or <http://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook.html Custom Recipes and Cookbooks> .
+--
+--
+--
+-- /See:/ 'source' smart constructor.
+data Source = Source'
+  { _sURL      :: !(Maybe Text)
+  , _sUsername :: !(Maybe Text)
+  , _sSSHKey   :: !(Maybe Text)
+  , _sPassword :: !(Maybe Text)
+  , _sType     :: !(Maybe SourceType)
+  , _sRevision :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Source' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sURL' - The source URL. The following is an example of an Amazon S3 source URL: @https://s3.amazonaws.com/opsworks-demo-bucket/opsworks_cookbook_demo.tar.gz@ .
+--
+-- * 'sUsername' - This parameter depends on the repository type.     * For Amazon S3 bundles, set @Username@ to the appropriate IAM access key ID.     * For HTTP bundles, Git repositories, and Subversion repositories, set @Username@ to the user name.
+--
+-- * 'sSSHKey' - In requests, the repository's SSH key. In responses, AWS OpsWorks Stacks returns @*****FILTERED*****@ instead of the actual value.
+--
+-- * 'sPassword' - When included in a request, the parameter depends on the repository type.     * For Amazon S3 bundles, set @Password@ to the appropriate IAM secret access key.     * For HTTP bundles and Subversion repositories, set @Password@ to the password. For more information on how to safely handle IAM credentials, see <http://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html http://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html> . In responses, AWS OpsWorks Stacks returns @*****FILTERED*****@ instead of the actual value.
+--
+-- * 'sType' - The repository type.
+--
+-- * 'sRevision' - The application's version. AWS OpsWorks Stacks enables you to easily deploy new versions of an application. One of the simplest approaches is to have branches or revisions in your repository that represent different versions that can potentially be deployed.
+source
+    :: Source
+source =
+  Source'
+  { _sURL = Nothing
+  , _sUsername = Nothing
+  , _sSSHKey = Nothing
+  , _sPassword = Nothing
+  , _sType = Nothing
+  , _sRevision = Nothing
+  }
+
+
+-- | The source URL. The following is an example of an Amazon S3 source URL: @https://s3.amazonaws.com/opsworks-demo-bucket/opsworks_cookbook_demo.tar.gz@ .
+sURL :: Lens' Source (Maybe Text)
+sURL = lens _sURL (\ s a -> s{_sURL = a});
+
+-- | This parameter depends on the repository type.     * For Amazon S3 bundles, set @Username@ to the appropriate IAM access key ID.     * For HTTP bundles, Git repositories, and Subversion repositories, set @Username@ to the user name.
+sUsername :: Lens' Source (Maybe Text)
+sUsername = lens _sUsername (\ s a -> s{_sUsername = a});
+
+-- | In requests, the repository's SSH key. In responses, AWS OpsWorks Stacks returns @*****FILTERED*****@ instead of the actual value.
+sSSHKey :: Lens' Source (Maybe Text)
+sSSHKey = lens _sSSHKey (\ s a -> s{_sSSHKey = a});
+
+-- | When included in a request, the parameter depends on the repository type.     * For Amazon S3 bundles, set @Password@ to the appropriate IAM secret access key.     * For HTTP bundles and Subversion repositories, set @Password@ to the password. For more information on how to safely handle IAM credentials, see <http://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html http://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html> . In responses, AWS OpsWorks Stacks returns @*****FILTERED*****@ instead of the actual value.
+sPassword :: Lens' Source (Maybe Text)
+sPassword = lens _sPassword (\ s a -> s{_sPassword = a});
+
+-- | The repository type.
+sType :: Lens' Source (Maybe SourceType)
+sType = lens _sType (\ s a -> s{_sType = a});
+
+-- | The application's version. AWS OpsWorks Stacks enables you to easily deploy new versions of an application. One of the simplest approaches is to have branches or revisions in your repository that represent different versions that can potentially be deployed.
+sRevision :: Lens' Source (Maybe Text)
+sRevision = lens _sRevision (\ s a -> s{_sRevision = a});
+
+instance FromJSON Source where
+        parseJSON
+          = withObject "Source"
+              (\ x ->
+                 Source' <$>
+                   (x .:? "Url") <*> (x .:? "Username") <*>
+                     (x .:? "SshKey")
+                     <*> (x .:? "Password")
+                     <*> (x .:? "Type")
+                     <*> (x .:? "Revision"))
+
+instance Hashable Source where
+
+instance NFData Source where
+
+instance ToJSON Source where
+        toJSON Source'{..}
+          = object
+              (catMaybes
+                 [("Url" .=) <$> _sURL,
+                  ("Username" .=) <$> _sUsername,
+                  ("SshKey" .=) <$> _sSSHKey,
+                  ("Password" .=) <$> _sPassword,
+                  ("Type" .=) <$> _sType,
+                  ("Revision" .=) <$> _sRevision])
+
+-- | Describes a stack.
+--
+--
+--
+-- /See:/ 'stack' smart constructor.
+data Stack = Stack'
+  { _sDefaultInstanceProfileARN :: !(Maybe Text)
+  , _sServiceRoleARN            :: !(Maybe Text)
+  , _sDefaultRootDeviceType     :: !(Maybe RootDeviceType)
+  , _sARN                       :: !(Maybe Text)
+  , _sCreatedAt                 :: !(Maybe Text)
+  , _sVPCId                     :: !(Maybe Text)
+  , _sChefConfiguration         :: !(Maybe ChefConfiguration)
+  , _sAgentVersion              :: !(Maybe Text)
+  , _sDefaultSSHKeyName         :: !(Maybe Text)
+  , _sCustomJSON                :: !(Maybe Text)
+  , _sCustomCookbooksSource     :: !(Maybe Source)
+  , _sDefaultAvailabilityZone   :: !(Maybe Text)
+  , _sAttributes                :: !(Maybe (Map StackAttributesKeys Text))
+  , _sName                      :: !(Maybe Text)
+  , _sDefaultOS                 :: !(Maybe Text)
+  , _sUseOpsworksSecurityGroups :: !(Maybe Bool)
+  , _sUseCustomCookbooks        :: !(Maybe Bool)
+  , _sDefaultSubnetId           :: !(Maybe Text)
+  , _sRegion                    :: !(Maybe Text)
+  , _sConfigurationManager      :: !(Maybe StackConfigurationManager)
+  , _sStackId                   :: !(Maybe Text)
+  , _sHostnameTheme             :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Stack' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sDefaultInstanceProfileARN' - The ARN of an IAM profile that is the default profile for all of the stack's EC2 instances. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers> .
+--
+-- * 'sServiceRoleARN' - The stack AWS Identity and Access Management (IAM) role.
+--
+-- * 'sDefaultRootDeviceType' - The default root device type. This value is used by default for all instances in the stack, but you can override it when you create an instance. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device Storage for the Root Device> .
+--
+-- * 'sARN' - The stack's ARN.
+--
+-- * 'sCreatedAt' - The date when the stack was created.
+--
+-- * 'sVPCId' - The VPC ID; applicable only if the stack is running in a VPC.
+--
+-- * 'sChefConfiguration' - A @ChefConfiguration@ object that specifies whether to enable Berkshelf and the Berkshelf version. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a New Stack> .
+--
+-- * 'sAgentVersion' - The agent version. This parameter is set to @LATEST@ for auto-update. or a version number for a fixed agent version.
+--
+-- * 'sDefaultSSHKeyName' - A default Amazon EC2 key pair for the stack's instances. You can override this value when you create or update an instance.
+--
+-- * 'sCustomJSON' - A JSON object that contains user-defined attributes to be added to the stack configuration and deployment attributes. You can use custom JSON to override the corresponding default stack configuration attribute values or to pass data to recipes. The string should be in the following format: @"{\"key1\": \"value1\", \"key2\": \"value2\",...}"@  For more information on custom JSON, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html Use Custom JSON to Modify the Stack Configuration Attributes> .
+--
+-- * 'sCustomCookbooksSource' - Undocumented member.
+--
+-- * 'sDefaultAvailabilityZone' - The stack's default Availability Zone. For more information, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints> .
+--
+-- * 'sAttributes' - The stack's attributes.
+--
+-- * 'sName' - The stack name.
+--
+-- * 'sDefaultOS' - The stack's default operating system.
+--
+-- * 'sUseOpsworksSecurityGroups' - Whether the stack automatically associates the AWS OpsWorks Stacks built-in security groups with the stack's layers.
+--
+-- * 'sUseCustomCookbooks' - Whether the stack uses custom cookbooks.
+--
+-- * 'sDefaultSubnetId' - The default subnet ID; applicable only if the stack is running in a VPC.
+--
+-- * 'sRegion' - The stack AWS region, such as "ap-northeast-2". For more information about AWS regions, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints> .
+--
+-- * 'sConfigurationManager' - The configuration manager.
+--
+-- * 'sStackId' - The stack ID.
+--
+-- * 'sHostnameTheme' - The stack host name theme, with spaces replaced by underscores.
+stack
+    :: Stack
+stack =
+  Stack'
+  { _sDefaultInstanceProfileARN = Nothing
+  , _sServiceRoleARN = Nothing
+  , _sDefaultRootDeviceType = Nothing
+  , _sARN = Nothing
+  , _sCreatedAt = Nothing
+  , _sVPCId = Nothing
+  , _sChefConfiguration = Nothing
+  , _sAgentVersion = Nothing
+  , _sDefaultSSHKeyName = Nothing
+  , _sCustomJSON = Nothing
+  , _sCustomCookbooksSource = Nothing
+  , _sDefaultAvailabilityZone = Nothing
+  , _sAttributes = Nothing
+  , _sName = Nothing
+  , _sDefaultOS = Nothing
+  , _sUseOpsworksSecurityGroups = Nothing
+  , _sUseCustomCookbooks = Nothing
+  , _sDefaultSubnetId = Nothing
+  , _sRegion = Nothing
+  , _sConfigurationManager = Nothing
+  , _sStackId = Nothing
+  , _sHostnameTheme = Nothing
+  }
+
+
+-- | The ARN of an IAM profile that is the default profile for all of the stack's EC2 instances. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers> .
+sDefaultInstanceProfileARN :: Lens' Stack (Maybe Text)
+sDefaultInstanceProfileARN = lens _sDefaultInstanceProfileARN (\ s a -> s{_sDefaultInstanceProfileARN = a});
+
+-- | The stack AWS Identity and Access Management (IAM) role.
+sServiceRoleARN :: Lens' Stack (Maybe Text)
+sServiceRoleARN = lens _sServiceRoleARN (\ s a -> s{_sServiceRoleARN = a});
+
+-- | The default root device type. This value is used by default for all instances in the stack, but you can override it when you create an instance. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device Storage for the Root Device> .
+sDefaultRootDeviceType :: Lens' Stack (Maybe RootDeviceType)
+sDefaultRootDeviceType = lens _sDefaultRootDeviceType (\ s a -> s{_sDefaultRootDeviceType = a});
+
+-- | The stack's ARN.
+sARN :: Lens' Stack (Maybe Text)
+sARN = lens _sARN (\ s a -> s{_sARN = a});
+
+-- | The date when the stack was created.
+sCreatedAt :: Lens' Stack (Maybe Text)
+sCreatedAt = lens _sCreatedAt (\ s a -> s{_sCreatedAt = a});
+
+-- | The VPC ID; applicable only if the stack is running in a VPC.
+sVPCId :: Lens' Stack (Maybe Text)
+sVPCId = lens _sVPCId (\ s a -> s{_sVPCId = a});
+
+-- | A @ChefConfiguration@ object that specifies whether to enable Berkshelf and the Berkshelf version. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a New Stack> .
+sChefConfiguration :: Lens' Stack (Maybe ChefConfiguration)
+sChefConfiguration = lens _sChefConfiguration (\ s a -> s{_sChefConfiguration = a});
+
+-- | The agent version. This parameter is set to @LATEST@ for auto-update. or a version number for a fixed agent version.
+sAgentVersion :: Lens' Stack (Maybe Text)
+sAgentVersion = lens _sAgentVersion (\ s a -> s{_sAgentVersion = a});
+
+-- | A default Amazon EC2 key pair for the stack's instances. You can override this value when you create or update an instance.
+sDefaultSSHKeyName :: Lens' Stack (Maybe Text)
+sDefaultSSHKeyName = lens _sDefaultSSHKeyName (\ s a -> s{_sDefaultSSHKeyName = a});
+
+-- | A JSON object that contains user-defined attributes to be added to the stack configuration and deployment attributes. You can use custom JSON to override the corresponding default stack configuration attribute values or to pass data to recipes. The string should be in the following format: @"{\"key1\": \"value1\", \"key2\": \"value2\",...}"@  For more information on custom JSON, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html Use Custom JSON to Modify the Stack Configuration Attributes> .
+sCustomJSON :: Lens' Stack (Maybe Text)
+sCustomJSON = lens _sCustomJSON (\ s a -> s{_sCustomJSON = a});
+
+-- | Undocumented member.
+sCustomCookbooksSource :: Lens' Stack (Maybe Source)
+sCustomCookbooksSource = lens _sCustomCookbooksSource (\ s a -> s{_sCustomCookbooksSource = a});
+
+-- | The stack's default Availability Zone. For more information, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints> .
+sDefaultAvailabilityZone :: Lens' Stack (Maybe Text)
+sDefaultAvailabilityZone = lens _sDefaultAvailabilityZone (\ s a -> s{_sDefaultAvailabilityZone = a});
+
+-- | The stack's attributes.
+sAttributes :: Lens' Stack (HashMap StackAttributesKeys Text)
+sAttributes = lens _sAttributes (\ s a -> s{_sAttributes = a}) . _Default . _Map;
+
+-- | The stack name.
+sName :: Lens' Stack (Maybe Text)
+sName = lens _sName (\ s a -> s{_sName = a});
+
+-- | The stack's default operating system.
+sDefaultOS :: Lens' Stack (Maybe Text)
+sDefaultOS = lens _sDefaultOS (\ s a -> s{_sDefaultOS = a});
+
+-- | Whether the stack automatically associates the AWS OpsWorks Stacks built-in security groups with the stack's layers.
+sUseOpsworksSecurityGroups :: Lens' Stack (Maybe Bool)
+sUseOpsworksSecurityGroups = lens _sUseOpsworksSecurityGroups (\ s a -> s{_sUseOpsworksSecurityGroups = a});
+
+-- | Whether the stack uses custom cookbooks.
+sUseCustomCookbooks :: Lens' Stack (Maybe Bool)
+sUseCustomCookbooks = lens _sUseCustomCookbooks (\ s a -> s{_sUseCustomCookbooks = a});
+
+-- | The default subnet ID; applicable only if the stack is running in a VPC.
+sDefaultSubnetId :: Lens' Stack (Maybe Text)
+sDefaultSubnetId = lens _sDefaultSubnetId (\ s a -> s{_sDefaultSubnetId = a});
+
+-- | The stack AWS region, such as "ap-northeast-2". For more information about AWS regions, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints> .
+sRegion :: Lens' Stack (Maybe Text)
+sRegion = lens _sRegion (\ s a -> s{_sRegion = a});
+
+-- | The configuration manager.
+sConfigurationManager :: Lens' Stack (Maybe StackConfigurationManager)
+sConfigurationManager = lens _sConfigurationManager (\ s a -> s{_sConfigurationManager = a});
+
+-- | The stack ID.
+sStackId :: Lens' Stack (Maybe Text)
+sStackId = lens _sStackId (\ s a -> s{_sStackId = a});
+
+-- | The stack host name theme, with spaces replaced by underscores.
+sHostnameTheme :: Lens' Stack (Maybe Text)
+sHostnameTheme = lens _sHostnameTheme (\ s a -> s{_sHostnameTheme = a});
+
+instance FromJSON Stack where
+        parseJSON
+          = withObject "Stack"
+              (\ x ->
+                 Stack' <$>
+                   (x .:? "DefaultInstanceProfileArn") <*>
+                     (x .:? "ServiceRoleArn")
+                     <*> (x .:? "DefaultRootDeviceType")
+                     <*> (x .:? "Arn")
+                     <*> (x .:? "CreatedAt")
+                     <*> (x .:? "VpcId")
+                     <*> (x .:? "ChefConfiguration")
+                     <*> (x .:? "AgentVersion")
+                     <*> (x .:? "DefaultSshKeyName")
+                     <*> (x .:? "CustomJson")
+                     <*> (x .:? "CustomCookbooksSource")
+                     <*> (x .:? "DefaultAvailabilityZone")
+                     <*> (x .:? "Attributes" .!= mempty)
+                     <*> (x .:? "Name")
+                     <*> (x .:? "DefaultOs")
+                     <*> (x .:? "UseOpsworksSecurityGroups")
+                     <*> (x .:? "UseCustomCookbooks")
+                     <*> (x .:? "DefaultSubnetId")
+                     <*> (x .:? "Region")
+                     <*> (x .:? "ConfigurationManager")
+                     <*> (x .:? "StackId")
+                     <*> (x .:? "HostnameTheme"))
+
+instance Hashable Stack where
+
+instance NFData Stack where
+
+-- | Describes the configuration manager.
+--
+--
+--
+-- /See:/ 'stackConfigurationManager' smart constructor.
+data StackConfigurationManager = StackConfigurationManager'
+  { _scmName    :: !(Maybe Text)
+  , _scmVersion :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'StackConfigurationManager' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'scmName' - The name. This parameter must be set to "Chef".
+--
+-- * 'scmVersion' - The Chef version. This parameter must be set to 12, 11.10, or 11.4 for Linux stacks, and to 12.2 for Windows stacks. The default value for Linux stacks is 11.4.
+stackConfigurationManager
+    :: StackConfigurationManager
+stackConfigurationManager =
+  StackConfigurationManager' {_scmName = Nothing, _scmVersion = Nothing}
+
+
+-- | The name. This parameter must be set to "Chef".
+scmName :: Lens' StackConfigurationManager (Maybe Text)
+scmName = lens _scmName (\ s a -> s{_scmName = a});
+
+-- | The Chef version. This parameter must be set to 12, 11.10, or 11.4 for Linux stacks, and to 12.2 for Windows stacks. The default value for Linux stacks is 11.4.
+scmVersion :: Lens' StackConfigurationManager (Maybe Text)
+scmVersion = lens _scmVersion (\ s a -> s{_scmVersion = a});
+
+instance FromJSON StackConfigurationManager where
+        parseJSON
+          = withObject "StackConfigurationManager"
+              (\ x ->
+                 StackConfigurationManager' <$>
+                   (x .:? "Name") <*> (x .:? "Version"))
+
+instance Hashable StackConfigurationManager where
+
+instance NFData StackConfigurationManager where
+
+instance ToJSON StackConfigurationManager where
+        toJSON StackConfigurationManager'{..}
+          = object
+              (catMaybes
+                 [("Name" .=) <$> _scmName,
+                  ("Version" .=) <$> _scmVersion])
+
+-- | Summarizes the number of layers, instances, and apps in a stack.
+--
+--
+--
+-- /See:/ 'stackSummary' smart constructor.
+data StackSummary = StackSummary'
+  { _ssARN            :: !(Maybe Text)
+  , _ssAppsCount      :: !(Maybe Int)
+  , _ssName           :: !(Maybe Text)
+  , _ssStackId        :: !(Maybe Text)
+  , _ssLayersCount    :: !(Maybe Int)
+  , _ssInstancesCount :: !(Maybe InstancesCount)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'StackSummary' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ssARN' - The stack's ARN.
+--
+-- * 'ssAppsCount' - The number of apps.
+--
+-- * 'ssName' - The stack name.
+--
+-- * 'ssStackId' - The stack ID.
+--
+-- * 'ssLayersCount' - The number of layers.
+--
+-- * 'ssInstancesCount' - An @InstancesCount@ object with the number of instances in each status.
+stackSummary
+    :: StackSummary
+stackSummary =
+  StackSummary'
+  { _ssARN = Nothing
+  , _ssAppsCount = Nothing
+  , _ssName = Nothing
+  , _ssStackId = Nothing
+  , _ssLayersCount = Nothing
+  , _ssInstancesCount = Nothing
+  }
+
+
+-- | The stack's ARN.
+ssARN :: Lens' StackSummary (Maybe Text)
+ssARN = lens _ssARN (\ s a -> s{_ssARN = a});
+
+-- | The number of apps.
+ssAppsCount :: Lens' StackSummary (Maybe Int)
+ssAppsCount = lens _ssAppsCount (\ s a -> s{_ssAppsCount = a});
+
+-- | The stack name.
+ssName :: Lens' StackSummary (Maybe Text)
+ssName = lens _ssName (\ s a -> s{_ssName = a});
+
+-- | The stack ID.
+ssStackId :: Lens' StackSummary (Maybe Text)
+ssStackId = lens _ssStackId (\ s a -> s{_ssStackId = a});
+
+-- | The number of layers.
+ssLayersCount :: Lens' StackSummary (Maybe Int)
+ssLayersCount = lens _ssLayersCount (\ s a -> s{_ssLayersCount = a});
+
+-- | An @InstancesCount@ object with the number of instances in each status.
+ssInstancesCount :: Lens' StackSummary (Maybe InstancesCount)
+ssInstancesCount = lens _ssInstancesCount (\ s a -> s{_ssInstancesCount = a});
+
+instance FromJSON StackSummary where
+        parseJSON
+          = withObject "StackSummary"
+              (\ x ->
+                 StackSummary' <$>
+                   (x .:? "Arn") <*> (x .:? "AppsCount") <*>
+                     (x .:? "Name")
+                     <*> (x .:? "StackId")
+                     <*> (x .:? "LayersCount")
+                     <*> (x .:? "InstancesCount"))
+
+instance Hashable StackSummary where
+
+instance NFData StackSummary where
+
+-- | Contains the data needed by RDP clients such as the Microsoft Remote Desktop Connection to log in to the instance.
+--
+--
+--
+-- /See:/ 'temporaryCredential' smart constructor.
+data TemporaryCredential = TemporaryCredential'
+  { _tcInstanceId        :: !(Maybe Text)
+  , _tcUsername          :: !(Maybe Text)
+  , _tcPassword          :: !(Maybe Text)
+  , _tcValidForInMinutes :: !(Maybe Int)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'TemporaryCredential' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tcInstanceId' - The instance's AWS OpsWorks Stacks ID.
+--
+-- * 'tcUsername' - The user name.
+--
+-- * 'tcPassword' - The password.
+--
+-- * 'tcValidForInMinutes' - The length of time (in minutes) that the grant is valid. When the grant expires, at the end of this period, the user will no longer be able to use the credentials to log in. If they are logged in at the time, they will be automatically logged out.
+temporaryCredential
+    :: TemporaryCredential
+temporaryCredential =
+  TemporaryCredential'
+  { _tcInstanceId = Nothing
+  , _tcUsername = Nothing
+  , _tcPassword = Nothing
+  , _tcValidForInMinutes = Nothing
+  }
+
+
+-- | The instance's AWS OpsWorks Stacks ID.
+tcInstanceId :: Lens' TemporaryCredential (Maybe Text)
+tcInstanceId = lens _tcInstanceId (\ s a -> s{_tcInstanceId = a});
+
+-- | The user name.
+tcUsername :: Lens' TemporaryCredential (Maybe Text)
+tcUsername = lens _tcUsername (\ s a -> s{_tcUsername = a});
+
+-- | The password.
+tcPassword :: Lens' TemporaryCredential (Maybe Text)
+tcPassword = lens _tcPassword (\ s a -> s{_tcPassword = a});
+
+-- | The length of time (in minutes) that the grant is valid. When the grant expires, at the end of this period, the user will no longer be able to use the credentials to log in. If they are logged in at the time, they will be automatically logged out.
+tcValidForInMinutes :: Lens' TemporaryCredential (Maybe Int)
+tcValidForInMinutes = lens _tcValidForInMinutes (\ s a -> s{_tcValidForInMinutes = a});
+
+instance FromJSON TemporaryCredential where
+        parseJSON
+          = withObject "TemporaryCredential"
+              (\ x ->
+                 TemporaryCredential' <$>
+                   (x .:? "InstanceId") <*> (x .:? "Username") <*>
+                     (x .:? "Password")
+                     <*> (x .:? "ValidForInMinutes"))
+
+instance Hashable TemporaryCredential where
+
+instance NFData TemporaryCredential where
+
+-- | Describes an instance's time-based auto scaling configuration.
+--
+--
+--
+-- /See:/ 'timeBasedAutoScalingConfiguration' smart constructor.
+data TimeBasedAutoScalingConfiguration = TimeBasedAutoScalingConfiguration'
+  { _tbascInstanceId          :: !(Maybe Text)
+  , _tbascAutoScalingSchedule :: !(Maybe WeeklyAutoScalingSchedule)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'TimeBasedAutoScalingConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tbascInstanceId' - The instance ID.
+--
+-- * 'tbascAutoScalingSchedule' - A @WeeklyAutoScalingSchedule@ object with the instance schedule.
+timeBasedAutoScalingConfiguration
+    :: TimeBasedAutoScalingConfiguration
+timeBasedAutoScalingConfiguration =
+  TimeBasedAutoScalingConfiguration'
+  {_tbascInstanceId = Nothing, _tbascAutoScalingSchedule = Nothing}
+
+
+-- | The instance ID.
+tbascInstanceId :: Lens' TimeBasedAutoScalingConfiguration (Maybe Text)
+tbascInstanceId = lens _tbascInstanceId (\ s a -> s{_tbascInstanceId = a});
+
+-- | A @WeeklyAutoScalingSchedule@ object with the instance schedule.
+tbascAutoScalingSchedule :: Lens' TimeBasedAutoScalingConfiguration (Maybe WeeklyAutoScalingSchedule)
+tbascAutoScalingSchedule = lens _tbascAutoScalingSchedule (\ s a -> s{_tbascAutoScalingSchedule = a});
+
+instance FromJSON TimeBasedAutoScalingConfiguration
+         where
+        parseJSON
+          = withObject "TimeBasedAutoScalingConfiguration"
+              (\ x ->
+                 TimeBasedAutoScalingConfiguration' <$>
+                   (x .:? "InstanceId") <*>
+                     (x .:? "AutoScalingSchedule"))
+
+instance Hashable TimeBasedAutoScalingConfiguration
+         where
+
+instance NFData TimeBasedAutoScalingConfiguration
+         where
+
+-- | Describes a user's SSH information.
+--
+--
+--
+-- /See:/ 'userProfile' smart constructor.
+data UserProfile = UserProfile'
+  { _upAllowSelfManagement :: !(Maybe Bool)
+  , _upSSHPublicKey        :: !(Maybe Text)
+  , _upSSHUsername         :: !(Maybe Text)
+  , _upIAMUserARN          :: !(Maybe Text)
+  , _upName                :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UserProfile' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'upAllowSelfManagement' - Whether users can specify their own SSH public key through the My Settings page. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/security-settingsshkey.html Managing User Permissions> .
+--
+-- * 'upSSHPublicKey' - The user's SSH public key.
+--
+-- * 'upSSHUsername' - The user's SSH user name.
+--
+-- * 'upIAMUserARN' - The user's IAM ARN.
+--
+-- * 'upName' - The user's name.
+userProfile
+    :: UserProfile
+userProfile =
+  UserProfile'
+  { _upAllowSelfManagement = Nothing
+  , _upSSHPublicKey = Nothing
+  , _upSSHUsername = Nothing
+  , _upIAMUserARN = Nothing
+  , _upName = Nothing
+  }
+
+
+-- | Whether users can specify their own SSH public key through the My Settings page. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/security-settingsshkey.html Managing User Permissions> .
+upAllowSelfManagement :: Lens' UserProfile (Maybe Bool)
+upAllowSelfManagement = lens _upAllowSelfManagement (\ s a -> s{_upAllowSelfManagement = a});
+
+-- | The user's SSH public key.
+upSSHPublicKey :: Lens' UserProfile (Maybe Text)
+upSSHPublicKey = lens _upSSHPublicKey (\ s a -> s{_upSSHPublicKey = a});
+
+-- | The user's SSH user name.
+upSSHUsername :: Lens' UserProfile (Maybe Text)
+upSSHUsername = lens _upSSHUsername (\ s a -> s{_upSSHUsername = a});
+
+-- | The user's IAM ARN.
+upIAMUserARN :: Lens' UserProfile (Maybe Text)
+upIAMUserARN = lens _upIAMUserARN (\ s a -> s{_upIAMUserARN = a});
+
+-- | The user's name.
+upName :: Lens' UserProfile (Maybe Text)
+upName = lens _upName (\ s a -> s{_upName = a});
+
+instance FromJSON UserProfile where
+        parseJSON
+          = withObject "UserProfile"
+              (\ x ->
+                 UserProfile' <$>
+                   (x .:? "AllowSelfManagement") <*>
+                     (x .:? "SshPublicKey")
+                     <*> (x .:? "SshUsername")
+                     <*> (x .:? "IamUserArn")
+                     <*> (x .:? "Name"))
+
+instance Hashable UserProfile where
+
+instance NFData UserProfile where
+
+-- | Describes an instance's Amazon EBS volume.
+--
+--
+--
+-- /See:/ 'volume' smart constructor.
+data Volume = Volume'
+  { _vInstanceId       :: !(Maybe Text)
+  , _vStatus           :: !(Maybe Text)
+  , _vSize             :: !(Maybe Int)
+  , _vIOPS             :: !(Maybe Int)
+  , _vDevice           :: !(Maybe Text)
+  , _vAvailabilityZone :: !(Maybe Text)
+  , _vName             :: !(Maybe Text)
+  , _vRAIdArrayId      :: !(Maybe Text)
+  , _vVolumeId         :: !(Maybe Text)
+  , _vRegion           :: !(Maybe Text)
+  , _vVolumeType       :: !(Maybe Text)
+  , _vEC2VolumeId      :: !(Maybe Text)
+  , _vMountPoint       :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Volume' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vInstanceId' - The instance ID.
+--
+-- * 'vStatus' - The value returned by <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeVolumes.html DescribeVolumes> .
+--
+-- * 'vSize' - The volume size.
+--
+-- * 'vIOPS' - For PIOPS volumes, the IOPS per disk.
+--
+-- * 'vDevice' - The device name.
+--
+-- * 'vAvailabilityZone' - The volume Availability Zone. For more information, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints> .
+--
+-- * 'vName' - The volume name.
+--
+-- * 'vRAIdArrayId' - The RAID array ID.
+--
+-- * 'vVolumeId' - The volume ID.
+--
+-- * 'vRegion' - The AWS region. For more information about AWS regions, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints> .
+--
+-- * 'vVolumeType' - The volume type, standard or PIOPS.
+--
+-- * 'vEC2VolumeId' - The Amazon EC2 volume ID.
+--
+-- * 'vMountPoint' - The volume mount point. For example, "/mnt/disk1".
+volume
+    :: Volume
+volume =
+  Volume'
+  { _vInstanceId = Nothing
+  , _vStatus = Nothing
+  , _vSize = Nothing
+  , _vIOPS = Nothing
+  , _vDevice = Nothing
+  , _vAvailabilityZone = Nothing
+  , _vName = Nothing
+  , _vRAIdArrayId = Nothing
+  , _vVolumeId = Nothing
+  , _vRegion = Nothing
+  , _vVolumeType = Nothing
+  , _vEC2VolumeId = Nothing
+  , _vMountPoint = Nothing
+  }
+
+
+-- | The instance ID.
+vInstanceId :: Lens' Volume (Maybe Text)
+vInstanceId = lens _vInstanceId (\ s a -> s{_vInstanceId = a});
+
+-- | The value returned by <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeVolumes.html DescribeVolumes> .
+vStatus :: Lens' Volume (Maybe Text)
+vStatus = lens _vStatus (\ s a -> s{_vStatus = a});
+
+-- | The volume size.
+vSize :: Lens' Volume (Maybe Int)
+vSize = lens _vSize (\ s a -> s{_vSize = a});
+
+-- | For PIOPS volumes, the IOPS per disk.
+vIOPS :: Lens' Volume (Maybe Int)
+vIOPS = lens _vIOPS (\ s a -> s{_vIOPS = a});
+
+-- | The device name.
+vDevice :: Lens' Volume (Maybe Text)
+vDevice = lens _vDevice (\ s a -> s{_vDevice = a});
+
+-- | The volume Availability Zone. For more information, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints> .
+vAvailabilityZone :: Lens' Volume (Maybe Text)
+vAvailabilityZone = lens _vAvailabilityZone (\ s a -> s{_vAvailabilityZone = a});
+
+-- | The volume name.
+vName :: Lens' Volume (Maybe Text)
+vName = lens _vName (\ s a -> s{_vName = a});
+
+-- | The RAID array ID.
+vRAIdArrayId :: Lens' Volume (Maybe Text)
+vRAIdArrayId = lens _vRAIdArrayId (\ s a -> s{_vRAIdArrayId = a});
+
+-- | The volume ID.
+vVolumeId :: Lens' Volume (Maybe Text)
+vVolumeId = lens _vVolumeId (\ s a -> s{_vVolumeId = a});
+
+-- | The AWS region. For more information about AWS regions, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints> .
+vRegion :: Lens' Volume (Maybe Text)
+vRegion = lens _vRegion (\ s a -> s{_vRegion = a});
+
+-- | The volume type, standard or PIOPS.
+vVolumeType :: Lens' Volume (Maybe Text)
+vVolumeType = lens _vVolumeType (\ s a -> s{_vVolumeType = a});
+
+-- | The Amazon EC2 volume ID.
+vEC2VolumeId :: Lens' Volume (Maybe Text)
+vEC2VolumeId = lens _vEC2VolumeId (\ s a -> s{_vEC2VolumeId = a});
+
+-- | The volume mount point. For example, "/mnt/disk1".
+vMountPoint :: Lens' Volume (Maybe Text)
+vMountPoint = lens _vMountPoint (\ s a -> s{_vMountPoint = a});
+
+instance FromJSON Volume where
+        parseJSON
+          = withObject "Volume"
+              (\ x ->
+                 Volume' <$>
+                   (x .:? "InstanceId") <*> (x .:? "Status") <*>
+                     (x .:? "Size")
+                     <*> (x .:? "Iops")
+                     <*> (x .:? "Device")
+                     <*> (x .:? "AvailabilityZone")
+                     <*> (x .:? "Name")
+                     <*> (x .:? "RaidArrayId")
+                     <*> (x .:? "VolumeId")
+                     <*> (x .:? "Region")
+                     <*> (x .:? "VolumeType")
+                     <*> (x .:? "Ec2VolumeId")
+                     <*> (x .:? "MountPoint"))
+
+instance Hashable Volume where
+
+instance NFData Volume where
+
+-- | Describes an Amazon EBS volume configuration.
+--
+--
+--
+-- /See:/ 'volumeConfiguration' smart constructor.
+data VolumeConfiguration = VolumeConfiguration'
+  { _vcIOPS          :: !(Maybe Int)
+  , _vcRAIdLevel     :: !(Maybe Int)
+  , _vcVolumeType    :: !(Maybe Text)
+  , _vcMountPoint    :: !Text
+  , _vcNumberOfDisks :: !Int
+  , _vcSize          :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'VolumeConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vcIOPS' - For PIOPS volumes, the IOPS per disk.
+--
+-- * 'vcRAIdLevel' - The volume <http://en.wikipedia.org/wiki/Standard_RAID_levels RAID level> .
+--
+-- * 'vcVolumeType' - The volume type:     * @standard@ - Magnetic     * @io1@ - Provisioned IOPS (SSD)     * @gp2@ - General Purpose (SSD)
+--
+-- * 'vcMountPoint' - The volume mount point. For example "/dev/sdh".
+--
+-- * 'vcNumberOfDisks' - The number of disks in the volume.
+--
+-- * 'vcSize' - The volume size.
+volumeConfiguration
+    :: Text -- ^ 'vcMountPoint'
+    -> Int -- ^ 'vcNumberOfDisks'
+    -> Int -- ^ 'vcSize'
+    -> VolumeConfiguration
+volumeConfiguration pMountPoint_ pNumberOfDisks_ pSize_ =
+  VolumeConfiguration'
+  { _vcIOPS = Nothing
+  , _vcRAIdLevel = Nothing
+  , _vcVolumeType = Nothing
+  , _vcMountPoint = pMountPoint_
+  , _vcNumberOfDisks = pNumberOfDisks_
+  , _vcSize = pSize_
+  }
+
+
+-- | For PIOPS volumes, the IOPS per disk.
+vcIOPS :: Lens' VolumeConfiguration (Maybe Int)
+vcIOPS = lens _vcIOPS (\ s a -> s{_vcIOPS = a});
+
+-- | The volume <http://en.wikipedia.org/wiki/Standard_RAID_levels RAID level> .
+vcRAIdLevel :: Lens' VolumeConfiguration (Maybe Int)
+vcRAIdLevel = lens _vcRAIdLevel (\ s a -> s{_vcRAIdLevel = a});
+
+-- | The volume type:     * @standard@ - Magnetic     * @io1@ - Provisioned IOPS (SSD)     * @gp2@ - General Purpose (SSD)
+vcVolumeType :: Lens' VolumeConfiguration (Maybe Text)
+vcVolumeType = lens _vcVolumeType (\ s a -> s{_vcVolumeType = a});
+
+-- | The volume mount point. For example "/dev/sdh".
+vcMountPoint :: Lens' VolumeConfiguration Text
+vcMountPoint = lens _vcMountPoint (\ s a -> s{_vcMountPoint = a});
+
+-- | The number of disks in the volume.
+vcNumberOfDisks :: Lens' VolumeConfiguration Int
+vcNumberOfDisks = lens _vcNumberOfDisks (\ s a -> s{_vcNumberOfDisks = a});
+
+-- | The volume size.
+vcSize :: Lens' VolumeConfiguration Int
+vcSize = lens _vcSize (\ s a -> s{_vcSize = a});
+
+instance FromJSON VolumeConfiguration where
+        parseJSON
+          = withObject "VolumeConfiguration"
+              (\ x ->
+                 VolumeConfiguration' <$>
+                   (x .:? "Iops") <*> (x .:? "RaidLevel") <*>
+                     (x .:? "VolumeType")
+                     <*> (x .: "MountPoint")
+                     <*> (x .: "NumberOfDisks")
+                     <*> (x .: "Size"))
+
+instance Hashable VolumeConfiguration where
+
+instance NFData VolumeConfiguration where
+
+instance ToJSON VolumeConfiguration where
+        toJSON VolumeConfiguration'{..}
+          = object
+              (catMaybes
+                 [("Iops" .=) <$> _vcIOPS,
+                  ("RaidLevel" .=) <$> _vcRAIdLevel,
+                  ("VolumeType" .=) <$> _vcVolumeType,
+                  Just ("MountPoint" .= _vcMountPoint),
+                  Just ("NumberOfDisks" .= _vcNumberOfDisks),
+                  Just ("Size" .= _vcSize)])
+
+-- | Describes a time-based instance's auto scaling schedule. The schedule consists of a set of key-value pairs.
+--
+--
+--     * The key is the time period (a UTC hour) and must be an integer from 0 - 23.
+--
+--     * The value indicates whether the instance should be online or offline for the specified period, and must be set to "on" or "off"
+--
+--
+--
+-- The default setting for all time periods is off, so you use the following parameters primarily to specify the online periods. You don't have to explicitly specify offline periods unless you want to change an online period to an offline period.
+--
+-- The following example specifies that the instance should be online for four hours, from UTC 1200 - 1600. It will be off for the remainder of the day.
+--
+-- @{ "12":"on", "13":"on", "14":"on", "15":"on" } @
+--
+--
+-- /See:/ 'weeklyAutoScalingSchedule' smart constructor.
+data WeeklyAutoScalingSchedule = WeeklyAutoScalingSchedule'
+  { _wassThursday  :: !(Maybe (Map Text Text))
+  , _wassWednesday :: !(Maybe (Map Text Text))
+  , _wassSaturday  :: !(Maybe (Map Text Text))
+  , _wassMonday    :: !(Maybe (Map Text Text))
+  , _wassFriday    :: !(Maybe (Map Text Text))
+  , _wassSunday    :: !(Maybe (Map Text Text))
+  , _wassTuesday   :: !(Maybe (Map Text Text))
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'WeeklyAutoScalingSchedule' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'wassThursday' - The schedule for Thursday.
+--
+-- * 'wassWednesday' - The schedule for Wednesday.
+--
+-- * 'wassSaturday' - The schedule for Saturday.
+--
+-- * 'wassMonday' - The schedule for Monday.
+--
+-- * 'wassFriday' - The schedule for Friday.
+--
+-- * 'wassSunday' - The schedule for Sunday.
+--
+-- * 'wassTuesday' - The schedule for Tuesday.
+weeklyAutoScalingSchedule
+    :: WeeklyAutoScalingSchedule
+weeklyAutoScalingSchedule =
+  WeeklyAutoScalingSchedule'
+  { _wassThursday = Nothing
+  , _wassWednesday = Nothing
+  , _wassSaturday = Nothing
+  , _wassMonday = Nothing
+  , _wassFriday = Nothing
+  , _wassSunday = Nothing
+  , _wassTuesday = Nothing
+  }
+
+
+-- | The schedule for Thursday.
+wassThursday :: Lens' WeeklyAutoScalingSchedule (HashMap Text Text)
+wassThursday = lens _wassThursday (\ s a -> s{_wassThursday = a}) . _Default . _Map;
+
+-- | The schedule for Wednesday.
+wassWednesday :: Lens' WeeklyAutoScalingSchedule (HashMap Text Text)
+wassWednesday = lens _wassWednesday (\ s a -> s{_wassWednesday = a}) . _Default . _Map;
+
+-- | The schedule for Saturday.
+wassSaturday :: Lens' WeeklyAutoScalingSchedule (HashMap Text Text)
+wassSaturday = lens _wassSaturday (\ s a -> s{_wassSaturday = a}) . _Default . _Map;
+
+-- | The schedule for Monday.
+wassMonday :: Lens' WeeklyAutoScalingSchedule (HashMap Text Text)
+wassMonday = lens _wassMonday (\ s a -> s{_wassMonday = a}) . _Default . _Map;
+
+-- | The schedule for Friday.
+wassFriday :: Lens' WeeklyAutoScalingSchedule (HashMap Text Text)
+wassFriday = lens _wassFriday (\ s a -> s{_wassFriday = a}) . _Default . _Map;
+
+-- | The schedule for Sunday.
+wassSunday :: Lens' WeeklyAutoScalingSchedule (HashMap Text Text)
+wassSunday = lens _wassSunday (\ s a -> s{_wassSunday = a}) . _Default . _Map;
+
+-- | The schedule for Tuesday.
+wassTuesday :: Lens' WeeklyAutoScalingSchedule (HashMap Text Text)
+wassTuesday = lens _wassTuesday (\ s a -> s{_wassTuesday = a}) . _Default . _Map;
+
+instance FromJSON WeeklyAutoScalingSchedule where
+        parseJSON
+          = withObject "WeeklyAutoScalingSchedule"
+              (\ x ->
+                 WeeklyAutoScalingSchedule' <$>
+                   (x .:? "Thursday" .!= mempty) <*>
+                     (x .:? "Wednesday" .!= mempty)
+                     <*> (x .:? "Saturday" .!= mempty)
+                     <*> (x .:? "Monday" .!= mempty)
+                     <*> (x .:? "Friday" .!= mempty)
+                     <*> (x .:? "Sunday" .!= mempty)
+                     <*> (x .:? "Tuesday" .!= mempty))
+
+instance Hashable WeeklyAutoScalingSchedule where
+
+instance NFData WeeklyAutoScalingSchedule where
 
 instance ToJSON WeeklyAutoScalingSchedule where
         toJSON WeeklyAutoScalingSchedule'{..}
diff --git a/gen/Network/AWS/OpsWorks/Types/Sum.hs b/gen/Network/AWS/OpsWorks/Types/Sum.hs
--- a/gen/Network/AWS/OpsWorks/Types/Sum.hs
+++ b/gen/Network/AWS/OpsWorks/Types/Sum.hs
@@ -9,23 +9,24 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.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.OpsWorks.Types.Sum where
 
-import           Network.AWS.Prelude
+import Network.AWS.Prelude
 
 data AppAttributesKeys
-    = AWSFlowRubySettings
-    | AutoBundleOnDeploy
-    | DocumentRoot
-    | RailsEnv
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = AWSFlowRubySettings
+  | AutoBundleOnDeploy
+  | DocumentRoot
+  | RailsEnv
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText AppAttributesKeys where
     parser = takeLowerText >>= \case
         "awsflowrubysettings" -> pure AWSFlowRubySettings
@@ -55,15 +56,16 @@
     parseJSON = parseJSONText "AppAttributesKeys"
 
 data AppType
-    = ATAWSFlowRuby
-    | ATJava
-    | ATNodejs
-    | ATOther
-    | ATPHP
-    | ATRails
-    | ATStatic
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = ATAWSFlowRuby
+  | ATJava
+  | ATNodejs
+  | ATOther
+  | ATPHP
+  | ATRails
+  | ATStatic
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText AppType where
     parser = takeLowerText >>= \case
         "aws-flow-ruby" -> pure ATAWSFlowRuby
@@ -99,10 +101,11 @@
     parseJSON = parseJSONText "AppType"
 
 data Architecture
-    = I386
-    | X86_64
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = I386
+  | X86_64
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText Architecture where
     parser = takeLowerText >>= \case
         "i386" -> pure I386
@@ -128,10 +131,11 @@
     parseJSON = parseJSONText "Architecture"
 
 data AutoScalingType
-    = Load
-    | Timer
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = Load
+  | Timer
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText AutoScalingType where
     parser = takeLowerText >>= \case
         "load" -> pure Load
@@ -156,21 +160,391 @@
 instance FromJSON AutoScalingType where
     parseJSON = parseJSONText "AutoScalingType"
 
+-- | Specifies the encoding of the log file so that the file can be read correctly. The default is @utf_8@ . Encodings supported by Python @codecs.decode()@ can be used here.
+--
+--
+data CloudWatchLogsEncoding
+  = Ascii
+  | BIG5
+  | Big5hkscs
+  | CP037
+  | CP1006
+  | CP1026
+  | CP1140
+  | CP1250
+  | CP1251
+  | CP1252
+  | CP1253
+  | CP1254
+  | CP1255
+  | CP1256
+  | CP1257
+  | CP1258
+  | CP424
+  | CP437
+  | CP500
+  | CP720
+  | CP737
+  | CP775
+  | CP850
+  | CP852
+  | CP855
+  | CP856
+  | CP857
+  | CP858
+  | CP860
+  | CP861
+  | CP862
+  | CP863
+  | CP864
+  | CP865
+  | CP866
+  | CP869
+  | CP874
+  | CP875
+  | CP932
+  | CP949
+  | CP950
+  | EucJISX0213
+  | EucJis2004
+  | EucJp
+  | EucKr
+  | GB18030
+  | GB2312
+  | Gbk
+  | HZ
+  | ISO2022Jp
+  | ISO2022Jp1
+  | ISO2022Jp2
+  | ISO2022Jp2004
+  | ISO2022Jp3
+  | ISO2022JpExt
+  | ISO2022Kr
+  | ISO885910
+  | ISO885913
+  | ISO885914
+  | ISO885915
+  | ISO885916
+  | ISO88592
+  | ISO88593
+  | ISO88594
+  | ISO88595
+  | ISO88596
+  | ISO88597
+  | ISO88598
+  | ISO88599
+  | Johab
+  | KOI8r
+  | KOI8u
+  | Latin1
+  | MACCyrillic
+  | MACGreek
+  | MACIceland
+  | MACLATIN2
+  | MACRoman
+  | MACTurkish
+  | PTCP154
+  | ShiftJISX0213
+  | ShiftJis
+  | ShiftJis2004
+  | Utf16
+  | Utf16Be
+  | Utf16Le
+  | Utf32
+  | Utf32Be
+  | Utf32Le
+  | Utf7
+  | Utf8
+  | Utf8Sig
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
+
+instance FromText CloudWatchLogsEncoding where
+    parser = takeLowerText >>= \case
+        "ascii" -> pure Ascii
+        "big5" -> pure BIG5
+        "big5hkscs" -> pure Big5hkscs
+        "cp037" -> pure CP037
+        "cp1006" -> pure CP1006
+        "cp1026" -> pure CP1026
+        "cp1140" -> pure CP1140
+        "cp1250" -> pure CP1250
+        "cp1251" -> pure CP1251
+        "cp1252" -> pure CP1252
+        "cp1253" -> pure CP1253
+        "cp1254" -> pure CP1254
+        "cp1255" -> pure CP1255
+        "cp1256" -> pure CP1256
+        "cp1257" -> pure CP1257
+        "cp1258" -> pure CP1258
+        "cp424" -> pure CP424
+        "cp437" -> pure CP437
+        "cp500" -> pure CP500
+        "cp720" -> pure CP720
+        "cp737" -> pure CP737
+        "cp775" -> pure CP775
+        "cp850" -> pure CP850
+        "cp852" -> pure CP852
+        "cp855" -> pure CP855
+        "cp856" -> pure CP856
+        "cp857" -> pure CP857
+        "cp858" -> pure CP858
+        "cp860" -> pure CP860
+        "cp861" -> pure CP861
+        "cp862" -> pure CP862
+        "cp863" -> pure CP863
+        "cp864" -> pure CP864
+        "cp865" -> pure CP865
+        "cp866" -> pure CP866
+        "cp869" -> pure CP869
+        "cp874" -> pure CP874
+        "cp875" -> pure CP875
+        "cp932" -> pure CP932
+        "cp949" -> pure CP949
+        "cp950" -> pure CP950
+        "euc_jisx0213" -> pure EucJISX0213
+        "euc_jis_2004" -> pure EucJis2004
+        "euc_jp" -> pure EucJp
+        "euc_kr" -> pure EucKr
+        "gb18030" -> pure GB18030
+        "gb2312" -> pure GB2312
+        "gbk" -> pure Gbk
+        "hz" -> pure HZ
+        "iso2022_jp" -> pure ISO2022Jp
+        "iso2022_jp_1" -> pure ISO2022Jp1
+        "iso2022_jp_2" -> pure ISO2022Jp2
+        "iso2022_jp_2004" -> pure ISO2022Jp2004
+        "iso2022_jp_3" -> pure ISO2022Jp3
+        "iso2022_jp_ext" -> pure ISO2022JpExt
+        "iso2022_kr" -> pure ISO2022Kr
+        "iso8859_10" -> pure ISO885910
+        "iso8859_13" -> pure ISO885913
+        "iso8859_14" -> pure ISO885914
+        "iso8859_15" -> pure ISO885915
+        "iso8859_16" -> pure ISO885916
+        "iso8859_2" -> pure ISO88592
+        "iso8859_3" -> pure ISO88593
+        "iso8859_4" -> pure ISO88594
+        "iso8859_5" -> pure ISO88595
+        "iso8859_6" -> pure ISO88596
+        "iso8859_7" -> pure ISO88597
+        "iso8859_8" -> pure ISO88598
+        "iso8859_9" -> pure ISO88599
+        "johab" -> pure Johab
+        "koi8_r" -> pure KOI8r
+        "koi8_u" -> pure KOI8u
+        "latin_1" -> pure Latin1
+        "mac_cyrillic" -> pure MACCyrillic
+        "mac_greek" -> pure MACGreek
+        "mac_iceland" -> pure MACIceland
+        "mac_latin2" -> pure MACLATIN2
+        "mac_roman" -> pure MACRoman
+        "mac_turkish" -> pure MACTurkish
+        "ptcp154" -> pure PTCP154
+        "shift_jisx0213" -> pure ShiftJISX0213
+        "shift_jis" -> pure ShiftJis
+        "shift_jis_2004" -> pure ShiftJis2004
+        "utf_16" -> pure Utf16
+        "utf_16_be" -> pure Utf16Be
+        "utf_16_le" -> pure Utf16Le
+        "utf_32" -> pure Utf32
+        "utf_32_be" -> pure Utf32Be
+        "utf_32_le" -> pure Utf32Le
+        "utf_7" -> pure Utf7
+        "utf_8" -> pure Utf8
+        "utf_8_sig" -> pure Utf8Sig
+        e -> fromTextError $ "Failure parsing CloudWatchLogsEncoding from value: '" <> e
+           <> "'. Accepted values: ascii, big5, big5hkscs, cp037, cp1006, cp1026, cp1140, cp1250, cp1251, cp1252, cp1253, cp1254, cp1255, cp1256, cp1257, cp1258, cp424, cp437, cp500, cp720, cp737, cp775, cp850, cp852, cp855, cp856, cp857, cp858, cp860, cp861, cp862, cp863, cp864, cp865, cp866, cp869, cp874, cp875, cp932, cp949, cp950, euc_jisx0213, euc_jis_2004, euc_jp, euc_kr, gb18030, gb2312, gbk, hz, iso2022_jp, iso2022_jp_1, iso2022_jp_2, iso2022_jp_2004, iso2022_jp_3, iso2022_jp_ext, iso2022_kr, iso8859_10, iso8859_13, iso8859_14, iso8859_15, iso8859_16, iso8859_2, iso8859_3, iso8859_4, iso8859_5, iso8859_6, iso8859_7, iso8859_8, iso8859_9, johab, koi8_r, koi8_u, latin_1, mac_cyrillic, mac_greek, mac_iceland, mac_latin2, mac_roman, mac_turkish, ptcp154, shift_jisx0213, shift_jis, shift_jis_2004, utf_16, utf_16_be, utf_16_le, utf_32, utf_32_be, utf_32_le, utf_7, utf_8, utf_8_sig"
+
+instance ToText CloudWatchLogsEncoding where
+    toText = \case
+        Ascii -> "ascii"
+        BIG5 -> "big5"
+        Big5hkscs -> "big5hkscs"
+        CP037 -> "cp037"
+        CP1006 -> "cp1006"
+        CP1026 -> "cp1026"
+        CP1140 -> "cp1140"
+        CP1250 -> "cp1250"
+        CP1251 -> "cp1251"
+        CP1252 -> "cp1252"
+        CP1253 -> "cp1253"
+        CP1254 -> "cp1254"
+        CP1255 -> "cp1255"
+        CP1256 -> "cp1256"
+        CP1257 -> "cp1257"
+        CP1258 -> "cp1258"
+        CP424 -> "cp424"
+        CP437 -> "cp437"
+        CP500 -> "cp500"
+        CP720 -> "cp720"
+        CP737 -> "cp737"
+        CP775 -> "cp775"
+        CP850 -> "cp850"
+        CP852 -> "cp852"
+        CP855 -> "cp855"
+        CP856 -> "cp856"
+        CP857 -> "cp857"
+        CP858 -> "cp858"
+        CP860 -> "cp860"
+        CP861 -> "cp861"
+        CP862 -> "cp862"
+        CP863 -> "cp863"
+        CP864 -> "cp864"
+        CP865 -> "cp865"
+        CP866 -> "cp866"
+        CP869 -> "cp869"
+        CP874 -> "cp874"
+        CP875 -> "cp875"
+        CP932 -> "cp932"
+        CP949 -> "cp949"
+        CP950 -> "cp950"
+        EucJISX0213 -> "euc_jisx0213"
+        EucJis2004 -> "euc_jis_2004"
+        EucJp -> "euc_jp"
+        EucKr -> "euc_kr"
+        GB18030 -> "gb18030"
+        GB2312 -> "gb2312"
+        Gbk -> "gbk"
+        HZ -> "hz"
+        ISO2022Jp -> "iso2022_jp"
+        ISO2022Jp1 -> "iso2022_jp_1"
+        ISO2022Jp2 -> "iso2022_jp_2"
+        ISO2022Jp2004 -> "iso2022_jp_2004"
+        ISO2022Jp3 -> "iso2022_jp_3"
+        ISO2022JpExt -> "iso2022_jp_ext"
+        ISO2022Kr -> "iso2022_kr"
+        ISO885910 -> "iso8859_10"
+        ISO885913 -> "iso8859_13"
+        ISO885914 -> "iso8859_14"
+        ISO885915 -> "iso8859_15"
+        ISO885916 -> "iso8859_16"
+        ISO88592 -> "iso8859_2"
+        ISO88593 -> "iso8859_3"
+        ISO88594 -> "iso8859_4"
+        ISO88595 -> "iso8859_5"
+        ISO88596 -> "iso8859_6"
+        ISO88597 -> "iso8859_7"
+        ISO88598 -> "iso8859_8"
+        ISO88599 -> "iso8859_9"
+        Johab -> "johab"
+        KOI8r -> "koi8_r"
+        KOI8u -> "koi8_u"
+        Latin1 -> "latin_1"
+        MACCyrillic -> "mac_cyrillic"
+        MACGreek -> "mac_greek"
+        MACIceland -> "mac_iceland"
+        MACLATIN2 -> "mac_latin2"
+        MACRoman -> "mac_roman"
+        MACTurkish -> "mac_turkish"
+        PTCP154 -> "ptcp154"
+        ShiftJISX0213 -> "shift_jisx0213"
+        ShiftJis -> "shift_jis"
+        ShiftJis2004 -> "shift_jis_2004"
+        Utf16 -> "utf_16"
+        Utf16Be -> "utf_16_be"
+        Utf16Le -> "utf_16_le"
+        Utf32 -> "utf_32"
+        Utf32Be -> "utf_32_be"
+        Utf32Le -> "utf_32_le"
+        Utf7 -> "utf_7"
+        Utf8 -> "utf_8"
+        Utf8Sig -> "utf_8_sig"
+
+instance Hashable     CloudWatchLogsEncoding
+instance NFData       CloudWatchLogsEncoding
+instance ToByteString CloudWatchLogsEncoding
+instance ToQuery      CloudWatchLogsEncoding
+instance ToHeader     CloudWatchLogsEncoding
+
+instance ToJSON CloudWatchLogsEncoding where
+    toJSON = toJSONText
+
+instance FromJSON CloudWatchLogsEncoding where
+    parseJSON = parseJSONText "CloudWatchLogsEncoding"
+
+-- | Specifies where to start to read data (start_of_file or end_of_file). The default is start_of_file. It's only used if there is no state persisted for that log stream.
+--
+--
+data CloudWatchLogsInitialPosition
+  = EndOfFile
+  | StartOfFile
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
+
+instance FromText CloudWatchLogsInitialPosition where
+    parser = takeLowerText >>= \case
+        "end_of_file" -> pure EndOfFile
+        "start_of_file" -> pure StartOfFile
+        e -> fromTextError $ "Failure parsing CloudWatchLogsInitialPosition from value: '" <> e
+           <> "'. Accepted values: end_of_file, start_of_file"
+
+instance ToText CloudWatchLogsInitialPosition where
+    toText = \case
+        EndOfFile -> "end_of_file"
+        StartOfFile -> "start_of_file"
+
+instance Hashable     CloudWatchLogsInitialPosition
+instance NFData       CloudWatchLogsInitialPosition
+instance ToByteString CloudWatchLogsInitialPosition
+instance ToQuery      CloudWatchLogsInitialPosition
+instance ToHeader     CloudWatchLogsInitialPosition
+
+instance ToJSON CloudWatchLogsInitialPosition where
+    toJSON = toJSONText
+
+instance FromJSON CloudWatchLogsInitialPosition where
+    parseJSON = parseJSONText "CloudWatchLogsInitialPosition"
+
+-- | The preferred time zone for logs streamed to CloudWatch Logs. Valid values are @LOCAL@ and @UTC@ , for Coordinated Universal Time.
+--
+--
+data CloudWatchLogsTimeZone
+  = Local
+  | Utc
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
+
+instance FromText CloudWatchLogsTimeZone where
+    parser = takeLowerText >>= \case
+        "local" -> pure Local
+        "utc" -> pure Utc
+        e -> fromTextError $ "Failure parsing CloudWatchLogsTimeZone from value: '" <> e
+           <> "'. Accepted values: local, utc"
+
+instance ToText CloudWatchLogsTimeZone where
+    toText = \case
+        Local -> "LOCAL"
+        Utc -> "UTC"
+
+instance Hashable     CloudWatchLogsTimeZone
+instance NFData       CloudWatchLogsTimeZone
+instance ToByteString CloudWatchLogsTimeZone
+instance ToQuery      CloudWatchLogsTimeZone
+instance ToHeader     CloudWatchLogsTimeZone
+
+instance ToJSON CloudWatchLogsTimeZone where
+    toJSON = toJSONText
+
+instance FromJSON CloudWatchLogsTimeZone where
+    parseJSON = parseJSONText "CloudWatchLogsTimeZone"
+
 data DeploymentCommandName
-    = Configure
-    | Deploy
-    | ExecuteRecipes
-    | InstallDependencies
-    | Restart
-    | Rollback
-    | Setup
-    | Start
-    | Stop
-    | Undeploy
-    | UpdateCustomCookbooks
-    | UpdateDependencies
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = Configure
+  | Deploy
+  | ExecuteRecipes
+  | InstallDependencies
+  | Restart
+  | Rollback
+  | Setup
+  | Start
+  | Stop
+  | Undeploy
+  | UpdateCustomCookbooks
+  | UpdateDependencies
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText DeploymentCommandName where
     parser = takeLowerText >>= \case
         "configure" -> pure Configure
@@ -216,33 +590,34 @@
     parseJSON = parseJSONText "DeploymentCommandName"
 
 data LayerAttributesKeys
-    = BundlerVersion
-    | EcsClusterARN
-    | EnableHaproxyStats
-    | GangliaPassword
-    | GangliaURL
-    | GangliaUser
-    | HaproxyHealthCheckMethod
-    | HaproxyHealthCheckURL
-    | HaproxyStatsPassword
-    | HaproxyStatsURL
-    | HaproxyStatsUser
-    | JVM
-    | JVMOptions
-    | JVMVersion
-    | JavaAppServer
-    | JavaAppServerVersion
-    | ManageBundler
-    | MemcachedMemory
-    | MysqlRootPassword
-    | MysqlRootPasswordUbiquitous
-    | NodejsVersion
-    | PassengerVersion
-    | RailsStack
-    | RubyVersion
-    | RubygemsVersion
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = BundlerVersion
+  | EcsClusterARN
+  | EnableHaproxyStats
+  | GangliaPassword
+  | GangliaURL
+  | GangliaUser
+  | HaproxyHealthCheckMethod
+  | HaproxyHealthCheckURL
+  | HaproxyStatsPassword
+  | HaproxyStatsURL
+  | HaproxyStatsUser
+  | JVM
+  | JVMOptions
+  | JVMVersion
+  | JavaAppServer
+  | JavaAppServerVersion
+  | ManageBundler
+  | MemcachedMemory
+  | MysqlRootPassword
+  | MysqlRootPasswordUbiquitous
+  | NodejsVersion
+  | PassengerVersion
+  | RailsStack
+  | RubyVersion
+  | RubygemsVersion
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText LayerAttributesKeys where
     parser = takeLowerText >>= \case
         "bundlerversion" -> pure BundlerVersion
@@ -314,20 +689,21 @@
     parseJSON = parseJSONText "LayerAttributesKeys"
 
 data LayerType
-    = AWSFlowRuby
-    | Custom
-    | DBMaster
-    | EcsCluster
-    | JavaApp
-    | LB
-    | Memcached
-    | MonitoringMaster
-    | NodejsApp
-    | PHPApp
-    | RailsApp
-    | Web
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = AWSFlowRuby
+  | Custom
+  | DBMaster
+  | EcsCluster
+  | JavaApp
+  | LB
+  | Memcached
+  | MonitoringMaster
+  | NodejsApp
+  | PHPApp
+  | RailsApp
+  | Web
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText LayerType where
     parser = takeLowerText >>= \case
         "aws-flow-ruby" -> pure AWSFlowRuby
@@ -373,10 +749,11 @@
     parseJSON = parseJSONText "LayerType"
 
 data RootDeviceType
-    = EBS
-    | InstanceStore
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = EBS
+  | InstanceStore
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText RootDeviceType where
     parser = takeLowerText >>= \case
         "ebs" -> pure EBS
@@ -402,12 +779,13 @@
     parseJSON = parseJSONText "RootDeviceType"
 
 data SourceType
-    = Archive
-    | Git
-    | S3
-    | SVN
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = Archive
+  | Git
+  | S3
+  | SVN
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText SourceType where
     parser = takeLowerText >>= \case
         "archive" -> pure Archive
@@ -437,9 +815,10 @@
     parseJSON = parseJSONText "SourceType"
 
 data StackAttributesKeys =
-    Color
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  Color
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText StackAttributesKeys where
     parser = takeLowerText >>= \case
         "color" -> pure Color
@@ -463,10 +842,11 @@
     parseJSON = parseJSONText "StackAttributesKeys"
 
 data VirtualizationType
-    = HVM
-    | Paravirtual
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = HVM
+  | Paravirtual
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText VirtualizationType where
     parser = takeLowerText >>= \case
         "hvm" -> pure HVM
@@ -489,10 +869,11 @@
     parseJSON = parseJSONText "VirtualizationType"
 
 data VolumeType
-    = GP2
-    | IO1
-    | Standard
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = GP2
+  | IO1
+  | Standard
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
 
 instance FromText VolumeType where
     parser = takeLowerText >>= \case
diff --git a/gen/Network/AWS/OpsWorks/UnassignInstance.hs b/gen/Network/AWS/OpsWorks/UnassignInstance.hs
--- a/gen/Network/AWS/OpsWorks/UnassignInstance.hs
+++ b/gen/Network/AWS/OpsWorks/UnassignInstance.hs
@@ -12,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.UnassignInstance
--- 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)
 --
--- Unassigns a registered instance from all of it's layers. The instance remains in the stack as an unassigned instance and can be assigned to another layer, as needed. You cannot use this action with instances that were created with AWS OpsWorks.
+-- Unassigns a registered instance from all of it's layers. The instance remains in the stack as an unassigned instance and can be assigned to another layer, as needed. You cannot use this action with instances that were created with AWS OpsWorks Stacks.
 --
 --
 -- __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 <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions> .
@@ -36,18 +36,19 @@
     , UnassignInstanceResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'unassignInstance' smart constructor.
 newtype UnassignInstance = UnassignInstance'
-    { _uInstanceId :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _uInstanceId :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UnassignInstance' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -56,11 +57,9 @@
 unassignInstance
     :: Text -- ^ 'uInstanceId'
     -> UnassignInstance
-unassignInstance pInstanceId_ =
-    UnassignInstance'
-    { _uInstanceId = pInstanceId_
-    }
+unassignInstance pInstanceId_ = UnassignInstance' {_uInstanceId = pInstanceId_}
 
+
 -- | The instance ID.
 uInstanceId :: Lens' UnassignInstance Text
 uInstanceId = lens _uInstanceId (\ s a -> s{_uInstanceId = a});
@@ -70,9 +69,9 @@
         request = postJSON opsWorks
         response = receiveNull UnassignInstanceResponse'
 
-instance Hashable UnassignInstance
+instance Hashable UnassignInstance where
 
-instance NFData UnassignInstance
+instance NFData UnassignInstance where
 
 instance ToHeaders UnassignInstance where
         toHeaders
@@ -96,13 +95,15 @@
 
 -- | /See:/ 'unassignInstanceResponse' smart constructor.
 data UnassignInstanceResponse =
-    UnassignInstanceResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  UnassignInstanceResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UnassignInstanceResponse' with the minimum fields required to make a request.
 --
 unassignInstanceResponse
     :: UnassignInstanceResponse
 unassignInstanceResponse = UnassignInstanceResponse'
 
-instance NFData UnassignInstanceResponse
+
+instance NFData UnassignInstanceResponse where
diff --git a/gen/Network/AWS/OpsWorks/UnassignVolume.hs b/gen/Network/AWS/OpsWorks/UnassignVolume.hs
--- a/gen/Network/AWS/OpsWorks/UnassignVolume.hs
+++ b/gen/Network/AWS/OpsWorks/UnassignVolume.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.UnassignVolume
--- 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 @@
     , UnassignVolumeResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'unassignVolume' smart constructor.
 newtype UnassignVolume = UnassignVolume'
-    { _uvVolumeId :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _uvVolumeId :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UnassignVolume' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -56,11 +57,9 @@
 unassignVolume
     :: Text -- ^ 'uvVolumeId'
     -> UnassignVolume
-unassignVolume pVolumeId_ =
-    UnassignVolume'
-    { _uvVolumeId = pVolumeId_
-    }
+unassignVolume pVolumeId_ = UnassignVolume' {_uvVolumeId = pVolumeId_}
 
+
 -- | The volume ID.
 uvVolumeId :: Lens' UnassignVolume Text
 uvVolumeId = lens _uvVolumeId (\ s a -> s{_uvVolumeId = a});
@@ -70,9 +69,9 @@
         request = postJSON opsWorks
         response = receiveNull UnassignVolumeResponse'
 
-instance Hashable UnassignVolume
+instance Hashable UnassignVolume where
 
-instance NFData UnassignVolume
+instance NFData UnassignVolume where
 
 instance ToHeaders UnassignVolume where
         toHeaders
@@ -96,13 +95,15 @@
 
 -- | /See:/ 'unassignVolumeResponse' smart constructor.
 data UnassignVolumeResponse =
-    UnassignVolumeResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  UnassignVolumeResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UnassignVolumeResponse' with the minimum fields required to make a request.
 --
 unassignVolumeResponse
     :: UnassignVolumeResponse
 unassignVolumeResponse = UnassignVolumeResponse'
 
-instance NFData UnassignVolumeResponse
+
+instance NFData UnassignVolumeResponse where
diff --git a/gen/Network/AWS/OpsWorks/UntagResource.hs b/gen/Network/AWS/OpsWorks/UntagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/OpsWorks/UntagResource.hs
@@ -0,0 +1,118 @@
+{-# 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.OpsWorks.UntagResource
+-- 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)
+--
+-- Removes tags from a specified stack or layer.
+--
+--
+module Network.AWS.OpsWorks.UntagResource
+    (
+    -- * Creating a Request
+      untagResource
+    , UntagResource
+    -- * Request Lenses
+    , urResourceARN
+    , urTagKeys
+
+    -- * Destructuring the Response
+    , untagResourceResponse
+    , UntagResourceResponse
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+
+-- | /See:/ 'untagResource' smart constructor.
+data UntagResource = UntagResource'
+  { _urResourceARN :: !Text
+  , _urTagKeys     :: ![Text]
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UntagResource' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'urResourceARN' - The stack or layer's Amazon Resource Number (ARN).
+--
+-- * 'urTagKeys' - A list of the keys of tags to be removed from a stack or layer.
+untagResource
+    :: Text -- ^ 'urResourceARN'
+    -> UntagResource
+untagResource pResourceARN_ =
+  UntagResource' {_urResourceARN = pResourceARN_, _urTagKeys = mempty}
+
+
+-- | The stack or layer's Amazon Resource Number (ARN).
+urResourceARN :: Lens' UntagResource Text
+urResourceARN = lens _urResourceARN (\ s a -> s{_urResourceARN = a});
+
+-- | A list of the keys of tags to be removed from a stack or layer.
+urTagKeys :: Lens' UntagResource [Text]
+urTagKeys = lens _urTagKeys (\ s a -> s{_urTagKeys = a}) . _Coerce;
+
+instance AWSRequest UntagResource where
+        type Rs UntagResource = UntagResourceResponse
+        request = postJSON opsWorks
+        response = receiveNull UntagResourceResponse'
+
+instance Hashable UntagResource where
+
+instance NFData UntagResource where
+
+instance ToHeaders UntagResource where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.UntagResource" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON UntagResource where
+        toJSON UntagResource'{..}
+          = object
+              (catMaybes
+                 [Just ("ResourceArn" .= _urResourceARN),
+                  Just ("TagKeys" .= _urTagKeys)])
+
+instance ToPath UntagResource where
+        toPath = const "/"
+
+instance ToQuery UntagResource where
+        toQuery = const mempty
+
+-- | /See:/ 'untagResourceResponse' smart constructor.
+data UntagResourceResponse =
+  UntagResourceResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UntagResourceResponse' with the minimum fields required to make a request.
+--
+untagResourceResponse
+    :: UntagResourceResponse
+untagResourceResponse = UntagResourceResponse'
+
+
+instance NFData UntagResourceResponse where
diff --git a/gen/Network/AWS/OpsWorks/UpdateApp.hs b/gen/Network/AWS/OpsWorks/UpdateApp.hs
--- a/gen/Network/AWS/OpsWorks/UpdateApp.hs
+++ b/gen/Network/AWS/OpsWorks/UpdateApp.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.UpdateApp
--- 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)
 --
@@ -46,28 +46,29 @@
     , UpdateAppResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'updateApp' smart constructor.
 data UpdateApp = UpdateApp'
-    { _uaSSLConfiguration :: !(Maybe SSLConfiguration)
-    , _uaEnvironment      :: !(Maybe [EnvironmentVariable])
-    , _uaEnableSSL        :: !(Maybe Bool)
-    , _uaDataSources      :: !(Maybe [DataSource])
-    , _uaAppSource        :: !(Maybe Source)
-    , _uaAttributes       :: !(Maybe (Map AppAttributesKeys Text))
-    , _uaName             :: !(Maybe Text)
-    , _uaType             :: !(Maybe AppType)
-    , _uaDomains          :: !(Maybe [Text])
-    , _uaDescription      :: !(Maybe Text)
-    , _uaAppId            :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _uaSSLConfiguration :: !(Maybe SSLConfiguration)
+  , _uaEnvironment      :: !(Maybe [EnvironmentVariable])
+  , _uaEnableSSL        :: !(Maybe Bool)
+  , _uaDataSources      :: !(Maybe [DataSource])
+  , _uaAppSource        :: !(Maybe Source)
+  , _uaAttributes       :: !(Maybe (Map AppAttributesKeys Text))
+  , _uaName             :: !(Maybe Text)
+  , _uaType             :: !(Maybe AppType)
+  , _uaDomains          :: !(Maybe [Text])
+  , _uaDescription      :: !(Maybe Text)
+  , _uaAppId            :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateApp' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -97,20 +98,21 @@
     :: Text -- ^ 'uaAppId'
     -> UpdateApp
 updateApp pAppId_ =
-    UpdateApp'
-    { _uaSSLConfiguration = Nothing
-    , _uaEnvironment = Nothing
-    , _uaEnableSSL = Nothing
-    , _uaDataSources = Nothing
-    , _uaAppSource = Nothing
-    , _uaAttributes = Nothing
-    , _uaName = Nothing
-    , _uaType = Nothing
-    , _uaDomains = Nothing
-    , _uaDescription = Nothing
-    , _uaAppId = pAppId_
-    }
+  UpdateApp'
+  { _uaSSLConfiguration = Nothing
+  , _uaEnvironment = Nothing
+  , _uaEnableSSL = Nothing
+  , _uaDataSources = Nothing
+  , _uaAppSource = Nothing
+  , _uaAttributes = Nothing
+  , _uaName = Nothing
+  , _uaType = Nothing
+  , _uaDomains = Nothing
+  , _uaDescription = Nothing
+  , _uaAppId = pAppId_
+  }
 
+
 -- | An @SslConfiguration@ object with the SSL configuration.
 uaSSLConfiguration :: Lens' UpdateApp (Maybe SSLConfiguration)
 uaSSLConfiguration = lens _uaSSLConfiguration (\ s a -> s{_uaSSLConfiguration = a});
@@ -160,9 +162,9 @@
         request = postJSON opsWorks
         response = receiveNull UpdateAppResponse'
 
-instance Hashable UpdateApp
+instance Hashable UpdateApp where
 
-instance NFData UpdateApp
+instance NFData UpdateApp where
 
 instance ToHeaders UpdateApp where
         toHeaders
@@ -196,13 +198,15 @@
 
 -- | /See:/ 'updateAppResponse' smart constructor.
 data UpdateAppResponse =
-    UpdateAppResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  UpdateAppResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateAppResponse' with the minimum fields required to make a request.
 --
 updateAppResponse
     :: UpdateAppResponse
 updateAppResponse = UpdateAppResponse'
 
-instance NFData UpdateAppResponse
+
+instance NFData UpdateAppResponse where
diff --git a/gen/Network/AWS/OpsWorks/UpdateElasticIP.hs b/gen/Network/AWS/OpsWorks/UpdateElasticIP.hs
--- a/gen/Network/AWS/OpsWorks/UpdateElasticIP.hs
+++ b/gen/Network/AWS/OpsWorks/UpdateElasticIP.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.UpdateElasticIP
--- 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 @@
     , UpdateElasticIPResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'updateElasticIP' smart constructor.
 data UpdateElasticIP = UpdateElasticIP'
-    { _ueiName      :: !(Maybe Text)
-    , _ueiElasticIP :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _ueiName      :: !(Maybe Text)
+  , _ueiElasticIP :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateElasticIP' 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 @@
     :: Text -- ^ 'ueiElasticIP'
     -> UpdateElasticIP
 updateElasticIP pElasticIP_ =
-    UpdateElasticIP'
-    { _ueiName = Nothing
-    , _ueiElasticIP = pElasticIP_
-    }
+  UpdateElasticIP' {_ueiName = Nothing, _ueiElasticIP = pElasticIP_}
 
+
 -- | The new name.
 ueiName :: Lens' UpdateElasticIP (Maybe Text)
 ueiName = lens _ueiName (\ s a -> s{_ueiName = a});
@@ -79,9 +78,9 @@
         request = postJSON opsWorks
         response = receiveNull UpdateElasticIPResponse'
 
-instance Hashable UpdateElasticIP
+instance Hashable UpdateElasticIP where
 
-instance NFData UpdateElasticIP
+instance NFData UpdateElasticIP where
 
 instance ToHeaders UpdateElasticIP where
         toHeaders
@@ -107,13 +106,15 @@
 
 -- | /See:/ 'updateElasticIPResponse' smart constructor.
 data UpdateElasticIPResponse =
-    UpdateElasticIPResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  UpdateElasticIPResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateElasticIPResponse' with the minimum fields required to make a request.
 --
 updateElasticIPResponse
     :: UpdateElasticIPResponse
 updateElasticIPResponse = UpdateElasticIPResponse'
 
-instance NFData UpdateElasticIPResponse
+
+instance NFData UpdateElasticIPResponse where
diff --git a/gen/Network/AWS/OpsWorks/UpdateInstance.hs b/gen/Network/AWS/OpsWorks/UpdateInstance.hs
--- a/gen/Network/AWS/OpsWorks/UpdateInstance.hs
+++ b/gen/Network/AWS/OpsWorks/UpdateInstance.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.UpdateInstance
--- 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)
 --
@@ -47,29 +47,30 @@
     , UpdateInstanceResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'updateInstance' smart constructor.
 data UpdateInstance = UpdateInstance'
-    { _uiInstallUpdatesOnBoot :: !(Maybe Bool)
-    , _uiHostname             :: !(Maybe Text)
-    , _uiSSHKeyName           :: !(Maybe Text)
-    , _uiAgentVersion         :: !(Maybe Text)
-    , _uiInstanceType         :: !(Maybe Text)
-    , _uiEBSOptimized         :: !(Maybe Bool)
-    , _uiOS                   :: !(Maybe Text)
-    , _uiAutoScalingType      :: !(Maybe AutoScalingType)
-    , _uiLayerIds             :: !(Maybe [Text])
-    , _uiArchitecture         :: !(Maybe Architecture)
-    , _uiAMIId                :: !(Maybe Text)
-    , _uiInstanceId           :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _uiInstallUpdatesOnBoot :: !(Maybe Bool)
+  , _uiHostname             :: !(Maybe Text)
+  , _uiSSHKeyName           :: !(Maybe Text)
+  , _uiAgentVersion         :: !(Maybe Text)
+  , _uiInstanceType         :: !(Maybe Text)
+  , _uiEBSOptimized         :: !(Maybe Bool)
+  , _uiOS                   :: !(Maybe Text)
+  , _uiAutoScalingType      :: !(Maybe AutoScalingType)
+  , _uiLayerIds             :: !(Maybe [Text])
+  , _uiArchitecture         :: !(Maybe Architecture)
+  , _uiAMIId                :: !(Maybe Text)
+  , _uiInstanceId           :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateInstance' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -80,13 +81,13 @@
 --
 -- * 'uiSSHKeyName' - The instance's Amazon EC2 key name.
 --
--- * 'uiAgentVersion' - The default AWS OpsWorks agent version. You have the following options:     * @INHERIT@ - Use the stack's default agent version setting.     * /version_number/ - Use the specified agent version. This value overrides the stack's default setting. To update the agent version, you must edit the instance configuration and specify a new version. AWS OpsWorks then automatically installs that version on the instance. The default setting is @INHERIT@ . To specify an agent version, you must use the complete version number, not the abbreviated number shown on the console. For a list of available agent version numbers, call 'DescribeAgentVersions' .
+-- * 'uiAgentVersion' - The default AWS OpsWorks Stacks agent version. You have the following options:     * @INHERIT@ - Use the stack's default agent version setting.     * /version_number/ - Use the specified agent version. This value overrides the stack's default setting. To update the agent version, you must edit the instance configuration and specify a new version. AWS OpsWorks Stacks then automatically installs that version on the instance. The default setting is @INHERIT@ . To specify an agent version, you must use the complete version number, not the abbreviated number shown on the console. For a list of available agent version numbers, call 'DescribeAgentVersions' . AgentVersion cannot be set to Chef 12.2.
 --
 -- * 'uiInstanceType' - The instance type, such as @t2.micro@ . For a list of supported instance types, open the stack in the console, choose __Instances__ , and choose __+ Instance__ . The __Size__ list contains the currently supported types. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html Instance Families and Types> . The parameter values that you use to specify the various types are in the __API Name__ column of the __Available Instance Types__ table.
 --
 -- * 'uiEBSOptimized' - This property cannot be updated.
 --
--- * 'uiOS' - The instance's operating system, which must be set to one of the following. You cannot update an instance that is using a custom AMI.     * A supported Linux operating system: An Amazon Linux version, such as @Amazon Linux 2016.03@ , @Amazon Linux 2015.09@ , or @Amazon Linux 2015.03@ .     * A supported Ubuntu operating system, such as @Ubuntu 16.04 LTS@ , @Ubuntu 14.04 LTS@ , or @Ubuntu 12.04 LTS@ .     * @CentOS 7@      * @Red Hat Enterprise Linux 7@      * A supported Windows operating system, such as @Microsoft Windows Server 2012 R2 Base@ , @Microsoft Windows Server 2012 R2 with SQL Server Express@ , @Microsoft Windows Server 2012 R2 with SQL Server Standard@ , or @Microsoft Windows Server 2012 R2 with SQL Server Web@ . For more information on the supported operating systems, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html AWS OpsWorks Operating Systems> . The default option is the current Amazon Linux version. If you set this parameter to @Custom@ , you must use the AmiId parameter to specify the custom AMI that you want to use. For more information on the supported operating systems, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html Operating Systems> . For more information on how to use custom AMIs with OpsWorks, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Using Custom AMIs> .
+-- * 'uiOS' - The instance's operating system, which must be set to one of the following. You cannot update an instance that is using a custom AMI.     * A supported Linux operating system: An Amazon Linux version, such as @Amazon Linux 2017.03@ , @Amazon Linux 2016.09@ , @Amazon Linux 2016.03@ , @Amazon Linux 2015.09@ , or @Amazon Linux 2015.03@ .     * A supported Ubuntu operating system, such as @Ubuntu 16.04 LTS@ , @Ubuntu 14.04 LTS@ , or @Ubuntu 12.04 LTS@ .     * @CentOS Linux 7@      * @Red Hat Enterprise Linux 7@      * A supported Windows operating system, such as @Microsoft Windows Server 2012 R2 Base@ , @Microsoft Windows Server 2012 R2 with SQL Server Express@ , @Microsoft Windows Server 2012 R2 with SQL Server Standard@ , or @Microsoft Windows Server 2012 R2 with SQL Server Web@ . For more information on the supported operating systems, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html AWS OpsWorks Stacks Operating Systems> . The default option is the current Amazon Linux version. If you set this parameter to @Custom@ , you must use the AmiId parameter to specify the custom AMI that you want to use. For more information on the supported operating systems, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html Operating Systems> . For more information on how to use custom AMIs with OpsWorks, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Using Custom AMIs> .
 --
 -- * 'uiAutoScalingType' - For load-based or time-based instances, the type. Windows stacks can use only time-based instances.
 --
@@ -101,21 +102,22 @@
     :: Text -- ^ 'uiInstanceId'
     -> UpdateInstance
 updateInstance pInstanceId_ =
-    UpdateInstance'
-    { _uiInstallUpdatesOnBoot = Nothing
-    , _uiHostname = Nothing
-    , _uiSSHKeyName = Nothing
-    , _uiAgentVersion = Nothing
-    , _uiInstanceType = Nothing
-    , _uiEBSOptimized = Nothing
-    , _uiOS = Nothing
-    , _uiAutoScalingType = Nothing
-    , _uiLayerIds = Nothing
-    , _uiArchitecture = Nothing
-    , _uiAMIId = Nothing
-    , _uiInstanceId = pInstanceId_
-    }
+  UpdateInstance'
+  { _uiInstallUpdatesOnBoot = Nothing
+  , _uiHostname = Nothing
+  , _uiSSHKeyName = Nothing
+  , _uiAgentVersion = Nothing
+  , _uiInstanceType = Nothing
+  , _uiEBSOptimized = Nothing
+  , _uiOS = Nothing
+  , _uiAutoScalingType = Nothing
+  , _uiLayerIds = Nothing
+  , _uiArchitecture = Nothing
+  , _uiAMIId = Nothing
+  , _uiInstanceId = pInstanceId_
+  }
 
+
 -- | 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 by manually running @yum@ (Amazon Linux) or @apt-get@ (Ubuntu) on the instances.
 uiInstallUpdatesOnBoot :: Lens' UpdateInstance (Maybe Bool)
 uiInstallUpdatesOnBoot = lens _uiInstallUpdatesOnBoot (\ s a -> s{_uiInstallUpdatesOnBoot = a});
@@ -128,7 +130,7 @@
 uiSSHKeyName :: Lens' UpdateInstance (Maybe Text)
 uiSSHKeyName = lens _uiSSHKeyName (\ s a -> s{_uiSSHKeyName = a});
 
--- | The default AWS OpsWorks agent version. You have the following options:     * @INHERIT@ - Use the stack's default agent version setting.     * /version_number/ - Use the specified agent version. This value overrides the stack's default setting. To update the agent version, you must edit the instance configuration and specify a new version. AWS OpsWorks then automatically installs that version on the instance. The default setting is @INHERIT@ . To specify an agent version, you must use the complete version number, not the abbreviated number shown on the console. For a list of available agent version numbers, call 'DescribeAgentVersions' .
+-- | The default AWS OpsWorks Stacks agent version. You have the following options:     * @INHERIT@ - Use the stack's default agent version setting.     * /version_number/ - Use the specified agent version. This value overrides the stack's default setting. To update the agent version, you must edit the instance configuration and specify a new version. AWS OpsWorks Stacks then automatically installs that version on the instance. The default setting is @INHERIT@ . To specify an agent version, you must use the complete version number, not the abbreviated number shown on the console. For a list of available agent version numbers, call 'DescribeAgentVersions' . AgentVersion cannot be set to Chef 12.2.
 uiAgentVersion :: Lens' UpdateInstance (Maybe Text)
 uiAgentVersion = lens _uiAgentVersion (\ s a -> s{_uiAgentVersion = a});
 
@@ -140,7 +142,7 @@
 uiEBSOptimized :: Lens' UpdateInstance (Maybe Bool)
 uiEBSOptimized = lens _uiEBSOptimized (\ s a -> s{_uiEBSOptimized = a});
 
--- | The instance's operating system, which must be set to one of the following. You cannot update an instance that is using a custom AMI.     * A supported Linux operating system: An Amazon Linux version, such as @Amazon Linux 2016.03@ , @Amazon Linux 2015.09@ , or @Amazon Linux 2015.03@ .     * A supported Ubuntu operating system, such as @Ubuntu 16.04 LTS@ , @Ubuntu 14.04 LTS@ , or @Ubuntu 12.04 LTS@ .     * @CentOS 7@      * @Red Hat Enterprise Linux 7@      * A supported Windows operating system, such as @Microsoft Windows Server 2012 R2 Base@ , @Microsoft Windows Server 2012 R2 with SQL Server Express@ , @Microsoft Windows Server 2012 R2 with SQL Server Standard@ , or @Microsoft Windows Server 2012 R2 with SQL Server Web@ . For more information on the supported operating systems, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html AWS OpsWorks Operating Systems> . The default option is the current Amazon Linux version. If you set this parameter to @Custom@ , you must use the AmiId parameter to specify the custom AMI that you want to use. For more information on the supported operating systems, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html Operating Systems> . For more information on how to use custom AMIs with OpsWorks, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Using Custom AMIs> .
+-- | The instance's operating system, which must be set to one of the following. You cannot update an instance that is using a custom AMI.     * A supported Linux operating system: An Amazon Linux version, such as @Amazon Linux 2017.03@ , @Amazon Linux 2016.09@ , @Amazon Linux 2016.03@ , @Amazon Linux 2015.09@ , or @Amazon Linux 2015.03@ .     * A supported Ubuntu operating system, such as @Ubuntu 16.04 LTS@ , @Ubuntu 14.04 LTS@ , or @Ubuntu 12.04 LTS@ .     * @CentOS Linux 7@      * @Red Hat Enterprise Linux 7@      * A supported Windows operating system, such as @Microsoft Windows Server 2012 R2 Base@ , @Microsoft Windows Server 2012 R2 with SQL Server Express@ , @Microsoft Windows Server 2012 R2 with SQL Server Standard@ , or @Microsoft Windows Server 2012 R2 with SQL Server Web@ . For more information on the supported operating systems, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html AWS OpsWorks Stacks Operating Systems> . The default option is the current Amazon Linux version. If you set this parameter to @Custom@ , you must use the AmiId parameter to specify the custom AMI that you want to use. For more information on the supported operating systems, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html Operating Systems> . For more information on how to use custom AMIs with OpsWorks, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Using Custom AMIs> .
 uiOS :: Lens' UpdateInstance (Maybe Text)
 uiOS = lens _uiOS (\ s a -> s{_uiOS = a});
 
@@ -169,9 +171,9 @@
         request = postJSON opsWorks
         response = receiveNull UpdateInstanceResponse'
 
-instance Hashable UpdateInstance
+instance Hashable UpdateInstance where
 
-instance NFData UpdateInstance
+instance NFData UpdateInstance where
 
 instance ToHeaders UpdateInstance where
         toHeaders
@@ -208,13 +210,15 @@
 
 -- | /See:/ 'updateInstanceResponse' smart constructor.
 data UpdateInstanceResponse =
-    UpdateInstanceResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  UpdateInstanceResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateInstanceResponse' with the minimum fields required to make a request.
 --
 updateInstanceResponse
     :: UpdateInstanceResponse
 updateInstanceResponse = UpdateInstanceResponse'
 
-instance NFData UpdateInstanceResponse
+
+instance NFData UpdateInstanceResponse where
diff --git a/gen/Network/AWS/OpsWorks/UpdateLayer.hs b/gen/Network/AWS/OpsWorks/UpdateLayer.hs
--- a/gen/Network/AWS/OpsWorks/UpdateLayer.hs
+++ b/gen/Network/AWS/OpsWorks/UpdateLayer.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.UpdateLayer
--- 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)
 --
@@ -32,6 +32,7 @@
     , ulCustomInstanceProfileARN
     , ulCustomSecurityGroupIds
     , ulInstallUpdatesOnBoot
+    , ulCloudWatchLogsConfiguration
     , ulLifecycleEventConfiguration
     , ulShortname
     , ulCustomRecipes
@@ -51,33 +52,35 @@
     , UpdateLayerResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'updateLayer' smart constructor.
 data UpdateLayer = UpdateLayer'
-    { _ulCustomInstanceProfileARN    :: !(Maybe Text)
-    , _ulCustomSecurityGroupIds      :: !(Maybe [Text])
-    , _ulInstallUpdatesOnBoot        :: !(Maybe Bool)
-    , _ulLifecycleEventConfiguration :: !(Maybe LifecycleEventConfiguration)
-    , _ulShortname                   :: !(Maybe Text)
-    , _ulCustomRecipes               :: !(Maybe Recipes)
-    , _ulCustomJSON                  :: !(Maybe Text)
-    , _ulVolumeConfigurations        :: !(Maybe [VolumeConfiguration])
-    , _ulEnableAutoHealing           :: !(Maybe Bool)
-    , _ulPackages                    :: !(Maybe [Text])
-    , _ulAttributes                  :: !(Maybe (Map LayerAttributesKeys Text))
-    , _ulName                        :: !(Maybe Text)
-    , _ulAutoAssignPublicIPs         :: !(Maybe Bool)
-    , _ulUseEBSOptimizedInstances    :: !(Maybe Bool)
-    , _ulAutoAssignElasticIPs        :: !(Maybe Bool)
-    , _ulLayerId                     :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _ulCustomInstanceProfileARN :: !(Maybe Text)
+  , _ulCustomSecurityGroupIds :: !(Maybe [Text])
+  , _ulInstallUpdatesOnBoot :: !(Maybe Bool)
+  , _ulCloudWatchLogsConfiguration :: !(Maybe CloudWatchLogsConfiguration)
+  , _ulLifecycleEventConfiguration :: !(Maybe LifecycleEventConfiguration)
+  , _ulShortname :: !(Maybe Text)
+  , _ulCustomRecipes :: !(Maybe Recipes)
+  , _ulCustomJSON :: !(Maybe Text)
+  , _ulVolumeConfigurations :: !(Maybe [VolumeConfiguration])
+  , _ulEnableAutoHealing :: !(Maybe Bool)
+  , _ulPackages :: !(Maybe [Text])
+  , _ulAttributes :: !(Maybe (Map LayerAttributesKeys (Maybe Text)))
+  , _ulName :: !(Maybe Text)
+  , _ulAutoAssignPublicIPs :: !(Maybe Bool)
+  , _ulUseEBSOptimizedInstances :: !(Maybe Bool)
+  , _ulAutoAssignElasticIPs :: !(Maybe Bool)
+  , _ulLayerId :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateLayer' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -88,9 +91,11 @@
 --
 -- * 'ulInstallUpdatesOnBoot' - 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.
 --
+-- * 'ulCloudWatchLogsConfiguration' - Specifies CloudWatch Logs configuration options for the layer. For more information, see 'CloudWatchLogsLogStream' .
+--
 -- * 'ulLifecycleEventConfiguration' -
 --
--- * 'ulShortname' - For custom layers only, use this parameter to specify the layer's short name, which is used internally by AWS OpsWorksand by Chef. The short name is also used as the name for the directory where your app files are installed. It can have a maximum of 200 characters and must be in the following format: /\A[a-z0-9\-\_\.]+\Z/. The built-in layers' short names are defined by AWS OpsWorks. For more information, see the <http://docs.aws.amazon.com/opsworks/latest/userguide/layers.html Layer Reference>
+-- * 'ulShortname' - For custom layers only, use this parameter to specify the layer's short name, which is used internally by AWS OpsWorks Stacks and by Chef. The short name is also used as the name for the directory where your app files are installed. It can have a maximum of 200 characters and must be in the following format: /\A[a-z0-9\-\_\.]+\Z/. The built-in layers' short names are defined by AWS OpsWorks Stacks. For more information, see the <http://docs.aws.amazon.com/opsworks/latest/userguide/layers.html Layer Reference>
 --
 -- * 'ulCustomRecipes' - A @LayerCustomRecipes@ object that specifies the layer's custom recipes.
 --
@@ -117,25 +122,27 @@
     :: Text -- ^ 'ulLayerId'
     -> UpdateLayer
 updateLayer pLayerId_ =
-    UpdateLayer'
-    { _ulCustomInstanceProfileARN = Nothing
-    , _ulCustomSecurityGroupIds = Nothing
-    , _ulInstallUpdatesOnBoot = Nothing
-    , _ulLifecycleEventConfiguration = Nothing
-    , _ulShortname = Nothing
-    , _ulCustomRecipes = Nothing
-    , _ulCustomJSON = Nothing
-    , _ulVolumeConfigurations = Nothing
-    , _ulEnableAutoHealing = Nothing
-    , _ulPackages = Nothing
-    , _ulAttributes = Nothing
-    , _ulName = Nothing
-    , _ulAutoAssignPublicIPs = Nothing
-    , _ulUseEBSOptimizedInstances = Nothing
-    , _ulAutoAssignElasticIPs = Nothing
-    , _ulLayerId = pLayerId_
-    }
+  UpdateLayer'
+  { _ulCustomInstanceProfileARN = Nothing
+  , _ulCustomSecurityGroupIds = Nothing
+  , _ulInstallUpdatesOnBoot = Nothing
+  , _ulCloudWatchLogsConfiguration = Nothing
+  , _ulLifecycleEventConfiguration = Nothing
+  , _ulShortname = Nothing
+  , _ulCustomRecipes = Nothing
+  , _ulCustomJSON = Nothing
+  , _ulVolumeConfigurations = Nothing
+  , _ulEnableAutoHealing = Nothing
+  , _ulPackages = Nothing
+  , _ulAttributes = Nothing
+  , _ulName = Nothing
+  , _ulAutoAssignPublicIPs = Nothing
+  , _ulUseEBSOptimizedInstances = Nothing
+  , _ulAutoAssignElasticIPs = Nothing
+  , _ulLayerId = pLayerId_
+  }
 
+
 -- | The ARN of an IAM profile to be used for all of the layer's EC2 instances. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers> .
 ulCustomInstanceProfileARN :: Lens' UpdateLayer (Maybe Text)
 ulCustomInstanceProfileARN = lens _ulCustomInstanceProfileARN (\ s a -> s{_ulCustomInstanceProfileARN = a});
@@ -148,11 +155,15 @@
 ulInstallUpdatesOnBoot :: Lens' UpdateLayer (Maybe Bool)
 ulInstallUpdatesOnBoot = lens _ulInstallUpdatesOnBoot (\ s a -> s{_ulInstallUpdatesOnBoot = a});
 
+-- | Specifies CloudWatch Logs configuration options for the layer. For more information, see 'CloudWatchLogsLogStream' .
+ulCloudWatchLogsConfiguration :: Lens' UpdateLayer (Maybe CloudWatchLogsConfiguration)
+ulCloudWatchLogsConfiguration = lens _ulCloudWatchLogsConfiguration (\ s a -> s{_ulCloudWatchLogsConfiguration = a});
+
 -- |
 ulLifecycleEventConfiguration :: Lens' UpdateLayer (Maybe LifecycleEventConfiguration)
 ulLifecycleEventConfiguration = lens _ulLifecycleEventConfiguration (\ s a -> s{_ulLifecycleEventConfiguration = a});
 
--- | For custom layers only, use this parameter to specify the layer's short name, which is used internally by AWS OpsWorksand by Chef. The short name is also used as the name for the directory where your app files are installed. It can have a maximum of 200 characters and must be in the following format: /\A[a-z0-9\-\_\.]+\Z/. The built-in layers' short names are defined by AWS OpsWorks. For more information, see the <http://docs.aws.amazon.com/opsworks/latest/userguide/layers.html Layer Reference>
+-- | For custom layers only, use this parameter to specify the layer's short name, which is used internally by AWS OpsWorks Stacks and by Chef. The short name is also used as the name for the directory where your app files are installed. It can have a maximum of 200 characters and must be in the following format: /\A[a-z0-9\-\_\.]+\Z/. The built-in layers' short names are defined by AWS OpsWorks Stacks. For more information, see the <http://docs.aws.amazon.com/opsworks/latest/userguide/layers.html Layer Reference>
 ulShortname :: Lens' UpdateLayer (Maybe Text)
 ulShortname = lens _ulShortname (\ s a -> s{_ulShortname = a});
 
@@ -177,7 +188,7 @@
 ulPackages = lens _ulPackages (\ s a -> s{_ulPackages = a}) . _Default . _Coerce;
 
 -- | One or more user-defined key/value pairs to be added to the stack attributes.
-ulAttributes :: Lens' UpdateLayer (HashMap LayerAttributesKeys Text)
+ulAttributes :: Lens' UpdateLayer (HashMap LayerAttributesKeys (Maybe Text))
 ulAttributes = lens _ulAttributes (\ s a -> s{_ulAttributes = a}) . _Default . _Map;
 
 -- | The layer name, which is used by the console.
@@ -205,9 +216,9 @@
         request = postJSON opsWorks
         response = receiveNull UpdateLayerResponse'
 
-instance Hashable UpdateLayer
+instance Hashable UpdateLayer where
 
-instance NFData UpdateLayer
+instance NFData UpdateLayer where
 
 instance ToHeaders UpdateLayer where
         toHeaders
@@ -228,6 +239,8 @@
                     _ulCustomSecurityGroupIds,
                   ("InstallUpdatesOnBoot" .=) <$>
                     _ulInstallUpdatesOnBoot,
+                  ("CloudWatchLogsConfiguration" .=) <$>
+                    _ulCloudWatchLogsConfiguration,
                   ("LifecycleEventConfiguration" .=) <$>
                     _ulLifecycleEventConfiguration,
                   ("Shortname" .=) <$> _ulShortname,
@@ -255,13 +268,15 @@
 
 -- | /See:/ 'updateLayerResponse' smart constructor.
 data UpdateLayerResponse =
-    UpdateLayerResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  UpdateLayerResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateLayerResponse' with the minimum fields required to make a request.
 --
 updateLayerResponse
     :: UpdateLayerResponse
 updateLayerResponse = UpdateLayerResponse'
 
-instance NFData UpdateLayerResponse
+
+instance NFData UpdateLayerResponse where
diff --git a/gen/Network/AWS/OpsWorks/UpdateMyUserProfile.hs b/gen/Network/AWS/OpsWorks/UpdateMyUserProfile.hs
--- a/gen/Network/AWS/OpsWorks/UpdateMyUserProfile.hs
+++ b/gen/Network/AWS/OpsWorks/UpdateMyUserProfile.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.UpdateMyUserProfile
--- 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 @@
     , UpdateMyUserProfileResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'updateMyUserProfile' smart constructor.
 newtype UpdateMyUserProfile = UpdateMyUserProfile'
-    { _umupSSHPublicKey :: Maybe Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _umupSSHPublicKey :: Maybe Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateMyUserProfile' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -55,11 +56,9 @@
 -- * 'umupSSHPublicKey' - The user's SSH public key.
 updateMyUserProfile
     :: UpdateMyUserProfile
-updateMyUserProfile =
-    UpdateMyUserProfile'
-    { _umupSSHPublicKey = Nothing
-    }
+updateMyUserProfile = UpdateMyUserProfile' {_umupSSHPublicKey = Nothing}
 
+
 -- | The user's SSH public key.
 umupSSHPublicKey :: Lens' UpdateMyUserProfile (Maybe Text)
 umupSSHPublicKey = lens _umupSSHPublicKey (\ s a -> s{_umupSSHPublicKey = a});
@@ -70,9 +69,9 @@
         request = postJSON opsWorks
         response = receiveNull UpdateMyUserProfileResponse'
 
-instance Hashable UpdateMyUserProfile
+instance Hashable UpdateMyUserProfile where
 
-instance NFData UpdateMyUserProfile
+instance NFData UpdateMyUserProfile where
 
 instance ToHeaders UpdateMyUserProfile where
         toHeaders
@@ -98,13 +97,15 @@
 
 -- | /See:/ 'updateMyUserProfileResponse' smart constructor.
 data UpdateMyUserProfileResponse =
-    UpdateMyUserProfileResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  UpdateMyUserProfileResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateMyUserProfileResponse' with the minimum fields required to make a request.
 --
 updateMyUserProfileResponse
     :: UpdateMyUserProfileResponse
 updateMyUserProfileResponse = UpdateMyUserProfileResponse'
 
-instance NFData UpdateMyUserProfileResponse
+
+instance NFData UpdateMyUserProfileResponse where
diff --git a/gen/Network/AWS/OpsWorks/UpdateRDSDBInstance.hs b/gen/Network/AWS/OpsWorks/UpdateRDSDBInstance.hs
--- a/gen/Network/AWS/OpsWorks/UpdateRDSDBInstance.hs
+++ b/gen/Network/AWS/OpsWorks/UpdateRDSDBInstance.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.UpdateRDSDBInstance
--- 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,20 +38,21 @@
     , UpdateRDSDBInstanceResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'updateRDSDBInstance' smart constructor.
 data UpdateRDSDBInstance = UpdateRDSDBInstance'
-    { _urdiDBUser           :: !(Maybe Text)
-    , _urdiDBPassword       :: !(Maybe Text)
-    , _urdiRDSDBInstanceARN :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _urdiDBUser           :: !(Maybe Text)
+  , _urdiDBPassword       :: !(Maybe Text)
+  , _urdiRDSDBInstanceARN :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateRDSDBInstance' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -65,12 +66,13 @@
     :: Text -- ^ 'urdiRDSDBInstanceARN'
     -> UpdateRDSDBInstance
 updateRDSDBInstance pRDSDBInstanceARN_ =
-    UpdateRDSDBInstance'
-    { _urdiDBUser = Nothing
-    , _urdiDBPassword = Nothing
-    , _urdiRDSDBInstanceARN = pRDSDBInstanceARN_
-    }
+  UpdateRDSDBInstance'
+  { _urdiDBUser = Nothing
+  , _urdiDBPassword = Nothing
+  , _urdiRDSDBInstanceARN = pRDSDBInstanceARN_
+  }
 
+
 -- | The master user name.
 urdiDBUser :: Lens' UpdateRDSDBInstance (Maybe Text)
 urdiDBUser = lens _urdiDBUser (\ s a -> s{_urdiDBUser = a});
@@ -89,9 +91,9 @@
         request = postJSON opsWorks
         response = receiveNull UpdateRDSDBInstanceResponse'
 
-instance Hashable UpdateRDSDBInstance
+instance Hashable UpdateRDSDBInstance where
 
-instance NFData UpdateRDSDBInstance
+instance NFData UpdateRDSDBInstance where
 
 instance ToHeaders UpdateRDSDBInstance where
         toHeaders
@@ -119,13 +121,15 @@
 
 -- | /See:/ 'updateRDSDBInstanceResponse' smart constructor.
 data UpdateRDSDBInstanceResponse =
-    UpdateRDSDBInstanceResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  UpdateRDSDBInstanceResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateRDSDBInstanceResponse' with the minimum fields required to make a request.
 --
 updateRDSDBInstanceResponse
     :: UpdateRDSDBInstanceResponse
 updateRDSDBInstanceResponse = UpdateRDSDBInstanceResponse'
 
-instance NFData UpdateRDSDBInstanceResponse
+
+instance NFData UpdateRDSDBInstanceResponse where
diff --git a/gen/Network/AWS/OpsWorks/UpdateStack.hs b/gen/Network/AWS/OpsWorks/UpdateStack.hs
--- a/gen/Network/AWS/OpsWorks/UpdateStack.hs
+++ b/gen/Network/AWS/OpsWorks/UpdateStack.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.UpdateStack
--- 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)
 --
@@ -53,35 +53,36 @@
     , UpdateStackResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'updateStack' smart constructor.
 data UpdateStack = UpdateStack'
-    { _usDefaultInstanceProfileARN :: !(Maybe Text)
-    , _usServiceRoleARN            :: !(Maybe Text)
-    , _usDefaultRootDeviceType     :: !(Maybe RootDeviceType)
-    , _usChefConfiguration         :: !(Maybe ChefConfiguration)
-    , _usAgentVersion              :: !(Maybe Text)
-    , _usDefaultSSHKeyName         :: !(Maybe Text)
-    , _usCustomJSON                :: !(Maybe Text)
-    , _usCustomCookbooksSource     :: !(Maybe Source)
-    , _usDefaultAvailabilityZone   :: !(Maybe Text)
-    , _usAttributes                :: !(Maybe (Map StackAttributesKeys Text))
-    , _usName                      :: !(Maybe Text)
-    , _usDefaultOS                 :: !(Maybe Text)
-    , _usUseOpsworksSecurityGroups :: !(Maybe Bool)
-    , _usUseCustomCookbooks        :: !(Maybe Bool)
-    , _usDefaultSubnetId           :: !(Maybe Text)
-    , _usConfigurationManager      :: !(Maybe StackConfigurationManager)
-    , _usHostnameTheme             :: !(Maybe Text)
-    , _usStackId                   :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _usDefaultInstanceProfileARN :: !(Maybe Text)
+  , _usServiceRoleARN            :: !(Maybe Text)
+  , _usDefaultRootDeviceType     :: !(Maybe RootDeviceType)
+  , _usChefConfiguration         :: !(Maybe ChefConfiguration)
+  , _usAgentVersion              :: !(Maybe Text)
+  , _usDefaultSSHKeyName         :: !(Maybe Text)
+  , _usCustomJSON                :: !(Maybe Text)
+  , _usCustomCookbooksSource     :: !(Maybe Source)
+  , _usDefaultAvailabilityZone   :: !(Maybe Text)
+  , _usAttributes                :: !(Maybe (Map StackAttributesKeys Text))
+  , _usName                      :: !(Maybe Text)
+  , _usDefaultOS                 :: !(Maybe Text)
+  , _usUseOpsworksSecurityGroups :: !(Maybe Bool)
+  , _usUseCustomCookbooks        :: !(Maybe Bool)
+  , _usDefaultSubnetId           :: !(Maybe Text)
+  , _usConfigurationManager      :: !(Maybe StackConfigurationManager)
+  , _usHostnameTheme             :: !(Maybe Text)
+  , _usStackId                   :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateStack' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -94,9 +95,9 @@
 --
 -- * 'usChefConfiguration' - A @ChefConfiguration@ object that specifies whether to enable Berkshelf and the Berkshelf version on Chef 11.10 stacks. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a New Stack> .
 --
--- * 'usAgentVersion' - The default AWS OpsWorks agent version. You have the following options:     * Auto-update - Set this parameter to @LATEST@ . AWS OpsWorks automatically installs new agent versions on the stack's instances as soon as they are available.     * Fixed version - Set this parameter to your preferred agent version. To update the agent version, you must edit the stack configuration and specify a new version. AWS OpsWorks then automatically installs that version on the stack's instances. The default setting is @LATEST@ . To specify an agent version, you must use the complete version number, not the abbreviated number shown on the console. For a list of available agent version numbers, call 'DescribeAgentVersions' .
+-- * 'usAgentVersion' - The default AWS OpsWorks Stacks agent version. You have the following options:     * Auto-update - Set this parameter to @LATEST@ . AWS OpsWorks Stacks automatically installs new agent versions on the stack's instances as soon as they are available.     * Fixed version - Set this parameter to your preferred agent version. To update the agent version, you must edit the stack configuration and specify a new version. AWS OpsWorks Stacks then automatically installs that version on the stack's instances. The default setting is @LATEST@ . To specify an agent version, you must use the complete version number, not the abbreviated number shown on the console. For a list of available agent version numbers, call 'DescribeAgentVersions' . AgentVersion cannot be set to Chef 12.2.
 --
--- * 'usDefaultSSHKeyName' - A default Amazon EC2 key-pair name. The default value is @none@ . If you specify a key-pair name, AWS OpsWorks installs the public key on the instance and you can use the private key with an SSH client to log in to the instance. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-ssh.html Using SSH to Communicate with an Instance> and <http://docs.aws.amazon.com/opsworks/latest/userguide/security-ssh-access.html Managing SSH Access> . You can override this setting by specifying a different key pair, or no key pair, when you <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-add.html create an instance> .
+-- * 'usDefaultSSHKeyName' - A default Amazon EC2 key-pair name. The default value is @none@ . If you specify a key-pair name, AWS OpsWorks Stacks installs the public key on the instance and you can use the private key with an SSH client to log in to the instance. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-ssh.html Using SSH to Communicate with an Instance> and <http://docs.aws.amazon.com/opsworks/latest/userguide/security-ssh-access.html Managing SSH Access> . You can override this setting by specifying a different key pair, or no key pair, when you <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-add.html create an instance> .
 --
 -- * 'usCustomJSON' - A string that contains user-defined, custom JSON. It can be used to override the corresponding default stack configuration JSON values or to pass data to recipes. The string should be in the following format: @"{\"key1\": \"value1\", \"key2\": \"value2\",...}"@  For more information on custom JSON, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html Use Custom JSON to Modify the Stack Configuration Attributes> .
 --
@@ -108,9 +109,9 @@
 --
 -- * 'usName' - The stack's new name.
 --
--- * 'usDefaultOS' - The stack's operating system, which must be set to one of the following:     * A supported Linux operating system: An Amazon Linux version, such as @Amazon Linux 2016.03@ , @Amazon Linux 2015.09@ , or @Amazon Linux 2015.03@ .     * A supported Ubuntu operating system, such as @Ubuntu 16.04 LTS@ , @Ubuntu 14.04 LTS@ , or @Ubuntu 12.04 LTS@ .     * @CentOS 7@      * @Red Hat Enterprise Linux 7@      * A supported Windows operating system, such as @Microsoft Windows Server 2012 R2 Base@ , @Microsoft Windows Server 2012 R2 with SQL Server Express@ , @Microsoft Windows Server 2012 R2 with SQL Server Standard@ , or @Microsoft Windows Server 2012 R2 with SQL Server Web@ .     * A custom AMI: @Custom@ . You specify the custom AMI you want to use when you create instances. For more information on how to use custom AMIs with OpsWorks, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Using Custom AMIs> . The default option is the stack's current operating system. For more information on the supported operating systems, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html AWS OpsWorks Operating Systems> .
+-- * 'usDefaultOS' - The stack's operating system, which must be set to one of the following:     * A supported Linux operating system: An Amazon Linux version, such as @Amazon Linux 2017.03@ , @Amazon Linux 2016.09@ , @Amazon Linux 2016.03@ , @Amazon Linux 2015.09@ , or @Amazon Linux 2015.03@ .     * A supported Ubuntu operating system, such as @Ubuntu 16.04 LTS@ , @Ubuntu 14.04 LTS@ , or @Ubuntu 12.04 LTS@ .     * @CentOS Linux 7@      * @Red Hat Enterprise Linux 7@      * A supported Windows operating system, such as @Microsoft Windows Server 2012 R2 Base@ , @Microsoft Windows Server 2012 R2 with SQL Server Express@ , @Microsoft Windows Server 2012 R2 with SQL Server Standard@ , or @Microsoft Windows Server 2012 R2 with SQL Server Web@ .     * A custom AMI: @Custom@ . You specify the custom AMI you want to use when you create instances. For more information on how to use custom AMIs with OpsWorks, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Using Custom AMIs> . The default option is the stack's current operating system. For more information on the supported operating systems, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html AWS OpsWorks Stacks Operating Systems> .
 --
--- * 'usUseOpsworksSecurityGroups' - Whether to associate the AWS OpsWorks built-in security groups with the stack's layers. AWS OpsWorks provides a standard set of built-in security groups, one for each layer, which are associated with layers by default. @UseOpsworksSecurityGroups@ allows you to provide your own custom security groups instead of using the built-in groups. @UseOpsworksSecurityGroups@ has the following settings:      * True - AWS OpsWorks automatically associates the appropriate built-in security group with each layer (default setting). You can associate additional security groups with a layer after you create it, but you cannot delete the built-in security group.     * False - AWS OpsWorks does not associate built-in security groups with layers. You must create appropriate EC2 security groups and associate a security group with each layer that you create. However, you can still manually associate a built-in security group with a layer on. Custom security groups are required only for those layers that need custom settings. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a New Stack> .
+-- * 'usUseOpsworksSecurityGroups' - Whether to associate the AWS OpsWorks Stacks built-in security groups with the stack's layers. AWS OpsWorks Stacks provides a standard set of built-in security groups, one for each layer, which are associated with layers by default. @UseOpsworksSecurityGroups@ allows you to provide your own custom security groups instead of using the built-in groups. @UseOpsworksSecurityGroups@ has the following settings:      * True - AWS OpsWorks Stacks automatically associates the appropriate built-in security group with each layer (default setting). You can associate additional security groups with a layer after you create it, but you cannot delete the built-in security group.     * False - AWS OpsWorks Stacks does not associate built-in security groups with layers. You must create appropriate EC2 security groups and associate a security group with each layer that you create. However, you can still manually associate a built-in security group with a layer on. Custom security groups are required only for those layers that need custom settings. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a New Stack> .
 --
 -- * 'usUseCustomCookbooks' - Whether the stack uses custom cookbooks.
 --
@@ -125,27 +126,28 @@
     :: Text -- ^ 'usStackId'
     -> UpdateStack
 updateStack pStackId_ =
-    UpdateStack'
-    { _usDefaultInstanceProfileARN = Nothing
-    , _usServiceRoleARN = Nothing
-    , _usDefaultRootDeviceType = Nothing
-    , _usChefConfiguration = Nothing
-    , _usAgentVersion = Nothing
-    , _usDefaultSSHKeyName = Nothing
-    , _usCustomJSON = Nothing
-    , _usCustomCookbooksSource = Nothing
-    , _usDefaultAvailabilityZone = Nothing
-    , _usAttributes = Nothing
-    , _usName = Nothing
-    , _usDefaultOS = Nothing
-    , _usUseOpsworksSecurityGroups = Nothing
-    , _usUseCustomCookbooks = Nothing
-    , _usDefaultSubnetId = Nothing
-    , _usConfigurationManager = Nothing
-    , _usHostnameTheme = Nothing
-    , _usStackId = pStackId_
-    }
+  UpdateStack'
+  { _usDefaultInstanceProfileARN = Nothing
+  , _usServiceRoleARN = Nothing
+  , _usDefaultRootDeviceType = Nothing
+  , _usChefConfiguration = Nothing
+  , _usAgentVersion = Nothing
+  , _usDefaultSSHKeyName = Nothing
+  , _usCustomJSON = Nothing
+  , _usCustomCookbooksSource = Nothing
+  , _usDefaultAvailabilityZone = Nothing
+  , _usAttributes = Nothing
+  , _usName = Nothing
+  , _usDefaultOS = Nothing
+  , _usUseOpsworksSecurityGroups = Nothing
+  , _usUseCustomCookbooks = Nothing
+  , _usDefaultSubnetId = Nothing
+  , _usConfigurationManager = Nothing
+  , _usHostnameTheme = Nothing
+  , _usStackId = pStackId_
+  }
 
+
 -- | The ARN of an IAM profile that is the default profile for all of the stack's EC2 instances. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers> .
 usDefaultInstanceProfileARN :: Lens' UpdateStack (Maybe Text)
 usDefaultInstanceProfileARN = lens _usDefaultInstanceProfileARN (\ s a -> s{_usDefaultInstanceProfileARN = a});
@@ -162,11 +164,11 @@
 usChefConfiguration :: Lens' UpdateStack (Maybe ChefConfiguration)
 usChefConfiguration = lens _usChefConfiguration (\ s a -> s{_usChefConfiguration = a});
 
--- | The default AWS OpsWorks agent version. You have the following options:     * Auto-update - Set this parameter to @LATEST@ . AWS OpsWorks automatically installs new agent versions on the stack's instances as soon as they are available.     * Fixed version - Set this parameter to your preferred agent version. To update the agent version, you must edit the stack configuration and specify a new version. AWS OpsWorks then automatically installs that version on the stack's instances. The default setting is @LATEST@ . To specify an agent version, you must use the complete version number, not the abbreviated number shown on the console. For a list of available agent version numbers, call 'DescribeAgentVersions' .
+-- | The default AWS OpsWorks Stacks agent version. You have the following options:     * Auto-update - Set this parameter to @LATEST@ . AWS OpsWorks Stacks automatically installs new agent versions on the stack's instances as soon as they are available.     * Fixed version - Set this parameter to your preferred agent version. To update the agent version, you must edit the stack configuration and specify a new version. AWS OpsWorks Stacks then automatically installs that version on the stack's instances. The default setting is @LATEST@ . To specify an agent version, you must use the complete version number, not the abbreviated number shown on the console. For a list of available agent version numbers, call 'DescribeAgentVersions' . AgentVersion cannot be set to Chef 12.2.
 usAgentVersion :: Lens' UpdateStack (Maybe Text)
 usAgentVersion = lens _usAgentVersion (\ s a -> s{_usAgentVersion = a});
 
--- | A default Amazon EC2 key-pair name. The default value is @none@ . If you specify a key-pair name, AWS OpsWorks installs the public key on the instance and you can use the private key with an SSH client to log in to the instance. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-ssh.html Using SSH to Communicate with an Instance> and <http://docs.aws.amazon.com/opsworks/latest/userguide/security-ssh-access.html Managing SSH Access> . You can override this setting by specifying a different key pair, or no key pair, when you <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-add.html create an instance> .
+-- | A default Amazon EC2 key-pair name. The default value is @none@ . If you specify a key-pair name, AWS OpsWorks Stacks installs the public key on the instance and you can use the private key with an SSH client to log in to the instance. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-ssh.html Using SSH to Communicate with an Instance> and <http://docs.aws.amazon.com/opsworks/latest/userguide/security-ssh-access.html Managing SSH Access> . You can override this setting by specifying a different key pair, or no key pair, when you <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-add.html create an instance> .
 usDefaultSSHKeyName :: Lens' UpdateStack (Maybe Text)
 usDefaultSSHKeyName = lens _usDefaultSSHKeyName (\ s a -> s{_usDefaultSSHKeyName = a});
 
@@ -190,11 +192,11 @@
 usName :: Lens' UpdateStack (Maybe Text)
 usName = lens _usName (\ s a -> s{_usName = a});
 
--- | The stack's operating system, which must be set to one of the following:     * A supported Linux operating system: An Amazon Linux version, such as @Amazon Linux 2016.03@ , @Amazon Linux 2015.09@ , or @Amazon Linux 2015.03@ .     * A supported Ubuntu operating system, such as @Ubuntu 16.04 LTS@ , @Ubuntu 14.04 LTS@ , or @Ubuntu 12.04 LTS@ .     * @CentOS 7@      * @Red Hat Enterprise Linux 7@      * A supported Windows operating system, such as @Microsoft Windows Server 2012 R2 Base@ , @Microsoft Windows Server 2012 R2 with SQL Server Express@ , @Microsoft Windows Server 2012 R2 with SQL Server Standard@ , or @Microsoft Windows Server 2012 R2 with SQL Server Web@ .     * A custom AMI: @Custom@ . You specify the custom AMI you want to use when you create instances. For more information on how to use custom AMIs with OpsWorks, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Using Custom AMIs> . The default option is the stack's current operating system. For more information on the supported operating systems, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html AWS OpsWorks Operating Systems> .
+-- | The stack's operating system, which must be set to one of the following:     * A supported Linux operating system: An Amazon Linux version, such as @Amazon Linux 2017.03@ , @Amazon Linux 2016.09@ , @Amazon Linux 2016.03@ , @Amazon Linux 2015.09@ , or @Amazon Linux 2015.03@ .     * A supported Ubuntu operating system, such as @Ubuntu 16.04 LTS@ , @Ubuntu 14.04 LTS@ , or @Ubuntu 12.04 LTS@ .     * @CentOS Linux 7@      * @Red Hat Enterprise Linux 7@      * A supported Windows operating system, such as @Microsoft Windows Server 2012 R2 Base@ , @Microsoft Windows Server 2012 R2 with SQL Server Express@ , @Microsoft Windows Server 2012 R2 with SQL Server Standard@ , or @Microsoft Windows Server 2012 R2 with SQL Server Web@ .     * A custom AMI: @Custom@ . You specify the custom AMI you want to use when you create instances. For more information on how to use custom AMIs with OpsWorks, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Using Custom AMIs> . The default option is the stack's current operating system. For more information on the supported operating systems, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html AWS OpsWorks Stacks Operating Systems> .
 usDefaultOS :: Lens' UpdateStack (Maybe Text)
 usDefaultOS = lens _usDefaultOS (\ s a -> s{_usDefaultOS = a});
 
--- | Whether to associate the AWS OpsWorks built-in security groups with the stack's layers. AWS OpsWorks provides a standard set of built-in security groups, one for each layer, which are associated with layers by default. @UseOpsworksSecurityGroups@ allows you to provide your own custom security groups instead of using the built-in groups. @UseOpsworksSecurityGroups@ has the following settings:      * True - AWS OpsWorks automatically associates the appropriate built-in security group with each layer (default setting). You can associate additional security groups with a layer after you create it, but you cannot delete the built-in security group.     * False - AWS OpsWorks does not associate built-in security groups with layers. You must create appropriate EC2 security groups and associate a security group with each layer that you create. However, you can still manually associate a built-in security group with a layer on. Custom security groups are required only for those layers that need custom settings. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a New Stack> .
+-- | Whether to associate the AWS OpsWorks Stacks built-in security groups with the stack's layers. AWS OpsWorks Stacks provides a standard set of built-in security groups, one for each layer, which are associated with layers by default. @UseOpsworksSecurityGroups@ allows you to provide your own custom security groups instead of using the built-in groups. @UseOpsworksSecurityGroups@ has the following settings:      * True - AWS OpsWorks Stacks automatically associates the appropriate built-in security group with each layer (default setting). You can associate additional security groups with a layer after you create it, but you cannot delete the built-in security group.     * False - AWS OpsWorks Stacks does not associate built-in security groups with layers. You must create appropriate EC2 security groups and associate a security group with each layer that you create. However, you can still manually associate a built-in security group with a layer on. Custom security groups are required only for those layers that need custom settings. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a New Stack> .
 usUseOpsworksSecurityGroups :: Lens' UpdateStack (Maybe Bool)
 usUseOpsworksSecurityGroups = lens _usUseOpsworksSecurityGroups (\ s a -> s{_usUseOpsworksSecurityGroups = a});
 
@@ -223,9 +225,9 @@
         request = postJSON opsWorks
         response = receiveNull UpdateStackResponse'
 
-instance Hashable UpdateStack
+instance Hashable UpdateStack where
 
-instance NFData UpdateStack
+instance NFData UpdateStack where
 
 instance ToHeaders UpdateStack where
         toHeaders
@@ -273,13 +275,15 @@
 
 -- | /See:/ 'updateStackResponse' smart constructor.
 data UpdateStackResponse =
-    UpdateStackResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  UpdateStackResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateStackResponse' with the minimum fields required to make a request.
 --
 updateStackResponse
     :: UpdateStackResponse
 updateStackResponse = UpdateStackResponse'
 
-instance NFData UpdateStackResponse
+
+instance NFData UpdateStackResponse where
diff --git a/gen/Network/AWS/OpsWorks/UpdateUserProfile.hs b/gen/Network/AWS/OpsWorks/UpdateUserProfile.hs
--- a/gen/Network/AWS/OpsWorks/UpdateUserProfile.hs
+++ b/gen/Network/AWS/OpsWorks/UpdateUserProfile.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.UpdateUserProfile
--- 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,21 +39,22 @@
     , UpdateUserProfileResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'updateUserProfile' smart constructor.
 data UpdateUserProfile = UpdateUserProfile'
-    { _uupAllowSelfManagement :: !(Maybe Bool)
-    , _uupSSHPublicKey        :: !(Maybe Text)
-    , _uupSSHUsername         :: !(Maybe Text)
-    , _uupIAMUserARN          :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _uupAllowSelfManagement :: !(Maybe Bool)
+  , _uupSSHPublicKey        :: !(Maybe Text)
+  , _uupSSHUsername         :: !(Maybe Text)
+  , _uupIAMUserARN          :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateUserProfile' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -62,20 +63,21 @@
 --
 -- * 'uupSSHPublicKey' - The user's new SSH public key.
 --
--- * 'uupSSHUsername' - The user's SSH user name. The allowable characters are [a-z], [A-Z], [0-9], '-', and '_'. If the specified name includes other punctuation marks, AWS OpsWorks removes them. For example, @my.name@ will be changed to @myname@ . If you do not specify an SSH user name, AWS OpsWorks generates one from the IAM user name.
+-- * 'uupSSHUsername' - The user's SSH user name. The allowable characters are [a-z], [A-Z], [0-9], '-', and '_'. If the specified name includes other punctuation marks, AWS OpsWorks Stacks removes them. For example, @my.name@ will be changed to @myname@ . If you do not specify an SSH user name, AWS OpsWorks Stacks generates one from the IAM user name.
 --
 -- * 'uupIAMUserARN' - The user IAM ARN. This can also be a federated user's ARN.
 updateUserProfile
     :: Text -- ^ 'uupIAMUserARN'
     -> UpdateUserProfile
 updateUserProfile pIAMUserARN_ =
-    UpdateUserProfile'
-    { _uupAllowSelfManagement = Nothing
-    , _uupSSHPublicKey = Nothing
-    , _uupSSHUsername = Nothing
-    , _uupIAMUserARN = pIAMUserARN_
-    }
+  UpdateUserProfile'
+  { _uupAllowSelfManagement = Nothing
+  , _uupSSHPublicKey = Nothing
+  , _uupSSHUsername = Nothing
+  , _uupIAMUserARN = pIAMUserARN_
+  }
 
+
 -- | Whether users can specify their own SSH public key through the My Settings page. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/security-settingsshkey.html Managing User Permissions> .
 uupAllowSelfManagement :: Lens' UpdateUserProfile (Maybe Bool)
 uupAllowSelfManagement = lens _uupAllowSelfManagement (\ s a -> s{_uupAllowSelfManagement = a});
@@ -84,7 +86,7 @@
 uupSSHPublicKey :: Lens' UpdateUserProfile (Maybe Text)
 uupSSHPublicKey = lens _uupSSHPublicKey (\ s a -> s{_uupSSHPublicKey = a});
 
--- | The user's SSH user name. The allowable characters are [a-z], [A-Z], [0-9], '-', and '_'. If the specified name includes other punctuation marks, AWS OpsWorks removes them. For example, @my.name@ will be changed to @myname@ . If you do not specify an SSH user name, AWS OpsWorks generates one from the IAM user name.
+-- | The user's SSH user name. The allowable characters are [a-z], [A-Z], [0-9], '-', and '_'. If the specified name includes other punctuation marks, AWS OpsWorks Stacks removes them. For example, @my.name@ will be changed to @myname@ . If you do not specify an SSH user name, AWS OpsWorks Stacks generates one from the IAM user name.
 uupSSHUsername :: Lens' UpdateUserProfile (Maybe Text)
 uupSSHUsername = lens _uupSSHUsername (\ s a -> s{_uupSSHUsername = a});
 
@@ -97,9 +99,9 @@
         request = postJSON opsWorks
         response = receiveNull UpdateUserProfileResponse'
 
-instance Hashable UpdateUserProfile
+instance Hashable UpdateUserProfile where
 
-instance NFData UpdateUserProfile
+instance NFData UpdateUserProfile where
 
 instance ToHeaders UpdateUserProfile where
         toHeaders
@@ -129,13 +131,15 @@
 
 -- | /See:/ 'updateUserProfileResponse' smart constructor.
 data UpdateUserProfileResponse =
-    UpdateUserProfileResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  UpdateUserProfileResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateUserProfileResponse' with the minimum fields required to make a request.
 --
 updateUserProfileResponse
     :: UpdateUserProfileResponse
 updateUserProfileResponse = UpdateUserProfileResponse'
 
-instance NFData UpdateUserProfileResponse
+
+instance NFData UpdateUserProfileResponse where
diff --git a/gen/Network/AWS/OpsWorks/UpdateVolume.hs b/gen/Network/AWS/OpsWorks/UpdateVolume.hs
--- a/gen/Network/AWS/OpsWorks/UpdateVolume.hs
+++ b/gen/Network/AWS/OpsWorks/UpdateVolume.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.UpdateVolume
--- 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,20 +38,21 @@
     , UpdateVolumeResponse
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.OpsWorks.Types.Product
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.Types
+import Network.AWS.OpsWorks.Types.Product
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'updateVolume' smart constructor.
 data UpdateVolume = UpdateVolume'
-    { _uName       :: !(Maybe Text)
-    , _uMountPoint :: !(Maybe Text)
-    , _uVolumeId   :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _uName       :: !(Maybe Text)
+  , _uMountPoint :: !(Maybe Text)
+  , _uVolumeId   :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateVolume' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -65,12 +66,10 @@
     :: Text -- ^ 'uVolumeId'
     -> UpdateVolume
 updateVolume pVolumeId_ =
-    UpdateVolume'
-    { _uName = Nothing
-    , _uMountPoint = Nothing
-    , _uVolumeId = pVolumeId_
-    }
+  UpdateVolume'
+  {_uName = Nothing, _uMountPoint = Nothing, _uVolumeId = pVolumeId_}
 
+
 -- | The new name.
 uName :: Lens' UpdateVolume (Maybe Text)
 uName = lens _uName (\ s a -> s{_uName = a});
@@ -88,9 +87,9 @@
         request = postJSON opsWorks
         response = receiveNull UpdateVolumeResponse'
 
-instance Hashable UpdateVolume
+instance Hashable UpdateVolume where
 
-instance NFData UpdateVolume
+instance NFData UpdateVolume where
 
 instance ToHeaders UpdateVolume where
         toHeaders
@@ -117,13 +116,15 @@
 
 -- | /See:/ 'updateVolumeResponse' smart constructor.
 data UpdateVolumeResponse =
-    UpdateVolumeResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  UpdateVolumeResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateVolumeResponse' with the minimum fields required to make a request.
 --
 updateVolumeResponse
     :: UpdateVolumeResponse
 updateVolumeResponse = UpdateVolumeResponse'
 
-instance NFData UpdateVolumeResponse
+
+instance NFData UpdateVolumeResponse where
diff --git a/gen/Network/AWS/OpsWorks/Waiters.hs b/gen/Network/AWS/OpsWorks/Waiters.hs
--- a/gen/Network/AWS/OpsWorks/Waiters.hs
+++ b/gen/Network/AWS/OpsWorks/Waiters.hs
@@ -7,268 +7,246 @@
 
 -- |
 -- Module      : Network.AWS.OpsWorks.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.OpsWorks.Waiters where
 
-import           Network.AWS.Lens
-import           Network.AWS.OpsWorks.DescribeApps
-import           Network.AWS.OpsWorks.DescribeDeployments
-import           Network.AWS.OpsWorks.DescribeInstances
-import           Network.AWS.OpsWorks.DescribeInstances
-import           Network.AWS.OpsWorks.DescribeInstances
-import           Network.AWS.OpsWorks.DescribeInstances
-import           Network.AWS.OpsWorks.Types
-import           Network.AWS.Prelude
-import           Network.AWS.Waiter
+import Network.AWS.Lens
+import Network.AWS.OpsWorks.DescribeApps
+import Network.AWS.OpsWorks.DescribeDeployments
+import Network.AWS.OpsWorks.DescribeInstances
+import Network.AWS.OpsWorks.DescribeInstances
+import Network.AWS.OpsWorks.DescribeInstances
+import Network.AWS.OpsWorks.DescribeInstances
+import Network.AWS.OpsWorks.Types
+import Network.AWS.Prelude
+import Network.AWS.Waiter
 
 -- | Polls 'Network.AWS.OpsWorks.DescribeInstances' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
 instanceTerminated :: Wait DescribeInstances
 instanceTerminated =
-    Wait
-    { _waitName = "InstanceTerminated"
-    , _waitAttempts = 40
-    , _waitDelay = 15
-    , _waitAcceptors = [ matchAll
-                             "terminated"
-                             AcceptSuccess
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchError "ResourceNotFoundException" AcceptSuccess
-                       , matchAny
-                             "booting"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "online"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "pending"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "rebooting"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "requested"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "running_setup"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "setup_failed"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "start_failed"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)]
-    }
+  Wait
+  { _waitName = "InstanceTerminated"
+  , _waitAttempts = 40
+  , _waitDelay = 15
+  , _waitAcceptors =
+      [ matchAll
+          "terminated"
+          AcceptSuccess
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchError "ResourceNotFoundException" AcceptSuccess
+      , matchAny
+          "booting"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "online"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "pending"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "rebooting"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "requested"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "running_setup"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "setup_failed"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "start_failed"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      ]
+  }
 
+
 -- | Polls 'Network.AWS.OpsWorks.DescribeDeployments' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
 deploymentSuccessful :: Wait DescribeDeployments
 deploymentSuccessful =
-    Wait
-    { _waitName = "DeploymentSuccessful"
-    , _waitAttempts = 40
-    , _waitDelay = 15
-    , _waitAcceptors = [ matchAll
-                             "successful"
-                             AcceptSuccess
-                             (folding (concatOf ddrsDeployments) .
-                              dStatus . _Just . to toTextCI)
-                       , matchAny
-                             "failed"
-                             AcceptFailure
-                             (folding (concatOf ddrsDeployments) .
-                              dStatus . _Just . to toTextCI)]
-    }
+  Wait
+  { _waitName = "DeploymentSuccessful"
+  , _waitAttempts = 40
+  , _waitDelay = 15
+  , _waitAcceptors =
+      [ matchAll
+          "successful"
+          AcceptSuccess
+          (folding (concatOf ddrsDeployments) . dStatus . _Just . to toTextCI)
+      , matchAny
+          "failed"
+          AcceptFailure
+          (folding (concatOf ddrsDeployments) . dStatus . _Just . to toTextCI)
+      ]
+  }
 
+
 -- | Polls 'Network.AWS.OpsWorks.DescribeInstances' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
 instanceStopped :: Wait DescribeInstances
 instanceStopped =
-    Wait
-    { _waitName = "InstanceStopped"
-    , _waitAttempts = 40
-    , _waitDelay = 15
-    , _waitAcceptors = [ matchAll
-                             "stopped"
-                             AcceptSuccess
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "booting"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "online"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "pending"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "rebooting"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "requested"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "running_setup"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "setup_failed"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "start_failed"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "stop_failed"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)]
-    }
+  Wait
+  { _waitName = "InstanceStopped"
+  , _waitAttempts = 40
+  , _waitDelay = 15
+  , _waitAcceptors =
+      [ matchAll
+          "stopped"
+          AcceptSuccess
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "booting"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "online"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "pending"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "rebooting"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "requested"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "running_setup"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "setup_failed"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "start_failed"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "stop_failed"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      ]
+  }
 
+
 -- | Polls 'Network.AWS.OpsWorks.DescribeInstances' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
 instanceOnline :: Wait DescribeInstances
 instanceOnline =
-    Wait
-    { _waitName = "InstanceOnline"
-    , _waitAttempts = 40
-    , _waitDelay = 15
-    , _waitAcceptors = [ matchAll
-                             "online"
-                             AcceptSuccess
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "setup_failed"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "shutting_down"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "start_failed"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "stopped"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "stopping"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "terminating"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "terminated"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "stop_failed"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)]
-    }
+  Wait
+  { _waitName = "InstanceOnline"
+  , _waitAttempts = 40
+  , _waitDelay = 15
+  , _waitAcceptors =
+      [ matchAll
+          "online"
+          AcceptSuccess
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "setup_failed"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "shutting_down"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "start_failed"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "stopped"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "stopping"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "terminating"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "terminated"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "stop_failed"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      ]
+  }
 
+
 -- | Polls 'Network.AWS.OpsWorks.DescribeApps' every 1 seconds until a successful state is reached. An error is returned after 40 failed checks.
 appExists :: Wait DescribeApps
 appExists =
-    Wait
-    { _waitName = "AppExists"
-    , _waitAttempts = 40
-    , _waitDelay = 1
-    , _waitAcceptors = [ matchStatus 200 AcceptSuccess
-                       , matchStatus 400 AcceptFailure]
-    }
+  Wait
+  { _waitName = "AppExists"
+  , _waitAttempts = 40
+  , _waitDelay = 1
+  , _waitAcceptors =
+      [matchStatus 200 AcceptSuccess, matchStatus 400 AcceptFailure]
+  }
 
+
 -- | Polls 'Network.AWS.OpsWorks.DescribeInstances' every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.
 instanceRegistered :: Wait DescribeInstances
 instanceRegistered =
-    Wait
-    { _waitName = "InstanceRegistered"
-    , _waitAttempts = 40
-    , _waitDelay = 15
-    , _waitAcceptors = [ matchAll
-                             "registered"
-                             AcceptSuccess
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "setup_failed"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "shutting_down"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "stopped"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "stopping"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "terminating"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "terminated"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)
-                       , matchAny
-                             "stop_failed"
-                             AcceptFailure
-                             (folding (concatOf dirsInstances) .
-                              iStatus . _Just . to toTextCI)]
-    }
+  Wait
+  { _waitName = "InstanceRegistered"
+  , _waitAttempts = 40
+  , _waitDelay = 15
+  , _waitAcceptors =
+      [ matchAll
+          "registered"
+          AcceptSuccess
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "setup_failed"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "shutting_down"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "stopped"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "stopping"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "terminating"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "terminated"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      , matchAny
+          "stop_failed"
+          AcceptFailure
+          (folding (concatOf dirsInstances) . iStatus . _Just . to toTextCI)
+      ]
+  }
+
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -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)
 --
diff --git a/test/Test/AWS/Gen/OpsWorks.hs b/test/Test/AWS/Gen/OpsWorks.hs
--- a/test/Test/AWS/Gen/OpsWorks.hs
+++ b/test/Test/AWS/Gen/OpsWorks.hs
@@ -5,20 +5,20 @@
 
 -- |
 -- Module      : Test.AWS.Gen.OpsWorks
--- 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.OpsWorks where
 
 import Data.Proxy
+import Network.AWS.OpsWorks
 import Test.AWS.Fixture
+import Test.AWS.OpsWorks.Internal
 import Test.AWS.Prelude
 import Test.Tasty
-import Network.AWS.OpsWorks
-import Test.AWS.OpsWorks.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.
@@ -187,6 +187,12 @@
 --         , requestDescribeStackProvisioningParameters $
 --             describeStackProvisioningParameters
 --
+--         , requestTagResource $
+--             tagResource
+--
+--         , requestListTags $
+--             listTags
+--
 --         , requestUnassignInstance $
 --             unassignInstance
 --
@@ -205,6 +211,9 @@
 --         , requestRegisterRDSDBInstance $
 --             registerRDSDBInstance
 --
+--         , requestUntagResource $
+--             untagResource
+--
 --         , requestStartStack $
 --             startStack
 --
@@ -400,6 +409,12 @@
 --         , responseDescribeStackProvisioningParameters $
 --             describeStackProvisioningParametersResponse
 --
+--         , responseTagResource $
+--             tagResourceResponse
+--
+--         , responseListTags $
+--             listTagsResponse
+--
 --         , responseUnassignInstance $
 --             unassignInstanceResponse
 --
@@ -418,6 +433,9 @@
 --         , responseRegisterRDSDBInstance $
 --             registerRDSDBInstanceResponse
 --
+--         , responseUntagResource $
+--             untagResourceResponse
+--
 --         , responseStartStack $
 --             startStackResponse
 --
@@ -721,6 +739,16 @@
     "DescribeStackProvisioningParameters"
     "fixture/DescribeStackProvisioningParameters.yaml"
 
+requestTagResource :: TagResource -> TestTree
+requestTagResource = req
+    "TagResource"
+    "fixture/TagResource.yaml"
+
+requestListTags :: ListTags -> TestTree
+requestListTags = req
+    "ListTags"
+    "fixture/ListTags.yaml"
+
 requestUnassignInstance :: UnassignInstance -> TestTree
 requestUnassignInstance = req
     "UnassignInstance"
@@ -751,6 +779,11 @@
     "RegisterRDSDBInstance"
     "fixture/RegisterRDSDBInstance.yaml"
 
+requestUntagResource :: UntagResource -> TestTree
+requestUntagResource = req
+    "UntagResource"
+    "fixture/UntagResource.yaml"
+
 requestStartStack :: StartStack -> TestTree
 requestStartStack = req
     "StartStack"
@@ -1179,6 +1212,20 @@
     opsWorks
     (Proxy :: Proxy DescribeStackProvisioningParameters)
 
+responseTagResource :: TagResourceResponse -> TestTree
+responseTagResource = res
+    "TagResourceResponse"
+    "fixture/TagResourceResponse.proto"
+    opsWorks
+    (Proxy :: Proxy TagResource)
+
+responseListTags :: ListTagsResponse -> TestTree
+responseListTags = res
+    "ListTagsResponse"
+    "fixture/ListTagsResponse.proto"
+    opsWorks
+    (Proxy :: Proxy ListTags)
+
 responseUnassignInstance :: UnassignInstanceResponse -> TestTree
 responseUnassignInstance = res
     "UnassignInstanceResponse"
@@ -1220,6 +1267,13 @@
     "fixture/RegisterRDSDBInstanceResponse.proto"
     opsWorks
     (Proxy :: Proxy RegisterRDSDBInstance)
+
+responseUntagResource :: UntagResourceResponse -> TestTree
+responseUntagResource = res
+    "UntagResourceResponse"
+    "fixture/UntagResourceResponse.proto"
+    opsWorks
+    (Proxy :: Proxy UntagResource)
 
 responseStartStack :: StartStackResponse -> TestTree
 responseStartStack = res
