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.3.3
+version:               0.3.4
 synopsis:              Amazon OpsWorks SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
@@ -106,5 +106,5 @@
     other-modules:
 
     build-depends:
-          amazonka-core == 0.3.3.*
+          amazonka-core == 0.3.4.*
         , base          >= 4.7     && < 5
diff --git a/gen/Network/AWS/OpsWorks/AssignInstance.hs b/gen/Network/AWS/OpsWorks/AssignInstance.hs
--- a/gen/Network/AWS/OpsWorks/AssignInstance.hs
+++ b/gen/Network/AWS/OpsWorks/AssignInstance.hs
@@ -46,6 +46,7 @@
     , assignInstanceResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
diff --git a/gen/Network/AWS/OpsWorks/AssignVolume.hs b/gen/Network/AWS/OpsWorks/AssignVolume.hs
--- a/gen/Network/AWS/OpsWorks/AssignVolume.hs
+++ b/gen/Network/AWS/OpsWorks/AssignVolume.hs
@@ -23,7 +23,8 @@
 -- Derived from AWS service descriptions, licensed under Apache 2.0.
 
 -- | Assigns one of the stack's registered Amazon EBS volumes to a specified
--- instance. The volume must first be registered with the stack by calling 'RegisterVolume'. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/resources.html Resource Management>.
+-- instance. The volume must first be registered with the stack by calling 'RegisterVolume'. After you register the volume, you must call 'UpdateVolume' to specify a
+-- mount point before calling 'AssignVolume'. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/resources.html ResourceManagement>.
 --
 -- 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
@@ -46,6 +47,7 @@
     , assignVolumeResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
diff --git a/gen/Network/AWS/OpsWorks/AssociateElasticIp.hs b/gen/Network/AWS/OpsWorks/AssociateElasticIp.hs
--- a/gen/Network/AWS/OpsWorks/AssociateElasticIp.hs
+++ b/gen/Network/AWS/OpsWorks/AssociateElasticIp.hs
@@ -47,6 +47,7 @@
     , associateElasticIpResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
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
@@ -49,6 +49,7 @@
     , attachElasticLoadBalancerResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
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
@@ -66,6 +66,7 @@
     , csrStackId
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
@@ -226,7 +227,7 @@
     lens _cs1DefaultInstanceProfileArn
         (\s a -> s { _cs1DefaultInstanceProfileArn = a })
 
--- | The stacks's operating system, which must be set to one of the following.
+-- | 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
@@ -242,8 +243,11 @@
     lens _cs1DefaultRootDeviceType
         (\s a -> s { _cs1DefaultRootDeviceType = a })
 
--- | A default SSH key for the stack instances. You can override this value when
--- you create or update an instance.
+-- | A default Amazon EC2 key pair name. The default value is none. If you specify
+-- a key pair name, AWS OpsWorks installs the public key on the instance and you
+-- can use the private key with an SSH client to log in to the instance. For
+-- more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-ssh.html  Using SSH to Communicate with an Instance> and <http://docs.aws.amazon.com/opsworks/latest/userguide/security-ssh-access.html Managing SSH Access>. You can override this setting by specifying a different
+-- key pair, or no key pair, when you <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-add.html  create an instance>.
 cs1DefaultSshKeyName :: Lens' CloneStack (Maybe Text)
 cs1DefaultSshKeyName =
     lens _cs1DefaultSshKeyName (\s a -> s { _cs1DefaultSshKeyName = a })
@@ -262,7 +266,7 @@
 -- theme is used to generate host names for the stack's instances. By default, 'HostnameTheme' is set to 'Layer_Dependent', which creates host names by appending integers to
 -- the layer's short name. The other themes are:
 --
--- 'Baked_Goods' 'Clouds' 'European_Cities' 'Fruits' 'Greek_Deities' 'Legendary_Creatures_from_Japan' 'Planets_and_Moons' 'Roman_Deities' 'Scottish_Islands' 'US_Cities' 'Wild_Cats'  To
+-- 'Baked_Goods' 'Clouds' 'Europe_Cities' 'Fruits' 'Greek_Deities' 'Legendary_creatures_from_Japan' 'Planets_and_Moons' 'Roman_Deities' 'Scottish_Islands' 'US_Cities' 'Wild_Cats'  To
 -- obtain a generated host name, call 'GetHostNameSuggestion', which returns a
 -- host name based on the current theme.
 cs1HostnameTheme :: Lens' CloneStack (Maybe Text)
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
@@ -57,6 +57,7 @@
     , carAppId
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
@@ -150,9 +151,15 @@
 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.
+-- be associated with the app. After you deploy the app, these variables are
+-- defined on the associated app server instance. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-creating.html#workingapps-creating-environment Environment Variables>.
+--
+-- There is no specific limit on the number of environment variables. However,
+-- the size of the associated data structure - which includes the variables'
+-- names, values, and protected flag values - cannot exceed 10 KB (10240 Bytes).
+-- This limit should accommodate most if not all use cases. Exceeding it will
+-- cause an exception with the message, "Environment: is too large (maximum is
+-- 10KB)."
 --
 -- 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.
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
@@ -52,6 +52,7 @@
     , cdrDeploymentId
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
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
@@ -40,6 +40,7 @@
     , ciArchitecture
     , ciAutoScalingType
     , ciAvailabilityZone
+    , ciBlockDeviceMappings
     , ciEbsOptimized
     , ciHostname
     , ciInstallUpdatesOnBoot
@@ -60,6 +61,7 @@
     , cirInstanceId
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
@@ -70,6 +72,7 @@
     , _ciArchitecture         :: Maybe Architecture
     , _ciAutoScalingType      :: Maybe AutoScalingType
     , _ciAvailabilityZone     :: Maybe Text
+    , _ciBlockDeviceMappings  :: List "BlockDeviceMappings" BlockDeviceMapping
     , _ciEbsOptimized         :: Maybe Bool
     , _ciHostname             :: Maybe Text
     , _ciInstallUpdatesOnBoot :: Maybe Bool
