{-# 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.EC2.AssociateEnclaveCertificateIamRole
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Associates an Identity and Access Management (IAM) role with an
-- Certificate Manager (ACM) certificate. This enables the certificate to
-- be used by the ACM for Nitro Enclaves application inside an enclave. For
-- more information, see
-- <https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave-refapp.html Certificate Manager for Nitro Enclaves>
-- in the /Amazon Web Services Nitro Enclaves User Guide/.
--
-- When the IAM role is associated with the ACM certificate, the
-- certificate, certificate chain, and encrypted private key are placed in
-- an Amazon S3 location that only the associated IAM role can access. The
-- private key of the certificate is encrypted with an Amazon Web Services
-- managed key that has an attached attestation-based key policy.
--
-- To enable the IAM role to access the Amazon S3 object, you must grant it
-- permission to call @s3:GetObject@ on the Amazon S3 bucket returned by
-- the command. To enable the IAM role to access the KMS key, you must
-- grant it permission to call @kms:Decrypt@ on the KMS key returned by the
-- command. For more information, see
-- <https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave-refapp.html#add-policy Grant the role permission to access the certificate and encryption key>
-- in the /Amazon Web Services Nitro Enclaves User Guide/.
module Amazonka.EC2.AssociateEnclaveCertificateIamRole
  ( -- * Creating a Request
    AssociateEnclaveCertificateIamRole (..),
    newAssociateEnclaveCertificateIamRole,

    -- * Request Lenses
    associateEnclaveCertificateIamRole_certificateArn,
    associateEnclaveCertificateIamRole_dryRun,
    associateEnclaveCertificateIamRole_roleArn,

    -- * Destructuring the Response
    AssociateEnclaveCertificateIamRoleResponse (..),
    newAssociateEnclaveCertificateIamRoleResponse,

    -- * Response Lenses
    associateEnclaveCertificateIamRoleResponse_certificateS3BucketName,
    associateEnclaveCertificateIamRoleResponse_certificateS3ObjectKey,
    associateEnclaveCertificateIamRoleResponse_encryptionKmsKeyId,
    associateEnclaveCertificateIamRoleResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.EC2.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newAssociateEnclaveCertificateIamRole' smart constructor.
data AssociateEnclaveCertificateIamRole = AssociateEnclaveCertificateIamRole'
  { -- | The ARN of the ACM certificate with which to associate the IAM role.
    AssociateEnclaveCertificateIamRole -> Maybe Text
certificateArn :: Prelude.Maybe Prelude.Text,
    -- | Checks whether you have the required permissions for the action, without
    -- actually making the request, and provides an error response. If you have
    -- the required permissions, the error response is @DryRunOperation@.
    -- Otherwise, it is @UnauthorizedOperation@.
    AssociateEnclaveCertificateIamRole -> Maybe Bool
dryRun :: Prelude.Maybe Prelude.Bool,
    -- | The ARN of the IAM role to associate with the ACM certificate. You can
    -- associate up to 16 IAM roles with an ACM certificate.
    AssociateEnclaveCertificateIamRole -> Maybe Text
roleArn :: Prelude.Maybe Prelude.Text
  }
  deriving (AssociateEnclaveCertificateIamRole
-> AssociateEnclaveCertificateIamRole -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AssociateEnclaveCertificateIamRole
-> AssociateEnclaveCertificateIamRole -> Bool
$c/= :: AssociateEnclaveCertificateIamRole
-> AssociateEnclaveCertificateIamRole -> Bool
== :: AssociateEnclaveCertificateIamRole
-> AssociateEnclaveCertificateIamRole -> Bool
$c== :: AssociateEnclaveCertificateIamRole
-> AssociateEnclaveCertificateIamRole -> Bool
Prelude.Eq, ReadPrec [AssociateEnclaveCertificateIamRole]
ReadPrec AssociateEnclaveCertificateIamRole
Int -> ReadS AssociateEnclaveCertificateIamRole
ReadS [AssociateEnclaveCertificateIamRole]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [AssociateEnclaveCertificateIamRole]
$creadListPrec :: ReadPrec [AssociateEnclaveCertificateIamRole]
readPrec :: ReadPrec AssociateEnclaveCertificateIamRole
$creadPrec :: ReadPrec AssociateEnclaveCertificateIamRole
readList :: ReadS [AssociateEnclaveCertificateIamRole]
$creadList :: ReadS [AssociateEnclaveCertificateIamRole]
readsPrec :: Int -> ReadS AssociateEnclaveCertificateIamRole
$creadsPrec :: Int -> ReadS AssociateEnclaveCertificateIamRole
Prelude.Read, Int -> AssociateEnclaveCertificateIamRole -> ShowS
[AssociateEnclaveCertificateIamRole] -> ShowS
AssociateEnclaveCertificateIamRole -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AssociateEnclaveCertificateIamRole] -> ShowS
$cshowList :: [AssociateEnclaveCertificateIamRole] -> ShowS
show :: AssociateEnclaveCertificateIamRole -> String
$cshow :: AssociateEnclaveCertificateIamRole -> String
showsPrec :: Int -> AssociateEnclaveCertificateIamRole -> ShowS
$cshowsPrec :: Int -> AssociateEnclaveCertificateIamRole -> ShowS
Prelude.Show, forall x.
Rep AssociateEnclaveCertificateIamRole x
-> AssociateEnclaveCertificateIamRole
forall x.
AssociateEnclaveCertificateIamRole
-> Rep AssociateEnclaveCertificateIamRole x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep AssociateEnclaveCertificateIamRole x
-> AssociateEnclaveCertificateIamRole
$cfrom :: forall x.
AssociateEnclaveCertificateIamRole
-> Rep AssociateEnclaveCertificateIamRole x
Prelude.Generic)

-- |
-- Create a value of 'AssociateEnclaveCertificateIamRole' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'certificateArn', 'associateEnclaveCertificateIamRole_certificateArn' - The ARN of the ACM certificate with which to associate the IAM role.
--
-- 'dryRun', 'associateEnclaveCertificateIamRole_dryRun' - Checks whether you have the required permissions for the action, without
-- actually making the request, and provides an error response. If you have
-- the required permissions, the error response is @DryRunOperation@.
-- Otherwise, it is @UnauthorizedOperation@.
--
-- 'roleArn', 'associateEnclaveCertificateIamRole_roleArn' - The ARN of the IAM role to associate with the ACM certificate. You can
-- associate up to 16 IAM roles with an ACM certificate.
newAssociateEnclaveCertificateIamRole ::
  AssociateEnclaveCertificateIamRole
newAssociateEnclaveCertificateIamRole :: AssociateEnclaveCertificateIamRole
newAssociateEnclaveCertificateIamRole =
  AssociateEnclaveCertificateIamRole'
    { $sel:certificateArn:AssociateEnclaveCertificateIamRole' :: Maybe Text
certificateArn =
        forall a. Maybe a
Prelude.Nothing,
      $sel:dryRun:AssociateEnclaveCertificateIamRole' :: Maybe Bool
dryRun = forall a. Maybe a
Prelude.Nothing,
      $sel:roleArn:AssociateEnclaveCertificateIamRole' :: Maybe Text
roleArn = forall a. Maybe a
Prelude.Nothing
    }

-- | The ARN of the ACM certificate with which to associate the IAM role.
associateEnclaveCertificateIamRole_certificateArn :: Lens.Lens' AssociateEnclaveCertificateIamRole (Prelude.Maybe Prelude.Text)
associateEnclaveCertificateIamRole_certificateArn :: Lens' AssociateEnclaveCertificateIamRole (Maybe Text)
associateEnclaveCertificateIamRole_certificateArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssociateEnclaveCertificateIamRole' {Maybe Text
certificateArn :: Maybe Text
$sel:certificateArn:AssociateEnclaveCertificateIamRole' :: AssociateEnclaveCertificateIamRole -> Maybe Text
certificateArn} -> Maybe Text
certificateArn) (\s :: AssociateEnclaveCertificateIamRole
s@AssociateEnclaveCertificateIamRole' {} Maybe Text
a -> AssociateEnclaveCertificateIamRole
s {$sel:certificateArn:AssociateEnclaveCertificateIamRole' :: Maybe Text
certificateArn = Maybe Text
a} :: AssociateEnclaveCertificateIamRole)

