diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.4.0`
+`1.4.1`
 
 
 ## Description
diff --git a/amazonka-ecr.cabal b/amazonka-ecr.cabal
--- a/amazonka-ecr.cabal
+++ b/amazonka-ecr.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-ecr
-version:               1.4.0
+version:               1.4.1
 synopsis:              Amazon EC2 Container Registry SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
@@ -71,7 +71,7 @@
         , Network.AWS.ECR.Types.Sum
 
     build-depends:
-          amazonka-core == 1.4.0.*
+          amazonka-core == 1.4.1.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-ecr-test
@@ -91,9 +91,9 @@
         , Test.AWS.ECR.Internal
 
     build-depends:
-          amazonka-core == 1.4.0.*
-        , amazonka-test == 1.4.0.*
-        , amazonka-ecr == 1.4.0.*
+          amazonka-core == 1.4.1.*
+        , amazonka-test == 1.4.1.*
+        , amazonka-ecr == 1.4.1.*
         , base
         , bytestring
         , tasty
diff --git a/gen/Network/AWS/ECR.hs b/gen/Network/AWS/ECR.hs
--- a/gen/Network/AWS/ECR.hs
+++ b/gen/Network/AWS/ECR.hs
@@ -186,6 +186,7 @@
     , repository
     , rRepositoryARN
     , rRegistryId
+    , rRepositoryURI
     , rRepositoryName
     ) where
 
diff --git a/gen/Network/AWS/ECR/BatchCheckLayerAvailability.hs b/gen/Network/AWS/ECR/BatchCheckLayerAvailability.hs
--- a/gen/Network/AWS/ECR/BatchCheckLayerAvailability.hs
+++ b/gen/Network/AWS/ECR/BatchCheckLayerAvailability.hs
@@ -106,6 +106,8 @@
 
 instance Hashable BatchCheckLayerAvailability
 
+instance NFData BatchCheckLayerAvailability
+
 instance ToHeaders BatchCheckLayerAvailability where
         toHeaders
           = const
@@ -168,3 +170,5 @@
 -- | The response status code.
 bclarsResponseStatus :: Lens' BatchCheckLayerAvailabilityResponse Int
 bclarsResponseStatus = lens _bclarsResponseStatus (\ s a -> s{_bclarsResponseStatus = a});
+
+instance NFData BatchCheckLayerAvailabilityResponse
diff --git a/gen/Network/AWS/ECR/BatchDeleteImage.hs b/gen/Network/AWS/ECR/BatchDeleteImage.hs
--- a/gen/Network/AWS/ECR/BatchDeleteImage.hs
+++ b/gen/Network/AWS/ECR/BatchDeleteImage.hs
@@ -104,6 +104,8 @@
 
 instance Hashable BatchDeleteImage
 
+instance NFData BatchDeleteImage
+
 instance ToHeaders BatchDeleteImage where
         toHeaders
           = const
@@ -165,3 +167,5 @@
 -- | The response status code.
 bdirsResponseStatus :: Lens' BatchDeleteImageResponse Int
 bdirsResponseStatus = lens _bdirsResponseStatus (\ s a -> s{_bdirsResponseStatus = a});
+
+instance NFData BatchDeleteImageResponse
diff --git a/gen/Network/AWS/ECR/BatchGetImage.hs b/gen/Network/AWS/ECR/BatchGetImage.hs
--- a/gen/Network/AWS/ECR/BatchGetImage.hs
+++ b/gen/Network/AWS/ECR/BatchGetImage.hs
@@ -103,6 +103,8 @@
 
 instance Hashable BatchGetImage
 
+instance NFData BatchGetImage
+
 instance ToHeaders BatchGetImage where
         toHeaders
           = const
@@ -165,3 +167,5 @@
 -- | The response status code.
 bgirsResponseStatus :: Lens' BatchGetImageResponse Int
 bgirsResponseStatus = lens _bgirsResponseStatus (\ s a -> s{_bgirsResponseStatus = a});
+
+instance NFData BatchGetImageResponse
diff --git a/gen/Network/AWS/ECR/CompleteLayerUpload.hs b/gen/Network/AWS/ECR/CompleteLayerUpload.hs
--- a/gen/Network/AWS/ECR/CompleteLayerUpload.hs
+++ b/gen/Network/AWS/ECR/CompleteLayerUpload.hs
@@ -121,6 +121,8 @@
 
 instance Hashable CompleteLayerUpload
 
+instance NFData CompleteLayerUpload
+
 instance ToHeaders CompleteLayerUpload where
         toHeaders
           = const
@@ -199,3 +201,5 @@
 -- | The response status code.
 clursResponseStatus :: Lens' CompleteLayerUploadResponse Int
 clursResponseStatus = lens _clursResponseStatus (\ s a -> s{_clursResponseStatus = a});
+
+instance NFData CompleteLayerUploadResponse
diff --git a/gen/Network/AWS/ECR/CreateRepository.hs b/gen/Network/AWS/ECR/CreateRepository.hs
--- a/gen/Network/AWS/ECR/CreateRepository.hs
+++ b/gen/Network/AWS/ECR/CreateRepository.hs
@@ -78,6 +78,8 @@
 
 instance Hashable CreateRepository
 
+instance NFData CreateRepository
+
 instance ToHeaders CreateRepository where
         toHeaders
           = const
@@ -129,3 +131,5 @@
 -- | The response status code.
 crrsResponseStatus :: Lens' CreateRepositoryResponse Int
 crrsResponseStatus = lens _crrsResponseStatus (\ s a -> s{_crrsResponseStatus = a});
+
+instance NFData CreateRepositoryResponse
diff --git a/gen/Network/AWS/ECR/DeleteRepository.hs b/gen/Network/AWS/ECR/DeleteRepository.hs
--- a/gen/Network/AWS/ECR/DeleteRepository.hs
+++ b/gen/Network/AWS/ECR/DeleteRepository.hs
@@ -96,6 +96,8 @@
 
 instance Hashable DeleteRepository
 
+instance NFData DeleteRepository
+
 instance ToHeaders DeleteRepository where
         toHeaders
           = const
@@ -149,3 +151,5 @@
 -- | The response status code.
 drsResponseStatus :: Lens' DeleteRepositoryResponse Int
 drsResponseStatus = lens _drsResponseStatus (\ s a -> s{_drsResponseStatus = a});
+
+instance NFData DeleteRepositoryResponse
diff --git a/gen/Network/AWS/ECR/DeleteRepositoryPolicy.hs b/gen/Network/AWS/ECR/DeleteRepositoryPolicy.hs
--- a/gen/Network/AWS/ECR/DeleteRepositoryPolicy.hs
+++ b/gen/Network/AWS/ECR/DeleteRepositoryPolicy.hs
@@ -92,6 +92,8 @@
 
 instance Hashable DeleteRepositoryPolicy
 
+instance NFData DeleteRepositoryPolicy
+
 instance ToHeaders DeleteRepositoryPolicy where
         toHeaders
           = const
@@ -160,3 +162,5 @@
 -- | The response status code.
 drprsResponseStatus :: Lens' DeleteRepositoryPolicyResponse Int
 drprsResponseStatus = lens _drprsResponseStatus (\ s a -> s{_drprsResponseStatus = a});
+
+instance NFData DeleteRepositoryPolicyResponse
diff --git a/gen/Network/AWS/ECR/DescribeRepositories.hs b/gen/Network/AWS/ECR/DescribeRepositories.hs
--- a/gen/Network/AWS/ECR/DescribeRepositories.hs
+++ b/gen/Network/AWS/ECR/DescribeRepositories.hs
@@ -120,6 +120,8 @@
 
 instance Hashable DescribeRepositories
 
+instance NFData DescribeRepositories
+
 instance ToHeaders DescribeRepositories where
         toHeaders
           = const
@@ -185,3 +187,5 @@
 -- | The response status code.
 drrsResponseStatus :: Lens' DescribeRepositoriesResponse Int
 drrsResponseStatus = lens _drrsResponseStatus (\ s a -> s{_drrsResponseStatus = a});
+
+instance NFData DescribeRepositoriesResponse
diff --git a/gen/Network/AWS/ECR/GetAuthorizationToken.hs b/gen/Network/AWS/ECR/GetAuthorizationToken.hs
--- a/gen/Network/AWS/ECR/GetAuthorizationToken.hs
+++ b/gen/Network/AWS/ECR/GetAuthorizationToken.hs
@@ -86,6 +86,8 @@
 
 instance Hashable GetAuthorizationToken
 
+instance NFData GetAuthorizationToken
+
 instance ToHeaders GetAuthorizationToken where
         toHeaders
           = const
@@ -137,3 +139,5 @@
 -- | The response status code.
 gatrsResponseStatus :: Lens' GetAuthorizationTokenResponse Int
 gatrsResponseStatus = lens _gatrsResponseStatus (\ s a -> s{_gatrsResponseStatus = a});
+
+instance NFData GetAuthorizationTokenResponse
diff --git a/gen/Network/AWS/ECR/GetDownloadURLForLayer.hs b/gen/Network/AWS/ECR/GetDownloadURLForLayer.hs
--- a/gen/Network/AWS/ECR/GetDownloadURLForLayer.hs
+++ b/gen/Network/AWS/ECR/GetDownloadURLForLayer.hs
@@ -106,6 +106,8 @@
 
 instance Hashable GetDownloadURLForLayer
 
+instance NFData GetDownloadURLForLayer
+
 instance ToHeaders GetDownloadURLForLayer where
         toHeaders
           = const
@@ -167,3 +169,5 @@
 -- | The response status code.
 gduflrsResponseStatus :: Lens' GetDownloadURLForLayerResponse Int
 gduflrsResponseStatus = lens _gduflrsResponseStatus (\ s a -> s{_gduflrsResponseStatus = a});
+
+instance NFData GetDownloadURLForLayerResponse
diff --git a/gen/Network/AWS/ECR/GetRepositoryPolicy.hs b/gen/Network/AWS/ECR/GetRepositoryPolicy.hs
--- a/gen/Network/AWS/ECR/GetRepositoryPolicy.hs
+++ b/gen/Network/AWS/ECR/GetRepositoryPolicy.hs
@@ -91,6 +91,8 @@
 
 instance Hashable GetRepositoryPolicy
 
+instance NFData GetRepositoryPolicy
+
 instance ToHeaders GetRepositoryPolicy where
         toHeaders
           = const
@@ -159,3 +161,5 @@
 -- | The response status code.
 grprsResponseStatus :: Lens' GetRepositoryPolicyResponse Int
 grprsResponseStatus = lens _grprsResponseStatus (\ s a -> s{_grprsResponseStatus = a});
+
+instance NFData GetRepositoryPolicyResponse
diff --git a/gen/Network/AWS/ECR/InitiateLayerUpload.hs b/gen/Network/AWS/ECR/InitiateLayerUpload.hs
--- a/gen/Network/AWS/ECR/InitiateLayerUpload.hs
+++ b/gen/Network/AWS/ECR/InitiateLayerUpload.hs
@@ -93,6 +93,8 @@
 
 instance Hashable InitiateLayerUpload
 
+instance NFData InitiateLayerUpload
+
 instance ToHeaders InitiateLayerUpload where
         toHeaders
           = const
@@ -155,3 +157,5 @@
 -- | The response status code.
 ilursResponseStatus :: Lens' InitiateLayerUploadResponse Int
 ilursResponseStatus = lens _ilursResponseStatus (\ s a -> s{_ilursResponseStatus = a});
+
+instance NFData InitiateLayerUploadResponse
diff --git a/gen/Network/AWS/ECR/ListImages.hs b/gen/Network/AWS/ECR/ListImages.hs
--- a/gen/Network/AWS/ECR/ListImages.hs
+++ b/gen/Network/AWS/ECR/ListImages.hs
@@ -117,6 +117,8 @@
 
 instance Hashable ListImages
 
+instance NFData ListImages
+
 instance ToHeaders ListImages where
         toHeaders
           = const
@@ -182,3 +184,5 @@
 -- | The response status code.
 lirsResponseStatus :: Lens' ListImagesResponse Int
 lirsResponseStatus = lens _lirsResponseStatus (\ s a -> s{_lirsResponseStatus = a});
+
+instance NFData ListImagesResponse
diff --git a/gen/Network/AWS/ECR/PutImage.hs b/gen/Network/AWS/ECR/PutImage.hs
--- a/gen/Network/AWS/ECR/PutImage.hs
+++ b/gen/Network/AWS/ECR/PutImage.hs
@@ -100,6 +100,8 @@
 
 instance Hashable PutImage
 
+instance NFData PutImage
+
 instance ToHeaders PutImage where
         toHeaders
           = const
@@ -153,3 +155,5 @@
 -- | The response status code.
 pirsResponseStatus :: Lens' PutImageResponse Int
 pirsResponseStatus = lens _pirsResponseStatus (\ s a -> s{_pirsResponseStatus = a});
+
+instance NFData PutImageResponse
diff --git a/gen/Network/AWS/ECR/SetRepositoryPolicy.hs b/gen/Network/AWS/ECR/SetRepositoryPolicy.hs
--- a/gen/Network/AWS/ECR/SetRepositoryPolicy.hs
+++ b/gen/Network/AWS/ECR/SetRepositoryPolicy.hs
@@ -114,6 +114,8 @@
 
 instance Hashable SetRepositoryPolicy
 
+instance NFData SetRepositoryPolicy
+
 instance ToHeaders SetRepositoryPolicy where
         toHeaders
           = const
@@ -184,3 +186,5 @@
 -- | The response status code.
 srprsResponseStatus :: Lens' SetRepositoryPolicyResponse Int
 srprsResponseStatus = lens _srprsResponseStatus (\ s a -> s{_srprsResponseStatus = a});
+
+instance NFData SetRepositoryPolicyResponse
diff --git a/gen/Network/AWS/ECR/Types.hs b/gen/Network/AWS/ECR/Types.hs
--- a/gen/Network/AWS/ECR/Types.hs
+++ b/gen/Network/AWS/ECR/Types.hs
@@ -89,6 +89,7 @@
     , repository
     , rRepositoryARN
     , rRegistryId
+    , rRepositoryURI
     , rRepositoryName
     ) where
 
@@ -125,6 +126,8 @@
       | has (hasCode "ThrottlingException" . hasStatus 400) e =
           Just "throttling_exception"
       | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
+      | has (hasStatus 504) e = Just "gateway_timeout"
+      | has (hasStatus 502) e = Just "bad_gateway"
       | has (hasStatus 503) e = Just "service_unavailable"
       | has (hasStatus 500) e = Just "general_server_error"
       | has (hasStatus 509) e = Just "limit_exceeded"
diff --git a/gen/Network/AWS/ECR/Types/Product.hs b/gen/Network/AWS/ECR/Types/Product.hs
--- a/gen/Network/AWS/ECR/Types/Product.hs
+++ b/gen/Network/AWS/ECR/Types/Product.hs
@@ -56,7 +56,7 @@
 -- | The registry URL to use for this authorization token in a 'docker login'
 -- command. The Amazon ECR registry URL format is
 -- 'https:\/\/aws_account_id.dkr.ecr.region.amazonaws.com'. For example,
--- 'https:\/\/012345678910.dkr.ecr.us-east-1.amazonaws.com'.
+-- 'https:\/\/012345678910.dkr.ecr.us-east-1.amazonaws.com'..
 adProxyEndpoint :: Lens' AuthorizationData (Maybe Text)
 adProxyEndpoint = lens _adProxyEndpoint (\ s a -> s{_adProxyEndpoint = a});
 
@@ -77,6 +77,8 @@
 
 instance Hashable AuthorizationData
 
+instance NFData AuthorizationData
+
 -- | Object representing an image.
 --
 -- /See:/ 'image' smart constructor.
@@ -136,6 +138,8 @@
 
 instance Hashable Image
 
+instance NFData Image
+
 -- | /See:/ 'imageFailure' smart constructor.
 data ImageFailure = ImageFailure'
     { _ifFailureReason :: !(Maybe Text)
@@ -183,6 +187,8 @@
 
 instance Hashable ImageFailure
 
+instance NFData ImageFailure
+
 -- | /See:/ 'imageIdentifier' smart constructor.
 data ImageIdentifier = ImageIdentifier'
     { _iiImageDigest :: !(Maybe Text)
@@ -221,6 +227,8 @@
 
 instance Hashable ImageIdentifier
 
+instance NFData ImageIdentifier
+
 instance ToJSON ImageIdentifier where
         toJSON ImageIdentifier'{..}
           = object
@@ -276,6 +284,8 @@
 
 instance Hashable Layer
 
+instance NFData Layer
+
 -- | /See:/ 'layerFailure' smart constructor.
 data LayerFailure = LayerFailure'
     { _lfFailureReason :: !(Maybe Text)
@@ -323,12 +333,15 @@
 
 instance Hashable LayerFailure
 
+instance NFData LayerFailure
+
 -- | Object representing a repository.
 --
 -- /See:/ 'repository' smart constructor.
 data Repository = Repository'
     { _rRepositoryARN  :: !(Maybe Text)
     , _rRegistryId     :: !(Maybe Text)
+    , _rRepositoryURI  :: !(Maybe Text)
     , _rRepositoryName :: !(Maybe Text)
     } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
@@ -340,6 +353,8 @@
 --
 -- * 'rRegistryId'
 --
+-- * 'rRepositoryURI'
+--
 -- * 'rRepositoryName'
 repository
     :: Repository
@@ -347,6 +362,7 @@
     Repository'
     { _rRepositoryARN = Nothing
     , _rRegistryId = Nothing
+    , _rRepositoryURI = Nothing
     , _rRepositoryName = Nothing
     }
 
@@ -363,6 +379,11 @@
 rRegistryId :: Lens' Repository (Maybe Text)
 rRegistryId = lens _rRegistryId (\ s a -> s{_rRegistryId = a});
 
+-- | The URI for the repository. You can use this URI for Docker 'push' and
+-- 'pull' operations.
+rRepositoryURI :: Lens' Repository (Maybe Text)
+rRepositoryURI = lens _rRepositoryURI (\ s a -> s{_rRepositoryURI = a});
+
 -- | The name of the repository.
 rRepositoryName :: Lens' Repository (Maybe Text)
 rRepositoryName = lens _rRepositoryName (\ s a -> s{_rRepositoryName = a});
@@ -373,6 +394,9 @@
               (\ x ->
                  Repository' <$>
                    (x .:? "repositoryArn") <*> (x .:? "registryId") <*>
-                     (x .:? "repositoryName"))
+                     (x .:? "repositoryUri")
+                     <*> (x .:? "repositoryName"))
 
 instance Hashable Repository
+
+instance NFData Repository
diff --git a/gen/Network/AWS/ECR/Types/Sum.hs b/gen/Network/AWS/ECR/Types/Sum.hs
--- a/gen/Network/AWS/ECR/Types/Sum.hs
+++ b/gen/Network/AWS/ECR/Types/Sum.hs
@@ -46,6 +46,7 @@
         MissingDigestAndTag -> "MissingDigestAndTag"
 
 instance Hashable     ImageFailureCode
+instance NFData       ImageFailureCode
 instance ToByteString ImageFailureCode
 instance ToQuery      ImageFailureCode
 instance ToHeader     ImageFailureCode
@@ -71,6 +72,7 @@
         Unavailable -> "UNAVAILABLE"
 
 instance Hashable     LayerAvailability
+instance NFData       LayerAvailability
 instance ToByteString LayerAvailability
 instance ToQuery      LayerAvailability
 instance ToHeader     LayerAvailability
@@ -96,6 +98,7 @@
         MissingLayerDigest -> "MissingLayerDigest"
 
 instance Hashable     LayerFailureCode
+instance NFData       LayerFailureCode
 instance ToByteString LayerFailureCode
 instance ToQuery      LayerFailureCode
 instance ToHeader     LayerFailureCode
diff --git a/gen/Network/AWS/ECR/UploadLayerPart.hs b/gen/Network/AWS/ECR/UploadLayerPart.hs
--- a/gen/Network/AWS/ECR/UploadLayerPart.hs
+++ b/gen/Network/AWS/ECR/UploadLayerPart.hs
@@ -143,6 +143,8 @@
 
 instance Hashable UploadLayerPart
 
+instance NFData UploadLayerPart
+
 instance ToHeaders UploadLayerPart where
         toHeaders
           = const
@@ -223,3 +225,5 @@
 -- | The response status code.
 ulprsResponseStatus :: Lens' UploadLayerPartResponse Int
 ulprsResponseStatus = lens _ulprsResponseStatus (\ s a -> s{_ulprsResponseStatus = a});
+
+instance NFData UploadLayerPartResponse