@@ -95,6 +98,8 @@
 --
 -- * 'ciAvailabilityZone' @::@ 'Maybe' 'Text'
 --
+-- * 'ciBlockDeviceMappings' @::@ ['BlockDeviceMapping']
+--
 -- * 'ciEbsOptimized' @::@ 'Maybe' 'Bool'
 --
 -- * 'ciHostname' @::@ 'Maybe' 'Text'
@@ -134,6 +139,7 @@
     , _ciSubnetId             = Nothing
     , _ciArchitecture         = Nothing
     , _ciRootDeviceType       = Nothing
+    , _ciBlockDeviceMappings  = mempty
     , _ciInstallUpdatesOnBoot = Nothing
     , _ciEbsOptimized         = Nothing
     }
@@ -162,6 +168,13 @@
 ciAvailabilityZone =
     lens _ciAvailabilityZone (\s a -> s { _ciAvailabilityZone = a })
 
+-- | An array of 'BlockDeviceMapping' objects that specify the instance's block
+-- devices. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html Block Device Mapping>.
+ciBlockDeviceMappings :: Lens' CreateInstance [BlockDeviceMapping]
+ciBlockDeviceMappings =
+    lens _ciBlockDeviceMappings (\s a -> s { _ciBlockDeviceMappings = a })
+        . _List
+
 -- | Whether to create an Amazon EBS-optimized instance.
 ciEbsOptimized :: Lens' CreateInstance (Maybe Bool)
 ciEbsOptimized = lens _ciEbsOptimized (\s a -> s { _ciEbsOptimized = a })
@@ -208,7 +221,7 @@
 ciRootDeviceType :: Lens' CreateInstance (Maybe RootDeviceType)
 ciRootDeviceType = lens _ciRootDeviceType (\s a -> s { _ciRootDeviceType = a })
 
--- | The instance SSH key name.
+-- | The instance's Amazon EC2 key pair name.
 ciSshKeyName :: Lens' CreateInstance (Maybe Text)
 ciSshKeyName = lens _ciSshKeyName (\s a -> s { _ciSshKeyName = a })
 
@@ -269,6 +282,7 @@
         , "SubnetId"             .= _ciSubnetId
         , "Architecture"         .= _ciArchitecture
         , "RootDeviceType"       .= _ciRootDeviceType
+        , "BlockDeviceMappings"  .= _ciBlockDeviceMappings
         , "InstallUpdatesOnBoot" .= _ciInstallUpdatesOnBoot
         , "EbsOptimized"         .= _ciEbsOptimized
         ]
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
@@ -68,6 +68,7 @@
     , clrLayerId
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
@@ -220,10 +221,14 @@
 clPackages :: Lens' CreateLayer [Text]
 clPackages = lens _clPackages (\s a -> s { _clPackages = a }) . _List
 
--- | The layer short name, which is used internally by AWS OpsWorks and by Chef
--- recipes. The short name is also used as the name for the directory where your
--- app files are installed. It can have a maximum of 200 characters, which are
--- limited to the alphanumeric characters, '-', '_', and '.'.
+-- | For custom layers only, use this parameter to specify the layer's short name,
+-- which is used internally by AWS OpsWorks and by Chef recipes. The short name
+-- is also used as the name for the directory where your app files are
+-- installed. It can have a maximum of 200 characters, which are limited to the
+-- alphanumeric characters, '-', '_', and '.'.
+--
+-- The built-in layers' short names are defined by AWS OpsWorks. For more
+-- information, see the <http://docs.aws.amazon.com/opsworks/latest/userguide/layers.html Layer Reference>
 clShortname :: Lens' CreateLayer Text
 clShortname = lens _clShortname (\s a -> s { _clShortname = a })
 
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
@@ -63,6 +63,7 @@
     , csr1StackId
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
@@ -217,8 +218,11 @@
 csDefaultRootDeviceType =
     lens _csDefaultRootDeviceType (\s a -> s { _csDefaultRootDeviceType = a })
 
--- | A default SSH key for the stack instances. You can override this value when
--- you create or update an instance.
+-- | A default Amazon EC2 key pair name. The default value is none. If you specify
+-- a key pair name, AWS OpsWorks installs the public key on the instance and you
+-- can use the private key with an SSH client to log in to the instance. For
+-- more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-ssh.html  Using SSH to Communicate with an Instance> and <http://docs.aws.amazon.com/opsworks/latest/userguide/security-ssh-access.html Managing SSH Access>. You can override this setting by specifying a different
+-- key pair, or no key pair, when you <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-add.html  create an instance>.
 csDefaultSshKeyName :: Lens' CreateStack (Maybe Text)
 csDefaultSshKeyName =
     lens _csDefaultSshKeyName (\s a -> s { _csDefaultSshKeyName = a })
@@ -237,7 +241,7 @@
 -- theme is used to generate host names for the stack's instances. By default, 'HostnameTheme' is set to 'Layer_Dependent', which creates host names by appending integers to
 -- the layer's short name. The other themes are:
 --
--- 'Baked_Goods' 'Clouds' 'European_Cities' 'Fruits' 'Greek_Deities' 'Legendary_Creatures_from_Japan' 'Planets_and_Moons' 'Roman_Deities' 'Scottish_Islands' 'US_Cities' 'Wild_Cats'  To
+-- 'Baked_Goods' 'Clouds' 'Europe_Cities' 'Fruits' 'Greek_Deities' 'Legendary_creatures_from_Japan' 'Planets_and_Moons' 'Roman_Deities' 'Scottish_Islands' 'US_Cities' 'Wild_Cats'  To
 -- obtain a generated host name, call 'GetHostNameSuggestion', which returns a
 -- host name based on the current theme.
 csHostnameTheme :: Lens' CreateStack (Maybe Text)
