amazonka-lambda-0.3.4: gen/Network/AWS/Lambda/UpdateEventSourceMapping.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.Lambda.UpdateEventSourceMapping
-- 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.
-- | You can update an event source mapping. This is useful if you want to change
-- the parameters of the existing mapping without losing your position in the
-- stream. You can change which function will receive the stream records, but to
-- change the stream itself, you must create a new mapping.
--
-- This operation requires permission for the 'lambda:UpdateEventSourceMapping'
-- action.
--
-- <http://docs.aws.amazon.com/lambda/latest/dg/API_UpdateEventSourceMapping.html>
module Network.AWS.Lambda.UpdateEventSourceMapping
(
-- * Request
UpdateEventSourceMapping
-- ** Request constructor
, updateEventSourceMapping
-- ** Request lenses
, uesmBatchSize
, uesmEnabled
, uesmFunctionName
, uesmUUID
-- * Response
, UpdateEventSourceMappingResponse
-- ** Response constructor
, updateEventSourceMappingResponse
-- ** Response lenses
, uesmrBatchSize
, uesmrEventSourceArn
, uesmrFunctionArn
, uesmrLastModified
, uesmrLastProcessingResult
, uesmrState
, uesmrStateTransitionReason
, uesmrUUID
) where
import Network.AWS.Data (Object)
import Network.AWS.Prelude
import Network.AWS.Request.RestJSON
import Network.AWS.Lambda.Types
import qualified GHC.Exts
data UpdateEventSourceMapping = UpdateEventSourceMapping
{ _uesmBatchSize :: Maybe Nat
, _uesmEnabled :: Maybe Bool
, _uesmFunctionName :: Maybe Text
, _uesmUUID :: Text
} deriving (Eq, Ord, Read, Show)
-- | 'UpdateEventSourceMapping' constructor.
--
-- The fields accessible through corresponding lenses are:
--
-- * 'uesmBatchSize' @::@ 'Maybe' 'Natural'
--
-- * 'uesmEnabled' @::@ 'Maybe' 'Bool'
--
-- * 'uesmFunctionName' @::@ 'Maybe' 'Text'
--
-- * 'uesmUUID' @::@ 'Text'
--
updateEventSourceMapping :: Text -- ^ 'uesmUUID'
-> UpdateEventSourceMapping
updateEventSourceMapping p1 = UpdateEventSourceMapping
{ _uesmUUID = p1
, _uesmFunctionName = Nothing
, _uesmEnabled = Nothing
, _uesmBatchSize = Nothing
}
-- | The maximum number of stream records that can be sent to your Lambda function
-- for a single invocation.
uesmBatchSize :: Lens' UpdateEventSourceMapping (Maybe Natural)
uesmBatchSize = lens _uesmBatchSize (\s a -> s { _uesmBatchSize = a }) . mapping _Nat
-- | Specifies whether AWS Lambda should actively poll the stream or not. If
-- disabled, AWS Lambda will not poll the stream.
uesmEnabled :: Lens' UpdateEventSourceMapping (Maybe Bool)
uesmEnabled = lens _uesmEnabled (\s a -> s { _uesmEnabled = a })
-- | The Lambda function to which you want the stream records sent.
--
-- You can specify an unqualified function name (for example, "Thumbnail") or
-- you can specify Amazon Resource Name (ARN) of the function (for example,
-- "arn:aws:lambda:us-west-2:account-id:function:ThumbNail"). AWS Lambda also
-- allows you to specify only the account ID qualifier (for example,
-- "account-id:Thumbnail"). Note that the length constraint applies only to the
-- ARN. If you specify only the function name, it is limited to 64 character in
-- length.
uesmFunctionName :: Lens' UpdateEventSourceMapping (Maybe Text)
uesmFunctionName = lens _uesmFunctionName (\s a -> s { _uesmFunctionName = a })
-- | The event source mapping identifier.
uesmUUID :: Lens' UpdateEventSourceMapping Text
uesmUUID = lens _uesmUUID (\s a -> s { _uesmUUID = a })
data UpdateEventSourceMappingResponse = UpdateEventSourceMappingResponse
{ _uesmrBatchSize :: Maybe Nat
, _uesmrEventSourceArn :: Maybe Text
, _uesmrFunctionArn :: Maybe Text
, _uesmrLastModified :: Maybe POSIX
, _uesmrLastProcessingResult :: Maybe Text
, _uesmrState :: Maybe Text
, _uesmrStateTransitionReason :: Maybe Text
, _uesmrUUID :: Maybe Text
} deriving (Eq, Ord, Read, Show)
-- | 'UpdateEventSourceMappingResponse' constructor.
--
-- The fields accessible through corresponding lenses are:
--
-- * 'uesmrBatchSize' @::@ 'Maybe' 'Natural'
--
-- * 'uesmrEventSourceArn' @::@ 'Maybe' 'Text'
--
-- * 'uesmrFunctionArn' @::@ 'Maybe' 'Text'
--
-- * 'uesmrLastModified' @::@ 'Maybe' 'UTCTime'
--
-- * 'uesmrLastProcessingResult' @::@ 'Maybe' 'Text'
--
-- * 'uesmrState' @::@ 'Maybe' 'Text'
--
-- * 'uesmrStateTransitionReason' @::@ 'Maybe' 'Text'
--
-- * 'uesmrUUID' @::@ 'Maybe' 'Text'
--
updateEventSourceMappingResponse :: UpdateEventSourceMappingResponse
updateEventSourceMappingResponse = UpdateEventSourceMappingResponse
{ _uesmrUUID = Nothing
, _uesmrBatchSize = Nothing
, _uesmrEventSourceArn = Nothing
, _uesmrFunctionArn = Nothing
, _uesmrLastModified = Nothing
, _uesmrLastProcessingResult = Nothing
, _uesmrState = Nothing
, _uesmrStateTransitionReason = Nothing
}
-- | The largest number of records that AWS Lambda will retrieve from your event
-- source at the time of invoking your function. Your function receives an event
-- with all the retrieved records.
uesmrBatchSize :: Lens' UpdateEventSourceMappingResponse (Maybe Natural)
uesmrBatchSize = lens _uesmrBatchSize (\s a -> s { _uesmrBatchSize = a }) . mapping _Nat
-- | The Amazon Resource Name (ARN) of the Amazon Kinesis stream that is the
-- source of events.
uesmrEventSourceArn :: Lens' UpdateEventSourceMappingResponse (Maybe Text)
uesmrEventSourceArn =
lens _uesmrEventSourceArn (\s a -> s { _uesmrEventSourceArn = a })
-- | The Lambda function to invoke when AWS Lambda detects an event on the stream.
uesmrFunctionArn :: Lens' UpdateEventSourceMappingResponse (Maybe Text)
uesmrFunctionArn = lens _uesmrFunctionArn (\s a -> s { _uesmrFunctionArn = a })
-- | The UTC time string indicating the last time the event mapping was updated.
uesmrLastModified :: Lens' UpdateEventSourceMappingResponse (Maybe UTCTime)
uesmrLastModified =
lens _uesmrLastModified (\s a -> s { _uesmrLastModified = a })
. mapping _Time
-- | The result of the last AWS Lambda invocation of your Lambda function.
uesmrLastProcessingResult :: Lens' UpdateEventSourceMappingResponse (Maybe Text)
uesmrLastProcessingResult =
lens _uesmrLastProcessingResult
(\s a -> s { _uesmrLastProcessingResult = a })
-- | The state of the event source mapping. It can be "Creating", "Enabled",
-- "Disabled", "Enabling", "Disabling", "Updating", or "Deleting".
uesmrState :: Lens' UpdateEventSourceMappingResponse (Maybe Text)
uesmrState = lens _uesmrState (\s a -> s { _uesmrState = a })
-- | The reason the event source mapping is in its current state. It is either
-- user-requested or an AWS Lambda-initiated state transition.
uesmrStateTransitionReason :: Lens' UpdateEventSourceMappingResponse (Maybe Text)
uesmrStateTransitionReason =
lens _uesmrStateTransitionReason
(\s a -> s { _uesmrStateTransitionReason = a })
-- | The AWS Lambda assigned opaque identifier for the mapping.
uesmrUUID :: Lens' UpdateEventSourceMappingResponse (Maybe Text)
uesmrUUID = lens _uesmrUUID (\s a -> s { _uesmrUUID = a })
instance ToPath UpdateEventSourceMapping where
toPath UpdateEventSourceMapping{..} = mconcat
[ "/2015-03-31/event-source-mappings/"
, toText _uesmUUID
]
instance ToQuery UpdateEventSourceMapping where
toQuery = const mempty
instance ToHeaders UpdateEventSourceMapping
instance ToJSON UpdateEventSourceMapping where
toJSON UpdateEventSourceMapping{..} = object
[ "FunctionName" .= _uesmFunctionName
, "Enabled" .= _uesmEnabled
, "BatchSize" .= _uesmBatchSize
]
instance AWSRequest UpdateEventSourceMapping where
type Sv UpdateEventSourceMapping = Lambda
type Rs UpdateEventSourceMapping = UpdateEventSourceMappingResponse
request = put
response = jsonResponse
instance FromJSON UpdateEventSourceMappingResponse where
parseJSON = withObject "UpdateEventSourceMappingResponse" $ \o -> UpdateEventSourceMappingResponse
<$> o .:? "BatchSize"
<*> o .:? "EventSourceArn"
<*> o .:? "FunctionArn"
<*> o .:? "LastModified"
<*> o .:? "LastProcessingResult"
<*> o .:? "State"
<*> o .:? "StateTransitionReason"
<*> o .:? "UUID"