{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-binds #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Network.AWS.Greengrass.AssociateServiceRoleToAccount -- Copyright : (c) 2013-2018 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Associates a role with your account. AWS Greengrass will use the role to access your Lambda functions and AWS IoT resources. This is necessary for deployments to succeed. The role must have at least minimum permissions in the policy ''AWSGreengrassResourceAccessRolePolicy''. module Network.AWS.Greengrass.AssociateServiceRoleToAccount ( -- * Creating a Request associateServiceRoleToAccount , AssociateServiceRoleToAccount -- * Request Lenses , asrtaRoleARN -- * Destructuring the Response , associateServiceRoleToAccountResponse , AssociateServiceRoleToAccountResponse -- * Response Lenses , asrtarsAssociatedAt , asrtarsResponseStatus ) where import Network.AWS.Greengrass.Types import Network.AWS.Greengrass.Types.Product import Network.AWS.Lens import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response -- | /See:/ 'associateServiceRoleToAccount' smart constructor. newtype AssociateServiceRoleToAccount = AssociateServiceRoleToAccount' { _asrtaRoleARN :: Maybe Text } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'AssociateServiceRoleToAccount' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'asrtaRoleARN' - The ARN of the service role you wish to associate with your account. associateServiceRoleToAccount :: AssociateServiceRoleToAccount associateServiceRoleToAccount = AssociateServiceRoleToAccount' {_asrtaRoleARN = Nothing} -- | The ARN of the service role you wish to associate with your account. asrtaRoleARN :: Lens' AssociateServiceRoleToAccount (Maybe Text) asrtaRoleARN = lens _asrtaRoleARN (\ s a -> s{_asrtaRoleARN = a}) instance AWSRequest AssociateServiceRoleToAccount where type Rs AssociateServiceRoleToAccount = AssociateServiceRoleToAccountResponse request = putJSON greengrass response = receiveJSON (\ s h x -> AssociateServiceRoleToAccountResponse' <$> (x .?> "AssociatedAt") <*> (pure (fromEnum s))) instance Hashable AssociateServiceRoleToAccount where instance NFData AssociateServiceRoleToAccount where instance ToHeaders AssociateServiceRoleToAccount where toHeaders = const (mconcat ["Content-Type" =# ("application/x-amz-json-1.1" :: ByteString)]) instance ToJSON AssociateServiceRoleToAccount where toJSON AssociateServiceRoleToAccount'{..} = object (catMaybes [("RoleArn" .=) <$> _asrtaRoleARN]) instance ToPath AssociateServiceRoleToAccount where toPath = const "/greengrass/servicerole" instance ToQuery AssociateServiceRoleToAccount where toQuery = const mempty -- | /See:/ 'associateServiceRoleToAccountResponse' smart constructor. data AssociateServiceRoleToAccountResponse = AssociateServiceRoleToAccountResponse' { _asrtarsAssociatedAt :: !(Maybe Text) , _asrtarsResponseStatus :: !Int } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'AssociateServiceRoleToAccountResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'asrtarsAssociatedAt' - The time when the service role was associated with the account. -- -- * 'asrtarsResponseStatus' - -- | The response status code. associateServiceRoleToAccountResponse :: Int -- ^ 'asrtarsResponseStatus' -> AssociateServiceRoleToAccountResponse associateServiceRoleToAccountResponse pResponseStatus_ = AssociateServiceRoleToAccountResponse' {_asrtarsAssociatedAt = Nothing, _asrtarsResponseStatus = pResponseStatus_} -- | The time when the service role was associated with the account. asrtarsAssociatedAt :: Lens' AssociateServiceRoleToAccountResponse (Maybe Text) asrtarsAssociatedAt = lens _asrtarsAssociatedAt (\ s a -> s{_asrtarsAssociatedAt = a}) -- | -- | The response status code. asrtarsResponseStatus :: Lens' AssociateServiceRoleToAccountResponse Int asrtarsResponseStatus = lens _asrtarsResponseStatus (\ s a -> s{_asrtarsResponseStatus = a}) instance NFData AssociateServiceRoleToAccountResponse where