diff --git a/gen/Network/AWS/OpsWorks/CreateUserProfile.hs b/gen/Network/AWS/OpsWorks/CreateUserProfile.hs
--- a/gen/Network/AWS/OpsWorks/CreateUserProfile.hs
+++ b/gen/Network/AWS/OpsWorks/CreateUserProfile.hs
@@ -49,6 +49,7 @@
     , cuprIamUserArn
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
diff --git a/gen/Network/AWS/OpsWorks/DeleteApp.hs b/gen/Network/AWS/OpsWorks/DeleteApp.hs
--- a/gen/Network/AWS/OpsWorks/DeleteApp.hs
+++ b/gen/Network/AWS/OpsWorks/DeleteApp.hs
@@ -44,6 +44,7 @@
     , deleteAppResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
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
@@ -49,6 +49,7 @@
     , deleteInstanceResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
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
@@ -45,6 +45,7 @@
     , deleteLayerResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
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
@@ -45,6 +45,7 @@
     , deleteStackResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
diff --git a/gen/Network/AWS/OpsWorks/DeleteUserProfile.hs b/gen/Network/AWS/OpsWorks/DeleteUserProfile.hs
--- a/gen/Network/AWS/OpsWorks/DeleteUserProfile.hs
+++ b/gen/Network/AWS/OpsWorks/DeleteUserProfile.hs
@@ -44,6 +44,7 @@
     , deleteUserProfileResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
diff --git a/gen/Network/AWS/OpsWorks/DeregisterElasticIp.hs b/gen/Network/AWS/OpsWorks/DeregisterElasticIp.hs
--- a/gen/Network/AWS/OpsWorks/DeregisterElasticIp.hs
+++ b/gen/Network/AWS/OpsWorks/DeregisterElasticIp.hs
@@ -45,6 +45,7 @@
     , deregisterElasticIpResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
diff --git a/gen/Network/AWS/OpsWorks/DeregisterInstance.hs b/gen/Network/AWS/OpsWorks/DeregisterInstance.hs
--- a/gen/Network/AWS/OpsWorks/DeregisterInstance.hs
+++ b/gen/Network/AWS/OpsWorks/DeregisterInstance.hs
@@ -46,6 +46,7 @@
     , deregisterInstanceResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
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
@@ -44,6 +44,7 @@
     , deregisterRdsDbInstanceResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
diff --git a/gen/Network/AWS/OpsWorks/DeregisterVolume.hs b/gen/Network/AWS/OpsWorks/DeregisterVolume.hs
--- a/gen/Network/AWS/OpsWorks/DeregisterVolume.hs
+++ b/gen/Network/AWS/OpsWorks/DeregisterVolume.hs
@@ -45,6 +45,7 @@
     , deregisterVolumeResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
@@ -66,7 +67,9 @@
     { _dvVolumeId = p1
     }
 
--- | The volume ID.
+-- | The AWS OpsWorks volume ID, which is the GUID that AWS OpsWorks assigned to
+-- the instance when you registered the volume with the stack, not the Amazon
+-- EC2 volume ID.
 dvVolumeId :: Lens' DeregisterVolume Text
 dvVolumeId = lens _dvVolumeId (\s a -> s { _dvVolumeId = a })
 
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
@@ -49,6 +49,7 @@
     , darApps
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
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
@@ -50,6 +50,7 @@
     , dcrCommands
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
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
@@ -50,6 +50,7 @@
     , ddrDeployments
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
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
@@ -50,6 +50,7 @@
     , deirElasticIps
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
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
@@ -49,6 +49,7 @@
     , delbrElasticLoadBalancers
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
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
@@ -50,6 +50,7 @@
     , dirInstances
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
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
@@ -49,6 +49,7 @@
     , dlrLayers
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
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
@@ -48,6 +48,7 @@
     , dlbasrLoadBasedAutoScalingConfigurations
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
diff --git a/gen/Network/AWS/OpsWorks/DescribeMyUserProfile.hs b/gen/Network/AWS/OpsWorks/DescribeMyUserProfile.hs
--- a/gen/Network/AWS/OpsWorks/DescribeMyUserProfile.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeMyUserProfile.hs
@@ -44,6 +44,7 @@
     , dmuprUserProfile
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
diff --git a/gen/Network/AWS/OpsWorks/DescribePermissions.hs b/gen/Network/AWS/OpsWorks/DescribePermissions.hs
--- a/gen/Network/AWS/OpsWorks/DescribePermissions.hs
+++ b/gen/Network/AWS/OpsWorks/DescribePermissions.hs
@@ -47,6 +47,7 @@
     , dprPermissions
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
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
@@ -50,6 +50,7 @@
     , drarRaidArrays
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
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
@@ -47,6 +47,7 @@
     , drdirRdsDbInstances
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
diff --git a/gen/Network/AWS/OpsWorks/DescribeServiceErrors.hs b/gen/Network/AWS/OpsWorks/DescribeServiceErrors.hs
--- a/gen/Network/AWS/OpsWorks/DescribeServiceErrors.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeServiceErrors.hs
@@ -48,6 +48,7 @@
     , dserServiceErrors
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
diff --git a/gen/Network/AWS/OpsWorks/DescribeStackProvisioningParameters.hs b/gen/Network/AWS/OpsWorks/DescribeStackProvisioningParameters.hs
--- a/gen/Network/AWS/OpsWorks/DescribeStackProvisioningParameters.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeStackProvisioningParameters.hs
@@ -47,6 +47,7 @@
     , dspprParameters
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
diff --git a/gen/Network/AWS/OpsWorks/DescribeStackSummary.hs b/gen/Network/AWS/OpsWorks/DescribeStackSummary.hs
--- a/gen/Network/AWS/OpsWorks/DescribeStackSummary.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeStackSummary.hs
@@ -47,6 +47,7 @@
     , dssrStackSummary
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
diff --git a/gen/Network/AWS/OpsWorks/DescribeStacks.hs b/gen/Network/AWS/OpsWorks/DescribeStacks.hs
--- a/gen/Network/AWS/OpsWorks/DescribeStacks.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeStacks.hs
@@ -46,6 +46,7 @@
     , dsrStacks
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
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
@@ -48,6 +48,7 @@
     , dtbasrTimeBasedAutoScalingConfigurations
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
diff --git a/gen/Network/AWS/OpsWorks/DescribeUserProfiles.hs b/gen/Network/AWS/OpsWorks/DescribeUserProfiles.hs
--- a/gen/Network/AWS/OpsWorks/DescribeUserProfiles.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeUserProfiles.hs
@@ -46,6 +46,7 @@
     , duprUserProfiles
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
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
@@ -51,6 +51,7 @@
     , dvrVolumes
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
diff --git a/gen/Network/AWS/OpsWorks/DetachElasticLoadBalancer.hs b/gen/Network/AWS/OpsWorks/DetachElasticLoadBalancer.hs
--- a/gen/Network/AWS/OpsWorks/DetachElasticLoadBalancer.hs
+++ b/gen/Network/AWS/OpsWorks/DetachElasticLoadBalancer.hs
@@ -45,6 +45,7 @@
     , detachElasticLoadBalancerResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
