{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.GreengrassV2.Types.LambdaExecutionParameters
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.GreengrassV2.Types.LambdaExecutionParameters where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.GreengrassV2.Types.LambdaEventSource
import Amazonka.GreengrassV2.Types.LambdaInputPayloadEncodingType
import Amazonka.GreengrassV2.Types.LambdaLinuxProcessParams
import qualified Amazonka.Prelude as Prelude

-- | Contains parameters for a Lambda function that runs on IoT Greengrass.
--
-- /See:/ 'newLambdaExecutionParameters' smart constructor.
data LambdaExecutionParameters = LambdaExecutionParameters'
  { -- | The map of environment variables that are available to the Lambda
    -- function when it runs.
    LambdaExecutionParameters -> Maybe (HashMap Text Text)
environmentVariables :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The list of event sources to which to subscribe to receive work
    -- messages. The Lambda function runs when it receives a message from an
    -- event source. You can subscribe this function to local
    -- publish\/subscribe messages and Amazon Web Services IoT Core MQTT
    -- messages.
    LambdaExecutionParameters -> Maybe [LambdaEventSource]
eventSources :: Prelude.Maybe [LambdaEventSource],
    -- | The list of arguments to pass to the Lambda function when it runs.
    LambdaExecutionParameters -> Maybe [Text]
execArgs :: Prelude.Maybe [Prelude.Text],
    -- | The encoding type that the Lambda function supports.
    --
    -- Default: @json@
    LambdaExecutionParameters -> Maybe LambdaInputPayloadEncodingType
inputPayloadEncodingType :: Prelude.Maybe LambdaInputPayloadEncodingType,
    -- | The parameters for the Linux process that contains the Lambda function.
    LambdaExecutionParameters -> Maybe LambdaLinuxProcessParams
linuxProcessParams :: Prelude.Maybe LambdaLinuxProcessParams,
    -- | The maximum amount of time in seconds that a non-pinned Lambda function
    -- can idle before the IoT Greengrass Core software stops its process.
    LambdaExecutionParameters -> Maybe Int
maxIdleTimeInSeconds :: Prelude.Maybe Prelude.Int,
    -- | The maximum number of instances that a non-pinned Lambda function can
    -- run at the same time.
    LambdaExecutionParameters -> Maybe Int
maxInstancesCount :: Prelude.Maybe Prelude.Int,
    -- | The maximum size of the message queue for the Lambda function component.
    -- The IoT Greengrass core stores messages in a FIFO (first-in-first-out)
    -- queue until it can run the Lambda function to consume each message.
    LambdaExecutionParameters -> Maybe Int
maxQueueSize :: Prelude.Maybe Prelude.Int,
    -- | Whether or not the Lambda function is pinned, or long-lived.
    --
    -- -   A pinned Lambda function starts when IoT Greengrass starts and keeps
    --     running in its own container.
    --
    -- -   A non-pinned Lambda function starts only when it receives a work
    --     item and exists after it idles for @maxIdleTimeInSeconds@. If the
    --     function has multiple work items, the IoT Greengrass Core software
    --     creates multiple instances of the function.
    --
    -- Default: @true@
    LambdaExecutionParameters -> Maybe Bool
pinned :: Prelude.Maybe Prelude.Bool,
    -- | The interval in seconds at which a pinned (also known as long-lived)
    -- Lambda function component sends status updates to the Lambda manager
    -- component.
    LambdaExecutionParameters -> Maybe Int
statusTimeoutInSeconds :: Prelude.Maybe Prelude.Int,
    -- | The maximum amount of time in seconds that the Lambda function can
    -- process a work item.
    LambdaExecutionParameters -> Maybe Int
timeoutInSeconds :: Prelude.Maybe Prelude.Int
  }
  deriving (LambdaExecutionParameters -> LambdaExecutionParameters -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: LambdaExecutionParameters -> LambdaExecutionParameters -> Bool
$c/= :: LambdaExecutionParameters -> LambdaExecutionParameters -> Bool
== :: LambdaExecutionParameters -> LambdaExecutionParameters -> Bool
$c== :: LambdaExecutionParameters -> LambdaExecutionParameters -> Bool
Prelude.Eq, ReadPrec [LambdaExecutionParameters]
ReadPrec LambdaExecutionParameters
Int -> ReadS LambdaExecutionParameters
ReadS [LambdaExecutionParameters]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [LambdaExecutionParameters]
$creadListPrec :: ReadPrec [LambdaExecutionParameters]
readPrec :: ReadPrec LambdaExecutionParameters
$creadPrec :: ReadPrec LambdaExecutionParameters
readList :: ReadS [LambdaExecutionParameters]
$creadList :: ReadS [LambdaExecutionParameters]
readsPrec :: Int -> ReadS LambdaExecutionParameters
$creadsPrec :: Int -> ReadS LambdaExecutionParameters
Prelude.Read, Int -> LambdaExecutionParameters -> ShowS
[LambdaExecutionParameters] -> ShowS
LambdaExecutionParameters -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [LambdaExecutionParameters] -> ShowS
$cshowList :: [LambdaExecutionParameters] -> ShowS
show :: LambdaExecutionParameters -> String
$cshow :: LambdaExecutionParameters -> String
showsPrec :: Int -> LambdaExecutionParameters -> ShowS
$cshowsPrec :: Int -> LambdaExecutionParameters -> ShowS
Prelude.Show, forall x.
Rep LambdaExecutionParameters x -> LambdaExecutionParameters
forall x.
LambdaExecutionParameters -> Rep LambdaExecutionParameters x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep LambdaExecutionParameters x -> LambdaExecutionParameters
$cfrom :: forall x.
LambdaExecutionParameters -> Rep LambdaExecutionParameters x
Prelude.Generic)

-- |
-- Create a value of 'LambdaExecutionParameters' 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:
--
-- 'environmentVariables', 'lambdaExecutionParameters_environmentVariables' - The map of environment variables that are available to the Lambda
-- function when it runs.
--
-- 'eventSources', 'lambdaExecutionParameters_eventSources' - The list of event sources to which to subscribe to receive work
-- messages. The Lambda function runs when it receives a message from an
-- event source. You can subscribe this function to local
-- publish\/subscribe messages and Amazon Web Services IoT Core MQTT
-- messages.
--
-- 'execArgs', 'lambdaExecutionParameters_execArgs' - The list of arguments to pass to the Lambda function when it runs.
--
-- 'inputPayloadEncodingType', 'lambdaExecutionParameters_inputPayloadEncodingType' - The encoding type that the Lambda function supports.
--
-- Default: @json@
--
-- 'linuxProcessParams', 'lambdaExecutionParameters_linuxProcessParams' - The parameters for the Linux process that contains the Lambda function.
--
-- 'maxIdleTimeInSeconds', 'lambdaExecutionParameters_maxIdleTimeInSeconds' - The maximum amount of time in seconds that a non-pinned Lambda function
-- can idle before the IoT Greengrass Core software stops its process.
--
-- 'maxInstancesCount', 'lambdaExecutionParameters_maxInstancesCount' - The maximum number of instances that a non-pinned Lambda function can
-- run at the same time.
--
-- 'maxQueueSize', 'lambdaExecutionParameters_maxQueueSize' - The maximum size of the message queue for the Lambda function component.
-- The IoT Greengrass core stores messages in a FIFO (first-in-first-out)
-- queue until it can run the Lambda function to consume each message.
--
-- 'pinned', 'lambdaExecutionParameters_pinned' - Whether or not the Lambda function is pinned, or long-lived.
--
-- -   A pinned Lambda function starts when IoT Greengrass starts and keeps
--     running in its own container.
--
-- -   A non-pinned Lambda function starts only when it receives a work
--     item and exists after it idles for @maxIdleTimeInSeconds@. If the
--     function has multiple work items, the IoT Greengrass Core software
--     creates multiple instances of the function.
--
-- Default: @true@
--
-- 'statusTimeoutInSeconds', 'lambdaExecutionParameters_statusTimeoutInSeconds' - The interval in seconds at which a pinned (also known as long-lived)
-- Lambda function component sends status updates to the Lambda manager
-- component.
--
-- 'timeoutInSeconds', 'lambdaExecutionParameters_timeoutInSeconds' - The maximum amount of time in seconds that the Lambda function can
-- process a work item.
newLambdaExecutionParameters ::
  LambdaExecutionParameters
newLambdaExecutionParameters :: LambdaExecutionParameters
newLambdaExecutionParameters =
  LambdaExecutionParameters'
    { $sel:environmentVariables:LambdaExecutionParameters' :: Maybe (HashMap Text Text)
environmentVariables =
        forall a. Maybe a
Prelude.Nothing,
      $sel:eventSources:LambdaExecutionParameters' :: Maybe [LambdaEventSource]
eventSources = forall a. Maybe a
Prelude.Nothing,
      $sel:execArgs:LambdaExecutionParameters' :: Maybe [Text]
execArgs = forall a. Maybe a
Prelude.Nothing,
      $sel:inputPayloadEncodingType:LambdaExecutionParameters' :: Maybe LambdaInputPayloadEncodingType
inputPayloadEncodingType = forall a. Maybe a
Prelude.Nothing,
      $sel:linuxProcessParams:LambdaExecutionParameters' :: Maybe LambdaLinuxProcessParams
linuxProcessParams = forall a. Maybe a
Prelude.Nothing,
      $sel:maxIdleTimeInSeconds:LambdaExecutionParameters' :: Maybe Int
maxIdleTimeInSeconds = forall a. Maybe a
Prelude.Nothing,
      $sel:maxInstancesCount:LambdaExecutionParameters' :: Maybe Int
maxInstancesCount = forall a. Maybe a
Prelude.Nothing,
      $sel:maxQueueSize:LambdaExecutionParameters' :: Maybe Int
maxQueueSize = forall a. Maybe a
Prelude.Nothing,
      $sel:pinned:LambdaExecutionParameters' :: Maybe Bool
pinned = forall a. Maybe a
Prelude.Nothing,
      $sel:statusTimeoutInSeconds:LambdaExecutionParameters' :: Maybe Int
statusTimeoutInSeconds = forall a. Maybe a
Prelude.Nothing,
      $sel:timeoutInSeconds:LambdaExecutionParameters' :: Maybe Int
timeoutInSeconds = forall a. Maybe a
Prelude.Nothing
    }

-- | The map of environment variables that are available to the Lambda
-- function when it runs.
lambdaExecutionParameters_environmentVariables :: Lens.Lens' LambdaExecutionParameters (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
lambdaExecutionParameters_environmentVariables :: Lens' LambdaExecutionParameters (Maybe (HashMap Text Text))
lambdaExecutionParameters_environmentVariables = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LambdaExecutionParameters' {Maybe (HashMap Text Text)
environmentVariables :: Maybe (HashMap Text Text)
$sel:environmentVariables:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe (HashMap Text Text)
environmentVariables} -> Maybe (HashMap Text Text)
environmentVariables) (\s :: LambdaExecutionParameters
s@LambdaExecutionParameters' {} Maybe (HashMap Text Text)
a -> LambdaExecutionParameters
s {$sel:environmentVariables:LambdaExecutionParameters' :: Maybe (HashMap Text Text)
environmentVariables = Maybe (HashMap Text Text)
a} :: LambdaExecutionParameters) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The list of event sources to which to subscribe to receive work
-- messages. The Lambda function runs when it receives a message from an
-- event source. You can subscribe this function to local
-- publish\/subscribe messages and Amazon Web Services IoT Core MQTT
-- messages.
lambdaExecutionParameters_eventSources :: Lens.Lens' LambdaExecutionParameters (Prelude.Maybe [LambdaEventSource])
lambdaExecutionParameters_eventSources :: Lens' LambdaExecutionParameters (Maybe [LambdaEventSource])
lambdaExecutionParameters_eventSources = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LambdaExecutionParameters' {Maybe [LambdaEventSource]
eventSources :: Maybe [LambdaEventSource]
$sel:eventSources:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe [LambdaEventSource]
eventSources} -> Maybe [LambdaEventSource]
eventSources) (\s :: LambdaExecutionParameters
s@LambdaExecutionParameters' {} Maybe [LambdaEventSource]
a -> LambdaExecutionParameters
s {$sel:eventSources:LambdaExecutionParameters' :: Maybe [LambdaEventSource]
eventSources = Maybe [LambdaEventSource]
a} :: LambdaExecutionParameters) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The list of arguments to pass to the Lambda function when it runs.
lambdaExecutionParameters_execArgs :: Lens.Lens' LambdaExecutionParameters (Prelude.Maybe [Prelude.Text])
lambdaExecutionParameters_execArgs :: Lens' LambdaExecutionParameters (Maybe [Text])
lambdaExecutionParameters_execArgs = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LambdaExecutionParameters' {Maybe [Text]
execArgs :: Maybe [Text]
$sel:execArgs:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe [Text]
execArgs} -> Maybe [Text]
execArgs) (\s :: LambdaExecutionParameters
s@LambdaExecutionParameters' {} Maybe [Text]
a -> LambdaExecutionParameters
s {$sel:execArgs:LambdaExecutionParameters' :: Maybe [Text]
execArgs = Maybe [Text]
a} :: LambdaExecutionParameters) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The encoding type that the Lambda function supports.
--
-- Default: @json@
lambdaExecutionParameters_inputPayloadEncodingType :: Lens.Lens' LambdaExecutionParameters (Prelude.Maybe LambdaInputPayloadEncodingType)
lambdaExecutionParameters_inputPayloadEncodingType :: Lens'
  LambdaExecutionParameters (Maybe LambdaInputPayloadEncodingType)
