diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.3.6`
+`1.3.7`
 
 
 ## Description
diff --git a/amazonka-ecs.cabal b/amazonka-ecs.cabal
--- a/amazonka-ecs.cabal
+++ b/amazonka-ecs.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-ecs
-version:               1.3.6
+version:               1.3.7
 synopsis:              Amazon EC2 Container Service SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
@@ -89,7 +89,7 @@
         , Network.AWS.ECS.Types.Sum
 
     build-depends:
-          amazonka-core == 1.3.6.*
+          amazonka-core == 1.3.7.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-ecs-test
@@ -109,12 +109,11 @@
         , Test.AWS.ECS.Internal
 
     build-depends:
-          amazonka-core == 1.3.6.*
-        , amazonka-test == 1.3.6.*
-        , amazonka-ecs == 1.3.6.*
+          amazonka-core == 1.3.7.*
+        , amazonka-test == 1.3.7.*
+        , amazonka-ecs == 1.3.7.*
         , base
         , bytestring
-        , lens
         , tasty
         , tasty-hunit
         , text
diff --git a/gen/Network/AWS/ECS.hs b/gen/Network/AWS/ECS.hs
--- a/gen/Network/AWS/ECS.hs
+++ b/gen/Network/AWS/ECS.hs
@@ -372,14 +372,18 @@
     -- ** Task
     , Task
     , task
+    , tStoppedAt
     , tDesiredStatus
     , tOverrides
     , tClusterARN
+    , tCreatedAt
     , tTaskARN
     , tContainerInstanceARN
     , tLastStatus
     , tContainers
+    , tStartedAt
     , tStartedBy
+    , tStoppedReason
     , tTaskDefinitionARN
 
     -- ** TaskDefinition
diff --git a/gen/Network/AWS/ECS/CreateCluster.hs b/gen/Network/AWS/ECS/CreateCluster.hs
--- a/gen/Network/AWS/ECS/CreateCluster.hs
+++ b/gen/Network/AWS/ECS/CreateCluster.hs
@@ -42,6 +42,7 @@
 
 import           Network.AWS.ECS.Types
 import           Network.AWS.ECS.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/ECS/CreateService.hs b/gen/Network/AWS/ECS/CreateService.hs
--- a/gen/Network/AWS/ECS/CreateService.hs
+++ b/gen/Network/AWS/ECS/CreateService.hs
@@ -21,8 +21,28 @@
 -- Runs and maintains a desired number of tasks from a specified task
 -- definition. If the number of tasks running in a service drops below
 -- 'desiredCount', Amazon ECS spawns another instantiation of the task in
--- the specified cluster.
+-- the specified cluster. To update an existing service, see UpdateService.
 --
+-- When the service scheduler launches new tasks, it attempts to balance
+-- them across the Availability Zones in your cluster with the following
+-- logic:
+--
+-- -   Determine which of the container instances in your cluster can
+--     support your service\'s task definition (for example, they have the
+--     required CPU, memory, ports, and container instance attributes).
+--
+-- -   Sort the valid container instances by the fewest number of running
+--     tasks for this service in the same Availability Zone as the
+--     instance. For example, if zone A has one running service task and
+--     zones B and C each have zero, valid container instances in either
+--     zone B or C are considered optimal for placement.
+--
+-- -   Place the new service task on a valid container instance in an
+--     optimal Availability Zone (based on the previous steps), favoring
+--     container instances with the fewest number of running tasks for this
+--     service.
+--
+--
 -- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html AWS API Reference> for CreateService.
 module Network.AWS.ECS.CreateService
     (
@@ -48,6 +68,7 @@
 
 import           Network.AWS.ECS.Types
 import           Network.AWS.ECS.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/ECS/DeleteCluster.hs b/gen/Network/AWS/ECS/DeleteCluster.hs
--- a/gen/Network/AWS/ECS/DeleteCluster.hs
+++ b/gen/Network/AWS/ECS/DeleteCluster.hs
@@ -42,6 +42,7 @@
 
 import           Network.AWS.ECS.Types
 import           Network.AWS.ECS.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/ECS/DeleteService.hs b/gen/Network/AWS/ECS/DeleteService.hs
--- a/gen/Network/AWS/ECS/DeleteService.hs
+++ b/gen/Network/AWS/ECS/DeleteService.hs
@@ -18,8 +18,22 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Deletes a specified service within a cluster.
+-- Deletes a specified service within a cluster. You can delete a service
+-- if you have no running tasks in it and the desired task count is zero.
+-- If the service is actively maintaining tasks, you cannot delete it, and
+-- you must update the service to a desired task count of zero. For more
+-- information, see UpdateService.
 --
+-- When you delete a service, if there are still running tasks that require
+-- cleanup, the service status moves from 'ACTIVE' to 'DRAINING', and the
+-- service is no longer visible in the console or in ListServices API
+-- operations. After the tasks have stopped, then the service status moves
+-- from 'DRAINING' to 'INACTIVE'. Services in the 'DRAINING' or 'INACTIVE'
+-- status can still be viewed with DescribeServices API operations;
+-- however, in the future, 'INACTIVE' services may be cleaned up and purged
+-- from Amazon ECS record keeping, and DescribeServices API operations on
+-- those services will return a 'ServiceNotFoundException' error.
+--
 -- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DeleteService.html AWS API Reference> for DeleteService.
 module Network.AWS.ECS.DeleteService
     (
@@ -40,6 +54,7 @@
 
 import           Network.AWS.ECS.Types
 import           Network.AWS.ECS.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/ECS/DeregisterContainerInstance.hs b/gen/Network/AWS/ECS/DeregisterContainerInstance.hs
--- a/gen/Network/AWS/ECS/DeregisterContainerInstance.hs
+++ b/gen/Network/AWS/ECS/DeregisterContainerInstance.hs
@@ -55,6 +55,7 @@
 
 import           Network.AWS.ECS.Types
 import           Network.AWS.ECS.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/ECS/DeregisterTaskDefinition.hs b/gen/Network/AWS/ECS/DeregisterTaskDefinition.hs
--- a/gen/Network/AWS/ECS/DeregisterTaskDefinition.hs
+++ b/gen/Network/AWS/ECS/DeregisterTaskDefinition.hs
@@ -50,6 +50,7 @@
 
 import           Network.AWS.ECS.Types
 import           Network.AWS.ECS.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/ECS/DescribeClusters.hs b/gen/Network/AWS/ECS/DescribeClusters.hs
--- a/gen/Network/AWS/ECS/DescribeClusters.hs
+++ b/gen/Network/AWS/ECS/DescribeClusters.hs
@@ -40,6 +40,7 @@
 
 import           Network.AWS.ECS.Types
 import           Network.AWS.ECS.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/ECS/DescribeContainerInstances.hs b/gen/Network/AWS/ECS/DescribeContainerInstances.hs
--- a/gen/Network/AWS/ECS/DescribeContainerInstances.hs
+++ b/gen/Network/AWS/ECS/DescribeContainerInstances.hs
@@ -43,6 +43,7 @@
 
 import           Network.AWS.ECS.Types
 import           Network.AWS.ECS.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/ECS/DescribeServices.hs b/gen/Network/AWS/ECS/DescribeServices.hs
--- a/gen/Network/AWS/ECS/DescribeServices.hs
+++ b/gen/Network/AWS/ECS/DescribeServices.hs
@@ -41,6 +41,7 @@
 
 import           Network.AWS.ECS.Types
 import           Network.AWS.ECS.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/ECS/DescribeTaskDefinition.hs b/gen/Network/AWS/ECS/DescribeTaskDefinition.hs
--- a/gen/Network/AWS/ECS/DescribeTaskDefinition.hs
+++ b/gen/Network/AWS/ECS/DescribeTaskDefinition.hs
@@ -44,6 +44,7 @@
 
 import           Network.AWS.ECS.Types
 import           Network.AWS.ECS.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/ECS/DescribeTasks.hs b/gen/Network/AWS/ECS/DescribeTasks.hs
--- a/gen/Network/AWS/ECS/DescribeTasks.hs
+++ b/gen/Network/AWS/ECS/DescribeTasks.hs
@@ -41,6 +41,7 @@
 
 import           Network.AWS.ECS.Types
 import           Network.AWS.ECS.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/ECS/DiscoverPollEndpoint.hs b/gen/Network/AWS/ECS/DiscoverPollEndpoint.hs
--- a/gen/Network/AWS/ECS/DiscoverPollEndpoint.hs
+++ b/gen/Network/AWS/ECS/DiscoverPollEndpoint.hs
@@ -45,6 +45,7 @@
 
 import           Network.AWS.ECS.Types
 import           Network.AWS.ECS.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/ECS/ListClusters.hs b/gen/Network/AWS/ECS/ListClusters.hs
--- a/gen/Network/AWS/ECS/ListClusters.hs
+++ b/gen/Network/AWS/ECS/ListClusters.hs
@@ -43,6 +43,7 @@
 
 import           Network.AWS.ECS.Types
 import           Network.AWS.ECS.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Pager
 import           Network.AWS.Prelude
 import           Network.AWS.Request
diff --git a/gen/Network/AWS/ECS/ListContainerInstances.hs b/gen/Network/AWS/ECS/ListContainerInstances.hs
--- a/gen/Network/AWS/ECS/ListContainerInstances.hs
+++ b/gen/Network/AWS/ECS/ListContainerInstances.hs
@@ -44,6 +44,7 @@
 
 import           Network.AWS.ECS.Types
 import           Network.AWS.ECS.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Pager
 import           Network.AWS.Prelude
 import           Network.AWS.Request
diff --git a/gen/Network/AWS/ECS/ListServices.hs b/gen/Network/AWS/ECS/ListServices.hs
--- a/gen/Network/AWS/ECS/ListServices.hs
+++ b/gen/Network/AWS/ECS/ListServices.hs
@@ -44,6 +44,7 @@
 
 import           Network.AWS.ECS.Types
 import           Network.AWS.ECS.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Pager
 import           Network.AWS.Prelude
 import           Network.AWS.Request
@@ -93,9 +94,9 @@
 -- 'ListServices' only returns 'maxResults' results in a single page along
 -- with a 'nextToken' response element. The remaining results of the
 -- initial request can be seen by sending another 'ListServices' request
--- with the returned 'nextToken' value. This value can be between 1 and
--- 100. If this parameter is not used, then 'ListServices' returns up to
--- 100 results and a 'nextToken' value if applicable.
+-- with the returned 'nextToken' value. This value can be between 1 and 10.
+-- If this parameter is not used, then 'ListServices' returns up to 10
+-- results and a 'nextToken' value if applicable.
 lsMaxResults :: Lens' ListServices (Maybe Int)
 lsMaxResults = lens _lsMaxResults (\ s a -> s{_lsMaxResults = a});
 
diff --git a/gen/Network/AWS/ECS/ListTaskDefinitionFamilies.hs b/gen/Network/AWS/ECS/ListTaskDefinitionFamilies.hs
--- a/gen/Network/AWS/ECS/ListTaskDefinitionFamilies.hs
+++ b/gen/Network/AWS/ECS/ListTaskDefinitionFamilies.hs
@@ -47,6 +47,7 @@
 
 import           Network.AWS.ECS.Types
 import           Network.AWS.ECS.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Pager
 import           Network.AWS.Prelude
 import           Network.AWS.Request
diff --git a/gen/Network/AWS/ECS/ListTaskDefinitions.hs b/gen/Network/AWS/ECS/ListTaskDefinitions.hs
--- a/gen/Network/AWS/ECS/ListTaskDefinitions.hs
+++ b/gen/Network/AWS/ECS/ListTaskDefinitions.hs
@@ -48,6 +48,7 @@
 
 import           Network.AWS.ECS.Types
 import           Network.AWS.ECS.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Pager
 import           Network.AWS.Prelude
 import           Network.AWS.Request
diff --git a/gen/Network/AWS/ECS/ListTasks.hs b/gen/Network/AWS/ECS/ListTasks.hs
--- a/gen/Network/AWS/ECS/ListTasks.hs
+++ b/gen/Network/AWS/ECS/ListTasks.hs
@@ -52,6 +52,7 @@
 
 import           Network.AWS.ECS.Types
 import           Network.AWS.ECS.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Pager
 import           Network.AWS.Prelude
 import           Network.AWS.Request
diff --git a/gen/Network/AWS/ECS/RegisterContainerInstance.hs b/gen/Network/AWS/ECS/RegisterContainerInstance.hs
--- a/gen/Network/AWS/ECS/RegisterContainerInstance.hs
+++ b/gen/Network/AWS/ECS/RegisterContainerInstance.hs
@@ -49,6 +49,7 @@
 
 import           Network.AWS.ECS.Types
 import           Network.AWS.ECS.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/ECS/RegisterTaskDefinition.hs b/gen/Network/AWS/ECS/RegisterTaskDefinition.hs
--- a/gen/Network/AWS/ECS/RegisterTaskDefinition.hs
+++ b/gen/Network/AWS/ECS/RegisterTaskDefinition.hs
@@ -46,6 +46,7 @@
 
 import           Network.AWS.ECS.Types
 import           Network.AWS.ECS.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/ECS/RunTask.hs b/gen/Network/AWS/ECS/RunTask.hs
--- a/gen/Network/AWS/ECS/RunTask.hs
+++ b/gen/Network/AWS/ECS/RunTask.hs
@@ -48,6 +48,7 @@
 
 import           Network.AWS.ECS.Types
 import           Network.AWS.ECS.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/ECS/StartTask.hs b/gen/Network/AWS/ECS/StartTask.hs
--- a/gen/Network/AWS/ECS/StartTask.hs
+++ b/gen/Network/AWS/ECS/StartTask.hs
@@ -48,6 +48,7 @@
 
 import           Network.AWS.ECS.Types
 import           Network.AWS.ECS.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/ECS/StopTask.hs b/gen/Network/AWS/ECS/StopTask.hs
--- a/gen/Network/AWS/ECS/StopTask.hs
+++ b/gen/Network/AWS/ECS/StopTask.hs
@@ -35,6 +35,7 @@
     , StopTask
     -- * Request Lenses
     , stCluster
+    , stReason
     , stTask
 
     -- * Destructuring the Response
@@ -47,6 +48,7 @@
 
 import           Network.AWS.ECS.Types
 import           Network.AWS.ECS.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
@@ -54,6 +56,7 @@
 -- | /See:/ 'stopTask' smart constructor.
 data StopTask = StopTask'
     { _stCluster :: !(Maybe Text)
+    , _stReason  :: !(Maybe Text)
     , _stTask    :: !Text
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
@@ -63,6 +66,8 @@
 --
 -- * 'stCluster'
 --
+-- * 'stReason'
+--
 -- * 'stTask'
 stopTask
     :: Text -- ^ 'stTask'
@@ -70,6 +75,7 @@
 stopTask pTask_ =
     StopTask'
     { _stCluster = Nothing
+    , _stReason = Nothing
     , _stTask = pTask_
     }
 
@@ -79,6 +85,14 @@
 stCluster :: Lens' StopTask (Maybe Text)
 stCluster = lens _stCluster (\ s a -> s{_stCluster = a});
 
+-- | An optional message specified when a task is stopped. For example, if
+-- you are using a custom scheduler, you can use this parameter to specify
+-- the reason for stopping the task here, and the message will appear in
+-- subsequent DescribeTasks API operations on this task. Up to 255
+-- characters are allowed in this message.
+stReason :: Lens' StopTask (Maybe Text)
+stReason = lens _stReason (\ s a -> s{_stReason = a});
+
 -- | The task ID or full Amazon Resource Name (ARN) entry of the task to
 -- stop.
 stTask :: Lens' StopTask Text
@@ -108,6 +122,7 @@
           = object
               (catMaybes
                  [("cluster" .=) <$> _stCluster,
+                  ("reason" .=) <$> _stReason,
                   Just ("task" .= _stTask)])
 
 instance ToPath StopTask where
diff --git a/gen/Network/AWS/ECS/SubmitContainerStateChange.hs b/gen/Network/AWS/ECS/SubmitContainerStateChange.hs
--- a/gen/Network/AWS/ECS/SubmitContainerStateChange.hs
+++ b/gen/Network/AWS/ECS/SubmitContainerStateChange.hs
@@ -48,6 +48,7 @@
 
 import           Network.AWS.ECS.Types
 import           Network.AWS.ECS.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/ECS/SubmitTaskStateChange.hs b/gen/Network/AWS/ECS/SubmitTaskStateChange.hs
--- a/gen/Network/AWS/ECS/SubmitTaskStateChange.hs
+++ b/gen/Network/AWS/ECS/SubmitTaskStateChange.hs
@@ -45,6 +45,7 @@
 
 import           Network.AWS.ECS.Types
 import           Network.AWS.ECS.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/ECS/Types.hs b/gen/Network/AWS/ECS/Types.hs
--- a/gen/Network/AWS/ECS/Types.hs
+++ b/gen/Network/AWS/ECS/Types.hs
@@ -234,14 +234,18 @@
     -- * Task
     , Task
     , task
+    , tStoppedAt
     , tDesiredStatus
     , tOverrides
     , tClusterARN
+    , tCreatedAt
     , tTaskARN
     , tContainerInstanceARN
     , tLastStatus
     , tContainers
+    , tStartedAt
     , tStartedBy
+    , tStoppedReason
     , tTaskDefinitionARN
 
     -- * TaskDefinition
@@ -289,6 +293,7 @@
 
 import           Network.AWS.ECS.Types.Product
 import           Network.AWS.ECS.Types.Sum
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Sign.V4
 
diff --git a/gen/Network/AWS/ECS/Types/Product.hs b/gen/Network/AWS/ECS/Types/Product.hs
--- a/gen/Network/AWS/ECS/Types/Product.hs
+++ b/gen/Network/AWS/ECS/Types/Product.hs
@@ -18,6 +18,7 @@
 module Network.AWS.ECS.Types.Product where
 
 import           Network.AWS.ECS.Types.Sum
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 
 -- | The attributes applicable to a container instance when it is registered.
@@ -439,6 +440,9 @@
 -- <https://docs.docker.com/reference/api/docker_remote_api_v1.19/ Docker Remote API>
 -- and the '--env' option to
 -- <https://docs.docker.com/reference/commandline/run/ docker run>.
+--
+-- We do not recommend using plain text environment variables for sensitive
+-- information, such as credential data.
 cdEnvironment :: Lens' ContainerDefinition [KeyValuePair]
 cdEnvironment = lens _cdEnvironment (\ s a -> s{_cdEnvironment = a}) . _Default . _Coerce;
 
@@ -531,7 +535,10 @@
 cdExtraHosts :: Lens' ContainerDefinition [HostEntry]
 cdExtraHosts = lens _cdExtraHosts (\ s a -> s{_cdExtraHosts = a}) . _Default . _Coerce;
 
--- | The number of MiB of memory reserved for the container. If your
+-- | The number of MiB of memory to reserve for the container. You must
+-- specify a non-zero integer for this parameter; the Docker daemon
+-- reserves a minimum of 4 MiB of memory for a container, so you should not
+-- specify fewer than 4 MiB of memory for your containers. If your
 -- container attempts to exceed the memory allocated here, the container is
 -- killed. This parameter maps to 'Memory' in the
 -- <https://docs.docker.com/reference/api/docker_remote_api_v1.19/#create-a-container Create a container>
@@ -1839,14 +1846,18 @@
 --
 -- /See:/ 'task' smart constructor.
 data Task = Task'
-    { _tDesiredStatus        :: !(Maybe Text)
+    { _tStoppedAt            :: !(Maybe POSIX)
+    , _tDesiredStatus        :: !(Maybe Text)
     , _tOverrides            :: !(Maybe TaskOverride)
     , _tClusterARN           :: !(Maybe Text)
+    , _tCreatedAt            :: !(Maybe POSIX)
     , _tTaskARN              :: !(Maybe Text)
     , _tContainerInstanceARN :: !(Maybe Text)
     , _tLastStatus           :: !(Maybe Text)
     , _tContainers           :: !(Maybe [Container])
+    , _tStartedAt            :: !(Maybe POSIX)
     , _tStartedBy            :: !(Maybe Text)
+    , _tStoppedReason        :: !(Maybe Text)
     , _tTaskDefinitionARN    :: !(Maybe Text)
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
@@ -1854,12 +1865,16 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'tStoppedAt'
+--
 -- * 'tDesiredStatus'
 --
 -- * 'tOverrides'
 --
 -- * 'tClusterARN'
 --
+-- * 'tCreatedAt'
+--
 -- * 'tTaskARN'
 --
 -- * 'tContainerInstanceARN'
@@ -1868,24 +1883,37 @@
 --
 -- * 'tContainers'
 --
+-- * 'tStartedAt'
+--
 -- * 'tStartedBy'
 --
+-- * 'tStoppedReason'
+--
 -- * 'tTaskDefinitionARN'
 task
     :: Task
 task =
     Task'
-    { _tDesiredStatus = Nothing
+    { _tStoppedAt = Nothing
+    , _tDesiredStatus = Nothing
     , _tOverrides = Nothing
     , _tClusterARN = Nothing
+    , _tCreatedAt = Nothing
     , _tTaskARN = Nothing
     , _tContainerInstanceARN = Nothing
     , _tLastStatus = Nothing
     , _tContainers = Nothing
+    , _tStartedAt = Nothing
     , _tStartedBy = Nothing
+    , _tStoppedReason = Nothing
     , _tTaskDefinitionARN = Nothing
     }
 
+-- | The Unix time in seconds and milliseconds when the task was stopped (the
+-- task transitioned from the 'RUNNING' state to the 'STOPPED' state).
+tStoppedAt :: Lens' Task (Maybe UTCTime)
+tStoppedAt = lens _tStoppedAt (\ s a -> s{_tStoppedAt = a}) . mapping _Time;
+
 -- | The desired status of the task.
 tDesiredStatus :: Lens' Task (Maybe Text)
 tDesiredStatus = lens _tDesiredStatus (\ s a -> s{_tDesiredStatus = a});
@@ -1899,6 +1927,11 @@
 tClusterARN :: Lens' Task (Maybe Text)
 tClusterARN = lens _tClusterARN (\ s a -> s{_tClusterARN = a});
 
+-- | The Unix time in seconds and milliseconds when the task was created (the
+-- task entered the 'PENDING' state).
+tCreatedAt :: Lens' Task (Maybe UTCTime)
+tCreatedAt = lens _tCreatedAt (\ s a -> s{_tCreatedAt = a}) . mapping _Time;
+
 -- | The Amazon Resource Name (ARN) of the task.
 tTaskARN :: Lens' Task (Maybe Text)
 tTaskARN = lens _tTaskARN (\ s a -> s{_tTaskARN = a});
@@ -1916,12 +1949,21 @@
 tContainers :: Lens' Task [Container]
 tContainers = lens _tContainers (\ s a -> s{_tContainers = a}) . _Default . _Coerce;
 
+-- | The Unix time in seconds and milliseconds when the task was started (the
+-- task transitioned from the 'PENDING' state to the 'RUNNING' state).
+tStartedAt :: Lens' Task (Maybe UTCTime)
+tStartedAt = lens _tStartedAt (\ s a -> s{_tStartedAt = a}) . mapping _Time;
+
 -- | The tag specified when a task is started. If the task is started by an
 -- Amazon ECS service, then the 'startedBy' parameter contains the
 -- deployment ID of the service that starts it.
 tStartedBy :: Lens' Task (Maybe Text)
 tStartedBy = lens _tStartedBy (\ s a -> s{_tStartedBy = a});
 
+-- | The reason the task was stopped.
+tStoppedReason :: Lens' Task (Maybe Text)
+tStoppedReason = lens _tStoppedReason (\ s a -> s{_tStoppedReason = a});
+
 -- | The Amazon Resource Name (ARN) of the of the task definition that
 -- creates the task.
 tTaskDefinitionARN :: Lens' Task (Maybe Text)
@@ -1932,13 +1974,17 @@
           = withObject "Task"
               (\ x ->
                  Task' <$>
-                   (x .:? "desiredStatus") <*> (x .:? "overrides") <*>
-                     (x .:? "clusterArn")
+                   (x .:? "stoppedAt") <*> (x .:? "desiredStatus") <*>
+                     (x .:? "overrides")
+                     <*> (x .:? "clusterArn")
+                     <*> (x .:? "createdAt")
                      <*> (x .:? "taskArn")
                      <*> (x .:? "containerInstanceArn")
                      <*> (x .:? "lastStatus")
                      <*> (x .:? "containers" .!= mempty)
+                     <*> (x .:? "startedAt")
                      <*> (x .:? "startedBy")
+                     <*> (x .:? "stoppedReason")
                      <*> (x .:? "taskDefinitionArn"))
 
 -- | Details of a task definition.
diff --git a/gen/Network/AWS/ECS/Types/Sum.hs b/gen/Network/AWS/ECS/Types/Sum.hs
--- a/gen/Network/AWS/ECS/Types/Sum.hs
+++ b/gen/Network/AWS/ECS/Types/Sum.hs
@@ -26,7 +26,7 @@
     | AUSStaging
     | AUSUpdated
     | AUSUpdating
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText AgentUpdateStatus where
     parser = takeLowerText >>= \case
@@ -60,7 +60,7 @@
     = Pending
     | Running
     | Stopped
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText DesiredStatus where
     parser = takeLowerText >>= \case
@@ -90,7 +90,7 @@
     | JSONFile
     | Journald
     | Syslog
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText LogDriver where
     parser = takeLowerText >>= \case
@@ -124,7 +124,7 @@
 data SortOrder
     = Asc
     | Desc
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText SortOrder where
     parser = takeLowerText >>= \case
@@ -149,7 +149,7 @@
 data TaskDefinitionStatus
     = Active
     | Inactive
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText TaskDefinitionStatus where
     parser = takeLowerText >>= \case
@@ -177,7 +177,7 @@
 data TransportProtocol
     = TCP
     | Udp
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText TransportProtocol where
     parser = takeLowerText >>= \case
@@ -218,7 +218,7 @@
     | Rttime
     | Sigpending
     | Stack
-    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
 
 instance FromText UlimitName where
     parser = takeLowerText >>= \case
diff --git a/gen/Network/AWS/ECS/UpdateContainerAgent.hs b/gen/Network/AWS/ECS/UpdateContainerAgent.hs
--- a/gen/Network/AWS/ECS/UpdateContainerAgent.hs
+++ b/gen/Network/AWS/ECS/UpdateContainerAgent.hs
@@ -51,6 +51,7 @@
 
 import           Network.AWS.ECS.Types
 import           Network.AWS.ECS.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/ECS/UpdateService.hs b/gen/Network/AWS/ECS/UpdateService.hs
--- a/gen/Network/AWS/ECS/UpdateService.hs
+++ b/gen/Network/AWS/ECS/UpdateService.hs
@@ -42,6 +42,26 @@
 -- the 'SIGTERM' gracefully and exits within 30 seconds from receiving it,
 -- no 'SIGKILL' is sent.
 --
+-- When the service scheduler launches new tasks, it attempts to balance
+-- them across the Availability Zones in your cluster with the following
+-- logic:
+--
+-- -   Determine which of the container instances in your cluster can
+--     support your service\'s task definition (for example, they have the
+--     required CPU, memory, ports, and container instance attributes).
+--
+-- -   Sort the valid container instances by the fewest number of running
+--     tasks for this service in the same Availability Zone as the
+--     instance. For example, if zone A has one running service task and
+--     zones B and C each have zero, valid container instances in either
+--     zone B or C are considered optimal for placement.
+--
+-- -   Place the new service task on a valid container instance in an
+--     optimal Availability Zone (based on the previous steps), favoring
+--     container instances with the fewest number of running tasks for this
+--     service.
+--
+--
 -- /See:/ <http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html AWS API Reference> for UpdateService.
 module Network.AWS.ECS.UpdateService
     (
@@ -64,6 +84,7 @@
 
 import           Network.AWS.ECS.Types
 import           Network.AWS.ECS.Types.Product
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Request
 import           Network.AWS.Response
diff --git a/gen/Network/AWS/ECS/Waiters.hs b/gen/Network/AWS/ECS/Waiters.hs
--- a/gen/Network/AWS/ECS/Waiters.hs
+++ b/gen/Network/AWS/ECS/Waiters.hs
@@ -19,6 +19,7 @@
 import           Network.AWS.ECS.DescribeTasks
 import           Network.AWS.ECS.DescribeTasks
 import           Network.AWS.ECS.Types
+import           Network.AWS.Lens
 import           Network.AWS.Prelude
 import           Network.AWS.Waiter
 