diff --git a/gen/Network/AWS/OpsWorks/DisassociateElasticIp.hs b/gen/Network/AWS/OpsWorks/DisassociateElasticIp.hs
--- a/gen/Network/AWS/OpsWorks/DisassociateElasticIp.hs
+++ b/gen/Network/AWS/OpsWorks/DisassociateElasticIp.hs
@@ -45,6 +45,7 @@
     , disassociateElasticIpResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
diff --git a/gen/Network/AWS/OpsWorks/GetHostnameSuggestion.hs b/gen/Network/AWS/OpsWorks/GetHostnameSuggestion.hs
--- a/gen/Network/AWS/OpsWorks/GetHostnameSuggestion.hs
+++ b/gen/Network/AWS/OpsWorks/GetHostnameSuggestion.hs
@@ -48,6 +48,7 @@
     , ghsrLayerId
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
diff --git a/gen/Network/AWS/OpsWorks/RebootInstance.hs b/gen/Network/AWS/OpsWorks/RebootInstance.hs
--- a/gen/Network/AWS/OpsWorks/RebootInstance.hs
+++ b/gen/Network/AWS/OpsWorks/RebootInstance.hs
@@ -44,6 +44,7 @@
     , rebootInstanceResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
diff --git a/gen/Network/AWS/OpsWorks/RegisterElasticIp.hs b/gen/Network/AWS/OpsWorks/RegisterElasticIp.hs
--- a/gen/Network/AWS/OpsWorks/RegisterElasticIp.hs
+++ b/gen/Network/AWS/OpsWorks/RegisterElasticIp.hs
@@ -50,6 +50,7 @@
     , reirElasticIp
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
diff --git a/gen/Network/AWS/OpsWorks/RegisterInstance.hs b/gen/Network/AWS/OpsWorks/RegisterInstance.hs
--- a/gen/Network/AWS/OpsWorks/RegisterInstance.hs
+++ b/gen/Network/AWS/OpsWorks/RegisterInstance.hs
@@ -57,6 +57,7 @@
     , rirInstanceId
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
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
@@ -47,6 +47,7 @@
     , registerRdsDbInstanceResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
diff --git a/gen/Network/AWS/OpsWorks/RegisterVolume.hs b/gen/Network/AWS/OpsWorks/RegisterVolume.hs
--- a/gen/Network/AWS/OpsWorks/RegisterVolume.hs
+++ b/gen/Network/AWS/OpsWorks/RegisterVolume.hs
@@ -50,6 +50,7 @@
     , rvrVolumeId
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
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
@@ -53,6 +53,7 @@
     , setLoadBasedAutoScalingResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
diff --git a/gen/Network/AWS/OpsWorks/SetPermission.hs b/gen/Network/AWS/OpsWorks/SetPermission.hs
--- a/gen/Network/AWS/OpsWorks/SetPermission.hs
+++ b/gen/Network/AWS/OpsWorks/SetPermission.hs
@@ -48,6 +48,7 @@
     , setPermissionResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
diff --git a/gen/Network/AWS/OpsWorks/SetTimeBasedAutoScaling.hs b/gen/Network/AWS/OpsWorks/SetTimeBasedAutoScaling.hs
--- a/gen/Network/AWS/OpsWorks/SetTimeBasedAutoScaling.hs
+++ b/gen/Network/AWS/OpsWorks/SetTimeBasedAutoScaling.hs
@@ -46,6 +46,7 @@
     , setTimeBasedAutoScalingResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
diff --git a/gen/Network/AWS/OpsWorks/StartInstance.hs b/gen/Network/AWS/OpsWorks/StartInstance.hs
--- a/gen/Network/AWS/OpsWorks/StartInstance.hs
+++ b/gen/Network/AWS/OpsWorks/StartInstance.hs
@@ -44,6 +44,7 @@
     , startInstanceResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
diff --git a/gen/Network/AWS/OpsWorks/StartStack.hs b/gen/Network/AWS/OpsWorks/StartStack.hs
--- a/gen/Network/AWS/OpsWorks/StartStack.hs
+++ b/gen/Network/AWS/OpsWorks/StartStack.hs
@@ -44,6 +44,7 @@
     , startStackResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
diff --git a/gen/Network/AWS/OpsWorks/StopInstance.hs b/gen/Network/AWS/OpsWorks/StopInstance.hs
--- a/gen/Network/AWS/OpsWorks/StopInstance.hs
+++ b/gen/Network/AWS/OpsWorks/StopInstance.hs
@@ -47,6 +47,7 @@
     , stopInstanceResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
diff --git a/gen/Network/AWS/OpsWorks/StopStack.hs b/gen/Network/AWS/OpsWorks/StopStack.hs
--- a/gen/Network/AWS/OpsWorks/StopStack.hs
+++ b/gen/Network/AWS/OpsWorks/StopStack.hs
@@ -44,6 +44,7 @@
     , stopStackResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
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
@@ -125,6 +125,14 @@
     , ssName
     , ssStackId
 
