diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.3.3.1`
+`1.3.4`
 
 
 ## Description
diff --git a/amazonka-lambda.cabal b/amazonka-lambda.cabal
--- a/amazonka-lambda.cabal
+++ b/amazonka-lambda.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-lambda
-version:               1.3.3.1
+version:               1.3.4
 synopsis:              Amazon Lambda SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
@@ -51,19 +51,26 @@
     exposed-modules:
           Network.AWS.Lambda
         , Network.AWS.Lambda.AddPermission
+        , Network.AWS.Lambda.CreateAlias
         , Network.AWS.Lambda.CreateEventSourceMapping
         , Network.AWS.Lambda.CreateFunction
+        , Network.AWS.Lambda.DeleteAlias
         , Network.AWS.Lambda.DeleteEventSourceMapping
         , Network.AWS.Lambda.DeleteFunction
+        , Network.AWS.Lambda.GetAlias
         , Network.AWS.Lambda.GetEventSourceMapping
         , Network.AWS.Lambda.GetFunction
         , Network.AWS.Lambda.GetFunctionConfiguration
         , Network.AWS.Lambda.GetPolicy
         , Network.AWS.Lambda.Invoke
+        , Network.AWS.Lambda.ListAliases
         , Network.AWS.Lambda.ListEventSourceMappings
         , Network.AWS.Lambda.ListFunctions
+        , Network.AWS.Lambda.ListVersionsByFunction
+        , Network.AWS.Lambda.PublishVersion
         , Network.AWS.Lambda.RemovePermission
         , Network.AWS.Lambda.Types
+        , Network.AWS.Lambda.UpdateAlias
         , Network.AWS.Lambda.UpdateEventSourceMapping
         , Network.AWS.Lambda.UpdateFunctionCode
         , Network.AWS.Lambda.UpdateFunctionConfiguration
@@ -74,7 +81,7 @@
         , Network.AWS.Lambda.Types.Sum
 
     build-depends:
-          amazonka-core == 1.3.3.*
+          amazonka-core == 1.3.4.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-lambda-test
@@ -94,9 +101,9 @@
         , Test.AWS.Lambda.Internal
 
     build-depends:
-          amazonka-core == 1.3.3.*
-        , amazonka-test == 1.3.3.*
-        , amazonka-lambda == 1.3.3.*
+          amazonka-core == 1.3.4.*
+        , amazonka-test == 1.3.4.*
+        , amazonka-lambda == 1.3.4.*
         , base
         , bytestring
         , lens
diff --git a/fixture/CreateAlias.yaml b/fixture/CreateAlias.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateAlias.yaml
diff --git a/fixture/CreateAliasResponse.proto b/fixture/CreateAliasResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateAliasResponse.proto
diff --git a/fixture/DeleteAlias.yaml b/fixture/DeleteAlias.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAlias.yaml
diff --git a/fixture/DeleteAliasResponse.proto b/fixture/DeleteAliasResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteAliasResponse.proto
diff --git a/fixture/GetAlias.yaml b/fixture/GetAlias.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetAlias.yaml
diff --git a/fixture/GetAliasResponse.proto b/fixture/GetAliasResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetAliasResponse.proto
diff --git a/fixture/ListAliases.yaml b/fixture/ListAliases.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListAliases.yaml
diff --git a/fixture/ListAliasesResponse.proto b/fixture/ListAliasesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListAliasesResponse.proto
diff --git a/fixture/ListVersionsByFunction.yaml b/fixture/ListVersionsByFunction.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListVersionsByFunction.yaml
diff --git a/fixture/ListVersionsByFunctionResponse.proto b/fixture/ListVersionsByFunctionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListVersionsByFunctionResponse.proto
diff --git a/fixture/PublishVersion.yaml b/fixture/PublishVersion.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PublishVersion.yaml
diff --git a/fixture/PublishVersionResponse.proto b/fixture/PublishVersionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PublishVersionResponse.proto
diff --git a/fixture/UpdateAlias.yaml b/fixture/UpdateAlias.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateAlias.yaml
diff --git a/fixture/UpdateAliasResponse.proto b/fixture/UpdateAliasResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateAliasResponse.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
@@ -76,12 +76,24 @@
     -- ** UpdateEventSourceMapping
     , module Network.AWS.Lambda.UpdateEventSourceMapping
 
+    -- ** CreateAlias
+    , module Network.AWS.Lambda.CreateAlias
+
+    -- ** ListVersionsByFunction
+    , module Network.AWS.Lambda.ListVersionsByFunction
+
+    -- ** ListAliases
+    , module Network.AWS.Lambda.ListAliases
+
     -- ** RemovePermission
     , module Network.AWS.Lambda.RemovePermission
 
     -- ** Invoke
     , module Network.AWS.Lambda.Invoke
 
+    -- ** GetAlias
+    , module Network.AWS.Lambda.GetAlias
+
     -- ** GetEventSourceMapping
     , module Network.AWS.Lambda.GetEventSourceMapping
 
@@ -97,9 +109,18 @@
     -- ** ListEventSourceMappings (Paginated)
     , module Network.AWS.Lambda.ListEventSourceMappings
 
+    -- ** DeleteAlias
+    , module Network.AWS.Lambda.DeleteAlias
+
+    -- ** UpdateAlias
+    , module Network.AWS.Lambda.UpdateAlias
+
     -- ** AddPermission
     , module Network.AWS.Lambda.AddPermission
 
+    -- ** PublishVersion
+    , module Network.AWS.Lambda.PublishVersion
+
     -- ** DeleteFunction
     , module Network.AWS.Lambda.DeleteFunction
 
@@ -129,6 +150,14 @@
     -- ** Runtime
     , Runtime (..)
 
+    -- ** AliasConfiguration
+    , AliasConfiguration
+    , aliasConfiguration
+    , acName
+    , acFunctionVersion
+    , acAliasARN
+    , acDescription
+
     -- ** EventSourceMappingConfiguration
     , EventSourceMappingConfiguration
     , eventSourceMappingConfiguration
@@ -162,28 +191,37 @@
     , fcRuntime
     , fcFunctionARN
     , fcRole
+    , fcVersion
     , fcFunctionName
     , fcCodeSize
     , fcHandler
     , fcTimeout
     , fcLastModified
+    , fcCodeSha256
     , fcDescription
     ) 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.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
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
@@ -18,16 +18,23 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Adds a permission to the access policy associated with the specified AWS
--- Lambda function. In a \"push event\" model, the access policy attached
--- to the Lambda function grants Amazon S3 or a user application permission
--- for the Lambda 'lambda:Invoke' action. For information about the push
--- model, see
+-- Adds a permission to the resource policy associated with the specified
+-- AWS Lambda function. You use resource policies to grant permissions to
+-- event sources that use \"push\" model. In \"push\" model, event sources
+-- (such as Amazon S3 and custom applications) invoke your Lambda function.
+-- Each permission you add to the resource policy allows an event source,
+-- permission to invoke the Lambda function.
+--
+-- For information about the push model, see
 -- <http://docs.aws.amazon.com/lambda/latest/dg/lambda-introduction.html AWS Lambda: How it Works>.
--- Each Lambda function has one access policy associated with it. You can
--- use the 'AddPermission' API to add a permission to the policy. You have
--- one access policy but it can have multiple permission statements.
 --
+-- If you are using versioning feature (see
+-- <http://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases-v2.html AWS Lambda Function Versioning and Aliases>),
+-- a Lambda function can have multiple ARNs that can be used to invoke the
+-- function. Note that, each permission you add to resource policy using
+-- this API is specific to an ARN, specified using the 'Qualifier'
+-- parameter
+--
 -- This operation requires permission for the 'lambda:AddPermission'
 -- action.
 --
@@ -40,6 +47,7 @@
     -- * Request Lenses
     , apSourceAccount
     , apSourceARN
+    , apQualifier
     , apFunctionName
     , apStatementId
     , apAction
@@ -63,6 +71,7 @@
 data AddPermission = AddPermission'
     { _apSourceAccount :: !(Maybe Text)
     , _apSourceARN     :: !(Maybe Text)
+    , _apQualifier     :: !(Maybe Text)
     , _apFunctionName  :: !Text
     , _apStatementId   :: !Text
     , _apAction        :: !Text
@@ -77,6 +86,8 @@
 --
 -- * 'apSourceARN'
 --
+-- * 'apQualifier'
+--
 -- * 'apFunctionName'
 --
 -- * 'apStatementId'
@@ -94,6 +105,7 @@
     AddPermission'
     { _apSourceAccount = Nothing
     , _apSourceARN = Nothing
+    , _apQualifier = Nothing
     , _apFunctionName = pFunctionName_
     , _apStatementId = pStatementId_
     , _apAction = pAction_
@@ -121,7 +133,27 @@
 apSourceARN :: Lens' AddPermission (Maybe Text)
 apSourceARN = lens _apSourceARN (\ s a -> s{_apSourceARN = a});
 
--- | Name of the Lambda function whose access policy you are updating by
+-- | You can specify this optional query parameter to specify function
+-- version or 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 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'
+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 an unqualified function name (for example,
@@ -182,10 +214,11 @@
         toPath AddPermission'{..}
           = mconcat
               ["/2015-03-31/functions/", toBS _apFunctionName,
-               "/versions/HEAD/policy"]
+               "/policy"]
 
 instance ToQuery AddPermission where
-        toQuery = const mempty
+        toQuery AddPermission'{..}
+          = mconcat ["Qualifier" =: _apQualifier]
 
 -- | /See:/ 'addPermissionResponse' smart constructor.
 data AddPermissionResponse = AddPermissionResponse'
diff --git a/gen/Network/AWS/Lambda/CreateAlias.hs b/gen/Network/AWS/Lambda/CreateAlias.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Lambda/CreateAlias.hs
@@ -0,0 +1,126 @@
+{-# 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.CreateAlias
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an alias to the specified Lambda function version. For more
+-- information, see
+-- <http://docs.aws.amazon.com/lambda/latest/dg/versioning-v2-intro-aliases.html Introduction to AWS Lambda Aliases>
+--
+-- This requires permission for the lambda:CreateAlias action.
+--
+-- /See:/ <http://docs.aws.amazon.com/lambda/latest/dg/API_CreateAlias.html AWS API Reference> for CreateAlias.
+module Network.AWS.Lambda.CreateAlias
+    (
+    -- * Creating a Request
+      createAlias
+    , CreateAlias
+    -- * Request Lenses
+    , caDescription
+    , caFunctionName
+    , caName
+    , caFunctionVersion
+
+    -- * Destructuring the Response
+    , aliasConfiguration
+    , AliasConfiguration
+    -- * Response Lenses
+    , acName
+    , acFunctionVersion
+    , acAliasARN
+    , acDescription
+    ) where
+
+import           Network.AWS.Lambda.Types
+import           Network.AWS.Lambda.Types.Product
+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)
+
+-- | 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'
+--
+-- * 'caFunctionName'
+--
+-- * 'caName'
+--
+-- * 'caFunctionVersion'
+createAlias
+    :: Text -- ^ 'caFunctionName'
+    -> Text -- ^ 'caName'
+    -> Text -- ^ 'caFunctionVersion'
+    -> CreateAlias
+createAlias pFunctionName_ pName_ 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.
+caFunctionName :: Lens' CreateAlias Text
+caFunctionName = lens _caFunctionName (\ s a -> s{_caFunctionName = a});
+
+-- | Name for the alias your creating.
+caName :: Lens' CreateAlias Text
+caName = lens _caName (\ s a -> s{_caName = a});
+
+-- | Lambda function version for which you are creating the alias.
+caFunctionVersion :: Lens' CreateAlias Text
+caFunctionVersion = lens _caFunctionVersion (\ s a -> s{_caFunctionVersion = a});
+
+instance AWSRequest CreateAlias where
+        type Rs CreateAlias = AliasConfiguration
+        request = postJSON lambda
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders CreateAlias where
+        toHeaders = const mempty
+
+instance ToJSON CreateAlias where
+        toJSON CreateAlias'{..}
+          = object
+              (catMaybes
+                 [("Description" .=) <$> _caDescription,
+                  Just ("Name" .= _caName),
+                  Just ("FunctionVersion" .= _caFunctionVersion)])
+
+instance ToPath CreateAlias where
+        toPath CreateAlias'{..}
+          = mconcat
+              ["/2015-03-31/functions/", toBS _caFunctionName,
+               "/aliases"]
+
+instance ToQuery CreateAlias where
+        toQuery = 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
@@ -108,8 +108,8 @@
     , _cesmStartingPosition = pStartingPosition_
     }
 
--- | Indicates whether AWS Lambda should begin polling the event source, the
--- default is not enabled.
+-- | Indicates whether AWS Lambda should begin polling the event source. By
+-- default, 'Enabled' is true.
 cesmEnabled :: Lens' CreateEventSourceMapping (Maybe Bool)
 cesmEnabled = lens _cesmEnabled (\ s a -> s{_cesmEnabled = a});
 
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
@@ -36,6 +36,7 @@
     , cfMemorySize
     , cfTimeout
     , cfDescription
+    , cfPublish
     , cfFunctionName
     , cfRuntime
     , cfRole
@@ -50,11 +51,13 @@
     , fcRuntime
     , fcFunctionARN
     , fcRole
+    , fcVersion
     , fcFunctionName
     , fcCodeSize
     , fcHandler
     , fcTimeout
     , fcLastModified
+    , fcCodeSha256
     , fcDescription
     ) where
 
@@ -69,6 +72,7 @@
     { _cfMemorySize   :: !(Maybe Nat)
     , _cfTimeout      :: !(Maybe Nat)
     , _cfDescription  :: !(Maybe Text)
+    , _cfPublish      :: !(Maybe Bool)
     , _cfFunctionName :: !Text
     , _cfRuntime      :: !Runtime
     , _cfRole         :: !Text
@@ -86,6 +90,8 @@
 --
 -- * 'cfDescription'
 --
+-- * 'cfPublish'
+--
 -- * 'cfFunctionName'
 --
 -- * 'cfRuntime'
@@ -107,6 +113,7 @@
     { _cfMemorySize = Nothing
     , _cfTimeout = Nothing
     , _cfDescription = Nothing
+    , _cfPublish = Nothing
     , _cfFunctionName = pFunctionName_
     , _cfRuntime = pRuntime_
     , _cfRole = pRole_
@@ -135,6 +142,11 @@
 cfDescription :: Lens' CreateFunction (Maybe Text)
 cfDescription = lens _cfDescription (\ s a -> s{_cfDescription = a});
 
+-- | 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. You can
 -- specify an unqualified function name (for example, \"Thumbnail\") or you
 -- can specify Amazon Resource Name (ARN) of the function (for example,
@@ -187,6 +199,7 @@
                  [("MemorySize" .=) <$> _cfMemorySize,
                   ("Timeout" .=) <$> _cfTimeout,
                   ("Description" .=) <$> _cfDescription,
+                  ("Publish" .=) <$> _cfPublish,
                   Just ("FunctionName" .= _cfFunctionName),
                   Just ("Runtime" .= _cfRuntime),
                   Just ("Role" .= _cfRole),
diff --git a/gen/Network/AWS/Lambda/DeleteAlias.hs b/gen/Network/AWS/Lambda/DeleteAlias.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Lambda/DeleteAlias.hs
@@ -0,0 +1,104 @@
+{-# 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.DeleteAlias
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes specified Lambda function alias. For more information, see
+-- <http://docs.aws.amazon.com/lambda/latest/dg/versioning-v2-intro-aliases.html Introduction to AWS Lambda Aliases>
+--
+-- This requires permission for the lambda:DeleteAlias action.
+--
+-- /See:/ <http://docs.aws.amazon.com/lambda/latest/dg/API_DeleteAlias.html AWS API Reference> for DeleteAlias.
+module Network.AWS.Lambda.DeleteAlias
+    (
+    -- * Creating a Request
+      deleteAlias
+    , DeleteAlias
+    -- * Request Lenses
+    , daFunctionName
+    , daName
+
+    -- * Destructuring the Response
+    , deleteAliasResponse
+    , DeleteAliasResponse
+    ) where
+
+import           Network.AWS.Lambda.Types
+import           Network.AWS.Lambda.Types.Product
+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)
+
+-- | 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'
+--
+-- * 'daName'
+deleteAlias
+    :: Text -- ^ 'daFunctionName'
+    -> Text -- ^ 'daName'
+    -> DeleteAlias
+deleteAlias pFunctionName_ pName_ =
+    DeleteAlias'
+    { _daFunctionName = pFunctionName_
+    , _daName = pName_
+    }
+
+-- | The Lambda function name for which the alias is created.
+daFunctionName :: Lens' DeleteAlias Text
+daFunctionName = lens _daFunctionName (\ s a -> s{_daFunctionName = a});
+
+-- | Name of the alias to delete.
+daName :: Lens' DeleteAlias Text
+daName = lens _daName (\ s a -> s{_daName = a});
+
+instance AWSRequest DeleteAlias where
+        type Rs DeleteAlias = DeleteAliasResponse
+        request = delete lambda
+        response = receiveNull DeleteAliasResponse'
+
+instance ToHeaders DeleteAlias where
+        toHeaders = const mempty
+
+instance ToPath DeleteAlias where
+        toPath DeleteAlias'{..}
+          = mconcat
+              ["/2015-03-31/functions/", toBS _daFunctionName,
+               "/aliases/", toBS _daName]
+
+instance ToQuery DeleteAlias where
+        toQuery = const mempty
+
+-- | /See:/ 'deleteAliasResponse' smart constructor.
+data DeleteAliasResponse =
+    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'
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
@@ -20,9 +20,16 @@
 --
 -- Deletes the specified Lambda function code and configuration.
 --
--- When you delete a function the associated access policy is also deleted.
--- You will need to delete the event source mappings explicitly.
+-- If you don\'t specify a function version, AWS Lambda will delete the
+-- function, including all its versions, and any aliases pointing to the
+-- function versions.
 --
+-- When you delete a function the associated resource policy is also
+-- deleted. You will need to delete the event source mappings explicitly.
+--
+-- For information about function versioning, see
+-- <http://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases-v2.html AWS Lambda Function Versioning and Aliases>.
+--
 -- This operation requires permission for the 'lambda:DeleteFunction'
 -- action.
 --
@@ -33,6 +40,7 @@
       deleteFunction
     , DeleteFunction
     -- * Request Lenses
+    , dfQualifier
     , dfFunctionName
 
     -- * Destructuring the Response
@@ -47,23 +55,44 @@
 import           Network.AWS.Response
 
 -- | /See:/ 'deleteFunction' smart constructor.
-newtype DeleteFunction = DeleteFunction'
-    { _dfFunctionName :: Text
+data DeleteFunction = DeleteFunction'
+    { _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'
+--
 -- * 'dfFunctionName'
 deleteFunction
     :: Text -- ^ 'dfFunctionName'
     -> DeleteFunction
 deleteFunction pFunctionName_ =
     DeleteFunction'
-    { _dfFunctionName = pFunctionName_
+    { _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 and not 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 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 an unqualified function name (for example,
@@ -91,7 +120,8 @@
               ["/2015-03-31/functions/", toBS _dfFunctionName]
 
 instance ToQuery DeleteFunction where
-        toQuery = const mempty
+        toQuery DeleteFunction'{..}
+          = mconcat ["Qualifier" =: _dfQualifier]
 
 -- | /See:/ 'deleteFunctionResponse' smart constructor.
 data DeleteFunctionResponse =
diff --git a/gen/Network/AWS/Lambda/GetAlias.hs b/gen/Network/AWS/Lambda/GetAlias.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Lambda/GetAlias.hs
@@ -0,0 +1,102 @@
+{-# 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.GetAlias
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the specified alias information such as the alias ARN,
+-- description, and function version it is pointing to. For more
+-- information, see
+-- <http://docs.aws.amazon.com/lambda/latest/dg/versioning-v2-intro-aliases.html Introduction to AWS Lambda Aliases>
+--
+-- This requires permission for the lambda:GetAlias action.
+--
+-- /See:/ <http://docs.aws.amazon.com/lambda/latest/dg/API_GetAlias.html AWS API Reference> for GetAlias.
+module Network.AWS.Lambda.GetAlias
+    (
+    -- * Creating a Request
+      getAlias
+    , GetAlias
+    -- * Request Lenses
+    , gaFunctionName
+    , gaName
+
+    -- * Destructuring the Response
+    , aliasConfiguration
+    , AliasConfiguration
+    -- * Response Lenses
+    , acName
+    , acFunctionVersion
+    , acAliasARN
+    , acDescription
+    ) where
+
+import           Network.AWS.Lambda.Types
+import           Network.AWS.Lambda.Types.Product
+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)
+
+-- | 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'
+--
+-- * 'gaName'
+getAlias
+    :: Text -- ^ 'gaFunctionName'
+    -> Text -- ^ 'gaName'
+    -> GetAlias
+getAlias pFunctionName_ 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.
+gaFunctionName :: Lens' GetAlias Text
+gaFunctionName = lens _gaFunctionName (\ s a -> s{_gaFunctionName = a});
+
+-- | Name of the alias for which you want to retrieve information.
+gaName :: Lens' GetAlias Text
+gaName = lens _gaName (\ s a -> s{_gaName = a});
+
+instance AWSRequest GetAlias where
+        type Rs GetAlias = AliasConfiguration
+        request = get lambda
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders GetAlias where
+        toHeaders = const mempty
+
+instance ToPath GetAlias where
+        toPath GetAlias'{..}
+          = mconcat
+              ["/2015-03-31/functions/", toBS _gaFunctionName,
+               "/aliases/", toBS _gaName]
+
+instance ToQuery GetAlias where
+        toQuery = 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
@@ -24,6 +24,13 @@
 -- minutes. The configuration information is the same information you
 -- provided as parameters when uploading the function.
 --
+-- Using the optional 'Qualifier' parameter, you can specify a specific
+-- function version for which you want this information. If you don\'t
+-- specify this parameter, the API uses unqualified function ARN which
+-- return information about the $LATEST version of the Lambda function. For
+-- more information, see
+-- <http://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases-v2.html AWS Lambda Function Versioning and Aliases>.
+--
 -- This operation requires permission for the 'lambda:GetFunction' action.
 --
 -- /See:/ <http://docs.aws.amazon.com/lambda/latest/dg/API_GetFunction.html AWS API Reference> for GetFunction.
@@ -33,6 +40,7 @@
       getFunction
     , GetFunction
     -- * Request Lenses
+    , gfQualifier
     , gfFunctionName
 
     -- * Destructuring the Response
@@ -51,23 +59,38 @@
 import           Network.AWS.Response
 
 -- | /See:/ 'getFunction' smart constructor.
-newtype GetFunction = GetFunction'
-    { _gfFunctionName :: Text
+data GetFunction = GetFunction'
+    { _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'
+--
 -- * 'gfFunctionName'
 getFunction
     :: Text -- ^ 'gfFunctionName'
     -> GetFunction
 getFunction pFunctionName_ =
     GetFunction'
-    { _gfFunctionName = pFunctionName_
+    { _gfQualifier = Nothing
+    , _gfFunctionName = pFunctionName_
     }
 
+-- | Using this optional parameter to specify a function version or 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 alias name, the API uses 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 an unqualified function name (for example,
@@ -97,11 +120,11 @@
 instance ToPath GetFunction where
         toPath GetFunction'{..}
           = mconcat
-              ["/2015-03-31/functions/", toBS _gfFunctionName,
-               "/versions/HEAD"]
+              ["/2015-03-31/functions/", toBS _gfFunctionName]
 
 instance ToQuery GetFunction where
-        toQuery = const mempty
+        toQuery GetFunction'{..}
+          = mconcat ["Qualifier" =: _gfQualifier]
 
 -- | This response contains the object for the Lambda function location (see
 -- API_FunctionCodeLocation
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
@@ -22,6 +22,12 @@
 -- same information you provided as parameters when uploading the function
 -- by using CreateFunction.
 --
+-- You can use the optional 'Qualifier' parameter to retrieve configuration
+-- information for a specific Lambda function version. If you don\'t
+-- provide it, the API returns information about the $LATEST version of the
+-- function. For more information about versioning, see
+-- <http://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases-v2.html AWS Lambda Function Versioning and Aliases>.
+--
 -- This operation requires permission for the
 -- 'lambda:GetFunctionConfiguration' operation.
 --
@@ -32,6 +38,7 @@
       getFunctionConfiguration
     , GetFunctionConfiguration
     -- * Request Lenses
+    , gfcQualifier
     , gfcFunctionName
 
     -- * Destructuring the Response
@@ -42,11 +49,13 @@
     , fcRuntime
     , fcFunctionARN
     , fcRole
+    , fcVersion
     , fcFunctionName
     , fcCodeSize
     , fcHandler
     , fcTimeout
     , fcLastModified
+    , fcCodeSha256
     , fcDescription
     ) where
 
@@ -57,23 +66,38 @@
 import           Network.AWS.Response
 
 -- | /See:/ 'getFunctionConfiguration' smart constructor.
-newtype GetFunctionConfiguration = GetFunctionConfiguration'
-    { _gfcFunctionName :: Text
+data GetFunctionConfiguration = GetFunctionConfiguration'
+    { _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'
+--
 -- * 'gfcFunctionName'
 getFunctionConfiguration
     :: Text -- ^ 'gfcFunctionName'
     -> GetFunctionConfiguration
 getFunctionConfiguration pFunctionName_ =
     GetFunctionConfiguration'
-    { _gfcFunctionName = pFunctionName_
+    { _gfcQualifier = Nothing
+    , _gfcFunctionName = pFunctionName_
     }
 
+-- | Using this optional parameter you can specify function version or alias
+-- name. If you specify function version, the API uses qualified function
+-- ARN and returns information about the specific function version. if you
+-- specify alias name, the API uses 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.
 --
@@ -101,7 +125,8 @@
         toPath GetFunctionConfiguration'{..}
           = mconcat
               ["/2015-03-31/functions/", toBS _gfcFunctionName,
-               "/versions/HEAD/configuration"]
+               "/configuration"]
 
 instance ToQuery GetFunctionConfiguration where
-        toQuery = const mempty
+        toQuery GetFunctionConfiguration'{..}
+          = mconcat ["Qualifier" =: _gfcQualifier]
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
@@ -18,9 +18,11 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the access policy, containing a list of permissions granted via
--- the 'AddPermission' API, associated with the specified bucket.
+-- Returns the resource policy, containing a list of permissions that apply
+-- to a specific to an ARN that you specify via the 'Qualifier' paramter.
 --
+-- For informration about adding permissions, see AddPermission.
+--
 -- You need permission for the 'lambda:GetPolicy action.'
 --
 -- /See:/ <http://docs.aws.amazon.com/lambda/latest/dg/API_GetPolicy.html AWS API Reference> for GetPolicy.
@@ -30,6 +32,7 @@
       getPolicy
     , GetPolicy
     -- * Request Lenses
+    , gpQualifier
     , gpFunctionName
 
     -- * Destructuring the Response
@@ -47,24 +50,36 @@
 import           Network.AWS.Response
 
 -- | /See:/ 'getPolicy' smart constructor.
-newtype GetPolicy = GetPolicy'
-    { _gpFunctionName :: Text
+data GetPolicy = GetPolicy'
+    { _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'
+--
 -- * 'gpFunctionName'
 getPolicy
     :: Text -- ^ 'gpFunctionName'
     -> GetPolicy
 getPolicy pFunctionName_ =
     GetPolicy'
-    { _gpFunctionName = pFunctionName_
+    { _gpQualifier = Nothing
+    , _gpFunctionName = pFunctionName_
     }
 
--- | Function name whose access policy you want to retrieve.
+-- | You can specify this optional query parameter to specify function
+-- version or alias name in which case this API will return all permissions
+-- associated with the specific 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 an unqualified function name (for example,
 -- \"Thumbnail\") or you can specify Amazon Resource Name (ARN) of the
@@ -93,7 +108,7 @@
         toPath GetPolicy'{..}
           = mconcat
               ["/2015-03-31/functions/", toBS _gpFunctionName,
-               "/versions/HEAD/policy"]
+               "/policy"]
 
 instance ToQuery GetPolicy where
         toQuery = const mempty
@@ -120,7 +135,7 @@
     , _gprsResponseStatus = pResponseStatus_
     }
 
--- | The access policy associated with the specified function. The response
+-- | The resource policy associated with the specified function. The response
 -- returns the same as a string using \"\\\" as an escape character in the
 -- JSON.
 gprsPolicy :: Lens' GetPolicyResponse (Maybe Text)
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
@@ -18,8 +18,22 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Invokes a specified Lambda function.
+-- Invokes a specific Lambda function version.
 --
+-- If you don\'t provide the 'Qualifier' parameter, it uses the unqualified
+-- function ARN which results in invocation of the $LATEST version of the
+-- Lambda function (when you create a Lambda function, the $LATEST is the
+-- version). The AWS Lambda versioning and aliases feature allows you to
+-- publish multiple versions of a Lambda function and also create aliases
+-- for each function version. So each your Lambda function version can be
+-- invoked using multiple ARNs. For more information, see
+-- <http://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases-v2.html AWS Lambda Function Versioning and Aliases>.
+-- Using the 'Qualifier' parameter, you can specify a function version or
+-- alias name to invoke specific function version. If you specify function
+-- version, the API uses the qualified function ARN to invoke a specific
+-- function version. If you specify alias name, the API uses the alias ARN
+-- to invoke the function version to which the alias points.
+--
 -- This operation requires permission for the 'lambda:InvokeFunction'
 -- action.
 --
@@ -32,6 +46,7 @@
     -- * Request Lenses
     , iInvocationType
     , iLogType
+    , iQualifier
     , iClientContext
     , iFunctionName
     , iPayload
@@ -56,6 +71,7 @@
 data Invoke = Invoke'
     { _iInvocationType :: !(Maybe InvocationType)
     , _iLogType        :: !(Maybe LogType)
+    , _iQualifier      :: !(Maybe Text)
     , _iClientContext  :: !(Maybe Text)
     , _iFunctionName   :: !Text
     , _iPayload        :: !(HashMap Text Value)
@@ -69,6 +85,8 @@
 --
 -- * 'iLogType'
 --
+-- * 'iQualifier'
+--
 -- * 'iClientContext'
 --
 -- * 'iFunctionName'
@@ -82,6 +100,7 @@
     Invoke'
     { _iInvocationType = Nothing
     , _iLogType = Nothing
+    , _iQualifier = Nothing
     , _iClientContext = Nothing
     , _iFunctionName = pFunctionName_
     , _iPayload = pPayload_
@@ -106,6 +125,17 @@
 iLogType :: Lens' Invoke (Maybe LogType)
 iLogType = lens _iLogType (\ s a -> s{_iLogType = a});
 
+-- | You can use this optional paramter to specify a Lambda function version
+-- or alias name. If you specify function version, the API uses qualified
+-- function ARN to invoke a specific Lambda function. If you specify alias
+-- name, the API uses the alias ARN to invoke the Lambda function version
+-- to which the alias points.
+--
+-- If you don\'t provide this parameter, then the API uses unqualified
+-- function ARN which results in invocation of the $LATEST version.
+iQualifier :: Lens' Invoke (Maybe Text)
+iQualifier = lens _iQualifier (\ s a -> s{_iQualifier = a});
+
 -- | 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
@@ -163,7 +193,8 @@
                "/invocations"]
 
 instance ToQuery Invoke where
-        toQuery = const mempty
+        toQuery Invoke'{..}
+          = mconcat ["Qualifier" =: _iQualifier]
 
 -- | Upon success, returns an empty response. Otherwise, throws an exception.
 --
diff --git a/gen/Network/AWS/Lambda/ListAliases.hs b/gen/Network/AWS/Lambda/ListAliases.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Lambda/ListAliases.hs
@@ -0,0 +1,168 @@
+{-# 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.ListAliases
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns list of aliases created for a Lambda function. For each alias,
+-- the response includes information such as the alias ARN, description,
+-- alias name, and the function version to which it points. For more
+-- information, see
+-- <http://docs.aws.amazon.com/lambda/latest/dg/versioning-v2-intro-aliases.html Introduction to AWS Lambda Aliases>
+--
+-- This requires permission for the lambda:ListAliases action.
+--
+-- /See:/ <http://docs.aws.amazon.com/lambda/latest/dg/API_ListAliases.html AWS API Reference> for ListAliases.
+module Network.AWS.Lambda.ListAliases
+    (
+    -- * Creating a Request
+      listAliases
+    , ListAliases
+    -- * Request Lenses
+    , laMarker
+    , laMaxItems
+    , laFunctionVersion
+    , laFunctionName
+
+    -- * Destructuring the Response
+    , listAliasesResponse
+    , ListAliasesResponse
+    -- * Response Lenses
+    , larsAliases
+    , larsNextMarker
+    , larsResponseStatus
+    ) where
+
+import           Network.AWS.Lambda.Types
+import           Network.AWS.Lambda.Types.Product
+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)
+
+-- | 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:
+--
+-- * 'laMarker'
+--
+-- * 'laMaxItems'
+--
+-- * 'laFunctionVersion'
+--
+-- * 'laFunctionName'
+listAliases
+    :: Text -- ^ 'laFunctionName'
+    -> ListAliases
+listAliases 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});
+
+-- | Optional integer. Specifies the maximum number of aliases to return in
+-- response. This parameter value must be greater than 0.
+laMaxItems :: Lens' ListAliases (Maybe Natural)
+laMaxItems = lens _laMaxItems (\ s a -> s{_laMaxItems = a}) . mapping _Nat;
+
+-- | If you specify this optional parameter, the API returns only the aliases
+-- pointing to the specific Lambda function version, otherwise returns all
+-- aliases created for the Lambda function.
+laFunctionVersion :: Lens' ListAliases (Maybe Text)
+laFunctionVersion = lens _laFunctionVersion (\ s a -> s{_laFunctionVersion = a});
+
+-- | Lambda function name for which the alias is created.
+laFunctionName :: Lens' ListAliases Text
+laFunctionName = lens _laFunctionName (\ s a -> s{_laFunctionName = a});
+
+instance AWSRequest ListAliases where
+        type Rs ListAliases = ListAliasesResponse
+        request = get lambda
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListAliasesResponse' <$>
+                   (x .?> "Aliases" .!@ mempty) <*> (x .?> "NextMarker")
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders ListAliases where
+        toHeaders = const mempty
+
+instance ToPath ListAliases where
+        toPath ListAliases'{..}
+          = mconcat
+              ["/2015-03-31/functions/", toBS _laFunctionName,
+               "/aliases"]
+
+instance ToQuery ListAliases where
+        toQuery ListAliases'{..}
+          = mconcat
+              ["Marker" =: _laMarker, "MaxItems" =: _laMaxItems,
+               "FunctionVersion" =: _laFunctionVersion]
+
+-- | /See:/ 'listAliasesResponse' smart constructor.
+data ListAliasesResponse = ListAliasesResponse'
+    { _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:
+--
+-- * 'larsAliases'
+--
+-- * 'larsNextMarker'
+--
+-- * 'larsResponseStatus'
+listAliasesResponse
+    :: Int -- ^ 'larsResponseStatus'
+    -> ListAliasesResponse
+listAliasesResponse pResponseStatus_ =
+    ListAliasesResponse'
+    { _larsAliases = Nothing
+    , _larsNextMarker = Nothing
+    , _larsResponseStatus = pResponseStatus_
+    }
+
+-- | An list of alises.
+larsAliases :: Lens' ListAliasesResponse [AliasConfiguration]
+larsAliases = lens _larsAliases (\ s a -> s{_larsAliases = a}) . _Default . _Coerce;
+
+-- | A string, present if there are more aliases.
+larsNextMarker :: Lens' ListAliasesResponse (Maybe Text)
+larsNextMarker = lens _larsNextMarker (\ s a -> s{_larsNextMarker = a});
+
+-- | The response status code.
+larsResponseStatus :: Lens' ListAliasesResponse Int
+larsResponseStatus = lens _larsResponseStatus (\ s a -> s{_larsResponseStatus = a});
diff --git a/gen/Network/AWS/Lambda/ListVersionsByFunction.hs b/gen/Network/AWS/Lambda/ListVersionsByFunction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Lambda/ListVersionsByFunction.hs
@@ -0,0 +1,161 @@
+{-# 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.ListVersionsByFunction
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List all versions of a function.
+--
+-- /See:/ <http://docs.aws.amazon.com/lambda/latest/dg/API_ListVersionsByFunction.html AWS API Reference> for ListVersionsByFunction.
+module Network.AWS.Lambda.ListVersionsByFunction
+    (
+    -- * Creating a Request
+      listVersionsByFunction
+    , ListVersionsByFunction
+    -- * Request Lenses
+    , lvbfMarker
+    , lvbfMaxItems
+    , lvbfFunctionName
+
+    -- * Destructuring the Response
+    , listVersionsByFunctionResponse
+    , ListVersionsByFunctionResponse
+    -- * Response Lenses
+    , lvbfrsVersions
+    , lvbfrsNextMarker
+    , lvbfrsResponseStatus
+    ) where
+
+import           Network.AWS.Lambda.Types
+import           Network.AWS.Lambda.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'listVersionsByFunction' smart constructor.
+data ListVersionsByFunction = ListVersionsByFunction'
+    { _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:
+--
+-- * 'lvbfMarker'
+--
+-- * 'lvbfMaxItems'
+--
+-- * 'lvbfFunctionName'
+listVersionsByFunction
+    :: Text -- ^ 'lvbfFunctionName'
+    -> ListVersionsByFunction
+listVersionsByFunction 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});
+
+-- | Optional integer. Specifies the maximum number of AWS Lambda function
+-- versions to return in response. This parameter value must be greater
+-- than 0.
+lvbfMaxItems :: Lens' ListVersionsByFunction (Maybe Natural)
+lvbfMaxItems = lens _lvbfMaxItems (\ s a -> s{_lvbfMaxItems = a}) . mapping _Nat;
+
+-- | Function name whose versions to list. You can specify an unqualified
+-- 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 only 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.
+lvbfFunctionName :: Lens' ListVersionsByFunction Text
+lvbfFunctionName = lens _lvbfFunctionName (\ s a -> s{_lvbfFunctionName = a});
+
+instance AWSRequest ListVersionsByFunction where
+        type Rs ListVersionsByFunction =
+             ListVersionsByFunctionResponse
+        request = get lambda
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListVersionsByFunctionResponse' <$>
+                   (x .?> "Versions" .!@ mempty) <*>
+                     (x .?> "NextMarker")
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders ListVersionsByFunction where
+        toHeaders = const mempty
+
+instance ToPath ListVersionsByFunction where
+        toPath ListVersionsByFunction'{..}
+          = mconcat
+              ["/2015-03-31/functions/", toBS _lvbfFunctionName,
+               "/versions"]
+
+instance ToQuery ListVersionsByFunction where
+        toQuery ListVersionsByFunction'{..}
+          = mconcat
+              ["Marker" =: _lvbfMarker,
+               "MaxItems" =: _lvbfMaxItems]
+
+-- | /See:/ 'listVersionsByFunctionResponse' smart constructor.
+data ListVersionsByFunctionResponse = ListVersionsByFunctionResponse'
+    { _lvbfrsVersions       :: !(Maybe [FunctionConfiguration])
+    , _lvbfrsNextMarker     :: !(Maybe Text)
+    , _lvbfrsResponseStatus :: !Int
+    } deriving (Eq,Read,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:
+--
+-- * 'lvbfrsVersions'
+--
+-- * 'lvbfrsNextMarker'
+--
+-- * 'lvbfrsResponseStatus'
+listVersionsByFunctionResponse
+    :: Int -- ^ 'lvbfrsResponseStatus'
+    -> ListVersionsByFunctionResponse
+listVersionsByFunctionResponse 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;
+
+-- | A string, present if there are more function versions.
+lvbfrsNextMarker :: Lens' ListVersionsByFunctionResponse (Maybe Text)
+lvbfrsNextMarker = lens _lvbfrsNextMarker (\ s a -> s{_lvbfrsNextMarker = a});
+
+-- | The response status code.
+lvbfrsResponseStatus :: Lens' ListVersionsByFunctionResponse Int
+lvbfrsResponseStatus = lens _lvbfrsResponseStatus (\ s a -> s{_lvbfrsResponseStatus = a});
diff --git a/gen/Network/AWS/Lambda/PublishVersion.hs b/gen/Network/AWS/Lambda/PublishVersion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Lambda/PublishVersion.hs
@@ -0,0 +1,134 @@
+{-# 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.PublishVersion
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Publishes a version of your function from the current snapshot of HEAD.
+-- That is, AWS Lambda takes a snapshot of the function code and
+-- configuration information from HEAD and publishes a new version. The
+-- code and 'handler' of this specific Lambda function version cannot be
+-- modified after publication, but you can modify the configuration
+-- information.
+--
+-- /See:/ <http://docs.aws.amazon.com/lambda/latest/dg/API_PublishVersion.html AWS API Reference> for PublishVersion.
+module Network.AWS.Lambda.PublishVersion
+    (
+    -- * Creating a Request
+      publishVersion
+    , PublishVersion
+    -- * Request Lenses
+    , pvCodeSha256
+    , pvDescription
+    , pvFunctionName
+
+    -- * Destructuring the Response
+    , functionConfiguration
+    , FunctionConfiguration
+    -- * Response Lenses
+    , fcMemorySize
+    , fcRuntime
+    , fcFunctionARN
+    , fcRole
+    , fcVersion
+    , fcFunctionName
+    , fcCodeSize
+    , fcHandler
+    , fcTimeout
+    , fcLastModified
+    , fcCodeSha256
+    , fcDescription
+    ) where
+
+import           Network.AWS.Lambda.Types
+import           Network.AWS.Lambda.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'publishVersion' smart constructor.
+data PublishVersion = PublishVersion'
+    { _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:
+--
+-- * 'pvCodeSha256'
+--
+-- * 'pvDescription'
+--
+-- * 'pvFunctionName'
+publishVersion
+    :: Text -- ^ 'pvFunctionName'
+    -> PublishVersion
+publishVersion 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 HEAD version for the
+-- publication to succeed.
+pvCodeSha256 :: Lens' PublishVersion (Maybe Text)
+pvCodeSha256 = lens _pvCodeSha256 (\ s a -> s{_pvCodeSha256 = a});
+
+-- | The description for the version you are publishing. If not provided, AWS
+-- Lambda copies the description from the HEAD version.
+pvDescription :: Lens' PublishVersion (Maybe Text)
+pvDescription = lens _pvDescription (\ s a -> s{_pvDescription = a});
+
+-- | The Lambda function name. You can specify an unqualified 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 only 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.
+pvFunctionName :: Lens' PublishVersion Text
+pvFunctionName = lens _pvFunctionName (\ s a -> s{_pvFunctionName = a});
+
+instance AWSRequest PublishVersion where
+        type Rs PublishVersion = FunctionConfiguration
+        request = postJSON lambda
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders PublishVersion where
+        toHeaders = const mempty
+
+instance ToJSON PublishVersion where
+        toJSON PublishVersion'{..}
+          = object
+              (catMaybes
+                 [("CodeSha256" .=) <$> _pvCodeSha256,
+                  ("Description" .=) <$> _pvDescription])
+
+instance ToPath PublishVersion where
+        toPath PublishVersion'{..}
+          = mconcat
+              ["/2015-03-31/functions/", toBS _pvFunctionName,
+               "/versions"]
+
+instance ToQuery PublishVersion where
+        toQuery = 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
@@ -18,8 +18,11 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- You can remove individual permissions from an access policy associated
--- with a Lambda function by providing a Statement ID.
+-- You can remove individual permissions from an resource policy associated
+-- with a Lambda function by providing a statement ID that you provided
+-- when you addded the permission. The API removes corresponding permission
+-- that is associated with the specific ARN identified by the 'Qualifier'
+-- parameter.
 --
 -- Note that removal of a permission will cause an active event source to
 -- lose permission to the function.
@@ -33,6 +36,7 @@
       removePermission
     , RemovePermission
     -- * Request Lenses
+    , rpQualifier
     , rpFunctionName
     , rpStatementId
 
@@ -49,7 +53,8 @@
 
 -- | /See:/ 'removePermission' smart constructor.
 data RemovePermission = RemovePermission'
-    { _rpFunctionName :: !Text
+    { _rpQualifier    :: !(Maybe Text)
+    , _rpFunctionName :: !Text
     , _rpStatementId  :: !Text
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
@@ -57,6 +62,8 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'rpQualifier'
+--
 -- * 'rpFunctionName'
 --
 -- * 'rpStatementId'
@@ -66,11 +73,20 @@
     -> RemovePermission
 removePermission pFunctionName_ pStatementId_ =
     RemovePermission'
-    { _rpFunctionName = pFunctionName_
+    { _rpQualifier = Nothing
+    , _rpFunctionName = pFunctionName_
     , _rpStatementId = pStatementId_
     }
 
--- | Lambda function whose access policy you want to remove a permission
+-- | You can specify this optional parameter to remove permission associated
+-- with a specific function version or function alias. The value of this
+-- paramter is the function version or alias name. 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 an unqualified function name (for example,
@@ -100,10 +116,11 @@
         toPath RemovePermission'{..}
           = mconcat
               ["/2015-03-31/functions/", toBS _rpFunctionName,
-               "/versions/HEAD/policy/", toBS _rpStatementId]
+               "/policy/", toBS _rpStatementId]
 
 instance ToQuery RemovePermission where
-        toQuery = const mempty
+        toQuery RemovePermission'{..}
+          = mconcat ["Qualifier" =: _rpQualifier]
 
 -- | /See:/ 'removePermissionResponse' smart constructor.
 data RemovePermissionResponse =
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
@@ -39,6 +39,14 @@
     -- * Runtime
     , Runtime (..)
 
+    -- * AliasConfiguration
+    , AliasConfiguration
+    , aliasConfiguration
+    , acName
+    , acFunctionVersion
+    , acAliasARN
+    , acDescription
+
     -- * EventSourceMappingConfiguration
     , EventSourceMappingConfiguration
     , eventSourceMappingConfiguration
@@ -72,11 +80,13 @@
     , fcRuntime
     , fcFunctionARN
     , fcRole
+    , fcVersion
     , fcFunctionName
     , fcCodeSize
     , fcHandler
     , fcTimeout
     , fcLastModified
+    , fcCodeSha256
     , fcDescription
     ) where
 
@@ -121,7 +131,7 @@
 _PolicyLengthExceededException =
     _ServiceError . hasStatus 400 . hasCode "PolicyLengthExceededException"
 
--- | Prism for UnsupportedMediaTypeException' errors.
+-- | 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"
@@ -139,7 +149,9 @@
 _InvalidParameterValueException =
     _ServiceError . hasStatus 400 . hasCode "InvalidParameterValueException"
 
--- | Prism for RequestTooLargeException' errors.
+-- | 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"
@@ -153,7 +165,8 @@
 _ServiceException :: AsError a => Getting (First ServiceError) a ServiceError
 _ServiceException = _ServiceError . hasStatus 500 . hasCode "ServiceException"
 
--- | Prism for CodeStorageExceededException' errors.
+-- | 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"
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
@@ -20,6 +20,66 @@
 import           Network.AWS.Lambda.Types.Sum
 import           Network.AWS.Prelude
 
+-- | Provides configuration information about a Lambda function version
+-- alias.
+--
+-- /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)
+
+-- | 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:
+--
+-- * 'acName'
+--
+-- * 'acFunctionVersion'
+--
+-- * 'acAliasARN'
+--
+-- * 'acDescription'
+aliasConfiguration
+    :: AliasConfiguration
+aliasConfiguration =
+    AliasConfiguration'
+    { _acName = Nothing
+    , _acFunctionVersion = Nothing
+    , _acAliasARN = Nothing
+    , _acDescription = Nothing
+    }
+
+-- | Alias name.
+acName :: Lens' AliasConfiguration (Maybe Text)
+acName = lens _acName (\ s a -> s{_acName = a});
+
+-- | Function version to which the alias points.
+acFunctionVersion :: Lens' AliasConfiguration (Maybe Text)
+acFunctionVersion = lens _acFunctionVersion (\ s a -> s{_acFunctionVersion = a});
+
+-- | Lambda function ARN that is qualified using alias name as the suffix.
+-- For example, if you create an alias \"BETA\" pointing to a helloworld
+-- function version, the ARN is
+-- 'arn:aws:lambda:aws-regions:acct-id:function:helloworld:BETA'.
+acAliasARN :: Lens' AliasConfiguration (Maybe Text)
+acAliasARN = lens _acAliasARN (\ s a -> s{_acAliasARN = a});
+
+-- | Alias description.
+acDescription :: Lens' AliasConfiguration (Maybe Text)
+acDescription = lens _acDescription (\ s a -> s{_acDescription = a});
+
+instance FromJSON AliasConfiguration where
+        parseJSON
+          = withObject "AliasConfiguration"
+              (\ x ->
+                 AliasConfiguration' <$>
+                   (x .:? "Name") <*> (x .:? "FunctionVersion") <*>
+                     (x .:? "AliasArn")
+                     <*> (x .:? "Description"))
+
 -- | Describes mapping between an Amazon Kinesis stream and a Lambda
 -- function.
 --
@@ -238,11 +298,13 @@
     , _fcRuntime      :: !(Maybe Runtime)
     , _fcFunctionARN  :: !(Maybe Text)
     , _fcRole         :: !(Maybe Text)
+    , _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)
 
@@ -258,6 +320,8 @@
 --
 -- * 'fcRole'
 --
+-- * 'fcVersion'
+--
 -- * 'fcFunctionName'
 --
 -- * 'fcCodeSize'
@@ -268,6 +332,8 @@
 --
 -- * 'fcLastModified'
 --
+-- * 'fcCodeSha256'
+--
 -- * 'fcDescription'
 functionConfiguration
     :: FunctionConfiguration
@@ -277,11 +343,13 @@
     , _fcRuntime = Nothing
     , _fcFunctionARN = Nothing
     , _fcRole = Nothing
+    , _fcVersion = Nothing
     , _fcFunctionName = Nothing
     , _fcCodeSize = Nothing
     , _fcHandler = Nothing
     , _fcTimeout = Nothing
     , _fcLastModified = Nothing
+    , _fcCodeSha256 = Nothing
     , _fcDescription = Nothing
     }
 
@@ -304,6 +372,10 @@
 fcRole :: Lens' FunctionConfiguration (Maybe Text)
 fcRole = lens _fcRole (\ s a -> s{_fcRole = a});
 
+-- | The version of the Lambda function.
+fcVersion :: Lens' FunctionConfiguration (Maybe Text)
+fcVersion = lens _fcVersion (\ s a -> s{_fcVersion = a});
+
 -- | The name of the function.
 fcFunctionName :: Lens' FunctionConfiguration (Maybe Text)
 fcFunctionName = lens _fcFunctionName (\ s a -> s{_fcFunctionName = a});
@@ -327,6 +399,10 @@
 fcLastModified :: Lens' FunctionConfiguration (Maybe Text)
 fcLastModified = lens _fcLastModified (\ s a -> s{_fcLastModified = a});
 
+-- | It is the SHA256 hash of your function deployment package.
+fcCodeSha256 :: Lens' FunctionConfiguration (Maybe Text)
+fcCodeSha256 = lens _fcCodeSha256 (\ s a -> s{_fcCodeSha256 = a});
+
 -- | The user-provided description.
 fcDescription :: Lens' FunctionConfiguration (Maybe Text)
 fcDescription = lens _fcDescription (\ s a -> s{_fcDescription = a});
@@ -339,9 +415,11 @@
                    (x .:? "MemorySize") <*> (x .:? "Runtime") <*>
                      (x .:? "FunctionArn")
                      <*> (x .:? "Role")
+                     <*> (x .:? "Version")
                      <*> (x .:? "FunctionName")
                      <*> (x .:? "CodeSize")
                      <*> (x .:? "Handler")
                      <*> (x .:? "Timeout")
                      <*> (x .:? "LastModified")
+                     <*> (x .:? "CodeSha256")
                      <*> (x .:? "Description"))
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
@@ -100,19 +100,22 @@
 data Runtime
     = JAVA8
     | Nodejs
+    | PYTHON2_7
     deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
 
 instance FromText Runtime where
     parser = takeLowerText >>= \case
         "java8" -> pure JAVA8
         "nodejs" -> pure Nodejs
+        "python2.7" -> pure PYTHON2_7
         e -> fromTextError $ "Failure parsing Runtime from value: '" <> e
-           <> "'. Accepted values: java8, nodejs"
+           <> "'. Accepted values: java8, nodejs, python2.7"
 
 instance ToText Runtime where
     toText = \case
         JAVA8 -> "java8"
         Nodejs -> "nodejs"
+        PYTHON2_7 -> "python2.7"
 
 instance Hashable     Runtime
 instance ToByteString Runtime
diff --git a/gen/Network/AWS/Lambda/UpdateAlias.hs b/gen/Network/AWS/Lambda/UpdateAlias.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Lambda/UpdateAlias.hs
@@ -0,0 +1,126 @@
+{-# 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.UpdateAlias
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Using this API you can update function version to which the alias points
+-- to and alias description. For more information, see
+-- <http://docs.aws.amazon.com/lambda/latest/dg/versioning-v2-intro-aliases.html Introduction to AWS Lambda Aliases>
+--
+-- This requires permission for the lambda:UpdateAlias action.
+--
+-- /See:/ <http://docs.aws.amazon.com/lambda/latest/dg/API_UpdateAlias.html AWS API Reference> for UpdateAlias.
+module Network.AWS.Lambda.UpdateAlias
+    (
+    -- * Creating a Request
+      updateAlias
+    , UpdateAlias
+    -- * Request Lenses
+    , uaFunctionVersion
+    , uaDescription
+    , uaFunctionName
+    , uaName
+
+    -- * Destructuring the Response
+    , aliasConfiguration
+    , AliasConfiguration
+    -- * Response Lenses
+    , acName
+    , acFunctionVersion
+    , acAliasARN
+    , acDescription
+    ) where
+
+import           Network.AWS.Lambda.Types
+import           Network.AWS.Lambda.Types.Product
+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)
+
+-- | 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:
+--
+-- * 'uaFunctionVersion'
+--
+-- * 'uaDescription'
+--
+-- * 'uaFunctionName'
+--
+-- * 'uaName'
+updateAlias
+    :: Text -- ^ 'uaFunctionName'
+    -> Text -- ^ 'uaName'
+    -> UpdateAlias
+updateAlias pFunctionName_ pName_ =
+    UpdateAlias'
+    { _uaFunctionVersion = Nothing
+    , _uaDescription = Nothing
+    , _uaFunctionName = pFunctionName_
+    , _uaName = pName_
+    }
+
+-- | Using this parameter you can optionally change the Lambda function
+-- version to which the alias to points to.
+uaFunctionVersion :: Lens' UpdateAlias (Maybe Text)
+uaFunctionVersion = lens _uaFunctionVersion (\ s a -> s{_uaFunctionVersion = a});
+
+-- | You can optionally change the description of the alias using this
+-- parameter.
+uaDescription :: Lens' UpdateAlias (Maybe Text)
+uaDescription = lens _uaDescription (\ s a -> s{_uaDescription = a});
+
+-- | The function name for which the alias is created.
+uaFunctionName :: Lens' UpdateAlias Text
+uaFunctionName = lens _uaFunctionName (\ s a -> s{_uaFunctionName = a});
+
+-- | The alias name.
+uaName :: Lens' UpdateAlias Text
+uaName = lens _uaName (\ s a -> s{_uaName = a});
+
+instance AWSRequest UpdateAlias where
+        type Rs UpdateAlias = AliasConfiguration
+        request = putJSON lambda
+        response = receiveJSON (\ s h x -> eitherParseJSON x)
+
+instance ToHeaders UpdateAlias where
+        toHeaders = const mempty
+
+instance ToJSON UpdateAlias where
+        toJSON UpdateAlias'{..}
+          = object
+              (catMaybes
+                 [("FunctionVersion" .=) <$> _uaFunctionVersion,
+                  ("Description" .=) <$> _uaDescription])
+
+instance ToPath UpdateAlias where
+        toPath UpdateAlias'{..}
+          = mconcat
+              ["/2015-03-31/functions/", toBS _uaFunctionName,
+               "/aliases/", toBS _uaName]
+
+instance ToQuery UpdateAlias where
+        toQuery = 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
@@ -36,6 +36,7 @@
     , uS3Key
     , uZipFile
     , uS3Bucket
+    , uPublish
     , uFunctionName
 
     -- * Destructuring the Response
@@ -46,11 +47,13 @@
     , fcRuntime
     , fcFunctionARN
     , fcRole
+    , fcVersion
     , fcFunctionName
     , fcCodeSize
     , fcHandler
     , fcTimeout
     , fcLastModified
+    , fcCodeSha256
     , fcDescription
     ) where
 
@@ -66,6 +69,7 @@
     , _uS3Key           :: !(Maybe Text)
     , _uZipFile         :: !(Maybe Base64)
     , _uS3Bucket        :: !(Maybe Text)
+    , _uPublish         :: !(Maybe Bool)
     , _uFunctionName    :: !Text
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
@@ -81,6 +85,8 @@
 --
 -- * 'uS3Bucket'
 --
+-- * 'uPublish'
+--
 -- * 'uFunctionName'
 updateFunctionCode
     :: Text -- ^ 'uFunctionName'
@@ -91,6 +97,7 @@
     , _uS3Key = Nothing
     , _uZipFile = Nothing
     , _uS3Bucket = Nothing
+    , _uPublish = Nothing
     , _uFunctionName = pFunctionName_
     }
 
@@ -120,6 +127,11 @@
 uS3Bucket :: Lens' UpdateFunctionCode (Maybe Text)
 uS3Bucket = lens _uS3Bucket (\ s a -> s{_uS3Bucket = 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 an unqualified function name (for example,
@@ -148,13 +160,14 @@
                  [("S3ObjectVersion" .=) <$> _uS3ObjectVersion,
                   ("S3Key" .=) <$> _uS3Key,
                   ("ZipFile" .=) <$> _uZipFile,
-                  ("S3Bucket" .=) <$> _uS3Bucket])
+                  ("S3Bucket" .=) <$> _uS3Bucket,
+                  ("Publish" .=) <$> _uPublish])
 
 instance ToPath UpdateFunctionCode where
         toPath UpdateFunctionCode'{..}
           = mconcat
               ["/2015-03-31/functions/", toBS _uFunctionName,
-               "/versions/HEAD/code"]
+               "/code"]
 
 instance ToQuery UpdateFunctionCode where
         toQuery = const mempty
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
@@ -49,11 +49,13 @@
     , fcRuntime
     , fcFunctionARN
     , fcRole
+    , fcVersion
     , fcFunctionName
     , fcCodeSize
     , fcHandler
     , fcTimeout
     , fcLastModified
+    , fcCodeSha256
     , fcDescription
     ) where
 
@@ -168,7 +170,7 @@
         toPath UpdateFunctionConfiguration'{..}
           = mconcat
               ["/2015-03-31/functions/", toBS _ufcFunctionName,
-               "/versions/HEAD/configuration"]
+               "/configuration"]
 
 instance ToQuery UpdateFunctionConfiguration where
         toQuery = const mempty
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
@@ -37,12 +37,24 @@
 --         , testUpdateEventSourceMapping $
 --             updateEventSourceMapping
 --
+--         , testCreateAlias $
+--             createAlias
+--
+--         , testListVersionsByFunction $
+--             listVersionsByFunction
+--
+--         , testListAliases $
+--             listAliases
+--
 --         , testRemovePermission $
 --             removePermission
 --
 --         , testInvoke $
 --             invoke
 --
+--         , testGetAlias $
+--             getAlias
+--
 --         , testGetEventSourceMapping $
 --             getEventSourceMapping
 --
@@ -58,9 +70,18 @@
 --         , testListEventSourceMappings $
 --             listEventSourceMappings
 --
+--         , testDeleteAlias $
+--             deleteAlias
+--
+--         , testUpdateAlias $
+--             updateAlias
+--
 --         , testAddPermission $
 --             addPermission
 --
+--         , testPublishVersion $
+--             publishVersion
+--
 --         , testDeleteFunction $
 --             deleteFunction
 --
@@ -88,12 +109,24 @@
 --         , testUpdateEventSourceMappingResponse $
 --             eventSourceMappingConfiguration
 --
+--         , testCreateAliasResponse $
+--             aliasConfiguration
+--
+--         , testListVersionsByFunctionResponse $
+--             listVersionsByFunctionResponse
+--
+--         , testListAliasesResponse $
+--             listAliasesResponse
+--
 --         , testRemovePermissionResponse $
 --             removePermissionResponse
 --
 --         , testInvokeResponse $
 --             invokeResponse
 --
+--         , testGetAliasResponse $
+--             aliasConfiguration
+--
 --         , testGetEventSourceMappingResponse $
 --             eventSourceMappingConfiguration
 --
@@ -109,9 +142,18 @@
 --         , testListEventSourceMappingsResponse $
 --             listEventSourceMappingsResponse
 --
+--         , testDeleteAliasResponse $
+--             deleteAliasResponse
+--
+--         , testUpdateAliasResponse $
+--             aliasConfiguration
+--
 --         , testAddPermissionResponse $
 --             addPermissionResponse
 --
+--         , testPublishVersionResponse $
+--             functionConfiguration
+--
 --         , testDeleteFunctionResponse $
 --             deleteFunctionResponse
 --
@@ -147,6 +189,21 @@
     "UpdateEventSourceMapping"
     "fixture/UpdateEventSourceMapping.yaml"
 
+testCreateAlias :: CreateAlias -> TestTree
+testCreateAlias = req
+    "CreateAlias"
+    "fixture/CreateAlias.yaml"
+
+testListVersionsByFunction :: ListVersionsByFunction -> TestTree
+testListVersionsByFunction = req
+    "ListVersionsByFunction"
+    "fixture/ListVersionsByFunction.yaml"
+
+testListAliases :: ListAliases -> TestTree
+testListAliases = req
+    "ListAliases"
+    "fixture/ListAliases.yaml"
+
 testRemovePermission :: RemovePermission -> TestTree
 testRemovePermission = req
     "RemovePermission"
@@ -157,6 +214,11 @@
     "Invoke"
     "fixture/Invoke.yaml"
 
+testGetAlias :: GetAlias -> TestTree
+testGetAlias = req
+    "GetAlias"
+    "fixture/GetAlias.yaml"
+
 testGetEventSourceMapping :: GetEventSourceMapping -> TestTree
 testGetEventSourceMapping = req
     "GetEventSourceMapping"
@@ -182,11 +244,26 @@
     "ListEventSourceMappings"
     "fixture/ListEventSourceMappings.yaml"
 
+testDeleteAlias :: DeleteAlias -> TestTree
+testDeleteAlias = req
+    "DeleteAlias"
+    "fixture/DeleteAlias.yaml"
+
+testUpdateAlias :: UpdateAlias -> TestTree
+testUpdateAlias = req
+    "UpdateAlias"
+    "fixture/UpdateAlias.yaml"
+
 testAddPermission :: AddPermission -> TestTree
 testAddPermission = req
     "AddPermission"
     "fixture/AddPermission.yaml"
 
+testPublishVersion :: PublishVersion -> TestTree
+testPublishVersion = req
+    "PublishVersion"
+    "fixture/PublishVersion.yaml"
+
 testDeleteFunction :: DeleteFunction -> TestTree
 testDeleteFunction = req
     "DeleteFunction"
@@ -235,6 +312,27 @@
     lambda
     (Proxy :: Proxy UpdateEventSourceMapping)
 
+testCreateAliasResponse :: AliasConfiguration -> TestTree
+testCreateAliasResponse = res
+    "CreateAliasResponse"
+    "fixture/CreateAliasResponse.proto"
+    lambda
+    (Proxy :: Proxy CreateAlias)
+
+testListVersionsByFunctionResponse :: ListVersionsByFunctionResponse -> TestTree
+testListVersionsByFunctionResponse = res
+    "ListVersionsByFunctionResponse"
+    "fixture/ListVersionsByFunctionResponse.proto"
+    lambda
+    (Proxy :: Proxy ListVersionsByFunction)
+
+testListAliasesResponse :: ListAliasesResponse -> TestTree
+testListAliasesResponse = res
+    "ListAliasesResponse"
+    "fixture/ListAliasesResponse.proto"
+    lambda
+    (Proxy :: Proxy ListAliases)
+
 testRemovePermissionResponse :: RemovePermissionResponse -> TestTree
 testRemovePermissionResponse = res
     "RemovePermissionResponse"
@@ -249,6 +347,13 @@
     lambda
     (Proxy :: Proxy Invoke)
 
+testGetAliasResponse :: AliasConfiguration -> TestTree
+testGetAliasResponse = res
+    "GetAliasResponse"
+    "fixture/GetAliasResponse.proto"
+    lambda
+    (Proxy :: Proxy GetAlias)
+
 testGetEventSourceMappingResponse :: EventSourceMappingConfiguration -> TestTree
 testGetEventSourceMappingResponse = res
     "GetEventSourceMappingResponse"
@@ -284,12 +389,33 @@
     lambda
     (Proxy :: Proxy ListEventSourceMappings)
 
+testDeleteAliasResponse :: DeleteAliasResponse -> TestTree
+testDeleteAliasResponse = res
+    "DeleteAliasResponse"
+    "fixture/DeleteAliasResponse.proto"
+    lambda
+    (Proxy :: Proxy DeleteAlias)
+
+testUpdateAliasResponse :: AliasConfiguration -> TestTree
+testUpdateAliasResponse = res
+    "UpdateAliasResponse"
+    "fixture/UpdateAliasResponse.proto"
+    lambda
+    (Proxy :: Proxy UpdateAlias)
+
 testAddPermissionResponse :: AddPermissionResponse -> TestTree
 testAddPermissionResponse = res
     "AddPermissionResponse"
     "fixture/AddPermissionResponse.proto"
     lambda
     (Proxy :: Proxy AddPermission)
+
+testPublishVersionResponse :: FunctionConfiguration -> TestTree
+testPublishVersionResponse = res
+    "PublishVersionResponse"
+    "fixture/PublishVersionResponse.proto"
+    lambda
+    (Proxy :: Proxy PublishVersion)
 
 testDeleteFunctionResponse :: DeleteFunctionResponse -> TestTree
 testDeleteFunctionResponse = res
