packages feed

amazonka-rds-2.0: gen/Amazonka/RDS/StartActivityStream.hs

{-# 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.RDS.StartActivityStream
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Starts a database activity stream to monitor activity on the database.
-- For more information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/DBActivityStreams.html Database Activity Streams>
-- in the /Amazon Aurora User Guide/.
module Amazonka.RDS.StartActivityStream
  ( -- * Creating a Request
    StartActivityStream (..),
    newStartActivityStream,

    -- * Request Lenses
    startActivityStream_applyImmediately,
    startActivityStream_engineNativeAuditFieldsIncluded,
    startActivityStream_resourceArn,
    startActivityStream_mode,
    startActivityStream_kmsKeyId,

    -- * Destructuring the Response
    StartActivityStreamResponse (..),
    newStartActivityStreamResponse,

    -- * Response Lenses
    startActivityStreamResponse_applyImmediately,
    startActivityStreamResponse_engineNativeAuditFieldsIncluded,
    startActivityStreamResponse_kinesisStreamName,
    startActivityStreamResponse_kmsKeyId,
    startActivityStreamResponse_mode,
    startActivityStreamResponse_status,
    startActivityStreamResponse_httpStatus,
  )
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 Amazonka.RDS.Types
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newStartActivityStream' smart constructor.
data StartActivityStream = StartActivityStream'
  { -- | Specifies whether or not the database activity stream is to start as
    -- soon as possible, regardless of the maintenance window for the database.
    applyImmediately :: Prelude.Maybe Prelude.Bool,
    -- | Specifies whether the database activity stream includes engine-native
    -- audit fields. This option only applies to an Oracle DB instance. By
    -- default, no engine-native audit fields are included.
    engineNativeAuditFieldsIncluded :: Prelude.Maybe Prelude.Bool,
    -- | The Amazon Resource Name (ARN) of the DB cluster, for example,
    -- @arn:aws:rds:us-east-1:12345667890:cluster:das-cluster@.
    resourceArn :: Prelude.Text,
    -- | Specifies the mode of the database activity stream. Database events such
    -- as a change or access generate an activity stream event. The database
    -- session can handle these events either synchronously or asynchronously.
    mode :: ActivityStreamMode,
    -- | The Amazon Web Services KMS key identifier for encrypting messages in
    -- the database activity stream. The Amazon Web Services KMS key identifier
    -- is the key ARN, key ID, alias ARN, or alias name for the KMS key.
    kmsKeyId :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'StartActivityStream' 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:
--
-- 'applyImmediately', 'startActivityStream_applyImmediately' - Specifies whether or not the database activity stream is to start as
-- soon as possible, regardless of the maintenance window for the database.
--
-- 'engineNativeAuditFieldsIncluded', 'startActivityStream_engineNativeAuditFieldsIncluded' - Specifies whether the database activity stream includes engine-native
-- audit fields. This option only applies to an Oracle DB instance. By
-- default, no engine-native audit fields are included.
--
-- 'resourceArn', 'startActivityStream_resourceArn' - The Amazon Resource Name (ARN) of the DB cluster, for example,
-- @arn:aws:rds:us-east-1:12345667890:cluster:das-cluster@.
--
-- 'mode', 'startActivityStream_mode' - Specifies the mode of the database activity stream. Database events such
-- as a change or access generate an activity stream event. The database
-- session can handle these events either synchronously or asynchronously.
--
-- 'kmsKeyId', 'startActivityStream_kmsKeyId' - The Amazon Web Services KMS key identifier for encrypting messages in
-- the database activity stream. The Amazon Web Services KMS key identifier
-- is the key ARN, key ID, alias ARN, or alias name for the KMS key.
newStartActivityStream ::
  -- | 'resourceArn'
  Prelude.Text ->
  -- | 'mode'
  ActivityStreamMode ->
  -- | 'kmsKeyId'
  Prelude.Text ->
  StartActivityStream
newStartActivityStream
  pResourceArn_
  pMode_
  pKmsKeyId_ =
    StartActivityStream'
      { applyImmediately =
          Prelude.Nothing,
        engineNativeAuditFieldsIncluded = Prelude.Nothing,
        resourceArn = pResourceArn_,
        mode = pMode_,
        kmsKeyId = pKmsKeyId_
      }

-- | Specifies whether or not the database activity stream is to start as
-- soon as possible, regardless of the maintenance window for the database.
startActivityStream_applyImmediately :: Lens.Lens' StartActivityStream (Prelude.Maybe Prelude.Bool)
startActivityStream_applyImmediately = Lens.lens (\StartActivityStream' {applyImmediately} -> applyImmediately) (\s@StartActivityStream' {} a -> s {applyImmediately = a} :: StartActivityStream)

-- | Specifies whether the database activity stream includes engine-native
-- audit fields. This option only applies to an Oracle DB instance. By
-- default, no engine-native audit fields are included.
startActivityStream_engineNativeAuditFieldsIncluded :: Lens.Lens' StartActivityStream (Prelude.Maybe Prelude.Bool)
startActivityStream_engineNativeAuditFieldsIncluded = Lens.lens (\StartActivityStream' {engineNativeAuditFieldsIncluded} -> engineNativeAuditFieldsIncluded) (\s@StartActivityStream' {} a -> s {engineNativeAuditFieldsIncluded = a} :: StartActivityStream)

-- | The Amazon Resource Name (ARN) of the DB cluster, for example,
-- @arn:aws:rds:us-east-1:12345667890:cluster:das-cluster@.
startActivityStream_resourceArn :: Lens.Lens' StartActivityStream Prelude.Text
startActivityStream_resourceArn = Lens.lens (\StartActivityStream' {resourceArn} -> resourceArn) (\s@StartActivityStream' {} a -> s {resourceArn = a} :: StartActivityStream)

-- | Specifies the mode of the database activity stream. Database events such
-- as a change or access generate an activity stream event. The database
-- session can handle these events either synchronously or asynchronously.
startActivityStream_mode :: Lens.Lens' StartActivityStream ActivityStreamMode
startActivityStream_mode = Lens.lens (\StartActivityStream' {mode} -> mode) (\s@StartActivityStream' {} a -> s {mode = a} :: StartActivityStream)

-- | The Amazon Web Services KMS key identifier for encrypting messages in
-- the database activity stream. The Amazon Web Services KMS key identifier
-- is the key ARN, key ID, alias ARN, or alias name for the KMS key.
startActivityStream_kmsKeyId :: Lens.Lens' StartActivityStream Prelude.Text
startActivityStream_kmsKeyId = Lens.lens (\StartActivityStream' {kmsKeyId} -> kmsKeyId) (\s@StartActivityStream' {} a -> s {kmsKeyId = a} :: StartActivityStream)

instance Core.AWSRequest StartActivityStream where
  type
    AWSResponse StartActivityStream =
      StartActivityStreamResponse
  request overrides =
    Request.postQuery (overrides defaultService)
  response =
    Response.receiveXMLWrapper
      "StartActivityStreamResult"
      ( \s h x ->
          StartActivityStreamResponse'
            Prelude.<$> (x Data..@? "ApplyImmediately")
            Prelude.<*> (x Data..@? "EngineNativeAuditFieldsIncluded")
            Prelude.<*> (x Data..@? "KinesisStreamName")
            Prelude.<*> (x Data..@? "KmsKeyId")
            Prelude.<*> (x Data..@? "Mode")
            Prelude.<*> (x Data..@? "Status")
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
      )

instance Prelude.Hashable StartActivityStream where
  hashWithSalt _salt StartActivityStream' {..} =
    _salt
      `Prelude.hashWithSalt` applyImmediately
      `Prelude.hashWithSalt` engineNativeAuditFieldsIncluded
      `Prelude.hashWithSalt` resourceArn
      `Prelude.hashWithSalt` mode
      `Prelude.hashWithSalt` kmsKeyId

instance Prelude.NFData StartActivityStream where
  rnf StartActivityStream' {..} =
    Prelude.rnf applyImmediately
      `Prelude.seq` Prelude.rnf engineNativeAuditFieldsIncluded
      `Prelude.seq` Prelude.rnf resourceArn
      `Prelude.seq` Prelude.rnf mode
      `Prelude.seq` Prelude.rnf kmsKeyId

instance Data.ToHeaders StartActivityStream where
  toHeaders = Prelude.const Prelude.mempty

instance Data.ToPath StartActivityStream where
  toPath = Prelude.const "/"

instance Data.ToQuery StartActivityStream where
  toQuery StartActivityStream' {..} =
    Prelude.mconcat
      [ "Action"
          Data.=: ("StartActivityStream" :: Prelude.ByteString),
        "Version"
          Data.=: ("2014-10-31" :: Prelude.ByteString),
        "ApplyImmediately" Data.=: applyImmediately,
        "EngineNativeAuditFieldsIncluded"
          Data.=: engineNativeAuditFieldsIncluded,
        "ResourceArn" Data.=: resourceArn,
        "Mode" Data.=: mode,
        "KmsKeyId" Data.=: kmsKeyId
      ]

-- | /See:/ 'newStartActivityStreamResponse' smart constructor.
data StartActivityStreamResponse = StartActivityStreamResponse'
  { -- | Indicates whether or not the database activity stream will start as soon
    -- as possible, regardless of the maintenance window for the database.
    applyImmediately :: Prelude.Maybe Prelude.Bool,
    -- | Indicates whether engine-native audit fields are included in the
    -- database activity stream.
    engineNativeAuditFieldsIncluded :: Prelude.Maybe Prelude.Bool,
    -- | The name of the Amazon Kinesis data stream to be used for the database
    -- activity stream.
    kinesisStreamName :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Web Services KMS key identifier for encryption of messages in
    -- the database activity stream.
    kmsKeyId :: Prelude.Maybe Prelude.Text,
    -- | The mode of the database activity stream.
    mode :: Prelude.Maybe ActivityStreamMode,
    -- | The status of the database activity stream.
    status :: Prelude.Maybe ActivityStreamStatus,
    -- | The response's http status code.
    httpStatus :: Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'StartActivityStreamResponse' 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:
--
-- 'applyImmediately', 'startActivityStreamResponse_applyImmediately' - Indicates whether or not the database activity stream will start as soon
-- as possible, regardless of the maintenance window for the database.
--
-- 'engineNativeAuditFieldsIncluded', 'startActivityStreamResponse_engineNativeAuditFieldsIncluded' - Indicates whether engine-native audit fields are included in the
-- database activity stream.
--
-- 'kinesisStreamName', 'startActivityStreamResponse_kinesisStreamName' - The name of the Amazon Kinesis data stream to be used for the database
-- activity stream.
--
-- 'kmsKeyId', 'startActivityStreamResponse_kmsKeyId' - The Amazon Web Services KMS key identifier for encryption of messages in
-- the database activity stream.
--
-- 'mode', 'startActivityStreamResponse_mode' - The mode of the database activity stream.
--
-- 'status', 'startActivityStreamResponse_status' - The status of the database activity stream.
--
-- 'httpStatus', 'startActivityStreamResponse_httpStatus' - The response's http status code.
newStartActivityStreamResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  StartActivityStreamResponse
newStartActivityStreamResponse pHttpStatus_ =
  StartActivityStreamResponse'
    { applyImmediately =
        Prelude.Nothing,
      engineNativeAuditFieldsIncluded =
        Prelude.Nothing,
      kinesisStreamName = Prelude.Nothing,
      kmsKeyId = Prelude.Nothing,
      mode = Prelude.Nothing,
      status = Prelude.Nothing,
      httpStatus = pHttpStatus_
    }

-- | Indicates whether or not the database activity stream will start as soon
-- as possible, regardless of the maintenance window for the database.
startActivityStreamResponse_applyImmediately :: Lens.Lens' StartActivityStreamResponse (Prelude.Maybe Prelude.Bool)
startActivityStreamResponse_applyImmediately = Lens.lens (\StartActivityStreamResponse' {applyImmediately} -> applyImmediately) (\s@StartActivityStreamResponse' {} a -> s {applyImmediately = a} :: StartActivityStreamResponse)

-- | Indicates whether engine-native audit fields are included in the
-- database activity stream.
startActivityStreamResponse_engineNativeAuditFieldsIncluded :: Lens.Lens' StartActivityStreamResponse (Prelude.Maybe Prelude.Bool)
startActivityStreamResponse_engineNativeAuditFieldsIncluded = Lens.lens (\StartActivityStreamResponse' {engineNativeAuditFieldsIncluded} -> engineNativeAuditFieldsIncluded) (\s@StartActivityStreamResponse' {} a -> s {engineNativeAuditFieldsIncluded = a} :: StartActivityStreamResponse)

-- | The name of the Amazon Kinesis data stream to be used for the database
-- activity stream.
startActivityStreamResponse_kinesisStreamName :: Lens.Lens' StartActivityStreamResponse (Prelude.Maybe Prelude.Text)
startActivityStreamResponse_kinesisStreamName = Lens.lens (\StartActivityStreamResponse' {kinesisStreamName} -> kinesisStreamName) (\s@StartActivityStreamResponse' {} a -> s {kinesisStreamName = a} :: StartActivityStreamResponse)

-- | The Amazon Web Services KMS key identifier for encryption of messages in
-- the database activity stream.
startActivityStreamResponse_kmsKeyId :: Lens.Lens' StartActivityStreamResponse (Prelude.Maybe Prelude.Text)
startActivityStreamResponse_kmsKeyId = Lens.lens (\StartActivityStreamResponse' {kmsKeyId} -> kmsKeyId) (\s@StartActivityStreamResponse' {} a -> s {kmsKeyId = a} :: StartActivityStreamResponse)

-- | The mode of the database activity stream.
startActivityStreamResponse_mode :: Lens.Lens' StartActivityStreamResponse (Prelude.Maybe ActivityStreamMode)
startActivityStreamResponse_mode = Lens.lens (\StartActivityStreamResponse' {mode} -> mode) (\s@StartActivityStreamResponse' {} a -> s {mode = a} :: StartActivityStreamResponse)

-- | The status of the database activity stream.
startActivityStreamResponse_status :: Lens.Lens' StartActivityStreamResponse (Prelude.Maybe ActivityStreamStatus)
startActivityStreamResponse_status = Lens.lens (\StartActivityStreamResponse' {status} -> status) (\s@StartActivityStreamResponse' {} a -> s {status = a} :: StartActivityStreamResponse)

-- | The response's http status code.
startActivityStreamResponse_httpStatus :: Lens.Lens' StartActivityStreamResponse Prelude.Int
startActivityStreamResponse_httpStatus = Lens.lens (\StartActivityStreamResponse' {httpStatus} -> httpStatus) (\s@StartActivityStreamResponse' {} a -> s {httpStatus = a} :: StartActivityStreamResponse)

instance Prelude.NFData StartActivityStreamResponse where
  rnf StartActivityStreamResponse' {..} =
    Prelude.rnf applyImmediately
      `Prelude.seq` Prelude.rnf engineNativeAuditFieldsIncluded
      `Prelude.seq` Prelude.rnf kinesisStreamName
      `Prelude.seq` Prelude.rnf kmsKeyId
      `Prelude.seq` Prelude.rnf mode
      `Prelude.seq` Prelude.rnf status
      `Prelude.seq` Prelude.rnf httpStatus