-- | Checks whether you have the required permissions for the action, without
-- actually making the request, and provides an error response. If you have
-- the required permissions, the error response is @DryRunOperation@.
-- Otherwise, it is @UnauthorizedOperation@.
associateEnclaveCertificateIamRole_dryRun :: Lens.Lens' AssociateEnclaveCertificateIamRole (Prelude.Maybe Prelude.Bool)
associateEnclaveCertificateIamRole_dryRun :: Lens' AssociateEnclaveCertificateIamRole (Maybe Bool)
associateEnclaveCertificateIamRole_dryRun = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssociateEnclaveCertificateIamRole' {Maybe Bool
dryRun :: Maybe Bool
$sel:dryRun:AssociateEnclaveCertificateIamRole' :: AssociateEnclaveCertificateIamRole -> Maybe Bool
dryRun} -> Maybe Bool
dryRun) (\s :: AssociateEnclaveCertificateIamRole
s@AssociateEnclaveCertificateIamRole' {} Maybe Bool
a -> AssociateEnclaveCertificateIamRole
s {$sel:dryRun:AssociateEnclaveCertificateIamRole' :: Maybe Bool
dryRun = Maybe Bool
a} :: AssociateEnclaveCertificateIamRole)

-- | The ARN of the IAM role to associate with the ACM certificate. You can
-- associate up to 16 IAM roles with an ACM certificate.
associateEnclaveCertificateIamRole_roleArn :: Lens.Lens' AssociateEnclaveCertificateIamRole (Prelude.Maybe Prelude.Text)
associateEnclaveCertificateIamRole_roleArn :: Lens' AssociateEnclaveCertificateIamRole (Maybe Text)
associateEnclaveCertificateIamRole_roleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssociateEnclaveCertificateIamRole' {Maybe Text
roleArn :: Maybe Text
$sel:roleArn:AssociateEnclaveCertificateIamRole' :: AssociateEnclaveCertificateIamRole -> Maybe Text
roleArn} -> Maybe Text
roleArn) (\s :: AssociateEnclaveCertificateIamRole
s@AssociateEnclaveCertificateIamRole' {} Maybe Text
a -> AssociateEnclaveCertificateIamRole
s {$sel:roleArn:AssociateEnclaveCertificateIamRole' :: Maybe Text
roleArn = Maybe Text
a} :: AssociateEnclaveCertificateIamRole)