lambdaExecutionParameters_inputPayloadEncodingType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LambdaExecutionParameters' {Maybe LambdaInputPayloadEncodingType
inputPayloadEncodingType :: Maybe LambdaInputPayloadEncodingType
$sel:inputPayloadEncodingType:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe LambdaInputPayloadEncodingType
inputPayloadEncodingType} -> Maybe LambdaInputPayloadEncodingType
inputPayloadEncodingType) (\s :: LambdaExecutionParameters
s@LambdaExecutionParameters' {} Maybe LambdaInputPayloadEncodingType
a -> LambdaExecutionParameters
s {$sel:inputPayloadEncodingType:LambdaExecutionParameters' :: Maybe LambdaInputPayloadEncodingType
inputPayloadEncodingType = Maybe LambdaInputPayloadEncodingType
a} :: LambdaExecutionParameters)

-- | The parameters for the Linux process that contains the Lambda function.
lambdaExecutionParameters_linuxProcessParams :: Lens.Lens' LambdaExecutionParameters (Prelude.Maybe LambdaLinuxProcessParams)
lambdaExecutionParameters_linuxProcessParams :: Lens' LambdaExecutionParameters (Maybe LambdaLinuxProcessParams)
lambdaExecutionParameters_linuxProcessParams = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LambdaExecutionParameters' {Maybe LambdaLinuxProcessParams
linuxProcessParams :: Maybe LambdaLinuxProcessParams
$sel:linuxProcessParams:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe LambdaLinuxProcessParams
linuxProcessParams} -> Maybe LambdaLinuxProcessParams
linuxProcessParams) (\s :: LambdaExecutionParameters
s@LambdaExecutionParameters' {} Maybe LambdaLinuxProcessParams
a -> LambdaExecutionParameters
s {$sel:linuxProcessParams:LambdaExecutionParameters' :: Maybe LambdaLinuxProcessParams
linuxProcessParams = Maybe LambdaLinuxProcessParams
a} :: LambdaExecutionParameters)

