amazonka-cloudtrail-0.2.2: gen/Network/AWS/CloudTrail/CreateTrail.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-- Module : Network.AWS.CloudTrail.CreateTrail
-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
-- License : This Source Code Form is subject to the terms of
-- the Mozilla Public License, v. 2.0.
-- A copy of the MPL can be found in the LICENSE file or
-- you can obtain it at http://mozilla.org/MPL/2.0/.
-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>
-- Stability : experimental
-- Portability : non-portable (GHC extensions)
--
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- | From the command line, use 'create-subscription'.
--
-- Creates a trail that specifies the settings for delivery of log data to an
-- Amazon S3 bucket.
--
-- <http://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_CreateTrail.html>
module Network.AWS.CloudTrail.CreateTrail
(
-- * Request
CreateTrail
-- ** Request constructor
, createTrail
-- ** Request lenses
, ctCloudWatchLogsLogGroupArn
, ctCloudWatchLogsRoleArn
, ctIncludeGlobalServiceEvents
, ctName
, ctS3BucketName
, ctS3KeyPrefix
, ctSnsTopicName
-- * Response
, CreateTrailResponse
-- ** Response constructor
, createTrailResponse
-- ** Response lenses
, ctrCloudWatchLogsLogGroupArn
, ctrCloudWatchLogsRoleArn
, ctrIncludeGlobalServiceEvents
, ctrName
, ctrS3BucketName
, ctrS3KeyPrefix
, ctrSnsTopicName
) where
import Network.AWS.Prelude
import Network.AWS.Request.JSON
import Network.AWS.CloudTrail.Types
import qualified GHC.Exts
data CreateTrail = CreateTrail
{ _ctCloudWatchLogsLogGroupArn :: Maybe Text
, _ctCloudWatchLogsRoleArn :: Maybe Text
, _ctIncludeGlobalServiceEvents :: Maybe Bool
, _ctName :: Text
, _ctS3BucketName :: Text
, _ctS3KeyPrefix :: Maybe Text
, _ctSnsTopicName :: Maybe Text
} deriving (Eq, Ord, Read, Show)
-- | 'CreateTrail' constructor.
--
-- The fields accessible through corresponding lenses are:
--
-- * 'ctCloudWatchLogsLogGroupArn' @::@ 'Maybe' 'Text'
--
-- * 'ctCloudWatchLogsRoleArn' @::@ 'Maybe' 'Text'
--
-- * 'ctIncludeGlobalServiceEvents' @::@ 'Maybe' 'Bool'
--
-- * 'ctName' @::@ 'Text'
--
-- * 'ctS3BucketName' @::@ 'Text'
--
-- * 'ctS3KeyPrefix' @::@ 'Maybe' 'Text'
--
-- * 'ctSnsTopicName' @::@ 'Maybe' 'Text'
--
createTrail :: Text -- ^ 'ctName'
-> Text -- ^ 'ctS3BucketName'
-> CreateTrail
createTrail p1 p2 = CreateTrail
{ _ctName = p1
, _ctS3BucketName = p2
, _ctS3KeyPrefix = Nothing
, _ctSnsTopicName = Nothing
, _ctIncludeGlobalServiceEvents = Nothing
, _ctCloudWatchLogsLogGroupArn = Nothing
, _ctCloudWatchLogsRoleArn = Nothing
}
-- | Specifies a log group name using an Amazon Resource Name (ARN), a unique
-- identifier that represents the log group to which CloudTrail logs will be
-- delivered. Not required unless you specify CloudWatchLogsRoleArn.
ctCloudWatchLogsLogGroupArn :: Lens' CreateTrail (Maybe Text)
ctCloudWatchLogsLogGroupArn =
lens _ctCloudWatchLogsLogGroupArn
(\s a -> s { _ctCloudWatchLogsLogGroupArn = a })
-- | Specifies the role for the CloudWatch Logs endpoint to assume to write to a
-- user’s log group.
ctCloudWatchLogsRoleArn :: Lens' CreateTrail (Maybe Text)
ctCloudWatchLogsRoleArn =
lens _ctCloudWatchLogsRoleArn (\s a -> s { _ctCloudWatchLogsRoleArn = a })
-- | Specifies whether the trail is publishing events from global services such as
-- IAM to the log files.
ctIncludeGlobalServiceEvents :: Lens' CreateTrail (Maybe Bool)
ctIncludeGlobalServiceEvents =
lens _ctIncludeGlobalServiceEvents
(\s a -> s { _ctIncludeGlobalServiceEvents = a })
-- | Specifies the name of the trail.
ctName :: Lens' CreateTrail Text
ctName = lens _ctName (\s a -> s { _ctName = a })
-- | Specifies the name of the Amazon S3 bucket designated for publishing log
-- files.
ctS3BucketName :: Lens' CreateTrail Text
ctS3BucketName = lens _ctS3BucketName (\s a -> s { _ctS3BucketName = a })
-- | Specifies the Amazon S3 key prefix that precedes the name of the bucket you
-- have designated for log file delivery.
ctS3KeyPrefix :: Lens' CreateTrail (Maybe Text)
ctS3KeyPrefix = lens _ctS3KeyPrefix (\s a -> s { _ctS3KeyPrefix = a })
-- | Specifies the name of the Amazon SNS topic defined for notification of log
-- file delivery.
ctSnsTopicName :: Lens' CreateTrail (Maybe Text)
ctSnsTopicName = lens _ctSnsTopicName (\s a -> s { _ctSnsTopicName = a })
data CreateTrailResponse = CreateTrailResponse
{ _ctrCloudWatchLogsLogGroupArn :: Maybe Text
, _ctrCloudWatchLogsRoleArn :: Maybe Text
, _ctrIncludeGlobalServiceEvents :: Maybe Bool
, _ctrName :: Maybe Text
, _ctrS3BucketName :: Maybe Text
, _ctrS3KeyPrefix :: Maybe Text
, _ctrSnsTopicName :: Maybe Text
} deriving (Eq, Ord, Read, Show)
-- | 'CreateTrailResponse' constructor.
--
-- The fields accessible through corresponding lenses are:
--
-- * 'ctrCloudWatchLogsLogGroupArn' @::@ 'Maybe' 'Text'
--
-- * 'ctrCloudWatchLogsRoleArn' @::@ 'Maybe' 'Text'
--
-- * 'ctrIncludeGlobalServiceEvents' @::@ 'Maybe' 'Bool'
--
-- * 'ctrName' @::@ 'Maybe' 'Text'
--
-- * 'ctrS3BucketName' @::@ 'Maybe' 'Text'
--
-- * 'ctrS3KeyPrefix' @::@ 'Maybe' 'Text'
--
-- * 'ctrSnsTopicName' @::@ 'Maybe' 'Text'
--
createTrailResponse :: CreateTrailResponse
createTrailResponse = CreateTrailResponse
{ _ctrName = Nothing
, _ctrS3BucketName = Nothing
, _ctrS3KeyPrefix = Nothing
, _ctrSnsTopicName = Nothing
, _ctrIncludeGlobalServiceEvents = Nothing
, _ctrCloudWatchLogsLogGroupArn = Nothing
, _ctrCloudWatchLogsRoleArn = Nothing
}
-- | Specifies the Amazon Resource Name (ARN) of the log group to which CloudTrail
-- logs will be delivered.
ctrCloudWatchLogsLogGroupArn :: Lens' CreateTrailResponse (Maybe Text)
ctrCloudWatchLogsLogGroupArn =
lens _ctrCloudWatchLogsLogGroupArn
(\s a -> s { _ctrCloudWatchLogsLogGroupArn = a })
-- | Specifies the role for the CloudWatch Logs endpoint to assume to write to a
-- user’s log group.
ctrCloudWatchLogsRoleArn :: Lens' CreateTrailResponse (Maybe Text)
ctrCloudWatchLogsRoleArn =
lens _ctrCloudWatchLogsRoleArn
(\s a -> s { _ctrCloudWatchLogsRoleArn = a })
-- | Specifies whether the trail is publishing events from global services such as
-- IAM to the log files.
ctrIncludeGlobalServiceEvents :: Lens' CreateTrailResponse (Maybe Bool)
ctrIncludeGlobalServiceEvents =
lens _ctrIncludeGlobalServiceEvents
(\s a -> s { _ctrIncludeGlobalServiceEvents = a })
-- | Specifies the name of the trail.
ctrName :: Lens' CreateTrailResponse (Maybe Text)
ctrName = lens _ctrName (\s a -> s { _ctrName = a })
-- | Specifies the name of the Amazon S3 bucket designated for publishing log
-- files.
ctrS3BucketName :: Lens' CreateTrailResponse (Maybe Text)
ctrS3BucketName = lens _ctrS3BucketName (\s a -> s { _ctrS3BucketName = a })
-- | Specifies the Amazon S3 key prefix that precedes the name of the bucket you
-- have designated for log file delivery.
ctrS3KeyPrefix :: Lens' CreateTrailResponse (Maybe Text)
ctrS3KeyPrefix = lens _ctrS3KeyPrefix (\s a -> s { _ctrS3KeyPrefix = a })
-- | Specifies the name of the Amazon SNS topic defined for notification of log
-- file delivery.
ctrSnsTopicName :: Lens' CreateTrailResponse (Maybe Text)
ctrSnsTopicName = lens _ctrSnsTopicName (\s a -> s { _ctrSnsTopicName = a })
instance ToPath CreateTrail where
toPath = const "/"
instance ToQuery CreateTrail where
toQuery = const mempty
instance ToHeaders CreateTrail
instance ToJSON CreateTrail where
toJSON CreateTrail{..} = object
[ "Name" .= _ctName
, "S3BucketName" .= _ctS3BucketName
, "S3KeyPrefix" .= _ctS3KeyPrefix
, "SnsTopicName" .= _ctSnsTopicName
, "IncludeGlobalServiceEvents" .= _ctIncludeGlobalServiceEvents
, "CloudWatchLogsLogGroupArn" .= _ctCloudWatchLogsLogGroupArn
, "CloudWatchLogsRoleArn" .= _ctCloudWatchLogsRoleArn
]
instance AWSRequest CreateTrail where
type Sv CreateTrail = CloudTrail
type Rs CreateTrail = CreateTrailResponse
request = post "CreateTrail"
response = jsonResponse
instance FromJSON CreateTrailResponse where
parseJSON = withObject "CreateTrailResponse" $ \o -> CreateTrailResponse
<$> o .:? "CloudWatchLogsLogGroupArn"
<*> o .:? "CloudWatchLogsRoleArn"
<*> o .:? "IncludeGlobalServiceEvents"
<*> o .:? "Name"
<*> o .:? "S3BucketName"
<*> o .:? "S3KeyPrefix"
<*> o .:? "SnsTopicName"