instance
  Core.AWSRequest
    AssociateEnclaveCertificateIamRole
  where
  type
    AWSResponse AssociateEnclaveCertificateIamRole =
      AssociateEnclaveCertificateIamRoleResponse
  request :: (Service -> Service)
-> AssociateEnclaveCertificateIamRole
-> Request AssociateEnclaveCertificateIamRole
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.postQuery (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy AssociateEnclaveCertificateIamRole
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse AssociateEnclaveCertificateIamRole)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXML
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe Text
-> Maybe Text
-> Maybe Text
-> Int
-> AssociateEnclaveCertificateIamRoleResponse
AssociateEnclaveCertificateIamRoleResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"certificateS3BucketName")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"certificateS3ObjectKey")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"encryptionKmsKeyId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance
  Prelude.Hashable
    AssociateEnclaveCertificateIamRole
  where
  hashWithSalt :: Int -> AssociateEnclaveCertificateIamRole -> Int
hashWithSalt
    Int
_salt
    AssociateEnclaveCertificateIamRole' {Maybe Bool
Maybe Text
roleArn :: Maybe Text
dryRun :: Maybe Bool
certificateArn :: Maybe Text
$sel:roleArn:AssociateEnclaveCertificateIamRole' :: AssociateEnclaveCertificateIamRole -> Maybe Text
$sel:dryRun:AssociateEnclaveCertificateIamRole' :: AssociateEnclaveCertificateIamRole -> Maybe Bool
$sel:certificateArn:AssociateEnclaveCertificateIamRole' :: AssociateEnclaveCertificateIamRole -> Maybe Text
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
certificateArn
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
dryRun
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
roleArn

instance
  Prelude.NFData
    AssociateEnclaveCertificateIamRole
  where
  rnf :: AssociateEnclaveCertificateIamRole -> ()
rnf AssociateEnclaveCertificateIamRole' {Maybe Bool
Maybe Text
roleArn :: Maybe Text
dryRun :: Maybe Bool
certificateArn :: Maybe Text
$sel:roleArn:AssociateEnclaveCertificateIamRole' :: AssociateEnclaveCertificateIamRole -> Maybe Text
$sel:dryRun:AssociateEnclaveCertificateIamRole' :: AssociateEnclaveCertificateIamRole -> Maybe Bool
$sel:certificateArn:AssociateEnclaveCertificateIamRole' :: AssociateEnclaveCertificateIamRole -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
certificateArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
dryRun
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
roleArn

instance
  Data.ToHeaders
    AssociateEnclaveCertificateIamRole
  where
  toHeaders :: AssociateEnclaveCertificateIamRole -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance
  Data.ToPath
    AssociateEnclaveCertificateIamRole
  where
  toPath :: AssociateEnclaveCertificateIamRole -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance
  Data.ToQuery
    AssociateEnclaveCertificateIamRole
  where
  toQuery :: AssociateEnclaveCertificateIamRole -> QueryString