-- | The maximum amount of time in seconds that a non-pinned Lambda function
-- can idle before the IoT Greengrass Core software stops its process.
lambdaExecutionParameters_maxIdleTimeInSeconds :: Lens.Lens' LambdaExecutionParameters (Prelude.Maybe Prelude.Int)
lambdaExecutionParameters_maxIdleTimeInSeconds :: Lens' LambdaExecutionParameters (Maybe Int)
lambdaExecutionParameters_maxIdleTimeInSeconds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LambdaExecutionParameters' {Maybe Int
maxIdleTimeInSeconds :: Maybe Int
$sel:maxIdleTimeInSeconds:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe Int
maxIdleTimeInSeconds} -> Maybe Int
maxIdleTimeInSeconds) (\s :: LambdaExecutionParameters
s@LambdaExecutionParameters' {} Maybe Int
a -> LambdaExecutionParameters
s {$sel:maxIdleTimeInSeconds:LambdaExecutionParameters' :: Maybe Int
maxIdleTimeInSeconds = Maybe Int
a} :: LambdaExecutionParameters)

-- | The maximum number of instances that a non-pinned Lambda function can
-- run at the same time.
lambdaExecutionParameters_maxInstancesCount :: Lens.Lens' LambdaExecutionParameters (Prelude.Maybe Prelude.Int)
lambdaExecutionParameters_maxInstancesCount :: Lens' LambdaExecutionParameters (Maybe Int)
lambdaExecutionParameters_maxInstancesCount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LambdaExecutionParameters' {Maybe Int
maxInstancesCount :: Maybe Int
$sel:maxInstancesCount:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe Int
maxInstancesCount} -> Maybe Int
maxInstancesCount) (\s :: LambdaExecutionParameters
s@LambdaExecutionParameters' {} Maybe Int
a -> LambdaExecutionParameters
s {$sel:maxInstancesCount:LambdaExecutionParameters' :: Maybe Int
maxInstancesCount = Maybe Int
a} :: LambdaExecutionParameters)