+    -- * BlockDeviceMapping
+    , BlockDeviceMapping
+    , blockDeviceMapping
+    , bdmDeviceName
+    , bdmEbs
+    , bdmNoDevice
+    , bdmVirtualName
+
     -- * StackAttributesKeys
     , StackAttributesKeys (..)
 
@@ -252,6 +260,15 @@
     , scmName
     , scmVersion
 
+    -- * EbsBlockDevice
+    , EbsBlockDevice
+    , ebsBlockDevice
+    , ebdDeleteOnTermination
+    , ebdIops
+    , ebdSnapshotId
+    , ebdVolumeSize
+    , ebdVolumeType
+
     -- * LayerAttributesKeys
     , LayerAttributesKeys (..)
 
@@ -265,6 +282,9 @@
     , vcSize
     , vcVolumeType
 
+    -- * VolumeType
+    , VolumeType (..)
+
     -- * ReportedOs
     , ReportedOs
     , reportedOs
@@ -390,6 +410,7 @@
     , iArchitecture
     , iAutoScalingType
     , iAvailabilityZone
+    , iBlockDeviceMappings
     , iCreatedAt
     , iEbsOptimized
     , iEc2InstanceId
@@ -408,6 +429,7 @@
     , iPublicDns
     , iPublicIp
     , iRegisteredBy
+    , iReportedAgentVersion
     , iReportedOs
     , iRootDeviceType
     , iRootDeviceVolumeId
@@ -1305,6 +1327,68 @@
         , "InstancesCount" .= _ssInstancesCount
         ]
 
+data BlockDeviceMapping = BlockDeviceMapping
+    { _bdmDeviceName  :: Maybe Text
+    , _bdmEbs         :: Maybe EbsBlockDevice
+    , _bdmNoDevice    :: Maybe Text
+    , _bdmVirtualName :: Maybe Text
+    } deriving (Eq, Read, Show)
+
+-- | 'BlockDeviceMapping' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'bdmDeviceName' @::@ 'Maybe' 'Text'
+--
+-- * 'bdmEbs' @::@ 'Maybe' 'EbsBlockDevice'
+--
+-- * 'bdmNoDevice' @::@ 'Maybe' 'Text'
+--
+-- * 'bdmVirtualName' @::@ 'Maybe' 'Text'
+--
+blockDeviceMapping :: BlockDeviceMapping
+blockDeviceMapping = BlockDeviceMapping
+    { _bdmDeviceName  = Nothing
+    , _bdmNoDevice    = Nothing
+    , _bdmVirtualName = Nothing
+    , _bdmEbs         = Nothing
+    }
+
+-- | The device name that is exposed to the instance, such as '/dev/sdh'. For the
+-- root device, you can use the explicit device name or you can set this
+-- parameter to 'ROOT_DEVICE' and AWS OpsWorks will provide the correct device
+-- name.
+bdmDeviceName :: Lens' BlockDeviceMapping (Maybe Text)
+bdmDeviceName = lens _bdmDeviceName (\s a -> s { _bdmDeviceName = a })
+
+-- | An 'EBSBlockDevice' that defines how to configure an Amazon EBS volume when the
+-- instance is launched.
+bdmEbs :: Lens' BlockDeviceMapping (Maybe EbsBlockDevice)
+bdmEbs = lens _bdmEbs (\s a -> s { _bdmEbs = a })
+
+-- | Suppresses the specified device included in the AMI's block device mapping.
+bdmNoDevice :: Lens' BlockDeviceMapping (Maybe Text)
+bdmNoDevice = lens _bdmNoDevice (\s a -> s { _bdmNoDevice = a })
+
+-- | The virtual device name. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_BlockDeviceMapping.html BlockDeviceMapping>.
+bdmVirtualName :: Lens' BlockDeviceMapping (Maybe Text)
+bdmVirtualName = lens _bdmVirtualName (\s a -> s { _bdmVirtualName = a })
+
+instance FromJSON BlockDeviceMapping where
+    parseJSON = withObject "BlockDeviceMapping" $ \o -> BlockDeviceMapping
+        <$> o .:? "DeviceName"
+        <*> o .:? "Ebs"
+        <*> o .:? "NoDevice"
+        <*> o .:? "VirtualName"
+
+instance ToJSON BlockDeviceMapping where
+    toJSON BlockDeviceMapping{..} = object
+        [ "DeviceName"  .= _bdmDeviceName
+        , "NoDevice"    .= _bdmNoDevice
+        , "VirtualName" .= _bdmVirtualName
+        , "Ebs"         .= _bdmEbs
+        ]
+
 data StackAttributesKeys
     = Color -- ^ Color
       deriving (Eq, Ord, Read, Show, Generic, Enum)
@@ -1859,9 +1943,15 @@
 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.
+-- be associated with the app. After you deploy the app, these variables are
+-- defined on the associated app server instances. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-creating.html#workingapps-creating-environment Environment Variables>.
+--
+-- There is no specific limit on the number of environment variables. However,
+-- the size of the associated data structure - which includes the variables'
+-- names, values, and protected flag values - cannot exceed 10 KB (10240 Bytes).
+-- This limit should accommodate most if not all use cases, but if you do exceed
+-- it, you will cause an exception (API) with an "Environment: is too large
+-- (maximum is 10KB)" message.
 appEnvironment :: Lens' App [EnvironmentVariable]
 appEnvironment = lens _appEnvironment (\s a -> s { _appEnvironment = a }) . _List
 
@@ -2375,6 +2465,77 @@
         , "Version" .= _scmVersion
         ]
 