toQuery AssociateEnclaveCertificateIamRole' {Maybe Bool
Maybe Text
roleArn :: Maybe Text
dryRun :: Maybe Bool
certificateArn :: Maybe Text
$sel:roleArn:AssociateEnclaveCertificateIamRole' :: AssociateEnclaveCertificateIamRole -> Maybe Text
$sel:dryRun:AssociateEnclaveCertificateIamRole' :: AssociateEnclaveCertificateIamRole -> Maybe Bool
$sel:certificateArn:AssociateEnclaveCertificateIamRole' :: AssociateEnclaveCertificateIamRole -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: ( ByteString
"AssociateEnclaveCertificateIamRole" ::
                      Prelude.ByteString
                  ),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2016-11-15" :: Prelude.ByteString),
        ByteString
"CertificateArn" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
certificateArn,
        ByteString
"DryRun" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
dryRun,
        ByteString
"RoleArn" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
roleArn
      ]

-- | /See:/ 'newAssociateEnclaveCertificateIamRoleResponse' smart constructor.
data AssociateEnclaveCertificateIamRoleResponse = AssociateEnclaveCertificateIamRoleResponse'
  { -- | The name of the Amazon S3 bucket to which the certificate was uploaded.
    AssociateEnclaveCertificateIamRoleResponse -> Maybe Text
certificateS3BucketName :: Prelude.Maybe Prelude.Text,
    -- | The Amazon S3 object key where the certificate, certificate chain, and
    -- encrypted private key bundle are stored. The object key is formatted as
    -- follows: @role_arn@\/@certificate_arn@.
    AssociateEnclaveCertificateIamRoleResponse -> Maybe Text
certificateS3ObjectKey :: Prelude.Maybe Prelude.Text,
    -- | The ID of the KMS key used to encrypt the private key of the
    -- certificate.
    AssociateEnclaveCertificateIamRoleResponse -> Maybe Text
encryptionKmsKeyId :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    AssociateEnclaveCertificateIamRoleResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (AssociateEnclaveCertificateIamRoleResponse
-> AssociateEnclaveCertificateIamRoleResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AssociateEnclaveCertificateIamRoleResponse
-> AssociateEnclaveCertificateIamRoleResponse -> Bool
$c/= :: AssociateEnclaveCertificateIamRoleResponse
-> AssociateEnclaveCertificateIamRoleResponse -> Bool
== :: AssociateEnclaveCertificateIamRoleResponse
-> AssociateEnclaveCertificateIamRoleResponse -> Bool
$c== :: AssociateEnclaveCertificateIamRoleResponse
-> AssociateEnclaveCertificateIamRoleResponse -> Bool
Prelude.Eq, ReadPrec [AssociateEnclaveCertificateIamRoleResponse]
ReadPrec AssociateEnclaveCertificateIamRoleResponse
Int -> ReadS AssociateEnclaveCertificateIamRoleResponse
ReadS [AssociateEnclaveCertificateIamRoleResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [AssociateEnclaveCertificateIamRoleResponse]
$creadListPrec :: ReadPrec [AssociateEnclaveCertificateIamRoleResponse]
readPrec :: ReadPrec AssociateEnclaveCertificateIamRoleResponse
$creadPrec :: ReadPrec AssociateEnclaveCertificateIamRoleResponse
readList :: ReadS [AssociateEnclaveCertificateIamRoleResponse]
$creadList :: ReadS [AssociateEnclaveCertificateIamRoleResponse]
readsPrec :: Int -> ReadS AssociateEnclaveCertificateIamRoleResponse
$creadsPrec :: Int -> ReadS AssociateEnclaveCertificateIamRoleResponse
Prelude.Read, Int -> AssociateEnclaveCertificateIamRoleResponse -> ShowS
[AssociateEnclaveCertificateIamRoleResponse] -> ShowS
AssociateEnclaveCertificateIamRoleResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AssociateEnclaveCertificateIamRoleResponse] -> ShowS
$cshowList :: [AssociateEnclaveCertificateIamRoleResponse] -> ShowS
show :: AssociateEnclaveCertificateIamRoleResponse -> String
$cshow :: AssociateEnclaveCertificateIamRoleResponse -> String
showsPrec :: Int -> AssociateEnclaveCertificateIamRoleResponse -> ShowS
$cshowsPrec :: Int -> AssociateEnclaveCertificateIamRoleResponse -> ShowS
Prelude.Show, forall x.
Rep AssociateEnclaveCertificateIamRoleResponse x
-> AssociateEnclaveCertificateIamRoleResponse
forall x.
AssociateEnclaveCertificateIamRoleResponse
-> Rep AssociateEnclaveCertificateIamRoleResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep AssociateEnclaveCertificateIamRoleResponse x
-> AssociateEnclaveCertificateIamRoleResponse
$cfrom :: forall x.
AssociateEnclaveCertificateIamRoleResponse
-> Rep AssociateEnclaveCertificateIamRoleResponse x
Prelude.Generic)

-- |
-- Create a value of 'AssociateEnclaveCertificateIamRoleResponse' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'certificateS3BucketName', 'associateEnclaveCertificateIamRoleResponse_certificateS3BucketName' - The name of the Amazon S3 bucket to which the certificate was uploaded.
--
-- 'certificateS3ObjectKey', 'associateEnclaveCertificateIamRoleResponse_certificateS3ObjectKey' - The Amazon S3 object key where the certificate, certificate chain, and
-- encrypted private key bundle are stored. The object key is formatted as
-- follows: @role_arn@\/@certificate_arn@.
--
-- 'encryptionKmsKeyId', 'associateEnclaveCertificateIamRoleResponse_encryptionKmsKeyId' - The ID of the KMS key used to encrypt the private key of the
-- certificate.
--
-- 'httpStatus', 'associateEnclaveCertificateIamRoleResponse_httpStatus' - The response's http status code.
newAssociateEnclaveCertificateIamRoleResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  AssociateEnclaveCertificateIamRoleResponse
newAssociateEnclaveCertificateIamRoleResponse :: Int -> AssociateEnclaveCertificateIamRoleResponse
newAssociateEnclaveCertificateIamRoleResponse
  Int
pHttpStatus_ =
    AssociateEnclaveCertificateIamRoleResponse'
      { $sel:certificateS3BucketName:AssociateEnclaveCertificateIamRoleResponse' :: Maybe Text
certificateS3BucketName =
          forall a. Maybe a
Prelude.Nothing,
        $sel:certificateS3ObjectKey:AssociateEnclaveCertificateIamRoleResponse' :: Maybe Text
certificateS3ObjectKey =
          forall a. Maybe a
Prelude.Nothing,
        $sel:encryptionKmsKeyId:AssociateEnclaveCertificateIamRoleResponse' :: Maybe Text
encryptionKmsKeyId =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:AssociateEnclaveCertificateIamRoleResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | The name of the Amazon S3 bucket to which the certificate was uploaded.
associateEnclaveCertificateIamRoleResponse_certificateS3BucketName :: Lens.Lens' AssociateEnclaveCertificateIamRoleResponse (Prelude.Maybe Prelude.Text)
associateEnclaveCertificateIamRoleResponse_certificateS3BucketName :: Lens' AssociateEnclaveCertificateIamRoleResponse (Maybe Text)
associateEnclaveCertificateIamRoleResponse_certificateS3BucketName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssociateEnclaveCertificateIamRoleResponse' {Maybe Text
certificateS3BucketName :: Maybe Text
$sel:certificateS3BucketName:AssociateEnclaveCertificateIamRoleResponse' :: AssociateEnclaveCertificateIamRoleResponse -> Maybe Text
certificateS3BucketName} -> Maybe Text
certificateS3BucketName) (\s :: AssociateEnclaveCertificateIamRoleResponse
s@AssociateEnclaveCertificateIamRoleResponse' {} Maybe Text
a -> AssociateEnclaveCertificateIamRoleResponse
s {$sel:certificateS3BucketName:AssociateEnclaveCertificateIamRoleResponse' :: Maybe Text
certificateS3BucketName = Maybe Text
a} :: AssociateEnclaveCertificateIamRoleResponse)

