diff --git a/amazonka-opsworks.cabal b/amazonka-opsworks.cabal
--- a/amazonka-opsworks.cabal
+++ b/amazonka-opsworks.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-opsworks
-version:               0.0.7
+version:               0.0.8
 synopsis:              Amazon OpsWorks SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
@@ -36,6 +36,7 @@
 
     exposed-modules:
           Network.AWS.OpsWorks
+        , Network.AWS.OpsWorks.AssignInstance
         , Network.AWS.OpsWorks.AssignVolume
         , Network.AWS.OpsWorks.AssociateElasticIp
         , Network.AWS.OpsWorks.AttachElasticLoadBalancer
@@ -52,6 +53,7 @@
         , Network.AWS.OpsWorks.DeleteStack
         , Network.AWS.OpsWorks.DeleteUserProfile
         , Network.AWS.OpsWorks.DeregisterElasticIp
+        , Network.AWS.OpsWorks.DeregisterInstance
         , Network.AWS.OpsWorks.DeregisterRdsDbInstance
         , Network.AWS.OpsWorks.DeregisterVolume
         , Network.AWS.OpsWorks.DescribeApps
@@ -67,6 +69,7 @@
         , Network.AWS.OpsWorks.DescribeRaidArrays
         , Network.AWS.OpsWorks.DescribeRdsDbInstances
         , Network.AWS.OpsWorks.DescribeServiceErrors
+        , Network.AWS.OpsWorks.DescribeStackProvisioningParameters
         , Network.AWS.OpsWorks.DescribeStackSummary
         , Network.AWS.OpsWorks.DescribeStacks
         , Network.AWS.OpsWorks.DescribeTimeBasedAutoScaling
@@ -77,6 +80,7 @@
         , Network.AWS.OpsWorks.GetHostnameSuggestion
         , Network.AWS.OpsWorks.RebootInstance
         , Network.AWS.OpsWorks.RegisterElasticIp
+        , Network.AWS.OpsWorks.RegisterInstance
         , Network.AWS.OpsWorks.RegisterRdsDbInstance
         , Network.AWS.OpsWorks.RegisterVolume
         , Network.AWS.OpsWorks.SetLoadBasedAutoScaling
@@ -87,6 +91,7 @@
         , Network.AWS.OpsWorks.StopInstance
         , Network.AWS.OpsWorks.StopStack
         , Network.AWS.OpsWorks.Types
+        , Network.AWS.OpsWorks.UnassignInstance
         , Network.AWS.OpsWorks.UnassignVolume
         , Network.AWS.OpsWorks.UpdateApp
         , Network.AWS.OpsWorks.UpdateElasticIp
@@ -101,5 +106,5 @@
     other-modules:
 
     build-depends:
-          amazonka-core == 0.0.7.*
+          amazonka-core == 0.0.8.*
         , base          >= 4.7     && < 5
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
@@ -15,7 +15,8 @@
 -- their configuration, deploy applications to those resources, and monitor
 -- their health.
 module Network.AWS.OpsWorks
-    ( module Network.AWS.OpsWorks.AssignVolume
+    ( module Network.AWS.OpsWorks.AssignInstance
+    , module Network.AWS.OpsWorks.AssignVolume
     , module Network.AWS.OpsWorks.AssociateElasticIp
     , module Network.AWS.OpsWorks.AttachElasticLoadBalancer
     , module Network.AWS.OpsWorks.CloneStack
@@ -31,6 +32,7 @@
     , module Network.AWS.OpsWorks.DeleteStack
     , module Network.AWS.OpsWorks.DeleteUserProfile
     , module Network.AWS.OpsWorks.DeregisterElasticIp
+    , module Network.AWS.OpsWorks.DeregisterInstance
     , module Network.AWS.OpsWorks.DeregisterRdsDbInstance
     , module Network.AWS.OpsWorks.DeregisterVolume
     , module Network.AWS.OpsWorks.DescribeApps
@@ -46,6 +48,7 @@
     , module Network.AWS.OpsWorks.DescribeRaidArrays
     , module Network.AWS.OpsWorks.DescribeRdsDbInstances
     , module Network.AWS.OpsWorks.DescribeServiceErrors
+    , module Network.AWS.OpsWorks.DescribeStackProvisioningParameters
     , module Network.AWS.OpsWorks.DescribeStackSummary
     , module Network.AWS.OpsWorks.DescribeStacks
     , module Network.AWS.OpsWorks.DescribeTimeBasedAutoScaling
@@ -56,6 +59,7 @@
     , module Network.AWS.OpsWorks.GetHostnameSuggestion
     , module Network.AWS.OpsWorks.RebootInstance
     , module Network.AWS.OpsWorks.RegisterElasticIp
+    , module Network.AWS.OpsWorks.RegisterInstance
     , module Network.AWS.OpsWorks.RegisterRdsDbInstance
     , module Network.AWS.OpsWorks.RegisterVolume
     , module Network.AWS.OpsWorks.SetLoadBasedAutoScaling
@@ -66,6 +70,7 @@
     , module Network.AWS.OpsWorks.StopInstance
     , module Network.AWS.OpsWorks.StopStack
     , module Network.AWS.OpsWorks.Types
+    , module Network.AWS.OpsWorks.UnassignInstance
     , module Network.AWS.OpsWorks.UnassignVolume
     , module Network.AWS.OpsWorks.UpdateApp
     , module Network.AWS.OpsWorks.UpdateElasticIp
@@ -78,6 +83,7 @@
     , module Network.AWS.OpsWorks.UpdateVolume
     ) where
 
+import Network.AWS.OpsWorks.AssignInstance
 import Network.AWS.OpsWorks.AssignVolume
 import Network.AWS.OpsWorks.AssociateElasticIp
 import Network.AWS.OpsWorks.AttachElasticLoadBalancer
@@ -94,6 +100,7 @@
 import Network.AWS.OpsWorks.DeleteStack
 import Network.AWS.OpsWorks.DeleteUserProfile
 import Network.AWS.OpsWorks.DeregisterElasticIp
+import Network.AWS.OpsWorks.DeregisterInstance
 import Network.AWS.OpsWorks.DeregisterRdsDbInstance
 import Network.AWS.OpsWorks.DeregisterVolume
 import Network.AWS.OpsWorks.DescribeApps
@@ -109,6 +116,7 @@
 import Network.AWS.OpsWorks.DescribeRaidArrays
 import Network.AWS.OpsWorks.DescribeRdsDbInstances
 import Network.AWS.OpsWorks.DescribeServiceErrors
+import Network.AWS.OpsWorks.DescribeStackProvisioningParameters
 import Network.AWS.OpsWorks.DescribeStackSummary
 import Network.AWS.OpsWorks.DescribeStacks
 import Network.AWS.OpsWorks.DescribeTimeBasedAutoScaling
@@ -119,6 +127,7 @@
 import Network.AWS.OpsWorks.GetHostnameSuggestion
 import Network.AWS.OpsWorks.RebootInstance
 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
@@ -129,6 +138,7 @@
 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
diff --git a/gen/Network/AWS/OpsWorks/AssignInstance.hs b/gen/Network/AWS/OpsWorks/AssignInstance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/OpsWorks/AssignInstance.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DataKinds                   #-}
+{-# LANGUAGE DeriveGeneric               #-}
+{-# LANGUAGE FlexibleInstances           #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
+{-# LANGUAGE LambdaCase                  #-}
+{-# LANGUAGE NoImplicitPrelude           #-}
+{-# LANGUAGE OverloadedStrings           #-}
+{-# LANGUAGE RecordWildCards             #-}
+{-# LANGUAGE TypeFamilies                #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Network.AWS.OpsWorks.AssignInstance
+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
+-- License     : This Source Code Form is subject to the terms of
+--               the Mozilla Public License, v. 2.0.
+--               A copy of the MPL can be found in the LICENSE file or
+--               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : experimental
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- | Assign a registered instance to a custom layer. You cannot use this action
+-- with instances that were created with AWS OpsWorks.
+--
+-- 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 UserPermissions>.
+--
+-- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_AssignInstance.html>
+module Network.AWS.OpsWorks.AssignInstance
+    (
+    -- * Request
+      AssignInstance
+    -- ** Request constructor
+    , assignInstance
+    -- ** Request lenses
+    , aiInstanceId
+    , aiLayerIds
+
+    -- * Response
+    , AssignInstanceResponse
+    -- ** Response constructor
+    , assignInstanceResponse
+    ) where
+
+import Network.AWS.Prelude
+import Network.AWS.Request.JSON
+import Network.AWS.OpsWorks.Types
+import qualified GHC.Exts
+
+data AssignInstance = AssignInstance
+    { _aiInstanceId :: Text
+    , _aiLayerIds   :: List "InstanceIds" Text
+    } deriving (Eq, Ord, Show)
+
+-- | 'AssignInstance' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'aiInstanceId' @::@ 'Text'
+--
+-- * 'aiLayerIds' @::@ ['Text']
+--
+assignInstance :: Text -- ^ 'aiInstanceId'
+               -> AssignInstance
+assignInstance p1 = AssignInstance
+    { _aiInstanceId = p1
+    , _aiLayerIds   = mempty
+    }
+
+-- | The instance ID.
+aiInstanceId :: Lens' AssignInstance Text
+aiInstanceId = lens _aiInstanceId (\s a -> s { _aiInstanceId = a })
+
+-- | The layer ID, which must correspond to a custom layer. You cannot assign a
+-- registered instance to a built-in layer.
+aiLayerIds :: Lens' AssignInstance [Text]
+aiLayerIds = lens _aiLayerIds (\s a -> s { _aiLayerIds = a }) . _List
+
+data AssignInstanceResponse = AssignInstanceResponse
+    deriving (Eq, Ord, Show, Generic)
+
+-- | 'AssignInstanceResponse' constructor.
+assignInstanceResponse :: AssignInstanceResponse
+assignInstanceResponse = AssignInstanceResponse
+
+instance ToPath AssignInstance where
+    toPath = const "/"
+
+instance ToQuery AssignInstance where
+    toQuery = const mempty
+
+instance ToHeaders AssignInstance
+
+instance ToJSON AssignInstance where
+    toJSON AssignInstance{..} = object
+        [ "InstanceId" .= _aiInstanceId
+        , "LayerIds"   .= _aiLayerIds
+        ]
+
+instance AWSRequest AssignInstance where
+    type Sv AssignInstance = OpsWorks
+    type Rs AssignInstance = AssignInstanceResponse
+
+    request  = post "AssignInstance"
+    response = nullResponse AssignInstanceResponse
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
@@ -25,6 +25,9 @@
 -- | 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>.
 --
+-- You must create the Elastic Load Balancing instance separately, by using
+-- the Elastic Load Balancing console, API, or CLI. For more information, see <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/Welcome.html Elastic Load Balancing Developer Guide>.
+--
 -- 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 UserPermissions>.
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
@@ -226,8 +226,11 @@
     lens _cs1DefaultInstanceProfileArn
         (\s a -> s { _cs1DefaultInstanceProfileArn = a })
 
--- | The cloned stack's default operating system, which must be set to 'Amazon Linux'
--- or 'Ubuntu 12.04 LTS'. The default option is 'Amazon Linux'.
+-- | The stacks's operating system, which must be set to one of the following.
+--
+-- Standard operating systems: an Amazon Linux version such as 'Amazon Linux2014.09', 'Ubuntu 12.04 LTS', or 'Ubuntu 14.04 LTS'. Custom AMIs: 'Custom'. You
+-- specify the custom AMI you want to use when you create instances.   The
+-- default option is the current Amazon Linux version.
 cs1DefaultOs :: Lens' CloneStack (Maybe Text)
 cs1DefaultOs = lens _cs1DefaultOs (\s a -> s { _cs1DefaultOs = a })
 
@@ -245,11 +248,12 @@
 cs1DefaultSshKeyName =
     lens _cs1DefaultSshKeyName (\s a -> s { _cs1DefaultSshKeyName = a })
 
--- | The stack's default subnet ID. All instances will be launched into this
--- subnet unless you specify otherwise when you create the instance. If you also
--- specify a value for 'DefaultAvailabilityZone', the subnet must be in the same
--- zone. For information on default values and when this parameter is required,
--- see the 'VpcId' parameter description.
+-- | The stack's default VPC subnet ID. This parameter is required if you specify
+-- a value for the 'VpcId' parameter. All instances are launched into this subnet
+-- unless you specify otherwise when you create the instance. If you also
+-- specify a value for 'DefaultAvailabilityZone', the subnet must be in that zone.
+-- For information on default values and when this parameter is required, see
+-- the 'VpcId' parameter description.
 cs1DefaultSubnetId :: Lens' CloneStack (Maybe Text)
 cs1DefaultSubnetId =
     lens _cs1DefaultSubnetId (\s a -> s { _cs1DefaultSubnetId = a })
@@ -278,6 +282,12 @@
 -- 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>.
+--
+-- You must set this parameter to a valid service role ARN or the action will
+-- fail; there is no default value. You can specify the source stack's service
+-- role ARN, if you prefer, but you must do so explicitly.
+--
+--
 cs1ServiceRoleArn :: Lens' CloneStack Text
 cs1ServiceRoleArn =
     lens _cs1ServiceRoleArn (\s a -> s { _cs1ServiceRoleArn = a })
@@ -312,7 +322,7 @@
         (\s a -> s { _cs1UseOpsworksSecurityGroups = a })
 
 -- | The ID of the VPC that the cloned stack is to be launched into. It must be in
--- the specified region. All instances will be launched into this VPC, and you
+-- 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
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
@@ -42,6 +42,7 @@
     , caDescription
     , caDomains
     , caEnableSsl
+    , caEnvironment
     , caName
     , caShortname
     , caSslConfiguration
@@ -68,6 +69,7 @@
     , _caDescription      :: Maybe Text
     , _caDomains          :: List "InstanceIds" Text
     , _caEnableSsl        :: Maybe Bool
+    , _caEnvironment      :: List "Environment" EnvironmentVariable
     , _caName             :: Text
     , _caShortname        :: Maybe Text
     , _caSslConfiguration :: Maybe SslConfiguration
@@ -91,6 +93,8 @@
 --
 -- * 'caEnableSsl' @::@ 'Maybe' 'Bool'
 --
+-- * 'caEnvironment' @::@ ['EnvironmentVariable']
+--
 -- * 'caName' @::@ 'Text'
 --
 -- * 'caShortname' @::@ 'Maybe' 'Text'
@@ -117,6 +121,7 @@
     , _caEnableSsl        = Nothing
     , _caSslConfiguration = Nothing
     , _caAttributes       = mempty
+    , _caEnvironment      = mempty
     }
 
 -- | A 'Source' object that specifies the app repository.
@@ -144,6 +149,16 @@
 caEnableSsl :: Lens' CreateApp (Maybe Bool)
 caEnableSsl = lens _caEnableSsl (\s a -> s { _caEnableSsl = a })
 
+-- | An array of 'EnvironmentVariable' objects that specify environment variables to
+-- be associated with the app. You can specify up to ten environment variables.
+-- After you deploy the app, these variables are defined on the associated app
+-- server instance.
+--
+-- This parameter is supported only by Chef 11.10 stacks. If you have specified
+-- one or more environment variables, you cannot modify the stack's Chef version.
+caEnvironment :: Lens' CreateApp [EnvironmentVariable]
+caEnvironment = lens _caEnvironment (\s a -> s { _caEnvironment = a }) . _List
+
 -- | The app name.
 caName :: Lens' CreateApp Text
 caName = lens _caName (\s a -> s { _caName = a })
@@ -208,6 +223,7 @@
         , "EnableSsl"        .= _caEnableSsl
         , "SslConfiguration" .= _caSslConfiguration
         , "Attributes"       .= _caAttributes
+        , "Environment"      .= _caEnvironment
         ]
 
 instance AWSRequest CreateApp 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
@@ -22,12 +22,8 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | Deploys a stack or app.
---
--- App deployment generates a 'deploy' event, which runs the associated recipes
--- and passes them a JSON stack configuration object that includes information
--- about the app.  Stack deployment runs the 'deploy' recipes but does not raise
--- an event.  For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-deploying.html Deploying Apps> and <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-commands.html Run Stack Commands>.
+-- | Runs deployment or stack commands. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-deploying.html Deploying Apps>
+-- and <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-commands.html Run Stack Commands>.
 --
 -- Required Permissions: To use this action, an IAM user must have a Deploy or
 -- Manage permissions level for the stack, or an attached policy that explicitly
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
@@ -139,8 +139,10 @@
     }
 
 -- | A custom AMI ID to be used to create the instance. The AMI should be based on
--- one of the standard AWS OpsWorks APIs: Amazon Linux or Ubuntu 12.04 LTS. For
--- more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances.html Instances>
+-- one of the standard AWS OpsWorks AMIs: Amazon Linux, Ubuntu 12.04 LTS, or
+-- Ubuntu 14.04 LTS. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances.html Instances>.
+--
+-- If you specify a custom AMI, you must set 'Os' to 'Custom'.
 ciAmiId :: Lens' CreateInstance (Maybe Text)
 ciAmiId = lens _ciAmiId (\s a -> s { _ciAmiId = a })
 
@@ -150,15 +152,7 @@
 ciArchitecture :: Lens' CreateInstance (Maybe Architecture)
 ciArchitecture = lens _ciArchitecture (\s a -> s { _ciArchitecture = a })
 
--- | The instance auto scaling type, which has three possible values:
---
--- AlwaysRunning: A 24/7 instance, which is not affected by auto scaling.  TimeBasedAutoScaling
--- : A time-based auto scaling instance, which is started and stopped based on a
--- specified schedule. To specify the schedule, call 'SetTimeBasedAutoScaling'.  LoadBasedAutoScaling
--- : A load-based auto scaling instance, which is started and stopped based on
--- load metrics. To use load-based auto scaling, you must enable it for the
--- instance layer and configure the thresholds by calling 'SetLoadBasedAutoScaling'
--- .
+-- | For load-based or time-based instances, the type.
 ciAutoScalingType :: Lens' CreateInstance (Maybe AutoScalingType)
 ciAutoScalingType =
     lens _ciAutoScalingType (\s a -> s { _ciAutoScalingType = a })
@@ -180,6 +174,11 @@
 -- boots. The default value is 'true'. To control when updates are installed, set
 -- this value to 'false'. You must then update your instances manually by using 'CreateDeployment' to run the 'update_dependencies' stack command or manually running 'yum' (Amazon
 -- Linux) or 'apt-get' (Ubuntu) on the instances.
+--
+-- We strongly recommend using the default value of 'true' to ensure that your
+-- instances have the latest security updates.
+--
+--
 ciInstallUpdatesOnBoot :: Lens' CreateInstance (Maybe Bool)
 ciInstallUpdatesOnBoot =
     lens _ciInstallUpdatesOnBoot (\s a -> s { _ciInstallUpdatesOnBoot = a })
@@ -194,13 +193,14 @@
 ciLayerIds :: Lens' CreateInstance [Text]
 ciLayerIds = lens _ciLayerIds (\s a -> s { _ciLayerIds = a }) . _List
 
--- | The instance operating system, which must be set to one of the following.
+-- | The instance's operating system, which must be set to one of the following.
 --
--- Standard operating systems: 'Amazon Linux' or 'Ubuntu 12.04 LTS'  Custom AMIs: 'Custom'   The default option is 'Amazon Linux'. If you set this parameter to 'Custom',
--- you must use the 'CreateInstance' action's AmiId parameter to specify the
--- custom AMI that you want to use. For more information on the standard
--- operating systems, see <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>.
+-- Standard operating systems: an Amazon Linux version such as 'Amazon Linux2014.09', 'Ubuntu 12.04 LTS', or 'Ubuntu 14.04 LTS'. Custom AMIs: 'Custom'   The
+-- default option is the current Amazon Linux version. If you set this parameter
+-- to 'Custom', you must use the 'CreateInstance' action's AmiId parameter to
+-- specify the custom AMI that you want to use. For more information on the
+-- standard operating systems, see <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>.
 ciOs :: Lens' CreateInstance (Maybe Text)
 ciOs = lens _ciOs (\s a -> s { _ciOs = a })
 
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
@@ -24,6 +24,13 @@
 
 -- | Creates a layer. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-basics-create.html How to Create a Layer>.
 --
+-- You should use CreateLayer for noncustom layer types such as PHP App Server
+-- only if the stack does not have an existing layer of that type. A stack can
+-- have at most one instance of each noncustom layer; if you attempt to create a
+-- second instance, CreateLayer fails. A stack can have an arbitrary number of
+-- custom layers, so you can call CreateLayer as many times as you like for that
+-- layer type.
+--
 -- 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 UserPermissions>.
@@ -44,6 +51,7 @@
     , clCustomSecurityGroupIds
     , clEnableAutoHealing
     , clInstallUpdatesOnBoot
+    , clLifecycleEventConfiguration
     , clName
     , clPackages
     , clShortname
@@ -66,21 +74,22 @@
 import qualified GHC.Exts
 
 data CreateLayer = CreateLayer
-    { _clAttributes               :: Map LayerAttributesKeys Text
-    , _clAutoAssignElasticIps     :: Maybe Bool
-    , _clAutoAssignPublicIps      :: Maybe Bool
-    , _clCustomInstanceProfileArn :: Maybe Text
-    , _clCustomRecipes            :: Maybe Recipes
-    , _clCustomSecurityGroupIds   :: List "InstanceIds" Text
-    , _clEnableAutoHealing        :: Maybe Bool
-    , _clInstallUpdatesOnBoot     :: Maybe Bool
-    , _clName                     :: Text
-    , _clPackages                 :: List "InstanceIds" Text
-    , _clShortname                :: Text
-    , _clStackId                  :: Text
-    , _clType                     :: LayerType
-    , _clUseEbsOptimizedInstances :: Maybe Bool
-    , _clVolumeConfigurations     :: List "VolumeConfigurations" VolumeConfiguration
+    { _clAttributes                  :: Map LayerAttributesKeys Text
+    , _clAutoAssignElasticIps        :: Maybe Bool
+    , _clAutoAssignPublicIps         :: Maybe Bool
+    , _clCustomInstanceProfileArn    :: Maybe Text
+    , _clCustomRecipes               :: Maybe Recipes
+    , _clCustomSecurityGroupIds      :: List "InstanceIds" Text
+    , _clEnableAutoHealing           :: Maybe Bool
+    , _clInstallUpdatesOnBoot        :: Maybe Bool
+    , _clLifecycleEventConfiguration :: Maybe LifecycleEventConfiguration
+    , _clName                        :: Text
+    , _clPackages                    :: List "InstanceIds" Text
+    , _clShortname                   :: Text
+    , _clStackId                     :: Text
+    , _clType                        :: LayerType
+    , _clUseEbsOptimizedInstances    :: Maybe Bool
+    , _clVolumeConfigurations        :: List "VolumeConfigurations" VolumeConfiguration
     } deriving (Eq, Show)
 
 -- | 'CreateLayer' constructor.
@@ -103,6 +112,8 @@
 --
 -- * 'clInstallUpdatesOnBoot' @::@ 'Maybe' 'Bool'
 --
+-- * 'clLifecycleEventConfiguration' @::@ 'Maybe' 'LifecycleEventConfiguration'
+--
 -- * 'clName' @::@ 'Text'
 --
 -- * 'clPackages' @::@ ['Text']
@@ -123,21 +134,22 @@
             -> Text -- ^ 'clShortname'
             -> CreateLayer
 createLayer p1 p2 p3 p4 = CreateLayer
-    { _clStackId                  = p1
-    , _clType                     = p2
-    , _clName                     = p3
-    , _clShortname                = p4
-    , _clAttributes               = mempty
-    , _clCustomInstanceProfileArn = Nothing
-    , _clCustomSecurityGroupIds   = mempty
-    , _clPackages                 = mempty
-    , _clVolumeConfigurations     = mempty
-    , _clEnableAutoHealing        = Nothing
-    , _clAutoAssignElasticIps     = Nothing
-    , _clAutoAssignPublicIps      = Nothing
-    , _clCustomRecipes            = Nothing
-    , _clInstallUpdatesOnBoot     = Nothing
-    , _clUseEbsOptimizedInstances = Nothing
+    { _clStackId                     = p1
+    , _clType                        = p2
+    , _clName                        = p3
+    , _clShortname                   = p4
+    , _clAttributes                  = mempty
+    , _clCustomInstanceProfileArn    = Nothing
+    , _clCustomSecurityGroupIds      = mempty
+    , _clPackages                    = mempty
+    , _clVolumeConfigurations        = mempty
+    , _clEnableAutoHealing           = Nothing
+    , _clAutoAssignElasticIps        = Nothing
+    , _clAutoAssignPublicIps         = Nothing
+    , _clCustomRecipes               = Nothing
+    , _clInstallUpdatesOnBoot        = Nothing
+    , _clUseEbsOptimizedInstances    = Nothing
+    , _clLifecycleEventConfiguration = Nothing
     }
 
 -- | One or more user-defined key/value pairs to be added to the stack attributes.
@@ -183,10 +195,23 @@
 -- boots. The default value is 'true'. To control when updates are installed, set
 -- this value to 'false'. You must then update your instances manually by using 'CreateDeployment' to run the 'update_dependencies' stack command or manually running 'yum' (Amazon
 -- Linux) or 'apt-get' (Ubuntu) on the instances.
+--
+-- We strongly recommend using the default value of 'true', to ensure that your
+-- instances have the latest security updates.
+--
+--
 clInstallUpdatesOnBoot :: Lens' CreateLayer (Maybe Bool)
 clInstallUpdatesOnBoot =
     lens _clInstallUpdatesOnBoot (\s a -> s { _clInstallUpdatesOnBoot = 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 })
+
 -- | The layer name, which is used by the console.
 clName :: Lens' CreateLayer Text
 clName = lens _clName (\s a -> s { _clName = a })
@@ -207,13 +232,7 @@
 clStackId = lens _clStackId (\s a -> s { _clStackId = a })
 
 -- | The layer type. A stack cannot have more than one built-in layer of the same
--- type. It can have any number of custom layers. This parameter must be set to
--- one of the following:
---
--- custom: A custom layer db-master: A MySQL layer java-app: A Java App Server
--- layer rails-app: A Rails App Server layer lb: An HAProxy layer memcached: A
--- Memcached layer monitoring-master: A Ganglia layer nodejs-app: A Node.js App
--- Server layer php-app: A PHP App Server layer web: A Static Web Server layer
+-- type. It can have any number of custom layers.
 clType :: Lens' CreateLayer LayerType
 clType = lens _clType (\s a -> s { _clType = a })
 
@@ -258,21 +277,22 @@
 
 instance ToJSON CreateLayer where
     toJSON CreateLayer{..} = object
-        [ "StackId"                  .= _clStackId
-        , "Type"                     .= _clType
-        , "Name"                     .= _clName
-        , "Shortname"                .= _clShortname
-        , "Attributes"               .= _clAttributes
-        , "CustomInstanceProfileArn" .= _clCustomInstanceProfileArn
-        , "CustomSecurityGroupIds"   .= _clCustomSecurityGroupIds
-        , "Packages"                 .= _clPackages
-        , "VolumeConfigurations"     .= _clVolumeConfigurations
-        , "EnableAutoHealing"        .= _clEnableAutoHealing
-        , "AutoAssignElasticIps"     .= _clAutoAssignElasticIps
-        , "AutoAssignPublicIps"      .= _clAutoAssignPublicIps
-        , "CustomRecipes"            .= _clCustomRecipes
-        , "InstallUpdatesOnBoot"     .= _clInstallUpdatesOnBoot
-        , "UseEbsOptimizedInstances" .= _clUseEbsOptimizedInstances
+        [ "StackId"                     .= _clStackId
+        , "Type"                        .= _clType
+        , "Name"                        .= _clName
+        , "Shortname"                   .= _clShortname
+        , "Attributes"                  .= _clAttributes
+        , "CustomInstanceProfileArn"    .= _clCustomInstanceProfileArn
+        , "CustomSecurityGroupIds"      .= _clCustomSecurityGroupIds
+        , "Packages"                    .= _clPackages
+        , "VolumeConfigurations"        .= _clVolumeConfigurations
+        , "EnableAutoHealing"           .= _clEnableAutoHealing
+        , "AutoAssignElasticIps"        .= _clAutoAssignElasticIps
+        , "AutoAssignPublicIps"         .= _clAutoAssignPublicIps
+        , "CustomRecipes"               .= _clCustomRecipes
+        , "InstallUpdatesOnBoot"        .= _clInstallUpdatesOnBoot
+        , "UseEbsOptimizedInstances"    .= _clUseEbsOptimizedInstances
+        , "LifecycleEventConfiguration" .= _clLifecycleEventConfiguration
         ]
 
 instance AWSRequest CreateLayer 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
@@ -202,7 +202,11 @@
     lens _csDefaultInstanceProfileArn
         (\s a -> s { _csDefaultInstanceProfileArn = a })
 
--- | The stack's default operating system, which must be set to 'Amazon Linux' or 'Ubuntu 12.04 LTS'. The default option is 'Amazon Linux'.
+-- | The stack's operating system, which must be set to one of the following.
+--
+-- Standard operating systems: an Amazon Linux version such as 'Amazon Linux2014.09', 'Ubuntu 12.04 LTS', or 'Ubuntu 14.04 LTS'. Custom AMIs: 'Custom'. You
+-- specify the custom AMI you want to use when you create instances.   The
+-- default option is the current Amazon Linux version.
 csDefaultOs :: Lens' CreateStack (Maybe Text)
 csDefaultOs = lens _csDefaultOs (\s a -> s { _csDefaultOs = a })
 
@@ -219,8 +223,9 @@
 csDefaultSshKeyName =
     lens _csDefaultSshKeyName (\s a -> s { _csDefaultSshKeyName = a })
 
--- | The stack's default subnet ID. All instances will be launched into this
--- subnet unless you specify otherwise when you create the instance. If you also
+-- | The stack's default VPC subnet ID. This parameter is required if you specify
+-- a value for the 'VpcId' parameter. All instances are launched into this subnet
+-- unless you specify otherwise when you create the instance. If you also
 -- specify a value for 'DefaultAvailabilityZone', the subnet must be in that zone.
 -- For information on default values and when this parameter is required, see
 -- the 'VpcId' parameter description.
@@ -280,8 +285,8 @@
         (\s a -> s { _csUseOpsworksSecurityGroups = a })
 
 -- | The ID of the VPC that the stack is to be launched into. It must be in the
--- specified region. All instances will be launched into this VPC, and you
--- cannot change the ID later.
+-- 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
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
@@ -22,8 +22,10 @@
 --
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
--- | Deletes a specified instance. You must stop an instance before you can delete
--- it. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-delete.html Deleting Instances>.
+-- | Deletes a specified instance, which terminates the associated Amazon EC2
+-- instance. You must stop an instance before you can delete it.
+--
+-- For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-delete.html Deleting Instances>.
 --
 -- 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
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
@@ -23,7 +23,7 @@
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
 -- | Deletes a specified layer. You must first stop and then delete all associated
--- instances. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-basics-delete.html How to Delete a Layer>.
+-- instances or unassign registered instances. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-basics-delete.html How toDelete a Layer>.
 --
 -- 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
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
@@ -23,7 +23,7 @@
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
 -- | Deletes a specified stack. You must first delete all instances, layers, and
--- apps. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-shutting.html Shut Down a Stack>.
+-- apps or deregister registered instances. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-shutting.html Shut Downa Stack>.
 --
 -- 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
diff --git a/gen/Network/AWS/OpsWorks/DeregisterInstance.hs b/gen/Network/AWS/OpsWorks/DeregisterInstance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/OpsWorks/DeregisterInstance.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DataKinds                   #-}
+{-# LANGUAGE DeriveGeneric               #-}
+{-# LANGUAGE FlexibleInstances           #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
+{-# LANGUAGE LambdaCase                  #-}
+{-# LANGUAGE NoImplicitPrelude           #-}
+{-# LANGUAGE OverloadedStrings           #-}
+{-# LANGUAGE RecordWildCards             #-}
+{-# LANGUAGE TypeFamilies                #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Network.AWS.OpsWorks.DeregisterInstance
+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
+-- License     : This Source Code Form is subject to the terms of
+--               the Mozilla Public License, v. 2.0.
+--               A copy of the MPL can be found in the LICENSE file or
+--               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : experimental
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- | 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.
+--
+-- 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 UserPermissions>.
+--
+-- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DeregisterInstance.html>
+module Network.AWS.OpsWorks.DeregisterInstance
+    (
+    -- * Request
+      DeregisterInstance
+    -- ** Request constructor
+    , deregisterInstance
+    -- ** Request lenses
+    , di1InstanceId
+
+    -- * Response
+    , DeregisterInstanceResponse
+    -- ** Response constructor
+    , deregisterInstanceResponse
+    ) where
+
+import Network.AWS.Prelude
+import Network.AWS.Request.JSON
+import Network.AWS.OpsWorks.Types
+import qualified GHC.Exts
+
+newtype DeregisterInstance = DeregisterInstance
+    { _di1InstanceId :: Text
+    } deriving (Eq, Ord, Show, Monoid, IsString)
+
+-- | 'DeregisterInstance' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'di1InstanceId' @::@ 'Text'
+--
+deregisterInstance :: Text -- ^ 'di1InstanceId'
+                   -> DeregisterInstance
+deregisterInstance p1 = DeregisterInstance
+    { _di1InstanceId = p1
+    }
+
+-- | The instance ID.
+di1InstanceId :: Lens' DeregisterInstance Text
+di1InstanceId = lens _di1InstanceId (\s a -> s { _di1InstanceId = a })
+
+data DeregisterInstanceResponse = DeregisterInstanceResponse
+    deriving (Eq, Ord, Show, Generic)
+
+-- | 'DeregisterInstanceResponse' constructor.
+deregisterInstanceResponse :: DeregisterInstanceResponse
+deregisterInstanceResponse = DeregisterInstanceResponse
+
+instance ToPath DeregisterInstance where
+    toPath = const "/"
+
+instance ToQuery DeregisterInstance where
+    toQuery = const mempty
+
+instance ToHeaders DeregisterInstance
+
+instance ToJSON DeregisterInstance where
+    toJSON DeregisterInstance{..} = object
+        [ "InstanceId" .= _di1InstanceId
+        ]
+
+instance AWSRequest DeregisterInstance where
+    type Sv DeregisterInstance = OpsWorks
+    type Rs DeregisterInstance = DeregisterInstanceResponse
+
+    request  = post "DeregisterInstance"
+    response = nullResponse DeregisterInstanceResponse
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
@@ -24,6 +24,10 @@
 
 -- | Deregisters an Amazon RDS 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 UserPermissions>.
+--
 -- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DeregisterRdsDbInstance.html>
 module Network.AWS.OpsWorks.DeregisterRdsDbInstance
     (
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
@@ -24,6 +24,8 @@
 
 -- | Requests a description of a specified set of apps.
 --
+-- You must specify at least one of the parameters.
+--
 -- 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>.
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
@@ -24,6 +24,8 @@
 
 -- | Describes the results of specified commands.
 --
+-- You must specify at least one of the parameters.
+--
 -- 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>.
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
@@ -24,6 +24,8 @@
 
 -- | Requests a description of a specified set of deployments.
 --
+-- You must specify at least one of the parameters.
+--
 -- 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>.
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
@@ -24,6 +24,8 @@
 
 -- | Describes <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP addresses>.
 --
+-- You must specify at least one of the parameters.
+--
 -- 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>.
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
@@ -24,6 +24,8 @@
 
 -- | Describes a stack's Elastic Load Balancing instances.
 --
+-- You must specify at least one of the parameters.
+--
 -- 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>.
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
@@ -24,6 +24,8 @@
 
 -- | Requests a description of a set of instances.
 --
+-- You must specify at least one of the parameters.
+--
 -- 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>.
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
@@ -24,6 +24,8 @@
 
 -- | Requests a description of one or more layers in a specified stack.
 --
+-- You must specify at least one of the parameters.
+--
 -- 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>.
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
@@ -24,6 +24,8 @@
 
 -- | Describes load-based auto scaling configurations for specified layers.
 --
+-- You must specify at least one of the parameters.
+--
 -- 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>.
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
@@ -24,6 +24,8 @@
 
 -- | Describe an instance's RAID arrays.
 --
+-- You must specify at least one of the parameters.
+--
 -- 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>.
@@ -38,6 +40,7 @@
     -- ** Request lenses
     , draInstanceId
     , draRaidArrayIds
+    , draStackId
 
     -- * Response
     , DescribeRaidArraysResponse
@@ -55,6 +58,7 @@
 data DescribeRaidArrays = DescribeRaidArrays
     { _draInstanceId   :: Maybe Text
     , _draRaidArrayIds :: List "InstanceIds" Text
+    , _draStackId      :: Maybe Text
     } deriving (Eq, Ord, Show)
 
 -- | 'DescribeRaidArrays' constructor.
@@ -65,9 +69,12 @@
 --
 -- * 'draRaidArrayIds' @::@ ['Text']
 --
+-- * 'draStackId' @::@ 'Maybe' 'Text'
+--
 describeRaidArrays :: DescribeRaidArrays
 describeRaidArrays = DescribeRaidArrays
     { _draInstanceId   = Nothing
+    , _draStackId      = Nothing
     , _draRaidArrayIds = mempty
     }
 
@@ -82,6 +89,10 @@
 draRaidArrayIds :: Lens' DescribeRaidArrays [Text]
 draRaidArrayIds = lens _draRaidArrayIds (\s a -> s { _draRaidArrayIds = a }) . _List
 
+-- | The stack ID.
+draStackId :: Lens' DescribeRaidArrays (Maybe Text)
+draStackId = lens _draStackId (\s a -> s { _draStackId = a })
+
 newtype DescribeRaidArraysResponse = DescribeRaidArraysResponse
     { _drarRaidArrays :: List "RaidArrays" RaidArray
     } deriving (Eq, Show, Monoid, Semigroup)
@@ -118,6 +129,7 @@
 instance ToJSON DescribeRaidArrays where
     toJSON DescribeRaidArrays{..} = object
         [ "InstanceId"   .= _draInstanceId
+        , "StackId"      .= _draStackId
         , "RaidArrayIds" .= _draRaidArrayIds
         ]
 
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
@@ -24,6 +24,10 @@
 
 -- | Describes Amazon RDS instances.
 --
+-- 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>.
+--
 -- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeRdsDbInstances.html>
 module Network.AWS.OpsWorks.DescribeRdsDbInstances
     (
diff --git a/gen/Network/AWS/OpsWorks/DescribeStackProvisioningParameters.hs b/gen/Network/AWS/OpsWorks/DescribeStackProvisioningParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/OpsWorks/DescribeStackProvisioningParameters.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DataKinds                   #-}
+{-# LANGUAGE DeriveGeneric               #-}
+{-# LANGUAGE FlexibleInstances           #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
+{-# LANGUAGE LambdaCase                  #-}
+{-# LANGUAGE NoImplicitPrelude           #-}
+{-# LANGUAGE OverloadedStrings           #-}
+{-# LANGUAGE RecordWildCards             #-}
+{-# LANGUAGE TypeFamilies                #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Network.AWS.OpsWorks.DescribeStackProvisioningParameters
+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
+-- License     : This Source Code Form is subject to the terms of
+--               the Mozilla Public License, v. 2.0.
+--               A copy of the MPL can be found in the LICENSE file or
+--               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : experimental
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- | Requests a description of a stack's provisioning parameters.
+--
+-- 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>.
+--
+-- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeStackProvisioningParameters.html>
+module Network.AWS.OpsWorks.DescribeStackProvisioningParameters
+    (
+    -- * Request
+      DescribeStackProvisioningParameters
+    -- ** Request constructor
+    , describeStackProvisioningParameters
+    -- ** Request lenses
+    , dsppStackId
+
+    -- * Response
+    , DescribeStackProvisioningParametersResponse
+    -- ** Response constructor
+    , describeStackProvisioningParametersResponse
+    -- ** Response lenses
+    , dspprAgentInstallerUrl
+    , dspprParameters
+    ) where
+
+import Network.AWS.Prelude
+import Network.AWS.Request.JSON
+import Network.AWS.OpsWorks.Types
+import qualified GHC.Exts
+
+newtype DescribeStackProvisioningParameters = DescribeStackProvisioningParameters
+    { _dsppStackId :: Text
+    } deriving (Eq, Ord, Show, Monoid, IsString)
+
+-- | 'DescribeStackProvisioningParameters' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'dsppStackId' @::@ 'Text'
+--
+describeStackProvisioningParameters :: Text -- ^ 'dsppStackId'
+                                    -> DescribeStackProvisioningParameters
+describeStackProvisioningParameters p1 = DescribeStackProvisioningParameters
+    { _dsppStackId = p1
+    }
+
+-- | The stack ID
+dsppStackId :: Lens' DescribeStackProvisioningParameters Text
+dsppStackId = lens _dsppStackId (\s a -> s { _dsppStackId = a })
+
+data DescribeStackProvisioningParametersResponse = DescribeStackProvisioningParametersResponse
+    { _dspprAgentInstallerUrl :: Maybe Text
+    , _dspprParameters        :: Map Text Text
+    } deriving (Eq, Show)
+
+-- | 'DescribeStackProvisioningParametersResponse' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'dspprAgentInstallerUrl' @::@ 'Maybe' 'Text'
+--
+-- * 'dspprParameters' @::@ 'HashMap' 'Text' 'Text'
+--
+describeStackProvisioningParametersResponse :: DescribeStackProvisioningParametersResponse
+describeStackProvisioningParametersResponse = DescribeStackProvisioningParametersResponse
+    { _dspprAgentInstallerUrl = Nothing
+    , _dspprParameters        = mempty
+    }
+
+-- | The AWS OpsWorks agent installer's URL.
+dspprAgentInstallerUrl :: Lens' DescribeStackProvisioningParametersResponse (Maybe Text)
+dspprAgentInstallerUrl =
+    lens _dspprAgentInstallerUrl (\s a -> s { _dspprAgentInstallerUrl = a })
+
+-- | An embedded object that contains the provisioning parameters.
+dspprParameters :: Lens' DescribeStackProvisioningParametersResponse (HashMap Text Text)
+dspprParameters = lens _dspprParameters (\s a -> s { _dspprParameters = a }) . _Map
+
+instance ToPath DescribeStackProvisioningParameters where
+    toPath = const "/"
+
+instance ToQuery DescribeStackProvisioningParameters where
+    toQuery = const mempty
+
+instance ToHeaders DescribeStackProvisioningParameters
+
+instance ToJSON DescribeStackProvisioningParameters where
+    toJSON DescribeStackProvisioningParameters{..} = object
+        [ "StackId" .= _dsppStackId
+        ]
+
+instance AWSRequest DescribeStackProvisioningParameters where
+    type Sv DescribeStackProvisioningParameters = OpsWorks
+    type Rs DescribeStackProvisioningParameters = DescribeStackProvisioningParametersResponse
+
+    request  = post "DescribeStackProvisioningParameters"
+    response = jsonResponse
+
+instance FromJSON DescribeStackProvisioningParametersResponse where
+    parseJSON = withObject "DescribeStackProvisioningParametersResponse" $ \o -> DescribeStackProvisioningParametersResponse
+        <$> o .:? "AgentInstallerUrl"
+        <*> o .:? "Parameters" .!= mempty
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
@@ -24,6 +24,8 @@
 
 -- | Describes time-based auto scaling configurations for specified instances.
 --
+-- You must specify at least one of the parameters.
+--
 -- 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>.
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
@@ -24,6 +24,8 @@
 
 -- | Describes an instance's Amazon EBS volumes.
 --
+-- You must specify at least one of the parameters.
+--
 -- 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>.
diff --git a/gen/Network/AWS/OpsWorks/RegisterInstance.hs b/gen/Network/AWS/OpsWorks/RegisterInstance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/OpsWorks/RegisterInstance.hs
@@ -0,0 +1,184 @@
+{-# LANGUAGE DataKinds                   #-}
+{-# LANGUAGE DeriveGeneric               #-}
+{-# LANGUAGE FlexibleInstances           #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
+{-# LANGUAGE LambdaCase                  #-}
+{-# LANGUAGE NoImplicitPrelude           #-}
+{-# LANGUAGE OverloadedStrings           #-}
+{-# LANGUAGE RecordWildCards             #-}
+{-# LANGUAGE TypeFamilies                #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Network.AWS.OpsWorks.RegisterInstance
+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
+-- License     : This Source Code Form is subject to the terms of
+--               the Mozilla Public License, v. 2.0.
+--               A copy of the MPL can be found in the LICENSE file or
+--               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : experimental
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- | Registers instances with a specified stack that were created outside of AWS
+-- OpsWorks.
+--
+-- We do not recommend using this action to register instances. The complete
+-- registration operation has two primary steps, installing the AWS OpsWorks
+-- agent on the instance and registering the instance with the stack. 'RegisterInstance' handles only the second step. You should instead use the AWS CLI 'register'
+-- command, which performs the entire registration operation. 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>.
+--
+-- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_RegisterInstance.html>
+module Network.AWS.OpsWorks.RegisterInstance
+    (
+    -- * Request
+      RegisterInstance
+    -- ** Request constructor
+    , registerInstance
+    -- ** Request lenses
+    , riHostname
+    , riInstanceIdentity
+    , riPrivateIp
+    , riPublicIp
+    , riRsaPublicKey
+    , riRsaPublicKeyFingerprint
+    , riStackId
+
+    -- * Response
+    , RegisterInstanceResponse
+    -- ** Response constructor
+    , registerInstanceResponse
+    -- ** Response lenses
+    , rirInstanceId
+    ) where
+
+import Network.AWS.Prelude
+import Network.AWS.Request.JSON
+import Network.AWS.OpsWorks.Types
+import qualified GHC.Exts
+
+data RegisterInstance = RegisterInstance
+    { _riHostname                :: Maybe Text
+    , _riInstanceIdentity        :: Maybe InstanceIdentity
+    , _riPrivateIp               :: Maybe Text
+    , _riPublicIp                :: Maybe Text
+    , _riRsaPublicKey            :: Maybe Text
+    , _riRsaPublicKeyFingerprint :: Maybe Text
+    , _riStackId                 :: Text
+    } deriving (Eq, Show)
+
+-- | 'RegisterInstance' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'riHostname' @::@ 'Maybe' 'Text'
+--
+-- * 'riInstanceIdentity' @::@ 'Maybe' 'InstanceIdentity'
+--
+-- * 'riPrivateIp' @::@ 'Maybe' 'Text'
+--
+-- * 'riPublicIp' @::@ 'Maybe' 'Text'
+--
+-- * 'riRsaPublicKey' @::@ 'Maybe' 'Text'
+--
+-- * 'riRsaPublicKeyFingerprint' @::@ 'Maybe' 'Text'
+--
+-- * 'riStackId' @::@ 'Text'
+--
+registerInstance :: Text -- ^ 'riStackId'
+                 -> RegisterInstance
+registerInstance p1 = RegisterInstance
+    { _riStackId                 = p1
+    , _riHostname                = Nothing
+    , _riPublicIp                = Nothing
+    , _riPrivateIp               = Nothing
+    , _riRsaPublicKey            = Nothing
+    , _riRsaPublicKeyFingerprint = Nothing
+    , _riInstanceIdentity        = Nothing
+    }
+
+-- | The instance's hostname.
+riHostname :: Lens' RegisterInstance (Maybe Text)
+riHostname = lens _riHostname (\s a -> s { _riHostname = a })
+
+-- | An InstanceIdentity object that contains the instance's identity.
+riInstanceIdentity :: Lens' RegisterInstance (Maybe InstanceIdentity)
+riInstanceIdentity =
+    lens _riInstanceIdentity (\s a -> s { _riInstanceIdentity = a })
+
+-- | The instance's private IP address.
+riPrivateIp :: Lens' RegisterInstance (Maybe Text)
+riPrivateIp = lens _riPrivateIp (\s a -> s { _riPrivateIp = a })
+
+-- | The instance's public IP address.
+riPublicIp :: Lens' RegisterInstance (Maybe Text)
+riPublicIp = lens _riPublicIp (\s a -> s { _riPublicIp = a })
+
+-- | The instances public RSA key. This key is used to encrypt communication
+-- between the instance and the service.
+riRsaPublicKey :: Lens' RegisterInstance (Maybe Text)
+riRsaPublicKey = lens _riRsaPublicKey (\s a -> s { _riRsaPublicKey = a })
+
+-- | The instances public RSA key fingerprint.
+riRsaPublicKeyFingerprint :: Lens' RegisterInstance (Maybe Text)
+riRsaPublicKeyFingerprint =
+    lens _riRsaPublicKeyFingerprint
+        (\s a -> s { _riRsaPublicKeyFingerprint = a })
+
+-- | The ID of the stack that the instance is to be registered with.
+riStackId :: Lens' RegisterInstance Text
+riStackId = lens _riStackId (\s a -> s { _riStackId = a })
+
+newtype RegisterInstanceResponse = RegisterInstanceResponse
+    { _rirInstanceId :: Maybe Text
+    } deriving (Eq, Ord, Show, Monoid)
+
+-- | 'RegisterInstanceResponse' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'rirInstanceId' @::@ 'Maybe' 'Text'
+--
+registerInstanceResponse :: RegisterInstanceResponse
+registerInstanceResponse = RegisterInstanceResponse
+    { _rirInstanceId = Nothing
+    }
+
+-- | The registered instance's AWS OpsWorks ID.
+rirInstanceId :: Lens' RegisterInstanceResponse (Maybe Text)
+rirInstanceId = lens _rirInstanceId (\s a -> s { _rirInstanceId = a })
+
+instance ToPath RegisterInstance where
+    toPath = const "/"
+
+instance ToQuery RegisterInstance where
+    toQuery = const mempty
+
+instance ToHeaders RegisterInstance
+
+instance ToJSON RegisterInstance where
+    toJSON RegisterInstance{..} = object
+        [ "StackId"                 .= _riStackId
+        , "Hostname"                .= _riHostname
+        , "PublicIp"                .= _riPublicIp
+        , "PrivateIp"               .= _riPrivateIp
+        , "RsaPublicKey"            .= _riRsaPublicKey
+        , "RsaPublicKeyFingerprint" .= _riRsaPublicKeyFingerprint
+        , "InstanceIdentity"        .= _riInstanceIdentity
+        ]
+
+instance AWSRequest RegisterInstance where
+    type Sv RegisterInstance = OpsWorks
+    type Rs RegisterInstance = RegisterInstanceResponse
+
+    request  = post "RegisterInstance"
+    response = jsonResponse
+
+instance FromJSON RegisterInstanceResponse where
+    parseJSON = withObject "RegisterInstanceResponse" $ \o -> RegisterInstanceResponse
+        <$> o .:? "InstanceId"
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
@@ -24,6 +24,10 @@
 
 -- | Registers an Amazon RDS instance with a stack.
 --
+-- 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 UserPermissions>.
+--
 -- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_RegisterRdsDbInstance.html>
 module Network.AWS.OpsWorks.RegisterRdsDbInstance
     (
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
@@ -25,6 +25,11 @@
 -- | Specify the load-based auto scaling configuration for a specified layer. For
 -- more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-autoscaling.html Managing Load with Time-based and Load-based Instances>.
 --
+-- To use load-based auto scaling, you must create a set of load-based auto
+-- scaling instances. Load-based auto scaling operates only on the instances
+-- from that set, so you must ensure that you have created enough instances to
+-- handle the maximum anticipated load.
+--
 -- 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 UserPermissions>.
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
@@ -7,6 +7,7 @@
 {-# LANGUAGE OverloadedStrings           #-}
 {-# LANGUAGE RecordWildCards             #-}
 {-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE ViewPatterns                #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 
@@ -36,6 +37,9 @@
     , scChain
     , scPrivateKey
 
+    -- * VirtualizationType
+    , VirtualizationType (..)
+
     -- * Command
     , Command
     , command
@@ -64,6 +68,7 @@
     , raRaidArrayId
     , raRaidLevel
     , raSize
+    , raStackId
     , raVolumeType
 
     -- * ElasticLoadBalancer
@@ -79,6 +84,11 @@
     , elbSubnetIds
     , elbVpcId
 
+    -- * LifecycleEventConfiguration
+    , LifecycleEventConfiguration
+    , lifecycleEventConfiguration
+    , lecShutdown
+
     -- * RdsDbInstance
     , RdsDbInstance
     , rdsDbInstance
@@ -176,6 +186,7 @@
     , appDescription
     , appDomains
     , appEnableSsl
+    , appEnvironment
     , appName
     , appShortname
     , appSslConfiguration
@@ -191,6 +202,18 @@
     , eiName
     , eiRegion
 
+    -- * ShutdownEventConfiguration
+    , ShutdownEventConfiguration
+    , shutdownEventConfiguration
+    , secDelayUntilElbConnectionsDrained
+    , secExecutionTimeout
+
+    -- * InstanceIdentity
+    , InstanceIdentity
+    , instanceIdentity
+    , iiDocument
+    , iiSignature
+
     -- * UserProfile
     , UserProfile
     , userProfile
@@ -242,6 +265,13 @@
     , vcSize
     , vcVolumeType
 
+    -- * ReportedOs
+    , ReportedOs
+    , reportedOs
+    , roFamily
+    , roName
+    , roVersion
+
     -- * Permission
     , Permission
     , permission
@@ -251,6 +281,13 @@
     , pLevel
     , pStackId
 
+    -- * EnvironmentVariable
+    , EnvironmentVariable
+    , environmentVariable
+    , evKey
+    , evSecure
+    , evValue
+
     -- * Layer
     , Layer
     , layer
@@ -266,6 +303,7 @@
     , lEnableAutoHealing
     , lInstallUpdatesOnBoot
     , lLayerId
+    , lLifecycleEventConfiguration
     , lName
     , lPackages
     , lShortname
@@ -357,6 +395,7 @@
     , iEc2InstanceId
     , iElasticIp
     , iHostname
+    , iInfrastructureClass
     , iInstallUpdatesOnBoot
     , iInstanceId
     , iInstanceProfileArn
@@ -368,6 +407,8 @@
     , iPrivateIp
     , iPublicDns
     , iPublicIp
+    , iRegisteredBy
+    , iReportedOs
     , iRootDeviceType
     , iRootDeviceVolumeId
     , iSecurityGroupIds
@@ -398,11 +439,15 @@
     -- * InstancesCount
     , InstancesCount
     , instancesCount
+    , icAssigning
     , icBooting
     , icConnectionLost
+    , icDeregistering
     , icOnline
     , icPending
     , icRebooting
+    , icRegistered
+    , icRegistering
     , icRequested
     , icRunningSetup
     , icSetupFailed
@@ -412,13 +457,12 @@
     , icStopping
     , icTerminated
     , icTerminating
+    , icUnassigning
 
     -- * AppType
     , AppType (..)
     ) where
 
-import Data.Char (isUpper)
-import Network.AWS.Error
 import Network.AWS.Prelude
 import Network.AWS.Signing
 import qualified GHC.Exts
@@ -430,16 +474,41 @@
     type Sg OpsWorks = V4
     type Er OpsWorks = JSONError
 
-    service = Service
-        { _svcAbbrev       = "OpsWorks"
-        , _svcPrefix       = "opsworks"
-        , _svcVersion      = "2013-02-18"
-        , _svcTargetPrefix = Just "OpsWorks_20130218"
-        , _svcJSONVersion  = Just "1.1"
-        }
+    service = service'
+      where
+        service' :: Service OpsWorks
+        service' = Service
+            { _svcAbbrev       = "OpsWorks"
+            , _svcPrefix       = "opsworks"
+            , _svcVersion      = "2013-02-18"
+            , _svcTargetPrefix = Just "OpsWorks_20130218"
+            , _svcJSONVersion  = Just "1.1"
+            , _svcHandle       = handle
+            , _svcRetry        = retry
+            }
 
-    handle = jsonError statusSuccess
+        handle :: Status
+               -> Maybe (LazyByteString -> ServiceError JSONError)
+        handle = jsonError statusSuccess service'
 
+        retry :: Retry OpsWorks
+        retry = Exponential
+            { _retryBase     = 0.05
+            , _retryGrowth   = 2
+            , _retryAttempts = 5
+            , _retryCheck    = check
+            }
+
+        check :: Status
+              -> JSONError
+              -> Bool
+        check (statusCode -> s) (awsErrorCode -> e)
+            | s == 400 && "Throttling" == e = True -- Throttling
+            | s == 500  = True -- General Server Error
+            | s == 509  = True -- Limit Exceeded
+            | s == 503  = True -- Service Unavailable
+            | otherwise = False
+
 data SslConfiguration = SslConfiguration
     { _scCertificate :: Text
     , _scChain       :: Maybe Text
@@ -491,6 +560,35 @@
         , "Chain"       .= _scChain
         ]
 
+data VirtualizationType
+    = Hvm         -- ^ hvm
+    | Paravirtual -- ^ paravirtual
+      deriving (Eq, Ord, Show, Generic, Enum)
+
+instance Hashable VirtualizationType
+
+instance FromText VirtualizationType where
+    parser = takeText >>= \case
+        "hvm"         -> pure Hvm
+        "paravirtual" -> pure Paravirtual
+        e             -> fail $
+            "Failure parsing VirtualizationType from " ++ show e
+
+instance ToText VirtualizationType where
+    toText = \case
+        Hvm         -> "hvm"
+        Paravirtual -> "paravirtual"
+
+instance ToByteString VirtualizationType
+instance ToHeader     VirtualizationType
+instance ToQuery      VirtualizationType
+
+instance FromJSON VirtualizationType where
+    parseJSON = parseJSONText "VirtualizationType"
+
+instance ToJSON VirtualizationType where
+    toJSON = toJSONText
+
 data Command = Command
     { _cAcknowledgedAt :: Maybe Text
     , _cCommandId      :: Maybe Text
@@ -625,6 +723,7 @@
     , _raRaidArrayId      :: Maybe Text
     , _raRaidLevel        :: Maybe Int
     , _raSize             :: Maybe Int
+    , _raStackId          :: Maybe Text
     , _raVolumeType       :: Maybe Text
     } deriving (Eq, Ord, Show)
 
@@ -654,6 +753,8 @@
 --
 -- * 'raSize' @::@ 'Maybe' 'Int'
 --
+-- * 'raStackId' @::@ 'Maybe' 'Text'
+--
 -- * 'raVolumeType' @::@ 'Maybe' 'Text'
 --
 raidArray :: RaidArray
@@ -668,6 +769,7 @@
     , _raMountPoint       = Nothing
     , _raAvailabilityZone = Nothing
     , _raCreatedAt        = Nothing
+    , _raStackId          = Nothing
     , _raVolumeType       = Nothing
     , _raIops             = Nothing
     }
@@ -718,6 +820,10 @@
 raSize :: Lens' RaidArray (Maybe Int)
 raSize = lens _raSize (\s a -> s { _raSize = a })
 
+-- | The stack ID.
+raStackId :: Lens' RaidArray (Maybe Text)
+raStackId = lens _raStackId (\s a -> s { _raStackId = a })
+
 -- | The volume type, standard or PIOPS.
 raVolumeType :: Lens' RaidArray (Maybe Text)
 raVolumeType = lens _raVolumeType (\s a -> s { _raVolumeType = a })
@@ -735,6 +841,7 @@
         <*> o .:? "RaidArrayId"
         <*> o .:? "RaidLevel"
         <*> o .:? "Size"
+        <*> o .:? "StackId"
         <*> o .:? "VolumeType"
 
 instance ToJSON RaidArray where
@@ -749,6 +856,7 @@
         , "MountPoint"       .= _raMountPoint
         , "AvailabilityZone" .= _raAvailabilityZone
         , "CreatedAt"        .= _raCreatedAt
+        , "StackId"          .= _raStackId
         , "VolumeType"       .= _raVolumeType
         , "Iops"             .= _raIops
         ]
@@ -868,6 +976,35 @@
         , "Ec2InstanceIds"          .= _elbEc2InstanceIds
         ]
 
+newtype LifecycleEventConfiguration = LifecycleEventConfiguration
+    { _lecShutdown :: Maybe ShutdownEventConfiguration
+    } deriving (Eq, Show)
+
+-- | 'LifecycleEventConfiguration' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'lecShutdown' @::@ 'Maybe' 'ShutdownEventConfiguration'
+--
+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" $ \o -> LifecycleEventConfiguration
+        <$> o .:? "Shutdown"
+
+instance ToJSON LifecycleEventConfiguration where
+    toJSON LifecycleEventConfiguration{..} = object
+        [ "Shutdown" .= _lecShutdown
+        ]
+
 data RdsDbInstance = RdsDbInstance
     { _rdiAddress              :: Maybe Text
     , _rdiDbInstanceIdentifier :: Maybe Text
@@ -1220,9 +1357,8 @@
     , _lbascDownScaling = Nothing
     }
 
--- | A 'LoadBasedAutoscalingInstruction' object that describes the downscaling
--- configuration, which defines how and when AWS OpsWorks reduces the number of
--- instances.
+-- | 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 })
 
@@ -1234,9 +1370,8 @@
 lbascLayerId :: Lens' LoadBasedAutoScalingConfiguration (Maybe Text)
 lbascLayerId = lens _lbascLayerId (\s a -> s { _lbascLayerId = a })
 
--- | A 'LoadBasedAutoscalingInstruction' object that describes the upscaling
--- configuration, which defines how and when AWS OpsWorks increases the number
--- of instances.
+-- | 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 })
 
@@ -1482,6 +1617,7 @@
 data LayerType
     = Custom           -- ^ custom
     | DbMaster         -- ^ db-master
+    | JavaApp          -- ^ java-app
     | Lb               -- ^ lb
     | Memcached        -- ^ memcached
     | MonitoringMaster -- ^ monitoring-master
@@ -1497,6 +1633,7 @@
     parser = takeText >>= \case
         "custom"            -> pure Custom
         "db-master"         -> pure DbMaster
+        "java-app"          -> pure JavaApp
         "lb"                -> pure Lb
         "memcached"         -> pure Memcached
         "monitoring-master" -> pure MonitoringMaster
@@ -1511,6 +1648,7 @@
     toText = \case
         Custom           -> "custom"
         DbMaster         -> "db-master"
+        JavaApp          -> "java-app"
         Lb               -> "lb"
         Memcached        -> "memcached"
         MonitoringMaster -> "monitoring-master"
@@ -1629,6 +1767,7 @@
     , _appDescription      :: Maybe Text
     , _appDomains          :: List "InstanceIds" Text
     , _appEnableSsl        :: Maybe Bool
+    , _appEnvironment      :: List "Environment" EnvironmentVariable
     , _appName             :: Maybe Text
     , _appShortname        :: Maybe Text
     , _appSslConfiguration :: Maybe SslConfiguration
@@ -1656,6 +1795,8 @@
 --
 -- * 'appEnableSsl' @::@ 'Maybe' 'Bool'
 --
+-- * 'appEnvironment' @::@ ['EnvironmentVariable']
+--
 -- * 'appName' @::@ 'Maybe' 'Text'
 --
 -- * 'appShortname' @::@ 'Maybe' 'Text'
@@ -1681,6 +1822,7 @@
     , _appSslConfiguration = Nothing
     , _appAttributes       = mempty
     , _appCreatedAt        = Nothing
+    , _appEnvironment      = mempty
     }
 
 -- | The app ID.
@@ -1716,6 +1858,13 @@
 appEnableSsl :: Lens' App (Maybe Bool)
 appEnableSsl = lens _appEnableSsl (\s a -> s { _appEnableSsl = a })
 
+-- | An array of 'EnvironmentVariable' objects that specify environment variables to
+-- be associated with the app. You can specify up to ten environment variables.
+-- After you deploy the app, these variables are defined on the associated app
+-- server instances.
+appEnvironment :: Lens' App [EnvironmentVariable]
+appEnvironment = lens _appEnvironment (\s a -> s { _appEnvironment = a }) . _List
+
 -- | The app name.
 appName :: Lens' App (Maybe Text)
 appName = lens _appName (\s a -> s { _appName = a })
@@ -1747,6 +1896,7 @@
         <*> o .:? "Description"
         <*> o .:? "Domains" .!= mempty
         <*> o .:? "EnableSsl"
+        <*> o .:? "Environment" .!= mempty
         <*> o .:? "Name"
         <*> o .:? "Shortname"
         <*> o .:? "SslConfiguration"
@@ -1768,6 +1918,7 @@
         , "SslConfiguration" .= _appSslConfiguration
         , "Attributes"       .= _appAttributes
         , "CreatedAt"        .= _appCreatedAt
+        , "Environment"      .= _appEnvironment
         ]
 
 data ElasticIp = ElasticIp
@@ -1838,6 +1989,88 @@
         , "InstanceId" .= _eiInstanceId
         ]
 
+data ShutdownEventConfiguration = ShutdownEventConfiguration
+    { _secDelayUntilElbConnectionsDrained :: Maybe Bool
+    , _secExecutionTimeout                :: Maybe Int
+    } deriving (Eq, Ord, Show)
+
+-- | 'ShutdownEventConfiguration' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'secDelayUntilElbConnectionsDrained' @::@ 'Maybe' 'Bool'
+--
+-- * 'secExecutionTimeout' @::@ 'Maybe' 'Int'
+--
+shutdownEventConfiguration :: ShutdownEventConfiguration
+shutdownEventConfiguration = ShutdownEventConfiguration
+    { _secExecutionTimeout                = Nothing
+    , _secDelayUntilElbConnectionsDrained = Nothing
+    }
+
+-- | 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 })
+
+-- | 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 })
+
+instance FromJSON ShutdownEventConfiguration where
+    parseJSON = withObject "ShutdownEventConfiguration" $ \o -> ShutdownEventConfiguration
+        <$> o .:? "DelayUntilElbConnectionsDrained"
+        <*> o .:? "ExecutionTimeout"
+
+instance ToJSON ShutdownEventConfiguration where
+    toJSON ShutdownEventConfiguration{..} = object
+        [ "ExecutionTimeout"                .= _secExecutionTimeout
+        , "DelayUntilElbConnectionsDrained" .= _secDelayUntilElbConnectionsDrained
+        ]
+
+data InstanceIdentity = InstanceIdentity
+    { _iiDocument  :: Maybe Text
+    , _iiSignature :: Maybe Text
+    } deriving (Eq, Ord, Show)
+
+-- | 'InstanceIdentity' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'iiDocument' @::@ 'Maybe' 'Text'
+--
+-- * 'iiSignature' @::@ 'Maybe' 'Text'
+--
+instanceIdentity :: InstanceIdentity
+instanceIdentity = InstanceIdentity
+    { _iiDocument  = Nothing
+    , _iiSignature = Nothing
+    }
+
+-- | A JSON document that contains the metadata.
+iiDocument :: Lens' InstanceIdentity (Maybe Text)
+iiDocument = lens _iiDocument (\s a -> s { _iiDocument = a })
+
+-- | 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 })
+
+instance FromJSON InstanceIdentity where
+    parseJSON = withObject "InstanceIdentity" $ \o -> InstanceIdentity
+        <$> o .:? "Document"
+        <*> o .:? "Signature"
+
+instance ToJSON InstanceIdentity where
+    toJSON InstanceIdentity{..} = object
+        [ "Document"  .= _iiDocument
+        , "Signature" .= _iiSignature
+        ]
+
 data UserProfile = UserProfile
     { _upAllowSelfManagement :: Maybe Bool
     , _upIamUserArn          :: Maybe Text
@@ -2295,7 +2528,10 @@
 vcSize :: Lens' VolumeConfiguration Int
 vcSize = lens _vcSize (\s a -> s { _vcSize = a })
 
--- | The volume type, standard or PIOPS.
+-- | 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 })
 
@@ -2318,6 +2554,54 @@
         , "Iops"          .= _vcIops
         ]
 
+data ReportedOs = ReportedOs
+    { _roFamily  :: Maybe Text
+    , _roName    :: Maybe Text
+    , _roVersion :: Maybe Text
+    } deriving (Eq, Ord, Show)
+
+-- | 'ReportedOs' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'roFamily' @::@ 'Maybe' 'Text'
+--
+-- * 'roName' @::@ 'Maybe' 'Text'
+--
+-- * 'roVersion' @::@ 'Maybe' 'Text'
+--
+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" $ \o -> ReportedOs
+        <$> o .:? "Family"
+        <*> o .:? "Name"
+        <*> o .:? "Version"
+
+instance ToJSON ReportedOs where
+    toJSON ReportedOs{..} = object
+        [ "Family"  .= _roFamily
+        , "Name"    .= _roName
+        , "Version" .= _roVersion
+        ]
+
 data Permission = Permission
     { _pAllowSsh   :: Maybe Bool
     , _pAllowSudo  :: Maybe Bool
@@ -2390,26 +2674,83 @@
         , "Level"      .= _pLevel
         ]
 
+data EnvironmentVariable = EnvironmentVariable
+    { _evKey    :: Text
+    , _evSecure :: Maybe Bool
+    , _evValue  :: Text
+    } deriving (Eq, Ord, Show)
+
+-- | 'EnvironmentVariable' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'evKey' @::@ 'Text'
+--
+-- * 'evSecure' @::@ 'Maybe' 'Bool'
+--
+-- * 'evValue' @::@ 'Text'
+--
+environmentVariable :: Text -- ^ 'evKey'
+                    -> Text -- ^ 'evValue'
+                    -> EnvironmentVariable
+environmentVariable p1 p2 = EnvironmentVariable
+    { _evKey    = p1
+    , _evValue  = p2
+    , _evSecure = Nothing
+    }
+
+-- | (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) 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 })
+
+-- | (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" $ \o -> EnvironmentVariable
+        <$> o .:  "Key"
+        <*> o .:? "Secure"
+        <*> o .:  "Value"
+
+instance ToJSON EnvironmentVariable where
+    toJSON EnvironmentVariable{..} = object
+        [ "Key"    .= _evKey
+        , "Value"  .= _evValue
+        , "Secure" .= _evSecure
+        ]
+
 data Layer = Layer
-    { _lAttributes                :: Map LayerAttributesKeys Text
-    , _lAutoAssignElasticIps      :: Maybe Bool
-    , _lAutoAssignPublicIps       :: Maybe Bool
-    , _lCreatedAt                 :: Maybe Text
-    , _lCustomInstanceProfileArn  :: Maybe Text
-    , _lCustomRecipes             :: Maybe Recipes
-    , _lCustomSecurityGroupIds    :: List "InstanceIds" Text
-    , _lDefaultRecipes            :: Maybe Recipes
-    , _lDefaultSecurityGroupNames :: List "InstanceIds" Text
-    , _lEnableAutoHealing         :: Maybe Bool
-    , _lInstallUpdatesOnBoot      :: Maybe Bool
-    , _lLayerId                   :: Maybe Text
-    , _lName                      :: Maybe Text
-    , _lPackages                  :: List "InstanceIds" Text
-    , _lShortname                 :: Maybe Text
-    , _lStackId                   :: Maybe Text
-    , _lType                      :: Maybe LayerType
-    , _lUseEbsOptimizedInstances  :: Maybe Bool
-    , _lVolumeConfigurations      :: List "VolumeConfigurations" VolumeConfiguration
+    { _lAttributes                  :: Map LayerAttributesKeys Text
+    , _lAutoAssignElasticIps        :: Maybe Bool
+    , _lAutoAssignPublicIps         :: Maybe Bool
+    , _lCreatedAt                   :: Maybe Text
+    , _lCustomInstanceProfileArn    :: Maybe Text
+    , _lCustomRecipes               :: Maybe Recipes
+    , _lCustomSecurityGroupIds      :: List "InstanceIds" Text
+    , _lDefaultRecipes              :: Maybe Recipes
+    , _lDefaultSecurityGroupNames   :: List "InstanceIds" Text
+    , _lEnableAutoHealing           :: Maybe Bool
+    , _lInstallUpdatesOnBoot        :: Maybe Bool
+    , _lLayerId                     :: Maybe Text
+    , _lLifecycleEventConfiguration :: Maybe LifecycleEventConfiguration
+    , _lName                        :: Maybe Text
+    , _lPackages                    :: List "InstanceIds" Text
+    , _lShortname                   :: Maybe Text
+    , _lStackId                     :: Maybe Text
+    , _lType                        :: Maybe LayerType
+    , _lUseEbsOptimizedInstances    :: Maybe Bool
+    , _lVolumeConfigurations        :: List "VolumeConfigurations" VolumeConfiguration
     } deriving (Eq, Show)
 
 -- | 'Layer' constructor.
@@ -2440,6 +2781,8 @@
 --
 -- * 'lLayerId' @::@ 'Maybe' 'Text'
 --
+-- * 'lLifecycleEventConfiguration' @::@ 'Maybe' 'LifecycleEventConfiguration'
+--
 -- * 'lName' @::@ 'Maybe' 'Text'
 --
 -- * 'lPackages' @::@ ['Text']
@@ -2456,25 +2799,26 @@
 --
 layer :: Layer
 layer = Layer
-    { _lStackId                   = Nothing
-    , _lLayerId                   = Nothing
-    , _lType                      = Nothing
-    , _lName                      = Nothing
-    , _lShortname                 = Nothing
-    , _lAttributes                = mempty
-    , _lCustomInstanceProfileArn  = Nothing
-    , _lCustomSecurityGroupIds    = mempty
-    , _lDefaultSecurityGroupNames = mempty
-    , _lPackages                  = mempty
-    , _lVolumeConfigurations      = mempty
-    , _lEnableAutoHealing         = Nothing
-    , _lAutoAssignElasticIps      = Nothing
-    , _lAutoAssignPublicIps       = Nothing
-    , _lDefaultRecipes            = Nothing
-    , _lCustomRecipes             = Nothing
-    , _lCreatedAt                 = Nothing
-    , _lInstallUpdatesOnBoot      = Nothing
-    , _lUseEbsOptimizedInstances  = Nothing
+    { _lStackId                     = Nothing
+    , _lLayerId                     = Nothing
+    , _lType                        = Nothing
+    , _lName                        = Nothing
+    , _lShortname                   = Nothing
+    , _lAttributes                  = mempty
+    , _lCustomInstanceProfileArn    = Nothing
+    , _lCustomSecurityGroupIds      = mempty
+    , _lDefaultSecurityGroupNames   = mempty
+    , _lPackages                    = mempty
+    , _lVolumeConfigurations        = mempty
+    , _lEnableAutoHealing           = Nothing
+    , _lAutoAssignElasticIps        = Nothing
+    , _lAutoAssignPublicIps         = Nothing
+    , _lDefaultRecipes              = Nothing
+    , _lCustomRecipes               = Nothing
+    , _lCreatedAt                   = Nothing
+    , _lInstallUpdatesOnBoot        = Nothing
+    , _lUseEbsOptimizedInstances    = Nothing
+    , _lLifecycleEventConfiguration = Nothing
     }
 
 -- | The layer attributes.
@@ -2533,6 +2877,11 @@
 -- 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.
+--
+-- We strongly recommend using the default value of 'true', to ensure that your
+-- instances have the latest security updates.
+--
+--
 lInstallUpdatesOnBoot :: Lens' Layer (Maybe Bool)
 lInstallUpdatesOnBoot =
     lens _lInstallUpdatesOnBoot (\s a -> s { _lInstallUpdatesOnBoot = a })
@@ -2541,6 +2890,13 @@
 lLayerId :: Lens' Layer (Maybe Text)
 lLayerId = lens _lLayerId (\s a -> s { _lLayerId = a })
 
+-- | A 'LifeCycleEventConfiguration' object that specifies the Shutdown event
+-- configuration.
+lLifecycleEventConfiguration :: Lens' Layer (Maybe LifecycleEventConfiguration)
+lLifecycleEventConfiguration =
+    lens _lLifecycleEventConfiguration
+        (\s a -> s { _lLifecycleEventConfiguration = a })
+
 -- | The layer name.
 lName :: Lens' Layer (Maybe Text)
 lName = lens _lName (\s a -> s { _lName = a })
@@ -2557,10 +2913,7 @@
 lStackId :: Lens' Layer (Maybe Text)
 lStackId = lens _lStackId (\s a -> s { _lStackId = a })
 
--- | The layer type, which must be one of the following:
---
--- Custom GangliaMonitoringMaster HaProxy MemcachedServer MySqlMaster NodeJsAppServer
--- PhpAppServer RailsAppServer WebServer
+-- | The layer type.
 lType :: Lens' Layer (Maybe LayerType)
 lType = lens _lType (\s a -> s { _lType = a })
 
@@ -2590,6 +2943,7 @@
         <*> o .:? "EnableAutoHealing"
         <*> o .:? "InstallUpdatesOnBoot"
         <*> o .:? "LayerId"
+        <*> o .:? "LifecycleEventConfiguration"
         <*> o .:? "Name"
         <*> o .:? "Packages" .!= mempty
         <*> o .:? "Shortname"
@@ -2600,25 +2954,26 @@
 
 instance ToJSON Layer where
     toJSON Layer{..} = object
-        [ "StackId"                   .= _lStackId
-        , "LayerId"                   .= _lLayerId
-        , "Type"                      .= _lType
-        , "Name"                      .= _lName
-        , "Shortname"                 .= _lShortname
-        , "Attributes"                .= _lAttributes
-        , "CustomInstanceProfileArn"  .= _lCustomInstanceProfileArn
-        , "CustomSecurityGroupIds"    .= _lCustomSecurityGroupIds
-        , "DefaultSecurityGroupNames" .= _lDefaultSecurityGroupNames
-        , "Packages"                  .= _lPackages
-        , "VolumeConfigurations"      .= _lVolumeConfigurations
-        , "EnableAutoHealing"         .= _lEnableAutoHealing
-        , "AutoAssignElasticIps"      .= _lAutoAssignElasticIps
-        , "AutoAssignPublicIps"       .= _lAutoAssignPublicIps
-        , "DefaultRecipes"            .= _lDefaultRecipes
-        , "CustomRecipes"             .= _lCustomRecipes
-        , "CreatedAt"                 .= _lCreatedAt
-        , "InstallUpdatesOnBoot"      .= _lInstallUpdatesOnBoot
-        , "UseEbsOptimizedInstances"  .= _lUseEbsOptimizedInstances
+        [ "StackId"                     .= _lStackId
+        , "LayerId"                     .= _lLayerId
+        , "Type"                        .= _lType
+        , "Name"                        .= _lName
+        , "Shortname"                   .= _lShortname
+        , "Attributes"                  .= _lAttributes
+        , "CustomInstanceProfileArn"    .= _lCustomInstanceProfileArn
+        , "CustomSecurityGroupIds"      .= _lCustomSecurityGroupIds
+        , "DefaultSecurityGroupNames"   .= _lDefaultSecurityGroupNames
+        , "Packages"                    .= _lPackages
+        , "VolumeConfigurations"        .= _lVolumeConfigurations
+        , "EnableAutoHealing"           .= _lEnableAutoHealing
+        , "AutoAssignElasticIps"        .= _lAutoAssignElasticIps
+        , "AutoAssignPublicIps"         .= _lAutoAssignPublicIps
+        , "DefaultRecipes"              .= _lDefaultRecipes
+        , "CustomRecipes"               .= _lCustomRecipes
+        , "CreatedAt"                   .= _lCreatedAt
+        , "InstallUpdatesOnBoot"        .= _lInstallUpdatesOnBoot
+        , "UseEbsOptimizedInstances"    .= _lUseEbsOptimizedInstances
+        , "LifecycleEventConfiguration" .= _lLifecycleEventConfiguration
         ]
 
 data Recipes = Recipes
@@ -2961,7 +3316,7 @@
     lens _sDefaultInstanceProfileArn
         (\s a -> s { _sDefaultInstanceProfileArn = a })
 
--- | The stack's default operating system, which must be set to 'Amazon Linux' or 'Ubuntu 12.04 LTS'. The default option is 'Amazon Linux'.
+-- | The stack's default operating system.
 sDefaultOs :: Lens' Stack (Maybe Text)
 sDefaultOs = lens _sDefaultOs (\s a -> s { _sDefaultOs = a })
 
@@ -3091,7 +3446,18 @@
 -- | The arguments of those commands that take arguments. It should be set to a
 -- JSON object with the following format:
 --
--- '{"arg_name":["value1", "value2", ...]}'
+-- '{"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 }) . _Map
 
@@ -3275,6 +3641,7 @@
     , _iEc2InstanceId            :: Maybe Text
     , _iElasticIp                :: Maybe Text
     , _iHostname                 :: Maybe Text
+    , _iInfrastructureClass      :: Maybe Text
     , _iInstallUpdatesOnBoot     :: Maybe Bool
     , _iInstanceId               :: Maybe Text
     , _iInstanceProfileArn       :: Maybe Text
@@ -3286,6 +3653,8 @@
     , _iPrivateIp                :: Maybe Text
     , _iPublicDns                :: Maybe Text
     , _iPublicIp                 :: Maybe Text
+    , _iRegisteredBy             :: Maybe Text
+    , _iReportedOs               :: Maybe ReportedOs
     , _iRootDeviceType           :: Maybe RootDeviceType
     , _iRootDeviceVolumeId       :: Maybe Text
     , _iSecurityGroupIds         :: List "InstanceIds" Text
@@ -3295,7 +3664,7 @@
     , _iStackId                  :: Maybe Text
     , _iStatus                   :: Maybe Text
     , _iSubnetId                 :: Maybe Text
-    , _iVirtualizationType       :: Maybe Text
+    , _iVirtualizationType       :: Maybe VirtualizationType
     } deriving (Eq, Show)
 
 -- | 'Instance' constructor.
@@ -3320,6 +3689,8 @@
 --
 -- * 'iHostname' @::@ 'Maybe' 'Text'
 --
+-- * 'iInfrastructureClass' @::@ 'Maybe' 'Text'
+--
 -- * 'iInstallUpdatesOnBoot' @::@ 'Maybe' 'Bool'
 --
 -- * 'iInstanceId' @::@ 'Maybe' 'Text'
@@ -3342,6 +3713,10 @@
 --
 -- * 'iPublicIp' @::@ 'Maybe' 'Text'
 --
+-- * 'iRegisteredBy' @::@ 'Maybe' 'Text'
+--
+-- * 'iReportedOs' @::@ 'Maybe' 'ReportedOs'
+--
 -- * 'iRootDeviceType' @::@ 'Maybe' 'RootDeviceType'
 --
 -- * 'iRootDeviceVolumeId' @::@ 'Maybe' 'Text'
@@ -3360,7 +3735,7 @@
 --
 -- * 'iSubnetId' @::@ 'Maybe' 'Text'
 --
--- * 'iVirtualizationType' @::@ 'Maybe' 'Text'
+-- * 'iVirtualizationType' @::@ 'Maybe' 'VirtualizationType'
 --
 instance' :: Instance
 instance' = Instance
@@ -3394,11 +3769,14 @@
     , _iRootDeviceVolumeId       = Nothing
     , _iInstallUpdatesOnBoot     = Nothing
     , _iEbsOptimized             = Nothing
+    , _iReportedOs               = Nothing
+    , _iInfrastructureClass      = Nothing
+    , _iRegisteredBy             = Nothing
     }
 
 -- | A custom AMI ID to be used to create the instance. The AMI should be based on
--- one of the standard AWS OpsWorks APIs: Amazon Linux or Ubuntu 12.04 LTS. For
--- more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances.html Instances>
+-- one of the standard AWS OpsWorks APIs: Amazon Linux, Ubuntu 12.04 LTS, or
+-- Ubuntu 14.04 LTS. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances.html Instances>
 iAmiId :: Lens' Instance (Maybe Text)
 iAmiId = lens _iAmiId (\s a -> s { _iAmiId = a })
 
@@ -3406,12 +3784,7 @@
 iArchitecture :: Lens' Instance (Maybe Architecture)
 iArchitecture = lens _iArchitecture (\s a -> s { _iArchitecture = a })
 
--- | The instance's auto scaling type, which has three possible values:
---
--- AlwaysRunning: A 24/7 instance, which is not affected by auto scaling.  TimeBasedAutoScaling
--- : A time-based auto scaling instance, which is started and stopped based on a
--- specified schedule.  LoadBasedAutoScaling: A load-based auto scaling
--- instance, which is started and stopped based on load metrics.
+-- | For load-based or time-based instances, the type.
 iAutoScalingType :: Lens' Instance (Maybe AutoScalingType)
 iAutoScalingType = lens _iAutoScalingType (\s a -> s { _iAutoScalingType = a })
 
@@ -3440,10 +3813,20 @@
 iHostname :: Lens' Instance (Maybe Text)
 iHostname = lens _iHostname (\s a -> s { _iHostname = a })
 
+-- | For registered instances, the infrastructure class: 'ec2' or 'on-premises'
+iInfrastructureClass :: Lens' Instance (Maybe Text)
+iInfrastructureClass =
+    lens _iInfrastructureClass (\s a -> s { _iInfrastructureClass = 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 manually running 'yum' (Amazon Linux) or 'apt-get' (Ubuntu) on
 -- the instances.
+--
+-- We strongly recommend using the default value of 'true', to ensure that your
+-- instances have the latest security updates.
+--
+--
 iInstallUpdatesOnBoot :: Lens' Instance (Maybe Bool)
 iInstallUpdatesOnBoot =
     lens _iInstallUpdatesOnBoot (\s a -> s { _iInstallUpdatesOnBoot = a })
@@ -3473,7 +3856,7 @@
 iLayerIds :: Lens' Instance [Text]
 iLayerIds = lens _iLayerIds (\s a -> s { _iLayerIds = a }) . _List
 
--- | The instance operating system.
+-- | The instance's operating system.
 iOs :: Lens' Instance (Maybe Text)
 iOs = lens _iOs (\s a -> s { _iOs = a })
 
@@ -3493,6 +3876,14 @@
 iPublicIp :: Lens' Instance (Maybe Text)
 iPublicIp = lens _iPublicIp (\s a -> s { _iPublicIp = a })
 
+-- | For registered instances, who performed the registration.
+iRegisteredBy :: Lens' Instance (Maybe Text)
+iRegisteredBy = lens _iRegisteredBy (\s a -> s { _iRegisteredBy = a })
+
+-- | For registered instances, the reported operating system.
+iReportedOs :: Lens' Instance (Maybe ReportedOs)
+iReportedOs = lens _iReportedOs (\s a -> s { _iReportedOs = a })
+
 -- | The instance 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 RootDevice>.
 iRootDeviceType :: Lens' Instance (Maybe RootDeviceType)
 iRootDeviceType = lens _iRootDeviceType (\s a -> s { _iRootDeviceType = a })
@@ -3530,8 +3921,7 @@
 
 -- | The instance status:
 --
--- 'requested' 'booting' 'running_setup' 'online' 'setup_failed' 'start_failed' 'terminating'
--- 'terminated' 'stopped' 'connection_lost'
+-- 'booting' 'connection_lost' 'online' 'pending' 'rebooting' 'requested' 'running_setup' 'setup_failed' 'shutting_down' 'start_failed' 'stopped' 'stopping' 'terminated' 'terminating'
 iStatus :: Lens' Instance (Maybe Text)
 iStatus = lens _iStatus (\s a -> s { _iStatus = a })
 
@@ -3540,7 +3930,7 @@
 iSubnetId = lens _iSubnetId (\s a -> s { _iSubnetId = a })
 
 -- | The instance's virtualization type, 'paravirtual' or 'hvm'.
-iVirtualizationType :: Lens' Instance (Maybe Text)
+iVirtualizationType :: Lens' Instance (Maybe VirtualizationType)
 iVirtualizationType =
     lens _iVirtualizationType (\s a -> s { _iVirtualizationType = a })
 
@@ -3555,6 +3945,7 @@
         <*> o .:? "Ec2InstanceId"
         <*> o .:? "ElasticIp"
         <*> o .:? "Hostname"
+        <*> o .:? "InfrastructureClass"
         <*> o .:? "InstallUpdatesOnBoot"
         <*> o .:? "InstanceId"
         <*> o .:? "InstanceProfileArn"
@@ -3566,6 +3957,8 @@
         <*> o .:? "PrivateIp"
         <*> o .:? "PublicDns"
         <*> o .:? "PublicIp"
+        <*> o .:? "RegisteredBy"
+        <*> o .:? "ReportedOs"
         <*> o .:? "RootDeviceType"
         <*> o .:? "RootDeviceVolumeId"
         <*> o .:? "SecurityGroupIds" .!= mempty
@@ -3609,6 +4002,9 @@
         , "RootDeviceVolumeId"       .= _iRootDeviceVolumeId
         , "InstallUpdatesOnBoot"     .= _iInstallUpdatesOnBoot
         , "EbsOptimized"             .= _iEbsOptimized
+        , "ReportedOs"               .= _iReportedOs
+        , "InfrastructureClass"      .= _iInfrastructureClass
+        , "RegisteredBy"             .= _iRegisteredBy
         ]
 
 data Deployment = Deployment
@@ -3757,11 +4153,15 @@
         ]
 
 data InstancesCount = InstancesCount
-    { _icBooting        :: Maybe Int
+    { _icAssigning      :: Maybe Int
+    , _icBooting        :: Maybe Int
     , _icConnectionLost :: Maybe Int
+    , _icDeregistering  :: Maybe Int
     , _icOnline         :: Maybe Int
     , _icPending        :: Maybe Int
     , _icRebooting      :: Maybe Int
+    , _icRegistered     :: Maybe Int
+    , _icRegistering    :: Maybe Int
     , _icRequested      :: Maybe Int
     , _icRunningSetup   :: Maybe Int
     , _icSetupFailed    :: Maybe Int
@@ -3771,22 +4171,31 @@
     , _icStopping       :: Maybe Int
     , _icTerminated     :: Maybe Int
     , _icTerminating    :: Maybe Int
+    , _icUnassigning    :: Maybe Int
     } deriving (Eq, Ord, Show)
 
 -- | 'InstancesCount' constructor.
 --
 -- The fields accessible through corresponding lenses are:
 --
+-- * 'icAssigning' @::@ 'Maybe' 'Int'
+--
 -- * 'icBooting' @::@ 'Maybe' 'Int'
 --
 -- * 'icConnectionLost' @::@ 'Maybe' 'Int'
 --
+-- * 'icDeregistering' @::@ 'Maybe' 'Int'
+--
 -- * 'icOnline' @::@ 'Maybe' 'Int'
 --
 -- * 'icPending' @::@ 'Maybe' 'Int'
 --
 -- * 'icRebooting' @::@ 'Maybe' 'Int'
 --
+-- * 'icRegistered' @::@ 'Maybe' 'Int'
+--
+-- * 'icRegistering' @::@ 'Maybe' 'Int'
+--
 -- * 'icRequested' @::@ 'Maybe' 'Int'
 --
 -- * 'icRunningSetup' @::@ 'Maybe' 'Int'
@@ -3805,13 +4214,19 @@
 --
 -- * 'icTerminating' @::@ 'Maybe' 'Int'
 --
+-- * 'icUnassigning' @::@ 'Maybe' 'Int'
+--
 instancesCount :: InstancesCount
 instancesCount = InstancesCount
-    { _icBooting        = Nothing
+    { _icAssigning      = Nothing
+    , _icBooting        = Nothing
     , _icConnectionLost = Nothing
+    , _icDeregistering  = Nothing
     , _icOnline         = Nothing
     , _icPending        = Nothing
     , _icRebooting      = Nothing
+    , _icRegistered     = Nothing
+    , _icRegistering    = Nothing
     , _icRequested      = Nothing
     , _icRunningSetup   = Nothing
     , _icSetupFailed    = Nothing
@@ -3821,8 +4236,13 @@
     , _icStopping       = Nothing
     , _icTerminated     = Nothing
     , _icTerminating    = Nothing
+    , _icUnassigning    = Nothing
     }
 
+-- | 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 'booting' status.
 icBooting :: Lens' InstancesCount (Maybe Int)
 icBooting = lens _icBooting (\s a -> s { _icBooting = a })
@@ -3831,6 +4251,10 @@
 icConnectionLost :: Lens' InstancesCount (Maybe Int)
 icConnectionLost = lens _icConnectionLost (\s a -> s { _icConnectionLost = 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 'online' status.
 icOnline :: Lens' InstancesCount (Maybe Int)
 icOnline = lens _icOnline (\s a -> s { _icOnline = a })
@@ -3843,6 +4267,14 @@
 icRebooting :: Lens' InstancesCount (Maybe Int)
 icRebooting = lens _icRebooting (\s a -> s { _icRebooting = 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 in the Registering state.
+icRegistering :: Lens' InstancesCount (Maybe Int)
+icRegistering = lens _icRegistering (\s a -> s { _icRegistering = a })
+
 -- | The number of instances with 'requested' status.
 icRequested :: Lens' InstancesCount (Maybe Int)
 icRequested = lens _icRequested (\s a -> s { _icRequested = a })
@@ -3879,13 +4311,21 @@
 icTerminating :: Lens' InstancesCount (Maybe Int)
 icTerminating = lens _icTerminating (\s a -> s { _icTerminating = a })
 
+-- | The number of instances in the Unassigning state.
+icUnassigning :: Lens' InstancesCount (Maybe Int)
+icUnassigning = lens _icUnassigning (\s a -> s { _icUnassigning = a })
+
 instance FromJSON InstancesCount where
     parseJSON = withObject "InstancesCount" $ \o -> InstancesCount
-        <$> o .:? "Booting"
+        <$> o .:? "Assigning"
+        <*> o .:? "Booting"
         <*> o .:? "ConnectionLost"
+        <*> o .:? "Deregistering"
         <*> o .:? "Online"
         <*> o .:? "Pending"
         <*> o .:? "Rebooting"
+        <*> o .:? "Registered"
+        <*> o .:? "Registering"
         <*> o .:? "Requested"
         <*> o .:? "RunningSetup"
         <*> o .:? "SetupFailed"
@@ -3895,14 +4335,19 @@
         <*> o .:? "Stopping"
         <*> o .:? "Terminated"
         <*> o .:? "Terminating"
+        <*> o .:? "Unassigning"
 
 instance ToJSON InstancesCount where
     toJSON InstancesCount{..} = object
-        [ "Booting"        .= _icBooting
+        [ "Assigning"      .= _icAssigning
+        , "Booting"        .= _icBooting
         , "ConnectionLost" .= _icConnectionLost
+        , "Deregistering"  .= _icDeregistering
         , "Online"         .= _icOnline
         , "Pending"        .= _icPending
         , "Rebooting"      .= _icRebooting
+        , "Registered"     .= _icRegistered
+        , "Registering"    .= _icRegistering
         , "Requested"      .= _icRequested
         , "RunningSetup"   .= _icRunningSetup
         , "SetupFailed"    .= _icSetupFailed
@@ -3912,10 +4357,12 @@
         , "Stopping"       .= _icStopping
         , "Terminated"     .= _icTerminated
         , "Terminating"    .= _icTerminating
+        , "Unassigning"    .= _icUnassigning
         ]
 
 data AppType
-    = Nodejs -- ^ nodejs
+    = Java   -- ^ java
+    | Nodejs -- ^ nodejs
     | Other  -- ^ other
     | Php    -- ^ php
     | Rails  -- ^ rails
@@ -3926,6 +4373,7 @@
 
 instance FromText AppType where
     parser = takeText >>= \case
+        "java"   -> pure Java
         "nodejs" -> pure Nodejs
         "other"  -> pure Other
         "php"    -> pure Php
@@ -3936,6 +4384,7 @@
 
 instance ToText AppType where
     toText = \case
+        Java   -> "java"
         Nodejs -> "nodejs"
         Other  -> "other"
         Php    -> "php"
diff --git a/gen/Network/AWS/OpsWorks/UnassignInstance.hs b/gen/Network/AWS/OpsWorks/UnassignInstance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/OpsWorks/UnassignInstance.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE DataKinds                   #-}
+{-# LANGUAGE DeriveGeneric               #-}
+{-# LANGUAGE FlexibleInstances           #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
+{-# LANGUAGE LambdaCase                  #-}
+{-# LANGUAGE NoImplicitPrelude           #-}
+{-# LANGUAGE OverloadedStrings           #-}
+{-# LANGUAGE RecordWildCards             #-}
+{-# LANGUAGE TypeFamilies                #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Network.AWS.OpsWorks.UnassignInstance
+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
+-- License     : This Source Code Form is subject to the terms of
+--               the Mozilla Public License, v. 2.0.
+--               A copy of the MPL can be found in the LICENSE file or
+--               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : experimental
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- | 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.
+--
+-- 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 UserPermissions>.
+--
+-- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_UnassignInstance.html>
+module Network.AWS.OpsWorks.UnassignInstance
+    (
+    -- * Request
+      UnassignInstance
+    -- ** Request constructor
+    , unassignInstance
+    -- ** Request lenses
+    , ui1InstanceId
+
+    -- * Response
+    , UnassignInstanceResponse
+    -- ** Response constructor
+    , unassignInstanceResponse
+    ) where
+
+import Network.AWS.Prelude
+import Network.AWS.Request.JSON
+import Network.AWS.OpsWorks.Types
+import qualified GHC.Exts
+
+newtype UnassignInstance = UnassignInstance
+    { _ui1InstanceId :: Text
+    } deriving (Eq, Ord, Show, Monoid, IsString)
+
+-- | 'UnassignInstance' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'ui1InstanceId' @::@ 'Text'
+--
+unassignInstance :: Text -- ^ 'ui1InstanceId'
+                 -> UnassignInstance
+unassignInstance p1 = UnassignInstance
+    { _ui1InstanceId = p1
+    }
+
+-- | The instance ID.
+ui1InstanceId :: Lens' UnassignInstance Text
+ui1InstanceId = lens _ui1InstanceId (\s a -> s { _ui1InstanceId = a })
+
+data UnassignInstanceResponse = UnassignInstanceResponse
+    deriving (Eq, Ord, Show, Generic)
+
+-- | 'UnassignInstanceResponse' constructor.
+unassignInstanceResponse :: UnassignInstanceResponse
+unassignInstanceResponse = UnassignInstanceResponse
+
+instance ToPath UnassignInstance where
+    toPath = const "/"
+
+instance ToQuery UnassignInstance where
+    toQuery = const mempty
+
+instance ToHeaders UnassignInstance
+
+instance ToJSON UnassignInstance where
+    toJSON UnassignInstance{..} = object
+        [ "InstanceId" .= _ui1InstanceId
+        ]
+
+instance AWSRequest UnassignInstance where
+    type Sv UnassignInstance = OpsWorks
+    type Rs UnassignInstance = UnassignInstanceResponse
+
+    request  = post "UnassignInstance"
+    response = nullResponse UnassignInstanceResponse
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
@@ -43,6 +43,7 @@
     , uaDescription
     , uaDomains
     , uaEnableSsl
+    , uaEnvironment
     , uaName
     , uaSslConfiguration
     , uaType
@@ -66,6 +67,7 @@
     , _uaDescription      :: Maybe Text
     , _uaDomains          :: List "InstanceIds" Text
     , _uaEnableSsl        :: Maybe Bool
+    , _uaEnvironment      :: List "Environment" EnvironmentVariable
     , _uaName             :: Maybe Text
     , _uaSslConfiguration :: Maybe SslConfiguration
     , _uaType             :: Maybe AppType
@@ -89,6 +91,8 @@
 --
 -- * 'uaEnableSsl' @::@ 'Maybe' 'Bool'
 --
+-- * 'uaEnvironment' @::@ ['EnvironmentVariable']
+--
 -- * 'uaName' @::@ 'Maybe' 'Text'
 --
 -- * 'uaSslConfiguration' @::@ 'Maybe' 'SslConfiguration'
@@ -108,6 +112,7 @@
     , _uaEnableSsl        = Nothing
     , _uaSslConfiguration = Nothing
     , _uaAttributes       = mempty
+    , _uaEnvironment      = mempty
     }
 
 -- | The app ID.
@@ -139,6 +144,16 @@
 uaEnableSsl :: Lens' UpdateApp (Maybe Bool)
 uaEnableSsl = lens _uaEnableSsl (\s a -> s { _uaEnableSsl = a })
 
+-- | An array of 'EnvironmentVariable' objects that specify environment variables to
+-- be associated with the app. You can specify up to ten environment variables.
+-- After you deploy the app, these variables are defined on the associated app
+-- server instances.
+--
+-- This parameter is supported only by Chef 11.10 stacks. If you have specified
+-- one or more environment variables, you cannot modify the stack's Chef version.
+uaEnvironment :: Lens' UpdateApp [EnvironmentVariable]
+uaEnvironment = lens _uaEnvironment (\s a -> s { _uaEnvironment = a }) . _List
+
 -- | The app name.
 uaName :: Lens' UpdateApp (Maybe Text)
 uaName = lens _uaName (\s a -> s { _uaName = a })
@@ -179,6 +194,7 @@
         , "EnableSsl"        .= _uaEnableSsl
         , "SslConfiguration" .= _uaSslConfiguration
         , "Attributes"       .= _uaAttributes
+        , "Environment"      .= _uaEnvironment
         ]
 
 instance AWSRequest UpdateApp 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
@@ -116,8 +116,10 @@
     }
 
 -- | A custom AMI ID to be used to create the instance. The AMI should be based on
--- one of the standard AWS OpsWorks APIs: Amazon Linux or Ubuntu 12.04 LTS. For
--- more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances.html Instances>
+-- one of the standard AWS OpsWorks AMIs: Amazon Linux, Ubuntu 12.04 LTS, or
+-- Ubuntu 14.04 LTS. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances.html Instances>
+--
+-- If you specify a custom AMI, you must set 'Os' to 'Custom'.
 uiAmiId :: Lens' UpdateInstance (Maybe Text)
 uiAmiId = lens _uiAmiId (\s a -> s { _uiAmiId = a })
 
@@ -127,12 +129,7 @@
 uiArchitecture :: Lens' UpdateInstance (Maybe Architecture)
 uiArchitecture = lens _uiArchitecture (\s a -> s { _uiArchitecture = a })
 
--- | The instance's auto scaling type, which has three possible values:
---
--- AlwaysRunning: A 24/7 instance, which is not affected by auto scaling.  TimeBasedAutoScaling
--- : A time-based auto scaling instance, which is started and stopped based on a
--- specified schedule.  LoadBasedAutoScaling: A load-based auto scaling
--- instance, which is started and stopped based on load metrics.
+-- | For load-based or time-based instances, the type.
 uiAutoScalingType :: Lens' UpdateInstance (Maybe AutoScalingType)
 uiAutoScalingType =
     lens _uiAutoScalingType (\s a -> s { _uiAutoScalingType = a })
@@ -149,6 +146,11 @@
 -- boots. The default value is 'true'. To control when updates are installed, set
 -- this value to 'false'. You must then update your instances manually by using 'CreateDeployment' to run the 'update_dependencies' stack command or manually running 'yum' (Amazon
 -- Linux) or 'apt-get' (Ubuntu) on the instances.
+--
+-- We strongly recommend using the default value of 'true', to ensure that your
+-- instances have the latest security updates.
+--
+--
 uiInstallUpdatesOnBoot :: Lens' UpdateInstance (Maybe Bool)
 uiInstallUpdatesOnBoot =
     lens _uiInstallUpdatesOnBoot (\s a -> s { _uiInstallUpdatesOnBoot = a })
@@ -167,13 +169,13 @@
 uiLayerIds :: Lens' UpdateInstance [Text]
 uiLayerIds = lens _uiLayerIds (\s a -> s { _uiLayerIds = a }) . _List
 
--- | The instance operating system, which must be set to one of the following.
+-- | The instance's operating system, which must be set to one of the following.
 --
--- Standard operating systems: 'Amazon Linux' or 'Ubuntu 12.04 LTS'  Custom AMIs: 'Custom'   The default option is 'Amazon Linux'. If you set this parameter to 'Custom',
--- you must use the 'CreateInstance' action's AmiId parameter to specify the
--- custom AMI that you want to use. For more information on the standard
--- operating systems, see <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>.
+-- Standard operating systems: An Amazon Linux version such as 'Amazon Linux2014.09', 'Ubuntu 12.04 LTS', or 'Ubuntu 14.04 LTS'. Custom AMIs: 'Custom'   The
+-- default option is the current Amazon Linux version, such as 'Amazon Linux2014.09'. If you set this parameter to 'Custom', you must use the 'CreateInstance'
+-- action's AmiId parameter to specify the custom AMI that you want to use. For
+-- more information on the standard operating systems, see <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 CustomAMIs>.
 uiOs :: Lens' UpdateInstance (Maybe Text)
 uiOs = lens _uiOs (\s a -> s { _uiOs = a })
 
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
@@ -45,6 +45,7 @@
     , ulEnableAutoHealing
     , ulInstallUpdatesOnBoot
     , ulLayerId
+    , ulLifecycleEventConfiguration
     , ulName
     , ulPackages
     , ulShortname
@@ -63,20 +64,21 @@
 import qualified GHC.Exts
 
 data UpdateLayer = UpdateLayer
-    { _ulAttributes               :: Map LayerAttributesKeys Text
-    , _ulAutoAssignElasticIps     :: Maybe Bool
-    , _ulAutoAssignPublicIps      :: Maybe Bool
-    , _ulCustomInstanceProfileArn :: Maybe Text
-    , _ulCustomRecipes            :: Maybe Recipes
-    , _ulCustomSecurityGroupIds   :: List "InstanceIds" Text
-    , _ulEnableAutoHealing        :: Maybe Bool
-    , _ulInstallUpdatesOnBoot     :: Maybe Bool
-    , _ulLayerId                  :: Text
-    , _ulName                     :: Maybe Text
-    , _ulPackages                 :: List "InstanceIds" Text
-    , _ulShortname                :: Maybe Text
-    , _ulUseEbsOptimizedInstances :: Maybe Bool
-    , _ulVolumeConfigurations     :: List "VolumeConfigurations" VolumeConfiguration
+    { _ulAttributes                  :: Map LayerAttributesKeys Text
+    , _ulAutoAssignElasticIps        :: Maybe Bool
+    , _ulAutoAssignPublicIps         :: Maybe Bool
+    , _ulCustomInstanceProfileArn    :: Maybe Text
+    , _ulCustomRecipes               :: Maybe Recipes
+    , _ulCustomSecurityGroupIds      :: List "InstanceIds" Text
+    , _ulEnableAutoHealing           :: Maybe Bool
+    , _ulInstallUpdatesOnBoot        :: Maybe Bool
+    , _ulLayerId                     :: Text
+    , _ulLifecycleEventConfiguration :: Maybe LifecycleEventConfiguration
+    , _ulName                        :: Maybe Text
+    , _ulPackages                    :: List "InstanceIds" Text
+    , _ulShortname                   :: Maybe Text
+    , _ulUseEbsOptimizedInstances    :: Maybe Bool
+    , _ulVolumeConfigurations        :: List "VolumeConfigurations" VolumeConfiguration
     } deriving (Eq, Show)
 
 -- | 'UpdateLayer' constructor.
@@ -101,6 +103,8 @@
 --
 -- * 'ulLayerId' @::@ 'Text'
 --
+-- * 'ulLifecycleEventConfiguration' @::@ 'Maybe' 'LifecycleEventConfiguration'
+--
 -- * 'ulName' @::@ 'Maybe' 'Text'
 --
 -- * 'ulPackages' @::@ ['Text']
@@ -114,20 +118,21 @@
 updateLayer :: Text -- ^ 'ulLayerId'
             -> UpdateLayer
 updateLayer p1 = UpdateLayer
-    { _ulLayerId                  = p1
-    , _ulName                     = Nothing
-    , _ulShortname                = Nothing
-    , _ulAttributes               = mempty
-    , _ulCustomInstanceProfileArn = Nothing
-    , _ulCustomSecurityGroupIds   = mempty
-    , _ulPackages                 = mempty
-    , _ulVolumeConfigurations     = mempty
-    , _ulEnableAutoHealing        = Nothing
-    , _ulAutoAssignElasticIps     = Nothing
-    , _ulAutoAssignPublicIps      = Nothing
-    , _ulCustomRecipes            = Nothing
-    , _ulInstallUpdatesOnBoot     = Nothing
-    , _ulUseEbsOptimizedInstances = Nothing
+    { _ulLayerId                     = p1
+    , _ulName                        = Nothing
+    , _ulShortname                   = Nothing
+    , _ulAttributes                  = mempty
+    , _ulCustomInstanceProfileArn    = Nothing
+    , _ulCustomSecurityGroupIds      = mempty
+    , _ulPackages                    = mempty
+    , _ulVolumeConfigurations        = mempty
+    , _ulEnableAutoHealing           = Nothing
+    , _ulAutoAssignElasticIps        = Nothing
+    , _ulAutoAssignPublicIps         = Nothing
+    , _ulCustomRecipes               = Nothing
+    , _ulInstallUpdatesOnBoot        = Nothing
+    , _ulUseEbsOptimizedInstances    = Nothing
+    , _ulLifecycleEventConfiguration = Nothing
     }
 
 -- | One or more user-defined key/value pairs to be added to the stack attributes.
@@ -173,6 +178,11 @@
 -- boots. The default value is 'true'. To control when updates are installed, set
 -- this value to 'false'. You must then update your instances manually by using 'CreateDeployment' to run the 'update_dependencies' stack command or manually running 'yum' (Amazon
 -- Linux) or 'apt-get' (Ubuntu) on the instances.
+--
+-- We strongly recommend using the default value of 'true', to ensure that your
+-- instances have the latest security updates.
+--
+--
 ulInstallUpdatesOnBoot :: Lens' UpdateLayer (Maybe Bool)
 ulInstallUpdatesOnBoot =
     lens _ulInstallUpdatesOnBoot (\s a -> s { _ulInstallUpdatesOnBoot = a })
@@ -181,6 +191,12 @@
 ulLayerId :: Lens' UpdateLayer Text
 ulLayerId = lens _ulLayerId (\s a -> s { _ulLayerId = a })
 
+
+ulLifecycleEventConfiguration :: Lens' UpdateLayer (Maybe LifecycleEventConfiguration)
+ulLifecycleEventConfiguration =
+    lens _ulLifecycleEventConfiguration
+        (\s a -> s { _ulLifecycleEventConfiguration = a })
+
 -- | The layer name, which is used by the console.
 ulName :: Lens' UpdateLayer (Maybe Text)
 ulName = lens _ulName (\s a -> s { _ulName = a })
@@ -225,20 +241,21 @@
 
 instance ToJSON UpdateLayer where
     toJSON UpdateLayer{..} = object
-        [ "LayerId"                  .= _ulLayerId
-        , "Name"                     .= _ulName
-        , "Shortname"                .= _ulShortname
-        , "Attributes"               .= _ulAttributes
-        , "CustomInstanceProfileArn" .= _ulCustomInstanceProfileArn
-        , "CustomSecurityGroupIds"   .= _ulCustomSecurityGroupIds
-        , "Packages"                 .= _ulPackages
-        , "VolumeConfigurations"     .= _ulVolumeConfigurations
-        , "EnableAutoHealing"        .= _ulEnableAutoHealing
-        , "AutoAssignElasticIps"     .= _ulAutoAssignElasticIps
-        , "AutoAssignPublicIps"      .= _ulAutoAssignPublicIps
-        , "CustomRecipes"            .= _ulCustomRecipes
-        , "InstallUpdatesOnBoot"     .= _ulInstallUpdatesOnBoot
-        , "UseEbsOptimizedInstances" .= _ulUseEbsOptimizedInstances
+        [ "LayerId"                     .= _ulLayerId
+        , "Name"                        .= _ulName
+        , "Shortname"                   .= _ulShortname
+        , "Attributes"                  .= _ulAttributes
+        , "CustomInstanceProfileArn"    .= _ulCustomInstanceProfileArn
+        , "CustomSecurityGroupIds"      .= _ulCustomSecurityGroupIds
+        , "Packages"                    .= _ulPackages
+        , "VolumeConfigurations"        .= _ulVolumeConfigurations
+        , "EnableAutoHealing"           .= _ulEnableAutoHealing
+        , "AutoAssignElasticIps"        .= _ulAutoAssignElasticIps
+        , "AutoAssignPublicIps"         .= _ulAutoAssignPublicIps
+        , "CustomRecipes"               .= _ulCustomRecipes
+        , "InstallUpdatesOnBoot"        .= _ulInstallUpdatesOnBoot
+        , "UseEbsOptimizedInstances"    .= _ulUseEbsOptimizedInstances
+        , "LifecycleEventConfiguration" .= _ulLifecycleEventConfiguration
         ]
 
 instance AWSRequest UpdateLayer 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
@@ -24,6 +24,10 @@
 
 -- | Updates an Amazon RDS 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 UserPermissions>.
+--
 -- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_UpdateRdsDbInstance.html>
 module Network.AWS.OpsWorks.UpdateRdsDbInstance
     (
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
@@ -192,7 +192,11 @@
     lens _usDefaultInstanceProfileArn
         (\s a -> s { _usDefaultInstanceProfileArn = a })
 
--- | The stack's default operating system, which must be set to 'Amazon Linux' or 'Ubuntu 12.04 LTS'. The default option is 'Amazon Linux'.
+-- | The stack's operating system, which must be set to one of the following.
+--
+-- Standard operating systems: an Amazon Linux version such as 'Amazon Linux2014.09', 'Ubuntu 12.04 LTS', or 'Ubuntu 14.04 LTS'. Custom AMIs: 'Custom'. You
+-- specify the custom AMI you want to use when you create instances.   The
+-- default option is the current Amazon Linux version.
 usDefaultOs :: Lens' UpdateStack (Maybe Text)
 usDefaultOs = lens _usDefaultOs (\s a -> s { _usDefaultOs = a })
 
@@ -209,10 +213,12 @@
 usDefaultSshKeyName =
     lens _usDefaultSshKeyName (\s a -> s { _usDefaultSshKeyName = a })
 
--- | The stack's default subnet ID. All instances will be launched into this
--- subnet unless you specify otherwise when you create the instance. If you also
+-- | The stack's default VPC subnet ID. This parameter is required if you specify
+-- a value for the 'VpcId' parameter. All instances are launched into this subnet
+-- unless you specify otherwise when you create the instance. If you also
 -- specify a value for 'DefaultAvailabilityZone', the subnet must be in that zone.
--- For more information, see 'CreateStack'.
+-- For information on default values and when this parameter is required, see
+-- the 'VpcId' parameter description.
 usDefaultSubnetId :: Lens' UpdateStack (Maybe Text)
 usDefaultSubnetId =
     lens _usDefaultSubnetId (\s a -> s { _usDefaultSubnetId = a })
@@ -235,6 +241,12 @@
 -- 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>.
+--
+-- You must set this parameter to a valid service role ARN or the action will
+-- fail; there is no default value. You can specify the stack's current service
+-- role ARN, if you prefer, but you must do so explicitly.
+--
+--
 usServiceRoleArn :: Lens' UpdateStack (Maybe Text)
 usServiceRoleArn = lens _usServiceRoleArn (\s a -> s { _usServiceRoleArn = a })
 