-- | The maximum size of the message queue for the Lambda function component.
-- The IoT Greengrass core stores messages in a FIFO (first-in-first-out)
-- queue until it can run the Lambda function to consume each message.
lambdaExecutionParameters_maxQueueSize :: Lens.Lens' LambdaExecutionParameters (Prelude.Maybe Prelude.Int)
lambdaExecutionParameters_maxQueueSize :: Lens' LambdaExecutionParameters (Maybe Int)
lambdaExecutionParameters_maxQueueSize = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LambdaExecutionParameters' {Maybe Int
maxQueueSize :: Maybe Int
$sel:maxQueueSize:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe Int
maxQueueSize} -> Maybe Int
maxQueueSize) (\s :: LambdaExecutionParameters
s@LambdaExecutionParameters' {} Maybe Int
a -> LambdaExecutionParameters
s {$sel:maxQueueSize:LambdaExecutionParameters' :: Maybe Int
maxQueueSize = Maybe Int
a} :: LambdaExecutionParameters)

-- | Whether or not the Lambda function is pinned, or long-lived.
--
-- -   A pinned Lambda function starts when IoT Greengrass starts and keeps
--     running in its own container.
--
-- -   A non-pinned Lambda function starts only when it receives a work
--     item and exists after it idles for @maxIdleTimeInSeconds@. If the
--     function has multiple work items, the IoT Greengrass Core software
--     creates multiple instances of the function.
--
-- Default: @true@
lambdaExecutionParameters_pinned :: Lens.Lens' LambdaExecutionParameters (Prelude.Maybe Prelude.Bool)
lambdaExecutionParameters_pinned :: Lens' LambdaExecutionParameters (Maybe Bool)
lambdaExecutionParameters_pinned = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LambdaExecutionParameters' {Maybe Bool
pinned :: Maybe Bool
$sel:pinned:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe Bool
pinned} -> Maybe Bool
pinned) (\s :: LambdaExecutionParameters
s@LambdaExecutionParameters' {} Maybe Bool
a -> LambdaExecutionParameters
s {$sel:pinned:LambdaExecutionParameters' :: Maybe Bool
pinned = Maybe Bool
a} :: LambdaExecutionParameters)

-- | The interval in seconds at which a pinned (also known as long-lived)
-- Lambda function component sends status updates to the Lambda manager
-- component.
lambdaExecutionParameters_statusTimeoutInSeconds :: Lens.Lens' LambdaExecutionParameters (Prelude.Maybe Prelude.Int)
lambdaExecutionParameters_statusTimeoutInSeconds :: Lens' LambdaExecutionParameters (Maybe Int)
lambdaExecutionParameters_statusTimeoutInSeconds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LambdaExecutionParameters' {Maybe Int
statusTimeoutInSeconds :: Maybe Int
$sel:statusTimeoutInSeconds:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe Int
statusTimeoutInSeconds} -> Maybe Int
statusTimeoutInSeconds) (\s :: LambdaExecutionParameters
s@LambdaExecutionParameters' {} Maybe Int
a -> LambdaExecutionParameters
s {$sel:statusTimeoutInSeconds:LambdaExecutionParameters' :: Maybe Int
statusTimeoutInSeconds = Maybe Int
a} :: LambdaExecutionParameters)

-- | The maximum amount of time in seconds that the Lambda function can
-- process a work item.
lambdaExecutionParameters_timeoutInSeconds :: Lens.Lens' LambdaExecutionParameters (Prelude.Maybe Prelude.Int)
lambdaExecutionParameters_timeoutInSeconds :: Lens' LambdaExecutionParameters (Maybe Int)
lambdaExecutionParameters_timeoutInSeconds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LambdaExecutionParameters' {Maybe Int
timeoutInSeconds :: Maybe Int
$sel:timeoutInSeconds:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe Int
timeoutInSeconds} -> Maybe Int
timeoutInSeconds) (\s :: LambdaExecutionParameters
s@LambdaExecutionParameters' {} Maybe Int
a -> LambdaExecutionParameters
s {$sel:timeoutInSeconds:LambdaExecutionParameters' :: Maybe Int
timeoutInSeconds = Maybe Int
a} :: LambdaExecutionParameters)