-- | The Amazon S3 object key where the certificate, certificate chain, and
-- encrypted private key bundle are stored. The object key is formatted as
-- follows: @role_arn@\/@certificate_arn@.
associateEnclaveCertificateIamRoleResponse_certificateS3ObjectKey :: Lens.Lens' AssociateEnclaveCertificateIamRoleResponse (Prelude.Maybe Prelude.Text)
associateEnclaveCertificateIamRoleResponse_certificateS3ObjectKey :: Lens' AssociateEnclaveCertificateIamRoleResponse (Maybe Text)
associateEnclaveCertificateIamRoleResponse_certificateS3ObjectKey = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssociateEnclaveCertificateIamRoleResponse' {Maybe Text
certificateS3ObjectKey :: Maybe Text
$sel:certificateS3ObjectKey:AssociateEnclaveCertificateIamRoleResponse' :: AssociateEnclaveCertificateIamRoleResponse -> Maybe Text
certificateS3ObjectKey} -> Maybe Text
certificateS3ObjectKey) (\s :: AssociateEnclaveCertificateIamRoleResponse
s@AssociateEnclaveCertificateIamRoleResponse' {} Maybe Text
a -> AssociateEnclaveCertificateIamRoleResponse
s {$sel:certificateS3ObjectKey:AssociateEnclaveCertificateIamRoleResponse' :: Maybe Text
certificateS3ObjectKey = Maybe Text
a} :: AssociateEnclaveCertificateIamRoleResponse)

