diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.4.5`
+`1.5.0`
 
 
 ## Description
diff --git a/amazonka-lambda.cabal b/amazonka-lambda.cabal
--- a/amazonka-lambda.cabal
+++ b/amazonka-lambda.cabal
@@ -1,13 +1,13 @@
 name:                  amazonka-lambda
-version:               1.4.5
+version:               1.5.0
 synopsis:              Amazon Lambda SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
-license:               OtherLicense
+license:               MPL-2.0
 license-file:          LICENSE
 author:                Brendan Hay
-maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
-copyright:             Copyright (c) 2013-2016 Brendan Hay
+maintainer:            Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+copyright:             Copyright (c) 2013-2017 Brendan Hay
 category:              Network, AWS, Cloud, Distributed Computing
 build-type:            Simple
 cabal-version:         >= 1.10
@@ -29,14 +29,19 @@
     to get started.
 
 source-repository head
-    type:     git
-    location: git://github.com/brendanhay/amazonka.git
+    type:              git
+    location:          git://github.com/brendanhay/amazonka.git
+    subdir:            amazonka-lambda
 
 library
     default-language:  Haskell2010
     hs-source-dirs:    src gen
 
-    ghc-options:       -Wall
+    ghc-options:
+        -Wall
+        -fwarn-incomplete-uni-patterns
+        -fwarn-incomplete-record-updates
+        -funbox-strict-fields
 
     exposed-modules:
           Network.AWS.Lambda
@@ -57,10 +62,13 @@
         , Network.AWS.Lambda.ListAliases
         , Network.AWS.Lambda.ListEventSourceMappings
         , Network.AWS.Lambda.ListFunctions
+        , Network.AWS.Lambda.ListTags
         , Network.AWS.Lambda.ListVersionsByFunction
         , Network.AWS.Lambda.PublishVersion
         , Network.AWS.Lambda.RemovePermission
+        , Network.AWS.Lambda.TagResource
         , Network.AWS.Lambda.Types
+        , Network.AWS.Lambda.UntagResource
         , Network.AWS.Lambda.UpdateAlias
         , Network.AWS.Lambda.UpdateEventSourceMapping
         , Network.AWS.Lambda.UpdateFunctionCode
@@ -72,7 +80,7 @@
         , Network.AWS.Lambda.Types.Sum
 
     build-depends:
-          amazonka-core == 1.4.5.*
+          amazonka-core == 1.5.0.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-lambda-test
@@ -92,9 +100,9 @@
         , Test.AWS.Lambda.Internal
 
     build-depends:
-          amazonka-core == 1.4.5.*
-        , amazonka-test == 1.4.5.*
-        , amazonka-lambda == 1.4.5.*
+          amazonka-core == 1.5.0.*
+        , amazonka-test == 1.5.0.*
+        , amazonka-lambda
         , base
         , bytestring
         , tasty
diff --git a/fixture/ListTags.yaml b/fixture/ListTags.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListTags.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lambda/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lambda.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListTagsResponse.proto b/fixture/ListTagsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListTagsResponse.proto
diff --git a/fixture/TagResource.yaml b/fixture/TagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/TagResource.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lambda/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lambda.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/TagResourceResponse.proto b/fixture/TagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/TagResourceResponse.proto
diff --git a/fixture/UntagResource.yaml b/fixture/UntagResource.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResource.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/lambda/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  lambda.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UntagResourceResponse.proto b/fixture/UntagResourceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UntagResourceResponse.proto
diff --git a/gen/Network/AWS/Lambda.hs b/gen/Network/AWS/Lambda.hs
--- a/gen/Network/AWS/Lambda.hs
+++ b/gen/Network/AWS/Lambda.hs
@@ -5,9 +5,9 @@
 
 -- |
 -- Module      : Network.AWS.Lambda
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -15,7 +15,7 @@
 --
 -- __Overview__
 --
--- This is the /AWS Lambda API Reference/ . The AWS Lambda Developer Guide provides additional information. For the service overview, go to <http://docs.aws.amazon.com/lambda/latest/dg/welcome.html What is AWS Lambda> , and for information about how the service works, go to <http://docs.aws.amazon.com/lambda/latest/dg/lambda-introduction.html AWS Lambda: How it Works> in the /AWS Lambda Developer Guide/ .
+-- This is the /AWS Lambda API Reference/ . The AWS Lambda Developer Guide provides additional information. For the service overview, see <http://docs.aws.amazon.com/lambda/latest/dg/welcome.html What is AWS Lambda> , and for information about how the service works, see <http://docs.aws.amazon.com/lambda/latest/dg/lambda-introduction.html AWS Lambda: How it Works> in the /AWS Lambda Developer Guide/ .
 --
 module Network.AWS.Lambda
     (
@@ -31,6 +31,9 @@
     -- ** EC2ThrottledException
     , _EC2ThrottledException
 
+    -- ** InvalidRuntimeException
+    , _InvalidRuntimeException
+
     -- ** PolicyLengthExceededException
     , _PolicyLengthExceededException
 
@@ -151,12 +154,21 @@
     -- ** AddPermission
     , module Network.AWS.Lambda.AddPermission
 
+    -- ** TagResource
+    , module Network.AWS.Lambda.TagResource
+
     -- ** PublishVersion
     , module Network.AWS.Lambda.PublishVersion
 
+    -- ** ListTags
+    , module Network.AWS.Lambda.ListTags
+
     -- ** DeleteFunction
     , module Network.AWS.Lambda.DeleteFunction
 
+    -- ** UntagResource
+    , module Network.AWS.Lambda.UntagResource
+
     -- ** UpdateFunctionConfiguration
     , module Network.AWS.Lambda.UpdateFunctionConfiguration
 
@@ -174,6 +186,9 @@
     -- ** EventSourcePosition
     , EventSourcePosition (..)
 
+    -- ** FunctionVersion
+    , FunctionVersion (..)
+
     -- ** InvocationType
     , InvocationType (..)
 
@@ -183,6 +198,9 @@
     -- ** Runtime
     , Runtime (..)
 
+    -- ** TracingMode
+    , TracingMode (..)
+
     -- ** AccountLimit
     , AccountLimit
     , accountLimit
@@ -271,8 +289,20 @@
     , fcTimeout
     , fcLastModified
     , fcCodeSha256
+    , fcTracingConfig
     , fcDescription
+    , fcMasterARN
 
+    -- ** TracingConfig
+    , TracingConfig
+    , tracingConfig
+    , tMode
+
+    -- ** TracingConfigResponse
+    , TracingConfigResponse
+    , tracingConfigResponse
+    , tcMode
+
     -- ** VPCConfig
     , VPCConfig
     , vpcConfig
@@ -287,32 +317,35 @@
     , vcVPCId
     ) where
 
-import           Network.AWS.Lambda.AddPermission
-import           Network.AWS.Lambda.CreateAlias
-import           Network.AWS.Lambda.CreateEventSourceMapping
-import           Network.AWS.Lambda.CreateFunction
-import           Network.AWS.Lambda.DeleteAlias
-import           Network.AWS.Lambda.DeleteEventSourceMapping
-import           Network.AWS.Lambda.DeleteFunction
-import           Network.AWS.Lambda.GetAccountSettings
-import           Network.AWS.Lambda.GetAlias
-import           Network.AWS.Lambda.GetEventSourceMapping
-import           Network.AWS.Lambda.GetFunction
-import           Network.AWS.Lambda.GetFunctionConfiguration
-import           Network.AWS.Lambda.GetPolicy
-import           Network.AWS.Lambda.Invoke
-import           Network.AWS.Lambda.ListAliases
-import           Network.AWS.Lambda.ListEventSourceMappings
-import           Network.AWS.Lambda.ListFunctions
-import           Network.AWS.Lambda.ListVersionsByFunction
-import           Network.AWS.Lambda.PublishVersion
-import           Network.AWS.Lambda.RemovePermission
-import           Network.AWS.Lambda.Types
-import           Network.AWS.Lambda.UpdateAlias
-import           Network.AWS.Lambda.UpdateEventSourceMapping
-import           Network.AWS.Lambda.UpdateFunctionCode
-import           Network.AWS.Lambda.UpdateFunctionConfiguration
-import           Network.AWS.Lambda.Waiters
+import Network.AWS.Lambda.AddPermission
+import Network.AWS.Lambda.CreateAlias
+import Network.AWS.Lambda.CreateEventSourceMapping
+import Network.AWS.Lambda.CreateFunction
+import Network.AWS.Lambda.DeleteAlias
+import Network.AWS.Lambda.DeleteEventSourceMapping
+import Network.AWS.Lambda.DeleteFunction
+import Network.AWS.Lambda.GetAccountSettings
+import Network.AWS.Lambda.GetAlias
+import Network.AWS.Lambda.GetEventSourceMapping
+import Network.AWS.Lambda.GetFunction
+import Network.AWS.Lambda.GetFunctionConfiguration
+import Network.AWS.Lambda.GetPolicy
+import Network.AWS.Lambda.Invoke
+import Network.AWS.Lambda.ListAliases
+import Network.AWS.Lambda.ListEventSourceMappings
+import Network.AWS.Lambda.ListFunctions
+import Network.AWS.Lambda.ListTags
+import Network.AWS.Lambda.ListVersionsByFunction
+import Network.AWS.Lambda.PublishVersion
+import Network.AWS.Lambda.RemovePermission
+import Network.AWS.Lambda.TagResource
+import Network.AWS.Lambda.Types
+import Network.AWS.Lambda.UntagResource
+import Network.AWS.Lambda.UpdateAlias
+import Network.AWS.Lambda.UpdateEventSourceMapping
+import Network.AWS.Lambda.UpdateFunctionCode
+import Network.AWS.Lambda.UpdateFunctionConfiguration
+import Network.AWS.Lambda.Waiters
 
 {- $errors
 Error matchers are designed for use with the functions provided by
diff --git a/gen/Network/AWS/Lambda/AddPermission.hs b/gen/Network/AWS/Lambda/AddPermission.hs
--- a/gen/Network/AWS/Lambda/AddPermission.hs
+++ b/gen/Network/AWS/Lambda/AddPermission.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.Lambda.AddPermission
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -50,12 +50,12 @@
     , aprsResponseStatus
     ) where
 
-import           Network.AWS.Lambda.Types
-import           Network.AWS.Lambda.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lambda.Types
+import Network.AWS.Lambda.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- |
 --
@@ -63,29 +63,30 @@
 --
 -- /See:/ 'addPermission' smart constructor.
 data AddPermission = AddPermission'
-    { _apSourceAccount    :: !(Maybe Text)
-    , _apEventSourceToken :: !(Maybe Text)
-    , _apSourceARN        :: !(Maybe Text)
-    , _apQualifier        :: !(Maybe Text)
-    , _apFunctionName     :: !Text
-    , _apStatementId      :: !Text
-    , _apAction           :: !Text
-    , _apPrincipal        :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _apSourceAccount    :: !(Maybe Text)
+  , _apEventSourceToken :: !(Maybe Text)
+  , _apSourceARN        :: !(Maybe Text)
+  , _apQualifier        :: !(Maybe Text)
+  , _apFunctionName     :: !Text
+  , _apStatementId      :: !Text
+  , _apAction           :: !Text
+  , _apPrincipal        :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AddPermission' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'apSourceAccount' - This parameter is used for S3, SES, CloudWatch Logs and CloudWatch Rules only. The AWS account ID (without a hyphen) of the source owner. For example, if the @SourceArn@ identifies a bucket, then this is the bucket owner's account ID. You can use this additional condition to ensure the bucket you specify is owned by a specific account (it is possible the bucket owner deleted the bucket and some other AWS account created the bucket). You can also use this condition to specify all sources (that is, you don't specify the @SourceArn@ ) owned by a specific account.
+-- * 'apSourceAccount' - This parameter is used for S3 and SES. The AWS account ID (without a hyphen) of the source owner. For example, if the @SourceArn@ identifies a bucket, then this is the bucket owner's account ID. You can use this additional condition to ensure the bucket you specify is owned by a specific account (it is possible the bucket owner deleted the bucket and some other AWS account created the bucket). You can also use this condition to specify all sources (that is, you don't specify the @SourceArn@ ) owned by a specific account.
 --
 -- * 'apEventSourceToken' - A unique token that must be supplied by the principal invoking the function. This is currently only used for Alexa Smart Home functions.
 --
--- * 'apSourceARN' - This is optional; however, when granting Amazon S3 permission to invoke your function, you should specify this field with the Amazon Resource Name (ARN) as its value. This ensures that only events generated from the specified source can invoke the function. /Important:/ If you add a permission for the Amazon S3 principal without providing the source ARN, any AWS account that creates a mapping to your function ARN can send events to invoke your Lambda function from Amazon S3.
+-- * 'apSourceARN' - This is optional; however, when granting permission to invoke your function, you should specify this field with the Amazon Resource Name (ARN) as its value. This ensures that only events generated from the specified source can invoke the function. /Important:/ If you add a permission without providing the source ARN, any AWS account that creates a mapping to your function ARN can send events to invoke your Lambda function.
 --
 -- * 'apQualifier' - You can use this optional query parameter to describe a qualified ARN using a function version or an alias name. The permission will then apply to the specific qualified ARN. For example, if you specify function version 2 as the qualifier, then permission applies only when request is made using qualified function ARN: @arn:aws:lambda:aws-region:acct-id:function:function-name:2@  If you specify an alias name, for example @PROD@ , then the permission is valid only for requests made using the alias ARN: @arn:aws:lambda:aws-region:acct-id:function:function-name:PROD@  If the qualifier is not specified, the permission is valid only when requests is made using unqualified function ARN. @arn:aws:lambda:aws-region:acct-id:function:function-name@
 --
--- * 'apFunctionName' - Name of the Lambda function whose resource policy you are updating by adding a new permission. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length.
+-- * 'apFunctionName' - Name of the Lambda function whose resource policy you are updating by adding a new permission. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 --
 -- * 'apStatementId' - A unique statement identifier.
 --
@@ -99,18 +100,19 @@
     -> Text -- ^ 'apPrincipal'
     -> AddPermission
 addPermission pFunctionName_ pStatementId_ pAction_ pPrincipal_ =
-    AddPermission'
-    { _apSourceAccount = Nothing
-    , _apEventSourceToken = Nothing
-    , _apSourceARN = Nothing
-    , _apQualifier = Nothing
-    , _apFunctionName = pFunctionName_
-    , _apStatementId = pStatementId_
-    , _apAction = pAction_
-    , _apPrincipal = pPrincipal_
-    }
+  AddPermission'
+  { _apSourceAccount = Nothing
+  , _apEventSourceToken = Nothing
+  , _apSourceARN = Nothing
+  , _apQualifier = Nothing
+  , _apFunctionName = pFunctionName_
+  , _apStatementId = pStatementId_
+  , _apAction = pAction_
+  , _apPrincipal = pPrincipal_
+  }
 
--- | This parameter is used for S3, SES, CloudWatch Logs and CloudWatch Rules only. The AWS account ID (without a hyphen) of the source owner. For example, if the @SourceArn@ identifies a bucket, then this is the bucket owner's account ID. You can use this additional condition to ensure the bucket you specify is owned by a specific account (it is possible the bucket owner deleted the bucket and some other AWS account created the bucket). You can also use this condition to specify all sources (that is, you don't specify the @SourceArn@ ) owned by a specific account.
+
+-- | This parameter is used for S3 and SES. The AWS account ID (without a hyphen) of the source owner. For example, if the @SourceArn@ identifies a bucket, then this is the bucket owner's account ID. You can use this additional condition to ensure the bucket you specify is owned by a specific account (it is possible the bucket owner deleted the bucket and some other AWS account created the bucket). You can also use this condition to specify all sources (that is, you don't specify the @SourceArn@ ) owned by a specific account.
 apSourceAccount :: Lens' AddPermission (Maybe Text)
 apSourceAccount = lens _apSourceAccount (\ s a -> s{_apSourceAccount = a});
 
@@ -118,7 +120,7 @@
 apEventSourceToken :: Lens' AddPermission (Maybe Text)
 apEventSourceToken = lens _apEventSourceToken (\ s a -> s{_apEventSourceToken = a});
 
--- | This is optional; however, when granting Amazon S3 permission to invoke your function, you should specify this field with the Amazon Resource Name (ARN) as its value. This ensures that only events generated from the specified source can invoke the function. /Important:/ If you add a permission for the Amazon S3 principal without providing the source ARN, any AWS account that creates a mapping to your function ARN can send events to invoke your Lambda function from Amazon S3.
+-- | This is optional; however, when granting permission to invoke your function, you should specify this field with the Amazon Resource Name (ARN) as its value. This ensures that only events generated from the specified source can invoke the function. /Important:/ If you add a permission without providing the source ARN, any AWS account that creates a mapping to your function ARN can send events to invoke your Lambda function.
 apSourceARN :: Lens' AddPermission (Maybe Text)
 apSourceARN = lens _apSourceARN (\ s a -> s{_apSourceARN = a});
 
@@ -126,7 +128,7 @@
 apQualifier :: Lens' AddPermission (Maybe Text)
 apQualifier = lens _apQualifier (\ s a -> s{_apQualifier = a});
 
--- | Name of the Lambda function whose resource policy you are updating by adding a new permission. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length.
+-- | Name of the Lambda function whose resource policy you are updating by adding a new permission. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 apFunctionName :: Lens' AddPermission Text
 apFunctionName = lens _apFunctionName (\ s a -> s{_apFunctionName = a});
 
@@ -151,9 +153,9 @@
                  AddPermissionResponse' <$>
                    (x .?> "Statement") <*> (pure (fromEnum s)))
 
-instance Hashable AddPermission
+instance Hashable AddPermission where
 
-instance NFData AddPermission
+instance NFData AddPermission where
 
 instance ToHeaders AddPermission where
         toHeaders = const mempty
@@ -185,10 +187,11 @@
 --
 -- /See:/ 'addPermissionResponse' smart constructor.
 data AddPermissionResponse = AddPermissionResponse'
-    { _aprsStatement      :: !(Maybe Text)
-    , _aprsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _aprsStatement      :: !(Maybe Text)
+  , _aprsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AddPermissionResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -200,11 +203,10 @@
     :: Int -- ^ 'aprsResponseStatus'
     -> AddPermissionResponse
 addPermissionResponse pResponseStatus_ =
-    AddPermissionResponse'
-    { _aprsStatement = Nothing
-    , _aprsResponseStatus = pResponseStatus_
-    }
+  AddPermissionResponse'
+  {_aprsStatement = Nothing, _aprsResponseStatus = pResponseStatus_}
 
+
 -- | The permission statement you specified in the request. The response returns the same as a string using a backslash ("\") as an escape character in the JSON.
 aprsStatement :: Lens' AddPermissionResponse (Maybe Text)
 aprsStatement = lens _aprsStatement (\ s a -> s{_aprsStatement = a});
@@ -213,4 +215,4 @@
 aprsResponseStatus :: Lens' AddPermissionResponse Int
 aprsResponseStatus = lens _aprsResponseStatus (\ s a -> s{_aprsResponseStatus = a});
 
-instance NFData AddPermissionResponse
+instance NFData AddPermissionResponse where
diff --git a/gen/Network/AWS/Lambda/CreateAlias.hs b/gen/Network/AWS/Lambda/CreateAlias.hs
--- a/gen/Network/AWS/Lambda/CreateAlias.hs
+++ b/gen/Network/AWS/Lambda/CreateAlias.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.Lambda.CreateAlias
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -44,28 +44,29 @@
     , acDescription
     ) where
 
-import           Network.AWS.Lambda.Types
-import           Network.AWS.Lambda.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lambda.Types
+import Network.AWS.Lambda.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'createAlias' smart constructor.
 data CreateAlias = CreateAlias'
-    { _caDescription     :: !(Maybe Text)
-    , _caFunctionName    :: !Text
-    , _caName            :: !Text
-    , _caFunctionVersion :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _caDescription     :: !(Maybe Text)
+  , _caFunctionName    :: !Text
+  , _caName            :: !Text
+  , _caFunctionVersion :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateAlias' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'caDescription' - Description of the alias.
 --
--- * 'caFunctionName' - Name of the Lambda function for which you want to create an alias.
+-- * 'caFunctionName' - Name of the Lambda function for which you want to create an alias. Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 --
 -- * 'caName' - Name for the alias you are creating.
 --
@@ -76,18 +77,19 @@
     -> Text -- ^ 'caFunctionVersion'
     -> CreateAlias
 createAlias pFunctionName_ pName_ pFunctionVersion_ =
-    CreateAlias'
-    { _caDescription = Nothing
-    , _caFunctionName = pFunctionName_
-    , _caName = pName_
-    , _caFunctionVersion = pFunctionVersion_
-    }
+  CreateAlias'
+  { _caDescription = Nothing
+  , _caFunctionName = pFunctionName_
+  , _caName = pName_
+  , _caFunctionVersion = pFunctionVersion_
+  }
 
+
 -- | Description of the alias.
 caDescription :: Lens' CreateAlias (Maybe Text)
 caDescription = lens _caDescription (\ s a -> s{_caDescription = a});
 
--- | Name of the Lambda function for which you want to create an alias.
+-- | Name of the Lambda function for which you want to create an alias. Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 caFunctionName :: Lens' CreateAlias Text
 caFunctionName = lens _caFunctionName (\ s a -> s{_caFunctionName = a});
 
@@ -104,9 +106,9 @@
         request = postJSON lambda
         response = receiveJSON (\ s h x -> eitherParseJSON x)
 
-instance Hashable CreateAlias
+instance Hashable CreateAlias where
 
-instance NFData CreateAlias
+instance NFData CreateAlias where
 
 instance ToHeaders CreateAlias where
         toHeaders = const mempty
diff --git a/gen/Network/AWS/Lambda/CreateEventSourceMapping.hs b/gen/Network/AWS/Lambda/CreateEventSourceMapping.hs
--- a/gen/Network/AWS/Lambda/CreateEventSourceMapping.hs
+++ b/gen/Network/AWS/Lambda/CreateEventSourceMapping.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.Lambda.CreateEventSourceMapping
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -23,7 +23,7 @@
 --
 -- This association between a stream source and a Lambda function is called the event source mapping.
 --
--- /Important:/ This event source mapping is relevant only in the AWS Lambda pull model, where AWS Lambda invokes the function. For more information, go to <http://docs.aws.amazon.com/lambda/latest/dg/lambda-introduction.html AWS Lambda: How it Works> in the /AWS Lambda Developer Guide/ .
+-- /Important:/ This event source mapping is relevant only in the AWS Lambda pull model, where AWS Lambda invokes the function. For more information, see <http://docs.aws.amazon.com/lambda/latest/dg/lambda-introduction.html AWS Lambda: How it Works> in the /AWS Lambda Developer Guide/ .
 --
 -- You provide mapping information (for example, which stream to read from and which Lambda function to invoke) in the request body.
 --
@@ -60,12 +60,12 @@
     , esmcLastModified
     ) where
 
-import           Network.AWS.Lambda.Types
-import           Network.AWS.Lambda.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lambda.Types
+import Network.AWS.Lambda.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- |
 --
@@ -73,14 +73,15 @@
 --
 -- /See:/ 'createEventSourceMapping' smart constructor.
 data CreateEventSourceMapping = CreateEventSourceMapping'
-    { _cesmStartingPositionTimestamp :: !(Maybe POSIX)
-    , _cesmEnabled                   :: !(Maybe Bool)
-    , _cesmBatchSize                 :: !(Maybe Nat)
-    , _cesmEventSourceARN            :: !Text
-    , _cesmFunctionName              :: !Text
-    , _cesmStartingPosition          :: !EventSourcePosition
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _cesmStartingPositionTimestamp :: !(Maybe POSIX)
+  , _cesmEnabled                   :: !(Maybe Bool)
+  , _cesmBatchSize                 :: !(Maybe Nat)
+  , _cesmEventSourceARN            :: !Text
+  , _cesmFunctionName              :: !Text
+  , _cesmStartingPosition          :: !EventSourcePosition
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateEventSourceMapping' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -93,24 +94,25 @@
 --
 -- * 'cesmEventSourceARN' - The Amazon Resource Name (ARN) of the Amazon Kinesis or the Amazon DynamoDB stream that is the event source. Any record added to this stream could cause AWS Lambda to invoke your Lambda function, it depends on the @BatchSize@ . AWS Lambda POSTs the Amazon Kinesis event, containing records, to your Lambda function as JSON.
 --
--- * 'cesmFunctionName' - The Lambda function to invoke when AWS Lambda detects an event on the stream. You can specify the function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ).  If you are using versioning, you can also provide a qualified function ARN (ARN that is qualified with function version or alias name as suffix). For more information about versioning, see <http://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html AWS Lambda Function Versioning and Aliases>  AWS Lambda also allows you to specify only the function name with the account ID qualifier (for example, @account-id:Thumbnail@ ).  Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length.
+-- * 'cesmFunctionName' - The Lambda function to invoke when AWS Lambda detects an event on the stream. You can specify the function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ).  If you are using versioning, you can also provide a qualified function ARN (ARN that is qualified with function version or alias name as suffix). For more information about versioning, see <http://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html AWS Lambda Function Versioning and Aliases>  AWS Lambda also allows you to specify only the function name with the account ID qualifier (for example, @account-id:Thumbnail@ ).  Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 --
--- * 'cesmStartingPosition' - The position in the stream where AWS Lambda should start reading. Valid only for Kinesis streams. For more information, go to <http://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetShardIterator.html#Kinesis-GetShardIterator-request-ShardIteratorType ShardIteratorType> in the /Amazon Kinesis API Reference/ .
+-- * 'cesmStartingPosition' - The position in the stream where AWS Lambda should start reading. Valid only for Kinesis streams. For more information, see <http://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetShardIterator.html#Kinesis-GetShardIterator-request-ShardIteratorType ShardIteratorType> in the /Amazon Kinesis API Reference/ .
 createEventSourceMapping
     :: Text -- ^ 'cesmEventSourceARN'
     -> Text -- ^ 'cesmFunctionName'
     -> EventSourcePosition -- ^ 'cesmStartingPosition'
     -> CreateEventSourceMapping
 createEventSourceMapping pEventSourceARN_ pFunctionName_ pStartingPosition_ =
-    CreateEventSourceMapping'
-    { _cesmStartingPositionTimestamp = Nothing
-    , _cesmEnabled = Nothing
-    , _cesmBatchSize = Nothing
-    , _cesmEventSourceARN = pEventSourceARN_
-    , _cesmFunctionName = pFunctionName_
-    , _cesmStartingPosition = pStartingPosition_
-    }
+  CreateEventSourceMapping'
+  { _cesmStartingPositionTimestamp = Nothing
+  , _cesmEnabled = Nothing
+  , _cesmBatchSize = Nothing
+  , _cesmEventSourceARN = pEventSourceARN_
+  , _cesmFunctionName = pFunctionName_
+  , _cesmStartingPosition = pStartingPosition_
+  }
 
+
 -- | The timestamp of the data record from which to start reading. Used with <http://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetShardIterator.html#Kinesis-GetShardIterator-request-ShardIteratorType shard iterator type> AT_TIMESTAMP. If a record with this exact timestamp does not exist, the iterator returned is for the next (later) record. If the timestamp is older than the current trim horizon, the iterator returned is for the oldest untrimmed data record (TRIM_HORIZON). Valid only for Kinesis streams.
 cesmStartingPositionTimestamp :: Lens' CreateEventSourceMapping (Maybe UTCTime)
 cesmStartingPositionTimestamp = lens _cesmStartingPositionTimestamp (\ s a -> s{_cesmStartingPositionTimestamp = a}) . mapping _Time;
@@ -127,11 +129,11 @@
 cesmEventSourceARN :: Lens' CreateEventSourceMapping Text
 cesmEventSourceARN = lens _cesmEventSourceARN (\ s a -> s{_cesmEventSourceARN = a});
 
--- | The Lambda function to invoke when AWS Lambda detects an event on the stream. You can specify the function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ).  If you are using versioning, you can also provide a qualified function ARN (ARN that is qualified with function version or alias name as suffix). For more information about versioning, see <http://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html AWS Lambda Function Versioning and Aliases>  AWS Lambda also allows you to specify only the function name with the account ID qualifier (for example, @account-id:Thumbnail@ ).  Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length.
+-- | The Lambda function to invoke when AWS Lambda detects an event on the stream. You can specify the function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ).  If you are using versioning, you can also provide a qualified function ARN (ARN that is qualified with function version or alias name as suffix). For more information about versioning, see <http://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html AWS Lambda Function Versioning and Aliases>  AWS Lambda also allows you to specify only the function name with the account ID qualifier (for example, @account-id:Thumbnail@ ).  Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 cesmFunctionName :: Lens' CreateEventSourceMapping Text
 cesmFunctionName = lens _cesmFunctionName (\ s a -> s{_cesmFunctionName = a});
 
--- | The position in the stream where AWS Lambda should start reading. Valid only for Kinesis streams. For more information, go to <http://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetShardIterator.html#Kinesis-GetShardIterator-request-ShardIteratorType ShardIteratorType> in the /Amazon Kinesis API Reference/ .
+-- | The position in the stream where AWS Lambda should start reading. Valid only for Kinesis streams. For more information, see <http://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetShardIterator.html#Kinesis-GetShardIterator-request-ShardIteratorType ShardIteratorType> in the /Amazon Kinesis API Reference/ .
 cesmStartingPosition :: Lens' CreateEventSourceMapping EventSourcePosition
 cesmStartingPosition = lens _cesmStartingPosition (\ s a -> s{_cesmStartingPosition = a});
 
@@ -141,9 +143,9 @@
         request = postJSON lambda
         response = receiveJSON (\ s h x -> eitherParseJSON x)
 
-instance Hashable CreateEventSourceMapping
+instance Hashable CreateEventSourceMapping where
 
-instance NFData CreateEventSourceMapping
+instance NFData CreateEventSourceMapping where
 
 instance ToHeaders CreateEventSourceMapping where
         toHeaders = const mempty
diff --git a/gen/Network/AWS/Lambda/CreateFunction.hs b/gen/Network/AWS/Lambda/CreateFunction.hs
--- a/gen/Network/AWS/Lambda/CreateFunction.hs
+++ b/gen/Network/AWS/Lambda/CreateFunction.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.Lambda.CreateFunction
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -37,7 +37,9 @@
     , cfDeadLetterConfig
     , cfVPCConfig
     , cfTimeout
+    , cfTracingConfig
     , cfDescription
+    , cfTags
     , cfPublish
     , cfFunctionName
     , cfRuntime
@@ -64,15 +66,17 @@
     , fcTimeout
     , fcLastModified
     , fcCodeSha256
+    , fcTracingConfig
     , fcDescription
+    , fcMasterARN
     ) where
 
-import           Network.AWS.Lambda.Types
-import           Network.AWS.Lambda.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lambda.Types
+import Network.AWS.Lambda.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- |
 --
@@ -80,21 +84,24 @@
 --
 -- /See:/ 'createFunction' smart constructor.
 data CreateFunction = CreateFunction'
-    { _cfMemorySize       :: !(Maybe Nat)
-    , _cfKMSKeyARN        :: !(Maybe Text)
-    , _cfEnvironment      :: !(Maybe Environment)
-    , _cfDeadLetterConfig :: !(Maybe DeadLetterConfig)
-    , _cfVPCConfig        :: !(Maybe VPCConfig)
-    , _cfTimeout          :: !(Maybe Nat)
-    , _cfDescription      :: !(Maybe Text)
-    , _cfPublish          :: !(Maybe Bool)
-    , _cfFunctionName     :: !Text
-    , _cfRuntime          :: !Runtime
-    , _cfRole             :: !Text
-    , _cfHandler          :: !Text
-    , _cfCode             :: !FunctionCode
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _cfMemorySize       :: !(Maybe Nat)
+  , _cfKMSKeyARN        :: !(Maybe Text)
+  , _cfEnvironment      :: !(Maybe Environment)
+  , _cfDeadLetterConfig :: !(Maybe DeadLetterConfig)
+  , _cfVPCConfig        :: !(Maybe VPCConfig)
+  , _cfTimeout          :: !(Maybe Nat)
+  , _cfTracingConfig    :: !(Maybe TracingConfig)
+  , _cfDescription      :: !(Maybe Text)
+  , _cfTags             :: !(Maybe (Map Text Text))
+  , _cfPublish          :: !(Maybe Bool)
+  , _cfFunctionName     :: !Text
+  , _cfRuntime          :: !Runtime
+  , _cfRole             :: !Text
+  , _cfHandler          :: !Text
+  , _cfCode             :: !FunctionCode
+  } deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateFunction' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -111,13 +118,17 @@
 --
 -- * 'cfTimeout' - The function execution time at which Lambda should terminate the function. Because the execution time has cost implications, we recommend you set this value based on your expected execution time. The default is 3 seconds.
 --
+-- * 'cfTracingConfig' - The parent object that contains your function's tracing settings.
+--
 -- * 'cfDescription' - A short, user-defined function description. Lambda does not use this value. Assign a meaningful description as you see fit.
 --
+-- * 'cfTags' - The list of tags (key-value pairs) assigned to the new function.
+--
 -- * 'cfPublish' - This boolean parameter can be used to request AWS Lambda to create the Lambda function and publish a version as an atomic operation.
 --
--- * 'cfFunctionName' - The name you want to assign to the function you are uploading. The function names appear in the console and are returned in the 'ListFunctions' API. Function names are used to specify functions to other AWS Lambda APIs, such as 'Invoke' .
+-- * 'cfFunctionName' - The name you want to assign to the function you are uploading. The function names appear in the console and are returned in the 'ListFunctions' API. Function names are used to specify functions to other AWS Lambda API operations, such as 'Invoke' . Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 --
--- * 'cfRuntime' - The runtime environment for the Lambda function you are uploading. To use the Node.js runtime v4.3, set the value to "nodejs4.3". To use earlier runtime (v0.10.42), set the value to "nodejs".
+-- * 'cfRuntime' - The runtime environment for the Lambda function you are uploading. To use the Python runtime v3.6, set the value to "python3.6". To use the Python runtime v2.7, set the value to "python2.7". To use the Node.js runtime v6.10, set the value to "nodejs6.10". To use the Node.js runtime v4.3, set the value to "nodejs4.3".
 --
 -- * 'cfRole' - The Amazon Resource Name (ARN) of the IAM role that Lambda assumes when it executes your function to access any other Amazon Web Services (AWS) resources. For more information, see <http://docs.aws.amazon.com/lambda/latest/dg/lambda-introduction.html AWS Lambda: How it Works> .
 --
@@ -132,22 +143,25 @@
     -> FunctionCode -- ^ 'cfCode'
     -> CreateFunction
 createFunction pFunctionName_ pRuntime_ pRole_ pHandler_ pCode_ =
-    CreateFunction'
-    { _cfMemorySize = Nothing
-    , _cfKMSKeyARN = Nothing
-    , _cfEnvironment = Nothing
-    , _cfDeadLetterConfig = Nothing
-    , _cfVPCConfig = Nothing
-    , _cfTimeout = Nothing
-    , _cfDescription = Nothing
-    , _cfPublish = Nothing
-    , _cfFunctionName = pFunctionName_
-    , _cfRuntime = pRuntime_
-    , _cfRole = pRole_
-    , _cfHandler = pHandler_
-    , _cfCode = pCode_
-    }
+  CreateFunction'
+  { _cfMemorySize = Nothing
+  , _cfKMSKeyARN = Nothing
+  , _cfEnvironment = Nothing
+  , _cfDeadLetterConfig = Nothing
+  , _cfVPCConfig = Nothing
+  , _cfTimeout = Nothing
+  , _cfTracingConfig = Nothing
+  , _cfDescription = Nothing
+  , _cfTags = Nothing
+  , _cfPublish = Nothing
+  , _cfFunctionName = pFunctionName_
+  , _cfRuntime = pRuntime_
+  , _cfRole = pRole_
+  , _cfHandler = pHandler_
+  , _cfCode = pCode_
+  }
 
+
 -- | The amount of memory, in MB, your Lambda function is given. Lambda uses this memory size to infer the amount of CPU and memory allocated to your function. Your function use-case determines your CPU and memory requirements. For example, a database operation might need less memory compared to an image processing function. The default value is 128 MB. The value must be a multiple of 64 MB.
 cfMemorySize :: Lens' CreateFunction (Maybe Natural)
 cfMemorySize = lens _cfMemorySize (\ s a -> s{_cfMemorySize = a}) . mapping _Nat;
@@ -172,19 +186,27 @@
 cfTimeout :: Lens' CreateFunction (Maybe Natural)
 cfTimeout = lens _cfTimeout (\ s a -> s{_cfTimeout = a}) . mapping _Nat;
 
+-- | The parent object that contains your function's tracing settings.
+cfTracingConfig :: Lens' CreateFunction (Maybe TracingConfig)
+cfTracingConfig = lens _cfTracingConfig (\ s a -> s{_cfTracingConfig = a});
+
 -- | A short, user-defined function description. Lambda does not use this value. Assign a meaningful description as you see fit.
 cfDescription :: Lens' CreateFunction (Maybe Text)
 cfDescription = lens _cfDescription (\ s a -> s{_cfDescription = a});
 
+-- | The list of tags (key-value pairs) assigned to the new function.
+cfTags :: Lens' CreateFunction (HashMap Text Text)
+cfTags = lens _cfTags (\ s a -> s{_cfTags = a}) . _Default . _Map;
+
 -- | This boolean parameter can be used to request AWS Lambda to create the Lambda function and publish a version as an atomic operation.
 cfPublish :: Lens' CreateFunction (Maybe Bool)
 cfPublish = lens _cfPublish (\ s a -> s{_cfPublish = a});
 
--- | The name you want to assign to the function you are uploading. The function names appear in the console and are returned in the 'ListFunctions' API. Function names are used to specify functions to other AWS Lambda APIs, such as 'Invoke' .
+-- | The name you want to assign to the function you are uploading. The function names appear in the console and are returned in the 'ListFunctions' API. Function names are used to specify functions to other AWS Lambda API operations, such as 'Invoke' . Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 cfFunctionName :: Lens' CreateFunction Text
 cfFunctionName = lens _cfFunctionName (\ s a -> s{_cfFunctionName = a});
 
--- | The runtime environment for the Lambda function you are uploading. To use the Node.js runtime v4.3, set the value to "nodejs4.3". To use earlier runtime (v0.10.42), set the value to "nodejs".
+-- | The runtime environment for the Lambda function you are uploading. To use the Python runtime v3.6, set the value to "python3.6". To use the Python runtime v2.7, set the value to "python2.7". To use the Node.js runtime v6.10, set the value to "nodejs6.10". To use the Node.js runtime v4.3, set the value to "nodejs4.3".
 cfRuntime :: Lens' CreateFunction Runtime
 cfRuntime = lens _cfRuntime (\ s a -> s{_cfRuntime = a});
 
@@ -205,9 +227,9 @@
         request = postJSON lambda
         response = receiveJSON (\ s h x -> eitherParseJSON x)
 
-instance Hashable CreateFunction
+instance Hashable CreateFunction where
 
-instance NFData CreateFunction
+instance NFData CreateFunction where
 
 instance ToHeaders CreateFunction where
         toHeaders = const mempty
@@ -222,7 +244,9 @@
                   ("DeadLetterConfig" .=) <$> _cfDeadLetterConfig,
                   ("VpcConfig" .=) <$> _cfVPCConfig,
                   ("Timeout" .=) <$> _cfTimeout,
+                  ("TracingConfig" .=) <$> _cfTracingConfig,
                   ("Description" .=) <$> _cfDescription,
+                  ("Tags" .=) <$> _cfTags,
                   ("Publish" .=) <$> _cfPublish,
                   Just ("FunctionName" .= _cfFunctionName),
                   Just ("Runtime" .= _cfRuntime),
diff --git a/gen/Network/AWS/Lambda/DeleteAlias.hs b/gen/Network/AWS/Lambda/DeleteAlias.hs
--- a/gen/Network/AWS/Lambda/DeleteAlias.hs
+++ b/gen/Network/AWS/Lambda/DeleteAlias.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.Lambda.DeleteAlias
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -37,24 +37,25 @@
     , DeleteAliasResponse
     ) where
 
-import           Network.AWS.Lambda.Types
-import           Network.AWS.Lambda.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lambda.Types
+import Network.AWS.Lambda.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'deleteAlias' smart constructor.
 data DeleteAlias = DeleteAlias'
-    { _daFunctionName :: !Text
-    , _daName         :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _daFunctionName :: !Text
+  , _daName         :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteAlias' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'daFunctionName' - The Lambda function name for which the alias is created. Deleting an alias does not delete the function version to which it is pointing.
+-- * 'daFunctionName' - The Lambda function name for which the alias is created. Deleting an alias does not delete the function version to which it is pointing. Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 --
 -- * 'daName' - Name of the alias to delete.
 deleteAlias
@@ -62,12 +63,10 @@
     -> Text -- ^ 'daName'
     -> DeleteAlias
 deleteAlias pFunctionName_ pName_ =
-    DeleteAlias'
-    { _daFunctionName = pFunctionName_
-    , _daName = pName_
-    }
+  DeleteAlias' {_daFunctionName = pFunctionName_, _daName = pName_}
 
--- | The Lambda function name for which the alias is created. Deleting an alias does not delete the function version to which it is pointing.
+
+-- | The Lambda function name for which the alias is created. Deleting an alias does not delete the function version to which it is pointing. Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 daFunctionName :: Lens' DeleteAlias Text
 daFunctionName = lens _daFunctionName (\ s a -> s{_daFunctionName = a});
 
@@ -80,9 +79,9 @@
         request = delete lambda
         response = receiveNull DeleteAliasResponse'
 
-instance Hashable DeleteAlias
+instance Hashable DeleteAlias where
 
-instance NFData DeleteAlias
+instance NFData DeleteAlias where
 
 instance ToHeaders DeleteAlias where
         toHeaders = const mempty
@@ -98,13 +97,15 @@
 
 -- | /See:/ 'deleteAliasResponse' smart constructor.
 data DeleteAliasResponse =
-    DeleteAliasResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DeleteAliasResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteAliasResponse' with the minimum fields required to make a request.
 --
 deleteAliasResponse
     :: DeleteAliasResponse
 deleteAliasResponse = DeleteAliasResponse'
 
-instance NFData DeleteAliasResponse
+
+instance NFData DeleteAliasResponse where
diff --git a/gen/Network/AWS/Lambda/DeleteEventSourceMapping.hs b/gen/Network/AWS/Lambda/DeleteEventSourceMapping.hs
--- a/gen/Network/AWS/Lambda/DeleteEventSourceMapping.hs
+++ b/gen/Network/AWS/Lambda/DeleteEventSourceMapping.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.Lambda.DeleteEventSourceMapping
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -45,12 +45,12 @@
     , esmcLastModified
     ) where
 
-import           Network.AWS.Lambda.Types
-import           Network.AWS.Lambda.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lambda.Types
+import Network.AWS.Lambda.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- |
 --
@@ -58,9 +58,10 @@
 --
 -- /See:/ 'deleteEventSourceMapping' smart constructor.
 newtype DeleteEventSourceMapping = DeleteEventSourceMapping'
-    { _desmUUId :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _desmUUId :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteEventSourceMapping' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -69,11 +70,9 @@
 deleteEventSourceMapping
     :: Text -- ^ 'desmUUId'
     -> DeleteEventSourceMapping
-deleteEventSourceMapping pUUId_ =
-    DeleteEventSourceMapping'
-    { _desmUUId = pUUId_
-    }
+deleteEventSourceMapping pUUId_ = DeleteEventSourceMapping' {_desmUUId = pUUId_}
 
+
 -- | The event source mapping ID.
 desmUUId :: Lens' DeleteEventSourceMapping Text
 desmUUId = lens _desmUUId (\ s a -> s{_desmUUId = a});
@@ -84,9 +83,9 @@
         request = delete lambda
         response = receiveJSON (\ s h x -> eitherParseJSON x)
 
-instance Hashable DeleteEventSourceMapping
+instance Hashable DeleteEventSourceMapping where
 
-instance NFData DeleteEventSourceMapping
+instance NFData DeleteEventSourceMapping where
 
 instance ToHeaders DeleteEventSourceMapping where
         toHeaders = const mempty
diff --git a/gen/Network/AWS/Lambda/DeleteFunction.hs b/gen/Network/AWS/Lambda/DeleteFunction.hs
--- a/gen/Network/AWS/Lambda/DeleteFunction.hs
+++ b/gen/Network/AWS/Lambda/DeleteFunction.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.Lambda.DeleteFunction
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -41,40 +41,39 @@
     , DeleteFunctionResponse
     ) where
 
-import           Network.AWS.Lambda.Types
-import           Network.AWS.Lambda.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lambda.Types
+import Network.AWS.Lambda.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'deleteFunction' smart constructor.
 data DeleteFunction = DeleteFunction'
-    { _dfQualifier    :: !(Maybe Text)
-    , _dfFunctionName :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dfQualifier    :: !(Maybe Text)
+  , _dfFunctionName :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteFunction' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'dfQualifier' - Using this optional parameter you can specify a function version (but not the @> LATEST@ version) to direct AWS Lambda to delete a specific function version. If the function version has one or more aliases pointing to it, you will get an error because you cannot have aliases pointing to it. You can delete any function version but not the @> LATEST@ , that is, you cannot specify @> LATEST@ as the value of this parameter. The @> LATEST@ version can be deleted only when you want to delete all the function versions and aliases. You can only specify a function version, not an alias name, using this parameter. You cannot delete a function version using its alias. If you don't specify this parameter, AWS Lambda will delete the function, including all of its versions and aliases.
 --
--- * 'dfFunctionName' - The Lambda function to delete. You can specify the function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). If you are using versioning, you can also provide a qualified function ARN (ARN that is qualified with function version or alias name as suffix). AWS Lambda also allows you to specify only the function name with the account ID qualifier (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length.
+-- * 'dfFunctionName' - The Lambda function to delete. You can specify the function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). If you are using versioning, you can also provide a qualified function ARN (ARN that is qualified with function version or alias name as suffix). AWS Lambda also allows you to specify only the function name with the account ID qualifier (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 deleteFunction
     :: Text -- ^ 'dfFunctionName'
     -> DeleteFunction
 deleteFunction pFunctionName_ =
-    DeleteFunction'
-    { _dfQualifier = Nothing
-    , _dfFunctionName = pFunctionName_
-    }
+  DeleteFunction' {_dfQualifier = Nothing, _dfFunctionName = pFunctionName_}
 
+
 -- | Using this optional parameter you can specify a function version (but not the @> LATEST@ version) to direct AWS Lambda to delete a specific function version. If the function version has one or more aliases pointing to it, you will get an error because you cannot have aliases pointing to it. You can delete any function version but not the @> LATEST@ , that is, you cannot specify @> LATEST@ as the value of this parameter. The @> LATEST@ version can be deleted only when you want to delete all the function versions and aliases. You can only specify a function version, not an alias name, using this parameter. You cannot delete a function version using its alias. If you don't specify this parameter, AWS Lambda will delete the function, including all of its versions and aliases.
 dfQualifier :: Lens' DeleteFunction (Maybe Text)
 dfQualifier = lens _dfQualifier (\ s a -> s{_dfQualifier = a});
 
--- | The Lambda function to delete. You can specify the function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). If you are using versioning, you can also provide a qualified function ARN (ARN that is qualified with function version or alias name as suffix). AWS Lambda also allows you to specify only the function name with the account ID qualifier (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length.
+-- | The Lambda function to delete. You can specify the function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). If you are using versioning, you can also provide a qualified function ARN (ARN that is qualified with function version or alias name as suffix). AWS Lambda also allows you to specify only the function name with the account ID qualifier (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 dfFunctionName :: Lens' DeleteFunction Text
 dfFunctionName = lens _dfFunctionName (\ s a -> s{_dfFunctionName = a});
 
@@ -83,9 +82,9 @@
         request = delete lambda
         response = receiveNull DeleteFunctionResponse'
 
-instance Hashable DeleteFunction
+instance Hashable DeleteFunction where
 
-instance NFData DeleteFunction
+instance NFData DeleteFunction where
 
 instance ToHeaders DeleteFunction where
         toHeaders = const mempty
@@ -101,13 +100,15 @@
 
 -- | /See:/ 'deleteFunctionResponse' smart constructor.
 data DeleteFunctionResponse =
-    DeleteFunctionResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DeleteFunctionResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteFunctionResponse' with the minimum fields required to make a request.
 --
 deleteFunctionResponse
     :: DeleteFunctionResponse
 deleteFunctionResponse = DeleteFunctionResponse'
 
-instance NFData DeleteFunctionResponse
+
+instance NFData DeleteFunctionResponse where
diff --git a/gen/Network/AWS/Lambda/GetAccountSettings.hs b/gen/Network/AWS/Lambda/GetAccountSettings.hs
--- a/gen/Network/AWS/Lambda/GetAccountSettings.hs
+++ b/gen/Network/AWS/Lambda/GetAccountSettings.hs
@@ -12,16 +12,16 @@
 
 -- |
 -- Module      : Network.AWS.Lambda.GetAccountSettings
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 -- Returns a customer's account settings.
 --
 --
--- You can use this operation to retrieve Lambda limit information such as code size and concurrency limits. For more information on limits, see <http://docs.aws.amazon.com/lambda/latest/dg/limits.html AWS Lambda Limits> . You can also retrieve resource usage statistics such as code storage usage and function count.
+-- You can use this operation to retrieve Lambda limits information, such as code size and concurrency limits. For more information about limits, see <http://docs.aws.amazon.com/lambda/latest/dg/limits.html AWS Lambda Limits> . You can also retrieve resource usage statistics, such as code storage usage and function count.
 --
 module Network.AWS.Lambda.GetAccountSettings
     (
@@ -38,24 +38,26 @@
     , gasrsResponseStatus
     ) where
 
-import           Network.AWS.Lambda.Types
-import           Network.AWS.Lambda.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lambda.Types
+import Network.AWS.Lambda.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'getAccountSettings' smart constructor.
 data GetAccountSettings =
-    GetAccountSettings'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  GetAccountSettings'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetAccountSettings' with the minimum fields required to make a request.
 --
 getAccountSettings
     :: GetAccountSettings
 getAccountSettings = GetAccountSettings'
 
+
 instance AWSRequest GetAccountSettings where
         type Rs GetAccountSettings =
              GetAccountSettingsResponse
@@ -67,9 +69,9 @@
                    (x .?> "AccountLimit") <*> (x .?> "AccountUsage") <*>
                      (pure (fromEnum s)))
 
-instance Hashable GetAccountSettings
+instance Hashable GetAccountSettings where
 
-instance NFData GetAccountSettings
+instance NFData GetAccountSettings where
 
 instance ToHeaders GetAccountSettings where
         toHeaders = const mempty
@@ -82,11 +84,12 @@
 
 -- | /See:/ 'getAccountSettingsResponse' smart constructor.
 data GetAccountSettingsResponse = GetAccountSettingsResponse'
-    { _gasrsAccountLimit   :: !(Maybe AccountLimit)
-    , _gasrsAccountUsage   :: !(Maybe AccountUsage)
-    , _gasrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gasrsAccountLimit   :: !(Maybe AccountLimit)
+  , _gasrsAccountUsage   :: !(Maybe AccountUsage)
+  , _gasrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetAccountSettingsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -100,12 +103,13 @@
     :: Int -- ^ 'gasrsResponseStatus'
     -> GetAccountSettingsResponse
 getAccountSettingsResponse pResponseStatus_ =
-    GetAccountSettingsResponse'
-    { _gasrsAccountLimit = Nothing
-    , _gasrsAccountUsage = Nothing
-    , _gasrsResponseStatus = pResponseStatus_
-    }
+  GetAccountSettingsResponse'
+  { _gasrsAccountLimit = Nothing
+  , _gasrsAccountUsage = Nothing
+  , _gasrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | Undocumented member.
 gasrsAccountLimit :: Lens' GetAccountSettingsResponse (Maybe AccountLimit)
 gasrsAccountLimit = lens _gasrsAccountLimit (\ s a -> s{_gasrsAccountLimit = a});
@@ -118,4 +122,4 @@
 gasrsResponseStatus :: Lens' GetAccountSettingsResponse Int
 gasrsResponseStatus = lens _gasrsResponseStatus (\ s a -> s{_gasrsResponseStatus = a});
 
-instance NFData GetAccountSettingsResponse
+instance NFData GetAccountSettingsResponse where
diff --git a/gen/Network/AWS/Lambda/GetAlias.hs b/gen/Network/AWS/Lambda/GetAlias.hs
--- a/gen/Network/AWS/Lambda/GetAlias.hs
+++ b/gen/Network/AWS/Lambda/GetAlias.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.Lambda.GetAlias
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -42,24 +42,25 @@
     , acDescription
     ) where
 
-import           Network.AWS.Lambda.Types
-import           Network.AWS.Lambda.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lambda.Types
+import Network.AWS.Lambda.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'getAlias' smart constructor.
 data GetAlias = GetAlias'
-    { _gaFunctionName :: !Text
-    , _gaName         :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gaFunctionName :: !Text
+  , _gaName         :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetAlias' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gaFunctionName' - Function name for which the alias is created. An alias is a subresource that exists only in the context of an existing Lambda function so you must specify the function name.
+-- * 'gaFunctionName' - Function name for which the alias is created. An alias is a subresource that exists only in the context of an existing Lambda function so you must specify the function name. Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 --
 -- * 'gaName' - Name of the alias for which you want to retrieve information.
 getAlias
@@ -67,12 +68,10 @@
     -> Text -- ^ 'gaName'
     -> GetAlias
 getAlias pFunctionName_ pName_ =
-    GetAlias'
-    { _gaFunctionName = pFunctionName_
-    , _gaName = pName_
-    }
+  GetAlias' {_gaFunctionName = pFunctionName_, _gaName = pName_}
 
--- | Function name for which the alias is created. An alias is a subresource that exists only in the context of an existing Lambda function so you must specify the function name.
+
+-- | Function name for which the alias is created. An alias is a subresource that exists only in the context of an existing Lambda function so you must specify the function name. Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 gaFunctionName :: Lens' GetAlias Text
 gaFunctionName = lens _gaFunctionName (\ s a -> s{_gaFunctionName = a});
 
@@ -85,9 +84,9 @@
         request = get lambda
         response = receiveJSON (\ s h x -> eitherParseJSON x)
 
-instance Hashable GetAlias
+instance Hashable GetAlias where
 
-instance NFData GetAlias
+instance NFData GetAlias where
 
 instance ToHeaders GetAlias where
         toHeaders = const mempty
diff --git a/gen/Network/AWS/Lambda/GetEventSourceMapping.hs b/gen/Network/AWS/Lambda/GetEventSourceMapping.hs
--- a/gen/Network/AWS/Lambda/GetEventSourceMapping.hs
+++ b/gen/Network/AWS/Lambda/GetEventSourceMapping.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.Lambda.GetEventSourceMapping
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -45,12 +45,12 @@
     , esmcLastModified
     ) where
 
-import           Network.AWS.Lambda.Types
-import           Network.AWS.Lambda.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lambda.Types
+import Network.AWS.Lambda.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- |
 --
@@ -58,9 +58,10 @@
 --
 -- /See:/ 'getEventSourceMapping' smart constructor.
 newtype GetEventSourceMapping = GetEventSourceMapping'
-    { _gesmUUId :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gesmUUId :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetEventSourceMapping' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -69,11 +70,9 @@
 getEventSourceMapping
     :: Text -- ^ 'gesmUUId'
     -> GetEventSourceMapping
-getEventSourceMapping pUUId_ =
-    GetEventSourceMapping'
-    { _gesmUUId = pUUId_
-    }
+getEventSourceMapping pUUId_ = GetEventSourceMapping' {_gesmUUId = pUUId_}
 
+
 -- | The AWS Lambda assigned ID of the event source mapping.
 gesmUUId :: Lens' GetEventSourceMapping Text
 gesmUUId = lens _gesmUUId (\ s a -> s{_gesmUUId = a});
@@ -84,9 +83,9 @@
         request = get lambda
         response = receiveJSON (\ s h x -> eitherParseJSON x)
 
-instance Hashable GetEventSourceMapping
+instance Hashable GetEventSourceMapping where
 
-instance NFData GetEventSourceMapping
+instance NFData GetEventSourceMapping where
 
 instance ToHeaders GetEventSourceMapping where
         toHeaders = const mempty
diff --git a/gen/Network/AWS/Lambda/GetFunction.hs b/gen/Network/AWS/Lambda/GetFunction.hs
--- a/gen/Network/AWS/Lambda/GetFunction.hs
+++ b/gen/Network/AWS/Lambda/GetFunction.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.Lambda.GetFunction
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -40,15 +40,16 @@
     -- * Response Lenses
     , gfrsCode
     , gfrsConfiguration
+    , gfrsTags
     , gfrsResponseStatus
     ) where
 
-import           Network.AWS.Lambda.Types
-import           Network.AWS.Lambda.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lambda.Types
+import Network.AWS.Lambda.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- |
 --
@@ -56,31 +57,30 @@
 --
 -- /See:/ 'getFunction' smart constructor.
 data GetFunction = GetFunction'
-    { _gfQualifier    :: !(Maybe Text)
-    , _gfFunctionName :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gfQualifier    :: !(Maybe Text)
+  , _gfFunctionName :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetFunction' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'gfQualifier' - Using this optional parameter to specify a function version or an alias name. If you specify function version, the API uses qualified function ARN for the request and returns information about the specific Lambda function version. If you specify an alias name, the API uses the alias ARN and returns information about the function version to which the alias points. If you don't provide this parameter, the API uses unqualified function ARN and returns information about the @> LATEST@ version of the Lambda function.
 --
--- * 'gfFunctionName' - The Lambda function name. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length.
+-- * 'gfFunctionName' - The Lambda function name. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 getFunction
     :: Text -- ^ 'gfFunctionName'
     -> GetFunction
 getFunction pFunctionName_ =
-    GetFunction'
-    { _gfQualifier = Nothing
-    , _gfFunctionName = pFunctionName_
-    }
+  GetFunction' {_gfQualifier = Nothing, _gfFunctionName = pFunctionName_}
 
+
 -- | Using this optional parameter to specify a function version or an alias name. If you specify function version, the API uses qualified function ARN for the request and returns information about the specific Lambda function version. If you specify an alias name, the API uses the alias ARN and returns information about the function version to which the alias points. If you don't provide this parameter, the API uses unqualified function ARN and returns information about the @> LATEST@ version of the Lambda function.
 gfQualifier :: Lens' GetFunction (Maybe Text)
 gfQualifier = lens _gfQualifier (\ s a -> s{_gfQualifier = a});
 
--- | The Lambda function name. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length.
+-- | The Lambda function name. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 gfFunctionName :: Lens' GetFunction Text
 gfFunctionName = lens _gfFunctionName (\ s a -> s{_gfFunctionName = a});
 
@@ -92,11 +92,12 @@
               (\ s h x ->
                  GetFunctionResponse' <$>
                    (x .?> "Code") <*> (x .?> "Configuration") <*>
-                     (pure (fromEnum s)))
+                     (x .?> "Tags" .!@ mempty)
+                     <*> (pure (fromEnum s)))
 
-instance Hashable GetFunction
+instance Hashable GetFunction where
 
-instance NFData GetFunction
+instance NFData GetFunction where
 
 instance ToHeaders GetFunction where
         toHeaders = const mempty
@@ -116,11 +117,13 @@
 --
 -- /See:/ 'getFunctionResponse' smart constructor.
 data GetFunctionResponse = GetFunctionResponse'
-    { _gfrsCode           :: !(Maybe FunctionCodeLocation)
-    , _gfrsConfiguration  :: !(Maybe FunctionConfiguration)
-    , _gfrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gfrsCode           :: !(Maybe FunctionCodeLocation)
+  , _gfrsConfiguration  :: !(Maybe FunctionConfiguration)
+  , _gfrsTags           :: !(Maybe (Map Text Text))
+  , _gfrsResponseStatus :: !Int
+  } deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetFunctionResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -129,17 +132,21 @@
 --
 -- * 'gfrsConfiguration' - Undocumented member.
 --
+-- * 'gfrsTags' - Returns the list of tags associated with the function.
+--
 -- * 'gfrsResponseStatus' - -- | The response status code.
 getFunctionResponse
     :: Int -- ^ 'gfrsResponseStatus'
     -> GetFunctionResponse
 getFunctionResponse pResponseStatus_ =
-    GetFunctionResponse'
-    { _gfrsCode = Nothing
-    , _gfrsConfiguration = Nothing
-    , _gfrsResponseStatus = pResponseStatus_
-    }
+  GetFunctionResponse'
+  { _gfrsCode = Nothing
+  , _gfrsConfiguration = Nothing
+  , _gfrsTags = Nothing
+  , _gfrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | Undocumented member.
 gfrsCode :: Lens' GetFunctionResponse (Maybe FunctionCodeLocation)
 gfrsCode = lens _gfrsCode (\ s a -> s{_gfrsCode = a});
@@ -148,8 +155,12 @@
 gfrsConfiguration :: Lens' GetFunctionResponse (Maybe FunctionConfiguration)
 gfrsConfiguration = lens _gfrsConfiguration (\ s a -> s{_gfrsConfiguration = a});
 
+-- | Returns the list of tags associated with the function.
+gfrsTags :: Lens' GetFunctionResponse (HashMap Text Text)
+gfrsTags = lens _gfrsTags (\ s a -> s{_gfrsTags = a}) . _Default . _Map;
+
 -- | -- | The response status code.
 gfrsResponseStatus :: Lens' GetFunctionResponse Int
 gfrsResponseStatus = lens _gfrsResponseStatus (\ s a -> s{_gfrsResponseStatus = a});
 
-instance NFData GetFunctionResponse
+instance NFData GetFunctionResponse where
diff --git a/gen/Network/AWS/Lambda/GetFunctionConfiguration.hs b/gen/Network/AWS/Lambda/GetFunctionConfiguration.hs
--- a/gen/Network/AWS/Lambda/GetFunctionConfiguration.hs
+++ b/gen/Network/AWS/Lambda/GetFunctionConfiguration.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.Lambda.GetFunctionConfiguration
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -53,15 +53,17 @@
     , fcTimeout
     , fcLastModified
     , fcCodeSha256
+    , fcTracingConfig
     , fcDescription
+    , fcMasterARN
     ) where
 
-import           Network.AWS.Lambda.Types
-import           Network.AWS.Lambda.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lambda.Types
+import Network.AWS.Lambda.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- |
 --
@@ -69,31 +71,31 @@
 --
 -- /See:/ 'getFunctionConfiguration' smart constructor.
 data GetFunctionConfiguration = GetFunctionConfiguration'
-    { _gfcQualifier    :: !(Maybe Text)
-    , _gfcFunctionName :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gfcQualifier    :: !(Maybe Text)
+  , _gfcFunctionName :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetFunctionConfiguration' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'gfcQualifier' - Using this optional parameter you can specify a function version or an alias name. If you specify function version, the API uses qualified function ARN and returns information about the specific function version. If you specify an alias name, the API uses the alias ARN and returns information about the function version to which the alias points. If you don't specify this parameter, the API uses unqualified function ARN, and returns information about the @> LATEST@ function version.
 --
--- * 'gfcFunctionName' - The name of the Lambda function for which you want to retrieve the configuration information. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length.
+-- * 'gfcFunctionName' - The name of the Lambda function for which you want to retrieve the configuration information. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 getFunctionConfiguration
     :: Text -- ^ 'gfcFunctionName'
     -> GetFunctionConfiguration
 getFunctionConfiguration pFunctionName_ =
-    GetFunctionConfiguration'
-    { _gfcQualifier = Nothing
-    , _gfcFunctionName = pFunctionName_
-    }
+  GetFunctionConfiguration'
+  {_gfcQualifier = Nothing, _gfcFunctionName = pFunctionName_}
 
+
 -- | Using this optional parameter you can specify a function version or an alias name. If you specify function version, the API uses qualified function ARN and returns information about the specific function version. If you specify an alias name, the API uses the alias ARN and returns information about the function version to which the alias points. If you don't specify this parameter, the API uses unqualified function ARN, and returns information about the @> LATEST@ function version.
 gfcQualifier :: Lens' GetFunctionConfiguration (Maybe Text)
 gfcQualifier = lens _gfcQualifier (\ s a -> s{_gfcQualifier = a});
 
--- | The name of the Lambda function for which you want to retrieve the configuration information. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length.
+-- | The name of the Lambda function for which you want to retrieve the configuration information. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 gfcFunctionName :: Lens' GetFunctionConfiguration Text
 gfcFunctionName = lens _gfcFunctionName (\ s a -> s{_gfcFunctionName = a});
 
@@ -103,9 +105,9 @@
         request = get lambda
         response = receiveJSON (\ s h x -> eitherParseJSON x)
 
-instance Hashable GetFunctionConfiguration
+instance Hashable GetFunctionConfiguration where
 
-instance NFData GetFunctionConfiguration
+instance NFData GetFunctionConfiguration where
 
 instance ToHeaders GetFunctionConfiguration where
         toHeaders = const mempty
diff --git a/gen/Network/AWS/Lambda/GetPolicy.hs b/gen/Network/AWS/Lambda/GetPolicy.hs
--- a/gen/Network/AWS/Lambda/GetPolicy.hs
+++ b/gen/Network/AWS/Lambda/GetPolicy.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.Lambda.GetPolicy
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -23,8 +23,6 @@
 --
 -- If you are using the versioning feature, you can get the resource policy associated with the specific Lambda function version or alias by specifying the version or alias name using the @Qualifier@ parameter. For more information about versioning, see <http://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html AWS Lambda Function Versioning and Aliases> .
 --
--- For information about adding permissions, see 'AddPermission' .
---
 -- You need permission for the @lambda:GetPolicy action.@
 --
 module Network.AWS.Lambda.GetPolicy
@@ -44,12 +42,12 @@
     , gprsResponseStatus
     ) where
 
-import           Network.AWS.Lambda.Types
-import           Network.AWS.Lambda.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lambda.Types
+import Network.AWS.Lambda.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- |
 --
@@ -57,31 +55,30 @@
 --
 -- /See:/ 'getPolicy' smart constructor.
 data GetPolicy = GetPolicy'
-    { _gpQualifier    :: !(Maybe Text)
-    , _gpFunctionName :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gpQualifier    :: !(Maybe Text)
+  , _gpFunctionName :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetPolicy' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'gpQualifier' - You can specify this optional query parameter to specify a function version or an alias name in which case this API will return all permissions associated with the specific qualified ARN. If you don't provide this parameter, the API will return permissions that apply to the unqualified function ARN.
 --
--- * 'gpFunctionName' - Function name whose resource policy you want to retrieve. You can specify the function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). If you are using versioning, you can also provide a qualified function ARN (ARN that is qualified with function version or alias name as suffix). AWS Lambda also allows you to specify only the function name with the account ID qualifier (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length.
+-- * 'gpFunctionName' - Function name whose resource policy you want to retrieve. You can specify the function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). If you are using versioning, you can also provide a qualified function ARN (ARN that is qualified with function version or alias name as suffix). AWS Lambda also allows you to specify only the function name with the account ID qualifier (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 getPolicy
     :: Text -- ^ 'gpFunctionName'
     -> GetPolicy
 getPolicy pFunctionName_ =
-    GetPolicy'
-    { _gpQualifier = Nothing
-    , _gpFunctionName = pFunctionName_
-    }
+  GetPolicy' {_gpQualifier = Nothing, _gpFunctionName = pFunctionName_}
 
+
 -- | You can specify this optional query parameter to specify a function version or an alias name in which case this API will return all permissions associated with the specific qualified ARN. If you don't provide this parameter, the API will return permissions that apply to the unqualified function ARN.
 gpQualifier :: Lens' GetPolicy (Maybe Text)
 gpQualifier = lens _gpQualifier (\ s a -> s{_gpQualifier = a});
 
--- | Function name whose resource policy you want to retrieve. You can specify the function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). If you are using versioning, you can also provide a qualified function ARN (ARN that is qualified with function version or alias name as suffix). AWS Lambda also allows you to specify only the function name with the account ID qualifier (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length.
+-- | Function name whose resource policy you want to retrieve. You can specify the function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). If you are using versioning, you can also provide a qualified function ARN (ARN that is qualified with function version or alias name as suffix). AWS Lambda also allows you to specify only the function name with the account ID qualifier (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 gpFunctionName :: Lens' GetPolicy Text
 gpFunctionName = lens _gpFunctionName (\ s a -> s{_gpFunctionName = a});
 
@@ -94,9 +91,9 @@
                  GetPolicyResponse' <$>
                    (x .?> "Policy") <*> (pure (fromEnum s)))
 
-instance Hashable GetPolicy
+instance Hashable GetPolicy where
 
-instance NFData GetPolicy
+instance NFData GetPolicy where
 
 instance ToHeaders GetPolicy where
         toHeaders = const mempty
@@ -117,10 +114,11 @@
 --
 -- /See:/ 'getPolicyResponse' smart constructor.
 data GetPolicyResponse = GetPolicyResponse'
-    { _gprsPolicy         :: !(Maybe Text)
-    , _gprsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gprsPolicy         :: !(Maybe Text)
+  , _gprsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetPolicyResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -132,11 +130,10 @@
     :: Int -- ^ 'gprsResponseStatus'
     -> GetPolicyResponse
 getPolicyResponse pResponseStatus_ =
-    GetPolicyResponse'
-    { _gprsPolicy = Nothing
-    , _gprsResponseStatus = pResponseStatus_
-    }
+  GetPolicyResponse'
+  {_gprsPolicy = Nothing, _gprsResponseStatus = pResponseStatus_}
 
+
 -- | The resource policy associated with the specified function. The response returns the same as a string using a backslash ("\") as an escape character in the JSON.
 gprsPolicy :: Lens' GetPolicyResponse (Maybe Text)
 gprsPolicy = lens _gprsPolicy (\ s a -> s{_gprsPolicy = a});
@@ -145,4 +142,4 @@
 gprsResponseStatus :: Lens' GetPolicyResponse Int
 gprsResponseStatus = lens _gprsResponseStatus (\ s a -> s{_gprsResponseStatus = a});
 
-instance NFData GetPolicyResponse
+instance NFData GetPolicyResponse where
diff --git a/gen/Network/AWS/Lambda/Invoke.hs b/gen/Network/AWS/Lambda/Invoke.hs
--- a/gen/Network/AWS/Lambda/Invoke.hs
+++ b/gen/Network/AWS/Lambda/Invoke.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.Lambda.Invoke
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -48,12 +48,12 @@
     , irsStatusCode
     ) where
 
-import           Network.AWS.Lambda.Types
-import           Network.AWS.Lambda.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lambda.Types
+import Network.AWS.Lambda.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- |
 --
@@ -61,14 +61,15 @@
 --
 -- /See:/ 'invoke' smart constructor.
 data Invoke = Invoke'
-    { _iInvocationType :: !(Maybe InvocationType)
-    , _iLogType        :: !(Maybe LogType)
-    , _iQualifier      :: !(Maybe Text)
-    , _iClientContext  :: !(Maybe Text)
-    , _iFunctionName   :: !Text
-    , _iPayload        :: !(HashMap Text Value)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+  { _iInvocationType :: !(Maybe InvocationType)
+  , _iLogType        :: !(Maybe LogType)
+  , _iQualifier      :: !(Maybe Text)
+  , _iClientContext  :: !(Maybe Text)
+  , _iFunctionName   :: !Text
+  , _iPayload        :: !(HashMap Text Value)
+  } deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'Invoke' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -81,7 +82,7 @@
 --
 -- * 'iClientContext' - Using the @ClientContext@ you can pass client-specific information to the Lambda function you are invoking. You can then process the client information in your Lambda function as you choose through the context variable. For an example of a @ClientContext@ JSON, see <http://docs.aws.amazon.com/mobileanalytics/latest/ug/PutEvents.html PutEvents> in the /Amazon Mobile Analytics API Reference and User Guide/ . The ClientContext JSON must be base64-encoded.
 --
--- * 'iFunctionName' - The Lambda function name. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length.
+-- * 'iFunctionName' - The Lambda function name. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 --
 -- * 'iPayload' - JSON that you want to provide to your Lambda function as input.
 invoke
@@ -89,15 +90,16 @@
     -> HashMap Text Value -- ^ 'iPayload'
     -> Invoke
 invoke pFunctionName_ pPayload_ =
-    Invoke'
-    { _iInvocationType = Nothing
-    , _iLogType = Nothing
-    , _iQualifier = Nothing
-    , _iClientContext = Nothing
-    , _iFunctionName = pFunctionName_
-    , _iPayload = pPayload_
-    }
+  Invoke'
+  { _iInvocationType = Nothing
+  , _iLogType = Nothing
+  , _iQualifier = Nothing
+  , _iClientContext = Nothing
+  , _iFunctionName = pFunctionName_
+  , _iPayload = pPayload_
+  }
 
+
 -- | By default, the @Invoke@ API assumes @RequestResponse@ invocation type. You can optionally request asynchronous execution by specifying @Event@ as the @InvocationType@ . You can also use this parameter to request AWS Lambda to not execute the function but do some verification, such as if the caller is authorized to invoke the function and if the inputs are valid. You request this by specifying @DryRun@ as the @InvocationType@ . This is useful in a cross-account scenario when you want to verify access to a function without running it.
 iInvocationType :: Lens' Invoke (Maybe InvocationType)
 iInvocationType = lens _iInvocationType (\ s a -> s{_iInvocationType = a});
@@ -114,7 +116,7 @@
 iClientContext :: Lens' Invoke (Maybe Text)
 iClientContext = lens _iClientContext (\ s a -> s{_iClientContext = a});
 
--- | The Lambda function name. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length.
+-- | The Lambda function name. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 iFunctionName :: Lens' Invoke Text
 iFunctionName = lens _iFunctionName (\ s a -> s{_iFunctionName = a});
 
@@ -134,9 +136,9 @@
                      <*> (pure (Just x))
                      <*> (pure (fromEnum s)))
 
-instance Hashable Invoke
+instance Hashable Invoke where
 
-instance NFData Invoke
+instance NFData Invoke where
 
 instance ToBody Invoke where
         toBody = toBody . _iPayload
@@ -164,12 +166,13 @@
 --
 -- /See:/ 'invokeResponse' smart constructor.
 data InvokeResponse = InvokeResponse'
-    { _irsFunctionError :: !(Maybe Text)
-    , _irsLogResult     :: !(Maybe Text)
-    , _irsPayload       :: !(Maybe (HashMap Text Value))
-    , _irsStatusCode    :: !Int
-    } deriving (Eq,Show,Data,Typeable,Generic)
+  { _irsFunctionError :: !(Maybe Text)
+  , _irsLogResult     :: !(Maybe Text)
+  , _irsPayload       :: !(Maybe (HashMap Text Value))
+  , _irsStatusCode    :: !Int
+  } deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InvokeResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -180,18 +183,19 @@
 --
 -- * 'irsPayload' - It is the JSON representation of the object returned by the Lambda function. This is present only if the invocation type is @RequestResponse@ .  In the event of a function error this field contains a message describing the error. For the @Handled@ errors the Lambda function will report this message. For @Unhandled@ errors AWS Lambda reports the message.
 --
--- * 'irsStatusCode' - The HTTP status code will be in the 200 range for successful request. For the @RequestResonse@ invocation type this status code will be 200. For the @Event@ invocation type this status code will be 202. For the @DryRun@ invocation type the status code will be 204.
+-- * 'irsStatusCode' - The HTTP status code will be in the 200 range for successful request. For the @RequestResponse@ invocation type this status code will be 200. For the @Event@ invocation type this status code will be 202. For the @DryRun@ invocation type the status code will be 204.
 invokeResponse
     :: Int -- ^ 'irsStatusCode'
     -> InvokeResponse
 invokeResponse pStatusCode_ =
-    InvokeResponse'
-    { _irsFunctionError = Nothing
-    , _irsLogResult = Nothing
-    , _irsPayload = Nothing
-    , _irsStatusCode = pStatusCode_
-    }
+  InvokeResponse'
+  { _irsFunctionError = Nothing
+  , _irsLogResult = Nothing
+  , _irsPayload = Nothing
+  , _irsStatusCode = pStatusCode_
+  }
 
+
 -- | Indicates whether an error occurred while executing the Lambda function. If an error occurred this field will have one of two values; @Handled@ or @Unhandled@ . @Handled@ errors are errors that are reported by the function while the @Unhandled@ errors are those detected and reported by AWS Lambda. Unhandled errors include out of memory errors and function timeouts. For information about how to report an @Handled@ error, see <http://docs.aws.amazon.com/lambda/latest/dg/programming-model.html Programming Model> .
 irsFunctionError :: Lens' InvokeResponse (Maybe Text)
 irsFunctionError = lens _irsFunctionError (\ s a -> s{_irsFunctionError = a});
@@ -204,8 +208,8 @@
 irsPayload :: Lens' InvokeResponse (Maybe (HashMap Text Value))
 irsPayload = lens _irsPayload (\ s a -> s{_irsPayload = a});
 
--- | The HTTP status code will be in the 200 range for successful request. For the @RequestResonse@ invocation type this status code will be 200. For the @Event@ invocation type this status code will be 202. For the @DryRun@ invocation type the status code will be 204.
+-- | The HTTP status code will be in the 200 range for successful request. For the @RequestResponse@ invocation type this status code will be 200. For the @Event@ invocation type this status code will be 202. For the @DryRun@ invocation type the status code will be 204.
 irsStatusCode :: Lens' InvokeResponse Int
 irsStatusCode = lens _irsStatusCode (\ s a -> s{_irsStatusCode = a});
 
-instance NFData InvokeResponse
+instance NFData InvokeResponse where
diff --git a/gen/Network/AWS/Lambda/ListAliases.hs b/gen/Network/AWS/Lambda/ListAliases.hs
--- a/gen/Network/AWS/Lambda/ListAliases.hs
+++ b/gen/Network/AWS/Lambda/ListAliases.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.Lambda.ListAliases
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -43,21 +43,22 @@
     , larsResponseStatus
     ) where
 
-import           Network.AWS.Lambda.Types
-import           Network.AWS.Lambda.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lambda.Types
+import Network.AWS.Lambda.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'listAliases' smart constructor.
 data ListAliases = ListAliases'
-    { _laMarker          :: !(Maybe Text)
-    , _laMaxItems        :: !(Maybe Nat)
-    , _laFunctionVersion :: !(Maybe Text)
-    , _laFunctionName    :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _laMarker          :: !(Maybe Text)
+  , _laMaxItems        :: !(Maybe Nat)
+  , _laFunctionVersion :: !(Maybe Text)
+  , _laFunctionName    :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListAliases' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -68,18 +69,19 @@
 --
 -- * 'laFunctionVersion' - If you specify this optional parameter, the API returns only the aliases that are pointing to the specific Lambda function version, otherwise the API returns all of the aliases created for the Lambda function.
 --
--- * 'laFunctionName' - Lambda function name for which the alias is created.
+-- * 'laFunctionName' - Lambda function name for which the alias is created. Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 listAliases
     :: Text -- ^ 'laFunctionName'
     -> ListAliases
 listAliases pFunctionName_ =
-    ListAliases'
-    { _laMarker = Nothing
-    , _laMaxItems = Nothing
-    , _laFunctionVersion = Nothing
-    , _laFunctionName = pFunctionName_
-    }
+  ListAliases'
+  { _laMarker = Nothing
+  , _laMaxItems = Nothing
+  , _laFunctionVersion = Nothing
+  , _laFunctionName = pFunctionName_
+  }
 
+
 -- | Optional string. An opaque pagination token returned from a previous @ListAliases@ operation. If present, indicates where to continue the listing.
 laMarker :: Lens' ListAliases (Maybe Text)
 laMarker = lens _laMarker (\ s a -> s{_laMarker = a});
@@ -92,7 +94,7 @@
 laFunctionVersion :: Lens' ListAliases (Maybe Text)
 laFunctionVersion = lens _laFunctionVersion (\ s a -> s{_laFunctionVersion = a});
 
--- | Lambda function name for which the alias is created.
+-- | Lambda function name for which the alias is created. Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 laFunctionName :: Lens' ListAliases Text
 laFunctionName = lens _laFunctionName (\ s a -> s{_laFunctionName = a});
 
@@ -106,9 +108,9 @@
                    (x .?> "Aliases" .!@ mempty) <*> (x .?> "NextMarker")
                      <*> (pure (fromEnum s)))
 
-instance Hashable ListAliases
+instance Hashable ListAliases where
 
-instance NFData ListAliases
+instance NFData ListAliases where
 
 instance ToHeaders ListAliases where
         toHeaders = const mempty
@@ -127,11 +129,12 @@
 
 -- | /See:/ 'listAliasesResponse' smart constructor.
 data ListAliasesResponse = ListAliasesResponse'
-    { _larsAliases        :: !(Maybe [AliasConfiguration])
-    , _larsNextMarker     :: !(Maybe Text)
-    , _larsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _larsAliases        :: !(Maybe [AliasConfiguration])
+  , _larsNextMarker     :: !(Maybe Text)
+  , _larsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListAliasesResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -145,12 +148,13 @@
     :: Int -- ^ 'larsResponseStatus'
     -> ListAliasesResponse
 listAliasesResponse pResponseStatus_ =
-    ListAliasesResponse'
-    { _larsAliases = Nothing
-    , _larsNextMarker = Nothing
-    , _larsResponseStatus = pResponseStatus_
-    }
+  ListAliasesResponse'
+  { _larsAliases = Nothing
+  , _larsNextMarker = Nothing
+  , _larsResponseStatus = pResponseStatus_
+  }
 
+
 -- | A list of aliases.
 larsAliases :: Lens' ListAliasesResponse [AliasConfiguration]
 larsAliases = lens _larsAliases (\ s a -> s{_larsAliases = a}) . _Default . _Coerce;
@@ -163,4 +167,4 @@
 larsResponseStatus :: Lens' ListAliasesResponse Int
 larsResponseStatus = lens _larsResponseStatus (\ s a -> s{_larsResponseStatus = a});
 
-instance NFData ListAliasesResponse
+instance NFData ListAliasesResponse where
diff --git a/gen/Network/AWS/Lambda/ListEventSourceMappings.hs b/gen/Network/AWS/Lambda/ListEventSourceMappings.hs
--- a/gen/Network/AWS/Lambda/ListEventSourceMappings.hs
+++ b/gen/Network/AWS/Lambda/ListEventSourceMappings.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.Lambda.ListEventSourceMappings
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -49,13 +49,13 @@
     , lesmrsResponseStatus
     ) where
 
-import           Network.AWS.Lambda.Types
-import           Network.AWS.Lambda.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Pager
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lambda.Types
+import Network.AWS.Lambda.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Pager
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- |
 --
@@ -63,12 +63,13 @@
 --
 -- /See:/ 'listEventSourceMappings' smart constructor.
 data ListEventSourceMappings = ListEventSourceMappings'
-    { _lesmEventSourceARN :: !(Maybe Text)
-    , _lesmMarker         :: !(Maybe Text)
-    , _lesmMaxItems       :: !(Maybe Nat)
-    , _lesmFunctionName   :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _lesmEventSourceARN :: !(Maybe Text)
+  , _lesmMarker         :: !(Maybe Text)
+  , _lesmMaxItems       :: !(Maybe Nat)
+  , _lesmFunctionName   :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListEventSourceMappings' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -79,17 +80,18 @@
 --
 -- * 'lesmMaxItems' - Optional integer. Specifies the maximum number of event sources to return in response. This value must be greater than 0.
 --
--- * 'lesmFunctionName' - The name of the Lambda function. You can specify the function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). If you are using versioning, you can also provide a qualified function ARN (ARN that is qualified with function version or alias name as suffix). AWS Lambda also allows you to specify only the function name with the account ID qualifier (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length.
+-- * 'lesmFunctionName' - The name of the Lambda function. You can specify the function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). If you are using versioning, you can also provide a qualified function ARN (ARN that is qualified with function version or alias name as suffix). AWS Lambda also allows you to specify only the function name with the account ID qualifier (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 listEventSourceMappings
     :: ListEventSourceMappings
 listEventSourceMappings =
-    ListEventSourceMappings'
-    { _lesmEventSourceARN = Nothing
-    , _lesmMarker = Nothing
-    , _lesmMaxItems = Nothing
-    , _lesmFunctionName = Nothing
-    }
+  ListEventSourceMappings'
+  { _lesmEventSourceARN = Nothing
+  , _lesmMarker = Nothing
+  , _lesmMaxItems = Nothing
+  , _lesmFunctionName = Nothing
+  }
 
+
 -- | The Amazon Resource Name (ARN) of the Amazon Kinesis stream. (This parameter is optional.)
 lesmEventSourceARN :: Lens' ListEventSourceMappings (Maybe Text)
 lesmEventSourceARN = lens _lesmEventSourceARN (\ s a -> s{_lesmEventSourceARN = a});
@@ -102,7 +104,7 @@
 lesmMaxItems :: Lens' ListEventSourceMappings (Maybe Natural)
 lesmMaxItems = lens _lesmMaxItems (\ s a -> s{_lesmMaxItems = a}) . mapping _Nat;
 
--- | The name of the Lambda function. You can specify the function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). If you are using versioning, you can also provide a qualified function ARN (ARN that is qualified with function version or alias name as suffix). AWS Lambda also allows you to specify only the function name with the account ID qualifier (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length.
+-- | The name of the Lambda function. You can specify the function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). If you are using versioning, you can also provide a qualified function ARN (ARN that is qualified with function version or alias name as suffix). AWS Lambda also allows you to specify only the function name with the account ID qualifier (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 lesmFunctionName :: Lens' ListEventSourceMappings (Maybe Text)
 lesmFunctionName = lens _lesmFunctionName (\ s a -> s{_lesmFunctionName = a});
 
@@ -125,9 +127,9 @@
                      (x .?> "NextMarker")
                      <*> (pure (fromEnum s)))
 
-instance Hashable ListEventSourceMappings
+instance Hashable ListEventSourceMappings where
 
-instance NFData ListEventSourceMappings
+instance NFData ListEventSourceMappings where
 
 instance ToHeaders ListEventSourceMappings where
         toHeaders = const mempty
@@ -148,11 +150,12 @@
 --
 -- /See:/ 'listEventSourceMappingsResponse' smart constructor.
 data ListEventSourceMappingsResponse = ListEventSourceMappingsResponse'
-    { _lesmrsEventSourceMappings :: !(Maybe [EventSourceMappingConfiguration])
-    , _lesmrsNextMarker          :: !(Maybe Text)
-    , _lesmrsResponseStatus      :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _lesmrsEventSourceMappings :: !(Maybe [EventSourceMappingConfiguration])
+  , _lesmrsNextMarker          :: !(Maybe Text)
+  , _lesmrsResponseStatus      :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListEventSourceMappingsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -166,12 +169,13 @@
     :: Int -- ^ 'lesmrsResponseStatus'
     -> ListEventSourceMappingsResponse
 listEventSourceMappingsResponse pResponseStatus_ =
-    ListEventSourceMappingsResponse'
-    { _lesmrsEventSourceMappings = Nothing
-    , _lesmrsNextMarker = Nothing
-    , _lesmrsResponseStatus = pResponseStatus_
-    }
+  ListEventSourceMappingsResponse'
+  { _lesmrsEventSourceMappings = Nothing
+  , _lesmrsNextMarker = Nothing
+  , _lesmrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | An array of @EventSourceMappingConfiguration@ objects.
 lesmrsEventSourceMappings :: Lens' ListEventSourceMappingsResponse [EventSourceMappingConfiguration]
 lesmrsEventSourceMappings = lens _lesmrsEventSourceMappings (\ s a -> s{_lesmrsEventSourceMappings = a}) . _Default . _Coerce;
@@ -184,4 +188,4 @@
 lesmrsResponseStatus :: Lens' ListEventSourceMappingsResponse Int
 lesmrsResponseStatus = lens _lesmrsResponseStatus (\ s a -> s{_lesmrsResponseStatus = a});
 
-instance NFData ListEventSourceMappingsResponse
+instance NFData ListEventSourceMappingsResponse where
diff --git a/gen/Network/AWS/Lambda/ListFunctions.hs b/gen/Network/AWS/Lambda/ListFunctions.hs
--- a/gen/Network/AWS/Lambda/ListFunctions.hs
+++ b/gen/Network/AWS/Lambda/ListFunctions.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.Lambda.ListFunctions
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -23,7 +23,7 @@
 --
 -- This operation requires permission for the @lambda:ListFunctions@ action.
 --
--- If you are using versioning feature, the response returns list of $LATEST versions of your functions. For information about the versioning feature, see <http://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html AWS Lambda Function Versioning and Aliases> .
+-- If you are using the versioning feature, you can list all of your functions or only @> LATEST@ versions. For information about the versioning feature, see <http://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html AWS Lambda Function Versioning and Aliases> .
 --
 --
 -- This operation returns paginated results.
@@ -33,8 +33,10 @@
       listFunctions
     , ListFunctions
     -- * Request Lenses
+    , lfMasterRegion
     , lfMarker
     , lfMaxItems
+    , lfFunctionVersion
 
     -- * Destructuring the Response
     , listFunctionsResponse
@@ -45,13 +47,13 @@
     , lfrsResponseStatus
     ) where
 
-import           Network.AWS.Lambda.Types
-import           Network.AWS.Lambda.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Pager
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lambda.Types
+import Network.AWS.Lambda.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Pager
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- |
 --
@@ -59,25 +61,39 @@
 --
 -- /See:/ 'listFunctions' smart constructor.
 data ListFunctions = ListFunctions'
-    { _lfMarker   :: !(Maybe Text)
-    , _lfMaxItems :: !(Maybe Nat)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _lfMasterRegion    :: !(Maybe Text)
+  , _lfMarker          :: !(Maybe Text)
+  , _lfMaxItems        :: !(Maybe Nat)
+  , _lfFunctionVersion :: !(Maybe FunctionVersion)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListFunctions' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'lfMasterRegion' - Optional string. If not specified, will return only regular function versions (i.e., non-replicated versions). Valid values are: The region from which the functions are replicated. For example, if you specify @us-east-1@ , only functions replicated from that region will be returned. @ALL@ _ Will return all functions from any region. If specified, you also must specify a valid FunctionVersion parameter.
+--
 -- * 'lfMarker' - Optional string. An opaque pagination token returned from a previous @ListFunctions@ operation. If present, indicates where to continue the listing.
 --
 -- * 'lfMaxItems' - Optional integer. Specifies the maximum number of AWS Lambda functions to return in response. This parameter value must be greater than 0.
+--
+-- * 'lfFunctionVersion' - Optional string. If not specified, only the unqualified functions ARNs (Amazon Resource Names) will be returned. Valid value: @ALL@ _ Will return all versions, including @> LATEST@ which will have fully qualified ARNs (Amazon Resource Names).
 listFunctions
     :: ListFunctions
 listFunctions =
-    ListFunctions'
-    { _lfMarker = Nothing
-    , _lfMaxItems = Nothing
-    }
+  ListFunctions'
+  { _lfMasterRegion = Nothing
+  , _lfMarker = Nothing
+  , _lfMaxItems = Nothing
+  , _lfFunctionVersion = Nothing
+  }
 
+
+-- | Optional string. If not specified, will return only regular function versions (i.e., non-replicated versions). Valid values are: The region from which the functions are replicated. For example, if you specify @us-east-1@ , only functions replicated from that region will be returned. @ALL@ _ Will return all functions from any region. If specified, you also must specify a valid FunctionVersion parameter.
+lfMasterRegion :: Lens' ListFunctions (Maybe Text)
+lfMasterRegion = lens _lfMasterRegion (\ s a -> s{_lfMasterRegion = a});
+
 -- | Optional string. An opaque pagination token returned from a previous @ListFunctions@ operation. If present, indicates where to continue the listing.
 lfMarker :: Lens' ListFunctions (Maybe Text)
 lfMarker = lens _lfMarker (\ s a -> s{_lfMarker = a});
@@ -86,6 +102,10 @@
 lfMaxItems :: Lens' ListFunctions (Maybe Natural)
 lfMaxItems = lens _lfMaxItems (\ s a -> s{_lfMaxItems = a}) . mapping _Nat;
 
+-- | Optional string. If not specified, only the unqualified functions ARNs (Amazon Resource Names) will be returned. Valid value: @ALL@ _ Will return all versions, including @> LATEST@ which will have fully qualified ARNs (Amazon Resource Names).
+lfFunctionVersion :: Lens' ListFunctions (Maybe FunctionVersion)
+lfFunctionVersion = lens _lfFunctionVersion (\ s a -> s{_lfFunctionVersion = a});
+
 instance AWSPager ListFunctions where
         page rq rs
           | stop (rs ^. lfrsNextMarker) = Nothing
@@ -104,9 +124,9 @@
                      (x .?> "Functions" .!@ mempty)
                      <*> (pure (fromEnum s)))
 
-instance Hashable ListFunctions
+instance Hashable ListFunctions where
 
-instance NFData ListFunctions
+instance NFData ListFunctions where
 
 instance ToHeaders ListFunctions where
         toHeaders = const mempty
@@ -117,7 +137,9 @@
 instance ToQuery ListFunctions where
         toQuery ListFunctions'{..}
           = mconcat
-              ["Marker" =: _lfMarker, "MaxItems" =: _lfMaxItems]
+              ["MasterRegion" =: _lfMasterRegion,
+               "Marker" =: _lfMarker, "MaxItems" =: _lfMaxItems,
+               "FunctionVersion" =: _lfFunctionVersion]
 
 -- | Contains a list of AWS Lambda function configurations (see 'FunctionConfiguration' .
 --
@@ -125,11 +147,12 @@
 --
 -- /See:/ 'listFunctionsResponse' smart constructor.
 data ListFunctionsResponse = ListFunctionsResponse'
-    { _lfrsNextMarker     :: !(Maybe Text)
-    , _lfrsFunctions      :: !(Maybe [FunctionConfiguration])
-    , _lfrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _lfrsNextMarker     :: !(Maybe Text)
+  , _lfrsFunctions      :: !(Maybe [FunctionConfiguration])
+  , _lfrsResponseStatus :: !Int
+  } deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListFunctionsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -143,12 +166,13 @@
     :: Int -- ^ 'lfrsResponseStatus'
     -> ListFunctionsResponse
 listFunctionsResponse pResponseStatus_ =
-    ListFunctionsResponse'
-    { _lfrsNextMarker = Nothing
-    , _lfrsFunctions = Nothing
-    , _lfrsResponseStatus = pResponseStatus_
-    }
+  ListFunctionsResponse'
+  { _lfrsNextMarker = Nothing
+  , _lfrsFunctions = Nothing
+  , _lfrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | A string, present if there are more functions.
 lfrsNextMarker :: Lens' ListFunctionsResponse (Maybe Text)
 lfrsNextMarker = lens _lfrsNextMarker (\ s a -> s{_lfrsNextMarker = a});
@@ -161,4 +185,4 @@
 lfrsResponseStatus :: Lens' ListFunctionsResponse Int
 lfrsResponseStatus = lens _lfrsResponseStatus (\ s a -> s{_lfrsResponseStatus = a});
 
-instance NFData ListFunctionsResponse
+instance NFData ListFunctionsResponse where
diff --git a/gen/Network/AWS/Lambda/ListTags.hs b/gen/Network/AWS/Lambda/ListTags.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Lambda/ListTags.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.Lambda.ListTags
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of tags assigned to a function when supplied the function ARN (Amazon Resource Name).
+--
+--
+module Network.AWS.Lambda.ListTags
+    (
+    -- * Creating a Request
+      listTags
+    , ListTags
+    -- * Request Lenses
+    , ltResource
+
+    -- * Destructuring the Response
+    , listTagsResponse
+    , ListTagsResponse
+    -- * Response Lenses
+    , ltrsTags
+    , ltrsResponseStatus
+    ) where
+
+import Network.AWS.Lambda.Types
+import Network.AWS.Lambda.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+
+-- | /See:/ 'listTags' smart constructor.
+newtype ListTags = ListTags'
+  { _ltResource :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListTags' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ltResource' - The ARN (Amazon Resource Name) of the function.
+listTags
+    :: Text -- ^ 'ltResource'
+    -> ListTags
+listTags pResource_ = ListTags' {_ltResource = pResource_}
+
+
+-- | The ARN (Amazon Resource Name) of the function.
+ltResource :: Lens' ListTags Text
+ltResource = lens _ltResource (\ s a -> s{_ltResource = a});
+
+instance AWSRequest ListTags where
+        type Rs ListTags = ListTagsResponse
+        request = get lambda
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListTagsResponse' <$>
+                   (x .?> "Tags" .!@ mempty) <*> (pure (fromEnum s)))
+
+instance Hashable ListTags where
+
+instance NFData ListTags where
+
+instance ToHeaders ListTags where
+        toHeaders = const mempty
+
+instance ToPath ListTags where
+        toPath ListTags'{..}
+          = mconcat ["/2017-03-31/tags/", toBS _ltResource]
+
+instance ToQuery ListTags where
+        toQuery = const mempty
+
+-- | /See:/ 'listTagsResponse' smart constructor.
+data ListTagsResponse = ListTagsResponse'
+  { _ltrsTags           :: !(Maybe (Map Text Text))
+  , _ltrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListTagsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ltrsTags' - The list of tags assigned to the function.
+--
+-- * 'ltrsResponseStatus' - -- | The response status code.
+listTagsResponse
+    :: Int -- ^ 'ltrsResponseStatus'
+    -> ListTagsResponse
+listTagsResponse pResponseStatus_ =
+  ListTagsResponse'
+  {_ltrsTags = Nothing, _ltrsResponseStatus = pResponseStatus_}
+
+
+-- | The list of tags assigned to the function.
+ltrsTags :: Lens' ListTagsResponse (HashMap Text Text)
+ltrsTags = lens _ltrsTags (\ s a -> s{_ltrsTags = a}) . _Default . _Map;
+
+-- | -- | The response status code.
+ltrsResponseStatus :: Lens' ListTagsResponse Int
+ltrsResponseStatus = lens _ltrsResponseStatus (\ s a -> s{_ltrsResponseStatus = a});
+
+instance NFData ListTagsResponse where
diff --git a/gen/Network/AWS/Lambda/ListVersionsByFunction.hs b/gen/Network/AWS/Lambda/ListVersionsByFunction.hs
--- a/gen/Network/AWS/Lambda/ListVersionsByFunction.hs
+++ b/gen/Network/AWS/Lambda/ListVersionsByFunction.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.Lambda.ListVersionsByFunction
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -40,12 +40,12 @@
     , lvbfrsResponseStatus
     ) where
 
-import           Network.AWS.Lambda.Types
-import           Network.AWS.Lambda.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lambda.Types
+import Network.AWS.Lambda.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- |
 --
@@ -53,11 +53,12 @@
 --
 -- /See:/ 'listVersionsByFunction' smart constructor.
 data ListVersionsByFunction = ListVersionsByFunction'
-    { _lvbfMarker       :: !(Maybe Text)
-    , _lvbfMaxItems     :: !(Maybe Nat)
-    , _lvbfFunctionName :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _lvbfMarker       :: !(Maybe Text)
+  , _lvbfMaxItems     :: !(Maybe Nat)
+  , _lvbfFunctionName :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListVersionsByFunction' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -66,17 +67,18 @@
 --
 -- * 'lvbfMaxItems' - Optional integer. Specifies the maximum number of AWS Lambda function versions to return in response. This parameter value must be greater than 0.
 --
--- * 'lvbfFunctionName' - Function name whose versions to list. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length.
+-- * 'lvbfFunctionName' - Function name whose versions to list. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 listVersionsByFunction
     :: Text -- ^ 'lvbfFunctionName'
     -> ListVersionsByFunction
 listVersionsByFunction pFunctionName_ =
-    ListVersionsByFunction'
-    { _lvbfMarker = Nothing
-    , _lvbfMaxItems = Nothing
-    , _lvbfFunctionName = pFunctionName_
-    }
+  ListVersionsByFunction'
+  { _lvbfMarker = Nothing
+  , _lvbfMaxItems = Nothing
+  , _lvbfFunctionName = pFunctionName_
+  }
 
+
 -- | Optional string. An opaque pagination token returned from a previous @ListVersionsByFunction@ operation. If present, indicates where to continue the listing.
 lvbfMarker :: Lens' ListVersionsByFunction (Maybe Text)
 lvbfMarker = lens _lvbfMarker (\ s a -> s{_lvbfMarker = a});
@@ -85,7 +87,7 @@
 lvbfMaxItems :: Lens' ListVersionsByFunction (Maybe Natural)
 lvbfMaxItems = lens _lvbfMaxItems (\ s a -> s{_lvbfMaxItems = a}) . mapping _Nat;
 
--- | Function name whose versions to list. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length.
+-- | Function name whose versions to list. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 lvbfFunctionName :: Lens' ListVersionsByFunction Text
 lvbfFunctionName = lens _lvbfFunctionName (\ s a -> s{_lvbfFunctionName = a});
 
@@ -101,9 +103,9 @@
                      (x .?> "NextMarker")
                      <*> (pure (fromEnum s)))
 
-instance Hashable ListVersionsByFunction
+instance Hashable ListVersionsByFunction where
 
-instance NFData ListVersionsByFunction
+instance NFData ListVersionsByFunction where
 
 instance ToHeaders ListVersionsByFunction where
         toHeaders = const mempty
@@ -126,11 +128,12 @@
 --
 -- /See:/ 'listVersionsByFunctionResponse' smart constructor.
 data ListVersionsByFunctionResponse = ListVersionsByFunctionResponse'
-    { _lvbfrsVersions       :: !(Maybe [FunctionConfiguration])
-    , _lvbfrsNextMarker     :: !(Maybe Text)
-    , _lvbfrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _lvbfrsVersions       :: !(Maybe [FunctionConfiguration])
+  , _lvbfrsNextMarker     :: !(Maybe Text)
+  , _lvbfrsResponseStatus :: !Int
+  } deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListVersionsByFunctionResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -144,12 +147,13 @@
     :: Int -- ^ 'lvbfrsResponseStatus'
     -> ListVersionsByFunctionResponse
 listVersionsByFunctionResponse pResponseStatus_ =
-    ListVersionsByFunctionResponse'
-    { _lvbfrsVersions = Nothing
-    , _lvbfrsNextMarker = Nothing
-    , _lvbfrsResponseStatus = pResponseStatus_
-    }
+  ListVersionsByFunctionResponse'
+  { _lvbfrsVersions = Nothing
+  , _lvbfrsNextMarker = Nothing
+  , _lvbfrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | A list of Lambda function versions.
 lvbfrsVersions :: Lens' ListVersionsByFunctionResponse [FunctionConfiguration]
 lvbfrsVersions = lens _lvbfrsVersions (\ s a -> s{_lvbfrsVersions = a}) . _Default . _Coerce;
@@ -162,4 +166,4 @@
 lvbfrsResponseStatus :: Lens' ListVersionsByFunctionResponse Int
 lvbfrsResponseStatus = lens _lvbfrsResponseStatus (\ s a -> s{_lvbfrsResponseStatus = a});
 
-instance NFData ListVersionsByFunctionResponse
+instance NFData ListVersionsByFunctionResponse where
diff --git a/gen/Network/AWS/Lambda/PublishVersion.hs b/gen/Network/AWS/Lambda/PublishVersion.hs
--- a/gen/Network/AWS/Lambda/PublishVersion.hs
+++ b/gen/Network/AWS/Lambda/PublishVersion.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.Lambda.PublishVersion
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -50,15 +50,17 @@
     , fcTimeout
     , fcLastModified
     , fcCodeSha256
+    , fcTracingConfig
     , fcDescription
+    , fcMasterARN
     ) where
 
-import           Network.AWS.Lambda.Types
-import           Network.AWS.Lambda.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lambda.Types
+import Network.AWS.Lambda.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- |
 --
@@ -66,11 +68,12 @@
 --
 -- /See:/ 'publishVersion' smart constructor.
 data PublishVersion = PublishVersion'
-    { _pvCodeSha256   :: !(Maybe Text)
-    , _pvDescription  :: !(Maybe Text)
-    , _pvFunctionName :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _pvCodeSha256   :: !(Maybe Text)
+  , _pvDescription  :: !(Maybe Text)
+  , _pvFunctionName :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PublishVersion' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -79,17 +82,18 @@
 --
 -- * 'pvDescription' - The description for the version you are publishing. If not provided, AWS Lambda copies the description from the $LATEST version.
 --
--- * 'pvFunctionName' - The Lambda function name. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length.
+-- * 'pvFunctionName' - The Lambda function name. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 publishVersion
     :: Text -- ^ 'pvFunctionName'
     -> PublishVersion
 publishVersion pFunctionName_ =
-    PublishVersion'
-    { _pvCodeSha256 = Nothing
-    , _pvDescription = Nothing
-    , _pvFunctionName = pFunctionName_
-    }
+  PublishVersion'
+  { _pvCodeSha256 = Nothing
+  , _pvDescription = Nothing
+  , _pvFunctionName = pFunctionName_
+  }
 
+
 -- | The SHA256 hash of the deployment package you want to publish. This provides validation on the code you are publishing. If you provide this parameter value must match the SHA256 of the $LATEST version for the publication to succeed.
 pvCodeSha256 :: Lens' PublishVersion (Maybe Text)
 pvCodeSha256 = lens _pvCodeSha256 (\ s a -> s{_pvCodeSha256 = a});
@@ -98,7 +102,7 @@
 pvDescription :: Lens' PublishVersion (Maybe Text)
 pvDescription = lens _pvDescription (\ s a -> s{_pvDescription = a});
 
--- | The Lambda function name. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length.
+-- | The Lambda function name. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 pvFunctionName :: Lens' PublishVersion Text
 pvFunctionName = lens _pvFunctionName (\ s a -> s{_pvFunctionName = a});
 
@@ -107,9 +111,9 @@
         request = postJSON lambda
         response = receiveJSON (\ s h x -> eitherParseJSON x)
 
-instance Hashable PublishVersion
+instance Hashable PublishVersion where
 
-instance NFData PublishVersion
+instance NFData PublishVersion where
 
 instance ToHeaders PublishVersion where
         toHeaders = const mempty
diff --git a/gen/Network/AWS/Lambda/RemovePermission.hs b/gen/Network/AWS/Lambda/RemovePermission.hs
--- a/gen/Network/AWS/Lambda/RemovePermission.hs
+++ b/gen/Network/AWS/Lambda/RemovePermission.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.Lambda.RemovePermission
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -42,12 +42,12 @@
     , RemovePermissionResponse
     ) where
 
-import           Network.AWS.Lambda.Types
-import           Network.AWS.Lambda.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lambda.Types
+import Network.AWS.Lambda.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- |
 --
@@ -55,18 +55,19 @@
 --
 -- /See:/ 'removePermission' smart constructor.
 data RemovePermission = RemovePermission'
-    { _rpQualifier    :: !(Maybe Text)
-    , _rpFunctionName :: !Text
-    , _rpStatementId  :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _rpQualifier    :: !(Maybe Text)
+  , _rpFunctionName :: !Text
+  , _rpStatementId  :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RemovePermission' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'rpQualifier' - You can specify this optional parameter to remove permission associated with a specific function version or function alias. If you don't specify this parameter, the API removes permission associated with the unqualified function ARN.
 --
--- * 'rpFunctionName' - Lambda function whose resource policy you want to remove a permission from. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length.
+-- * 'rpFunctionName' - Lambda function whose resource policy you want to remove a permission from. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 --
 -- * 'rpStatementId' - Statement ID of the permission to remove.
 removePermission
@@ -74,17 +75,18 @@
     -> Text -- ^ 'rpStatementId'
     -> RemovePermission
 removePermission pFunctionName_ pStatementId_ =
-    RemovePermission'
-    { _rpQualifier = Nothing
-    , _rpFunctionName = pFunctionName_
-    , _rpStatementId = pStatementId_
-    }
+  RemovePermission'
+  { _rpQualifier = Nothing
+  , _rpFunctionName = pFunctionName_
+  , _rpStatementId = pStatementId_
+  }
 
+
 -- | You can specify this optional parameter to remove permission associated with a specific function version or function alias. If you don't specify this parameter, the API removes permission associated with the unqualified function ARN.
 rpQualifier :: Lens' RemovePermission (Maybe Text)
 rpQualifier = lens _rpQualifier (\ s a -> s{_rpQualifier = a});
 
--- | Lambda function whose resource policy you want to remove a permission from. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length.
+-- | Lambda function whose resource policy you want to remove a permission from. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 rpFunctionName :: Lens' RemovePermission Text
 rpFunctionName = lens _rpFunctionName (\ s a -> s{_rpFunctionName = a});
 
@@ -97,9 +99,9 @@
         request = delete lambda
         response = receiveNull RemovePermissionResponse'
 
-instance Hashable RemovePermission
+instance Hashable RemovePermission where
 
-instance NFData RemovePermission
+instance NFData RemovePermission where
 
 instance ToHeaders RemovePermission where
         toHeaders = const mempty
@@ -116,13 +118,15 @@
 
 -- | /See:/ 'removePermissionResponse' smart constructor.
 data RemovePermissionResponse =
-    RemovePermissionResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  RemovePermissionResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RemovePermissionResponse' with the minimum fields required to make a request.
 --
 removePermissionResponse
     :: RemovePermissionResponse
 removePermissionResponse = RemovePermissionResponse'
 
-instance NFData RemovePermissionResponse
+
+instance NFData RemovePermissionResponse where
diff --git a/gen/Network/AWS/Lambda/TagResource.hs b/gen/Network/AWS/Lambda/TagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Lambda/TagResource.hs
@@ -0,0 +1,110 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.Lambda.TagResource
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a list of tags (key-value pairs) on the Lambda function. Requires the Lambda function ARN (Amazon Resource Name). If a key is specified without a value, Lambda creates a tag with the specified key and a value of null.
+--
+--
+module Network.AWS.Lambda.TagResource
+    (
+    -- * Creating a Request
+      tagResource
+    , TagResource
+    -- * Request Lenses
+    , trResource
+    , trTags
+
+    -- * Destructuring the Response
+    , tagResourceResponse
+    , TagResourceResponse
+    ) where
+
+import Network.AWS.Lambda.Types
+import Network.AWS.Lambda.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+
+-- | /See:/ 'tagResource' smart constructor.
+data TagResource = TagResource'
+  { _trResource :: !Text
+  , _trTags     :: !(Map Text Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'TagResource' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'trResource' - The ARN (Amazon Resource Name) of the Lambda function.
+--
+-- * 'trTags' - The list of tags (key-value pairs) you are assigning to the Lambda function.
+tagResource
+    :: Text -- ^ 'trResource'
+    -> TagResource
+tagResource pResource_ =
+  TagResource' {_trResource = pResource_, _trTags = mempty}
+
+
+-- | The ARN (Amazon Resource Name) of the Lambda function.
+trResource :: Lens' TagResource Text
+trResource = lens _trResource (\ s a -> s{_trResource = a});
+
+-- | The list of tags (key-value pairs) you are assigning to the Lambda function.
+trTags :: Lens' TagResource (HashMap Text Text)
+trTags = lens _trTags (\ s a -> s{_trTags = a}) . _Map;
+
+instance AWSRequest TagResource where
+        type Rs TagResource = TagResourceResponse
+        request = postJSON lambda
+        response = receiveNull TagResourceResponse'
+
+instance Hashable TagResource where
+
+instance NFData TagResource where
+
+instance ToHeaders TagResource where
+        toHeaders = const mempty
+
+instance ToJSON TagResource where
+        toJSON TagResource'{..}
+          = object (catMaybes [Just ("Tags" .= _trTags)])
+
+instance ToPath TagResource where
+        toPath TagResource'{..}
+          = mconcat ["/2017-03-31/tags/", toBS _trResource]
+
+instance ToQuery TagResource where
+        toQuery = const mempty
+
+-- | /See:/ 'tagResourceResponse' smart constructor.
+data TagResourceResponse =
+  TagResourceResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'TagResourceResponse' with the minimum fields required to make a request.
+--
+tagResourceResponse
+    :: TagResourceResponse
+tagResourceResponse = TagResourceResponse'
+
+
+instance NFData TagResourceResponse where
diff --git a/gen/Network/AWS/Lambda/Types.hs b/gen/Network/AWS/Lambda/Types.hs
--- a/gen/Network/AWS/Lambda/Types.hs
+++ b/gen/Network/AWS/Lambda/Types.hs
@@ -4,9 +4,9 @@
 
 -- |
 -- Module      : Network.AWS.Lambda.Types
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -18,6 +18,7 @@
     -- * Errors
     , _KMSInvalidStateException
     , _EC2ThrottledException
+    , _InvalidRuntimeException
     , _PolicyLengthExceededException
     , _EC2AccessDeniedException
     , _InvalidSubnetIdException
@@ -42,6 +43,9 @@
     -- * EventSourcePosition
     , EventSourcePosition (..)
 
+    -- * FunctionVersion
+    , FunctionVersion (..)
+
     -- * InvocationType
     , InvocationType (..)
 
@@ -51,6 +55,9 @@
     -- * Runtime
     , Runtime (..)
 
+    -- * TracingMode
+    , TracingMode (..)
+
     -- * AccountLimit
     , AccountLimit
     , accountLimit
@@ -139,8 +146,20 @@
     , fcTimeout
     , fcLastModified
     , fcCodeSha256
+    , fcTracingConfig
     , fcDescription
+    , fcMasterARN
 
+    -- * TracingConfig
+    , TracingConfig
+    , tracingConfig
+    , tMode
+
+    -- * TracingConfigResponse
+    , TracingConfigResponse
+    , tracingConfigResponse
+    , tcMode
+
     -- * VPCConfig
     , VPCConfig
     , vpcConfig
@@ -155,38 +174,40 @@
     , vcVPCId
     ) where
 
-import           Network.AWS.Lambda.Types.Product
-import           Network.AWS.Lambda.Types.Sum
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Sign.V4
+import Network.AWS.Lambda.Types.Product
+import Network.AWS.Lambda.Types.Sum
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Sign.V4
 
 -- | API version @2015-03-31@ of the Amazon Lambda SDK configuration.
 lambda :: Service
 lambda =
-    Service
-    { _svcAbbrev = "Lambda"
-    , _svcSigner = v4
-    , _svcPrefix = "lambda"
-    , _svcVersion = "2015-03-31"
-    , _svcEndpoint = defaultEndpoint lambda
-    , _svcTimeout = Just 70
-    , _svcCheck = statusSuccess
-    , _svcError = parseJSONError "Lambda"
-    , _svcRetry = retry
-    }
+  Service
+  { _svcAbbrev = "Lambda"
+  , _svcSigner = v4
+  , _svcPrefix = "lambda"
+  , _svcVersion = "2015-03-31"
+  , _svcEndpoint = defaultEndpoint lambda
+  , _svcTimeout = Just 70
+  , _svcCheck = statusSuccess
+  , _svcError = parseJSONError "Lambda"
+  , _svcRetry = retry
+  }
   where
     retry =
-        Exponential
-        { _retryBase = 5.0e-2
-        , _retryGrowth = 2
-        , _retryAttempts = 5
-        , _retryCheck = check
-        }
+      Exponential
+      { _retryBase = 5.0e-2
+      , _retryGrowth = 2
+      , _retryAttempts = 5
+      , _retryCheck = check
+      }
     check e
+      | has (hasCode "ThrottledException" . hasStatus 400) e =
+        Just "throttled_exception"
       | has (hasStatus 429) e = Just "too_many_requests"
       | has (hasCode "ThrottlingException" . hasStatus 400) e =
-          Just "throttling_exception"
+        Just "throttling_exception"
       | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
       | has (hasStatus 504) e = Just "gateway_timeout"
       | has (hasStatus 502) e = Just "bad_gateway"
@@ -195,156 +216,187 @@
       | has (hasStatus 509) e = Just "limit_exceeded"
       | otherwise = Nothing
 
--- | Lambda was unable to decrypt the environment variables because the KMS key used is in an invalid state for Decrypt. Please check the function's KMS key settings.
+
+-- | Lambda was unable to decrypt the environment variables because the KMS key used is in an invalid state for Decrypt. Check the function's KMS key settings.
 --
 --
 _KMSInvalidStateException :: AsError a => Getting (First ServiceError) a ServiceError
 _KMSInvalidStateException =
-    _ServiceError . hasStatus 502 . hasCode "KMSInvalidStateException"
+  _MatchServiceError lambda "KMSInvalidStateException" . hasStatus 502
 
+
 -- | AWS Lambda was throttled by Amazon EC2 during Lambda function initialization using the execution role provided for the Lambda function.
 --
 --
 _EC2ThrottledException :: AsError a => Getting (First ServiceError) a ServiceError
 _EC2ThrottledException =
-    _ServiceError . hasStatus 502 . hasCode "EC2ThrottledException"
+  _MatchServiceError lambda "EC2ThrottledException" . hasStatus 502
 
+
+-- | The runtime or runtime version specified is not supported.
+--
+--
+_InvalidRuntimeException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidRuntimeException =
+  _MatchServiceError lambda "InvalidRuntimeException" . hasStatus 502
+
+
 -- | Lambda function access policy is limited to 20 KB.
 --
 --
 _PolicyLengthExceededException :: AsError a => Getting (First ServiceError) a ServiceError
 _PolicyLengthExceededException =
-    _ServiceError . hasStatus 400 . hasCode "PolicyLengthExceededException"
+  _MatchServiceError lambda "PolicyLengthExceededException" . hasStatus 400
 
+
 -- |
 --
 --
 _EC2AccessDeniedException :: AsError a => Getting (First ServiceError) a ServiceError
 _EC2AccessDeniedException =
-    _ServiceError . hasStatus 502 . hasCode "EC2AccessDeniedException"
+  _MatchServiceError lambda "EC2AccessDeniedException" . hasStatus 502
 
+
 -- | The Subnet ID provided in the Lambda function VPC configuration is invalid.
 --
 --
 _InvalidSubnetIdException :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidSubnetIdException =
-    _ServiceError . hasStatus 502 . hasCode "InvalidSubnetIDException"
+  _MatchServiceError lambda "InvalidSubnetIDException" . hasStatus 502
 
+
 -- | The content type of the @Invoke@ request body is not JSON.
 --
 --
 _UnsupportedMediaTypeException :: AsError a => Getting (First ServiceError) a ServiceError
 _UnsupportedMediaTypeException =
-    _ServiceError . hasStatus 415 . hasCode "UnsupportedMediaTypeException"
+  _MatchServiceError lambda "UnsupportedMediaTypeException" . hasStatus 415
 
+
 -- | The request body could not be parsed as JSON.
 --
 --
 _InvalidRequestContentException :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidRequestContentException =
-    _ServiceError . hasStatus 400 . hasCode "InvalidRequestContentException"
+  _MatchServiceError lambda "InvalidRequestContentException" . hasStatus 400
 
--- | Lambda was unable to decrypt the environment variables because the KMS key was not found. Please check the function's KMS key settings.
+
+-- | Lambda was unable to decrypt the environment variables because the KMS key was not found. Check the function's KMS key settings.
 --
 --
 _KMSNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
 _KMSNotFoundException =
-    _ServiceError . hasStatus 502 . hasCode "KMSNotFoundException"
+  _MatchServiceError lambda "KMSNotFoundException" . hasStatus 502
 
+
 -- | AWS Lambda was not able to create an Elastic Network Interface (ENI) in the VPC, specified as part of Lambda function configuration, because the limit for network interfaces has been reached.
 --
 --
 _ENILimitReachedException :: AsError a => Getting (First ServiceError) a ServiceError
 _ENILimitReachedException =
-    _ServiceError . hasStatus 502 . hasCode "ENILimitReachedException"
+  _MatchServiceError lambda "ENILimitReachedException" . hasStatus 502
 
--- | One of the parameters in the request is invalid. For example, if you provided an IAM role for AWS Lambda to assume in the @CreateFunction@ or the @UpdateFunctionConfiguration@ API, that AWS Lambda is unable to assume you will get this exception.
+
+-- | One of the parameters in the request is invalid. For example, if you provided an IAM role for AWS Lambda to assume in the @CreateFunction@ or the @UpdateFunctionConfiguration@ API, that AWS Lambda is unable to assume you will get this exception. You will also get this exception if you have selected a deprecated runtime, such as Node v0.10.42.
 --
 --
 _InvalidParameterValueException :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidParameterValueException =
-    _ServiceError . hasStatus 400 . hasCode "InvalidParameterValueException"
+  _MatchServiceError lambda "InvalidParameterValueException" . hasStatus 400
 
+
 -- | The request payload exceeded the @Invoke@ request body JSON input limit. For more information, see <http://docs.aws.amazon.com/lambda/latest/dg/limits.html Limits> .
 --
 --
 _RequestTooLargeException :: AsError a => Getting (First ServiceError) a ServiceError
 _RequestTooLargeException =
-    _ServiceError . hasStatus 413 . hasCode "RequestTooLargeException"
+  _MatchServiceError lambda "RequestTooLargeException" . hasStatus 413
 
+
 -- |
 --
 --
 _TooManyRequestsException :: AsError a => Getting (First ServiceError) a ServiceError
 _TooManyRequestsException =
-    _ServiceError . hasStatus 429 . hasCode "TooManyRequestsException"
+  _MatchServiceError lambda "TooManyRequestsException" . hasStatus 429
 
+
 -- | The Security Group ID provided in the Lambda function VPC configuration is invalid.
 --
 --
 _InvalidSecurityGroupIdException :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidSecurityGroupIdException =
-    _ServiceError . hasStatus 502 . hasCode "InvalidSecurityGroupIDException"
+  _MatchServiceError lambda "InvalidSecurityGroupIDException" . hasStatus 502
 
--- | Lambda was unable to decrypt the environment variables because the KMS key used is disabled. Please check the Lambda function's KMS key settings.
+
+-- | Lambda was unable to decrypt the environment variables because the KMS key used is disabled. Check the Lambda function's KMS key settings.
 --
 --
 _KMSDisabledException :: AsError a => Getting (First ServiceError) a ServiceError
 _KMSDisabledException =
-    _ServiceError . hasStatus 502 . hasCode "KMSDisabledException"
+  _MatchServiceError lambda "KMSDisabledException" . hasStatus 502
 
+
 -- | AWS Lambda was not able to set up VPC access for the Lambda function because one or more configured subnets has no available IP addresses.
 --
 --
 _SubnetIPAddressLimitReachedException :: AsError a => Getting (First ServiceError) a ServiceError
 _SubnetIPAddressLimitReachedException =
-    _ServiceError .
-    hasStatus 502 . hasCode "SubnetIPAddressLimitReachedException"
+  _MatchServiceError lambda "SubnetIPAddressLimitReachedException" .
+  hasStatus 502
 
+
 -- | The AWS Lambda service encountered an internal error.
 --
 --
 _ServiceException :: AsError a => Getting (First ServiceError) a ServiceError
-_ServiceException = _ServiceError . hasStatus 500 . hasCode "ServiceException"
+_ServiceException = _MatchServiceError lambda "ServiceException" . hasStatus 500
 
+
 -- | You have exceeded your maximum total code size per account. <http://docs.aws.amazon.com/lambda/latest/dg/limits.html Limits>
 --
 --
 _CodeStorageExceededException :: AsError a => Getting (First ServiceError) a ServiceError
 _CodeStorageExceededException =
-    _ServiceError . hasStatus 400 . hasCode "CodeStorageExceededException"
+  _MatchServiceError lambda "CodeStorageExceededException" . hasStatus 400
 
+
 -- | AWS Lambda could not unzip the function zip file.
 --
 --
 _InvalidZipFileException :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidZipFileException =
-    _ServiceError . hasStatus 502 . hasCode "InvalidZipFileException"
+  _MatchServiceError lambda "InvalidZipFileException" . hasStatus 502
 
+
 -- | The resource already exists.
 --
 --
 _ResourceConflictException :: AsError a => Getting (First ServiceError) a ServiceError
 _ResourceConflictException =
-    _ServiceError . hasStatus 409 . hasCode "ResourceConflictException"
+  _MatchServiceError lambda "ResourceConflictException" . hasStatus 409
 
+
 -- | AWS Lambda received an unexpected EC2 client exception while setting up for the Lambda function.
 --
 --
 _EC2UnexpectedException :: AsError a => Getting (First ServiceError) a ServiceError
 _EC2UnexpectedException =
-    _ServiceError . hasStatus 502 . hasCode "EC2UnexpectedException"
+  _MatchServiceError lambda "EC2UnexpectedException" . hasStatus 502
 
+
 -- | The resource (for example, a Lambda function or access policy statement) specified in the request does not exist.
 --
 --
 _ResourceNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
 _ResourceNotFoundException =
-    _ServiceError . hasStatus 404 . hasCode "ResourceNotFoundException"
+  _MatchServiceError lambda "ResourceNotFoundException" . hasStatus 404
 
--- | Lambda was unable to decrypt the environment variables because KMS access was denied. Please check the Lambda function's KMS permissions.
+
+-- | Lambda was unable to decrypt the environment variables because KMS access was denied. Check the Lambda function's KMS permissions.
 --
 --
 _KMSAccessDeniedException :: AsError a => Getting (First ServiceError) a ServiceError
 _KMSAccessDeniedException =
-    _ServiceError . hasStatus 502 . hasCode "KMSAccessDeniedException"
+  _MatchServiceError lambda "KMSAccessDeniedException" . hasStatus 502
+
diff --git a/gen/Network/AWS/Lambda/Types/Product.hs b/gen/Network/AWS/Lambda/Types/Product.hs
--- a/gen/Network/AWS/Lambda/Types/Product.hs
+++ b/gen/Network/AWS/Lambda/Types/Product.hs
@@ -9,17 +9,17 @@
 
 -- |
 -- Module      : Network.AWS.Lambda.Types.Product
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 module Network.AWS.Lambda.Types.Product where
 
-import           Network.AWS.Lambda.Types.Sum
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
+import Network.AWS.Lambda.Types.Sum
+import Network.AWS.Lens
+import Network.AWS.Prelude
 
 -- | Provides limits of code size and concurrency associated with the current account and region.
 --
@@ -27,38 +27,40 @@
 --
 -- /See:/ 'accountLimit' smart constructor.
 data AccountLimit = AccountLimit'
-    { _alConcurrentExecutions :: !(Maybe Int)
-    , _alTotalCodeSize        :: !(Maybe Integer)
-    , _alCodeSizeUnzipped     :: !(Maybe Integer)
-    , _alCodeSizeZipped       :: !(Maybe Integer)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _alConcurrentExecutions :: !(Maybe Int)
+  , _alTotalCodeSize        :: !(Maybe Integer)
+  , _alCodeSizeUnzipped     :: !(Maybe Integer)
+  , _alCodeSizeZipped       :: !(Maybe Integer)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AccountLimit' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'alConcurrentExecutions' - Number of simultaneous executions of your function per region. For more information or to request a limit increase for concurrent executions, see <http://docs.aws.amazon.com/lambda/latest/dg/concurrent-executions.html Lambda Function Concurrent Executions> . The default limit is 100.
 --
--- * 'alTotalCodeSize' - Maximum size, in megabytes, of a code package you can upload per region. The default size is 75 GB.
+-- * 'alTotalCodeSize' - Maximum size, in bytes, of a code package you can upload per region. The default size is 75 GB.
 --
 -- * 'alCodeSizeUnzipped' - Size, in bytes, of code/dependencies that you can zip into a deployment package (uncompressed zip/jar size) for uploading. The default limit is 250 MB.
 --
--- * 'alCodeSizeZipped' - Size, in bytes, of a single zipped code/dependencies package you can upload for your Lambda function(.zip/.jar file). Try using AWS S3 for uploading larger files. Default limit is 50 MB.
+-- * 'alCodeSizeZipped' - Size, in bytes, of a single zipped code/dependencies package you can upload for your Lambda function(.zip/.jar file). Try using Amazon S3 for uploading larger files. Default limit is 50 MB.
 accountLimit
     :: AccountLimit
 accountLimit =
-    AccountLimit'
-    { _alConcurrentExecutions = Nothing
-    , _alTotalCodeSize = Nothing
-    , _alCodeSizeUnzipped = Nothing
-    , _alCodeSizeZipped = Nothing
-    }
+  AccountLimit'
+  { _alConcurrentExecutions = Nothing
+  , _alTotalCodeSize = Nothing
+  , _alCodeSizeUnzipped = Nothing
+  , _alCodeSizeZipped = Nothing
+  }
 
+
 -- | Number of simultaneous executions of your function per region. For more information or to request a limit increase for concurrent executions, see <http://docs.aws.amazon.com/lambda/latest/dg/concurrent-executions.html Lambda Function Concurrent Executions> . The default limit is 100.
 alConcurrentExecutions :: Lens' AccountLimit (Maybe Int)
 alConcurrentExecutions = lens _alConcurrentExecutions (\ s a -> s{_alConcurrentExecutions = a});
 
--- | Maximum size, in megabytes, of a code package you can upload per region. The default size is 75 GB.
+-- | Maximum size, in bytes, of a code package you can upload per region. The default size is 75 GB.
 alTotalCodeSize :: Lens' AccountLimit (Maybe Integer)
 alTotalCodeSize = lens _alTotalCodeSize (\ s a -> s{_alTotalCodeSize = a});
 
@@ -66,7 +68,7 @@
 alCodeSizeUnzipped :: Lens' AccountLimit (Maybe Integer)
 alCodeSizeUnzipped = lens _alCodeSizeUnzipped (\ s a -> s{_alCodeSizeUnzipped = a});
 
--- | Size, in bytes, of a single zipped code/dependencies package you can upload for your Lambda function(.zip/.jar file). Try using AWS S3 for uploading larger files. Default limit is 50 MB.
+-- | Size, in bytes, of a single zipped code/dependencies package you can upload for your Lambda function(.zip/.jar file). Try using Amazon S3 for uploading larger files. Default limit is 50 MB.
 alCodeSizeZipped :: Lens' AccountLimit (Maybe Integer)
 alCodeSizeZipped = lens _alCodeSizeZipped (\ s a -> s{_alCodeSizeZipped = a});
 
@@ -80,9 +82,9 @@
                      <*> (x .:? "CodeSizeUnzipped")
                      <*> (x .:? "CodeSizeZipped"))
 
-instance Hashable AccountLimit
+instance Hashable AccountLimit where
 
-instance NFData AccountLimit
+instance NFData AccountLimit where
 
 -- | Provides code size usage and function count associated with the current account and region.
 --
@@ -90,26 +92,25 @@
 --
 -- /See:/ 'accountUsage' smart constructor.
 data AccountUsage = AccountUsage'
-    { _auTotalCodeSize :: !(Maybe Integer)
-    , _auFunctionCount :: !(Maybe Integer)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _auTotalCodeSize :: !(Maybe Integer)
+  , _auFunctionCount :: !(Maybe Integer)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AccountUsage' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'auTotalCodeSize' - Total size, in megabytes, of the account's deployment packages per region.
+-- * 'auTotalCodeSize' - Total size, in bytes, of the account's deployment packages per region.
 --
 -- * 'auFunctionCount' - The number of your account's existing functions per region.
 accountUsage
     :: AccountUsage
 accountUsage =
-    AccountUsage'
-    { _auTotalCodeSize = Nothing
-    , _auFunctionCount = Nothing
-    }
+  AccountUsage' {_auTotalCodeSize = Nothing, _auFunctionCount = Nothing}
 
--- | Total size, in megabytes, of the account's deployment packages per region.
+
+-- | Total size, in bytes, of the account's deployment packages per region.
 auTotalCodeSize :: Lens' AccountUsage (Maybe Integer)
 auTotalCodeSize = lens _auTotalCodeSize (\ s a -> s{_auTotalCodeSize = a});
 
@@ -124,9 +125,9 @@
                  AccountUsage' <$>
                    (x .:? "TotalCodeSize") <*> (x .:? "FunctionCount"))
 
-instance Hashable AccountUsage
+instance Hashable AccountUsage where
 
-instance NFData AccountUsage
+instance NFData AccountUsage where
 
 -- | Provides configuration information about a Lambda function version alias.
 --
@@ -134,12 +135,13 @@
 --
 -- /See:/ 'aliasConfiguration' smart constructor.
 data AliasConfiguration = AliasConfiguration'
-    { _acName            :: !(Maybe Text)
-    , _acFunctionVersion :: !(Maybe Text)
-    , _acAliasARN        :: !(Maybe Text)
-    , _acDescription     :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _acName            :: !(Maybe Text)
+  , _acFunctionVersion :: !(Maybe Text)
+  , _acAliasARN        :: !(Maybe Text)
+  , _acDescription     :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AliasConfiguration' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -154,13 +156,14 @@
 aliasConfiguration
     :: AliasConfiguration
 aliasConfiguration =
-    AliasConfiguration'
-    { _acName = Nothing
-    , _acFunctionVersion = Nothing
-    , _acAliasARN = Nothing
-    , _acDescription = Nothing
-    }
+  AliasConfiguration'
+  { _acName = Nothing
+  , _acFunctionVersion = Nothing
+  , _acAliasARN = Nothing
+  , _acDescription = Nothing
+  }
 
+
 -- | Alias name.
 acName :: Lens' AliasConfiguration (Maybe Text)
 acName = lens _acName (\ s a -> s{_acName = a});
@@ -186,9 +189,9 @@
                      (x .:? "AliasArn")
                      <*> (x .:? "Description"))
 
-instance Hashable AliasConfiguration
+instance Hashable AliasConfiguration where
 
-instance NFData AliasConfiguration
+instance NFData AliasConfiguration where
 
 -- | The parent object that contains the target ARN (Amazon Resource Name) of an Amazon SQS queue or Amazon SNS topic.
 --
@@ -196,22 +199,21 @@
 --
 -- /See:/ 'deadLetterConfig' smart constructor.
 newtype DeadLetterConfig = DeadLetterConfig'
-    { _dlcTargetARN :: Maybe Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dlcTargetARN :: Maybe Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeadLetterConfig' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dlcTargetARN' - The ARN (Amazon Resource Value) of an Amazon SQS queue or Amazon SNS topic you specify as your Dead Letter Queue (DLQ).
+-- * 'dlcTargetARN' - The Amazon Resource Name (ARN) of an Amazon SQS queue or Amazon SNS topic you specify as your Dead Letter Queue (DLQ).
 deadLetterConfig
     :: DeadLetterConfig
-deadLetterConfig =
-    DeadLetterConfig'
-    { _dlcTargetARN = Nothing
-    }
+deadLetterConfig = DeadLetterConfig' {_dlcTargetARN = Nothing}
 
--- | The ARN (Amazon Resource Value) of an Amazon SQS queue or Amazon SNS topic you specify as your Dead Letter Queue (DLQ).
+
+-- | The Amazon Resource Name (ARN) of an Amazon SQS queue or Amazon SNS topic you specify as your Dead Letter Queue (DLQ).
 dlcTargetARN :: Lens' DeadLetterConfig (Maybe Text)
 dlcTargetARN = lens _dlcTargetARN (\ s a -> s{_dlcTargetARN = a});
 
@@ -220,9 +222,9 @@
           = withObject "DeadLetterConfig"
               (\ x -> DeadLetterConfig' <$> (x .:? "TargetArn"))
 
-instance Hashable DeadLetterConfig
+instance Hashable DeadLetterConfig where
 
-instance NFData DeadLetterConfig
+instance NFData DeadLetterConfig where
 
 instance ToJSON DeadLetterConfig where
         toJSON DeadLetterConfig'{..}
@@ -235,28 +237,27 @@
 --
 -- /See:/ 'environment' smart constructor.
 newtype Environment = Environment'
-    { _eVariables :: Maybe (Sensitive (Map Text (Sensitive Text)))
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _eVariables :: Maybe (Sensitive (Map Text (Sensitive Text)))
+  } deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'Environment' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'eVariables' - The key-value pairs that represent your environment's configuration settings. The value you specify cannot contain a ",".
+-- * 'eVariables' - The key-value pairs that represent your environment's configuration settings.
 environment
     :: Environment
-environment =
-    Environment'
-    { _eVariables = Nothing
-    }
+environment = Environment' {_eVariables = Nothing}
 
--- | The key-value pairs that represent your environment's configuration settings. The value you specify cannot contain a ",".
+
+-- | The key-value pairs that represent your environment's configuration settings.
 eVariables :: Lens' Environment (Maybe (HashMap Text Text))
 eVariables = lens _eVariables (\ s a -> s{_eVariables = a}) . mapping (_Sensitive . _Map);
 
-instance Hashable Environment
+instance Hashable Environment where
 
-instance NFData Environment
+instance NFData Environment where
 
 instance ToJSON Environment where
         toJSON Environment'{..}
@@ -269,10 +270,11 @@
 --
 -- /See:/ 'environmentError' smart constructor.
 data EnvironmentError = EnvironmentError'
-    { _eeErrorCode :: !(Maybe Text)
-    , _eeMessage   :: !(Maybe (Sensitive Text))
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _eeErrorCode :: !(Maybe Text)
+  , _eeMessage   :: !(Maybe (Sensitive Text))
+  } deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'EnvironmentError' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -283,11 +285,9 @@
 environmentError
     :: EnvironmentError
 environmentError =
-    EnvironmentError'
-    { _eeErrorCode = Nothing
-    , _eeMessage = Nothing
-    }
+  EnvironmentError' {_eeErrorCode = Nothing, _eeMessage = Nothing}
 
+
 -- | The error code returned by the environment error object.
 eeErrorCode :: Lens' EnvironmentError (Maybe Text)
 eeErrorCode = lens _eeErrorCode (\ s a -> s{_eeErrorCode = a});
@@ -303,9 +303,9 @@
                  EnvironmentError' <$>
                    (x .:? "ErrorCode") <*> (x .:? "Message"))
 
-instance Hashable EnvironmentError
+instance Hashable EnvironmentError where
 
-instance NFData EnvironmentError
+instance NFData EnvironmentError where
 
 -- | The parent object returned that contains your environment's configuration settings or any error information associated with your configuration settings.
 --
@@ -313,10 +313,11 @@
 --
 -- /See:/ 'environmentResponse' smart constructor.
 data EnvironmentResponse = EnvironmentResponse'
-    { _envVariables :: !(Maybe (Sensitive (Map Text (Sensitive Text))))
-    , _envError     :: !(Maybe EnvironmentError)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _envVariables :: !(Maybe (Sensitive (Map Text (Sensitive Text))))
+  , _envError     :: !(Maybe EnvironmentError)
+  } deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'EnvironmentResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -327,11 +328,9 @@
 environmentResponse
     :: EnvironmentResponse
 environmentResponse =
-    EnvironmentResponse'
-    { _envVariables = Nothing
-    , _envError = Nothing
-    }
+  EnvironmentResponse' {_envVariables = Nothing, _envError = Nothing}
 
+
 -- | The key-value pairs returned that represent your environment's configuration settings or error information.
 envVariables :: Lens' EnvironmentResponse (Maybe (HashMap Text Text))
 envVariables = lens _envVariables (\ s a -> s{_envVariables = a}) . mapping (_Sensitive . _Map);
@@ -347,9 +346,9 @@
                  EnvironmentResponse' <$>
                    (x .:? "Variables" .!= mempty) <*> (x .:? "Error"))
 
-instance Hashable EnvironmentResponse
+instance Hashable EnvironmentResponse where
 
-instance NFData EnvironmentResponse
+instance NFData EnvironmentResponse where
 
 -- | Describes mapping between an Amazon Kinesis stream and a Lambda function.
 --
@@ -357,16 +356,17 @@
 --
 -- /See:/ 'eventSourceMappingConfiguration' smart constructor.
 data EventSourceMappingConfiguration = EventSourceMappingConfiguration'
-    { _esmcEventSourceARN        :: !(Maybe Text)
-    , _esmcState                 :: !(Maybe Text)
-    , _esmcFunctionARN           :: !(Maybe Text)
-    , _esmcUUId                  :: !(Maybe Text)
-    , _esmcLastProcessingResult  :: !(Maybe Text)
-    , _esmcBatchSize             :: !(Maybe Nat)
-    , _esmcStateTransitionReason :: !(Maybe Text)
-    , _esmcLastModified          :: !(Maybe POSIX)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _esmcEventSourceARN        :: !(Maybe Text)
+  , _esmcState                 :: !(Maybe Text)
+  , _esmcFunctionARN           :: !(Maybe Text)
+  , _esmcUUId                  :: !(Maybe Text)
+  , _esmcLastProcessingResult  :: !(Maybe Text)
+  , _esmcBatchSize             :: !(Maybe Nat)
+  , _esmcStateTransitionReason :: !(Maybe Text)
+  , _esmcLastModified          :: !(Maybe POSIX)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'EventSourceMappingConfiguration' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -389,17 +389,18 @@
 eventSourceMappingConfiguration
     :: EventSourceMappingConfiguration
 eventSourceMappingConfiguration =
-    EventSourceMappingConfiguration'
-    { _esmcEventSourceARN = Nothing
-    , _esmcState = Nothing
-    , _esmcFunctionARN = Nothing
-    , _esmcUUId = Nothing
-    , _esmcLastProcessingResult = Nothing
-    , _esmcBatchSize = Nothing
-    , _esmcStateTransitionReason = Nothing
-    , _esmcLastModified = Nothing
-    }
+  EventSourceMappingConfiguration'
+  { _esmcEventSourceARN = Nothing
+  , _esmcState = Nothing
+  , _esmcFunctionARN = Nothing
+  , _esmcUUId = Nothing
+  , _esmcLastProcessingResult = Nothing
+  , _esmcBatchSize = Nothing
+  , _esmcStateTransitionReason = Nothing
+  , _esmcLastModified = Nothing
+  }
 
+
 -- | The Amazon Resource Name (ARN) of the Amazon Kinesis stream that is the source of events.
 esmcEventSourceARN :: Lens' EventSourceMappingConfiguration (Maybe Text)
 esmcEventSourceARN = lens _esmcEventSourceARN (\ s a -> s{_esmcEventSourceARN = a});
@@ -447,8 +448,9 @@
                      <*> (x .:? "LastModified"))
 
 instance Hashable EventSourceMappingConfiguration
+         where
 
-instance NFData EventSourceMappingConfiguration
+instance NFData EventSourceMappingConfiguration where
 
 -- | The code for the Lambda function.
 --
@@ -456,12 +458,13 @@
 --
 -- /See:/ 'functionCode' smart constructor.
 data FunctionCode = FunctionCode'
-    { _fcS3ObjectVersion :: !(Maybe Text)
-    , _fcS3Key           :: !(Maybe Text)
-    , _fcZipFile         :: !(Maybe (Sensitive Base64))
-    , _fcS3Bucket        :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _fcS3ObjectVersion :: !(Maybe Text)
+  , _fcS3Key           :: !(Maybe Text)
+  , _fcZipFile         :: !(Maybe (Sensitive Base64))
+  , _fcS3Bucket        :: !(Maybe Text)
+  } deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'FunctionCode' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -470,19 +473,20 @@
 --
 -- * 'fcS3Key' - The Amazon S3 object (the deployment package) key name you want to upload.
 --
--- * 'fcZipFile' - The contents of your zip file containing your deployment package. If you are using the web API directly, the contents of the zip file must be base64-encoded. If you are using the AWS SDKs or the AWS CLI, the SDKs or CLI will do the encoding for you. For more information about creating a .zip file, go to <http://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html#lambda-intro-execution-role.html Execution Permissions> in the /AWS Lambda Developer Guide/ . -- /Note:/ This 'Lens' automatically encodes and decodes Base64 data. The underlying isomorphism will encode to Base64 representation during serialisation, and decode from Base64 representation during deserialisation. This 'Lens' accepts and returns only raw unencoded data.
+-- * 'fcZipFile' - The contents of your zip file containing your deployment package. If you are using the web API directly, the contents of the zip file must be base64-encoded. If you are using the AWS SDKs or the AWS CLI, the SDKs or CLI will do the encoding for you. For more information about creating a .zip file, see <http://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html#lambda-intro-execution-role.html Execution Permissions> in the /AWS Lambda Developer Guide/ . -- /Note:/ This 'Lens' automatically encodes and decodes Base64 data. The underlying isomorphism will encode to Base64 representation during serialisation, and decode from Base64 representation during deserialisation. This 'Lens' accepts and returns only raw unencoded data.
 --
 -- * 'fcS3Bucket' - Amazon S3 bucket name where the .zip file containing your deployment package is stored. This bucket must reside in the same AWS region where you are creating the Lambda function.
 functionCode
     :: FunctionCode
 functionCode =
-    FunctionCode'
-    { _fcS3ObjectVersion = Nothing
-    , _fcS3Key = Nothing
-    , _fcZipFile = Nothing
-    , _fcS3Bucket = Nothing
-    }
+  FunctionCode'
+  { _fcS3ObjectVersion = Nothing
+  , _fcS3Key = Nothing
+  , _fcZipFile = Nothing
+  , _fcS3Bucket = Nothing
+  }
 
+
 -- | The Amazon S3 object (the deployment package) version you want to upload.
 fcS3ObjectVersion :: Lens' FunctionCode (Maybe Text)
 fcS3ObjectVersion = lens _fcS3ObjectVersion (\ s a -> s{_fcS3ObjectVersion = a});
@@ -491,7 +495,7 @@
 fcS3Key :: Lens' FunctionCode (Maybe Text)
 fcS3Key = lens _fcS3Key (\ s a -> s{_fcS3Key = a});
 
--- | The contents of your zip file containing your deployment package. If you are using the web API directly, the contents of the zip file must be base64-encoded. If you are using the AWS SDKs or the AWS CLI, the SDKs or CLI will do the encoding for you. For more information about creating a .zip file, go to <http://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html#lambda-intro-execution-role.html Execution Permissions> in the /AWS Lambda Developer Guide/ . -- /Note:/ This 'Lens' automatically encodes and decodes Base64 data. The underlying isomorphism will encode to Base64 representation during serialisation, and decode from Base64 representation during deserialisation. This 'Lens' accepts and returns only raw unencoded data.
+-- | The contents of your zip file containing your deployment package. If you are using the web API directly, the contents of the zip file must be base64-encoded. If you are using the AWS SDKs or the AWS CLI, the SDKs or CLI will do the encoding for you. For more information about creating a .zip file, see <http://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html#lambda-intro-execution-role.html Execution Permissions> in the /AWS Lambda Developer Guide/ . -- /Note:/ This 'Lens' automatically encodes and decodes Base64 data. The underlying isomorphism will encode to Base64 representation during serialisation, and decode from Base64 representation during deserialisation. This 'Lens' accepts and returns only raw unencoded data.
 fcZipFile :: Lens' FunctionCode (Maybe ByteString)
 fcZipFile = lens _fcZipFile (\ s a -> s{_fcZipFile = a}) . mapping (_Sensitive . _Base64);
 
@@ -499,9 +503,9 @@
 fcS3Bucket :: Lens' FunctionCode (Maybe Text)
 fcS3Bucket = lens _fcS3Bucket (\ s a -> s{_fcS3Bucket = a});
 
-instance Hashable FunctionCode
+instance Hashable FunctionCode where
 
-instance NFData FunctionCode
+instance NFData FunctionCode where
 
 instance ToJSON FunctionCode where
         toJSON FunctionCode'{..}
@@ -518,10 +522,11 @@
 --
 -- /See:/ 'functionCodeLocation' smart constructor.
 data FunctionCodeLocation = FunctionCodeLocation'
-    { _fclLocation       :: !(Maybe Text)
-    , _fclRepositoryType :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _fclLocation       :: !(Maybe Text)
+  , _fclRepositoryType :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'FunctionCodeLocation' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -532,11 +537,9 @@
 functionCodeLocation
     :: FunctionCodeLocation
 functionCodeLocation =
-    FunctionCodeLocation'
-    { _fclLocation = Nothing
-    , _fclRepositoryType = Nothing
-    }
+  FunctionCodeLocation' {_fclLocation = Nothing, _fclRepositoryType = Nothing}
 
+
 -- | The presigned URL you can use to download the function's .zip file that you previously uploaded. The URL is valid for up to 10 minutes.
 fclLocation :: Lens' FunctionCodeLocation (Maybe Text)
 fclLocation = lens _fclLocation (\ s a -> s{_fclLocation = a});
@@ -552,9 +555,9 @@
                  FunctionCodeLocation' <$>
                    (x .:? "Location") <*> (x .:? "RepositoryType"))
 
-instance Hashable FunctionCodeLocation
+instance Hashable FunctionCodeLocation where
 
-instance NFData FunctionCodeLocation
+instance NFData FunctionCodeLocation where
 
 -- | A complex type that describes function metadata.
 --
@@ -562,31 +565,34 @@
 --
 -- /See:/ 'functionConfiguration' smart constructor.
 data FunctionConfiguration = FunctionConfiguration'
-    { _fcMemorySize       :: !(Maybe Nat)
-    , _fcRuntime          :: !(Maybe Runtime)
-    , _fcFunctionARN      :: !(Maybe Text)
-    , _fcKMSKeyARN        :: !(Maybe Text)
-    , _fcEnvironment      :: !(Maybe EnvironmentResponse)
-    , _fcDeadLetterConfig :: !(Maybe DeadLetterConfig)
-    , _fcRole             :: !(Maybe Text)
-    , _fcVPCConfig        :: !(Maybe VPCConfigResponse)
-    , _fcVersion          :: !(Maybe Text)
-    , _fcFunctionName     :: !(Maybe Text)
-    , _fcCodeSize         :: !(Maybe Integer)
-    , _fcHandler          :: !(Maybe Text)
-    , _fcTimeout          :: !(Maybe Nat)
-    , _fcLastModified     :: !(Maybe Text)
-    , _fcCodeSha256       :: !(Maybe Text)
-    , _fcDescription      :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _fcMemorySize       :: !(Maybe Nat)
+  , _fcRuntime          :: !(Maybe Runtime)
+  , _fcFunctionARN      :: !(Maybe Text)
+  , _fcKMSKeyARN        :: !(Maybe Text)
+  , _fcEnvironment      :: !(Maybe EnvironmentResponse)
+  , _fcDeadLetterConfig :: !(Maybe DeadLetterConfig)
+  , _fcRole             :: !(Maybe Text)
+  , _fcVPCConfig        :: !(Maybe VPCConfigResponse)
+  , _fcVersion          :: !(Maybe Text)
+  , _fcFunctionName     :: !(Maybe Text)
+  , _fcCodeSize         :: !(Maybe Integer)
+  , _fcHandler          :: !(Maybe Text)
+  , _fcTimeout          :: !(Maybe Nat)
+  , _fcLastModified     :: !(Maybe Text)
+  , _fcCodeSha256       :: !(Maybe Text)
+  , _fcTracingConfig    :: !(Maybe TracingConfigResponse)
+  , _fcDescription      :: !(Maybe Text)
+  , _fcMasterARN        :: !(Maybe Text)
+  } deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'FunctionConfiguration' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'fcMemorySize' - The memory size, in MB, you configured for the function. Must be a multiple of 64 MB.
 --
--- * 'fcRuntime' - The runtime environment for the Lambda function. To use the Node.js runtime v4.3, set the value to "nodejs4.3". To use earlier runtime (v0.10.42), set the value to "nodejs".
+-- * 'fcRuntime' - The runtime environment for the Lambda function.
 --
 -- * 'fcFunctionARN' - The Amazon Resource Name (ARN) assigned to the function.
 --
@@ -602,7 +608,7 @@
 --
 -- * 'fcVersion' - The version of the Lambda function.
 --
--- * 'fcFunctionName' - The name of the function.
+-- * 'fcFunctionName' - The name of the function. Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 --
 -- * 'fcCodeSize' - The size, in bytes, of the function .zip file you uploaded.
 --
@@ -610,38 +616,45 @@
 --
 -- * 'fcTimeout' - The function execution time at which Lambda should terminate the function. Because the execution time has cost implications, we recommend you set this value based on your expected execution time. The default is 3 seconds.
 --
--- * 'fcLastModified' - The time stamp of the last time you updated the function.
+-- * 'fcLastModified' - The time stamp of the last time you updated the function. The time stamp is conveyed as a string complying with ISO-8601 in this way YYYY-MM-DDThh:mm:ssTZD (e.g., 1997-07-16T19:20:30+01:00). For more information, see <https://www.w3.org/TR/NOTE-datetime Date and Time Formats> .
 --
 -- * 'fcCodeSha256' - It is the SHA256 hash of your function deployment package.
 --
+-- * 'fcTracingConfig' - The parent object that contains your function's tracing settings.
+--
 -- * 'fcDescription' - The user-provided description.
+--
+-- * 'fcMasterARN' - Returns the ARN (Amazon Resource Name) of the master function.
 functionConfiguration
     :: FunctionConfiguration
 functionConfiguration =
-    FunctionConfiguration'
-    { _fcMemorySize = Nothing
-    , _fcRuntime = Nothing
-    , _fcFunctionARN = Nothing
-    , _fcKMSKeyARN = Nothing
-    , _fcEnvironment = Nothing
-    , _fcDeadLetterConfig = Nothing
-    , _fcRole = Nothing
-    , _fcVPCConfig = Nothing
-    , _fcVersion = Nothing
-    , _fcFunctionName = Nothing
-    , _fcCodeSize = Nothing
-    , _fcHandler = Nothing
-    , _fcTimeout = Nothing
-    , _fcLastModified = Nothing
-    , _fcCodeSha256 = Nothing
-    , _fcDescription = Nothing
-    }
+  FunctionConfiguration'
+  { _fcMemorySize = Nothing
+  , _fcRuntime = Nothing
+  , _fcFunctionARN = Nothing
+  , _fcKMSKeyARN = Nothing
+  , _fcEnvironment = Nothing
+  , _fcDeadLetterConfig = Nothing
+  , _fcRole = Nothing
+  , _fcVPCConfig = Nothing
+  , _fcVersion = Nothing
+  , _fcFunctionName = Nothing
+  , _fcCodeSize = Nothing
+  , _fcHandler = Nothing
+  , _fcTimeout = Nothing
+  , _fcLastModified = Nothing
+  , _fcCodeSha256 = Nothing
+  , _fcTracingConfig = Nothing
+  , _fcDescription = Nothing
+  , _fcMasterARN = Nothing
+  }
 
+
 -- | The memory size, in MB, you configured for the function. Must be a multiple of 64 MB.
 fcMemorySize :: Lens' FunctionConfiguration (Maybe Natural)
 fcMemorySize = lens _fcMemorySize (\ s a -> s{_fcMemorySize = a}) . mapping _Nat;
 
--- | The runtime environment for the Lambda function. To use the Node.js runtime v4.3, set the value to "nodejs4.3". To use earlier runtime (v0.10.42), set the value to "nodejs".
+-- | The runtime environment for the Lambda function.
 fcRuntime :: Lens' FunctionConfiguration (Maybe Runtime)
 fcRuntime = lens _fcRuntime (\ s a -> s{_fcRuntime = a});
 
@@ -673,7 +686,7 @@
 fcVersion :: Lens' FunctionConfiguration (Maybe Text)
 fcVersion = lens _fcVersion (\ s a -> s{_fcVersion = a});
 
--- | The name of the function.
+-- | The name of the function. Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 fcFunctionName :: Lens' FunctionConfiguration (Maybe Text)
 fcFunctionName = lens _fcFunctionName (\ s a -> s{_fcFunctionName = a});
 
@@ -689,7 +702,7 @@
 fcTimeout :: Lens' FunctionConfiguration (Maybe Natural)
 fcTimeout = lens _fcTimeout (\ s a -> s{_fcTimeout = a}) . mapping _Nat;
 
--- | The time stamp of the last time you updated the function.
+-- | The time stamp of the last time you updated the function. The time stamp is conveyed as a string complying with ISO-8601 in this way YYYY-MM-DDThh:mm:ssTZD (e.g., 1997-07-16T19:20:30+01:00). For more information, see <https://www.w3.org/TR/NOTE-datetime Date and Time Formats> .
 fcLastModified :: Lens' FunctionConfiguration (Maybe Text)
 fcLastModified = lens _fcLastModified (\ s a -> s{_fcLastModified = a});
 
@@ -697,10 +710,18 @@
 fcCodeSha256 :: Lens' FunctionConfiguration (Maybe Text)
 fcCodeSha256 = lens _fcCodeSha256 (\ s a -> s{_fcCodeSha256 = a});
 
+-- | The parent object that contains your function's tracing settings.
+fcTracingConfig :: Lens' FunctionConfiguration (Maybe TracingConfigResponse)
+fcTracingConfig = lens _fcTracingConfig (\ s a -> s{_fcTracingConfig = a});
+
 -- | The user-provided description.
 fcDescription :: Lens' FunctionConfiguration (Maybe Text)
 fcDescription = lens _fcDescription (\ s a -> s{_fcDescription = a});
 
+-- | Returns the ARN (Amazon Resource Name) of the master function.
+fcMasterARN :: Lens' FunctionConfiguration (Maybe Text)
+fcMasterARN = lens _fcMasterARN (\ s a -> s{_fcMasterARN = a});
+
 instance FromJSON FunctionConfiguration where
         parseJSON
           = withObject "FunctionConfiguration"
@@ -720,22 +741,90 @@
                      <*> (x .:? "Timeout")
                      <*> (x .:? "LastModified")
                      <*> (x .:? "CodeSha256")
-                     <*> (x .:? "Description"))
+                     <*> (x .:? "TracingConfig")
+                     <*> (x .:? "Description")
+                     <*> (x .:? "MasterArn"))
 
-instance Hashable FunctionConfiguration
+instance Hashable FunctionConfiguration where
 
-instance NFData FunctionConfiguration
+instance NFData FunctionConfiguration where
 
+-- | The parent object that contains your function's tracing settings.
+--
+--
+--
+-- /See:/ 'tracingConfig' smart constructor.
+newtype TracingConfig = TracingConfig'
+  { _tMode :: Maybe TracingMode
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'TracingConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tMode' - Can be either PassThrough or Active. If PassThrough, Lambda will only trace the request from an upstream service if it contains a tracing header with "sampled=1". If Active, Lambda will respect any tracing header it receives from an upstream service. If no tracing header is received, Lambda will call X-Ray for a tracing decision.
+tracingConfig
+    :: TracingConfig
+tracingConfig = TracingConfig' {_tMode = Nothing}
+
+
+-- | Can be either PassThrough or Active. If PassThrough, Lambda will only trace the request from an upstream service if it contains a tracing header with "sampled=1". If Active, Lambda will respect any tracing header it receives from an upstream service. If no tracing header is received, Lambda will call X-Ray for a tracing decision.
+tMode :: Lens' TracingConfig (Maybe TracingMode)
+tMode = lens _tMode (\ s a -> s{_tMode = a});
+
+instance Hashable TracingConfig where
+
+instance NFData TracingConfig where
+
+instance ToJSON TracingConfig where
+        toJSON TracingConfig'{..}
+          = object (catMaybes [("Mode" .=) <$> _tMode])
+
+-- | Parent object of the tracing information associated with your Lambda function.
+--
+--
+--
+-- /See:/ 'tracingConfigResponse' smart constructor.
+newtype TracingConfigResponse = TracingConfigResponse'
+  { _tcMode :: Maybe TracingMode
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'TracingConfigResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tcMode' - The tracing mode associated with your Lambda function.
+tracingConfigResponse
+    :: TracingConfigResponse
+tracingConfigResponse = TracingConfigResponse' {_tcMode = Nothing}
+
+
+-- | The tracing mode associated with your Lambda function.
+tcMode :: Lens' TracingConfigResponse (Maybe TracingMode)
+tcMode = lens _tcMode (\ s a -> s{_tcMode = a});
+
+instance FromJSON TracingConfigResponse where
+        parseJSON
+          = withObject "TracingConfigResponse"
+              (\ x -> TracingConfigResponse' <$> (x .:? "Mode"))
+
+instance Hashable TracingConfigResponse where
+
+instance NFData TracingConfigResponse where
+
 -- | If your Lambda function accesses resources in a VPC, you provide this parameter identifying the list of security group IDs and subnet IDs. These must belong to the same VPC. You must provide at least one security group and one subnet ID.
 --
 --
 --
 -- /See:/ 'vpcConfig' smart constructor.
 data VPCConfig = VPCConfig'
-    { _vpccSecurityGroupIds :: !(Maybe [Text])
-    , _vpccSubnetIds        :: !(Maybe [Text])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _vpccSecurityGroupIds :: !(Maybe [Text])
+  , _vpccSubnetIds        :: !(Maybe [Text])
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'VPCConfig' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -746,11 +835,9 @@
 vpcConfig
     :: VPCConfig
 vpcConfig =
-    VPCConfig'
-    { _vpccSecurityGroupIds = Nothing
-    , _vpccSubnetIds = Nothing
-    }
+  VPCConfig' {_vpccSecurityGroupIds = Nothing, _vpccSubnetIds = Nothing}
 
+
 -- | A list of one or more security groups IDs in your VPC.
 vpccSecurityGroupIds :: Lens' VPCConfig [Text]
 vpccSecurityGroupIds = lens _vpccSecurityGroupIds (\ s a -> s{_vpccSecurityGroupIds = a}) . _Default . _Coerce;
@@ -759,9 +846,9 @@
 vpccSubnetIds :: Lens' VPCConfig [Text]
 vpccSubnetIds = lens _vpccSubnetIds (\ s a -> s{_vpccSubnetIds = a}) . _Default . _Coerce;
 
-instance Hashable VPCConfig
+instance Hashable VPCConfig where
 
-instance NFData VPCConfig
+instance NFData VPCConfig where
 
 instance ToJSON VPCConfig where
         toJSON VPCConfig'{..}
@@ -776,11 +863,12 @@
 --
 -- /See:/ 'vpcConfigResponse' smart constructor.
 data VPCConfigResponse = VPCConfigResponse'
-    { _vcSecurityGroupIds :: !(Maybe [Text])
-    , _vcSubnetIds        :: !(Maybe [Text])
-    , _vcVPCId            :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _vcSecurityGroupIds :: !(Maybe [Text])
+  , _vcSubnetIds        :: !(Maybe [Text])
+  , _vcVPCId            :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'VPCConfigResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -793,12 +881,10 @@
 vpcConfigResponse
     :: VPCConfigResponse
 vpcConfigResponse =
-    VPCConfigResponse'
-    { _vcSecurityGroupIds = Nothing
-    , _vcSubnetIds = Nothing
-    , _vcVPCId = Nothing
-    }
+  VPCConfigResponse'
+  {_vcSecurityGroupIds = Nothing, _vcSubnetIds = Nothing, _vcVPCId = Nothing}
 
+
 -- | A list of security group IDs associated with the Lambda function.
 vcSecurityGroupIds :: Lens' VPCConfigResponse [Text]
 vcSecurityGroupIds = lens _vcSecurityGroupIds (\ s a -> s{_vcSecurityGroupIds = a}) . _Default . _Coerce;
@@ -820,6 +906,6 @@
                      (x .:? "SubnetIds" .!= mempty)
                      <*> (x .:? "VpcId"))
 
-instance Hashable VPCConfigResponse
+instance Hashable VPCConfigResponse where
 
-instance NFData VPCConfigResponse
+instance NFData VPCConfigResponse where
diff --git a/gen/Network/AWS/Lambda/Types/Sum.hs b/gen/Network/AWS/Lambda/Types/Sum.hs
--- a/gen/Network/AWS/Lambda/Types/Sum.hs
+++ b/gen/Network/AWS/Lambda/Types/Sum.hs
@@ -9,22 +9,23 @@
 
 -- |
 -- Module      : Network.AWS.Lambda.Types.Sum
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 module Network.AWS.Lambda.Types.Sum where
 
-import           Network.AWS.Prelude
+import Network.AWS.Prelude
 
 data EventSourcePosition
-    = AtTimestamp
-    | Latest
-    | TrimHorizon
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = AtTimestamp
+  | Latest
+  | TrimHorizon
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText EventSourcePosition where
     parser = takeLowerText >>= \case
         "at_timestamp" -> pure AtTimestamp
@@ -48,12 +49,37 @@
 instance ToJSON EventSourcePosition where
     toJSON = toJSONText
 
+data FunctionVersion =
+  All
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
+
+instance FromText FunctionVersion where
+    parser = takeLowerText >>= \case
+        "all" -> pure All
+        e -> fromTextError $ "Failure parsing FunctionVersion from value: '" <> e
+           <> "'. Accepted values: all"
+
+instance ToText FunctionVersion where
+    toText = \case
+        All -> "ALL"
+
+instance Hashable     FunctionVersion
+instance NFData       FunctionVersion
+instance ToByteString FunctionVersion
+instance ToQuery      FunctionVersion
+instance ToHeader     FunctionVersion
+
+instance ToJSON FunctionVersion where
+    toJSON = toJSONText
+
 data InvocationType
-    = DryRun
-    | Event
-    | RequestResponse
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = DryRun
+  | Event
+  | RequestResponse
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText InvocationType where
     parser = takeLowerText >>= \case
         "dryrun" -> pure DryRun
@@ -78,10 +104,11 @@
     toJSON = toJSONText
 
 data LogType
-    = None
-    | Tail
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = None
+  | Tail
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText LogType where
     parser = takeLowerText >>= \case
         "none" -> pure None
@@ -104,24 +131,29 @@
     toJSON = toJSONText
 
 data Runtime
-    = DOTNETCORE1_0
-    | JAVA8
-    | NODEJS4_3
-    | NODEJS4_3Edge
-    | Nodejs
-    | PYTHON2_7
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = DOTNETCORE1_0
+  | JAVA8
+  | NODEJS4_3
+  | NODEJS4_3Edge
+  | NODEJS6_10
+  | Nodejs
+  | PYTHON2_7
+  | PYTHON3_6
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText Runtime where
     parser = takeLowerText >>= \case
         "dotnetcore1.0" -> pure DOTNETCORE1_0
         "java8" -> pure JAVA8
         "nodejs4.3" -> pure NODEJS4_3
         "nodejs4.3-edge" -> pure NODEJS4_3Edge
+        "nodejs6.10" -> pure NODEJS6_10
         "nodejs" -> pure Nodejs
         "python2.7" -> pure PYTHON2_7
+        "python3.6" -> pure PYTHON3_6
         e -> fromTextError $ "Failure parsing Runtime from value: '" <> e
-           <> "'. Accepted values: dotnetcore1.0, java8, nodejs4.3, nodejs4.3-edge, nodejs, python2.7"
+           <> "'. Accepted values: dotnetcore1.0, java8, nodejs4.3, nodejs4.3-edge, nodejs6.10, nodejs, python2.7, python3.6"
 
 instance ToText Runtime where
     toText = \case
@@ -129,8 +161,10 @@
         JAVA8 -> "java8"
         NODEJS4_3 -> "nodejs4.3"
         NODEJS4_3Edge -> "nodejs4.3-edge"
+        NODEJS6_10 -> "nodejs6.10"
         Nodejs -> "nodejs"
         PYTHON2_7 -> "python2.7"
+        PYTHON3_6 -> "python3.6"
 
 instance Hashable     Runtime
 instance NFData       Runtime
@@ -143,3 +177,33 @@
 
 instance FromJSON Runtime where
     parseJSON = parseJSONText "Runtime"
+
+data TracingMode
+  = Active
+  | PassThrough
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
+
+instance FromText TracingMode where
+    parser = takeLowerText >>= \case
+        "active" -> pure Active
+        "passthrough" -> pure PassThrough
+        e -> fromTextError $ "Failure parsing TracingMode from value: '" <> e
+           <> "'. Accepted values: active, passthrough"
+
+instance ToText TracingMode where
+    toText = \case
+        Active -> "Active"
+        PassThrough -> "PassThrough"
+
+instance Hashable     TracingMode
+instance NFData       TracingMode
+instance ToByteString TracingMode
+instance ToQuery      TracingMode
+instance ToHeader     TracingMode
+
+instance ToJSON TracingMode where
+    toJSON = toJSONText
+
+instance FromJSON TracingMode where
+    parseJSON = parseJSONText "TracingMode"
diff --git a/gen/Network/AWS/Lambda/UntagResource.hs b/gen/Network/AWS/Lambda/UntagResource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Lambda/UntagResource.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.Lambda.UntagResource
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes tags from a Lambda function. Requires the function ARN (Amazon Resource Name).
+--
+--
+module Network.AWS.Lambda.UntagResource
+    (
+    -- * Creating a Request
+      untagResource
+    , UntagResource
+    -- * Request Lenses
+    , urResource
+    , urTagKeys
+
+    -- * Destructuring the Response
+    , untagResourceResponse
+    , UntagResourceResponse
+    ) where
+
+import Network.AWS.Lambda.Types
+import Network.AWS.Lambda.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+
+-- | /See:/ 'untagResource' smart constructor.
+data UntagResource = UntagResource'
+  { _urResource :: !Text
+  , _urTagKeys  :: ![Text]
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UntagResource' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'urResource' - The ARN (Amazon Resource Name) of the function.
+--
+-- * 'urTagKeys' - The list of tag keys to be deleted from the function.
+untagResource
+    :: Text -- ^ 'urResource'
+    -> UntagResource
+untagResource pResource_ =
+  UntagResource' {_urResource = pResource_, _urTagKeys = mempty}
+
+
+-- | The ARN (Amazon Resource Name) of the function.
+urResource :: Lens' UntagResource Text
+urResource = lens _urResource (\ s a -> s{_urResource = a});
+
+-- | The list of tag keys to be deleted from the function.
+urTagKeys :: Lens' UntagResource [Text]
+urTagKeys = lens _urTagKeys (\ s a -> s{_urTagKeys = a}) . _Coerce;
+
+instance AWSRequest UntagResource where
+        type Rs UntagResource = UntagResourceResponse
+        request = delete lambda
+        response = receiveNull UntagResourceResponse'
+
+instance Hashable UntagResource where
+
+instance NFData UntagResource where
+
+instance ToHeaders UntagResource where
+        toHeaders = const mempty
+
+instance ToPath UntagResource where
+        toPath UntagResource'{..}
+          = mconcat ["/2017-03-31/tags/", toBS _urResource]
+
+instance ToQuery UntagResource where
+        toQuery UntagResource'{..}
+          = mconcat
+              ["tagKeys" =: toQueryList "member" _urTagKeys]
+
+-- | /See:/ 'untagResourceResponse' smart constructor.
+data UntagResourceResponse =
+  UntagResourceResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UntagResourceResponse' with the minimum fields required to make a request.
+--
+untagResourceResponse
+    :: UntagResourceResponse
+untagResourceResponse = UntagResourceResponse'
+
+
+instance NFData UntagResourceResponse where
diff --git a/gen/Network/AWS/Lambda/UpdateAlias.hs b/gen/Network/AWS/Lambda/UpdateAlias.hs
--- a/gen/Network/AWS/Lambda/UpdateAlias.hs
+++ b/gen/Network/AWS/Lambda/UpdateAlias.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.Lambda.UpdateAlias
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -44,21 +44,22 @@
     , acDescription
     ) where
 
-import           Network.AWS.Lambda.Types
-import           Network.AWS.Lambda.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lambda.Types
+import Network.AWS.Lambda.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- | /See:/ 'updateAlias' smart constructor.
 data UpdateAlias = UpdateAlias'
-    { _uaFunctionVersion :: !(Maybe Text)
-    , _uaDescription     :: !(Maybe Text)
-    , _uaFunctionName    :: !Text
-    , _uaName            :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _uaFunctionVersion :: !(Maybe Text)
+  , _uaDescription     :: !(Maybe Text)
+  , _uaFunctionName    :: !Text
+  , _uaName            :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateAlias' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -67,7 +68,7 @@
 --
 -- * 'uaDescription' - You can change the description of the alias using this parameter.
 --
--- * 'uaFunctionName' - The function name for which the alias is created.
+-- * 'uaFunctionName' - The function name for which the alias is created. Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 --
 -- * 'uaName' - The alias name.
 updateAlias
@@ -75,13 +76,14 @@
     -> Text -- ^ 'uaName'
     -> UpdateAlias
 updateAlias pFunctionName_ pName_ =
-    UpdateAlias'
-    { _uaFunctionVersion = Nothing
-    , _uaDescription = Nothing
-    , _uaFunctionName = pFunctionName_
-    , _uaName = pName_
-    }
+  UpdateAlias'
+  { _uaFunctionVersion = Nothing
+  , _uaDescription = Nothing
+  , _uaFunctionName = pFunctionName_
+  , _uaName = pName_
+  }
 
+
 -- | Using this parameter you can change the Lambda function version to which the alias points.
 uaFunctionVersion :: Lens' UpdateAlias (Maybe Text)
 uaFunctionVersion = lens _uaFunctionVersion (\ s a -> s{_uaFunctionVersion = a});
@@ -90,7 +92,7 @@
 uaDescription :: Lens' UpdateAlias (Maybe Text)
 uaDescription = lens _uaDescription (\ s a -> s{_uaDescription = a});
 
--- | The function name for which the alias is created.
+-- | The function name for which the alias is created. Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 uaFunctionName :: Lens' UpdateAlias Text
 uaFunctionName = lens _uaFunctionName (\ s a -> s{_uaFunctionName = a});
 
@@ -103,9 +105,9 @@
         request = putJSON lambda
         response = receiveJSON (\ s h x -> eitherParseJSON x)
 
-instance Hashable UpdateAlias
+instance Hashable UpdateAlias where
 
-instance NFData UpdateAlias
+instance NFData UpdateAlias where
 
 instance ToHeaders UpdateAlias where
         toHeaders = const mempty
diff --git a/gen/Network/AWS/Lambda/UpdateEventSourceMapping.hs b/gen/Network/AWS/Lambda/UpdateEventSourceMapping.hs
--- a/gen/Network/AWS/Lambda/UpdateEventSourceMapping.hs
+++ b/gen/Network/AWS/Lambda/UpdateEventSourceMapping.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.Lambda.UpdateEventSourceMapping
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -52,12 +52,12 @@
     , esmcLastModified
     ) where
 
-import           Network.AWS.Lambda.Types
-import           Network.AWS.Lambda.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lambda.Types
+import Network.AWS.Lambda.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- |
 --
@@ -65,12 +65,13 @@
 --
 -- /See:/ 'updateEventSourceMapping' smart constructor.
 data UpdateEventSourceMapping = UpdateEventSourceMapping'
-    { _uesmEnabled      :: !(Maybe Bool)
-    , _uesmBatchSize    :: !(Maybe Nat)
-    , _uesmFunctionName :: !(Maybe Text)
-    , _uesmUUId         :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _uesmEnabled      :: !(Maybe Bool)
+  , _uesmBatchSize    :: !(Maybe Nat)
+  , _uesmFunctionName :: !(Maybe Text)
+  , _uesmUUId         :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateEventSourceMapping' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -79,20 +80,21 @@
 --
 -- * 'uesmBatchSize' - The maximum number of stream records that can be sent to your Lambda function for a single invocation.
 --
--- * 'uesmFunctionName' - The Lambda function to which you want the stream records sent. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ).  If you are using versioning, you can also provide a qualified function ARN (ARN that is qualified with function version or alias name as suffix). For more information about versioning, see <http://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html AWS Lambda Function Versioning and Aliases>  Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length.
+-- * 'uesmFunctionName' - The Lambda function to which you want the stream records sent. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.  If you are using versioning, you can also provide a qualified function ARN (ARN that is qualified with function version or alias name as suffix). For more information about versioning, see <http://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html AWS Lambda Function Versioning and Aliases>  Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length.
 --
 -- * 'uesmUUId' - The event source mapping identifier.
 updateEventSourceMapping
     :: Text -- ^ 'uesmUUId'
     -> UpdateEventSourceMapping
 updateEventSourceMapping pUUId_ =
-    UpdateEventSourceMapping'
-    { _uesmEnabled = Nothing
-    , _uesmBatchSize = Nothing
-    , _uesmFunctionName = Nothing
-    , _uesmUUId = pUUId_
-    }
+  UpdateEventSourceMapping'
+  { _uesmEnabled = Nothing
+  , _uesmBatchSize = Nothing
+  , _uesmFunctionName = Nothing
+  , _uesmUUId = pUUId_
+  }
 
+
 -- | Specifies whether AWS Lambda should actively poll the stream or not. If disabled, AWS Lambda will not poll the stream.
 uesmEnabled :: Lens' UpdateEventSourceMapping (Maybe Bool)
 uesmEnabled = lens _uesmEnabled (\ s a -> s{_uesmEnabled = a});
@@ -101,7 +103,7 @@
 uesmBatchSize :: Lens' UpdateEventSourceMapping (Maybe Natural)
 uesmBatchSize = lens _uesmBatchSize (\ s a -> s{_uesmBatchSize = a}) . mapping _Nat;
 
--- | The Lambda function to which you want the stream records sent. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ).  If you are using versioning, you can also provide a qualified function ARN (ARN that is qualified with function version or alias name as suffix). For more information about versioning, see <http://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html AWS Lambda Function Versioning and Aliases>  Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length.
+-- | The Lambda function to which you want the stream records sent. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.  If you are using versioning, you can also provide a qualified function ARN (ARN that is qualified with function version or alias name as suffix). For more information about versioning, see <http://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html AWS Lambda Function Versioning and Aliases>  Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length.
 uesmFunctionName :: Lens' UpdateEventSourceMapping (Maybe Text)
 uesmFunctionName = lens _uesmFunctionName (\ s a -> s{_uesmFunctionName = a});
 
@@ -115,9 +117,9 @@
         request = putJSON lambda
         response = receiveJSON (\ s h x -> eitherParseJSON x)
 
-instance Hashable UpdateEventSourceMapping
+instance Hashable UpdateEventSourceMapping where
 
-instance NFData UpdateEventSourceMapping
+instance NFData UpdateEventSourceMapping where
 
 instance ToHeaders UpdateEventSourceMapping where
         toHeaders = const mempty
diff --git a/gen/Network/AWS/Lambda/UpdateFunctionCode.hs b/gen/Network/AWS/Lambda/UpdateFunctionCode.hs
--- a/gen/Network/AWS/Lambda/UpdateFunctionCode.hs
+++ b/gen/Network/AWS/Lambda/UpdateFunctionCode.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.Lambda.UpdateFunctionCode
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -35,6 +35,7 @@
     , uS3Key
     , uZipFile
     , uS3Bucket
+    , uDryRun
     , uPublish
     , uFunctionName
 
@@ -57,15 +58,17 @@
     , fcTimeout
     , fcLastModified
     , fcCodeSha256
+    , fcTracingConfig
     , fcDescription
+    , fcMasterARN
     ) where
 
-import           Network.AWS.Lambda.Types
-import           Network.AWS.Lambda.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lambda.Types
+import Network.AWS.Lambda.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- |
 --
@@ -73,14 +76,16 @@
 --
 -- /See:/ 'updateFunctionCode' smart constructor.
 data UpdateFunctionCode = UpdateFunctionCode'
-    { _uS3ObjectVersion :: !(Maybe Text)
-    , _uS3Key           :: !(Maybe Text)
-    , _uZipFile         :: !(Maybe (Sensitive Base64))
-    , _uS3Bucket        :: !(Maybe Text)
-    , _uPublish         :: !(Maybe Bool)
-    , _uFunctionName    :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _uS3ObjectVersion :: !(Maybe Text)
+  , _uS3Key           :: !(Maybe Text)
+  , _uZipFile         :: !(Maybe (Sensitive Base64))
+  , _uS3Bucket        :: !(Maybe Text)
+  , _uDryRun          :: !(Maybe Bool)
+  , _uPublish         :: !(Maybe Bool)
+  , _uFunctionName    :: !Text
+  } deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateFunctionCode' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -89,26 +94,30 @@
 --
 -- * 'uS3Key' - The Amazon S3 object (the deployment package) key name you want to upload.
 --
--- * 'uZipFile' - The contents of your zip file containing your deployment package. If you are using the web API directly, the contents of the zip file must be base64-encoded. If you are using the AWS SDKs or the AWS CLI, the SDKs or CLI will do the encoding for you. For more information about creating a .zip file, go to <http://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html#lambda-intro-execution-role.html Execution Permissions> in the /AWS Lambda Developer Guide/ . -- /Note:/ This 'Lens' automatically encodes and decodes Base64 data. The underlying isomorphism will encode to Base64 representation during serialisation, and decode from Base64 representation during deserialisation. This 'Lens' accepts and returns only raw unencoded data.
+-- * 'uZipFile' - The contents of your zip file containing your deployment package. If you are using the web API directly, the contents of the zip file must be base64-encoded. If you are using the AWS SDKs or the AWS CLI, the SDKs or CLI will do the encoding for you. For more information about creating a .zip file, see <http://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html#lambda-intro-execution-role.html Execution Permissions> in the /AWS Lambda Developer Guide/ . -- /Note:/ This 'Lens' automatically encodes and decodes Base64 data. The underlying isomorphism will encode to Base64 representation during serialisation, and decode from Base64 representation during deserialisation. This 'Lens' accepts and returns only raw unencoded data.
 --
--- * 'uS3Bucket' - Amazon S3 bucket name where the .zip file containing your deployment package is stored. This bucket must reside in the same AWS region where you are creating the Lambda function.
+-- * 'uS3Bucket' - Amazon S3 bucket name where the .zip file containing your deployment package is stored. This bucket must reside in the same AWS Region where you are creating the Lambda function.
 --
+-- * 'uDryRun' - This boolean parameter can be used to test your request to AWS Lambda to update the Lambda function and publish a version as an atomic operation. It will do all necessary computation and validation of your code but will not upload it or a publish a version. Each time this operation is invoked, the @CodeSha256@ hash value the provided code will also be computed and returned in the response.
+--
 -- * 'uPublish' - This boolean parameter can be used to request AWS Lambda to update the Lambda function and publish a version as an atomic operation.
 --
--- * 'uFunctionName' - The existing Lambda function name whose code you want to replace. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length.
+-- * 'uFunctionName' - The existing Lambda function name whose code you want to replace. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 updateFunctionCode
     :: Text -- ^ 'uFunctionName'
     -> UpdateFunctionCode
 updateFunctionCode pFunctionName_ =
-    UpdateFunctionCode'
-    { _uS3ObjectVersion = Nothing
-    , _uS3Key = Nothing
-    , _uZipFile = Nothing
-    , _uS3Bucket = Nothing
-    , _uPublish = Nothing
-    , _uFunctionName = pFunctionName_
-    }
+  UpdateFunctionCode'
+  { _uS3ObjectVersion = Nothing
+  , _uS3Key = Nothing
+  , _uZipFile = Nothing
+  , _uS3Bucket = Nothing
+  , _uDryRun = Nothing
+  , _uPublish = Nothing
+  , _uFunctionName = pFunctionName_
+  }
 
+
 -- | The Amazon S3 object (the deployment package) version you want to upload.
 uS3ObjectVersion :: Lens' UpdateFunctionCode (Maybe Text)
 uS3ObjectVersion = lens _uS3ObjectVersion (\ s a -> s{_uS3ObjectVersion = a});
@@ -117,19 +126,23 @@
 uS3Key :: Lens' UpdateFunctionCode (Maybe Text)
 uS3Key = lens _uS3Key (\ s a -> s{_uS3Key = a});
 
--- | The contents of your zip file containing your deployment package. If you are using the web API directly, the contents of the zip file must be base64-encoded. If you are using the AWS SDKs or the AWS CLI, the SDKs or CLI will do the encoding for you. For more information about creating a .zip file, go to <http://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html#lambda-intro-execution-role.html Execution Permissions> in the /AWS Lambda Developer Guide/ . -- /Note:/ This 'Lens' automatically encodes and decodes Base64 data. The underlying isomorphism will encode to Base64 representation during serialisation, and decode from Base64 representation during deserialisation. This 'Lens' accepts and returns only raw unencoded data.
+-- | The contents of your zip file containing your deployment package. If you are using the web API directly, the contents of the zip file must be base64-encoded. If you are using the AWS SDKs or the AWS CLI, the SDKs or CLI will do the encoding for you. For more information about creating a .zip file, see <http://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html#lambda-intro-execution-role.html Execution Permissions> in the /AWS Lambda Developer Guide/ . -- /Note:/ This 'Lens' automatically encodes and decodes Base64 data. The underlying isomorphism will encode to Base64 representation during serialisation, and decode from Base64 representation during deserialisation. This 'Lens' accepts and returns only raw unencoded data.
 uZipFile :: Lens' UpdateFunctionCode (Maybe ByteString)
 uZipFile = lens _uZipFile (\ s a -> s{_uZipFile = a}) . mapping (_Sensitive . _Base64);
 
--- | Amazon S3 bucket name where the .zip file containing your deployment package is stored. This bucket must reside in the same AWS region where you are creating the Lambda function.
+-- | Amazon S3 bucket name where the .zip file containing your deployment package is stored. This bucket must reside in the same AWS Region where you are creating the Lambda function.
 uS3Bucket :: Lens' UpdateFunctionCode (Maybe Text)
 uS3Bucket = lens _uS3Bucket (\ s a -> s{_uS3Bucket = a});
 
+-- | This boolean parameter can be used to test your request to AWS Lambda to update the Lambda function and publish a version as an atomic operation. It will do all necessary computation and validation of your code but will not upload it or a publish a version. Each time this operation is invoked, the @CodeSha256@ hash value the provided code will also be computed and returned in the response.
+uDryRun :: Lens' UpdateFunctionCode (Maybe Bool)
+uDryRun = lens _uDryRun (\ s a -> s{_uDryRun = a});
+
 -- | This boolean parameter can be used to request AWS Lambda to update the Lambda function and publish a version as an atomic operation.
 uPublish :: Lens' UpdateFunctionCode (Maybe Bool)
 uPublish = lens _uPublish (\ s a -> s{_uPublish = a});
 
--- | The existing Lambda function name whose code you want to replace. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length.
+-- | The existing Lambda function name whose code you want to replace. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.
 uFunctionName :: Lens' UpdateFunctionCode Text
 uFunctionName = lens _uFunctionName (\ s a -> s{_uFunctionName = a});
 
@@ -138,9 +151,9 @@
         request = putJSON lambda
         response = receiveJSON (\ s h x -> eitherParseJSON x)
 
-instance Hashable UpdateFunctionCode
+instance Hashable UpdateFunctionCode where
 
-instance NFData UpdateFunctionCode
+instance NFData UpdateFunctionCode where
 
 instance ToHeaders UpdateFunctionCode where
         toHeaders = const mempty
@@ -153,6 +166,7 @@
                   ("S3Key" .=) <$> _uS3Key,
                   ("ZipFile" .=) <$> _uZipFile,
                   ("S3Bucket" .=) <$> _uS3Bucket,
+                  ("DryRun" .=) <$> _uDryRun,
                   ("Publish" .=) <$> _uPublish])
 
 instance ToPath UpdateFunctionCode where
diff --git a/gen/Network/AWS/Lambda/UpdateFunctionConfiguration.hs b/gen/Network/AWS/Lambda/UpdateFunctionConfiguration.hs
--- a/gen/Network/AWS/Lambda/UpdateFunctionConfiguration.hs
+++ b/gen/Network/AWS/Lambda/UpdateFunctionConfiguration.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.Lambda.UpdateFunctionConfiguration
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -40,6 +40,7 @@
     , ufcVPCConfig
     , ufcHandler
     , ufcTimeout
+    , ufcTracingConfig
     , ufcDescription
     , ufcFunctionName
 
@@ -62,15 +63,17 @@
     , fcTimeout
     , fcLastModified
     , fcCodeSha256
+    , fcTracingConfig
     , fcDescription
+    , fcMasterARN
     ) where
 
-import           Network.AWS.Lambda.Types
-import           Network.AWS.Lambda.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.Lambda.Types
+import Network.AWS.Lambda.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
 -- |
 --
@@ -78,26 +81,28 @@
 --
 -- /See:/ 'updateFunctionConfiguration' smart constructor.
 data UpdateFunctionConfiguration = UpdateFunctionConfiguration'
-    { _ufcMemorySize       :: !(Maybe Nat)
-    , _ufcRuntime          :: !(Maybe Runtime)
-    , _ufcKMSKeyARN        :: !(Maybe Text)
-    , _ufcEnvironment      :: !(Maybe Environment)
-    , _ufcDeadLetterConfig :: !(Maybe DeadLetterConfig)
-    , _ufcRole             :: !(Maybe Text)
-    , _ufcVPCConfig        :: !(Maybe VPCConfig)
-    , _ufcHandler          :: !(Maybe Text)
-    , _ufcTimeout          :: !(Maybe Nat)
-    , _ufcDescription      :: !(Maybe Text)
-    , _ufcFunctionName     :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _ufcMemorySize       :: !(Maybe Nat)
+  , _ufcRuntime          :: !(Maybe Runtime)
+  , _ufcKMSKeyARN        :: !(Maybe Text)
+  , _ufcEnvironment      :: !(Maybe Environment)
+  , _ufcDeadLetterConfig :: !(Maybe DeadLetterConfig)
+  , _ufcRole             :: !(Maybe Text)
+  , _ufcVPCConfig        :: !(Maybe VPCConfig)
+  , _ufcHandler          :: !(Maybe Text)
+  , _ufcTimeout          :: !(Maybe Nat)
+  , _ufcTracingConfig    :: !(Maybe TracingConfig)
+  , _ufcDescription      :: !(Maybe Text)
+  , _ufcFunctionName     :: !Text
+  } deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateFunctionConfiguration' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'ufcMemorySize' - The amount of memory, in MB, your Lambda function is given. AWS Lambda uses this memory size to infer the amount of CPU allocated to your function. Your function use-case determines your CPU and memory requirements. For example, a database operation might need less memory compared to an image processing function. The default value is 128 MB. The value must be a multiple of 64 MB.
 --
--- * 'ufcRuntime' - The runtime environment for the Lambda function. To use the Node.js runtime v4.3, set the value to "nodejs4.3". To use earlier runtime (v0.10.42), set the value to "nodejs".
+-- * 'ufcRuntime' - The runtime environment for the Lambda function. To use the Python runtime v3.6, set the value to "python3.6". To use the Python runtime v2.7, set the value to "python2.7". To use the Node.js runtime v6.10, set the value to "nodejs6.10". To use the Node.js runtime v4.3, set the value to "nodejs4.3". To use the Python runtime v3.6, set the value to "python3.6".
 --
 -- * 'ufcKMSKeyARN' - The Amazon Resource Name (ARN) of the KMS key used to encrypt your function's environment variables. If you elect to use the AWS Lambda default service key, pass in an empty string ("") for this parameter.
 --
@@ -113,6 +118,8 @@
 --
 -- * 'ufcTimeout' - The function execution time at which AWS Lambda should terminate the function. Because the execution time has cost implications, we recommend you set this value based on your expected execution time. The default is 3 seconds.
 --
+-- * 'ufcTracingConfig' - The parent object that contains your function's tracing settings.
+--
 -- * 'ufcDescription' - A short user-defined function description. AWS Lambda does not use this value. Assign a meaningful description as you see fit.
 --
 -- * 'ufcFunctionName' - The name of the Lambda function. You can specify a function name (for example, @Thumbnail@ ) or you can specify Amazon Resource Name (ARN) of the function (for example, @arn:aws:lambda:us-west-2:account-id:function:ThumbNail@ ). AWS Lambda also allows you to specify a partial ARN (for example, @account-id:Thumbnail@ ). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length.
@@ -120,25 +127,27 @@
     :: Text -- ^ 'ufcFunctionName'
     -> UpdateFunctionConfiguration
 updateFunctionConfiguration pFunctionName_ =
-    UpdateFunctionConfiguration'
-    { _ufcMemorySize = Nothing
-    , _ufcRuntime = Nothing
-    , _ufcKMSKeyARN = Nothing
-    , _ufcEnvironment = Nothing
-    , _ufcDeadLetterConfig = Nothing
-    , _ufcRole = Nothing
-    , _ufcVPCConfig = Nothing
-    , _ufcHandler = Nothing
-    , _ufcTimeout = Nothing
-    , _ufcDescription = Nothing
-    , _ufcFunctionName = pFunctionName_
-    }
+  UpdateFunctionConfiguration'
+  { _ufcMemorySize = Nothing
+  , _ufcRuntime = Nothing
+  , _ufcKMSKeyARN = Nothing
+  , _ufcEnvironment = Nothing
+  , _ufcDeadLetterConfig = Nothing
+  , _ufcRole = Nothing
+  , _ufcVPCConfig = Nothing
+  , _ufcHandler = Nothing
+  , _ufcTimeout = Nothing
+  , _ufcTracingConfig = Nothing
+  , _ufcDescription = Nothing
+  , _ufcFunctionName = pFunctionName_
+  }
 
+
 -- | The amount of memory, in MB, your Lambda function is given. AWS Lambda uses this memory size to infer the amount of CPU allocated to your function. Your function use-case determines your CPU and memory requirements. For example, a database operation might need less memory compared to an image processing function. The default value is 128 MB. The value must be a multiple of 64 MB.
 ufcMemorySize :: Lens' UpdateFunctionConfiguration (Maybe Natural)
 ufcMemorySize = lens _ufcMemorySize (\ s a -> s{_ufcMemorySize = a}) . mapping _Nat;
 
--- | The runtime environment for the Lambda function. To use the Node.js runtime v4.3, set the value to "nodejs4.3". To use earlier runtime (v0.10.42), set the value to "nodejs".
+-- | The runtime environment for the Lambda function. To use the Python runtime v3.6, set the value to "python3.6". To use the Python runtime v2.7, set the value to "python2.7". To use the Node.js runtime v6.10, set the value to "nodejs6.10". To use the Node.js runtime v4.3, set the value to "nodejs4.3". To use the Python runtime v3.6, set the value to "python3.6".
 ufcRuntime :: Lens' UpdateFunctionConfiguration (Maybe Runtime)
 ufcRuntime = lens _ufcRuntime (\ s a -> s{_ufcRuntime = a});
 
@@ -170,6 +179,10 @@
 ufcTimeout :: Lens' UpdateFunctionConfiguration (Maybe Natural)
 ufcTimeout = lens _ufcTimeout (\ s a -> s{_ufcTimeout = a}) . mapping _Nat;
 
+-- | The parent object that contains your function's tracing settings.
+ufcTracingConfig :: Lens' UpdateFunctionConfiguration (Maybe TracingConfig)
+ufcTracingConfig = lens _ufcTracingConfig (\ s a -> s{_ufcTracingConfig = a});
+
 -- | A short user-defined function description. AWS Lambda does not use this value. Assign a meaningful description as you see fit.
 ufcDescription :: Lens' UpdateFunctionConfiguration (Maybe Text)
 ufcDescription = lens _ufcDescription (\ s a -> s{_ufcDescription = a});
@@ -184,9 +197,9 @@
         request = putJSON lambda
         response = receiveJSON (\ s h x -> eitherParseJSON x)
 
-instance Hashable UpdateFunctionConfiguration
+instance Hashable UpdateFunctionConfiguration where
 
-instance NFData UpdateFunctionConfiguration
+instance NFData UpdateFunctionConfiguration where
 
 instance ToHeaders UpdateFunctionConfiguration where
         toHeaders = const mempty
@@ -204,6 +217,7 @@
                   ("VpcConfig" .=) <$> _ufcVPCConfig,
                   ("Handler" .=) <$> _ufcHandler,
                   ("Timeout" .=) <$> _ufcTimeout,
+                  ("TracingConfig" .=) <$> _ufcTracingConfig,
                   ("Description" .=) <$> _ufcDescription])
 
 instance ToPath UpdateFunctionConfiguration where
diff --git a/gen/Network/AWS/Lambda/Waiters.hs b/gen/Network/AWS/Lambda/Waiters.hs
--- a/gen/Network/AWS/Lambda/Waiters.hs
+++ b/gen/Network/AWS/Lambda/Waiters.hs
@@ -7,15 +7,15 @@
 
 -- |
 -- Module      : Network.AWS.Lambda.Waiters
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 module Network.AWS.Lambda.Waiters where
 
-import           Network.AWS.Lambda.Types
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Waiter
+import Network.AWS.Lambda.Types
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Waiter
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -2,9 +2,9 @@
 
 -- |
 -- Module      : Main
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
diff --git a/test/Test/AWS/Gen/Lambda.hs b/test/Test/AWS/Gen/Lambda.hs
--- a/test/Test/AWS/Gen/Lambda.hs
+++ b/test/Test/AWS/Gen/Lambda.hs
@@ -5,20 +5,20 @@
 
 -- |
 -- Module      : Test.AWS.Gen.Lambda
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 module Test.AWS.Gen.Lambda where
 
 import Data.Proxy
+import Network.AWS.Lambda
 import Test.AWS.Fixture
+import Test.AWS.Lambda.Internal
 import Test.AWS.Prelude
 import Test.Tasty
-import Network.AWS.Lambda
-import Test.AWS.Lambda.Internal
 
 -- Auto-generated: the actual test selection needs to be manually placed into
 -- the top-level so that real test data can be incrementally added.
@@ -82,12 +82,21 @@
 --         , requestAddPermission $
 --             addPermission
 --
+--         , requestTagResource $
+--             tagResource
+--
 --         , requestPublishVersion $
 --             publishVersion
 --
+--         , requestListTags $
+--             listTags
+--
 --         , requestDeleteFunction $
 --             deleteFunction
 --
+--         , requestUntagResource $
+--             untagResource
+--
 --         , requestUpdateFunctionConfiguration $
 --             updateFunctionConfiguration
 --
@@ -157,12 +166,21 @@
 --         , responseAddPermission $
 --             addPermissionResponse
 --
+--         , responseTagResource $
+--             tagResourceResponse
+--
 --         , responsePublishVersion $
 --             functionConfiguration
 --
+--         , responseListTags $
+--             listTagsResponse
+--
 --         , responseDeleteFunction $
 --             deleteFunctionResponse
 --
+--         , responseUntagResource $
+--             untagResourceResponse
+--
 --         , responseUpdateFunctionConfiguration $
 --             functionConfiguration
 --
@@ -270,16 +288,31 @@
     "AddPermission"
     "fixture/AddPermission.yaml"
 
+requestTagResource :: TagResource -> TestTree
+requestTagResource = req
+    "TagResource"
+    "fixture/TagResource.yaml"
+
 requestPublishVersion :: PublishVersion -> TestTree
 requestPublishVersion = req
     "PublishVersion"
     "fixture/PublishVersion.yaml"
 
+requestListTags :: ListTags -> TestTree
+requestListTags = req
+    "ListTags"
+    "fixture/ListTags.yaml"
+
 requestDeleteFunction :: DeleteFunction -> TestTree
 requestDeleteFunction = req
     "DeleteFunction"
     "fixture/DeleteFunction.yaml"
 
+requestUntagResource :: UntagResource -> TestTree
+requestUntagResource = req
+    "UntagResource"
+    "fixture/UntagResource.yaml"
+
 requestUpdateFunctionConfiguration :: UpdateFunctionConfiguration -> TestTree
 requestUpdateFunctionConfiguration = req
     "UpdateFunctionConfiguration"
@@ -428,6 +461,13 @@
     lambda
     (Proxy :: Proxy AddPermission)
 
+responseTagResource :: TagResourceResponse -> TestTree
+responseTagResource = res
+    "TagResourceResponse"
+    "fixture/TagResourceResponse.proto"
+    lambda
+    (Proxy :: Proxy TagResource)
+
 responsePublishVersion :: FunctionConfiguration -> TestTree
 responsePublishVersion = res
     "PublishVersionResponse"
@@ -435,12 +475,26 @@
     lambda
     (Proxy :: Proxy PublishVersion)
 
+responseListTags :: ListTagsResponse -> TestTree
+responseListTags = res
+    "ListTagsResponse"
+    "fixture/ListTagsResponse.proto"
+    lambda
+    (Proxy :: Proxy ListTags)
+
 responseDeleteFunction :: DeleteFunctionResponse -> TestTree
 responseDeleteFunction = res
     "DeleteFunctionResponse"
     "fixture/DeleteFunctionResponse.proto"
     lambda
     (Proxy :: Proxy DeleteFunction)
+
+responseUntagResource :: UntagResourceResponse -> TestTree
+responseUntagResource = res
+    "UntagResourceResponse"
+    "fixture/UntagResourceResponse.proto"
+    lambda
+    (Proxy :: Proxy UntagResource)
 
 responseUpdateFunctionConfiguration :: FunctionConfiguration -> TestTree
 responseUpdateFunctionConfiguration = res
