{-# 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.Lightsail.SetResourceAccessForBucket -- Copyright : (c) 2013-2023 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Sets the Amazon Lightsail resources that can access the specified -- Lightsail bucket. -- -- Lightsail buckets currently support setting access for Lightsail -- instances in the same Amazon Web Services Region. module Amazonka.Lightsail.SetResourceAccessForBucket ( -- * Creating a Request SetResourceAccessForBucket (..), newSetResourceAccessForBucket, -- * Request Lenses setResourceAccessForBucket_resourceName, setResourceAccessForBucket_bucketName, setResourceAccessForBucket_access, -- * Destructuring the Response SetResourceAccessForBucketResponse (..), newSetResourceAccessForBucketResponse, -- * Response Lenses setResourceAccessForBucketResponse_operations, setResourceAccessForBucketResponse_httpStatus, ) where import qualified Amazonka.Core as Core import qualified Amazonka.Core.Lens.Internal as Lens import qualified Amazonka.Data as Data import Amazonka.Lightsail.Types import qualified Amazonka.Prelude as Prelude import qualified Amazonka.Request as Request import qualified Amazonka.Response as Response -- | /See:/ 'newSetResourceAccessForBucket' smart constructor. data SetResourceAccessForBucket = SetResourceAccessForBucket' { -- | The name of the Lightsail instance for which to set bucket access. The -- instance must be in a running or stopped state. resourceName :: Prelude.Text, -- | The name of the bucket for which to set access to another Lightsail -- resource. bucketName :: Prelude.Text, -- | The access setting. -- -- The following access settings are available: -- -- - @allow@ - Allows access to the bucket and its objects. -- -- - @deny@ - Denies access to the bucket and its objects. Use this -- setting to remove access for a resource previously set to @allow@. access :: ResourceBucketAccess } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'SetResourceAccessForBucket' 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: -- -- 'resourceName', 'setResourceAccessForBucket_resourceName' - The name of the Lightsail instance for which to set bucket access. The -- instance must be in a running or stopped state. -- -- 'bucketName', 'setResourceAccessForBucket_bucketName' - The name of the bucket for which to set access to another Lightsail -- resource. -- -- 'access', 'setResourceAccessForBucket_access' - The access setting. -- -- The following access settings are available: -- -- - @allow@ - Allows access to the bucket and its objects. -- -- - @deny@ - Denies access to the bucket and its objects. Use this -- setting to remove access for a resource previously set to @allow@. newSetResourceAccessForBucket :: -- | 'resourceName' Prelude.Text -> -- | 'bucketName' Prelude.Text -> -- | 'access' ResourceBucketAccess -> SetResourceAccessForBucket newSetResourceAccessForBucket pResourceName_ pBucketName_ pAccess_ = SetResourceAccessForBucket' { resourceName = pResourceName_, bucketName = pBucketName_, access = pAccess_ } -- | The name of the Lightsail instance for which to set bucket access. The -- instance must be in a running or stopped state. setResourceAccessForBucket_resourceName :: Lens.Lens' SetResourceAccessForBucket Prelude.Text setResourceAccessForBucket_resourceName = Lens.lens (\SetResourceAccessForBucket' {resourceName} -> resourceName) (\s@SetResourceAccessForBucket' {} a -> s {resourceName = a} :: SetResourceAccessForBucket) -- | The name of the bucket for which to set access to another Lightsail -- resource. setResourceAccessForBucket_bucketName :: Lens.Lens' SetResourceAccessForBucket Prelude.Text setResourceAccessForBucket_bucketName = Lens.lens (\SetResourceAccessForBucket' {bucketName} -> bucketName) (\s@SetResourceAccessForBucket' {} a -> s {bucketName = a} :: SetResourceAccessForBucket) -- | The access setting. -- -- The following access settings are available: -- -- - @allow@ - Allows access to the bucket and its objects. -- -- - @deny@ - Denies access to the bucket and its objects. Use this -- setting to remove access for a resource previously set to @allow@. setResourceAccessForBucket_access :: Lens.Lens' SetResourceAccessForBucket ResourceBucketAccess setResourceAccessForBucket_access = Lens.lens (\SetResourceAccessForBucket' {access} -> access) (\s@SetResourceAccessForBucket' {} a -> s {access = a} :: SetResourceAccessForBucket) instance Core.AWSRequest SetResourceAccessForBucket where type AWSResponse SetResourceAccessForBucket = SetResourceAccessForBucketResponse request overrides = Request.postJSON (overrides defaultService) response = Response.receiveJSON ( \s h x -> SetResourceAccessForBucketResponse' Prelude.<$> (x Data..?> "operations" Core..!@ Prelude.mempty) Prelude.<*> (Prelude.pure (Prelude.fromEnum s)) ) instance Prelude.Hashable SetResourceAccessForBucket where hashWithSalt _salt SetResourceAccessForBucket' {..} = _salt `Prelude.hashWithSalt` resourceName `Prelude.hashWithSalt` bucketName `Prelude.hashWithSalt` access instance Prelude.NFData SetResourceAccessForBucket where rnf SetResourceAccessForBucket' {..} = Prelude.rnf resourceName `Prelude.seq` Prelude.rnf bucketName `Prelude.seq` Prelude.rnf access instance Data.ToHeaders SetResourceAccessForBucket where toHeaders = Prelude.const ( Prelude.mconcat [ "X-Amz-Target" Data.=# ( "Lightsail_20161128.SetResourceAccessForBucket" :: Prelude.ByteString ), "Content-Type" Data.=# ( "application/x-amz-json-1.1" :: Prelude.ByteString ) ] ) instance Data.ToJSON SetResourceAccessForBucket where toJSON SetResourceAccessForBucket' {..} = Data.object ( Prelude.catMaybes [ Prelude.Just ("resourceName" Data..= resourceName), Prelude.Just ("bucketName" Data..= bucketName), Prelude.Just ("access" Data..= access) ] ) instance Data.ToPath SetResourceAccessForBucket where toPath = Prelude.const "/" instance Data.ToQuery SetResourceAccessForBucket where toQuery = Prelude.const Prelude.mempty -- | /See:/ 'newSetResourceAccessForBucketResponse' smart constructor. data SetResourceAccessForBucketResponse = SetResourceAccessForBucketResponse' { -- | An array of objects that describe the result of the action, such as the -- status of the request, the timestamp of the request, and the resources -- affected by the request. operations :: Prelude.Maybe [Operation], -- | The response's http status code. httpStatus :: Prelude.Int } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'SetResourceAccessForBucketResponse' 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: -- -- 'operations', 'setResourceAccessForBucketResponse_operations' - An array of objects that describe the result of the action, such as the -- status of the request, the timestamp of the request, and the resources -- affected by the request. -- -- 'httpStatus', 'setResourceAccessForBucketResponse_httpStatus' - The response's http status code. newSetResourceAccessForBucketResponse :: -- | 'httpStatus' Prelude.Int -> SetResourceAccessForBucketResponse newSetResourceAccessForBucketResponse pHttpStatus_ = SetResourceAccessForBucketResponse' { operations = Prelude.Nothing, httpStatus = pHttpStatus_ } -- | An array of objects that describe the result of the action, such as the -- status of the request, the timestamp of the request, and the resources -- affected by the request. setResourceAccessForBucketResponse_operations :: Lens.Lens' SetResourceAccessForBucketResponse (Prelude.Maybe [Operation]) setResourceAccessForBucketResponse_operations = Lens.lens (\SetResourceAccessForBucketResponse' {operations} -> operations) (\s@SetResourceAccessForBucketResponse' {} a -> s {operations = a} :: SetResourceAccessForBucketResponse) Prelude.. Lens.mapping Lens.coerced -- | The response's http status code. setResourceAccessForBucketResponse_httpStatus :: Lens.Lens' SetResourceAccessForBucketResponse Prelude.Int setResourceAccessForBucketResponse_httpStatus = Lens.lens (\SetResourceAccessForBucketResponse' {httpStatus} -> httpStatus) (\s@SetResourceAccessForBucketResponse' {} a -> s {httpStatus = a} :: SetResourceAccessForBucketResponse) instance Prelude.NFData SetResourceAccessForBucketResponse where rnf SetResourceAccessForBucketResponse' {..} = Prelude.rnf operations `Prelude.seq` Prelude.rnf httpStatus