-- | The ID of the KMS key used to encrypt the private key of the
-- certificate.
associateEnclaveCertificateIamRoleResponse_encryptionKmsKeyId :: Lens.Lens' AssociateEnclaveCertificateIamRoleResponse (Prelude.Maybe Prelude.Text)
associateEnclaveCertificateIamRoleResponse_encryptionKmsKeyId :: Lens' AssociateEnclaveCertificateIamRoleResponse (Maybe Text)
associateEnclaveCertificateIamRoleResponse_encryptionKmsKeyId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssociateEnclaveCertificateIamRoleResponse' {Maybe Text
encryptionKmsKeyId :: Maybe Text
$sel:encryptionKmsKeyId:AssociateEnclaveCertificateIamRoleResponse' :: AssociateEnclaveCertificateIamRoleResponse -> Maybe Text
encryptionKmsKeyId} -> Maybe Text
encryptionKmsKeyId) (\s :: AssociateEnclaveCertificateIamRoleResponse
s@AssociateEnclaveCertificateIamRoleResponse' {} Maybe Text
a -> AssociateEnclaveCertificateIamRoleResponse
s {$sel:encryptionKmsKeyId:AssociateEnclaveCertificateIamRoleResponse' :: Maybe Text
encryptionKmsKeyId = Maybe Text
a} :: AssociateEnclaveCertificateIamRoleResponse)

-- | The response's http status code.
associateEnclaveCertificateIamRoleResponse_httpStatus :: Lens.Lens' AssociateEnclaveCertificateIamRoleResponse Prelude.Int
associateEnclaveCertificateIamRoleResponse_httpStatus :: Lens' AssociateEnclaveCertificateIamRoleResponse Int
associateEnclaveCertificateIamRoleResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssociateEnclaveCertificateIamRoleResponse' {Int
httpStatus :: Int
$sel:httpStatus:AssociateEnclaveCertificateIamRoleResponse' :: AssociateEnclaveCertificateIamRoleResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: AssociateEnclaveCertificateIamRoleResponse
s@AssociateEnclaveCertificateIamRoleResponse' {} Int
a -> AssociateEnclaveCertificateIamRoleResponse
s {$sel:httpStatus:AssociateEnclaveCertificateIamRoleResponse' :: Int
httpStatus = Int
a} :: AssociateEnclaveCertificateIamRoleResponse)

instance
  Prelude.NFData
    AssociateEnclaveCertificateIamRoleResponse
  where
  rnf :: AssociateEnclaveCertificateIamRoleResponse -> ()
rnf AssociateEnclaveCertificateIamRoleResponse' {Int
Maybe Text
httpStatus :: Int
encryptionKmsKeyId :: Maybe Text
certificateS3ObjectKey :: Maybe Text
certificateS3BucketName :: Maybe Text
$sel:httpStatus:AssociateEnclaveCertificateIamRoleResponse' :: AssociateEnclaveCertificateIamRoleResponse -> Int
$sel:encryptionKmsKeyId:AssociateEnclaveCertificateIamRoleResponse' :: AssociateEnclaveCertificateIamRoleResponse -> Maybe Text
$sel:certificateS3ObjectKey:AssociateEnclaveCertificateIamRoleResponse' :: AssociateEnclaveCertificateIamRoleResponse -> Maybe Text
$sel:certificateS3BucketName:AssociateEnclaveCertificateIamRoleResponse' :: AssociateEnclaveCertificateIamRoleResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
certificateS3BucketName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
certificateS3ObjectKey
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
encryptionKmsKeyId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus