amazonka-iot-1.4.3: gen/Network/AWS/IoT/CreateCertificateFromCsr.hs
{-# 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.IoT.CreateCertificateFromCsr
-- Copyright : (c) 2013-2016 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates an X.509 certificate using the specified certificate signing request.
--
-- __Note__ Reusing the same certificate signing request (CSR) results in a distinct certificate.
--
-- You can create multiple certificates in a batch by creating a directory, copying multiple .csr files into that directory, and then specifying that directory on the command line. The following commands show how to create a batch of certificates given a batch of CSRs.
--
-- Assuming a set of CSRs are located inside of the directory my-csr-directory:
--
-- >
--
-- On Linux and OS X, the command is:
--
-- > ls my-csr-directory\/ | xargs -I {} aws iot create-certificate-from-csr --certificate-signing-request file:\/\/my-csr-directory\/{}
--
-- This command lists all of the CSRs in my-csr-directory and pipes each CSR file name to the aws iot create-certificate-from-csr AWS CLI command to create a certificate for the corresponding CSR.
--
-- The aws iot create-certificate-from-csr part of the command can also be run in parallel to speed up the certificate creation process:
--
-- > ls my-csr-directory\/ | xargs -P 10 -I {} aws iot create-certificate-from-csr --certificate-signing-request file:\/\/my-csr-directory\/{}
--
-- On Windows PowerShell, the command to create certificates for all CSRs in my-csr-directory is:
--
-- > ls -Name my-csr-directory | %{aws iot create-certificate-from-csr --certificate-signing-request file:\/\/my-csr-directory\/>_}
--
-- On a Windows command prompt, the command to create certificates for all CSRs in my-csr-directory is:
--
-- > forfiles \/p my-csr-directory \/c \"cmd \/c aws iot create-certificate-from-csr --certificate-signing-request file:\/\/\'path\"
module Network.AWS.IoT.CreateCertificateFromCsr
(
-- * Creating a Request
createCertificateFromCsr
, CreateCertificateFromCsr
-- * Request Lenses
, ccfcSetAsActive
, ccfcCertificateSigningRequest
-- * Destructuring the Response
, createCertificateFromCsrResponse
, CreateCertificateFromCsrResponse
-- * Response Lenses
, ccfcrsCertificatePem
, ccfcrsCertificateARN
, ccfcrsCertificateId
, ccfcrsResponseStatus
) where
import Network.AWS.IoT.Types
import Network.AWS.IoT.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
-- | The input for the CreateCertificateFromCsr operation.
--
-- /See:/ 'createCertificateFromCsr' smart constructor.
data CreateCertificateFromCsr = CreateCertificateFromCsr'
{ _ccfcSetAsActive :: !(Maybe Bool)
, _ccfcCertificateSigningRequest :: !Text
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'CreateCertificateFromCsr' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'ccfcSetAsActive'
--
-- * 'ccfcCertificateSigningRequest'
createCertificateFromCsr
:: Text -- ^ 'ccfcCertificateSigningRequest'
-> CreateCertificateFromCsr
createCertificateFromCsr pCertificateSigningRequest_ =
CreateCertificateFromCsr'
{ _ccfcSetAsActive = Nothing
, _ccfcCertificateSigningRequest = pCertificateSigningRequest_
}
-- | Specifies whether the certificate is active.
ccfcSetAsActive :: Lens' CreateCertificateFromCsr (Maybe Bool)
ccfcSetAsActive = lens _ccfcSetAsActive (\ s a -> s{_ccfcSetAsActive = a});
-- | The certificate signing request (CSR).
ccfcCertificateSigningRequest :: Lens' CreateCertificateFromCsr Text
ccfcCertificateSigningRequest = lens _ccfcCertificateSigningRequest (\ s a -> s{_ccfcCertificateSigningRequest = a});
instance AWSRequest CreateCertificateFromCsr where
type Rs CreateCertificateFromCsr =
CreateCertificateFromCsrResponse
request = postJSON ioT
response
= receiveJSON
(\ s h x ->
CreateCertificateFromCsrResponse' <$>
(x .?> "certificatePem") <*> (x .?> "certificateArn")
<*> (x .?> "certificateId")
<*> (pure (fromEnum s)))
instance Hashable CreateCertificateFromCsr
instance NFData CreateCertificateFromCsr
instance ToHeaders CreateCertificateFromCsr where
toHeaders = const mempty
instance ToJSON CreateCertificateFromCsr where
toJSON CreateCertificateFromCsr'{..}
= object
(catMaybes
[Just
("certificateSigningRequest" .=
_ccfcCertificateSigningRequest)])
instance ToPath CreateCertificateFromCsr where
toPath = const "/certificates"
instance ToQuery CreateCertificateFromCsr where
toQuery CreateCertificateFromCsr'{..}
= mconcat ["setAsActive" =: _ccfcSetAsActive]
-- | The output from the CreateCertificateFromCsr operation.
--
-- /See:/ 'createCertificateFromCsrResponse' smart constructor.
data CreateCertificateFromCsrResponse = CreateCertificateFromCsrResponse'
{ _ccfcrsCertificatePem :: !(Maybe Text)
, _ccfcrsCertificateARN :: !(Maybe Text)
, _ccfcrsCertificateId :: !(Maybe Text)
, _ccfcrsResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'CreateCertificateFromCsrResponse' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'ccfcrsCertificatePem'
--
-- * 'ccfcrsCertificateARN'
--
-- * 'ccfcrsCertificateId'
--
-- * 'ccfcrsResponseStatus'
createCertificateFromCsrResponse
:: Int -- ^ 'ccfcrsResponseStatus'
-> CreateCertificateFromCsrResponse
createCertificateFromCsrResponse pResponseStatus_ =
CreateCertificateFromCsrResponse'
{ _ccfcrsCertificatePem = Nothing
, _ccfcrsCertificateARN = Nothing
, _ccfcrsCertificateId = Nothing
, _ccfcrsResponseStatus = pResponseStatus_
}
-- | The certificate data, in PEM format.
ccfcrsCertificatePem :: Lens' CreateCertificateFromCsrResponse (Maybe Text)
ccfcrsCertificatePem = lens _ccfcrsCertificatePem (\ s a -> s{_ccfcrsCertificatePem = a});
-- | The Amazon Resource Name (ARN) of the certificate. You can use the ARN as a principal for policy operations.
ccfcrsCertificateARN :: Lens' CreateCertificateFromCsrResponse (Maybe Text)
ccfcrsCertificateARN = lens _ccfcrsCertificateARN (\ s a -> s{_ccfcrsCertificateARN = a});
-- | The ID of the certificate. Certificate management operations only take a certificateId.
ccfcrsCertificateId :: Lens' CreateCertificateFromCsrResponse (Maybe Text)
ccfcrsCertificateId = lens _ccfcrsCertificateId (\ s a -> s{_ccfcrsCertificateId = a});
-- | The response status code.
ccfcrsResponseStatus :: Lens' CreateCertificateFromCsrResponse Int
ccfcrsResponseStatus = lens _ccfcrsResponseStatus (\ s a -> s{_ccfcrsResponseStatus = a});
instance NFData CreateCertificateFromCsrResponse