{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE NoImplicitPrelude #-} {-# OPTIONS_GHC -fno-warn-unused-binds #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Amazonka.Route53.DeleteHostedZone -- Copyright : (c) 2013-2023 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Deletes a hosted zone. -- -- If the hosted zone was created by another service, such as Cloud Map, -- see -- -- in the /Amazon Route 53 Developer Guide/ for information about how to -- delete it. (The process is the same for public and private hosted zones -- that were created by another service.) -- -- If you want to keep your domain registration but you want to stop -- routing internet traffic to your website or web application, we -- recommend that you delete resource record sets in the hosted zone -- instead of deleting the hosted zone. -- -- If you delete a hosted zone, you can\'t undelete it. You must create a -- new hosted zone and update the name servers for your domain -- registration, which can require up to 48 hours to take effect. (If you -- delegated responsibility for a subdomain to a hosted zone and you delete -- the child hosted zone, you must update the name servers in the parent -- hosted zone.) In addition, if you delete a hosted zone, someone could -- hijack the domain and route traffic to their own resources using your -- domain name. -- -- If you want to avoid the monthly charge for the hosted zone, you can -- transfer DNS service for the domain to a free DNS service. When you -- transfer DNS service, you have to update the name servers for the domain -- registration. If the domain is registered with Route 53, see -- -- for information about how to replace Route 53 name servers with name -- servers for the new DNS service. If the domain is registered with -- another registrar, use the method provided by the registrar to update -- name servers for the domain registration. For more information, perform -- an internet search on \"free DNS service.\" -- -- You can delete a hosted zone only if it contains only the default SOA -- record and NS resource record sets. If the hosted zone contains other -- resource record sets, you must delete them before you can delete the -- hosted zone. If you try to delete a hosted zone that contains other -- resource record sets, the request fails, and Route 53 returns a -- @HostedZoneNotEmpty@ error. For information about deleting records from -- your hosted zone, see -- . -- -- To verify that the hosted zone has been deleted, do one of the -- following: -- -- - Use the @GetHostedZone@ action to request information about the -- hosted zone. -- -- - Use the @ListHostedZones@ action to get a list of the hosted zones -- associated with the current Amazon Web Services account. module Amazonka.Route53.DeleteHostedZone ( -- * Creating a Request DeleteHostedZone (..), newDeleteHostedZone, -- * Request Lenses deleteHostedZone_id, -- * Destructuring the Response DeleteHostedZoneResponse (..), newDeleteHostedZoneResponse, -- * Response Lenses deleteHostedZoneResponse_httpStatus, deleteHostedZoneResponse_changeInfo, ) where import qualified Amazonka.Core as Core import qualified Amazonka.Core.Lens.Internal as Lens import qualified Amazonka.Data as Data import qualified Amazonka.Prelude as Prelude import qualified Amazonka.Request as Request import qualified Amazonka.Response as Response import Amazonka.Route53.Types -- | A request to delete a hosted zone. -- -- /See:/ 'newDeleteHostedZone' smart constructor. data DeleteHostedZone = DeleteHostedZone' { -- | The ID of the hosted zone you want to delete. id :: ResourceId } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'DeleteHostedZone' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'id', 'deleteHostedZone_id' - The ID of the hosted zone you want to delete. newDeleteHostedZone :: -- | 'id' ResourceId -> DeleteHostedZone newDeleteHostedZone pId_ = DeleteHostedZone' {id = pId_} -- | The ID of the hosted zone you want to delete. deleteHostedZone_id :: Lens.Lens' DeleteHostedZone ResourceId deleteHostedZone_id = Lens.lens (\DeleteHostedZone' {id} -> id) (\s@DeleteHostedZone' {} a -> s {id = a} :: DeleteHostedZone) instance Core.AWSRequest DeleteHostedZone where type AWSResponse DeleteHostedZone = DeleteHostedZoneResponse request overrides = Request.delete (overrides defaultService) response = Response.receiveXML ( \s h x -> DeleteHostedZoneResponse' Prelude.<$> (Prelude.pure (Prelude.fromEnum s)) Prelude.<*> (x Data..@ "ChangeInfo") ) instance Prelude.Hashable DeleteHostedZone where hashWithSalt _salt DeleteHostedZone' {..} = _salt `Prelude.hashWithSalt` id instance Prelude.NFData DeleteHostedZone where rnf DeleteHostedZone' {..} = Prelude.rnf id instance Data.ToHeaders DeleteHostedZone where toHeaders = Prelude.const Prelude.mempty instance Data.ToPath DeleteHostedZone where toPath DeleteHostedZone' {..} = Prelude.mconcat ["/2013-04-01/hostedzone/", Data.toBS id] instance Data.ToQuery DeleteHostedZone where toQuery = Prelude.const Prelude.mempty -- | A complex type that contains the response to a @DeleteHostedZone@ -- request. -- -- /See:/ 'newDeleteHostedZoneResponse' smart constructor. data DeleteHostedZoneResponse = DeleteHostedZoneResponse' { -- | The response's http status code. httpStatus :: Prelude.Int, -- | A complex type that contains the ID, the status, and the date and time -- of a request to delete a hosted zone. changeInfo :: ChangeInfo } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'DeleteHostedZoneResponse' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'httpStatus', 'deleteHostedZoneResponse_httpStatus' - The response's http status code. -- -- 'changeInfo', 'deleteHostedZoneResponse_changeInfo' - A complex type that contains the ID, the status, and the date and time -- of a request to delete a hosted zone. newDeleteHostedZoneResponse :: -- | 'httpStatus' Prelude.Int -> -- | 'changeInfo' ChangeInfo -> DeleteHostedZoneResponse newDeleteHostedZoneResponse pHttpStatus_ pChangeInfo_ = DeleteHostedZoneResponse' { httpStatus = pHttpStatus_, changeInfo = pChangeInfo_ } -- | The response's http status code. deleteHostedZoneResponse_httpStatus :: Lens.Lens' DeleteHostedZoneResponse Prelude.Int deleteHostedZoneResponse_httpStatus = Lens.lens (\DeleteHostedZoneResponse' {httpStatus} -> httpStatus) (\s@DeleteHostedZoneResponse' {} a -> s {httpStatus = a} :: DeleteHostedZoneResponse) -- | A complex type that contains the ID, the status, and the date and time -- of a request to delete a hosted zone. deleteHostedZoneResponse_changeInfo :: Lens.Lens' DeleteHostedZoneResponse ChangeInfo deleteHostedZoneResponse_changeInfo = Lens.lens (\DeleteHostedZoneResponse' {changeInfo} -> changeInfo) (\s@DeleteHostedZoneResponse' {} a -> s {changeInfo = a} :: DeleteHostedZoneResponse) instance Prelude.NFData DeleteHostedZoneResponse where rnf DeleteHostedZoneResponse' {..} = Prelude.rnf httpStatus `Prelude.seq` Prelude.rnf changeInfo