+data EbsBlockDevice = EbsBlockDevice
+    { _ebdDeleteOnTermination :: Maybe Bool
+    , _ebdIops                :: Maybe Int
+    , _ebdSnapshotId          :: Maybe Text
+    , _ebdVolumeSize          :: Maybe Int
+    , _ebdVolumeType          :: Maybe VolumeType
+    } deriving (Eq, Read, Show)
+
+-- | 'EbsBlockDevice' constructor.
+--
+-- The fields accessible through corresponding lenses are:
+--
+-- * 'ebdDeleteOnTermination' @::@ 'Maybe' 'Bool'
+--
+-- * 'ebdIops' @::@ 'Maybe' 'Int'
+--
+-- * 'ebdSnapshotId' @::@ 'Maybe' 'Text'
+--
+-- * 'ebdVolumeSize' @::@ 'Maybe' 'Int'
+--
+-- * 'ebdVolumeType' @::@ 'Maybe' 'VolumeType'
+--
+ebsBlockDevice :: EbsBlockDevice
+ebsBlockDevice = EbsBlockDevice
+    { _ebdSnapshotId          = Nothing
+    , _ebdIops                = Nothing
+    , _ebdVolumeSize          = Nothing
+    , _ebdVolumeType          = Nothing
+    , _ebdDeleteOnTermination = Nothing
+    }
+
+-- | Whether the volume is deleted on instance termination.
+ebdDeleteOnTermination :: Lens' EbsBlockDevice (Maybe Bool)
+ebdDeleteOnTermination =
+    lens _ebdDeleteOnTermination (\s a -> s { _ebdDeleteOnTermination = a })
+
+-- | The number of I/O operations per second (IOPS) that the volume supports. For
+-- more information, see <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_EbsBlockDevice.html EbsBlockDevice>.
+ebdIops :: Lens' EbsBlockDevice (Maybe Int)
+ebdIops = lens _ebdIops (\s a -> s { _ebdIops = a })
+
+-- | The snapshot ID.
+ebdSnapshotId :: Lens' EbsBlockDevice (Maybe Text)
+ebdSnapshotId = lens _ebdSnapshotId (\s a -> s { _ebdSnapshotId = a })
+
+-- | The volume size, in GiB. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_EbsBlockDevice.html EbsBlockDevice>.
+ebdVolumeSize :: Lens' EbsBlockDevice (Maybe Int)
+ebdVolumeSize = lens _ebdVolumeSize (\s a -> s { _ebdVolumeSize = a })
+
+-- | The volume type. 'gp2' for General Purpose (SSD) volumes, 'io1' for Provisioned
+-- IOPS (SSD) volumes, and 'standard' for Magnetic volumes.
+ebdVolumeType :: Lens' EbsBlockDevice (Maybe VolumeType)
+ebdVolumeType = lens _ebdVolumeType (\s a -> s { _ebdVolumeType = a })
+
+instance FromJSON EbsBlockDevice where
+    parseJSON = withObject "EbsBlockDevice" $ \o -> EbsBlockDevice
+        <$> o .:? "DeleteOnTermination"
+        <*> o .:? "Iops"
+        <*> o .:? "SnapshotId"
+        <*> o .:? "VolumeSize"
+        <*> o .:? "VolumeType"
+
+instance ToJSON EbsBlockDevice where
+    toJSON EbsBlockDevice{..} = object
+        [ "SnapshotId"          .= _ebdSnapshotId
+        , "Iops"                .= _ebdIops
+        , "VolumeSize"          .= _ebdVolumeSize
+        , "VolumeType"          .= _ebdVolumeType
+        , "DeleteOnTermination" .= _ebdDeleteOnTermination
+        ]
+
 data LayerAttributesKeys
     = BundlerVersion              -- ^ BundlerVersion
     | EnableHaproxyStats          -- ^ EnableHaproxyStats
@@ -2554,6 +2715,38 @@
         , "Iops"          .= _vcIops
         ]
 
