{-# 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.ElasticTranscoder.CreatePipeline -- Copyright : (c) 2013-2015 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- The CreatePipeline operation creates a pipeline with settings that you -- specify. -- -- /See:/ for CreatePipeline. module Network.AWS.ElasticTranscoder.CreatePipeline ( -- * Creating a Request createPipeline , CreatePipeline -- * Request Lenses , cContentConfig , cOutputBucket , cAWSKMSKeyARN , cThumbnailConfig , cNotifications , cName , cInputBucket , cRole -- * Destructuring the Response , createPipelineResponse , CreatePipelineResponse -- * Response Lenses , crsWarnings , crsPipeline , crsStatus ) where import Network.AWS.ElasticTranscoder.Types import Network.AWS.ElasticTranscoder.Types.Product import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response -- | The 'CreatePipelineRequest' structure. -- -- /See:/ 'createPipeline' smart constructor. data CreatePipeline = CreatePipeline' { _cContentConfig :: !(Maybe PipelineOutputConfig) , _cOutputBucket :: !(Maybe Text) , _cAWSKMSKeyARN :: !(Maybe Text) , _cThumbnailConfig :: !(Maybe PipelineOutputConfig) , _cNotifications :: !(Maybe Notifications) , _cName :: !Text , _cInputBucket :: !Text , _cRole :: !Text } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'CreatePipeline' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'cContentConfig' -- -- * 'cOutputBucket' -- -- * 'cAWSKMSKeyARN' -- -- * 'cThumbnailConfig' -- -- * 'cNotifications' -- -- * 'cName' -- -- * 'cInputBucket' -- -- * 'cRole' createPipeline :: Text -- ^ 'cName' -> Text -- ^ 'cInputBucket' -> Text -- ^ 'cRole' -> CreatePipeline createPipeline pName_ pInputBucket_ pRole_ = CreatePipeline' { _cContentConfig = Nothing , _cOutputBucket = Nothing , _cAWSKMSKeyARN = Nothing , _cThumbnailConfig = Nothing , _cNotifications = Nothing , _cName = pName_ , _cInputBucket = pInputBucket_ , _cRole = pRole_ } -- | The optional 'ContentConfig' object specifies information about the -- Amazon S3 bucket in which you want Elastic Transcoder to save transcoded -- files and playlists: which bucket to use, which users you want to have -- access to the files, the type of access you want users to have, and the -- storage class that you want to assign to the files. -- -- If you specify values for 'ContentConfig', you must also specify values -- for 'ThumbnailConfig'. -- -- If you specify values for 'ContentConfig' and 'ThumbnailConfig', omit -- the 'OutputBucket' object. -- -- - __Bucket__: The Amazon S3 bucket in which you want Elastic -- Transcoder to save transcoded files and playlists. -- - __Permissions__ (Optional): The Permissions object specifies which -- users you want to have access to transcoded files and the type of -- access you want them to have. You can grant permissions to a maximum -- of 30 users and\/or predefined Amazon S3 groups. -- - __Grantee Type__: Specify the type of value that appears in the -- 'Grantee' object: -- - __Canonical__: The value in the 'Grantee' object is either the -- canonical user ID for an AWS account or an origin access -- identity for an Amazon CloudFront distribution. For more -- information about canonical user IDs, see Access Control List -- (ACL) Overview in the Amazon Simple Storage Service Developer -- Guide. For more information about using CloudFront origin access -- identities to require that users use CloudFront URLs instead of -- Amazon S3 URLs, see Using an Origin Access Identity to Restrict -- Access to Your Amazon S3 Content. -- A canonical user ID is not the same as an AWS account number. -- - __Email__: The value in the 'Grantee' object is the registered -- email address of an AWS account. -- - __Group__: The value in the 'Grantee' object is one of the -- following predefined Amazon S3 groups: 'AllUsers', -- 'AuthenticatedUsers', or 'LogDelivery'. -- - __Grantee__: The AWS user or group that you want to have access to -- transcoded files and playlists. To identify the user or group, you -- can specify the canonical user ID for an AWS account, an origin -- access identity for a CloudFront distribution, the registered email -- address of an AWS account, or a predefined Amazon S3 group -- - __Access__: The permission that you want to give to the AWS user -- that you specified in 'Grantee'. Permissions are granted on the -- files that Elastic Transcoder adds to the bucket, including -- playlists and video files. Valid values include: -- - 'READ': The grantee can read the objects and metadata for -- objects that Elastic Transcoder adds to the Amazon S3 bucket. -- - 'READ_ACP': The grantee can read the object ACL for objects that -- Elastic Transcoder adds to the Amazon S3 bucket. -- - 'WRITE_ACP': The grantee can write the ACL for the objects that -- Elastic Transcoder adds to the Amazon S3 bucket. -- - 'FULL_CONTROL': The grantee has 'READ', 'READ_ACP', and -- 'WRITE_ACP' permissions for the objects that Elastic Transcoder -- adds to the Amazon S3 bucket. -- - __StorageClass__: The Amazon S3 storage class, 'Standard' or -- 'ReducedRedundancy', that you want Elastic Transcoder to assign to -- the video files and playlists that it stores in your Amazon S3 -- bucket. cContentConfig :: Lens' CreatePipeline (Maybe PipelineOutputConfig) cContentConfig = lens _cContentConfig (\ s a -> s{_cContentConfig = a}); -- | The Amazon S3 bucket in which you want Elastic Transcoder to save the -- transcoded files. (Use this, or use ContentConfig:Bucket plus -- ThumbnailConfig:Bucket.) -- -- Specify this value when all of the following are true: -- -- - You want to save transcoded files, thumbnails (if any), and -- playlists (if any) together in one bucket. -- - You do not want to specify the users or groups who have access to -- the transcoded files, thumbnails, and playlists. -- - You do not want to specify the permissions that Elastic Transcoder -- grants to the files. -- When Elastic Transcoder saves files in 'OutputBucket', it grants -- full control over the files only to the AWS account that owns the -- role that is specified by 'Role'. -- - You want to associate the transcoded files and thumbnails with the -- Amazon S3 Standard storage class. -- -- If you want to save transcoded files and playlists in one bucket and -- thumbnails in another bucket, specify which users can access the -- transcoded files or the permissions the users have, or change the Amazon -- S3 storage class, omit 'OutputBucket' and specify values for -- 'ContentConfig' and 'ThumbnailConfig' instead. cOutputBucket :: Lens' CreatePipeline (Maybe Text) cOutputBucket = lens _cOutputBucket (\ s a -> s{_cOutputBucket = a}); -- | The AWS Key Management Service (AWS KMS) key that you want to use with -- this pipeline. -- -- If you use either 'S3' or 'S3-AWS-KMS' as your 'Encryption:Mode', you -- don\'t need to provide a key with your job because a default key, known -- as an AWS-KMS key, is created for you automatically. You need to provide -- an AWS-KMS key only if you want to use a non-default AWS-KMS key, or if -- you are using an 'Encryption:Mode' of 'AES-PKCS7', 'AES-CTR', or -- 'AES-GCM'. cAWSKMSKeyARN :: Lens' CreatePipeline (Maybe Text) cAWSKMSKeyARN = lens _cAWSKMSKeyARN (\ s a -> s{_cAWSKMSKeyARN = a}); -- | The 'ThumbnailConfig' object specifies several values, including the -- Amazon S3 bucket in which you want Elastic Transcoder to save thumbnail -- files, which users you want to have access to the files, the type of -- access you want users to have, and the storage class that you want to -- assign to the files. -- -- If you specify values for 'ContentConfig', you must also specify values -- for 'ThumbnailConfig' even if you don\'t want to create thumbnails. -- -- If you specify values for 'ContentConfig' and 'ThumbnailConfig', omit -- the 'OutputBucket' object. -- -- - __Bucket__: The Amazon S3 bucket in which you want Elastic -- Transcoder to save thumbnail files. -- - __Permissions__ (Optional): The 'Permissions' object specifies which -- users and\/or predefined Amazon S3 groups you want to have access to -- thumbnail files, and the type of access you want them to have. You -- can grant permissions to a maximum of 30 users and\/or predefined -- Amazon S3 groups. -- - __GranteeType__: Specify the type of value that appears in the -- Grantee object: -- - __Canonical__: The value in the 'Grantee' object is either the -- canonical user ID for an AWS account or an origin access -- identity for an Amazon CloudFront distribution. -- A canonical user ID is not the same as an AWS account number. -- - __Email__: The value in the 'Grantee' object is the registered -- email address of an AWS account. -- - __Group__: The value in the 'Grantee' object is one of the -- following predefined Amazon S3 groups: 'AllUsers', -- 'AuthenticatedUsers', or 'LogDelivery'. -- - __Grantee__: The AWS user or group that you want to have access to -- thumbnail files. To identify the user or group, you can specify the -- canonical user ID for an AWS account, an origin access identity for -- a CloudFront distribution, the registered email address of an AWS -- account, or a predefined Amazon S3 group. -- - __Access__: The permission that you want to give to the AWS user -- that you specified in 'Grantee'. Permissions are granted on the -- thumbnail files that Elastic Transcoder adds to the bucket. Valid -- values include: -- - 'READ': The grantee can read the thumbnails and metadata for -- objects that Elastic Transcoder adds to the Amazon S3 bucket. -- - 'READ_ACP': The grantee can read the object ACL for thumbnails -- that Elastic Transcoder adds to the Amazon S3 bucket. -- - 'WRITE_ACP': The grantee can write the ACL for the thumbnails -- that Elastic Transcoder adds to the Amazon S3 bucket. -- - 'FULL_CONTROL': The grantee has 'READ', 'READ_ACP', and -- 'WRITE_ACP' permissions for the thumbnails that Elastic -- Transcoder adds to the Amazon S3 bucket. -- - __StorageClass__: The Amazon S3 storage class, 'Standard' or -- 'ReducedRedundancy', that you want Elastic Transcoder to assign to -- the thumbnails that it stores in your Amazon S3 bucket. cThumbnailConfig :: Lens' CreatePipeline (Maybe PipelineOutputConfig) cThumbnailConfig = lens _cThumbnailConfig (\ s a -> s{_cThumbnailConfig = a}); -- | The Amazon Simple Notification Service (Amazon SNS) topic that you want -- to notify to report job status. -- -- To receive notifications, you must also subscribe to the new topic in -- the Amazon SNS console. -- -- - __Progressing__: The topic ARN for the Amazon Simple Notification -- Service (Amazon SNS) topic that you want to notify when Elastic -- Transcoder has started to process a job in this pipeline. This is -- the ARN that Amazon SNS returned when you created the topic. For -- more information, see Create a Topic in the Amazon Simple -- Notification Service Developer Guide. -- - __Completed__: The topic ARN for the Amazon SNS topic that you want -- to notify when Elastic Transcoder has finished processing a job in -- this pipeline. This is the ARN that Amazon SNS returned when you -- created the topic. -- - __Warning__: The topic ARN for the Amazon SNS topic that you want to -- notify when Elastic Transcoder encounters a warning condition while -- processing a job in this pipeline. This is the ARN that Amazon SNS -- returned when you created the topic. -- - __Error__: The topic ARN for the Amazon SNS topic that you want to -- notify when Elastic Transcoder encounters an error condition while -- processing a job in this pipeline. This is the ARN that Amazon SNS -- returned when you created the topic. cNotifications :: Lens' CreatePipeline (Maybe Notifications) cNotifications = lens _cNotifications (\ s a -> s{_cNotifications = a}); -- | The name of the pipeline. We recommend that the name be unique within -- the AWS account, but uniqueness is not enforced. -- -- Constraints: Maximum 40 characters. cName :: Lens' CreatePipeline Text cName = lens _cName (\ s a -> s{_cName = a}); -- | The Amazon S3 bucket in which you saved the media files that you want to -- transcode. cInputBucket :: Lens' CreatePipeline Text cInputBucket = lens _cInputBucket (\ s a -> s{_cInputBucket = a}); -- | The IAM Amazon Resource Name (ARN) for the role that you want Elastic -- Transcoder to use to create the pipeline. cRole :: Lens' CreatePipeline Text cRole = lens _cRole (\ s a -> s{_cRole = a}); instance AWSRequest CreatePipeline where type Rs CreatePipeline = CreatePipelineResponse request = postJSON elasticTranscoder response = receiveJSON (\ s h x -> CreatePipelineResponse' <$> (x .?> "Warnings" .!@ mempty) <*> (x .?> "Pipeline") <*> (pure (fromEnum s))) instance ToHeaders CreatePipeline where toHeaders = const mempty instance ToJSON CreatePipeline where toJSON CreatePipeline'{..} = object (catMaybes [("ContentConfig" .=) <$> _cContentConfig, ("OutputBucket" .=) <$> _cOutputBucket, ("AwsKmsKeyArn" .=) <$> _cAWSKMSKeyARN, ("ThumbnailConfig" .=) <$> _cThumbnailConfig, ("Notifications" .=) <$> _cNotifications, Just ("Name" .= _cName), Just ("InputBucket" .= _cInputBucket), Just ("Role" .= _cRole)]) instance ToPath CreatePipeline where toPath = const "/2012-09-25/pipelines" instance ToQuery CreatePipeline where toQuery = const mempty -- | When you create a pipeline, Elastic Transcoder returns the values that -- you specified in the request. -- -- /See:/ 'createPipelineResponse' smart constructor. data CreatePipelineResponse = CreatePipelineResponse' { _crsWarnings :: !(Maybe [Warning]) , _crsPipeline :: !(Maybe Pipeline) , _crsStatus :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'CreatePipelineResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'crsWarnings' -- -- * 'crsPipeline' -- -- * 'crsStatus' createPipelineResponse :: Int -- ^ 'crsStatus' -> CreatePipelineResponse createPipelineResponse pStatus_ = CreatePipelineResponse' { _crsWarnings = Nothing , _crsPipeline = Nothing , _crsStatus = pStatus_ } -- | Elastic Transcoder returns a warning if the resources used by your -- pipeline are not in the same region as the pipeline. -- -- Using resources in the same region, such as your Amazon S3 buckets, -- Amazon SNS notification topics, and AWS KMS key, reduces processing time -- and prevents cross-regional charges. crsWarnings :: Lens' CreatePipelineResponse [Warning] crsWarnings = lens _crsWarnings (\ s a -> s{_crsWarnings = a}) . _Default . _Coerce; -- | A section of the response body that provides information about the -- pipeline that is created. crsPipeline :: Lens' CreatePipelineResponse (Maybe Pipeline) crsPipeline = lens _crsPipeline (\ s a -> s{_crsPipeline = a}); -- | The response status code. crsStatus :: Lens' CreatePipelineResponse Int crsStatus = lens _crsStatus (\ s a -> s{_crsStatus = a});