instance Prelude.Hashable LambdaExecutionParameters where
  hashWithSalt :: Int -> LambdaExecutionParameters -> Int
hashWithSalt Int
_salt LambdaExecutionParameters' {Maybe Bool
Maybe Int
Maybe [Text]
Maybe [LambdaEventSource]
Maybe (HashMap Text Text)
Maybe LambdaInputPayloadEncodingType
Maybe LambdaLinuxProcessParams
timeoutInSeconds :: Maybe Int
statusTimeoutInSeconds :: Maybe Int
pinned :: Maybe Bool
maxQueueSize :: Maybe Int
maxInstancesCount :: Maybe Int
maxIdleTimeInSeconds :: Maybe Int
linuxProcessParams :: Maybe LambdaLinuxProcessParams
inputPayloadEncodingType :: Maybe LambdaInputPayloadEncodingType
execArgs :: Maybe [Text]
eventSources :: Maybe [LambdaEventSource]
environmentVariables :: Maybe (HashMap Text Text)
$sel:timeoutInSeconds:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe Int
$sel:statusTimeoutInSeconds:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe Int
$sel:pinned:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe Bool
$sel:maxQueueSize:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe Int
$sel:maxInstancesCount:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe Int
$sel:maxIdleTimeInSeconds:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe Int
$sel:linuxProcessParams:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe LambdaLinuxProcessParams
$sel:inputPayloadEncodingType:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe LambdaInputPayloadEncodingType
$sel:execArgs:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe [Text]
$sel:eventSources:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe [LambdaEventSource]
$sel:environmentVariables:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe (HashMap Text Text)
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
environmentVariables
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [LambdaEventSource]
eventSources
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
execArgs
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LambdaInputPayloadEncodingType
inputPayloadEncodingType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LambdaLinuxProcessParams
linuxProcessParams
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
maxIdleTimeInSeconds
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
maxInstancesCount
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
maxQueueSize
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
pinned
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
statusTimeoutInSeconds
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
timeoutInSeconds

instance Prelude.NFData LambdaExecutionParameters where
  rnf :: LambdaExecutionParameters -> ()