+data VolumeType
+    = Gp2      -- ^ gp2
+    | Io1      -- ^ io1
+    | Standard -- ^ standard
+      deriving (Eq, Ord, Read, Show, Generic, Enum)
+
+instance Hashable VolumeType
+
+instance FromText VolumeType where
+    parser = takeLowerText >>= \case
+        "gp2"      -> pure Gp2
+        "io1"      -> pure Io1
+        "standard" -> pure Standard
+        e          -> fail $
+            "Failure parsing VolumeType from " ++ show e
+
+instance ToText VolumeType where
+    toText = \case
+        Gp2      -> "gp2"
+        Io1      -> "io1"
+        Standard -> "standard"
+
+instance ToByteString VolumeType
+instance ToHeader     VolumeType
+instance ToQuery      VolumeType
+
+instance FromJSON VolumeType where
+    parseJSON = parseJSONText "VolumeType"
+
+instance ToJSON VolumeType where
+    toJSON = toJSONText
+
 data ReportedOs = ReportedOs
     { _roFamily  :: Maybe Text
     , _roName    :: Maybe Text
@@ -3327,8 +3520,8 @@
 sDefaultRootDeviceType =
     lens _sDefaultRootDeviceType (\s a -> s { _sDefaultRootDeviceType = a })
 
--- | A default SSH key for the stack's instances. You can override this value when
--- you create or update an instance.
+-- | A default Amazon EC2 key pair for the stack's instances. You can override
+-- this value when you create or update an instance.
 sDefaultSshKeyName :: Lens' Stack (Maybe Text)
 sDefaultSshKeyName =
     lens _sDefaultSshKeyName (\s a -> s { _sDefaultSshKeyName = a })
@@ -3636,6 +3829,7 @@
     , _iArchitecture             :: Maybe Architecture
     , _iAutoScalingType          :: Maybe AutoScalingType
     , _iAvailabilityZone         :: Maybe Text
+    , _iBlockDeviceMappings      :: List "BlockDeviceMappings" BlockDeviceMapping
     , _iCreatedAt                :: Maybe Text
     , _iEbsOptimized             :: Maybe Bool
     , _iEc2InstanceId            :: Maybe Text
@@ -3654,6 +3848,7 @@
     , _iPublicDns                :: Maybe Text
     , _iPublicIp                 :: Maybe Text
     , _iRegisteredBy             :: Maybe Text
+    , _iReportedAgentVersion     :: Maybe Text
     , _iReportedOs               :: Maybe ReportedOs
     , _iRootDeviceType           :: Maybe RootDeviceType
     , _iRootDeviceVolumeId       :: Maybe Text
@@ -3679,6 +3874,8 @@
 --
 -- * 'iAvailabilityZone' @::@ 'Maybe' 'Text'
 --
+-- * 'iBlockDeviceMappings' @::@ ['BlockDeviceMapping']
+--
 -- * 'iCreatedAt' @::@ 'Maybe' 'Text'
 --
 -- * 'iEbsOptimized' @::@ 'Maybe' 'Bool'
@@ -3715,6 +3912,8 @@
 --
 -- * 'iRegisteredBy' @::@ 'Maybe' 'Text'
 --
+-- * 'iReportedAgentVersion' @::@ 'Maybe' 'Text'
+--
 -- * 'iReportedOs' @::@ 'Maybe' 'ReportedOs'
 --
 -- * 'iRootDeviceType' @::@ 'Maybe' 'RootDeviceType'
@@ -3767,8 +3966,10 @@
     , _iArchitecture             = Nothing
     , _iRootDeviceType           = Nothing
     , _iRootDeviceVolumeId       = Nothing
+    , _iBlockDeviceMappings      = mempty
     , _iInstallUpdatesOnBoot     = Nothing
     , _iEbsOptimized             = Nothing
+    , _iReportedAgentVersion     = Nothing
     , _iReportedOs               = Nothing
     , _iInfrastructureClass      = Nothing
     , _iRegisteredBy             = Nothing
@@ -3793,6 +3994,13 @@
 iAvailabilityZone =
     lens _iAvailabilityZone (\s a -> s { _iAvailabilityZone = a })
 
+-- | An array of 'BlockDeviceMapping' objects that specify the instance's block
+-- device mappings.
+iBlockDeviceMappings :: Lens' Instance [BlockDeviceMapping]
+iBlockDeviceMappings =
+    lens _iBlockDeviceMappings (\s a -> s { _iBlockDeviceMappings = a })
+        . _List
+
 -- | The time that the instance was created.
 iCreatedAt :: Lens' Instance (Maybe Text)
 iCreatedAt = lens _iCreatedAt (\s a -> s { _iCreatedAt = a })
@@ -3880,11 +4088,16 @@
 iRegisteredBy :: Lens' Instance (Maybe Text)
 iRegisteredBy = lens _iRegisteredBy (\s a -> s { _iRegisteredBy = a })
 
+-- | The instance's reported AWS OpsWorks agent version.
+iReportedAgentVersion :: Lens' Instance (Maybe Text)
+iReportedAgentVersion =
+    lens _iReportedAgentVersion (\s a -> s { _iReportedAgentVersion = 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>.
+-- | The instance's root device type. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device Storage for theRoot Device>.
 iRootDeviceType :: Lens' Instance (Maybe RootDeviceType)
 iRootDeviceType = lens _iRootDeviceType (\s a -> s { _iRootDeviceType = a })
 
@@ -3911,7 +4124,7 @@
     lens _iSshHostRsaKeyFingerprint
         (\s a -> s { _iSshHostRsaKeyFingerprint = a })
 
--- | The instance SSH key name.
+-- | The instance's Amazon EC2 key pair name.
 iSshKeyName :: Lens' Instance (Maybe Text)
 iSshKeyName = lens _iSshKeyName (\s a -> s { _iSshKeyName = a })
 
@@ -3940,6 +4153,7 @@
         <*> o .:? "Architecture"
         <*> o .:? "AutoScalingType"
         <*> o .:? "AvailabilityZone"
+        <*> o .:? "BlockDeviceMappings" .!= mempty
         <*> o .:? "CreatedAt"
         <*> o .:? "EbsOptimized"
         <*> o .:? "Ec2InstanceId"
@@ -3958,6 +4172,7 @@
         <*> o .:? "PublicDns"
         <*> o .:? "PublicIp"
         <*> o .:? "RegisteredBy"
+        <*> o .:? "ReportedAgentVersion"
         <*> o .:? "ReportedOs"
         <*> o .:? "RootDeviceType"
         <*> o .:? "RootDeviceVolumeId"
@@ -4000,8 +4215,10 @@
         , "Architecture"             .= _iArchitecture
         , "RootDeviceType"           .= _iRootDeviceType
         , "RootDeviceVolumeId"       .= _iRootDeviceVolumeId
+        , "BlockDeviceMappings"      .= _iBlockDeviceMappings
         , "InstallUpdatesOnBoot"     .= _iInstallUpdatesOnBoot
         , "EbsOptimized"             .= _iEbsOptimized
+        , "ReportedAgentVersion"     .= _iReportedAgentVersion
         , "ReportedOs"               .= _iReportedOs
         , "InfrastructureClass"      .= _iInfrastructureClass
         , "RegisteredBy"             .= _iRegisteredBy
diff --git a/gen/Network/AWS/OpsWorks/UnassignInstance.hs b/gen/Network/AWS/OpsWorks/UnassignInstance.hs
--- a/gen/Network/AWS/OpsWorks/UnassignInstance.hs
+++ b/gen/Network/AWS/OpsWorks/UnassignInstance.hs
@@ -47,6 +47,7 @@
     , unassignInstanceResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
diff --git a/gen/Network/AWS/OpsWorks/UnassignVolume.hs b/gen/Network/AWS/OpsWorks/UnassignVolume.hs
--- a/gen/Network/AWS/OpsWorks/UnassignVolume.hs
+++ b/gen/Network/AWS/OpsWorks/UnassignVolume.hs
@@ -45,6 +45,7 @@
     , unassignVolumeResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
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
@@ -54,6 +54,7 @@
     , updateAppResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
@@ -145,12 +146,19 @@
 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.
+-- be associated with the app. After you deploy the app, these variables are
+-- defined on the associated app server instances.For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-creating.html#workingapps-creating-environment Environment Variables>.
 --
+-- There is no specific limit on the number of environment variables. However,
+-- the size of the associated data structure - which includes the variables'
+-- names, values, and protected flag values - cannot exceed 10 KB (10240 Bytes).
+-- This limit should accommodate most if not all use cases. Exceeding it will
+-- cause an exception with the message, "Environment: is too large (maximum is
+-- 10KB)."
+--
 -- 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.
+-- 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
 
diff --git a/gen/Network/AWS/OpsWorks/UpdateElasticIp.hs b/gen/Network/AWS/OpsWorks/UpdateElasticIp.hs
--- a/gen/Network/AWS/OpsWorks/UpdateElasticIp.hs
+++ b/gen/Network/AWS/OpsWorks/UpdateElasticIp.hs
@@ -45,6 +45,7 @@
     , updateElasticIpResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
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
@@ -54,6 +54,7 @@
     , updateInstanceResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
@@ -179,7 +180,7 @@
 uiOs :: Lens' UpdateInstance (Maybe Text)
 uiOs = lens _uiOs (\s a -> s { _uiOs = a })
 
--- | The instance SSH key name.
+-- | The instance's Amazon EC2 key name.
 uiSshKeyName :: Lens' UpdateInstance (Maybe Text)
 uiSshKeyName = lens _uiSshKeyName (\s a -> s { _uiSshKeyName = 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
@@ -58,6 +58,7 @@
     , updateLayerResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
@@ -205,10 +206,14 @@
 ulPackages :: Lens' UpdateLayer [Text]
 ulPackages = lens _ulPackages (\s a -> s { _ulPackages = a }) . _List
 
--- | The layer short name, which is used internally by AWS OpsWorksand by Chef.
--- The short name is also used as the name for the directory where your app
--- files are installed. It can have a maximum of 200 characters and must be in
--- the following format: /\A[a-z0-9\-\_\.]+\Z/.
+-- | For custom layers only, use this parameter to specify the layer's short name,
+-- which is used internally by AWS OpsWorksand by Chef. The short name is also
+-- used as the name for the directory where your app files are installed. It can
+-- have a maximum of 200 characters and must be in the following format:
+-- /\A[a-z0-9\-\_\.]+\Z/.
+--
+-- The built-in layers' short names are defined by AWS OpsWorks. For more
+-- information, see the <http://docs.aws.amazon.com/opsworks/latest/userguide/layers.html Layer Reference>
 ulShortname :: Lens' UpdateLayer (Maybe Text)
 ulShortname = lens _ulShortname (\s a -> s { _ulShortname = a })
 
diff --git a/gen/Network/AWS/OpsWorks/UpdateMyUserProfile.hs b/gen/Network/AWS/OpsWorks/UpdateMyUserProfile.hs
--- a/gen/Network/AWS/OpsWorks/UpdateMyUserProfile.hs
+++ b/gen/Network/AWS/OpsWorks/UpdateMyUserProfile.hs
@@ -44,6 +44,7 @@
     , updateMyUserProfileResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
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
@@ -46,6 +46,7 @@
     , updateRdsDbInstanceResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
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
@@ -60,6 +60,7 @@
     , updateStackResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
@@ -207,8 +208,11 @@
 usDefaultRootDeviceType =
     lens _usDefaultRootDeviceType (\s a -> s { _usDefaultRootDeviceType = a })
 
--- | A default SSH key for the stack instances. You can override this value when
--- you create or update an instance.
+-- | A default Amazon EC2 key pair name. The default value is none. If you specify
+-- a key pair name, AWS OpsWorks installs the public key on the instance and you
+-- can use the private key with an SSH client to log in to the instance. For
+-- more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-ssh.html  Using SSH to Communicate with an Instance> and <http://docs.aws.amazon.com/opsworks/latest/userguide/security-ssh-access.html Managing SSH Access>. You can override this setting by specifying a different
+-- key pair, or no key pair, when you <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-add.html  create an instance>.
 usDefaultSshKeyName :: Lens' UpdateStack (Maybe Text)
 usDefaultSshKeyName =
     lens _usDefaultSshKeyName (\s a -> s { _usDefaultSshKeyName = a })
@@ -227,7 +231,7 @@
 -- theme is used to generate host names for the stack's instances. By default, 'HostnameTheme' is set to 'Layer_Dependent', which creates host names by appending integers to
 -- the layer's short name. The other themes are:
 --
--- 'Baked_Goods' 'Clouds' 'European_Cities' 'Fruits' 'Greek_Deities' 'Legendary_Creatures_from_Japan' 'Planets_and_Moons' 'Roman_Deities' 'Scottish_Islands' 'US_Cities' 'Wild_Cats'  To
+-- 'Baked_Goods' 'Clouds' 'Europe_Cities' 'Fruits' 'Greek_Deities' 'Legendary_creatures_from_Japan' 'Planets_and_Moons' 'Roman_Deities' 'Scottish_Islands' 'US_Cities' 'Wild_Cats'  To
 -- obtain a generated host name, call 'GetHostNameSuggestion', which returns a
 -- host name based on the current theme.
 usHostnameTheme :: Lens' UpdateStack (Maybe Text)
diff --git a/gen/Network/AWS/OpsWorks/UpdateUserProfile.hs b/gen/Network/AWS/OpsWorks/UpdateUserProfile.hs
--- a/gen/Network/AWS/OpsWorks/UpdateUserProfile.hs
+++ b/gen/Network/AWS/OpsWorks/UpdateUserProfile.hs
@@ -47,6 +47,7 @@
     , updateUserProfileResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
diff --git a/gen/Network/AWS/OpsWorks/UpdateVolume.hs b/gen/Network/AWS/OpsWorks/UpdateVolume.hs
--- a/gen/Network/AWS/OpsWorks/UpdateVolume.hs
+++ b/gen/Network/AWS/OpsWorks/UpdateVolume.hs
@@ -46,6 +46,7 @@
     , updateVolumeResponse
     ) where
 
+import Network.AWS.Data (Object)
 import Network.AWS.Prelude
 import Network.AWS.Request.JSON
 import Network.AWS.OpsWorks.Types
