amazonka-ec2-1.3.3: gen/Network/AWS/EC2/DescribeImages.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.EC2.DescribeImages
-- Copyright : (c) 2013-2015 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)
--
-- Describes one or more of the images (AMIs, AKIs, and ARIs) available to
-- you. Images available to you include public images, private images that
-- you own, and private images owned by other AWS accounts but for which
-- you have explicit launch permissions.
--
-- Deregistered images are included in the returned results for an
-- unspecified interval after deregistration.
--
-- /See:/ <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeImages.html AWS API Reference> for DescribeImages.
module Network.AWS.EC2.DescribeImages
(
-- * Creating a Request
describeImages
, DescribeImages
-- * Request Lenses
, deseOwners
, deseExecutableUsers
, deseFilters
, deseImageIds
, deseDryRun
-- * Destructuring the Response
, describeImagesResponse
, DescribeImagesResponse
-- * Response Lenses
, desrsImages
, desrsResponseStatus
) where
import Network.AWS.EC2.Types
import Network.AWS.EC2.Types.Product
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
-- | /See:/ 'describeImages' smart constructor.
data DescribeImages = DescribeImages'
{ _deseOwners :: !(Maybe [Text])
, _deseExecutableUsers :: !(Maybe [Text])
, _deseFilters :: !(Maybe [Filter])
, _deseImageIds :: !(Maybe [Text])
, _deseDryRun :: !(Maybe Bool)
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'DescribeImages' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'deseOwners'
--
-- * 'deseExecutableUsers'
--
-- * 'deseFilters'
--
-- * 'deseImageIds'
--
-- * 'deseDryRun'
describeImages
:: DescribeImages
describeImages =
DescribeImages'
{ _deseOwners = Nothing
, _deseExecutableUsers = Nothing
, _deseFilters = Nothing
, _deseImageIds = Nothing
, _deseDryRun = Nothing
}
-- | Filters the images by the owner. Specify an AWS account ID, 'amazon'
-- (owner is Amazon), 'aws-marketplace' (owner is AWS Marketplace), 'self'
-- (owner is the sender of the request). Omitting this option returns all
-- images for which you have launch permissions, regardless of ownership.
deseOwners :: Lens' DescribeImages [Text]
deseOwners = lens _deseOwners (\ s a -> s{_deseOwners = a}) . _Default . _Coerce;
-- | Scopes the images by users with explicit launch permissions. Specify an
-- AWS account ID, 'self' (the sender of the request), or 'all' (public
-- AMIs).
deseExecutableUsers :: Lens' DescribeImages [Text]
deseExecutableUsers = lens _deseExecutableUsers (\ s a -> s{_deseExecutableUsers = a}) . _Default . _Coerce;
-- | One or more filters.
--
-- - 'architecture' - The image architecture ('i386' | 'x86_64').
--
-- - 'block-device-mapping.delete-on-termination' - A Boolean value that
-- indicates whether the Amazon EBS volume is deleted on instance
-- termination.
--
-- - 'block-device-mapping.device-name' - The device name for the EBS
-- volume (for example, '\/dev\/sdh').
--
-- - 'block-device-mapping.snapshot-id' - The ID of the snapshot used for
-- the EBS volume.
--
-- - 'block-device-mapping.volume-size' - The volume size of the EBS
-- volume, in GiB.
--
-- - 'block-device-mapping.volume-type' - The volume type of the EBS
-- volume ('gp2' | 'standard' | 'io1').
--
-- - 'description' - The description of the image (provided during image
-- creation).
--
-- - 'hypervisor' - The hypervisor type ('ovm' | 'xen').
--
-- - 'image-id' - The ID of the image.
--
-- - 'image-type' - The image type ('machine' | 'kernel' | 'ramdisk').
--
-- - 'is-public' - A Boolean that indicates whether the image is public.
--
-- - 'kernel-id' - The kernel ID.
--
-- - 'manifest-location' - The location of the image manifest.
--
-- - 'name' - The name of the AMI (provided during image creation).
--
-- - 'owner-alias' - The AWS account alias (for example, 'amazon').
--
-- - 'owner-id' - The AWS account ID of the image owner.
--
-- - 'platform' - The platform. To only list Windows-based AMIs, use
-- 'windows'.
--
-- - 'product-code' - The product code.
--
-- - 'product-code.type' - The type of the product code ('devpay' |
-- 'marketplace').
--
-- - 'ramdisk-id' - The RAM disk ID.
--
-- - 'root-device-name' - The name of the root device volume (for
-- example, '\/dev\/sda1').
--
-- - 'root-device-type' - The type of the root device volume ('ebs' |
-- 'instance-store').
--
-- - 'state' - The state of the image ('available' | 'pending' |
-- 'failed').
--
-- - 'state-reason-code' - The reason code for the state change.
--
-- - 'state-reason-message' - The message for the state change.
--
-- - 'tag':/key/=/value/ - The key\/value combination of a tag assigned
-- to the resource.
--
-- - 'tag-key' - The key of a tag assigned to the resource. This filter
-- is independent of the tag-value filter. For example, if you use both
-- the filter \"tag-key=Purpose\" and the filter \"tag-value=X\", you
-- get any resources assigned both the tag key Purpose (regardless of
-- what the tag\'s value is), and the tag value X (regardless of what
-- the tag\'s key is). If you want to list only resources where Purpose
-- is X, see the 'tag':/key/=/value/ filter.
--
-- - 'tag-value' - The value of a tag assigned to the resource. This
-- filter is independent of the 'tag-key' filter.
--
-- - 'virtualization-type' - The virtualization type ('paravirtual' |
-- 'hvm').
--
deseFilters :: Lens' DescribeImages [Filter]
deseFilters = lens _deseFilters (\ s a -> s{_deseFilters = a}) . _Default . _Coerce;
-- | One or more image IDs.
--
-- Default: Describes all images available to you.
deseImageIds :: Lens' DescribeImages [Text]
deseImageIds = lens _deseImageIds (\ s a -> s{_deseImageIds = a}) . _Default . _Coerce;
-- | Checks whether you have the required permissions for the action, without
-- actually making the request, and provides an error response. If you have
-- the required permissions, the error response is 'DryRunOperation'.
-- Otherwise, it is 'UnauthorizedOperation'.
deseDryRun :: Lens' DescribeImages (Maybe Bool)
deseDryRun = lens _deseDryRun (\ s a -> s{_deseDryRun = a});
instance AWSRequest DescribeImages where
type Rs DescribeImages = DescribeImagesResponse
request = postQuery eC2
response
= receiveXML
(\ s h x ->
DescribeImagesResponse' <$>
(x .@? "imagesSet" .!@ mempty >>=
may (parseXMLList "item"))
<*> (pure (fromEnum s)))
instance ToHeaders DescribeImages where
toHeaders = const mempty
instance ToPath DescribeImages where
toPath = const "/"
instance ToQuery DescribeImages where
toQuery DescribeImages'{..}
= mconcat
["Action" =: ("DescribeImages" :: ByteString),
"Version" =: ("2015-10-01" :: ByteString),
toQuery (toQueryList "Owner" <$> _deseOwners),
toQuery
(toQueryList "ExecutableBy" <$>
_deseExecutableUsers),
toQuery (toQueryList "Filter" <$> _deseFilters),
toQuery (toQueryList "ImageId" <$> _deseImageIds),
"DryRun" =: _deseDryRun]
-- | /See:/ 'describeImagesResponse' smart constructor.
data DescribeImagesResponse = DescribeImagesResponse'
{ _desrsImages :: !(Maybe [Image])
, _desrsResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'DescribeImagesResponse' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'desrsImages'
--
-- * 'desrsResponseStatus'
describeImagesResponse
:: Int -- ^ 'desrsResponseStatus'
-> DescribeImagesResponse
describeImagesResponse pResponseStatus_ =
DescribeImagesResponse'
{ _desrsImages = Nothing
, _desrsResponseStatus = pResponseStatus_
}
-- | Information about one or more images.
desrsImages :: Lens' DescribeImagesResponse [Image]
desrsImages = lens _desrsImages (\ s a -> s{_desrsImages = a}) . _Default . _Coerce;
-- | The response status code.
desrsResponseStatus :: Lens' DescribeImagesResponse Int
desrsResponseStatus = lens _desrsResponseStatus (\ s a -> s{_desrsResponseStatus = a});