rnf LambdaExecutionParameters' {Maybe Bool
Maybe Int
Maybe [Text]
Maybe [LambdaEventSource]
Maybe (HashMap Text Text)
Maybe LambdaInputPayloadEncodingType
Maybe LambdaLinuxProcessParams
timeoutInSeconds :: Maybe Int
statusTimeoutInSeconds :: Maybe Int
pinned :: Maybe Bool
maxQueueSize :: Maybe Int
maxInstancesCount :: Maybe Int
maxIdleTimeInSeconds :: Maybe Int
linuxProcessParams :: Maybe LambdaLinuxProcessParams
inputPayloadEncodingType :: Maybe LambdaInputPayloadEncodingType
execArgs :: Maybe [Text]
eventSources :: Maybe [LambdaEventSource]
environmentVariables :: Maybe (HashMap Text Text)
$sel:timeoutInSeconds:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe Int
$sel:statusTimeoutInSeconds:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe Int
$sel:pinned:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe Bool
$sel:maxQueueSize:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe Int
$sel:maxInstancesCount:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe Int
$sel:maxIdleTimeInSeconds:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe Int
$sel:linuxProcessParams:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe LambdaLinuxProcessParams
$sel:inputPayloadEncodingType:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe LambdaInputPayloadEncodingType
$sel:execArgs:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe [Text]
$sel:eventSources:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe [LambdaEventSource]
$sel:environmentVariables:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe (HashMap Text Text)
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
environmentVariables
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [LambdaEventSource]
eventSources
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
execArgs
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LambdaInputPayloadEncodingType
inputPayloadEncodingType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LambdaLinuxProcessParams
linuxProcessParams
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
maxIdleTimeInSeconds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
maxInstancesCount
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
maxQueueSize
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
pinned
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
statusTimeoutInSeconds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
timeoutInSeconds

instance Data.ToJSON LambdaExecutionParameters where
  toJSON :: LambdaExecutionParameters -> Value
toJSON LambdaExecutionParameters' {Maybe Bool
Maybe Int
Maybe [Text]
Maybe [LambdaEventSource]
Maybe (HashMap Text Text)
Maybe LambdaInputPayloadEncodingType
Maybe LambdaLinuxProcessParams
timeoutInSeconds :: Maybe Int
statusTimeoutInSeconds :: Maybe Int
pinned :: Maybe Bool
maxQueueSize :: Maybe Int
maxInstancesCount :: Maybe Int
maxIdleTimeInSeconds :: Maybe Int
linuxProcessParams :: Maybe LambdaLinuxProcessParams
inputPayloadEncodingType :: Maybe LambdaInputPayloadEncodingType
execArgs :: Maybe [Text]
eventSources :: Maybe [LambdaEventSource]
environmentVariables :: Maybe (HashMap Text Text)
$sel:timeoutInSeconds:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe Int
$sel:statusTimeoutInSeconds:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe Int
$sel:pinned:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe Bool
$sel:maxQueueSize:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe Int
$sel:maxInstancesCount:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe Int
$sel:maxIdleTimeInSeconds:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe Int
$sel:linuxProcessParams:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe LambdaLinuxProcessParams
$sel:inputPayloadEncodingType:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe LambdaInputPayloadEncodingType
$sel:execArgs:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe [Text]
$sel:eventSources:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe [LambdaEventSource]
$sel:environmentVariables:LambdaExecutionParameters' :: LambdaExecutionParameters -> Maybe (HashMap Text Text)
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"environmentVariables" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (HashMap Text Text)
environmentVariables,
            (Key
"eventSources" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [LambdaEventSource]
eventSources,
            (Key
"execArgs" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
execArgs,
            (Key
"inputPayloadEncodingType" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe LambdaInputPayloadEncodingType
inputPayloadEncodingType,
            (Key
"linuxProcessParams" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe LambdaLinuxProcessParams
linuxProcessParams,
            (Key
"maxIdleTimeInSeconds" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
maxIdleTimeInSeconds,
            (Key
"maxInstancesCount" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
maxInstancesCount,
            (Key
"maxQueueSize" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
maxQueueSize,
            (Key
"pinned" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
pinned,
            (Key
"statusTimeoutInSeconds" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
statusTimeoutInSeconds,
            (Key
"timeoutInSeconds" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
timeoutInSeconds
          ]
      )