packages feed

amazonka-ec2 0.3.4 → 0.3.5

raw patch · 176 files changed

+18292/−12592 lines, 176 filesdep ~amazonka-corePVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: amazonka-core

API changes (from Hackage documentation)

- Network.AWS.EC2.CreateRoute: instance Constructor C1_0CreateRouteResponse
- Network.AWS.EC2.CreateRoute: instance Datatype D1CreateRouteResponse
- Network.AWS.EC2.CreateRoute: instance Generic CreateRouteResponse
- Network.AWS.EC2.Types: ASAttached :: AttachmentStatus
- Network.AWS.EC2.Types: ASAttaching :: AttachmentStatus
- Network.AWS.EC2.Types: ASDetached :: AttachmentStatus
- Network.AWS.EC2.Types: ASDetaching :: AttachmentStatus
- Network.AWS.EC2.Types: Blackhole :: RouteState
- Network.AWS.EC2.Types: Completed :: SnapshotState
- Network.AWS.EC2.Types: InUse :: NetworkInterfaceStatus
- Network.AWS.EC2.Types: InsufficientData :: StatusType
- Network.AWS.EC2.Types: Passed :: StatusType
- Network.AWS.EC2.Types: SSAvailable :: SubnetState
+ Network.AWS.EC2.CancelImportTask: cancelImportTask :: CancelImportTask
+ Network.AWS.EC2.CancelImportTask: cancelImportTaskResponse :: CancelImportTaskResponse
+ Network.AWS.EC2.CancelImportTask: citCancelReason :: Lens' CancelImportTask (Maybe Text)
+ Network.AWS.EC2.CancelImportTask: citDryRun :: Lens' CancelImportTask (Maybe Bool)
+ Network.AWS.EC2.CancelImportTask: citImportTaskId :: Lens' CancelImportTask (Maybe Text)
+ Network.AWS.EC2.CancelImportTask: citrImportTaskId :: Lens' CancelImportTaskResponse (Maybe Text)
+ Network.AWS.EC2.CancelImportTask: citrPreviousState :: Lens' CancelImportTaskResponse (Maybe Text)
+ Network.AWS.EC2.CancelImportTask: citrState :: Lens' CancelImportTaskResponse (Maybe Text)
+ Network.AWS.EC2.CancelImportTask: data CancelImportTask
+ Network.AWS.EC2.CancelImportTask: data CancelImportTaskResponse
+ Network.AWS.EC2.CancelImportTask: instance AWSRequest CancelImportTask
+ Network.AWS.EC2.CancelImportTask: instance Eq CancelImportTask
+ Network.AWS.EC2.CancelImportTask: instance Eq CancelImportTaskResponse
+ Network.AWS.EC2.CancelImportTask: instance FromXML CancelImportTaskResponse
+ Network.AWS.EC2.CancelImportTask: instance Ord CancelImportTask
+ Network.AWS.EC2.CancelImportTask: instance Ord CancelImportTaskResponse
+ Network.AWS.EC2.CancelImportTask: instance Read CancelImportTask
+ Network.AWS.EC2.CancelImportTask: instance Read CancelImportTaskResponse
+ Network.AWS.EC2.CancelImportTask: instance Show CancelImportTask
+ Network.AWS.EC2.CancelImportTask: instance Show CancelImportTaskResponse
+ Network.AWS.EC2.CancelImportTask: instance ToHeaders CancelImportTask
+ Network.AWS.EC2.CancelImportTask: instance ToPath CancelImportTask
+ Network.AWS.EC2.CancelImportTask: instance ToQuery CancelImportTask
+ Network.AWS.EC2.CancelSpotFleetRequests: cancelSpotFleetRequests :: Bool -> CancelSpotFleetRequests
+ Network.AWS.EC2.CancelSpotFleetRequests: cancelSpotFleetRequestsResponse :: CancelSpotFleetRequestsResponse
+ Network.AWS.EC2.CancelSpotFleetRequests: csfrDryRun :: Lens' CancelSpotFleetRequests (Maybe Bool)
+ Network.AWS.EC2.CancelSpotFleetRequests: csfrSpotFleetRequestIds :: Lens' CancelSpotFleetRequests [Text]
+ Network.AWS.EC2.CancelSpotFleetRequests: csfrTerminateInstances :: Lens' CancelSpotFleetRequests Bool
+ Network.AWS.EC2.CancelSpotFleetRequests: csfrrSuccessfulFleetRequests :: Lens' CancelSpotFleetRequestsResponse [CancelSpotFleetRequestsSuccessItem]
+ Network.AWS.EC2.CancelSpotFleetRequests: csfrrUnsuccessfulFleetRequests :: Lens' CancelSpotFleetRequestsResponse [CancelSpotFleetRequestsErrorItem]
+ Network.AWS.EC2.CancelSpotFleetRequests: data CancelSpotFleetRequests
+ Network.AWS.EC2.CancelSpotFleetRequests: data CancelSpotFleetRequestsResponse
+ Network.AWS.EC2.CancelSpotFleetRequests: instance AWSRequest CancelSpotFleetRequests
+ Network.AWS.EC2.CancelSpotFleetRequests: instance Eq CancelSpotFleetRequests
+ Network.AWS.EC2.CancelSpotFleetRequests: instance Eq CancelSpotFleetRequestsResponse
+ Network.AWS.EC2.CancelSpotFleetRequests: instance FromXML CancelSpotFleetRequestsResponse
+ Network.AWS.EC2.CancelSpotFleetRequests: instance Ord CancelSpotFleetRequests
+ Network.AWS.EC2.CancelSpotFleetRequests: instance Read CancelSpotFleetRequests
+ Network.AWS.EC2.CancelSpotFleetRequests: instance Read CancelSpotFleetRequestsResponse
+ Network.AWS.EC2.CancelSpotFleetRequests: instance Show CancelSpotFleetRequests
+ Network.AWS.EC2.CancelSpotFleetRequests: instance Show CancelSpotFleetRequestsResponse
+ Network.AWS.EC2.CancelSpotFleetRequests: instance ToHeaders CancelSpotFleetRequests
+ Network.AWS.EC2.CancelSpotFleetRequests: instance ToPath CancelSpotFleetRequests
+ Network.AWS.EC2.CancelSpotFleetRequests: instance ToQuery CancelSpotFleetRequests
+ Network.AWS.EC2.CreateRoute: crClientToken :: Lens' CreateRoute (Maybe Text)
+ Network.AWS.EC2.CreateRoute: crrClientToken :: Lens' CreateRouteResponse (Maybe Text)
+ Network.AWS.EC2.CreateRoute: crrReturn :: Lens' CreateRouteResponse (Maybe Bool)
+ Network.AWS.EC2.CreateRoute: instance FromXML CreateRouteResponse
+ Network.AWS.EC2.CreateVpcEndpoint: createVpcEndpoint :: Text -> Text -> CreateVpcEndpoint
+ Network.AWS.EC2.CreateVpcEndpoint: createVpcEndpointResponse :: CreateVpcEndpointResponse
+ Network.AWS.EC2.CreateVpcEndpoint: cveClientToken :: Lens' CreateVpcEndpoint (Maybe Text)
+ Network.AWS.EC2.CreateVpcEndpoint: cveDryRun :: Lens' CreateVpcEndpoint (Maybe Bool)
+ Network.AWS.EC2.CreateVpcEndpoint: cvePolicyDocument :: Lens' CreateVpcEndpoint (Maybe Text)
+ Network.AWS.EC2.CreateVpcEndpoint: cveRouteTableIds :: Lens' CreateVpcEndpoint [Text]
+ Network.AWS.EC2.CreateVpcEndpoint: cveServiceName :: Lens' CreateVpcEndpoint Text
+ Network.AWS.EC2.CreateVpcEndpoint: cveVpcId :: Lens' CreateVpcEndpoint Text
+ Network.AWS.EC2.CreateVpcEndpoint: cverClientToken :: Lens' CreateVpcEndpointResponse (Maybe Text)
+ Network.AWS.EC2.CreateVpcEndpoint: cverVpcEndpoint :: Lens' CreateVpcEndpointResponse (Maybe VpcEndpoint)
+ Network.AWS.EC2.CreateVpcEndpoint: data CreateVpcEndpoint
+ Network.AWS.EC2.CreateVpcEndpoint: data CreateVpcEndpointResponse
+ Network.AWS.EC2.CreateVpcEndpoint: instance AWSRequest CreateVpcEndpoint
+ Network.AWS.EC2.CreateVpcEndpoint: instance Eq CreateVpcEndpoint
+ Network.AWS.EC2.CreateVpcEndpoint: instance Eq CreateVpcEndpointResponse
+ Network.AWS.EC2.CreateVpcEndpoint: instance FromXML CreateVpcEndpointResponse
+ Network.AWS.EC2.CreateVpcEndpoint: instance Ord CreateVpcEndpoint
+ Network.AWS.EC2.CreateVpcEndpoint: instance Read CreateVpcEndpoint
+ Network.AWS.EC2.CreateVpcEndpoint: instance Read CreateVpcEndpointResponse
+ Network.AWS.EC2.CreateVpcEndpoint: instance Show CreateVpcEndpoint
+ Network.AWS.EC2.CreateVpcEndpoint: instance Show CreateVpcEndpointResponse
+ Network.AWS.EC2.CreateVpcEndpoint: instance ToHeaders CreateVpcEndpoint
+ Network.AWS.EC2.CreateVpcEndpoint: instance ToPath CreateVpcEndpoint
+ Network.AWS.EC2.CreateVpcEndpoint: instance ToQuery CreateVpcEndpoint
+ Network.AWS.EC2.DeleteVpcEndpoints: data DeleteVpcEndpoints
+ Network.AWS.EC2.DeleteVpcEndpoints: data DeleteVpcEndpointsResponse
+ Network.AWS.EC2.DeleteVpcEndpoints: deleteVpcEndpoints :: DeleteVpcEndpoints
+ Network.AWS.EC2.DeleteVpcEndpoints: deleteVpcEndpointsResponse :: DeleteVpcEndpointsResponse
+ Network.AWS.EC2.DeleteVpcEndpoints: dveDryRun :: Lens' DeleteVpcEndpoints (Maybe Bool)
+ Network.AWS.EC2.DeleteVpcEndpoints: dveVpcEndpointIds :: Lens' DeleteVpcEndpoints [Text]
+ Network.AWS.EC2.DeleteVpcEndpoints: dverUnsuccessful :: Lens' DeleteVpcEndpointsResponse [UnsuccessfulItem]
+ Network.AWS.EC2.DeleteVpcEndpoints: instance AWSRequest DeleteVpcEndpoints
+ Network.AWS.EC2.DeleteVpcEndpoints: instance Eq DeleteVpcEndpoints
+ Network.AWS.EC2.DeleteVpcEndpoints: instance Eq DeleteVpcEndpointsResponse
+ Network.AWS.EC2.DeleteVpcEndpoints: instance FromXML DeleteVpcEndpointsResponse
+ Network.AWS.EC2.DeleteVpcEndpoints: instance Monoid DeleteVpcEndpointsResponse
+ Network.AWS.EC2.DeleteVpcEndpoints: instance Ord DeleteVpcEndpoints
+ Network.AWS.EC2.DeleteVpcEndpoints: instance Read DeleteVpcEndpoints
+ Network.AWS.EC2.DeleteVpcEndpoints: instance Read DeleteVpcEndpointsResponse
+ Network.AWS.EC2.DeleteVpcEndpoints: instance Semigroup DeleteVpcEndpointsResponse
+ Network.AWS.EC2.DeleteVpcEndpoints: instance Show DeleteVpcEndpoints
+ Network.AWS.EC2.DeleteVpcEndpoints: instance Show DeleteVpcEndpointsResponse
+ Network.AWS.EC2.DeleteVpcEndpoints: instance ToHeaders DeleteVpcEndpoints
+ Network.AWS.EC2.DeleteVpcEndpoints: instance ToPath DeleteVpcEndpoints
+ Network.AWS.EC2.DeleteVpcEndpoints: instance ToQuery DeleteVpcEndpoints
+ Network.AWS.EC2.DescribeImportImageTasks: data DescribeImportImageTasks
+ Network.AWS.EC2.DescribeImportImageTasks: data DescribeImportImageTasksResponse
+ Network.AWS.EC2.DescribeImportImageTasks: describeImportImageTasks :: DescribeImportImageTasks
+ Network.AWS.EC2.DescribeImportImageTasks: describeImportImageTasksResponse :: DescribeImportImageTasksResponse
+ Network.AWS.EC2.DescribeImportImageTasks: diitDryRun :: Lens' DescribeImportImageTasks (Maybe Bool)
+ Network.AWS.EC2.DescribeImportImageTasks: diitFilters :: Lens' DescribeImportImageTasks [Filter]
+ Network.AWS.EC2.DescribeImportImageTasks: diitImportTaskIds :: Lens' DescribeImportImageTasks [Text]
+ Network.AWS.EC2.DescribeImportImageTasks: diitMaxResults :: Lens' DescribeImportImageTasks (Maybe Int)
+ Network.AWS.EC2.DescribeImportImageTasks: diitNextToken :: Lens' DescribeImportImageTasks (Maybe Text)
+ Network.AWS.EC2.DescribeImportImageTasks: diitrImportImageTasks :: Lens' DescribeImportImageTasksResponse [ImportImageTask]
+ Network.AWS.EC2.DescribeImportImageTasks: diitrNextToken :: Lens' DescribeImportImageTasksResponse (Maybe Text)
+ Network.AWS.EC2.DescribeImportImageTasks: instance AWSRequest DescribeImportImageTasks
+ Network.AWS.EC2.DescribeImportImageTasks: instance Eq DescribeImportImageTasks
+ Network.AWS.EC2.DescribeImportImageTasks: instance Eq DescribeImportImageTasksResponse
+ Network.AWS.EC2.DescribeImportImageTasks: instance FromXML DescribeImportImageTasksResponse
+ Network.AWS.EC2.DescribeImportImageTasks: instance Read DescribeImportImageTasks
+ Network.AWS.EC2.DescribeImportImageTasks: instance Read DescribeImportImageTasksResponse
+ Network.AWS.EC2.DescribeImportImageTasks: instance Show DescribeImportImageTasks
+ Network.AWS.EC2.DescribeImportImageTasks: instance Show DescribeImportImageTasksResponse
+ Network.AWS.EC2.DescribeImportImageTasks: instance ToHeaders DescribeImportImageTasks
+ Network.AWS.EC2.DescribeImportImageTasks: instance ToPath DescribeImportImageTasks
+ Network.AWS.EC2.DescribeImportImageTasks: instance ToQuery DescribeImportImageTasks
+ Network.AWS.EC2.DescribeImportSnapshotTasks: data DescribeImportSnapshotTasks
+ Network.AWS.EC2.DescribeImportSnapshotTasks: data DescribeImportSnapshotTasksResponse
+ Network.AWS.EC2.DescribeImportSnapshotTasks: describeImportSnapshotTasks :: DescribeImportSnapshotTasks
+ Network.AWS.EC2.DescribeImportSnapshotTasks: describeImportSnapshotTasksResponse :: DescribeImportSnapshotTasksResponse
+ Network.AWS.EC2.DescribeImportSnapshotTasks: distDryRun :: Lens' DescribeImportSnapshotTasks (Maybe Bool)
+ Network.AWS.EC2.DescribeImportSnapshotTasks: distFilters :: Lens' DescribeImportSnapshotTasks [Filter]
+ Network.AWS.EC2.DescribeImportSnapshotTasks: distImportTaskIds :: Lens' DescribeImportSnapshotTasks [Text]
+ Network.AWS.EC2.DescribeImportSnapshotTasks: distMaxResults :: Lens' DescribeImportSnapshotTasks (Maybe Int)
+ Network.AWS.EC2.DescribeImportSnapshotTasks: distNextToken :: Lens' DescribeImportSnapshotTasks (Maybe Text)
+ Network.AWS.EC2.DescribeImportSnapshotTasks: distrImportSnapshotTasks :: Lens' DescribeImportSnapshotTasksResponse [ImportSnapshotTask]
+ Network.AWS.EC2.DescribeImportSnapshotTasks: distrNextToken :: Lens' DescribeImportSnapshotTasksResponse (Maybe Text)
+ Network.AWS.EC2.DescribeImportSnapshotTasks: instance AWSRequest DescribeImportSnapshotTasks
+ Network.AWS.EC2.DescribeImportSnapshotTasks: instance Eq DescribeImportSnapshotTasks
+ Network.AWS.EC2.DescribeImportSnapshotTasks: instance Eq DescribeImportSnapshotTasksResponse
+ Network.AWS.EC2.DescribeImportSnapshotTasks: instance FromXML DescribeImportSnapshotTasksResponse
+ Network.AWS.EC2.DescribeImportSnapshotTasks: instance Read DescribeImportSnapshotTasks
+ Network.AWS.EC2.DescribeImportSnapshotTasks: instance Read DescribeImportSnapshotTasksResponse
+ Network.AWS.EC2.DescribeImportSnapshotTasks: instance Show DescribeImportSnapshotTasks
+ Network.AWS.EC2.DescribeImportSnapshotTasks: instance Show DescribeImportSnapshotTasksResponse
+ Network.AWS.EC2.DescribeImportSnapshotTasks: instance ToHeaders DescribeImportSnapshotTasks
+ Network.AWS.EC2.DescribeImportSnapshotTasks: instance ToPath DescribeImportSnapshotTasks
+ Network.AWS.EC2.DescribeImportSnapshotTasks: instance ToQuery DescribeImportSnapshotTasks
+ Network.AWS.EC2.DescribeMovingAddresses: data DescribeMovingAddresses
+ Network.AWS.EC2.DescribeMovingAddresses: data DescribeMovingAddressesResponse
+ Network.AWS.EC2.DescribeMovingAddresses: describeMovingAddresses :: DescribeMovingAddresses
+ Network.AWS.EC2.DescribeMovingAddresses: describeMovingAddressesResponse :: DescribeMovingAddressesResponse
+ Network.AWS.EC2.DescribeMovingAddresses: dmaDryRun :: Lens' DescribeMovingAddresses (Maybe Bool)
+ Network.AWS.EC2.DescribeMovingAddresses: dmaFilters :: Lens' DescribeMovingAddresses [Filter]
+ Network.AWS.EC2.DescribeMovingAddresses: dmaMaxResults :: Lens' DescribeMovingAddresses (Maybe Int)
+ Network.AWS.EC2.DescribeMovingAddresses: dmaNextToken :: Lens' DescribeMovingAddresses (Maybe Text)
+ Network.AWS.EC2.DescribeMovingAddresses: dmaPublicIps :: Lens' DescribeMovingAddresses [Text]
+ Network.AWS.EC2.DescribeMovingAddresses: dmarMovingAddressStatuses :: Lens' DescribeMovingAddressesResponse [MovingAddressStatus]
+ Network.AWS.EC2.DescribeMovingAddresses: dmarNextToken :: Lens' DescribeMovingAddressesResponse (Maybe Text)
+ Network.AWS.EC2.DescribeMovingAddresses: instance AWSRequest DescribeMovingAddresses
+ Network.AWS.EC2.DescribeMovingAddresses: instance Eq DescribeMovingAddresses
+ Network.AWS.EC2.DescribeMovingAddresses: instance Eq DescribeMovingAddressesResponse
+ Network.AWS.EC2.DescribeMovingAddresses: instance FromXML DescribeMovingAddressesResponse
+ Network.AWS.EC2.DescribeMovingAddresses: instance Read DescribeMovingAddresses
+ Network.AWS.EC2.DescribeMovingAddresses: instance Read DescribeMovingAddressesResponse
+ Network.AWS.EC2.DescribeMovingAddresses: instance Show DescribeMovingAddresses
+ Network.AWS.EC2.DescribeMovingAddresses: instance Show DescribeMovingAddressesResponse
+ Network.AWS.EC2.DescribeMovingAddresses: instance ToHeaders DescribeMovingAddresses
+ Network.AWS.EC2.DescribeMovingAddresses: instance ToPath DescribeMovingAddresses
+ Network.AWS.EC2.DescribeMovingAddresses: instance ToQuery DescribeMovingAddresses
+ Network.AWS.EC2.DescribePrefixLists: data DescribePrefixLists
+ Network.AWS.EC2.DescribePrefixLists: data DescribePrefixListsResponse
+ Network.AWS.EC2.DescribePrefixLists: describePrefixLists :: DescribePrefixLists
+ Network.AWS.EC2.DescribePrefixLists: describePrefixListsResponse :: DescribePrefixListsResponse
+ Network.AWS.EC2.DescribePrefixLists: dplDryRun :: Lens' DescribePrefixLists (Maybe Bool)
+ Network.AWS.EC2.DescribePrefixLists: dplFilters :: Lens' DescribePrefixLists [Filter]
+ Network.AWS.EC2.DescribePrefixLists: dplMaxResults :: Lens' DescribePrefixLists (Maybe Int)
+ Network.AWS.EC2.DescribePrefixLists: dplNextToken :: Lens' DescribePrefixLists (Maybe Text)
+ Network.AWS.EC2.DescribePrefixLists: dplPrefixListIds :: Lens' DescribePrefixLists [Text]
+ Network.AWS.EC2.DescribePrefixLists: dplrNextToken :: Lens' DescribePrefixListsResponse (Maybe Text)
+ Network.AWS.EC2.DescribePrefixLists: dplrPrefixLists :: Lens' DescribePrefixListsResponse [PrefixList]
+ Network.AWS.EC2.DescribePrefixLists: instance AWSRequest DescribePrefixLists
+ Network.AWS.EC2.DescribePrefixLists: instance Eq DescribePrefixLists
+ Network.AWS.EC2.DescribePrefixLists: instance Eq DescribePrefixListsResponse
+ Network.AWS.EC2.DescribePrefixLists: instance FromXML DescribePrefixListsResponse
+ Network.AWS.EC2.DescribePrefixLists: instance Read DescribePrefixLists
+ Network.AWS.EC2.DescribePrefixLists: instance Read DescribePrefixListsResponse
+ Network.AWS.EC2.DescribePrefixLists: instance Show DescribePrefixLists
+ Network.AWS.EC2.DescribePrefixLists: instance Show DescribePrefixListsResponse
+ Network.AWS.EC2.DescribePrefixLists: instance ToHeaders DescribePrefixLists
+ Network.AWS.EC2.DescribePrefixLists: instance ToPath DescribePrefixLists
+ Network.AWS.EC2.DescribePrefixLists: instance ToQuery DescribePrefixLists
+ Network.AWS.EC2.DescribeSpotFleetInstances: data DescribeSpotFleetInstances
+ Network.AWS.EC2.DescribeSpotFleetInstances: data DescribeSpotFleetInstancesResponse
+ Network.AWS.EC2.DescribeSpotFleetInstances: describeSpotFleetInstances :: Text -> DescribeSpotFleetInstances
+ Network.AWS.EC2.DescribeSpotFleetInstances: describeSpotFleetInstancesResponse :: Text -> DescribeSpotFleetInstancesResponse
+ Network.AWS.EC2.DescribeSpotFleetInstances: dsfiDryRun :: Lens' DescribeSpotFleetInstances (Maybe Bool)
+ Network.AWS.EC2.DescribeSpotFleetInstances: dsfiMaxResults :: Lens' DescribeSpotFleetInstances (Maybe Int)
+ Network.AWS.EC2.DescribeSpotFleetInstances: dsfiNextToken :: Lens' DescribeSpotFleetInstances (Maybe Text)
+ Network.AWS.EC2.DescribeSpotFleetInstances: dsfiSpotFleetRequestId :: Lens' DescribeSpotFleetInstances Text
+ Network.AWS.EC2.DescribeSpotFleetInstances: dsfirActiveInstances :: Lens' DescribeSpotFleetInstancesResponse [ActiveInstance]
+ Network.AWS.EC2.DescribeSpotFleetInstances: dsfirNextToken :: Lens' DescribeSpotFleetInstancesResponse (Maybe Text)
+ Network.AWS.EC2.DescribeSpotFleetInstances: dsfirSpotFleetRequestId :: Lens' DescribeSpotFleetInstancesResponse Text
+ Network.AWS.EC2.DescribeSpotFleetInstances: instance AWSRequest DescribeSpotFleetInstances
+ Network.AWS.EC2.DescribeSpotFleetInstances: instance Eq DescribeSpotFleetInstances
+ Network.AWS.EC2.DescribeSpotFleetInstances: instance Eq DescribeSpotFleetInstancesResponse
+ Network.AWS.EC2.DescribeSpotFleetInstances: instance FromXML DescribeSpotFleetInstancesResponse
+ Network.AWS.EC2.DescribeSpotFleetInstances: instance Ord DescribeSpotFleetInstances
+ Network.AWS.EC2.DescribeSpotFleetInstances: instance Read DescribeSpotFleetInstances
+ Network.AWS.EC2.DescribeSpotFleetInstances: instance Read DescribeSpotFleetInstancesResponse
+ Network.AWS.EC2.DescribeSpotFleetInstances: instance Show DescribeSpotFleetInstances
+ Network.AWS.EC2.DescribeSpotFleetInstances: instance Show DescribeSpotFleetInstancesResponse
+ Network.AWS.EC2.DescribeSpotFleetInstances: instance ToHeaders DescribeSpotFleetInstances
+ Network.AWS.EC2.DescribeSpotFleetInstances: instance ToPath DescribeSpotFleetInstances
+ Network.AWS.EC2.DescribeSpotFleetInstances: instance ToQuery DescribeSpotFleetInstances
+ Network.AWS.EC2.DescribeSpotFleetRequestHistory: data DescribeSpotFleetRequestHistory
+ Network.AWS.EC2.DescribeSpotFleetRequestHistory: data DescribeSpotFleetRequestHistoryResponse
+ Network.AWS.EC2.DescribeSpotFleetRequestHistory: describeSpotFleetRequestHistory :: Text -> UTCTime -> DescribeSpotFleetRequestHistory
+ Network.AWS.EC2.DescribeSpotFleetRequestHistory: describeSpotFleetRequestHistoryResponse :: Text -> UTCTime -> UTCTime -> DescribeSpotFleetRequestHistoryResponse
+ Network.AWS.EC2.DescribeSpotFleetRequestHistory: dsfrhDryRun :: Lens' DescribeSpotFleetRequestHistory (Maybe Bool)
+ Network.AWS.EC2.DescribeSpotFleetRequestHistory: dsfrhEventType :: Lens' DescribeSpotFleetRequestHistory (Maybe EventType)
+ Network.AWS.EC2.DescribeSpotFleetRequestHistory: dsfrhMaxResults :: Lens' DescribeSpotFleetRequestHistory (Maybe Int)
+ Network.AWS.EC2.DescribeSpotFleetRequestHistory: dsfrhNextToken :: Lens' DescribeSpotFleetRequestHistory (Maybe Text)
+ Network.AWS.EC2.DescribeSpotFleetRequestHistory: dsfrhSpotFleetRequestId :: Lens' DescribeSpotFleetRequestHistory Text
+ Network.AWS.EC2.DescribeSpotFleetRequestHistory: dsfrhStartTime :: Lens' DescribeSpotFleetRequestHistory UTCTime
+ Network.AWS.EC2.DescribeSpotFleetRequestHistory: dsfrhrHistoryRecords :: Lens' DescribeSpotFleetRequestHistoryResponse [HistoryRecord]
+ Network.AWS.EC2.DescribeSpotFleetRequestHistory: dsfrhrLastEvaluatedTime :: Lens' DescribeSpotFleetRequestHistoryResponse UTCTime
+ Network.AWS.EC2.DescribeSpotFleetRequestHistory: dsfrhrNextToken :: Lens' DescribeSpotFleetRequestHistoryResponse (Maybe Text)
+ Network.AWS.EC2.DescribeSpotFleetRequestHistory: dsfrhrSpotFleetRequestId :: Lens' DescribeSpotFleetRequestHistoryResponse Text
+ Network.AWS.EC2.DescribeSpotFleetRequestHistory: dsfrhrStartTime :: Lens' DescribeSpotFleetRequestHistoryResponse UTCTime
+ Network.AWS.EC2.DescribeSpotFleetRequestHistory: instance AWSRequest DescribeSpotFleetRequestHistory
+ Network.AWS.EC2.DescribeSpotFleetRequestHistory: instance Eq DescribeSpotFleetRequestHistory
+ Network.AWS.EC2.DescribeSpotFleetRequestHistory: instance Eq DescribeSpotFleetRequestHistoryResponse
+ Network.AWS.EC2.DescribeSpotFleetRequestHistory: instance FromXML DescribeSpotFleetRequestHistoryResponse
+ Network.AWS.EC2.DescribeSpotFleetRequestHistory: instance Read DescribeSpotFleetRequestHistory
+ Network.AWS.EC2.DescribeSpotFleetRequestHistory: instance Read DescribeSpotFleetRequestHistoryResponse
+ Network.AWS.EC2.DescribeSpotFleetRequestHistory: instance Show DescribeSpotFleetRequestHistory
+ Network.AWS.EC2.DescribeSpotFleetRequestHistory: instance Show DescribeSpotFleetRequestHistoryResponse
+ Network.AWS.EC2.DescribeSpotFleetRequestHistory: instance ToHeaders DescribeSpotFleetRequestHistory
+ Network.AWS.EC2.DescribeSpotFleetRequestHistory: instance ToPath DescribeSpotFleetRequestHistory
+ Network.AWS.EC2.DescribeSpotFleetRequestHistory: instance ToQuery DescribeSpotFleetRequestHistory
+ Network.AWS.EC2.DescribeSpotFleetRequests: data DescribeSpotFleetRequests
+ Network.AWS.EC2.DescribeSpotFleetRequests: data DescribeSpotFleetRequestsResponse
+ Network.AWS.EC2.DescribeSpotFleetRequests: describeSpotFleetRequests :: DescribeSpotFleetRequests
+ Network.AWS.EC2.DescribeSpotFleetRequests: describeSpotFleetRequestsResponse :: DescribeSpotFleetRequestsResponse
+ Network.AWS.EC2.DescribeSpotFleetRequests: dsfrDryRun :: Lens' DescribeSpotFleetRequests (Maybe Bool)
+ Network.AWS.EC2.DescribeSpotFleetRequests: dsfrMaxResults :: Lens' DescribeSpotFleetRequests (Maybe Int)
+ Network.AWS.EC2.DescribeSpotFleetRequests: dsfrNextToken :: Lens' DescribeSpotFleetRequests (Maybe Text)
+ Network.AWS.EC2.DescribeSpotFleetRequests: dsfrSpotFleetRequestIds :: Lens' DescribeSpotFleetRequests [Text]
+ Network.AWS.EC2.DescribeSpotFleetRequests: dsfrrNextToken :: Lens' DescribeSpotFleetRequestsResponse (Maybe Text)
+ Network.AWS.EC2.DescribeSpotFleetRequests: dsfrrSpotFleetRequestConfigs :: Lens' DescribeSpotFleetRequestsResponse [SpotFleetRequestConfig]
+ Network.AWS.EC2.DescribeSpotFleetRequests: instance AWSRequest DescribeSpotFleetRequests
+ Network.AWS.EC2.DescribeSpotFleetRequests: instance Eq DescribeSpotFleetRequests
+ Network.AWS.EC2.DescribeSpotFleetRequests: instance Eq DescribeSpotFleetRequestsResponse
+ Network.AWS.EC2.DescribeSpotFleetRequests: instance FromXML DescribeSpotFleetRequestsResponse
+ Network.AWS.EC2.DescribeSpotFleetRequests: instance Ord DescribeSpotFleetRequests
+ Network.AWS.EC2.DescribeSpotFleetRequests: instance Read DescribeSpotFleetRequests
+ Network.AWS.EC2.DescribeSpotFleetRequests: instance Read DescribeSpotFleetRequestsResponse
+ Network.AWS.EC2.DescribeSpotFleetRequests: instance Show DescribeSpotFleetRequests
+ Network.AWS.EC2.DescribeSpotFleetRequests: instance Show DescribeSpotFleetRequestsResponse
+ Network.AWS.EC2.DescribeSpotFleetRequests: instance ToHeaders DescribeSpotFleetRequests
+ Network.AWS.EC2.DescribeSpotFleetRequests: instance ToPath DescribeSpotFleetRequests
+ Network.AWS.EC2.DescribeSpotFleetRequests: instance ToQuery DescribeSpotFleetRequests
+ Network.AWS.EC2.DescribeVpcEndpointServices: data DescribeVpcEndpointServices
+ Network.AWS.EC2.DescribeVpcEndpointServices: data DescribeVpcEndpointServicesResponse
+ Network.AWS.EC2.DescribeVpcEndpointServices: describeVpcEndpointServices :: DescribeVpcEndpointServices
+ Network.AWS.EC2.DescribeVpcEndpointServices: describeVpcEndpointServicesResponse :: DescribeVpcEndpointServicesResponse
+ Network.AWS.EC2.DescribeVpcEndpointServices: dvesDryRun :: Lens' DescribeVpcEndpointServices (Maybe Bool)
+ Network.AWS.EC2.DescribeVpcEndpointServices: dvesMaxResults :: Lens' DescribeVpcEndpointServices (Maybe Int)
+ Network.AWS.EC2.DescribeVpcEndpointServices: dvesNextToken :: Lens' DescribeVpcEndpointServices (Maybe Text)
+ Network.AWS.EC2.DescribeVpcEndpointServices: dvesrNextToken :: Lens' DescribeVpcEndpointServicesResponse (Maybe Text)
+ Network.AWS.EC2.DescribeVpcEndpointServices: dvesrServiceNames :: Lens' DescribeVpcEndpointServicesResponse [Text]
+ Network.AWS.EC2.DescribeVpcEndpointServices: instance AWSRequest DescribeVpcEndpointServices
+ Network.AWS.EC2.DescribeVpcEndpointServices: instance Eq DescribeVpcEndpointServices
+ Network.AWS.EC2.DescribeVpcEndpointServices: instance Eq DescribeVpcEndpointServicesResponse
+ Network.AWS.EC2.DescribeVpcEndpointServices: instance FromXML DescribeVpcEndpointServicesResponse
+ Network.AWS.EC2.DescribeVpcEndpointServices: instance Ord DescribeVpcEndpointServices
+ Network.AWS.EC2.DescribeVpcEndpointServices: instance Ord DescribeVpcEndpointServicesResponse
+ Network.AWS.EC2.DescribeVpcEndpointServices: instance Read DescribeVpcEndpointServices
+ Network.AWS.EC2.DescribeVpcEndpointServices: instance Read DescribeVpcEndpointServicesResponse
+ Network.AWS.EC2.DescribeVpcEndpointServices: instance Show DescribeVpcEndpointServices
+ Network.AWS.EC2.DescribeVpcEndpointServices: instance Show DescribeVpcEndpointServicesResponse
+ Network.AWS.EC2.DescribeVpcEndpointServices: instance ToHeaders DescribeVpcEndpointServices
+ Network.AWS.EC2.DescribeVpcEndpointServices: instance ToPath DescribeVpcEndpointServices
+ Network.AWS.EC2.DescribeVpcEndpointServices: instance ToQuery DescribeVpcEndpointServices
+ Network.AWS.EC2.DescribeVpcEndpoints: data DescribeVpcEndpoints
+ Network.AWS.EC2.DescribeVpcEndpoints: data DescribeVpcEndpointsResponse
+ Network.AWS.EC2.DescribeVpcEndpoints: describeVpcEndpoints :: DescribeVpcEndpoints
+ Network.AWS.EC2.DescribeVpcEndpoints: describeVpcEndpointsResponse :: DescribeVpcEndpointsResponse
+ Network.AWS.EC2.DescribeVpcEndpoints: dve1DryRun :: Lens' DescribeVpcEndpoints (Maybe Bool)
+ Network.AWS.EC2.DescribeVpcEndpoints: dve1Filters :: Lens' DescribeVpcEndpoints [Filter]
+ Network.AWS.EC2.DescribeVpcEndpoints: dve1MaxResults :: Lens' DescribeVpcEndpoints (Maybe Int)
+ Network.AWS.EC2.DescribeVpcEndpoints: dve1NextToken :: Lens' DescribeVpcEndpoints (Maybe Text)
+ Network.AWS.EC2.DescribeVpcEndpoints: dve1VpcEndpointIds :: Lens' DescribeVpcEndpoints [Text]
+ Network.AWS.EC2.DescribeVpcEndpoints: dverNextToken :: Lens' DescribeVpcEndpointsResponse (Maybe Text)
+ Network.AWS.EC2.DescribeVpcEndpoints: dverVpcEndpoints :: Lens' DescribeVpcEndpointsResponse [VpcEndpoint]
+ Network.AWS.EC2.DescribeVpcEndpoints: instance AWSRequest DescribeVpcEndpoints
+ Network.AWS.EC2.DescribeVpcEndpoints: instance Eq DescribeVpcEndpoints
+ Network.AWS.EC2.DescribeVpcEndpoints: instance Eq DescribeVpcEndpointsResponse
+ Network.AWS.EC2.DescribeVpcEndpoints: instance FromXML DescribeVpcEndpointsResponse
+ Network.AWS.EC2.DescribeVpcEndpoints: instance Read DescribeVpcEndpoints
+ Network.AWS.EC2.DescribeVpcEndpoints: instance Read DescribeVpcEndpointsResponse
+ Network.AWS.EC2.DescribeVpcEndpoints: instance Show DescribeVpcEndpoints
+ Network.AWS.EC2.DescribeVpcEndpoints: instance Show DescribeVpcEndpointsResponse
+ Network.AWS.EC2.DescribeVpcEndpoints: instance ToHeaders DescribeVpcEndpoints
+ Network.AWS.EC2.DescribeVpcEndpoints: instance ToPath DescribeVpcEndpoints
+ Network.AWS.EC2.DescribeVpcEndpoints: instance ToQuery DescribeVpcEndpoints
+ Network.AWS.EC2.ImportImage: data ImportImage
+ Network.AWS.EC2.ImportImage: data ImportImageResponse
+ Network.AWS.EC2.ImportImage: ii1Architecture :: Lens' ImportImage (Maybe Text)
+ Network.AWS.EC2.ImportImage: ii1ClientData :: Lens' ImportImage (Maybe ClientData)
+ Network.AWS.EC2.ImportImage: ii1ClientToken :: Lens' ImportImage (Maybe Text)
+ Network.AWS.EC2.ImportImage: ii1Description :: Lens' ImportImage (Maybe Text)
+ Network.AWS.EC2.ImportImage: ii1DiskContainers :: Lens' ImportImage [ImageDiskContainer]
+ Network.AWS.EC2.ImportImage: ii1DryRun :: Lens' ImportImage (Maybe Bool)
+ Network.AWS.EC2.ImportImage: ii1Hypervisor :: Lens' ImportImage (Maybe Text)
+ Network.AWS.EC2.ImportImage: ii1LicenseType :: Lens' ImportImage (Maybe Text)
+ Network.AWS.EC2.ImportImage: ii1Platform :: Lens' ImportImage (Maybe Text)
+ Network.AWS.EC2.ImportImage: ii1RoleName :: Lens' ImportImage (Maybe Text)
+ Network.AWS.EC2.ImportImage: iirArchitecture :: Lens' ImportImageResponse (Maybe Text)
+ Network.AWS.EC2.ImportImage: iirDescription :: Lens' ImportImageResponse (Maybe Text)
+ Network.AWS.EC2.ImportImage: iirHypervisor :: Lens' ImportImageResponse (Maybe Text)
+ Network.AWS.EC2.ImportImage: iirImageId :: Lens' ImportImageResponse (Maybe Text)
+ Network.AWS.EC2.ImportImage: iirImportTaskId :: Lens' ImportImageResponse (Maybe Text)
+ Network.AWS.EC2.ImportImage: iirLicenseType :: Lens' ImportImageResponse (Maybe Text)
+ Network.AWS.EC2.ImportImage: iirPlatform :: Lens' ImportImageResponse (Maybe Text)
+ Network.AWS.EC2.ImportImage: iirProgress :: Lens' ImportImageResponse (Maybe Text)
+ Network.AWS.EC2.ImportImage: iirSnapshotDetails :: Lens' ImportImageResponse [SnapshotDetail]
+ Network.AWS.EC2.ImportImage: iirStatus :: Lens' ImportImageResponse (Maybe Text)
+ Network.AWS.EC2.ImportImage: iirStatusMessage :: Lens' ImportImageResponse (Maybe Text)
+ Network.AWS.EC2.ImportImage: importImage :: ImportImage
+ Network.AWS.EC2.ImportImage: importImageResponse :: ImportImageResponse
+ Network.AWS.EC2.ImportImage: instance AWSRequest ImportImage
+ Network.AWS.EC2.ImportImage: instance Eq ImportImage
+ Network.AWS.EC2.ImportImage: instance Eq ImportImageResponse
+ Network.AWS.EC2.ImportImage: instance FromXML ImportImageResponse
+ Network.AWS.EC2.ImportImage: instance Read ImportImage
+ Network.AWS.EC2.ImportImage: instance Read ImportImageResponse
+ Network.AWS.EC2.ImportImage: instance Show ImportImage
+ Network.AWS.EC2.ImportImage: instance Show ImportImageResponse
+ Network.AWS.EC2.ImportImage: instance ToHeaders ImportImage
+ Network.AWS.EC2.ImportImage: instance ToPath ImportImage
+ Network.AWS.EC2.ImportImage: instance ToQuery ImportImage
+ Network.AWS.EC2.ImportSnapshot: data ImportSnapshot
+ Network.AWS.EC2.ImportSnapshot: data ImportSnapshotResponse
+ Network.AWS.EC2.ImportSnapshot: importSnapshot :: ImportSnapshot
+ Network.AWS.EC2.ImportSnapshot: importSnapshotResponse :: ImportSnapshotResponse
+ Network.AWS.EC2.ImportSnapshot: instance AWSRequest ImportSnapshot
+ Network.AWS.EC2.ImportSnapshot: instance Eq ImportSnapshot
+ Network.AWS.EC2.ImportSnapshot: instance Eq ImportSnapshotResponse
+ Network.AWS.EC2.ImportSnapshot: instance FromXML ImportSnapshotResponse
+ Network.AWS.EC2.ImportSnapshot: instance Read ImportSnapshot
+ Network.AWS.EC2.ImportSnapshot: instance Read ImportSnapshotResponse
+ Network.AWS.EC2.ImportSnapshot: instance Show ImportSnapshot
+ Network.AWS.EC2.ImportSnapshot: instance Show ImportSnapshotResponse
+ Network.AWS.EC2.ImportSnapshot: instance ToHeaders ImportSnapshot
+ Network.AWS.EC2.ImportSnapshot: instance ToPath ImportSnapshot
+ Network.AWS.EC2.ImportSnapshot: instance ToQuery ImportSnapshot
+ Network.AWS.EC2.ImportSnapshot: isClientData :: Lens' ImportSnapshot (Maybe ClientData)
+ Network.AWS.EC2.ImportSnapshot: isClientToken :: Lens' ImportSnapshot (Maybe Text)
+ Network.AWS.EC2.ImportSnapshot: isDescription :: Lens' ImportSnapshot (Maybe Text)
+ Network.AWS.EC2.ImportSnapshot: isDiskContainer :: Lens' ImportSnapshot (Maybe SnapshotDiskContainer)
+ Network.AWS.EC2.ImportSnapshot: isDryRun :: Lens' ImportSnapshot (Maybe Bool)
+ Network.AWS.EC2.ImportSnapshot: isRoleName :: Lens' ImportSnapshot (Maybe Text)
+ Network.AWS.EC2.ImportSnapshot: isrDescription :: Lens' ImportSnapshotResponse (Maybe Text)
+ Network.AWS.EC2.ImportSnapshot: isrImportTaskId :: Lens' ImportSnapshotResponse (Maybe Text)
+ Network.AWS.EC2.ImportSnapshot: isrSnapshotTaskDetail :: Lens' ImportSnapshotResponse (Maybe SnapshotTaskDetail)
+ Network.AWS.EC2.ModifyVpcEndpoint: data ModifyVpcEndpoint
+ Network.AWS.EC2.ModifyVpcEndpoint: data ModifyVpcEndpointResponse
+ Network.AWS.EC2.ModifyVpcEndpoint: instance AWSRequest ModifyVpcEndpoint
+ Network.AWS.EC2.ModifyVpcEndpoint: instance Eq ModifyVpcEndpoint
+ Network.AWS.EC2.ModifyVpcEndpoint: instance Eq ModifyVpcEndpointResponse
+ Network.AWS.EC2.ModifyVpcEndpoint: instance FromXML ModifyVpcEndpointResponse
+ Network.AWS.EC2.ModifyVpcEndpoint: instance Ord ModifyVpcEndpoint
+ Network.AWS.EC2.ModifyVpcEndpoint: instance Ord ModifyVpcEndpointResponse
+ Network.AWS.EC2.ModifyVpcEndpoint: instance Read ModifyVpcEndpoint
+ Network.AWS.EC2.ModifyVpcEndpoint: instance Read ModifyVpcEndpointResponse
+ Network.AWS.EC2.ModifyVpcEndpoint: instance Show ModifyVpcEndpoint
+ Network.AWS.EC2.ModifyVpcEndpoint: instance Show ModifyVpcEndpointResponse
+ Network.AWS.EC2.ModifyVpcEndpoint: instance ToHeaders ModifyVpcEndpoint
+ Network.AWS.EC2.ModifyVpcEndpoint: instance ToPath ModifyVpcEndpoint
+ Network.AWS.EC2.ModifyVpcEndpoint: instance ToQuery ModifyVpcEndpoint
+ Network.AWS.EC2.ModifyVpcEndpoint: modifyVpcEndpoint :: Text -> ModifyVpcEndpoint
+ Network.AWS.EC2.ModifyVpcEndpoint: modifyVpcEndpointResponse :: ModifyVpcEndpointResponse
+ Network.AWS.EC2.ModifyVpcEndpoint: mveAddRouteTableIds :: Lens' ModifyVpcEndpoint [Text]
+ Network.AWS.EC2.ModifyVpcEndpoint: mveDryRun :: Lens' ModifyVpcEndpoint (Maybe Bool)
+ Network.AWS.EC2.ModifyVpcEndpoint: mvePolicyDocument :: Lens' ModifyVpcEndpoint (Maybe Text)
+ Network.AWS.EC2.ModifyVpcEndpoint: mveRemoveRouteTableIds :: Lens' ModifyVpcEndpoint [Text]
+ Network.AWS.EC2.ModifyVpcEndpoint: mveResetPolicy :: Lens' ModifyVpcEndpoint (Maybe Bool)
+ Network.AWS.EC2.ModifyVpcEndpoint: mveVpcEndpointId :: Lens' ModifyVpcEndpoint Text
+ Network.AWS.EC2.ModifyVpcEndpoint: mverReturn :: Lens' ModifyVpcEndpointResponse (Maybe Bool)
+ Network.AWS.EC2.MoveAddressToVpc: data MoveAddressToVpc
+ Network.AWS.EC2.MoveAddressToVpc: data MoveAddressToVpcResponse
+ Network.AWS.EC2.MoveAddressToVpc: instance AWSRequest MoveAddressToVpc
+ Network.AWS.EC2.MoveAddressToVpc: instance Eq MoveAddressToVpc
+ Network.AWS.EC2.MoveAddressToVpc: instance Eq MoveAddressToVpcResponse
+ Network.AWS.EC2.MoveAddressToVpc: instance FromXML MoveAddressToVpcResponse
+ Network.AWS.EC2.MoveAddressToVpc: instance Ord MoveAddressToVpc
+ Network.AWS.EC2.MoveAddressToVpc: instance Read MoveAddressToVpc
+ Network.AWS.EC2.MoveAddressToVpc: instance Read MoveAddressToVpcResponse
+ Network.AWS.EC2.MoveAddressToVpc: instance Show MoveAddressToVpc
+ Network.AWS.EC2.MoveAddressToVpc: instance Show MoveAddressToVpcResponse
+ Network.AWS.EC2.MoveAddressToVpc: instance ToHeaders MoveAddressToVpc
+ Network.AWS.EC2.MoveAddressToVpc: instance ToPath MoveAddressToVpc
+ Network.AWS.EC2.MoveAddressToVpc: instance ToQuery MoveAddressToVpc
+ Network.AWS.EC2.MoveAddressToVpc: matvDryRun :: Lens' MoveAddressToVpc (Maybe Bool)
+ Network.AWS.EC2.MoveAddressToVpc: matvPublicIp :: Lens' MoveAddressToVpc Text
+ Network.AWS.EC2.MoveAddressToVpc: matvrAllocationId :: Lens' MoveAddressToVpcResponse (Maybe Text)
+ Network.AWS.EC2.MoveAddressToVpc: matvrStatus :: Lens' MoveAddressToVpcResponse (Maybe AddressStatus)
+ Network.AWS.EC2.MoveAddressToVpc: moveAddressToVpc :: Text -> MoveAddressToVpc
+ Network.AWS.EC2.MoveAddressToVpc: moveAddressToVpcResponse :: MoveAddressToVpcResponse
+ Network.AWS.EC2.RequestSpotFleet: data RequestSpotFleet
+ Network.AWS.EC2.RequestSpotFleet: data RequestSpotFleetResponse
+ Network.AWS.EC2.RequestSpotFleet: instance AWSRequest RequestSpotFleet
+ Network.AWS.EC2.RequestSpotFleet: instance Eq RequestSpotFleet
+ Network.AWS.EC2.RequestSpotFleet: instance Eq RequestSpotFleetResponse
+ Network.AWS.EC2.RequestSpotFleet: instance FromXML RequestSpotFleetResponse
+ Network.AWS.EC2.RequestSpotFleet: instance IsString RequestSpotFleetResponse
+ Network.AWS.EC2.RequestSpotFleet: instance Monoid RequestSpotFleetResponse
+ Network.AWS.EC2.RequestSpotFleet: instance Ord RequestSpotFleetResponse
+ Network.AWS.EC2.RequestSpotFleet: instance Read RequestSpotFleet
+ Network.AWS.EC2.RequestSpotFleet: instance Read RequestSpotFleetResponse
+ Network.AWS.EC2.RequestSpotFleet: instance Show RequestSpotFleet
+ Network.AWS.EC2.RequestSpotFleet: instance Show RequestSpotFleetResponse
+ Network.AWS.EC2.RequestSpotFleet: instance ToHeaders RequestSpotFleet
+ Network.AWS.EC2.RequestSpotFleet: instance ToPath RequestSpotFleet
+ Network.AWS.EC2.RequestSpotFleet: instance ToQuery RequestSpotFleet
+ Network.AWS.EC2.RequestSpotFleet: requestSpotFleet :: SpotFleetRequestConfigData -> RequestSpotFleet
+ Network.AWS.EC2.RequestSpotFleet: requestSpotFleetResponse :: Text -> RequestSpotFleetResponse
+ Network.AWS.EC2.RequestSpotFleet: rsfDryRun :: Lens' RequestSpotFleet (Maybe Bool)
+ Network.AWS.EC2.RequestSpotFleet: rsfSpotFleetRequestConfig :: Lens' RequestSpotFleet SpotFleetRequestConfigData
+ Network.AWS.EC2.RequestSpotFleet: rsfrSpotFleetRequestId :: Lens' RequestSpotFleetResponse Text
+ Network.AWS.EC2.RequestSpotInstances: rsiClientToken :: Lens' RequestSpotInstances (Maybe Text)
+ Network.AWS.EC2.RestoreAddressToClassic: data RestoreAddressToClassic
+ Network.AWS.EC2.RestoreAddressToClassic: data RestoreAddressToClassicResponse
+ Network.AWS.EC2.RestoreAddressToClassic: instance AWSRequest RestoreAddressToClassic
+ Network.AWS.EC2.RestoreAddressToClassic: instance Eq RestoreAddressToClassic
+ Network.AWS.EC2.RestoreAddressToClassic: instance Eq RestoreAddressToClassicResponse
+ Network.AWS.EC2.RestoreAddressToClassic: instance FromXML RestoreAddressToClassicResponse
+ Network.AWS.EC2.RestoreAddressToClassic: instance Ord RestoreAddressToClassic
+ Network.AWS.EC2.RestoreAddressToClassic: instance Read RestoreAddressToClassic
+ Network.AWS.EC2.RestoreAddressToClassic: instance Read RestoreAddressToClassicResponse
+ Network.AWS.EC2.RestoreAddressToClassic: instance Show RestoreAddressToClassic
+ Network.AWS.EC2.RestoreAddressToClassic: instance Show RestoreAddressToClassicResponse
+ Network.AWS.EC2.RestoreAddressToClassic: instance ToHeaders RestoreAddressToClassic
+ Network.AWS.EC2.RestoreAddressToClassic: instance ToPath RestoreAddressToClassic
+ Network.AWS.EC2.RestoreAddressToClassic: instance ToQuery RestoreAddressToClassic
+ Network.AWS.EC2.RestoreAddressToClassic: ratcDryRun :: Lens' RestoreAddressToClassic (Maybe Bool)
+ Network.AWS.EC2.RestoreAddressToClassic: ratcPublicIp :: Lens' RestoreAddressToClassic Text
+ Network.AWS.EC2.RestoreAddressToClassic: ratcrPublicIp :: Lens' RestoreAddressToClassicResponse (Maybe Text)
+ Network.AWS.EC2.RestoreAddressToClassic: ratcrStatus :: Lens' RestoreAddressToClassicResponse (Maybe AddressStatus)
+ Network.AWS.EC2.RestoreAddressToClassic: restoreAddressToClassic :: Text -> RestoreAddressToClassic
+ Network.AWS.EC2.RestoreAddressToClassic: restoreAddressToClassicResponse :: RestoreAddressToClassicResponse
+ Network.AWS.EC2.Types: Attached :: AttachmentStatus
+ Network.AWS.EC2.Types: Cancelled :: BatchState
+ Network.AWS.EC2.Types: CancelledRunning :: BatchState
+ Network.AWS.EC2.Types: CancelledTerminating :: BatchState
+ Network.AWS.EC2.Types: Deleted :: State
+ Network.AWS.EC2.Types: Deleting :: State
+ Network.AWS.EC2.Types: Detached :: AttachmentStatus
+ Network.AWS.EC2.Types: FleetRequestChange :: EventType
+ Network.AWS.EC2.Types: FleetRequestIdDoesNotExist :: CancelBatchErrorCode
+ Network.AWS.EC2.Types: FleetRequestIdMalformed :: CancelBatchErrorCode
+ Network.AWS.EC2.Types: FleetRequestNotInCancellableState :: CancelBatchErrorCode
+ Network.AWS.EC2.Types: ISError :: ImageState
+ Network.AWS.EC2.Types: ISFailed :: ImageState
+ Network.AWS.EC2.Types: ISInvalid :: ImageState
+ Network.AWS.EC2.Types: ISPending :: ImageState
+ Network.AWS.EC2.Types: ISTransient :: ImageState
+ Network.AWS.EC2.Types: ImageSriovNetSupport :: ImageAttributeName
+ Network.AWS.EC2.Types: InClassic :: AddressStatus
+ Network.AWS.EC2.Types: InVpc :: AddressStatus
+ Network.AWS.EC2.Types: InstanceChange :: EventType
+ Network.AWS.EC2.Types: MSDisabling :: MonitoringState
+ Network.AWS.EC2.Types: MoveInProgress :: AddressStatus
+ Network.AWS.EC2.Types: MovingToVpc :: MoveStatus
+ Network.AWS.EC2.Types: NISAttaching :: NetworkInterfaceStatus
+ Network.AWS.EC2.Types: NISAvailable :: NetworkInterfaceStatus
+ Network.AWS.EC2.Types: NISDetaching :: NetworkInterfaceStatus
+ Network.AWS.EC2.Types: NISInUse :: NetworkInterfaceStatus
+ Network.AWS.EC2.Types: RSActive :: RouteState
+ Network.AWS.EC2.Types: RSBlackhole :: RouteState
+ Network.AWS.EC2.Types: RestoringToClassic :: MoveStatus
+ Network.AWS.EC2.Types: SSCompleted :: SnapshotState
+ Network.AWS.EC2.Types: SSError :: SnapshotState
+ Network.AWS.EC2.Types: STFailed :: StatusType
+ Network.AWS.EC2.Types: STInsufficientData :: StatusType
+ Network.AWS.EC2.Types: STPassed :: StatusType
+ Network.AWS.EC2.Types: Submitted :: BatchState
+ Network.AWS.EC2.Types: SubnetStateAvailable :: SubnetState
+ Network.AWS.EC2.Types: SubnetStatePending :: SubnetState
+ Network.AWS.EC2.Types: UnexpectedError :: CancelBatchErrorCode
+ Network.AWS.EC2.Types: activeInstance :: ActiveInstance
+ Network.AWS.EC2.Types: aiInstanceId :: Lens' ActiveInstance (Maybe Text)
+ Network.AWS.EC2.Types: aiInstanceType :: Lens' ActiveInstance (Maybe Text)
+ Network.AWS.EC2.Types: aiSpotInstanceRequestId :: Lens' ActiveInstance (Maybe Text)
+ Network.AWS.EC2.Types: cancelSpotFleetRequestsError :: CancelBatchErrorCode -> Text -> CancelSpotFleetRequestsError
+ Network.AWS.EC2.Types: cancelSpotFleetRequestsErrorItem :: Text -> CancelSpotFleetRequestsError -> CancelSpotFleetRequestsErrorItem
+ Network.AWS.EC2.Types: cancelSpotFleetRequestsSuccessItem :: Text -> BatchState -> BatchState -> CancelSpotFleetRequestsSuccessItem
+ Network.AWS.EC2.Types: cdComment :: Lens' ClientData (Maybe Text)
+ Network.AWS.EC2.Types: cdUploadEnd :: Lens' ClientData (Maybe UTCTime)
+ Network.AWS.EC2.Types: cdUploadSize :: Lens' ClientData (Maybe Double)
+ Network.AWS.EC2.Types: cdUploadStart :: Lens' ClientData (Maybe UTCTime)
+ Network.AWS.EC2.Types: clientData :: ClientData
+ Network.AWS.EC2.Types: csfreCode :: Lens' CancelSpotFleetRequestsError CancelBatchErrorCode
+ Network.AWS.EC2.Types: csfreMessage :: Lens' CancelSpotFleetRequestsError Text
+ Network.AWS.EC2.Types: csfreiError :: Lens' CancelSpotFleetRequestsErrorItem CancelSpotFleetRequestsError
+ Network.AWS.EC2.Types: csfreiSpotFleetRequestId :: Lens' CancelSpotFleetRequestsErrorItem Text
+ Network.AWS.EC2.Types: csfrsiCurrentSpotFleetRequestState :: Lens' CancelSpotFleetRequestsSuccessItem BatchState
+ Network.AWS.EC2.Types: csfrsiPreviousSpotFleetRequestState :: Lens' CancelSpotFleetRequestsSuccessItem BatchState
+ Network.AWS.EC2.Types: csfrsiSpotFleetRequestId :: Lens' CancelSpotFleetRequestsSuccessItem Text
+ Network.AWS.EC2.Types: data ActiveInstance
+ Network.AWS.EC2.Types: data AddressStatus
+ Network.AWS.EC2.Types: data BatchState
+ Network.AWS.EC2.Types: data CancelBatchErrorCode
+ Network.AWS.EC2.Types: data CancelSpotFleetRequestsError
+ Network.AWS.EC2.Types: data CancelSpotFleetRequestsErrorItem
+ Network.AWS.EC2.Types: data CancelSpotFleetRequestsSuccessItem
+ Network.AWS.EC2.Types: data ClientData
+ Network.AWS.EC2.Types: data EventInformation
+ Network.AWS.EC2.Types: data EventType
+ Network.AWS.EC2.Types: data HistoryRecord
+ Network.AWS.EC2.Types: data ImageDiskContainer
+ Network.AWS.EC2.Types: data ImportImageTask
+ Network.AWS.EC2.Types: data ImportSnapshotTask
+ Network.AWS.EC2.Types: data MoveStatus
+ Network.AWS.EC2.Types: data MovingAddressStatus
+ Network.AWS.EC2.Types: data PrefixList
+ Network.AWS.EC2.Types: data PrefixListId
+ Network.AWS.EC2.Types: data SnapshotDetail
+ Network.AWS.EC2.Types: data SnapshotDiskContainer
+ Network.AWS.EC2.Types: data SnapshotTaskDetail
+ Network.AWS.EC2.Types: data SpotFleetRequestConfig
+ Network.AWS.EC2.Types: data SpotFleetRequestConfigData
+ Network.AWS.EC2.Types: data State
+ Network.AWS.EC2.Types: data UnsuccessfulItem
+ Network.AWS.EC2.Types: data UnsuccessfulItemError
+ Network.AWS.EC2.Types: data UserBucket
+ Network.AWS.EC2.Types: data UserBucketDetails
+ Network.AWS.EC2.Types: data VpcEndpoint
+ Network.AWS.EC2.Types: eiEventDescription :: Lens' EventInformation (Maybe Text)
+ Network.AWS.EC2.Types: eiEventSubType :: Lens' EventInformation (Maybe Text)
+ Network.AWS.EC2.Types: eiInstanceId :: Lens' EventInformation (Maybe Text)
+ Network.AWS.EC2.Types: eventInformation :: EventInformation
+ Network.AWS.EC2.Types: historyRecord :: UTCTime -> EventType -> EventInformation -> HistoryRecord
+ Network.AWS.EC2.Types: hrEventInformation :: Lens' HistoryRecord EventInformation
+ Network.AWS.EC2.Types: hrEventType :: Lens' HistoryRecord EventType
+ Network.AWS.EC2.Types: hrTimestamp :: Lens' HistoryRecord UTCTime
+ Network.AWS.EC2.Types: idcDescription :: Lens' ImageDiskContainer (Maybe Text)
+ Network.AWS.EC2.Types: idcDeviceName :: Lens' ImageDiskContainer (Maybe Text)
+ Network.AWS.EC2.Types: idcFormat :: Lens' ImageDiskContainer (Maybe Text)
+ Network.AWS.EC2.Types: idcSnapshotId :: Lens' ImageDiskContainer (Maybe Text)
+ Network.AWS.EC2.Types: idcUrl :: Lens' ImageDiskContainer (Maybe Text)
+ Network.AWS.EC2.Types: idcUserBucket :: Lens' ImageDiskContainer (Maybe UserBucket)
+ Network.AWS.EC2.Types: iitArchitecture :: Lens' ImportImageTask (Maybe Text)
+ Network.AWS.EC2.Types: iitDescription :: Lens' ImportImageTask (Maybe Text)
+ Network.AWS.EC2.Types: iitHypervisor :: Lens' ImportImageTask (Maybe Text)
+ Network.AWS.EC2.Types: iitImageId :: Lens' ImportImageTask (Maybe Text)
+ Network.AWS.EC2.Types: iitImportTaskId :: Lens' ImportImageTask (Maybe Text)
+ Network.AWS.EC2.Types: iitLicenseType :: Lens' ImportImageTask (Maybe Text)
+ Network.AWS.EC2.Types: iitPlatform :: Lens' ImportImageTask (Maybe Text)
+ Network.AWS.EC2.Types: iitProgress :: Lens' ImportImageTask (Maybe Text)
+ Network.AWS.EC2.Types: iitSnapshotDetails :: Lens' ImportImageTask [SnapshotDetail]
+ Network.AWS.EC2.Types: iitStatus :: Lens' ImportImageTask (Maybe Text)
+ Network.AWS.EC2.Types: iitStatusMessage :: Lens' ImportImageTask (Maybe Text)
+ Network.AWS.EC2.Types: imageDiskContainer :: ImageDiskContainer
+ Network.AWS.EC2.Types: importImageTask :: ImportImageTask
+ Network.AWS.EC2.Types: importSnapshotTask :: ImportSnapshotTask
+ Network.AWS.EC2.Types: instance Constructor C1_0AddressStatus
+ Network.AWS.EC2.Types: instance Constructor C1_0BatchState
+ Network.AWS.EC2.Types: instance Constructor C1_0CancelBatchErrorCode
+ Network.AWS.EC2.Types: instance Constructor C1_0EventType
+ Network.AWS.EC2.Types: instance Constructor C1_0MoveStatus
+ Network.AWS.EC2.Types: instance Constructor C1_0State
+ Network.AWS.EC2.Types: instance Constructor C1_1AddressStatus
+ Network.AWS.EC2.Types: instance Constructor C1_1BatchState
+ Network.AWS.EC2.Types: instance Constructor C1_1CancelBatchErrorCode
+ Network.AWS.EC2.Types: instance Constructor C1_1EventType
+ Network.AWS.EC2.Types: instance Constructor C1_1MoveStatus
+ Network.AWS.EC2.Types: instance Constructor C1_1State
+ Network.AWS.EC2.Types: instance Constructor C1_2AddressStatus
+ Network.AWS.EC2.Types: instance Constructor C1_2BatchState
+ Network.AWS.EC2.Types: instance Constructor C1_2CancelBatchErrorCode
+ Network.AWS.EC2.Types: instance Constructor C1_2EventType
+ Network.AWS.EC2.Types: instance Constructor C1_2ImageState
+ Network.AWS.EC2.Types: instance Constructor C1_2State
+ Network.AWS.EC2.Types: instance Constructor C1_3BatchState
+ Network.AWS.EC2.Types: instance Constructor C1_3CancelBatchErrorCode
+ Network.AWS.EC2.Types: instance Constructor C1_3ImageState
+ Network.AWS.EC2.Types: instance Constructor C1_3MonitoringState
+ Network.AWS.EC2.Types: instance Constructor C1_3State
+ Network.AWS.EC2.Types: instance Constructor C1_4BatchState
+ Network.AWS.EC2.Types: instance Constructor C1_4ImageState
+ Network.AWS.EC2.Types: instance Constructor C1_5BatchState
+ Network.AWS.EC2.Types: instance Constructor C1_5ImageState
+ Network.AWS.EC2.Types: instance Constructor C1_6ImageAttributeName
+ Network.AWS.EC2.Types: instance Constructor C1_6ImageState
+ Network.AWS.EC2.Types: instance Datatype D1AddressStatus
+ Network.AWS.EC2.Types: instance Datatype D1BatchState
+ Network.AWS.EC2.Types: instance Datatype D1CancelBatchErrorCode
+ Network.AWS.EC2.Types: instance Datatype D1EventType
+ Network.AWS.EC2.Types: instance Datatype D1MoveStatus
+ Network.AWS.EC2.Types: instance Datatype D1State
+ Network.AWS.EC2.Types: instance Enum AddressStatus
+ Network.AWS.EC2.Types: instance Enum BatchState
+ Network.AWS.EC2.Types: instance Enum CancelBatchErrorCode
+ Network.AWS.EC2.Types: instance Enum EventType
+ Network.AWS.EC2.Types: instance Enum MoveStatus
+ Network.AWS.EC2.Types: instance Enum State
+ Network.AWS.EC2.Types: instance Eq ActiveInstance
+ Network.AWS.EC2.Types: instance Eq AddressStatus
+ Network.AWS.EC2.Types: instance Eq BatchState
+ Network.AWS.EC2.Types: instance Eq CancelBatchErrorCode
+ Network.AWS.EC2.Types: instance Eq CancelSpotFleetRequestsError
+ Network.AWS.EC2.Types: instance Eq CancelSpotFleetRequestsErrorItem
+ Network.AWS.EC2.Types: instance Eq CancelSpotFleetRequestsSuccessItem
+ Network.AWS.EC2.Types: instance Eq ClientData
+ Network.AWS.EC2.Types: instance Eq EventInformation
+ Network.AWS.EC2.Types: instance Eq EventType
+ Network.AWS.EC2.Types: instance Eq HistoryRecord
+ Network.AWS.EC2.Types: instance Eq ImageDiskContainer
+ Network.AWS.EC2.Types: instance Eq ImportImageTask
+ Network.AWS.EC2.Types: instance Eq ImportSnapshotTask
+ Network.AWS.EC2.Types: instance Eq MoveStatus
+ Network.AWS.EC2.Types: instance Eq MovingAddressStatus
+ Network.AWS.EC2.Types: instance Eq PrefixList
+ Network.AWS.EC2.Types: instance Eq PrefixListId
+ Network.AWS.EC2.Types: instance Eq SnapshotDetail
+ Network.AWS.EC2.Types: instance Eq SnapshotDiskContainer
+ Network.AWS.EC2.Types: instance Eq SnapshotTaskDetail
+ Network.AWS.EC2.Types: instance Eq SpotFleetRequestConfig
+ Network.AWS.EC2.Types: instance Eq SpotFleetRequestConfigData
+ Network.AWS.EC2.Types: instance Eq State
+ Network.AWS.EC2.Types: instance Eq UnsuccessfulItem
+ Network.AWS.EC2.Types: instance Eq UnsuccessfulItemError
+ Network.AWS.EC2.Types: instance Eq UserBucket
+ Network.AWS.EC2.Types: instance Eq UserBucketDetails
+ Network.AWS.EC2.Types: instance Eq VpcEndpoint
+ Network.AWS.EC2.Types: instance FromText AddressStatus
+ Network.AWS.EC2.Types: instance FromText BatchState
+ Network.AWS.EC2.Types: instance FromText CancelBatchErrorCode
+ Network.AWS.EC2.Types: instance FromText EventType
+ Network.AWS.EC2.Types: instance FromText MoveStatus
+ Network.AWS.EC2.Types: instance FromText State
+ Network.AWS.EC2.Types: instance FromXML ActiveInstance
+ Network.AWS.EC2.Types: instance FromXML AddressStatus
+ Network.AWS.EC2.Types: instance FromXML BatchState
+ Network.AWS.EC2.Types: instance FromXML CancelBatchErrorCode
+ Network.AWS.EC2.Types: instance FromXML CancelSpotFleetRequestsError
+ Network.AWS.EC2.Types: instance FromXML CancelSpotFleetRequestsErrorItem
+ Network.AWS.EC2.Types: instance FromXML CancelSpotFleetRequestsSuccessItem
+ Network.AWS.EC2.Types: instance FromXML ClientData
+ Network.AWS.EC2.Types: instance FromXML EventInformation
+ Network.AWS.EC2.Types: instance FromXML EventType
+ Network.AWS.EC2.Types: instance FromXML HistoryRecord
+ Network.AWS.EC2.Types: instance FromXML ImageDiskContainer
+ Network.AWS.EC2.Types: instance FromXML ImportImageTask
+ Network.AWS.EC2.Types: instance FromXML ImportSnapshotTask
+ Network.AWS.EC2.Types: instance FromXML MoveStatus
+ Network.AWS.EC2.Types: instance FromXML MovingAddressStatus
+ Network.AWS.EC2.Types: instance FromXML PrefixList
+ Network.AWS.EC2.Types: instance FromXML PrefixListId
+ Network.AWS.EC2.Types: instance FromXML SnapshotDetail
+ Network.AWS.EC2.Types: instance FromXML SnapshotDiskContainer
+ Network.AWS.EC2.Types: instance FromXML SnapshotTaskDetail
+ Network.AWS.EC2.Types: instance FromXML SpotFleetRequestConfig
+ Network.AWS.EC2.Types: instance FromXML SpotFleetRequestConfigData
+ Network.AWS.EC2.Types: instance FromXML State
+ Network.AWS.EC2.Types: instance FromXML UnsuccessfulItem
+ Network.AWS.EC2.Types: instance FromXML UnsuccessfulItemError
+ Network.AWS.EC2.Types: instance FromXML UserBucket
+ Network.AWS.EC2.Types: instance FromXML UserBucketDetails
+ Network.AWS.EC2.Types: instance FromXML VpcEndpoint
+ Network.AWS.EC2.Types: instance Generic AddressStatus
+ Network.AWS.EC2.Types: instance Generic BatchState
+ Network.AWS.EC2.Types: instance Generic CancelBatchErrorCode
+ Network.AWS.EC2.Types: instance Generic EventType
+ Network.AWS.EC2.Types: instance Generic MoveStatus
+ Network.AWS.EC2.Types: instance Generic State
+ Network.AWS.EC2.Types: instance Hashable AddressStatus
+ Network.AWS.EC2.Types: instance Hashable BatchState
+ Network.AWS.EC2.Types: instance Hashable CancelBatchErrorCode
+ Network.AWS.EC2.Types: instance Hashable EventType
+ Network.AWS.EC2.Types: instance Hashable MoveStatus
+ Network.AWS.EC2.Types: instance Hashable State
+ Network.AWS.EC2.Types: instance Monoid PrefixListId
+ Network.AWS.EC2.Types: instance Ord ActiveInstance
+ Network.AWS.EC2.Types: instance Ord AddressStatus
+ Network.AWS.EC2.Types: instance Ord BatchState
+ Network.AWS.EC2.Types: instance Ord CancelBatchErrorCode
+ Network.AWS.EC2.Types: instance Ord ClientData
+ Network.AWS.EC2.Types: instance Ord EventInformation
+ Network.AWS.EC2.Types: instance Ord EventType
+ Network.AWS.EC2.Types: instance Ord MoveStatus
+ Network.AWS.EC2.Types: instance Ord PrefixList
+ Network.AWS.EC2.Types: instance Ord PrefixListId
+ Network.AWS.EC2.Types: instance Ord State
+ Network.AWS.EC2.Types: instance Ord UnsuccessfulItemError
+ Network.AWS.EC2.Types: instance Ord UserBucket
+ Network.AWS.EC2.Types: instance Ord UserBucketDetails
+ Network.AWS.EC2.Types: instance Read ActiveInstance
+ Network.AWS.EC2.Types: instance Read AddressStatus
+ Network.AWS.EC2.Types: instance Read BatchState
+ Network.AWS.EC2.Types: instance Read CancelBatchErrorCode
+ Network.AWS.EC2.Types: instance Read CancelSpotFleetRequestsError
+ Network.AWS.EC2.Types: instance Read CancelSpotFleetRequestsErrorItem
+ Network.AWS.EC2.Types: instance Read CancelSpotFleetRequestsSuccessItem
+ Network.AWS.EC2.Types: instance Read ClientData
+ Network.AWS.EC2.Types: instance Read EventInformation
+ Network.AWS.EC2.Types: instance Read EventType
+ Network.AWS.EC2.Types: instance Read HistoryRecord
+ Network.AWS.EC2.Types: instance Read ImageDiskContainer
+ Network.AWS.EC2.Types: instance Read ImportImageTask
+ Network.AWS.EC2.Types: instance Read ImportSnapshotTask
+ Network.AWS.EC2.Types: instance Read MoveStatus
+ Network.AWS.EC2.Types: instance Read MovingAddressStatus
+ Network.AWS.EC2.Types: instance Read PrefixList
+ Network.AWS.EC2.Types: instance Read PrefixListId
+ Network.AWS.EC2.Types: instance Read SnapshotDetail
+ Network.AWS.EC2.Types: instance Read SnapshotDiskContainer
+ Network.AWS.EC2.Types: instance Read SnapshotTaskDetail
+ Network.AWS.EC2.Types: instance Read SpotFleetRequestConfig
+ Network.AWS.EC2.Types: instance Read SpotFleetRequestConfigData
+ Network.AWS.EC2.Types: instance Read State
+ Network.AWS.EC2.Types: instance Read UnsuccessfulItem
+ Network.AWS.EC2.Types: instance Read UnsuccessfulItemError
+ Network.AWS.EC2.Types: instance Read UserBucket
+ Network.AWS.EC2.Types: instance Read UserBucketDetails
+ Network.AWS.EC2.Types: instance Read VpcEndpoint
+ Network.AWS.EC2.Types: instance Show ActiveInstance
+ Network.AWS.EC2.Types: instance Show AddressStatus
+ Network.AWS.EC2.Types: instance Show BatchState
+ Network.AWS.EC2.Types: instance Show CancelBatchErrorCode
+ Network.AWS.EC2.Types: instance Show CancelSpotFleetRequestsError
+ Network.AWS.EC2.Types: instance Show CancelSpotFleetRequestsErrorItem
+ Network.AWS.EC2.Types: instance Show CancelSpotFleetRequestsSuccessItem
+ Network.AWS.EC2.Types: instance Show ClientData
+ Network.AWS.EC2.Types: instance Show EventInformation
+ Network.AWS.EC2.Types: instance Show EventType
+ Network.AWS.EC2.Types: instance Show HistoryRecord
+ Network.AWS.EC2.Types: instance Show ImageDiskContainer
+ Network.AWS.EC2.Types: instance Show ImportImageTask
+ Network.AWS.EC2.Types: instance Show ImportSnapshotTask
+ Network.AWS.EC2.Types: instance Show MoveStatus
+ Network.AWS.EC2.Types: instance Show MovingAddressStatus
+ Network.AWS.EC2.Types: instance Show PrefixList
+ Network.AWS.EC2.Types: instance Show PrefixListId
+ Network.AWS.EC2.Types: instance Show SnapshotDetail
+ Network.AWS.EC2.Types: instance Show SnapshotDiskContainer
+ Network.AWS.EC2.Types: instance Show SnapshotTaskDetail
+ Network.AWS.EC2.Types: instance Show SpotFleetRequestConfig
+ Network.AWS.EC2.Types: instance Show SpotFleetRequestConfigData
+ Network.AWS.EC2.Types: instance Show State
+ Network.AWS.EC2.Types: instance Show UnsuccessfulItem
+ Network.AWS.EC2.Types: instance Show UnsuccessfulItemError
+ Network.AWS.EC2.Types: instance Show UserBucket
+ Network.AWS.EC2.Types: instance Show UserBucketDetails
+ Network.AWS.EC2.Types: instance Show VpcEndpoint
+ Network.AWS.EC2.Types: instance ToByteString AddressStatus
+ Network.AWS.EC2.Types: instance ToByteString BatchState
+ Network.AWS.EC2.Types: instance ToByteString CancelBatchErrorCode
+ Network.AWS.EC2.Types: instance ToByteString EventType
+ Network.AWS.EC2.Types: instance ToByteString MoveStatus
+ Network.AWS.EC2.Types: instance ToByteString State
+ Network.AWS.EC2.Types: instance ToHeader AddressStatus
+ Network.AWS.EC2.Types: instance ToHeader BatchState
+ Network.AWS.EC2.Types: instance ToHeader CancelBatchErrorCode
+ Network.AWS.EC2.Types: instance ToHeader EventType
+ Network.AWS.EC2.Types: instance ToHeader MoveStatus
+ Network.AWS.EC2.Types: instance ToHeader State
+ Network.AWS.EC2.Types: instance ToQuery ActiveInstance
+ Network.AWS.EC2.Types: instance ToQuery AddressStatus
+ Network.AWS.EC2.Types: instance ToQuery BatchState
+ Network.AWS.EC2.Types: instance ToQuery CancelBatchErrorCode
+ Network.AWS.EC2.Types: instance ToQuery CancelSpotFleetRequestsError
+ Network.AWS.EC2.Types: instance ToQuery CancelSpotFleetRequestsErrorItem
+ Network.AWS.EC2.Types: instance ToQuery CancelSpotFleetRequestsSuccessItem
+ Network.AWS.EC2.Types: instance ToQuery ClientData
+ Network.AWS.EC2.Types: instance ToQuery EventInformation
+ Network.AWS.EC2.Types: instance ToQuery EventType
+ Network.AWS.EC2.Types: instance ToQuery HistoryRecord
+ Network.AWS.EC2.Types: instance ToQuery ImageDiskContainer
+ Network.AWS.EC2.Types: instance ToQuery ImportImageTask
+ Network.AWS.EC2.Types: instance ToQuery ImportSnapshotTask
+ Network.AWS.EC2.Types: instance ToQuery MoveStatus
+ Network.AWS.EC2.Types: instance ToQuery MovingAddressStatus
+ Network.AWS.EC2.Types: instance ToQuery PrefixList
+ Network.AWS.EC2.Types: instance ToQuery PrefixListId
+ Network.AWS.EC2.Types: instance ToQuery SnapshotDetail
+ Network.AWS.EC2.Types: instance ToQuery SnapshotDiskContainer
+ Network.AWS.EC2.Types: instance ToQuery SnapshotTaskDetail
+ Network.AWS.EC2.Types: instance ToQuery SpotFleetRequestConfig
+ Network.AWS.EC2.Types: instance ToQuery SpotFleetRequestConfigData
+ Network.AWS.EC2.Types: instance ToQuery State
+ Network.AWS.EC2.Types: instance ToQuery UnsuccessfulItem
+ Network.AWS.EC2.Types: instance ToQuery UnsuccessfulItemError
+ Network.AWS.EC2.Types: instance ToQuery UserBucket
+ Network.AWS.EC2.Types: instance ToQuery UserBucketDetails
+ Network.AWS.EC2.Types: instance ToQuery VpcEndpoint
+ Network.AWS.EC2.Types: instance ToText AddressStatus
+ Network.AWS.EC2.Types: instance ToText BatchState
+ Network.AWS.EC2.Types: instance ToText CancelBatchErrorCode
+ Network.AWS.EC2.Types: instance ToText EventType
+ Network.AWS.EC2.Types: instance ToText MoveStatus
+ Network.AWS.EC2.Types: instance ToText State
+ Network.AWS.EC2.Types: ipPrefixListIds :: Lens' IpPermission [PrefixListId]
+ Network.AWS.EC2.Types: istDescription :: Lens' ImportSnapshotTask (Maybe Text)
+ Network.AWS.EC2.Types: istImportTaskId :: Lens' ImportSnapshotTask (Maybe Text)
+ Network.AWS.EC2.Types: istSnapshotTaskDetail :: Lens' ImportSnapshotTask (Maybe SnapshotTaskDetail)
+ Network.AWS.EC2.Types: masMoveStatus :: Lens' MovingAddressStatus (Maybe MoveStatus)
+ Network.AWS.EC2.Types: masPublicIp :: Lens' MovingAddressStatus (Maybe Text)
+ Network.AWS.EC2.Types: movingAddressStatus :: MovingAddressStatus
+ Network.AWS.EC2.Types: plCidrs :: Lens' PrefixList [Text]
+ Network.AWS.EC2.Types: plPrefixListId :: Lens' PrefixList (Maybe Text)
+ Network.AWS.EC2.Types: plPrefixListName :: Lens' PrefixList (Maybe Text)
+ Network.AWS.EC2.Types: pliPrefixListId :: Lens' PrefixListId (Maybe Text)
+ Network.AWS.EC2.Types: prefixList :: PrefixList
+ Network.AWS.EC2.Types: prefixListId :: PrefixListId
+ Network.AWS.EC2.Types: rDestinationPrefixListId :: Lens' Route (Maybe Text)
+ Network.AWS.EC2.Types: sdDescription :: Lens' SnapshotDetail (Maybe Text)
+ Network.AWS.EC2.Types: sdDeviceName :: Lens' SnapshotDetail (Maybe Text)
+ Network.AWS.EC2.Types: sdDiskImageSize :: Lens' SnapshotDetail (Maybe Double)
+ Network.AWS.EC2.Types: sdFormat :: Lens' SnapshotDetail (Maybe Text)
+ Network.AWS.EC2.Types: sdProgress :: Lens' SnapshotDetail (Maybe Text)
+ Network.AWS.EC2.Types: sdSnapshotId :: Lens' SnapshotDetail (Maybe Text)
+ Network.AWS.EC2.Types: sdStatus :: Lens' SnapshotDetail (Maybe Text)
+ Network.AWS.EC2.Types: sdStatusMessage :: Lens' SnapshotDetail (Maybe Text)
+ Network.AWS.EC2.Types: sdUrl :: Lens' SnapshotDetail (Maybe Text)
+ Network.AWS.EC2.Types: sdUserBucket :: Lens' SnapshotDetail (Maybe UserBucketDetails)
+ Network.AWS.EC2.Types: sdcDescription :: Lens' SnapshotDiskContainer (Maybe Text)
+ Network.AWS.EC2.Types: sdcFormat :: Lens' SnapshotDiskContainer (Maybe Text)
+ Network.AWS.EC2.Types: sdcUrl :: Lens' SnapshotDiskContainer (Maybe Text)
+ Network.AWS.EC2.Types: sdcUserBucket :: Lens' SnapshotDiskContainer (Maybe UserBucket)
+ Network.AWS.EC2.Types: sfrcSpotFleetRequestConfig :: Lens' SpotFleetRequestConfig SpotFleetRequestConfigData
+ Network.AWS.EC2.Types: sfrcSpotFleetRequestId :: Lens' SpotFleetRequestConfig Text
+ Network.AWS.EC2.Types: sfrcSpotFleetRequestState :: Lens' SpotFleetRequestConfig BatchState
+ Network.AWS.EC2.Types: sfrcdClientToken :: Lens' SpotFleetRequestConfigData (Maybe Text)
+ Network.AWS.EC2.Types: sfrcdIamFleetRole :: Lens' SpotFleetRequestConfigData Text
+ Network.AWS.EC2.Types: sfrcdLaunchSpecifications :: Lens' SpotFleetRequestConfigData (NonEmpty LaunchSpecification)
+ Network.AWS.EC2.Types: sfrcdSpotPrice :: Lens' SpotFleetRequestConfigData Text
+ Network.AWS.EC2.Types: sfrcdTargetCapacity :: Lens' SpotFleetRequestConfigData Int
+ Network.AWS.EC2.Types: sfrcdTerminateInstancesWithExpiration :: Lens' SpotFleetRequestConfigData (Maybe Bool)
+ Network.AWS.EC2.Types: sfrcdValidFrom :: Lens' SpotFleetRequestConfigData (Maybe UTCTime)
+ Network.AWS.EC2.Types: sfrcdValidUntil :: Lens' SpotFleetRequestConfigData (Maybe UTCTime)
+ Network.AWS.EC2.Types: snapshotDetail :: SnapshotDetail
+ Network.AWS.EC2.Types: snapshotDiskContainer :: SnapshotDiskContainer
+ Network.AWS.EC2.Types: snapshotTaskDetail :: SnapshotTaskDetail
+ Network.AWS.EC2.Types: spotFleetRequestConfig :: Text -> BatchState -> SpotFleetRequestConfigData -> SpotFleetRequestConfig
+ Network.AWS.EC2.Types: spotFleetRequestConfigData :: Text -> Int -> Text -> NonEmpty LaunchSpecification -> SpotFleetRequestConfigData
+ Network.AWS.EC2.Types: stdDescription :: Lens' SnapshotTaskDetail (Maybe Text)
+ Network.AWS.EC2.Types: stdDiskImageSize :: Lens' SnapshotTaskDetail (Maybe Double)
+ Network.AWS.EC2.Types: stdFormat :: Lens' SnapshotTaskDetail (Maybe Text)
+ Network.AWS.EC2.Types: stdProgress :: Lens' SnapshotTaskDetail (Maybe Text)
+ Network.AWS.EC2.Types: stdSnapshotId :: Lens' SnapshotTaskDetail (Maybe Text)
+ Network.AWS.EC2.Types: stdStatus :: Lens' SnapshotTaskDetail (Maybe Text)
+ Network.AWS.EC2.Types: stdStatusMessage :: Lens' SnapshotTaskDetail (Maybe Text)
+ Network.AWS.EC2.Types: stdUrl :: Lens' SnapshotTaskDetail (Maybe Text)
+ Network.AWS.EC2.Types: stdUserBucket :: Lens' SnapshotTaskDetail (Maybe UserBucketDetails)
+ Network.AWS.EC2.Types: ubS3Bucket :: Lens' UserBucket (Maybe Text)
+ Network.AWS.EC2.Types: ubS3Key :: Lens' UserBucket (Maybe Text)
+ Network.AWS.EC2.Types: ubdS3Bucket :: Lens' UserBucketDetails (Maybe Text)
+ Network.AWS.EC2.Types: ubdS3Key :: Lens' UserBucketDetails (Maybe Text)
+ Network.AWS.EC2.Types: uiError :: Lens' UnsuccessfulItem UnsuccessfulItemError
+ Network.AWS.EC2.Types: uiResourceId :: Lens' UnsuccessfulItem (Maybe Text)
+ Network.AWS.EC2.Types: uieCode :: Lens' UnsuccessfulItemError Text
+ Network.AWS.EC2.Types: uieMessage :: Lens' UnsuccessfulItemError Text
+ Network.AWS.EC2.Types: unsuccessfulItem :: UnsuccessfulItemError -> UnsuccessfulItem
+ Network.AWS.EC2.Types: unsuccessfulItemError :: Text -> Text -> UnsuccessfulItemError
+ Network.AWS.EC2.Types: userBucket :: UserBucket
+ Network.AWS.EC2.Types: userBucketDetails :: UserBucketDetails
+ Network.AWS.EC2.Types: veCreationTimestamp :: Lens' VpcEndpoint (Maybe UTCTime)
+ Network.AWS.EC2.Types: vePolicyDocument :: Lens' VpcEndpoint (Maybe Text)
+ Network.AWS.EC2.Types: veRouteTableIds :: Lens' VpcEndpoint [Text]
+ Network.AWS.EC2.Types: veServiceName :: Lens' VpcEndpoint (Maybe Text)
+ Network.AWS.EC2.Types: veState :: Lens' VpcEndpoint (Maybe State)
+ Network.AWS.EC2.Types: veVpcEndpointId :: Lens' VpcEndpoint (Maybe Text)
+ Network.AWS.EC2.Types: veVpcId :: Lens' VpcEndpoint (Maybe Text)
+ Network.AWS.EC2.Types: vpcEndpoint :: VpcEndpoint
+ Network.AWS.EC2.Waiters: instanceExists :: Wait DescribeInstances
- Network.AWS.EC2.Types: Active :: RouteState
+ Network.AWS.EC2.Types: Active :: BatchState
- Network.AWS.EC2.Types: Attaching :: NetworkInterfaceStatus
+ Network.AWS.EC2.Types: Attaching :: AttachmentStatus
- Network.AWS.EC2.Types: Available :: NetworkInterfaceStatus
+ Network.AWS.EC2.Types: Available :: State
- Network.AWS.EC2.Types: Detaching :: NetworkInterfaceStatus
+ Network.AWS.EC2.Types: Detaching :: AttachmentStatus
- Network.AWS.EC2.Types: Error :: SnapshotState
+ Network.AWS.EC2.Types: Error :: EventType
- Network.AWS.EC2.Types: Failed :: StatusType
+ Network.AWS.EC2.Types: Failed :: BatchState
- Network.AWS.EC2.Types: Message :: ErrorCode -> Text -> Message
+ Network.AWS.EC2.Types: Message :: Maybe ErrorCode -> Text -> Message
- Network.AWS.EC2.Types: Pending :: SnapshotState
+ Network.AWS.EC2.Types: Pending :: State
- Network.AWS.EC2.Types: SSPending :: SubnetState
+ Network.AWS.EC2.Types: SSPending :: SnapshotState
- Network.AWS.EC2.Types: _msgCode :: Message -> ErrorCode
+ Network.AWS.EC2.Types: _msgCode :: Message -> Maybe ErrorCode
- Network.AWS.EC2.Types: msgCode :: Lens' Message ErrorCode
+ Network.AWS.EC2.Types: msgCode :: Lens' Message (Maybe ErrorCode)

Files

amazonka-ec2.cabal view
@@ -1,5 +1,5 @@ name:                  amazonka-ec2-version:               0.3.4+version:               0.3.5 synopsis:              Amazon Elastic Compute Cloud SDK. homepage:              https://github.com/brendanhay/amazonka license:               OtherLicense@@ -61,7 +61,9 @@         , Network.AWS.EC2.CancelBundleTask         , Network.AWS.EC2.CancelConversionTask         , Network.AWS.EC2.CancelExportTask+        , Network.AWS.EC2.CancelImportTask         , Network.AWS.EC2.CancelReservedInstancesListing+        , Network.AWS.EC2.CancelSpotFleetRequests         , Network.AWS.EC2.CancelSpotInstanceRequests         , Network.AWS.EC2.ConfirmProductInstance         , Network.AWS.EC2.CopyImage@@ -86,6 +88,7 @@         , Network.AWS.EC2.CreateTags         , Network.AWS.EC2.CreateVolume         , Network.AWS.EC2.CreateVpc+        , Network.AWS.EC2.CreateVpcEndpoint         , Network.AWS.EC2.CreateVpcPeeringConnection         , Network.AWS.EC2.CreateVpnConnection         , Network.AWS.EC2.CreateVpnConnectionRoute@@ -107,6 +110,7 @@         , Network.AWS.EC2.DeleteTags         , Network.AWS.EC2.DeleteVolume         , Network.AWS.EC2.DeleteVpc+        , Network.AWS.EC2.DeleteVpcEndpoints         , Network.AWS.EC2.DeleteVpcPeeringConnection         , Network.AWS.EC2.DeleteVpnConnection         , Network.AWS.EC2.DeleteVpnConnectionRoute@@ -123,15 +127,19 @@         , Network.AWS.EC2.DescribeExportTasks         , Network.AWS.EC2.DescribeImageAttribute         , Network.AWS.EC2.DescribeImages+        , Network.AWS.EC2.DescribeImportImageTasks+        , Network.AWS.EC2.DescribeImportSnapshotTasks         , Network.AWS.EC2.DescribeInstanceAttribute         , Network.AWS.EC2.DescribeInstanceStatus         , Network.AWS.EC2.DescribeInstances         , Network.AWS.EC2.DescribeInternetGateways         , Network.AWS.EC2.DescribeKeyPairs+        , Network.AWS.EC2.DescribeMovingAddresses         , Network.AWS.EC2.DescribeNetworkAcls         , Network.AWS.EC2.DescribeNetworkInterfaceAttribute         , Network.AWS.EC2.DescribeNetworkInterfaces         , Network.AWS.EC2.DescribePlacementGroups+        , Network.AWS.EC2.DescribePrefixLists         , Network.AWS.EC2.DescribeRegions         , Network.AWS.EC2.DescribeReservedInstances         , Network.AWS.EC2.DescribeReservedInstancesListings@@ -142,6 +150,9 @@         , Network.AWS.EC2.DescribeSnapshotAttribute         , Network.AWS.EC2.DescribeSnapshots         , Network.AWS.EC2.DescribeSpotDatafeedSubscription+        , Network.AWS.EC2.DescribeSpotFleetInstances+        , Network.AWS.EC2.DescribeSpotFleetRequestHistory+        , Network.AWS.EC2.DescribeSpotFleetRequests         , Network.AWS.EC2.DescribeSpotInstanceRequests         , Network.AWS.EC2.DescribeSpotPriceHistory         , Network.AWS.EC2.DescribeSubnets@@ -151,6 +162,8 @@         , Network.AWS.EC2.DescribeVolumes         , Network.AWS.EC2.DescribeVpcAttribute         , Network.AWS.EC2.DescribeVpcClassicLink+        , Network.AWS.EC2.DescribeVpcEndpointServices+        , Network.AWS.EC2.DescribeVpcEndpoints         , Network.AWS.EC2.DescribeVpcPeeringConnections         , Network.AWS.EC2.DescribeVpcs         , Network.AWS.EC2.DescribeVpnConnections@@ -169,8 +182,10 @@         , Network.AWS.EC2.EnableVpcClassicLink         , Network.AWS.EC2.GetConsoleOutput         , Network.AWS.EC2.GetPasswordData+        , Network.AWS.EC2.ImportImage         , Network.AWS.EC2.ImportInstance         , Network.AWS.EC2.ImportKeyPair+        , Network.AWS.EC2.ImportSnapshot         , Network.AWS.EC2.ImportVolume         , Network.AWS.EC2.ModifyImageAttribute         , Network.AWS.EC2.ModifyInstanceAttribute@@ -180,7 +195,9 @@         , Network.AWS.EC2.ModifySubnetAttribute         , Network.AWS.EC2.ModifyVolumeAttribute         , Network.AWS.EC2.ModifyVpcAttribute+        , Network.AWS.EC2.ModifyVpcEndpoint         , Network.AWS.EC2.MonitorInstances+        , Network.AWS.EC2.MoveAddressToVpc         , Network.AWS.EC2.PurchaseReservedInstancesOffering         , Network.AWS.EC2.RebootInstances         , Network.AWS.EC2.RegisterImage@@ -191,11 +208,13 @@         , Network.AWS.EC2.ReplaceRoute         , Network.AWS.EC2.ReplaceRouteTableAssociation         , Network.AWS.EC2.ReportInstanceStatus+        , Network.AWS.EC2.RequestSpotFleet         , Network.AWS.EC2.RequestSpotInstances         , Network.AWS.EC2.ResetImageAttribute         , Network.AWS.EC2.ResetInstanceAttribute         , Network.AWS.EC2.ResetNetworkInterfaceAttribute         , Network.AWS.EC2.ResetSnapshotAttribute+        , Network.AWS.EC2.RestoreAddressToClassic         , Network.AWS.EC2.RevokeSecurityGroupEgress         , Network.AWS.EC2.RevokeSecurityGroupIngress         , Network.AWS.EC2.RunInstances@@ -211,5 +230,5 @@           Network.AWS.EC2.Internal      build-depends:-          amazonka-core == 0.3.4.*+          amazonka-core == 0.3.5.*         , base          >= 4.7     && < 5
gen/Network/AWS/EC2.hs view
@@ -40,7 +40,9 @@     , module Network.AWS.EC2.CancelBundleTask     , module Network.AWS.EC2.CancelConversionTask     , module Network.AWS.EC2.CancelExportTask+    , module Network.AWS.EC2.CancelImportTask     , module Network.AWS.EC2.CancelReservedInstancesListing+    , module Network.AWS.EC2.CancelSpotFleetRequests     , module Network.AWS.EC2.CancelSpotInstanceRequests     , module Network.AWS.EC2.ConfirmProductInstance     , module Network.AWS.EC2.CopyImage@@ -65,6 +67,7 @@     , module Network.AWS.EC2.CreateTags     , module Network.AWS.EC2.CreateVolume     , module Network.AWS.EC2.CreateVpc+    , module Network.AWS.EC2.CreateVpcEndpoint     , module Network.AWS.EC2.CreateVpcPeeringConnection     , module Network.AWS.EC2.CreateVpnConnection     , module Network.AWS.EC2.CreateVpnConnectionRoute@@ -86,6 +89,7 @@     , module Network.AWS.EC2.DeleteTags     , module Network.AWS.EC2.DeleteVolume     , module Network.AWS.EC2.DeleteVpc+    , module Network.AWS.EC2.DeleteVpcEndpoints     , module Network.AWS.EC2.DeleteVpcPeeringConnection     , module Network.AWS.EC2.DeleteVpnConnection     , module Network.AWS.EC2.DeleteVpnConnectionRoute@@ -102,15 +106,19 @@     , module Network.AWS.EC2.DescribeExportTasks     , module Network.AWS.EC2.DescribeImageAttribute     , module Network.AWS.EC2.DescribeImages+    , module Network.AWS.EC2.DescribeImportImageTasks+    , module Network.AWS.EC2.DescribeImportSnapshotTasks     , module Network.AWS.EC2.DescribeInstanceAttribute     , module Network.AWS.EC2.DescribeInstanceStatus     , module Network.AWS.EC2.DescribeInstances     , module Network.AWS.EC2.DescribeInternetGateways     , module Network.AWS.EC2.DescribeKeyPairs+    , module Network.AWS.EC2.DescribeMovingAddresses     , module Network.AWS.EC2.DescribeNetworkAcls     , module Network.AWS.EC2.DescribeNetworkInterfaceAttribute     , module Network.AWS.EC2.DescribeNetworkInterfaces     , module Network.AWS.EC2.DescribePlacementGroups+    , module Network.AWS.EC2.DescribePrefixLists     , module Network.AWS.EC2.DescribeRegions     , module Network.AWS.EC2.DescribeReservedInstances     , module Network.AWS.EC2.DescribeReservedInstancesListings@@ -121,6 +129,9 @@     , module Network.AWS.EC2.DescribeSnapshotAttribute     , module Network.AWS.EC2.DescribeSnapshots     , module Network.AWS.EC2.DescribeSpotDatafeedSubscription+    , module Network.AWS.EC2.DescribeSpotFleetInstances+    , module Network.AWS.EC2.DescribeSpotFleetRequestHistory+    , module Network.AWS.EC2.DescribeSpotFleetRequests     , module Network.AWS.EC2.DescribeSpotInstanceRequests     , module Network.AWS.EC2.DescribeSpotPriceHistory     , module Network.AWS.EC2.DescribeSubnets@@ -130,6 +141,8 @@     , module Network.AWS.EC2.DescribeVolumes     , module Network.AWS.EC2.DescribeVpcAttribute     , module Network.AWS.EC2.DescribeVpcClassicLink+    , module Network.AWS.EC2.DescribeVpcEndpointServices+    , module Network.AWS.EC2.DescribeVpcEndpoints     , module Network.AWS.EC2.DescribeVpcPeeringConnections     , module Network.AWS.EC2.DescribeVpcs     , module Network.AWS.EC2.DescribeVpnConnections@@ -148,8 +161,10 @@     , module Network.AWS.EC2.EnableVpcClassicLink     , module Network.AWS.EC2.GetConsoleOutput     , module Network.AWS.EC2.GetPasswordData+    , module Network.AWS.EC2.ImportImage     , module Network.AWS.EC2.ImportInstance     , module Network.AWS.EC2.ImportKeyPair+    , module Network.AWS.EC2.ImportSnapshot     , module Network.AWS.EC2.ImportVolume     , module Network.AWS.EC2.ModifyImageAttribute     , module Network.AWS.EC2.ModifyInstanceAttribute@@ -159,7 +174,9 @@     , module Network.AWS.EC2.ModifySubnetAttribute     , module Network.AWS.EC2.ModifyVolumeAttribute     , module Network.AWS.EC2.ModifyVpcAttribute+    , module Network.AWS.EC2.ModifyVpcEndpoint     , module Network.AWS.EC2.MonitorInstances+    , module Network.AWS.EC2.MoveAddressToVpc     , module Network.AWS.EC2.PurchaseReservedInstancesOffering     , module Network.AWS.EC2.RebootInstances     , module Network.AWS.EC2.RegisterImage@@ -170,11 +187,13 @@     , module Network.AWS.EC2.ReplaceRoute     , module Network.AWS.EC2.ReplaceRouteTableAssociation     , module Network.AWS.EC2.ReportInstanceStatus+    , module Network.AWS.EC2.RequestSpotFleet     , module Network.AWS.EC2.RequestSpotInstances     , module Network.AWS.EC2.ResetImageAttribute     , module Network.AWS.EC2.ResetInstanceAttribute     , module Network.AWS.EC2.ResetNetworkInterfaceAttribute     , module Network.AWS.EC2.ResetSnapshotAttribute+    , module Network.AWS.EC2.RestoreAddressToClassic     , module Network.AWS.EC2.RevokeSecurityGroupEgress     , module Network.AWS.EC2.RevokeSecurityGroupIngress     , module Network.AWS.EC2.RunInstances@@ -204,7 +223,9 @@ import Network.AWS.EC2.CancelBundleTask import Network.AWS.EC2.CancelConversionTask import Network.AWS.EC2.CancelExportTask+import Network.AWS.EC2.CancelImportTask import Network.AWS.EC2.CancelReservedInstancesListing+import Network.AWS.EC2.CancelSpotFleetRequests import Network.AWS.EC2.CancelSpotInstanceRequests import Network.AWS.EC2.ConfirmProductInstance import Network.AWS.EC2.CopyImage@@ -229,6 +250,7 @@ import Network.AWS.EC2.CreateTags import Network.AWS.EC2.CreateVolume import Network.AWS.EC2.CreateVpc+import Network.AWS.EC2.CreateVpcEndpoint import Network.AWS.EC2.CreateVpcPeeringConnection import Network.AWS.EC2.CreateVpnConnection import Network.AWS.EC2.CreateVpnConnectionRoute@@ -250,6 +272,7 @@ import Network.AWS.EC2.DeleteTags import Network.AWS.EC2.DeleteVolume import Network.AWS.EC2.DeleteVpc+import Network.AWS.EC2.DeleteVpcEndpoints import Network.AWS.EC2.DeleteVpcPeeringConnection import Network.AWS.EC2.DeleteVpnConnection import Network.AWS.EC2.DeleteVpnConnectionRoute@@ -266,15 +289,19 @@ import Network.AWS.EC2.DescribeExportTasks import Network.AWS.EC2.DescribeImageAttribute import Network.AWS.EC2.DescribeImages+import Network.AWS.EC2.DescribeImportImageTasks+import Network.AWS.EC2.DescribeImportSnapshotTasks import Network.AWS.EC2.DescribeInstanceAttribute import Network.AWS.EC2.DescribeInstanceStatus import Network.AWS.EC2.DescribeInstances import Network.AWS.EC2.DescribeInternetGateways import Network.AWS.EC2.DescribeKeyPairs+import Network.AWS.EC2.DescribeMovingAddresses import Network.AWS.EC2.DescribeNetworkAcls import Network.AWS.EC2.DescribeNetworkInterfaceAttribute import Network.AWS.EC2.DescribeNetworkInterfaces import Network.AWS.EC2.DescribePlacementGroups+import Network.AWS.EC2.DescribePrefixLists import Network.AWS.EC2.DescribeRegions import Network.AWS.EC2.DescribeReservedInstances import Network.AWS.EC2.DescribeReservedInstancesListings@@ -285,6 +312,9 @@ import Network.AWS.EC2.DescribeSnapshotAttribute import Network.AWS.EC2.DescribeSnapshots import Network.AWS.EC2.DescribeSpotDatafeedSubscription+import Network.AWS.EC2.DescribeSpotFleetInstances+import Network.AWS.EC2.DescribeSpotFleetRequestHistory+import Network.AWS.EC2.DescribeSpotFleetRequests import Network.AWS.EC2.DescribeSpotInstanceRequests import Network.AWS.EC2.DescribeSpotPriceHistory import Network.AWS.EC2.DescribeSubnets@@ -294,6 +324,8 @@ import Network.AWS.EC2.DescribeVolumes import Network.AWS.EC2.DescribeVpcAttribute import Network.AWS.EC2.DescribeVpcClassicLink+import Network.AWS.EC2.DescribeVpcEndpointServices+import Network.AWS.EC2.DescribeVpcEndpoints import Network.AWS.EC2.DescribeVpcPeeringConnections import Network.AWS.EC2.DescribeVpcs import Network.AWS.EC2.DescribeVpnConnections@@ -312,8 +344,10 @@ import Network.AWS.EC2.EnableVpcClassicLink import Network.AWS.EC2.GetConsoleOutput import Network.AWS.EC2.GetPasswordData+import Network.AWS.EC2.ImportImage import Network.AWS.EC2.ImportInstance import Network.AWS.EC2.ImportKeyPair+import Network.AWS.EC2.ImportSnapshot import Network.AWS.EC2.ImportVolume import Network.AWS.EC2.ModifyImageAttribute import Network.AWS.EC2.ModifyInstanceAttribute@@ -323,7 +357,9 @@ import Network.AWS.EC2.ModifySubnetAttribute import Network.AWS.EC2.ModifyVolumeAttribute import Network.AWS.EC2.ModifyVpcAttribute+import Network.AWS.EC2.ModifyVpcEndpoint import Network.AWS.EC2.MonitorInstances+import Network.AWS.EC2.MoveAddressToVpc import Network.AWS.EC2.PurchaseReservedInstancesOffering import Network.AWS.EC2.RebootInstances import Network.AWS.EC2.RegisterImage@@ -334,11 +370,13 @@ import Network.AWS.EC2.ReplaceRoute import Network.AWS.EC2.ReplaceRouteTableAssociation import Network.AWS.EC2.ReportInstanceStatus+import Network.AWS.EC2.RequestSpotFleet import Network.AWS.EC2.RequestSpotInstances import Network.AWS.EC2.ResetImageAttribute import Network.AWS.EC2.ResetInstanceAttribute import Network.AWS.EC2.ResetNetworkInterfaceAttribute import Network.AWS.EC2.ResetSnapshotAttribute+import Network.AWS.EC2.RestoreAddressToClassic import Network.AWS.EC2.RevokeSecurityGroupEgress import Network.AWS.EC2.RevokeSecurityGroupIngress import Network.AWS.EC2.RunInstances
gen/Network/AWS/EC2/AcceptVpcPeeringConnection.hs view
@@ -70,6 +70,9 @@     , _avpcVpcPeeringConnectionId = Nothing     } +-- | 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'. avpcDryRun :: Lens' AcceptVpcPeeringConnection (Maybe Bool) avpcDryRun = lens _avpcDryRun (\s a -> s { _avpcDryRun = a }) 
gen/Network/AWS/EC2/AllocateAddress.hs view
@@ -25,7 +25,7 @@ -- | Acquires an Elastic IP address. -- -- An Elastic IP address is for use either in the EC2-Classic platform or in a--- VPC. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP Addresses> in the /Amazon ElasticCompute Cloud User Guide for Linux/.+-- VPC. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP Addresses> in the /Amazon ElasticCompute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-AllocateAddress.html> module Network.AWS.EC2.AllocateAddress@@ -78,6 +78,9 @@ aaDomain :: Lens' AllocateAddress (Maybe DomainType) aaDomain = lens _aaDomain (\s a -> s { _aaDomain = a }) +-- | 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'. aaDryRun :: Lens' AllocateAddress (Maybe Bool) aaDryRun = lens _aaDryRun (\s a -> s { _aaDryRun = a }) 
gen/Network/AWS/EC2/AssignPrivateIpAddresses.hs view
@@ -27,8 +27,8 @@ -- you can specify the number of secondary IP addresses to be automatically -- assigned within the subnet's CIDR block range. The number of secondary IP -- addresses that you can assign to an instance varies by instance type. For--- information about instance types, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html Instance Types> in the /Amazon ElasticCompute Cloud User Guide for Linux/. For more information about Elastic IP--- addresses, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP Addresses> in the /Amazon Elastic Compute Cloud UserGuide for Linux/.+-- information about instance types, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html Instance Types> in the /Amazon ElasticCompute Cloud User Guide/. For more information about Elastic IP addresses,+-- see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP Addresses> in the /Amazon Elastic Compute Cloud User Guide/. -- -- AssignPrivateIpAddresses is available only in EC2-VPC. --
gen/Network/AWS/EC2/AssociateAddress.hs view
@@ -25,7 +25,7 @@ -- | Associates an Elastic IP address with an instance or a network interface. -- -- An Elastic IP address is for use in either the EC2-Classic platform or in a--- VPC. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP Addresses> in the /Amazon ElasticCompute Cloud User Guide for Linux/.+-- VPC. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP Addresses> in the /Amazon ElasticCompute Cloud User Guide/. -- -- [EC2-Classic, VPC in an EC2-VPC-only account] If the Elastic IP address is -- already associated with a different instance, it is disassociated from that@@ -120,6 +120,9 @@ aa1AllowReassociation =     lens _aa1AllowReassociation (\s a -> s { _aa1AllowReassociation = a }) +-- | 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'. aa1DryRun :: Lens' AssociateAddress (Maybe Bool) aa1DryRun = lens _aa1DryRun (\s a -> s { _aa1DryRun = a }) 
gen/Network/AWS/EC2/AssociateDhcpOptions.hs view
@@ -87,6 +87,9 @@ adoDhcpOptionsId :: Lens' AssociateDhcpOptions Text adoDhcpOptionsId = lens _adoDhcpOptionsId (\s a -> s { _adoDhcpOptionsId = a }) +-- | 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'. adoDryRun :: Lens' AssociateDhcpOptions (Maybe Bool) adoDryRun = lens _adoDryRun (\s a -> s { _adoDryRun = a }) 
gen/Network/AWS/EC2/AssociateRouteTable.hs view
@@ -80,6 +80,9 @@     , _artDryRun       = Nothing     } +-- | 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'. artDryRun :: Lens' AssociateRouteTable (Maybe Bool) artDryRun = lens _artDryRun (\s a -> s { _artDryRun = a }) 
gen/Network/AWS/EC2/AttachClassicLinkVpc.hs view
@@ -89,6 +89,9 @@     , _aclvGroups     = mempty     } +-- | 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'. aclvDryRun :: Lens' AttachClassicLinkVpc (Maybe Bool) aclvDryRun = lens _aclvDryRun (\s a -> s { _aclvDryRun = a }) 
gen/Network/AWS/EC2/AttachInternetGateway.hs view
@@ -74,6 +74,9 @@     , _aigDryRun            = Nothing     } +-- | 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'. aigDryRun :: Lens' AttachInternetGateway (Maybe Bool) aigDryRun = lens _aigDryRun (\s a -> s { _aigDryRun = a }) 
gen/Network/AWS/EC2/AttachNetworkInterface.hs view
@@ -84,6 +84,9 @@ aniDeviceIndex :: Lens' AttachNetworkInterface Int aniDeviceIndex = lens _aniDeviceIndex (\s a -> s { _aniDeviceIndex = a }) +-- | 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'. aniDryRun :: Lens' AttachNetworkInterface (Maybe Bool) aniDryRun = lens _aniDryRun (\s a -> s { _aniDryRun = a }) 
gen/Network/AWS/EC2/AttachVolume.hs view
@@ -22,14 +22,14 @@ -- -- Derived from AWS service descriptions, licensed under Apache 2.0. --- | Attaches an Amazon EBS volume to a running or stopped instance and exposes it--- to the instance with the specified device name.+-- | Attaches an EBS volume to a running or stopped instance and exposes it to the+-- instance with the specified device name. ----- Encrypted Amazon EBS volumes may only be attached to instances that support--- Amazon EBS encryption. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html Amazon EBS Encryption> in the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- Encrypted EBS volumes may only be attached to instances that support Amazon+-- EBS encryption. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html Amazon EBS Encryption> in the /AmazonElastic Compute Cloud User Guide/. ----- For a list of supported device names, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-attaching-volume.html Attaching an Amazon EBS Volume toan Instance>. Any device names that aren't reserved for instance store volumes--- can be used for Amazon EBS volumes. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html Amazon EC2Instance Store> in the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- For a list of supported device names, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-attaching-volume.html Attaching an EBS Volume to anInstance>. Any device names that aren't reserved for instance store volumes+-- can be used for EBS volumes. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html Amazon EC2 InstanceStore> in the /Amazon Elastic Compute Cloud User Guide/. -- -- If a volume has an AWS Marketplace product code: --@@ -40,7 +40,8 @@ -- from a Windows instance and attach it to a Linux instance.  For an overview -- of the AWS Marketplace, see <https://aws.amazon.com/marketplace/help/200900000 Introducing AWS Marketplace>. ----- For more information about Amazon EBS volumes, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-attaching-volume.html Attaching Amazon EBSVolumes> in the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- For more information about EBS volumes, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-attaching-volume.html Attaching Amazon EBS Volumes> in+-- the /Amazon Elastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-AttachVolume.html> module Network.AWS.EC2.AttachVolume@@ -107,6 +108,9 @@ avDevice :: Lens' AttachVolume Text avDevice = lens _avDevice (\s a -> s { _avDevice = a }) +-- | 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'. avDryRun :: Lens' AttachVolume (Maybe Bool) avDryRun = lens _avDryRun (\s a -> s { _avDryRun = a }) @@ -114,8 +118,8 @@ avInstanceId :: Lens' AttachVolume Text avInstanceId = lens _avInstanceId (\s a -> s { _avInstanceId = a }) --- | The ID of the Amazon EBS volume. The volume and instance must be within the--- same Availability Zone.+-- | The ID of the EBS volume. The volume and instance must be within the same+-- Availability Zone. avVolumeId :: Lens' AttachVolume Text avVolumeId = lens _avVolumeId (\s a -> s { _avVolumeId = a }) @@ -158,7 +162,7 @@ avrAttachTime :: Lens' AttachVolumeResponse (Maybe UTCTime) avrAttachTime = lens _avrAttachTime (\s a -> s { _avrAttachTime = a }) . mapping _Time --- | Indicates whether the Amazon EBS volume is deleted on instance termination.+-- | Indicates whether the EBS volume is deleted on instance termination. avrDeleteOnTermination :: Lens' AttachVolumeResponse (Maybe Bool) avrDeleteOnTermination =     lens _avrDeleteOnTermination (\s a -> s { _avrDeleteOnTermination = a })
gen/Network/AWS/EC2/AttachVpnGateway.hs view
@@ -74,6 +74,9 @@     , _avgDryRun       = Nothing     } +-- | 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'. avgDryRun :: Lens' AttachVpnGateway (Maybe Bool) avgDryRun = lens _avgDryRun (\s a -> s { _avgDryRun = a }) 
gen/Network/AWS/EC2/AuthorizeSecurityGroupEgress.hs view
@@ -126,6 +126,9 @@ asgeCidrIp :: Lens' AuthorizeSecurityGroupEgress (Maybe Text) asgeCidrIp = lens _asgeCidrIp (\s a -> s { _asgeCidrIp = a }) +-- | 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'. asgeDryRun :: Lens' AuthorizeSecurityGroupEgress (Maybe Bool) asgeDryRun = lens _asgeDryRun (\s a -> s { _asgeDryRun = a }) 
gen/Network/AWS/EC2/AuthorizeSecurityGroupIngress.hs view
@@ -129,6 +129,9 @@ asgiCidrIp :: Lens' AuthorizeSecurityGroupIngress (Maybe Text) asgiCidrIp = lens _asgiCidrIp (\s a -> s { _asgiCidrIp = a }) +-- | 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'. asgiDryRun :: Lens' AuthorizeSecurityGroupIngress (Maybe Bool) asgiDryRun = lens _asgiDryRun (\s a -> s { _asgiDryRun = a }) 
gen/Network/AWS/EC2/BundleInstance.hs view
@@ -82,6 +82,9 @@     , _biDryRun     = Nothing     } +-- | 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'. biDryRun :: Lens' BundleInstance (Maybe Bool) biDryRun = lens _biDryRun (\s a -> s { _biDryRun = a }) 
gen/Network/AWS/EC2/CancelBundleTask.hs view
@@ -72,6 +72,9 @@ cbtBundleId :: Lens' CancelBundleTask Text cbtBundleId = lens _cbtBundleId (\s a -> s { _cbtBundleId = a }) +-- | 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'. cbtDryRun :: Lens' CancelBundleTask (Maybe Bool) cbtDryRun = lens _cbtDryRun (\s a -> s { _cbtDryRun = a }) @@ -90,7 +93,7 @@     { _cbtrBundleTask = Nothing     } --- | The bundle task.+-- | Information about the bundle task. cbtrBundleTask :: Lens' CancelBundleTaskResponse (Maybe BundleTask) cbtrBundleTask = lens _cbtrBundleTask (\s a -> s { _cbtrBundleTask = a }) 
gen/Network/AWS/EC2/CancelConversionTask.hs view
@@ -28,7 +28,7 @@ -- the process of transferring the final disk image, the command fails and -- returns an exception. ----- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UploadingYourInstancesandVolumes.html Using the Command Line Tools to Import YourVirtual Machine to Amazon EC2> in the /Amazon Elastic Compute Cloud User Guidefor Linux/.+-- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UploadingYourInstancesandVolumes.html Using the Command Line Tools to Import YourVirtual Machine to Amazon EC2> in the /Amazon Elastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-CancelConversionTask.html> module Network.AWS.EC2.CancelConversionTask@@ -82,9 +82,13 @@ cctConversionTaskId =     lens _cctConversionTaskId (\s a -> s { _cctConversionTaskId = a }) +-- | 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'. cctDryRun :: Lens' CancelConversionTask (Maybe Bool) cctDryRun = lens _cctDryRun (\s a -> s { _cctDryRun = a }) +-- | The reason for canceling the conversion task. cctReasonMessage :: Lens' CancelConversionTask (Maybe Text) cctReasonMessage = lens _cctReasonMessage (\s a -> s { _cctReasonMessage = a }) 
+ gen/Network/AWS/EC2/CancelImportTask.hs view
@@ -0,0 +1,150 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.EC2.CancelImportTask+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)+--+-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | Cancels an in-process import virtual machine or import snapshot task.+--+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-CancelImportTask.html>+module Network.AWS.EC2.CancelImportTask+    (+    -- * Request+      CancelImportTask+    -- ** Request constructor+    , cancelImportTask+    -- ** Request lenses+    , citCancelReason+    , citDryRun+    , citImportTaskId++    -- * Response+    , CancelImportTaskResponse+    -- ** Response constructor+    , cancelImportTaskResponse+    -- ** Response lenses+    , citrImportTaskId+    , citrPreviousState+    , citrState+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.EC2.Types+import qualified GHC.Exts++data CancelImportTask = CancelImportTask+    { _citCancelReason :: Maybe Text+    , _citDryRun       :: Maybe Bool+    , _citImportTaskId :: Maybe Text+    } deriving (Eq, Ord, Read, Show)++-- | 'CancelImportTask' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'citCancelReason' @::@ 'Maybe' 'Text'+--+-- * 'citDryRun' @::@ 'Maybe' 'Bool'+--+-- * 'citImportTaskId' @::@ 'Maybe' 'Text'+--+cancelImportTask :: CancelImportTask+cancelImportTask = CancelImportTask+    { _citDryRun       = Nothing+    , _citImportTaskId = Nothing+    , _citCancelReason = Nothing+    }++-- | The reason for canceling the task.+citCancelReason :: Lens' CancelImportTask (Maybe Text)+citCancelReason = lens _citCancelReason (\s a -> s { _citCancelReason = a })++-- | 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'.+citDryRun :: Lens' CancelImportTask (Maybe Bool)+citDryRun = lens _citDryRun (\s a -> s { _citDryRun = a })++-- | The ID of the import image or import snapshot task to be canceled.+citImportTaskId :: Lens' CancelImportTask (Maybe Text)+citImportTaskId = lens _citImportTaskId (\s a -> s { _citImportTaskId = a })++data CancelImportTaskResponse = CancelImportTaskResponse+    { _citrImportTaskId  :: Maybe Text+    , _citrPreviousState :: Maybe Text+    , _citrState         :: Maybe Text+    } deriving (Eq, Ord, Read, Show)++-- | 'CancelImportTaskResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'citrImportTaskId' @::@ 'Maybe' 'Text'+--+-- * 'citrPreviousState' @::@ 'Maybe' 'Text'+--+-- * 'citrState' @::@ 'Maybe' 'Text'+--+cancelImportTaskResponse :: CancelImportTaskResponse+cancelImportTaskResponse = CancelImportTaskResponse+    { _citrImportTaskId  = Nothing+    , _citrState         = Nothing+    , _citrPreviousState = Nothing+    }++-- | The ID of the task being canceled.+citrImportTaskId :: Lens' CancelImportTaskResponse (Maybe Text)+citrImportTaskId = lens _citrImportTaskId (\s a -> s { _citrImportTaskId = a })++-- | The current state of the task being canceled.+citrPreviousState :: Lens' CancelImportTaskResponse (Maybe Text)+citrPreviousState =+    lens _citrPreviousState (\s a -> s { _citrPreviousState = a })++-- | The current state of the task being canceled.+citrState :: Lens' CancelImportTaskResponse (Maybe Text)+citrState = lens _citrState (\s a -> s { _citrState = a })++instance ToPath CancelImportTask where+    toPath = const "/"++instance ToQuery CancelImportTask where+    toQuery CancelImportTask{..} = mconcat+        [ "CancelReason" =? _citCancelReason+        , "DryRun"       =? _citDryRun+        , "ImportTaskId" =? _citImportTaskId+        ]++instance ToHeaders CancelImportTask++instance AWSRequest CancelImportTask where+    type Sv CancelImportTask = EC2+    type Rs CancelImportTask = CancelImportTaskResponse++    request  = post "CancelImportTask"+    response = xmlResponse++instance FromXML CancelImportTaskResponse where+    parseXML x = CancelImportTaskResponse+        <$> x .@? "importTaskId"+        <*> x .@? "previousState"+        <*> x .@? "state"
gen/Network/AWS/EC2/CancelReservedInstancesListing.hs view
@@ -25,7 +25,7 @@ -- | Cancels the specified Reserved Instance listing in the Reserved Instance -- Marketplace. ----- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html Reserved Instance Marketplace> in the /AmazonElastic Compute Cloud User Guide for Linux/.+-- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html Reserved Instance Marketplace> in the /AmazonElastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-CancelReservedInstancesListing.html> module Network.AWS.EC2.CancelReservedInstancesListing
+ gen/Network/AWS/EC2/CancelSpotFleetRequests.hs view
@@ -0,0 +1,150 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.EC2.CancelSpotFleetRequests+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)+--+-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | Cancels the specified Spot fleet requests.+--+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-CancelSpotFleetRequests.html>+module Network.AWS.EC2.CancelSpotFleetRequests+    (+    -- * Request+      CancelSpotFleetRequests+    -- ** Request constructor+    , cancelSpotFleetRequests+    -- ** Request lenses+    , csfrDryRun+    , csfrSpotFleetRequestIds+    , csfrTerminateInstances++    -- * Response+    , CancelSpotFleetRequestsResponse+    -- ** Response constructor+    , cancelSpotFleetRequestsResponse+    -- ** Response lenses+    , csfrrSuccessfulFleetRequests+    , csfrrUnsuccessfulFleetRequests+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.EC2.Types+import qualified GHC.Exts++data CancelSpotFleetRequests = CancelSpotFleetRequests+    { _csfrDryRun              :: Maybe Bool+    , _csfrSpotFleetRequestIds :: List "item" Text+    , _csfrTerminateInstances  :: Bool+    } deriving (Eq, Ord, Read, Show)++-- | 'CancelSpotFleetRequests' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'csfrDryRun' @::@ 'Maybe' 'Bool'+--+-- * 'csfrSpotFleetRequestIds' @::@ ['Text']+--+-- * 'csfrTerminateInstances' @::@ 'Bool'+--+cancelSpotFleetRequests :: Bool -- ^ 'csfrTerminateInstances'+                        -> CancelSpotFleetRequests+cancelSpotFleetRequests p1 = CancelSpotFleetRequests+    { _csfrTerminateInstances  = p1+    , _csfrDryRun              = Nothing+    , _csfrSpotFleetRequestIds = mempty+    }++-- | 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'.+csfrDryRun :: Lens' CancelSpotFleetRequests (Maybe Bool)+csfrDryRun = lens _csfrDryRun (\s a -> s { _csfrDryRun = a })++-- | The IDs of the Spot fleet requests.+csfrSpotFleetRequestIds :: Lens' CancelSpotFleetRequests [Text]+csfrSpotFleetRequestIds =+    lens _csfrSpotFleetRequestIds (\s a -> s { _csfrSpotFleetRequestIds = a })+        . _List++-- | Indicates whether to terminate instances for a Spot fleet request if it is+-- canceled successfully.+csfrTerminateInstances :: Lens' CancelSpotFleetRequests Bool+csfrTerminateInstances =+    lens _csfrTerminateInstances (\s a -> s { _csfrTerminateInstances = a })++data CancelSpotFleetRequestsResponse = CancelSpotFleetRequestsResponse+    { _csfrrSuccessfulFleetRequests   :: List "item" CancelSpotFleetRequestsSuccessItem+    , _csfrrUnsuccessfulFleetRequests :: List "item" CancelSpotFleetRequestsErrorItem+    } deriving (Eq, Read, Show)++-- | 'CancelSpotFleetRequestsResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'csfrrSuccessfulFleetRequests' @::@ ['CancelSpotFleetRequestsSuccessItem']+--+-- * 'csfrrUnsuccessfulFleetRequests' @::@ ['CancelSpotFleetRequestsErrorItem']+--+cancelSpotFleetRequestsResponse :: CancelSpotFleetRequestsResponse+cancelSpotFleetRequestsResponse = CancelSpotFleetRequestsResponse+    { _csfrrUnsuccessfulFleetRequests = mempty+    , _csfrrSuccessfulFleetRequests   = mempty+    }++-- | Information about the Spot fleet requests that are successfully canceled.+csfrrSuccessfulFleetRequests :: Lens' CancelSpotFleetRequestsResponse [CancelSpotFleetRequestsSuccessItem]+csfrrSuccessfulFleetRequests =+    lens _csfrrSuccessfulFleetRequests+        (\s a -> s { _csfrrSuccessfulFleetRequests = a })+            . _List++-- | Information about the Spot fleet requests that are not successfully canceled.+csfrrUnsuccessfulFleetRequests :: Lens' CancelSpotFleetRequestsResponse [CancelSpotFleetRequestsErrorItem]+csfrrUnsuccessfulFleetRequests =+    lens _csfrrUnsuccessfulFleetRequests+        (\s a -> s { _csfrrUnsuccessfulFleetRequests = a })+            . _List++instance ToPath CancelSpotFleetRequests where+    toPath = const "/"++instance ToQuery CancelSpotFleetRequests where+    toQuery CancelSpotFleetRequests{..} = mconcat+        [ "DryRun"             =? _csfrDryRun+        , "SpotFleetRequestId" `toQueryList` _csfrSpotFleetRequestIds+        , "TerminateInstances" =? _csfrTerminateInstances+        ]++instance ToHeaders CancelSpotFleetRequests++instance AWSRequest CancelSpotFleetRequests where+    type Sv CancelSpotFleetRequests = EC2+    type Rs CancelSpotFleetRequests = CancelSpotFleetRequestsResponse++    request  = post "CancelSpotFleetRequests"+    response = xmlResponse++instance FromXML CancelSpotFleetRequestsResponse where+    parseXML x = CancelSpotFleetRequestsResponse+        <$> x .@? "successfulFleetRequestSet" .!@ mempty+        <*> x .@? "unsuccessfulFleetRequestSet" .!@ mempty
gen/Network/AWS/EC2/CancelSpotInstanceRequests.hs view
@@ -26,7 +26,7 @@ -- Amazon EC2 starts on your behalf when the bid price that you specify exceeds -- the current Spot Price. Amazon EC2 periodically sets the Spot Price based on -- available Spot Instance capacity and current Spot Instance requests. For more--- information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html Spot Instance Requests> in the /Amazon Elastic Compute CloudUser Guide for Linux/.+-- information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html Spot Instance Requests> in the /Amazon Elastic Compute CloudUser Guide/. -- -- Canceling a Spot Instance request does not terminate running Spot Instances -- associated with the request.@@ -76,6 +76,9 @@     , _csirSpotInstanceRequestIds = mempty     } +-- | 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'. csirDryRun :: Lens' CancelSpotInstanceRequests (Maybe Bool) csirDryRun = lens _csirDryRun (\s a -> s { _csirDryRun = a }) 
gen/Network/AWS/EC2/ConfirmProductInstance.hs view
@@ -77,6 +77,9 @@     , _cpiDryRun      = Nothing     } +-- | 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'. cpiDryRun :: Lens' ConfirmProductInstance (Maybe Bool) cpiDryRun = lens _cpiDryRun (\s a -> s { _cpiDryRun = a }) 
gen/Network/AWS/EC2/CopyImage.hs view
@@ -24,10 +24,10 @@  -- | Initiates the copy of an AMI from the specified source region to the current -- region. You specify the destination region by using its endpoint when making--- the request. AMIs that use encrypted Amazon EBS snapshots cannot be copied--- with this method.+-- the request. AMIs that use encrypted EBS snapshots cannot be copied with this+-- method. ----- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/CopyingAMIs.html Copying AMIs> in the /Amazon Elastic Compute CloudUser Guide for Linux/.+-- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/CopyingAMIs.html Copying AMIs> in the /Amazon Elastic Compute CloudUser Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-CopyImage.html> module Network.AWS.EC2.CopyImage@@ -96,7 +96,7 @@     }  -- | Unique, case-sensitive identifier you provide to ensure idempotency of the--- request. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to Ensure Idempotency> in the /AmazonElastic Compute Cloud User Guide for Linux/.+-- request. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to Ensure Idempotency> in the /AmazonElastic Compute Cloud User Guide/. ciClientToken :: Lens' CopyImage (Maybe Text) ciClientToken = lens _ciClientToken (\s a -> s { _ciClientToken = a }) @@ -104,6 +104,9 @@ ciDescription :: Lens' CopyImage (Maybe Text) ciDescription = lens _ciDescription (\s a -> s { _ciDescription = a }) +-- | 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'. ciDryRun :: Lens' CopyImage (Maybe Bool) ciDryRun = lens _ciDryRun (\s a -> s { _ciDryRun = a }) 
gen/Network/AWS/EC2/CopySnapshot.hs view
@@ -22,19 +22,19 @@ -- -- Derived from AWS service descriptions, licensed under Apache 2.0. --- | Copies a point-in-time snapshot of an Amazon EBS volume and stores it in--- Amazon S3. You can copy the snapshot within the same region or from one--- region to another. You can use the snapshot to create Amazon EBS volumes or--- Amazon Machine Images (AMIs). The snapshot is copied to the regional endpoint--- that you send the HTTP request to.+-- | Copies a point-in-time snapshot of an EBS volume and stores it in Amazon S3.+-- You can copy the snapshot within the same region or from one region to+-- another. You can use the snapshot to create EBS volumes or Amazon Machine+-- Images (AMIs). The snapshot is copied to the regional endpoint that you send+-- the HTTP request to. ----- Copies of encrypted Amazon EBS snapshots remain encrypted. Copies of--- unencrypted snapshots remain unencrypted.+-- Copies of encrypted EBS snapshots remain encrypted. Copies of unencrypted+-- snapshots remain unencrypted. -- -- Copying snapshots that were encrypted with non-default AWS Key Management -- Service (KMS) master keys is not supported at this time. ----- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-copy-snapshot.html Copying an Amazon EBS Snapshot> in the /AmazonElastic Compute Cloud User Guide for Linux/.+-- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-copy-snapshot.html Copying an Amazon EBS Snapshot> in the /AmazonElastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-CopySnapshot.html> module Network.AWS.EC2.CopySnapshot@@ -101,7 +101,7 @@     , _csPresignedUrl      = Nothing     } --- | A description for the new Amazon EBS snapshot.+-- | A description for the EBS snapshot. csDescription :: Lens' CopySnapshot (Maybe Text) csDescription = lens _csDescription (\s a -> s { _csDescription = a }) @@ -119,6 +119,9 @@ csDestinationRegion =     lens _csDestinationRegion (\s a -> s { _csDestinationRegion = a }) +-- | 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'. csDryRun :: Lens' CopySnapshot (Maybe Bool) csDryRun = lens _csDryRun (\s a -> s { _csDryRun = a }) @@ -128,9 +131,10 @@ -- The 'PresignedUrl' should use the snapshot source endpoint, the 'CopySnapshot' -- action, and include the 'SourceRegion', 'SourceSnapshotId', and 'DestinationRegion' -- parameters. The 'PresignedUrl' must be signed using AWS Signature Version 4.--- Because Amazon EBS snapshots are stored in Amazon S3, the signing algorithm--- for this parameter uses the same logic that is described in <http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html AuthenticatingRequests by Using Query Parameters (AWS Signature Version 4)> in the /AmazonSimple Storage Service API Reference/. An invalid or improperly signed 'PresignedUrl' will cause the copy operation to fail asynchronously, and the snapshot will--- move to an 'error' state.+-- Because EBS snapshots are stored in Amazon S3, the signing algorithm for this+-- parameter uses the same logic that is described in <http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html Authenticating Requests byUsing Query Parameters (AWS Signature Version 4)> in the /Amazon Simple StorageService API Reference/. An invalid or improperly signed 'PresignedUrl' will+-- cause the copy operation to fail asynchronously, and the snapshot will move+-- to an 'error' state. csPresignedUrl :: Lens' CopySnapshot (Maybe Text) csPresignedUrl = lens _csPresignedUrl (\s a -> s { _csPresignedUrl = a }) @@ -138,7 +142,7 @@ csSourceRegion :: Lens' CopySnapshot Text csSourceRegion = lens _csSourceRegion (\s a -> s { _csSourceRegion = a }) --- | The ID of the Amazon EBS snapshot to copy.+-- | The ID of the EBS snapshot to copy. csSourceSnapshotId :: Lens' CopySnapshot Text csSourceSnapshotId =     lens _csSourceSnapshotId (\s a -> s { _csSourceSnapshotId = a })
gen/Network/AWS/EC2/CreateCustomerGateway.hs view
@@ -40,6 +40,14 @@ -- -- For more information about VPN customer gateways, see <http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_VPN.html Adding a HardwareVirtual Private Gateway to Your VPC> in the /Amazon Virtual Private Cloud UserGuide/. --+-- You cannot create more than one customer gateway with the same VPN type, IP+-- address, and BGP ASN parameter values. If you run an identical request more+-- than one time, the first request creates the customer gateway, and subsequent+-- requests return information about the existing customer gateway. The+-- subsequent requests do not create new customer gateway resources.+--+--+-- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-CreateCustomerGateway.html> module Network.AWS.EC2.CreateCustomerGateway     (@@ -102,6 +110,9 @@ ccgBgpAsn :: Lens' CreateCustomerGateway Int ccgBgpAsn = lens _ccgBgpAsn (\s a -> s { _ccgBgpAsn = a }) +-- | 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'. ccgDryRun :: Lens' CreateCustomerGateway (Maybe Bool) ccgDryRun = lens _ccgDryRun (\s a -> s { _ccgDryRun = a }) 
gen/Network/AWS/EC2/CreateDhcpOptions.hs view
@@ -94,6 +94,9 @@     lens _cdoDhcpConfigurations (\s a -> s { _cdoDhcpConfigurations = a })         . _List +-- | 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'. cdoDryRun :: Lens' CreateDhcpOptions (Maybe Bool) cdoDryRun = lens _cdoDryRun (\s a -> s { _cdoDryRun = a }) 
gen/Network/AWS/EC2/CreateImage.hs view
@@ -30,7 +30,7 @@ -- mapping information for those volumes. When you launch an instance from this -- new AMI, the instance automatically launches with those additional volumes. ----- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html Creating Amazon EBS-Backed Linux AMIs> in the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html Creating Amazon EBS-Backed Linux AMIs> in the /Amazon Elastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-CreateImage.html> module Network.AWS.EC2.CreateImage@@ -107,6 +107,9 @@ ci1Description :: Lens' CreateImage (Maybe Text) ci1Description = lens _ci1Description (\s a -> s { _ci1Description = a }) +-- | 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'. ci1DryRun :: Lens' CreateImage (Maybe Bool) ci1DryRun = lens _ci1DryRun (\s a -> s { _ci1DryRun = a }) 
gen/Network/AWS/EC2/CreateInstanceExportTask.hs view
@@ -22,10 +22,10 @@ -- -- Derived from AWS service descriptions, licensed under Apache 2.0. --- | Exports a running or stopped instance to an Amazon S3 bucket.+-- | Exports a running or stopped instance to an S3 bucket. -- -- For information about the supported operating systems, image formats, and--- known limitations for the types of instances you can export, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ExportingEC2Instances.html ExportingEC2 Instances> in the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- known limitations for the types of instances you can export, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ExportingEC2Instances.html ExportingEC2 Instances> in the /Amazon Elastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-CreateInstanceExportTask.html> module Network.AWS.EC2.CreateInstanceExportTask@@ -86,6 +86,7 @@ cietDescription :: Lens' CreateInstanceExportTask (Maybe Text) cietDescription = lens _cietDescription (\s a -> s { _cietDescription = a }) +-- | The format and location for an instance export task. cietExportToS3Task :: Lens' CreateInstanceExportTask (Maybe ExportToS3TaskSpecification) cietExportToS3Task =     lens _cietExportToS3Task (\s a -> s { _cietExportToS3Task = a })@@ -114,6 +115,7 @@     { _cietrExportTask = Nothing     } +-- | Information about the instance export task. cietrExportTask :: Lens' CreateInstanceExportTaskResponse (Maybe ExportTask) cietrExportTask = lens _cietrExportTask (\s a -> s { _cietrExportTask = a }) 
gen/Network/AWS/EC2/CreateInternetGateway.hs view
@@ -65,6 +65,9 @@     { _cigDryRun = Nothing     } +-- | 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'. cigDryRun :: Lens' CreateInternetGateway (Maybe Bool) cigDryRun = lens _cigDryRun (\s a -> s { _cigDryRun = a }) 
gen/Network/AWS/EC2/CreateKeyPair.hs view
@@ -32,7 +32,7 @@ -- The key pair returned to you is available only in the region in which you -- create it. To create a key pair that is available in all regions, use 'ImportKeyPair'. ----- For more information about key pairs, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html Key Pairs> in the /Amazon ElasticCompute Cloud User Guide for Linux/.+-- For more information about key pairs, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html Key Pairs> in the /Amazon ElasticCompute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-CreateKeyPair.html> module Network.AWS.EC2.CreateKeyPair@@ -80,6 +80,9 @@     , _ckpDryRun  = Nothing     } +-- | 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'. ckpDryRun :: Lens' CreateKeyPair (Maybe Bool) ckpDryRun = lens _ckpDryRun (\s a -> s { _ckpDryRun = a }) 
gen/Network/AWS/EC2/CreateNetworkAcl.hs view
@@ -71,6 +71,9 @@     , _cnaDryRun = Nothing     } +-- | 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'. cnaDryRun :: Lens' CreateNetworkAcl (Maybe Bool) cnaDryRun = lens _cnaDryRun (\s a -> s { _cnaDryRun = a }) 
gen/Network/AWS/EC2/CreateNetworkAclEntry.hs view
@@ -125,6 +125,9 @@ cnaeCidrBlock :: Lens' CreateNetworkAclEntry Text cnaeCidrBlock = lens _cnaeCidrBlock (\s a -> s { _cnaeCidrBlock = a }) +-- | 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'. cnaeDryRun :: Lens' CreateNetworkAclEntry (Maybe Bool) cnaeDryRun = lens _cnaeDryRun (\s a -> s { _cnaeDryRun = a }) 
gen/Network/AWS/EC2/CreateNetworkInterface.hs view
@@ -25,7 +25,7 @@ -- | Creates a network interface in the specified subnet. -- -- For more information about network interfaces, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html Elastic Network Interfaces>--- in the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- in the /Amazon Elastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-CreateNetworkInterface.html> module Network.AWS.EC2.CreateNetworkInterface@@ -100,6 +100,9 @@ cniDescription :: Lens' CreateNetworkInterface (Maybe Text) cniDescription = lens _cniDescription (\s a -> s { _cniDescription = a }) +-- | 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'. cniDryRun :: Lens' CreateNetworkInterface (Maybe Bool) cniDryRun = lens _cniDryRun (\s a -> s { _cniDryRun = a }) @@ -126,7 +129,7 @@ -- option and specify more than one private IP address using 'privateIpAddresses'. -- -- The number of IP addresses you can assign to a network interface varies by--- instance type. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI Private IP Addresses Per ENI PerInstance Type> in the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- instance type. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI Private IP Addresses Per ENI PerInstance Type> in the /Amazon Elastic Compute Cloud User Guide/. cniSecondaryPrivateIpAddressCount :: Lens' CreateNetworkInterface (Maybe Int) cniSecondaryPrivateIpAddressCount =     lens _cniSecondaryPrivateIpAddressCount
gen/Network/AWS/EC2/CreatePlacementGroup.hs view
@@ -25,7 +25,7 @@ -- | Creates a placement group that you launch cluster instances into. You must -- give the group a name that's unique within the scope of your account. ----- For more information about placement groups and cluster instances, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using_cluster_computing.html Cluster Instances> in the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- For more information about placement groups and cluster instances, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using_cluster_computing.html Cluster Instances> in the /Amazon Elastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-CreatePlacementGroup.html> module Network.AWS.EC2.CreatePlacementGroup@@ -75,6 +75,9 @@     , _cpgDryRun    = Nothing     } +-- | 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'. cpgDryRun :: Lens' CreatePlacementGroup (Maybe Bool) cpgDryRun = lens _cpgDryRun (\s a -> s { _cpgDryRun = a }) 
gen/Network/AWS/EC2/CreateReservedInstancesListing.hs view
@@ -38,7 +38,7 @@ -- Reserved Instance listings then become available for purchase. To view the -- details of your Reserved Instance listing, you can use the 'DescribeReservedInstancesListings' operation. ----- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html Reserved Instance Marketplace> in the /AmazonElastic Compute Cloud User Guide for Linux/.+-- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html Reserved Instance Marketplace> in the /AmazonElastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-CreateReservedInstancesListing.html> module Network.AWS.EC2.CreateReservedInstancesListing
gen/Network/AWS/EC2/CreateRoute.hs view
@@ -50,6 +50,7 @@     -- ** Request constructor     , createRoute     -- ** Request lenses+    , crClientToken     , crDestinationCidrBlock     , crDryRun     , crGatewayId@@ -62,6 +63,9 @@     , CreateRouteResponse     -- ** Response constructor     , createRouteResponse+    -- ** Response lenses+    , crrClientToken+    , crrReturn     ) where  import Network.AWS.Prelude@@ -70,7 +74,8 @@ import qualified GHC.Exts  data CreateRoute = CreateRoute-    { _crDestinationCidrBlock   :: Text+    { _crClientToken            :: Maybe Text+    , _crDestinationCidrBlock   :: Text     , _crDryRun                 :: Maybe Bool     , _crGatewayId              :: Maybe Text     , _crInstanceId             :: Maybe Text@@ -83,6 +88,8 @@ -- -- The fields accessible through corresponding lenses are: --+-- * 'crClientToken' @::@ 'Maybe' 'Text'+-- -- * 'crDestinationCidrBlock' @::@ 'Text' -- -- * 'crDryRun' @::@ 'Maybe' 'Bool'@@ -108,14 +115,23 @@     , _crInstanceId             = Nothing     , _crNetworkInterfaceId     = Nothing     , _crVpcPeeringConnectionId = Nothing+    , _crClientToken            = Nothing     } +-- | Unique, case-sensitive identifier you provide to ensure the idempotency of+-- the request. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html How to Ensure Idempotency>.+crClientToken :: Lens' CreateRoute (Maybe Text)+crClientToken = lens _crClientToken (\s a -> s { _crClientToken = a })+ -- | The CIDR address block used for the destination match. Routing decisions are -- based on the most specific match. crDestinationCidrBlock :: Lens' CreateRoute Text crDestinationCidrBlock =     lens _crDestinationCidrBlock (\s a -> s { _crDestinationCidrBlock = a }) +-- | 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'. crDryRun :: Lens' CreateRoute (Maybe Bool) crDryRun = lens _crDryRun (\s a -> s { _crDryRun = a }) @@ -144,18 +160,40 @@         (\s a -> s { _crVpcPeeringConnectionId = a })  data CreateRouteResponse = CreateRouteResponse-    deriving (Eq, Ord, Read, Show, Generic)+    { _crrClientToken :: Maybe Text+    , _crrReturn      :: Maybe Bool+    } deriving (Eq, Ord, Read, Show)  -- | 'CreateRouteResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'crrClientToken' @::@ 'Maybe' 'Text'+--+-- * 'crrReturn' @::@ 'Maybe' 'Bool'+-- createRouteResponse :: CreateRouteResponse createRouteResponse = CreateRouteResponse+    { _crrReturn      = Nothing+    , _crrClientToken = Nothing+    } +-- | Unique, case-sensitive identifier you provide to ensure the idempotency of+-- the request.+crrClientToken :: Lens' CreateRouteResponse (Maybe Text)+crrClientToken = lens _crrClientToken (\s a -> s { _crrClientToken = a })++-- | Returns 'true' if the request succeeds; otherwise, it returns an error.+crrReturn :: Lens' CreateRouteResponse (Maybe Bool)+crrReturn = lens _crrReturn (\s a -> s { _crrReturn = a })+ instance ToPath CreateRoute where     toPath = const "/"  instance ToQuery CreateRoute where     toQuery CreateRoute{..} = mconcat-        [ "DestinationCidrBlock"   =? _crDestinationCidrBlock+        [ "ClientToken"            =? _crClientToken+        , "DestinationCidrBlock"   =? _crDestinationCidrBlock         , "DryRun"                 =? _crDryRun         , "GatewayId"              =? _crGatewayId         , "InstanceId"             =? _crInstanceId@@ -171,4 +209,9 @@     type Rs CreateRoute = CreateRouteResponse      request  = post "CreateRoute"-    response = nullResponse CreateRouteResponse+    response = xmlResponse++instance FromXML CreateRouteResponse where+    parseXML x = CreateRouteResponse+        <$> x .@? "clientToken"+        <*> x .@? "return"
gen/Network/AWS/EC2/CreateRouteTable.hs view
@@ -71,6 +71,9 @@     , _crtDryRun = Nothing     } +-- | 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'. crtDryRun :: Lens' CreateRouteTable (Maybe Bool) crtDryRun = lens _crtDryRun (\s a -> s { _crtDryRun = a }) 
gen/Network/AWS/EC2/CreateSecurityGroup.hs view
@@ -25,7 +25,7 @@ -- | Creates a security group. -- -- A security group is for use with instances either in the EC2-Classic--- platform or in a specific VPC. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html Amazon EC2 SecurityGroups> in the /Amazon Elastic Compute Cloud User Guide for Linux/ and <http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html SecurityGroups for Your VPC> in the /Amazon Virtual Private Cloud User Guide/.+-- platform or in a specific VPC. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html Amazon EC2 SecurityGroups> in the /Amazon Elastic Compute Cloud User Guide/ and <http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html Security Groups forYour VPC> in the /Amazon Virtual Private Cloud User Guide/. -- -- EC2-Classic: You can have up to 500 security groups. --@@ -110,6 +110,9 @@ csgDescription :: Lens' CreateSecurityGroup Text csgDescription = lens _csgDescription (\s a -> s { _csgDescription = a }) +-- | 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'. csgDryRun :: Lens' CreateSecurityGroup (Maybe Bool) csgDryRun = lens _csgDryRun (\s a -> s { _csgDryRun = a }) 
gen/Network/AWS/EC2/CreateSnapshot.hs view
@@ -22,33 +22,32 @@ -- -- Derived from AWS service descriptions, licensed under Apache 2.0. --- | Creates a snapshot of an Amazon EBS volume and stores it in Amazon S3. You--- can use snapshots for backups, to make copies of Amazon EBS volumes, and to--- save data before shutting down an instance.+-- | Creates a snapshot of an EBS volume and stores it in Amazon S3. You can use+-- snapshots for backups, to make copies of EBS volumes, and to save data before+-- shutting down an instance. -- -- When a snapshot is created, any AWS Marketplace product codes that are -- associated with the source volume are propagated to the snapshot. -- -- You can take a snapshot of an attached volume that is in use. However,--- snapshots only capture data that has been written to your Amazon EBS volume--- at the time the snapshot command is issued; this may exclude any data that--- has been cached by any applications or the operating system. If you can pause--- any file systems on the volume long enough to take a snapshot, your snapshot--- should be complete. However, if you cannot pause all file writes to the--- volume, you should unmount the volume from within the instance, issue the--- snapshot command, and then remount the volume to ensure a consistent and--- complete snapshot. You may remount and use your volume while the snapshot--- status is 'pending'.+-- snapshots only capture data that has been written to your EBS volume at the+-- time the snapshot command is issued; this may exclude any data that has been+-- cached by any applications or the operating system. If you can pause any file+-- systems on the volume long enough to take a snapshot, your snapshot should be+-- complete. However, if you cannot pause all file writes to the volume, you+-- should unmount the volume from within the instance, issue the snapshot+-- command, and then remount the volume to ensure a consistent and complete+-- snapshot. You may remount and use your volume while the snapshot status is 'pending'. ----- To create a snapshot for Amazon EBS volumes that serve as root devices, you--- should stop the instance before taking the snapshot.+-- To create a snapshot for EBS volumes that serve as root devices, you should+-- stop the instance before taking the snapshot. -- -- Snapshots that are taken from encrypted volumes are automatically encrypted. -- Volumes that are created from encrypted snapshots are also automatically -- encrypted. Your encrypted volumes and any associated snapshots always remain -- protected. ----- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html Amazon Elastic Block Store> and <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html Amazon EBSEncryption> in the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html Amazon Elastic Block Store> and <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html Amazon EBSEncryption> in the /Amazon Elastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-CreateSnapshot.html> module Network.AWS.EC2.CreateSnapshot@@ -114,10 +113,13 @@ cs2Description :: Lens' CreateSnapshot (Maybe Text) cs2Description = lens _cs2Description (\s a -> s { _cs2Description = a }) +-- | 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'. cs2DryRun :: Lens' CreateSnapshot (Maybe Bool) cs2DryRun = lens _cs2DryRun (\s a -> s { _cs2DryRun = a }) --- | The ID of the Amazon EBS volume.+-- | The ID of the EBS volume. cs2VolumeId :: Lens' CreateSnapshot Text cs2VolumeId = lens _cs2VolumeId (\s a -> s { _cs2VolumeId = a }) @@ -207,7 +209,7 @@ csr1OwnerAlias :: Lens' CreateSnapshotResponse (Maybe Text) csr1OwnerAlias = lens _csr1OwnerAlias (\s a -> s { _csr1OwnerAlias = a }) --- | The AWS account ID of the Amazon EBS snapshot owner.+-- | The AWS account ID of the EBS snapshot owner. csr1OwnerId :: Lens' CreateSnapshotResponse Text csr1OwnerId = lens _csr1OwnerId (\s a -> s { _csr1OwnerId = a }) 
gen/Network/AWS/EC2/CreateSpotDatafeedSubscription.hs view
@@ -24,7 +24,7 @@  -- | Creates a data feed for Spot Instances, enabling you to view Spot Instance -- usage logs. You can create one data feed per AWS account. For more--- information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-data-feeds.html Spot Instance Data Feed> in the /Amazon Elastic Compute CloudUser Guide for Linux/.+-- information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-data-feeds.html Spot Instance Data Feed> in the /Amazon Elastic Compute CloudUser Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-CreateSpotDatafeedSubscription.html> module Network.AWS.EC2.CreateSpotDatafeedSubscription@@ -79,6 +79,9 @@ csdsBucket :: Lens' CreateSpotDatafeedSubscription Text csdsBucket = lens _csdsBucket (\s a -> s { _csdsBucket = a }) +-- | 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'. csdsDryRun :: Lens' CreateSpotDatafeedSubscription (Maybe Bool) csdsDryRun = lens _csdsDryRun (\s a -> s { _csdsDryRun = a }) 
gen/Network/AWS/EC2/CreateSubnet.hs view
@@ -113,6 +113,9 @@ cs1CidrBlock :: Lens' CreateSubnet Text cs1CidrBlock = lens _cs1CidrBlock (\s a -> s { _cs1CidrBlock = a }) +-- | 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'. cs1DryRun :: Lens' CreateSubnet (Maybe Bool) cs1DryRun = lens _cs1DryRun (\s a -> s { _cs1DryRun = a }) 
gen/Network/AWS/EC2/CreateTags.hs view
@@ -26,7 +26,7 @@ -- resources. Each resource can have a maximum of 10 tags. Each tag consists of -- a key and optional value. Tag keys must be unique per resource. ----- For more information about tags, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html Tagging Your Resources> in the /AmazonElastic Compute Cloud User Guide for Linux/.+-- For more information about tags, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html Tagging Your Resources> in the /AmazonElastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-CreateTags.html> module Network.AWS.EC2.CreateTags@@ -74,6 +74,9 @@     , _ct1Tags      = mempty     } +-- | 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'. ct1DryRun :: Lens' CreateTags (Maybe Bool) ct1DryRun = lens _ct1DryRun (\s a -> s { _ct1DryRun = a }) 
gen/Network/AWS/EC2/CreateVolume.hs view
@@ -22,20 +22,20 @@ -- -- Derived from AWS service descriptions, licensed under Apache 2.0. --- | Creates an Amazon EBS volume that can be attached to an instance in the same+-- | Creates an EBS volume that can be attached to an instance in the same -- Availability Zone. The volume is created in the regional endpoint that you -- send the HTTP request to. For more information see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>. ----- You can create a new empty volume or restore a volume from an Amazon EBS--- snapshot. Any AWS Marketplace product codes from the snapshot are propagated--- to the volume.+-- You can create a new empty volume or restore a volume from an EBS snapshot.+-- Any AWS Marketplace product codes from the snapshot are propagated to the+-- volume. -- -- You can create encrypted volumes with the 'Encrypted' parameter. Encrypted -- volumes may only be attached to instances that support Amazon EBS encryption. -- Volumes that are created from encrypted snapshots are also automatically--- encrypted. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html Amazon EBS Encryption> in the /AmazonElastic Compute Cloud User Guide for Linux/.+-- encrypted. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html Amazon EBS Encryption> in the /AmazonElastic Compute Cloud User Guide/. ----- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-creating-volume.html Creating or Restoring an Amazon EBS Volume> in the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-creating-volume.html Creating or Restoring an Amazon EBS Volume> in the /Amazon Elastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-CreateVolume.html> module Network.AWS.EC2.CreateVolume@@ -127,6 +127,9 @@ cv1AvailabilityZone =     lens _cv1AvailabilityZone (\s a -> s { _cv1AvailabilityZone = a }) +-- | 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'. cv1DryRun :: Lens' CreateVolume (Maybe Bool) cv1DryRun = lens _cv1DryRun (\s a -> s { _cv1DryRun = a }) @@ -135,7 +138,7 @@ -- Volumes that are created from encrypted snapshots are automatically -- encrypted. There is no way to create an encrypted volume from an unencrypted -- snapshot or vice versa. If your AMI uses encrypted volumes, you can only--- launch it on supported instance types. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html Amazon EBSEncryption> in the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- launch it on supported instance types. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html Amazon EBSEncryption> in the /Amazon Elastic Compute Cloud User Guide/. cv1Encrypted :: Lens' CreateVolume (Maybe Bool) cv1Encrypted = lens _cv1Encrypted (\s a -> s { _cv1Encrypted = a }) @@ -243,6 +246,7 @@     , _cvrKmsKeyId         = Nothing     } +-- | Information about the volume attachments. cvrAttachments :: Lens' CreateVolumeResponse [VolumeAttachment] cvrAttachments = lens _cvrAttachments (\s a -> s { _cvrAttachments = a }) . _List @@ -264,7 +268,7 @@ -- provisioned for the volume. For General Purpose (SSD) volumes, this -- represents the baseline performance of the volume and the rate at which the -- volume accumulates I/O credits for bursting. For more information on General--- Purpose (SSD) baseline performance, I/O credits, and bursting, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html Amazon EBSVolume Types> in the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- Purpose (SSD) baseline performance, I/O credits, and bursting, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html Amazon EBSVolume Types> in the /Amazon Elastic Compute Cloud User Guide/. -- -- Constraint: Range is 100 to 20000 for Provisioned IOPS (SSD) volumes and 3 -- to 10000 for General Purpose (SSD) volumes.
gen/Network/AWS/EC2/CreateVpc.hs view
@@ -85,6 +85,9 @@ cvCidrBlock :: Lens' CreateVpc Text cvCidrBlock = lens _cvCidrBlock (\s a -> s { _cvCidrBlock = a }) +-- | 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'. cvDryRun :: Lens' CreateVpc (Maybe Bool) cvDryRun = lens _cvDryRun (\s a -> s { _cvDryRun = a }) 
+ gen/Network/AWS/EC2/CreateVpcEndpoint.hs view
@@ -0,0 +1,183 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.EC2.CreateVpcEndpoint+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)+--+-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | Creates a VPC endpoint for a specified AWS service. An endpoint enables you+-- to create a private connection between your VPC and another AWS service in+-- your account. You can specify an endpoint policy to attach to the endpoint+-- that will control access to the service from your VPC. You can also specify+-- the VPC route tables that use the endpoint.+--+-- Currently, only endpoints to Amazon S3 are supported.+--+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-CreateVpcEndpoint.html>+module Network.AWS.EC2.CreateVpcEndpoint+    (+    -- * Request+      CreateVpcEndpoint+    -- ** Request constructor+    , createVpcEndpoint+    -- ** Request lenses+    , cveClientToken+    , cveDryRun+    , cvePolicyDocument+    , cveRouteTableIds+    , cveServiceName+    , cveVpcId++    -- * Response+    , CreateVpcEndpointResponse+    -- ** Response constructor+    , createVpcEndpointResponse+    -- ** Response lenses+    , cverClientToken+    , cverVpcEndpoint+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.EC2.Types+import qualified GHC.Exts++data CreateVpcEndpoint = CreateVpcEndpoint+    { _cveClientToken    :: Maybe Text+    , _cveDryRun         :: Maybe Bool+    , _cvePolicyDocument :: Maybe Text+    , _cveRouteTableIds  :: List "item" Text+    , _cveServiceName    :: Text+    , _cveVpcId          :: Text+    } deriving (Eq, Ord, Read, Show)++-- | 'CreateVpcEndpoint' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cveClientToken' @::@ 'Maybe' 'Text'+--+-- * 'cveDryRun' @::@ 'Maybe' 'Bool'+--+-- * 'cvePolicyDocument' @::@ 'Maybe' 'Text'+--+-- * 'cveRouteTableIds' @::@ ['Text']+--+-- * 'cveServiceName' @::@ 'Text'+--+-- * 'cveVpcId' @::@ 'Text'+--+createVpcEndpoint :: Text -- ^ 'cveVpcId'+                  -> Text -- ^ 'cveServiceName'+                  -> CreateVpcEndpoint+createVpcEndpoint p1 p2 = CreateVpcEndpoint+    { _cveVpcId          = p1+    , _cveServiceName    = p2+    , _cveDryRun         = Nothing+    , _cvePolicyDocument = Nothing+    , _cveRouteTableIds  = mempty+    , _cveClientToken    = Nothing+    }++-- | Unique, case-sensitive identifier you provide to ensure the idempotency of+-- the request. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html How to Ensure Idempotency>.+cveClientToken :: Lens' CreateVpcEndpoint (Maybe Text)+cveClientToken = lens _cveClientToken (\s a -> s { _cveClientToken = a })++-- | 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'.+cveDryRun :: Lens' CreateVpcEndpoint (Maybe Bool)+cveDryRun = lens _cveDryRun (\s a -> s { _cveDryRun = a })++-- | A policy to attach to the endpoint that controls access to the service. The+-- policy must be in valid JSON format. If this parameter is not specified, we+-- attach a default policy that allows full access to the service.+cvePolicyDocument :: Lens' CreateVpcEndpoint (Maybe Text)+cvePolicyDocument =+    lens _cvePolicyDocument (\s a -> s { _cvePolicyDocument = a })++-- | One or more route table IDs.+cveRouteTableIds :: Lens' CreateVpcEndpoint [Text]+cveRouteTableIds = lens _cveRouteTableIds (\s a -> s { _cveRouteTableIds = a }) . _List++-- | The AWS service name, in the form com.amazonaws.<region>.<service>. To get a+-- list of available services, use the DescribeVpcEndpointServices request.+cveServiceName :: Lens' CreateVpcEndpoint Text+cveServiceName = lens _cveServiceName (\s a -> s { _cveServiceName = a })++-- | The ID of the VPC in which the endpoint will be used.+cveVpcId :: Lens' CreateVpcEndpoint Text+cveVpcId = lens _cveVpcId (\s a -> s { _cveVpcId = a })++data CreateVpcEndpointResponse = CreateVpcEndpointResponse+    { _cverClientToken :: Maybe Text+    , _cverVpcEndpoint :: Maybe VpcEndpoint+    } deriving (Eq, Read, Show)++-- | 'CreateVpcEndpointResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cverClientToken' @::@ 'Maybe' 'Text'+--+-- * 'cverVpcEndpoint' @::@ 'Maybe' 'VpcEndpoint'+--+createVpcEndpointResponse :: CreateVpcEndpointResponse+createVpcEndpointResponse = CreateVpcEndpointResponse+    { _cverVpcEndpoint = Nothing+    , _cverClientToken = Nothing+    }++-- | Unique, case-sensitive identifier you provide to ensure the idempotency of+-- the request.+cverClientToken :: Lens' CreateVpcEndpointResponse (Maybe Text)+cverClientToken = lens _cverClientToken (\s a -> s { _cverClientToken = a })++-- | Information about the endpoint.+cverVpcEndpoint :: Lens' CreateVpcEndpointResponse (Maybe VpcEndpoint)+cverVpcEndpoint = lens _cverVpcEndpoint (\s a -> s { _cverVpcEndpoint = a })++instance ToPath CreateVpcEndpoint where+    toPath = const "/"++instance ToQuery CreateVpcEndpoint where+    toQuery CreateVpcEndpoint{..} = mconcat+        [ "ClientToken"    =? _cveClientToken+        , "DryRun"         =? _cveDryRun+        , "PolicyDocument" =? _cvePolicyDocument+        , "RouteTableId"   `toQueryList` _cveRouteTableIds+        , "ServiceName"    =? _cveServiceName+        , "VpcId"          =? _cveVpcId+        ]++instance ToHeaders CreateVpcEndpoint++instance AWSRequest CreateVpcEndpoint where+    type Sv CreateVpcEndpoint = EC2+    type Rs CreateVpcEndpoint = CreateVpcEndpointResponse++    request  = post "CreateVpcEndpoint"+    response = xmlResponse++instance FromXML CreateVpcEndpointResponse where+    parseXML x = CreateVpcEndpointResponse+        <$> x .@? "clientToken"+        <*> x .@? "vpcEndpoint"
gen/Network/AWS/EC2/CreateVpcPeeringConnection.hs view
@@ -87,6 +87,9 @@     , _cvpcPeerOwnerId = Nothing     } +-- | 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'. cvpcDryRun :: Lens' CreateVpcPeeringConnection (Maybe Bool) cvpcDryRun = lens _cvpcDryRun (\s a -> s { _cvpcDryRun = a }) 
gen/Network/AWS/EC2/CreateVpnConnection.hs view
@@ -104,6 +104,9 @@ cvcCustomerGatewayId =     lens _cvcCustomerGatewayId (\s a -> s { _cvcCustomerGatewayId = a }) +-- | 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'. cvcDryRun :: Lens' CreateVpnConnection (Maybe Bool) cvcDryRun = lens _cvcDryRun (\s a -> s { _cvcDryRun = a }) 
gen/Network/AWS/EC2/CreateVpnGateway.hs view
@@ -82,6 +82,9 @@ cvgAvailabilityZone =     lens _cvgAvailabilityZone (\s a -> s { _cvgAvailabilityZone = a }) +-- | 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'. cvgDryRun :: Lens' CreateVpnGateway (Maybe Bool) cvgDryRun = lens _cvgDryRun (\s a -> s { _cvgDryRun = a }) 
gen/Network/AWS/EC2/DeleteCustomerGateway.hs view
@@ -72,6 +72,9 @@ dcg1CustomerGatewayId =     lens _dcg1CustomerGatewayId (\s a -> s { _dcg1CustomerGatewayId = a }) +-- | 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'. dcg1DryRun :: Lens' DeleteCustomerGateway (Maybe Bool) dcg1DryRun = lens _dcg1DryRun (\s a -> s { _dcg1DryRun = a }) 
gen/Network/AWS/EC2/DeleteDhcpOptions.hs view
@@ -74,6 +74,9 @@ ddo1DhcpOptionsId =     lens _ddo1DhcpOptionsId (\s a -> s { _ddo1DhcpOptionsId = a }) +-- | 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'. ddo1DryRun :: Lens' DeleteDhcpOptions (Maybe Bool) ddo1DryRun = lens _ddo1DryRun (\s a -> s { _ddo1DryRun = a }) 
gen/Network/AWS/EC2/DeleteInternetGateway.hs view
@@ -67,6 +67,9 @@     , _dig2DryRun            = Nothing     } +-- | 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'. dig2DryRun :: Lens' DeleteInternetGateway (Maybe Bool) dig2DryRun = lens _dig2DryRun (\s a -> s { _dig2DryRun = a }) 
gen/Network/AWS/EC2/DeleteKeyPair.hs view
@@ -66,6 +66,9 @@     , _dkpDryRun  = Nothing     } +-- | 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'. dkpDryRun :: Lens' DeleteKeyPair (Maybe Bool) dkpDryRun = lens _dkpDryRun (\s a -> s { _dkpDryRun = a }) 
gen/Network/AWS/EC2/DeleteNetworkAcl.hs view
@@ -67,6 +67,9 @@     , _dnaDryRun       = Nothing     } +-- | 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'. dnaDryRun :: Lens' DeleteNetworkAcl (Maybe Bool) dnaDryRun = lens _dnaDryRun (\s a -> s { _dnaDryRun = a }) 
gen/Network/AWS/EC2/DeleteNetworkAclEntry.hs view
@@ -79,6 +79,9 @@     , _dnaeDryRun       = Nothing     } +-- | 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'. dnaeDryRun :: Lens' DeleteNetworkAclEntry (Maybe Bool) dnaeDryRun = lens _dnaeDryRun (\s a -> s { _dnaeDryRun = a }) 
gen/Network/AWS/EC2/DeleteNetworkInterface.hs view
@@ -67,6 +67,9 @@     , _dni2DryRun             = Nothing     } +-- | 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'. dni2DryRun :: Lens' DeleteNetworkInterface (Maybe Bool) dni2DryRun = lens _dni2DryRun (\s a -> s { _dni2DryRun = a }) 
gen/Network/AWS/EC2/DeletePlacementGroup.hs view
@@ -24,7 +24,7 @@  -- | Deletes the specified placement group. You must terminate all instances in -- the placement group before you can delete the placement group. For more--- information about placement groups and cluster instances, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using_cluster_computing.html ClusterInstances> in the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- information about placement groups and cluster instances, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using_cluster_computing.html ClusterInstances> in the /Amazon Elastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DeletePlacementGroup.html> module Network.AWS.EC2.DeletePlacementGroup@@ -68,6 +68,9 @@     , _dpgDryRun    = Nothing     } +-- | 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'. dpgDryRun :: Lens' DeletePlacementGroup (Maybe Bool) dpgDryRun = lens _dpgDryRun (\s a -> s { _dpgDryRun = a }) 
gen/Network/AWS/EC2/DeleteRoute.hs view
@@ -78,6 +78,9 @@ drDestinationCidrBlock =     lens _drDestinationCidrBlock (\s a -> s { _drDestinationCidrBlock = a }) +-- | 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'. drDryRun :: Lens' DeleteRoute (Maybe Bool) drDryRun = lens _drDryRun (\s a -> s { _drDryRun = a }) 
gen/Network/AWS/EC2/DeleteRouteTable.hs view
@@ -67,6 +67,9 @@     , _drt1DryRun       = Nothing     } +-- | 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'. drt1DryRun :: Lens' DeleteRouteTable (Maybe Bool) drt1DryRun = lens _drt1DryRun (\s a -> s { _drt1DryRun = a }) 
gen/Network/AWS/EC2/DeleteSecurityGroup.hs view
@@ -74,6 +74,9 @@     , _dsgGroupId   = Nothing     } +-- | 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'. dsgDryRun :: Lens' DeleteSecurityGroup (Maybe Bool) dsgDryRun = lens _dsgDryRun (\s a -> s { _dsgDryRun = a }) 
gen/Network/AWS/EC2/DeleteSnapshot.hs view
@@ -31,11 +31,11 @@ -- snapshots have been deleted, all active snapshots will have access to all the -- information needed to restore the volume. ----- You cannot delete a snapshot of the root device of an Amazon EBS volume used--- by a registered AMI. You must first de-register the AMI before you can delete--- the snapshot.+-- You cannot delete a snapshot of the root device of an EBS volume used by a+-- registered AMI. You must first de-register the AMI before you can delete the+-- snapshot. ----- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-deleting-snapshot.html Deleting an Amazon EBS Snapshot> in the /AmazonElastic Compute Cloud User Guide for Linux/.+-- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-deleting-snapshot.html Deleting an Amazon EBS Snapshot> in the /AmazonElastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DeleteSnapshot.html> module Network.AWS.EC2.DeleteSnapshot@@ -79,10 +79,13 @@     , _ds3DryRun     = Nothing     } +-- | 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'. ds3DryRun :: Lens' DeleteSnapshot (Maybe Bool) ds3DryRun = lens _ds3DryRun (\s a -> s { _ds3DryRun = a }) --- | The ID of the Amazon EBS snapshot.+-- | The ID of the EBS snapshot. ds3SnapshotId :: Lens' DeleteSnapshot Text ds3SnapshotId = lens _ds3SnapshotId (\s a -> s { _ds3SnapshotId = a }) 
gen/Network/AWS/EC2/DeleteSpotDatafeedSubscription.hs view
@@ -22,7 +22,7 @@ -- -- Derived from AWS service descriptions, licensed under Apache 2.0. --- | Deletes the data feed for Spot Instances. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-data-feeds.html SpotInstance Data Feed> in the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- | Deletes the data feed for Spot Instances. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-data-feeds.html SpotInstance Data Feed> in the /Amazon Elastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DeleteSpotDatafeedSubscription.html> module Network.AWS.EC2.DeleteSpotDatafeedSubscription@@ -60,6 +60,9 @@     { _dsds1DryRun = Nothing     } +-- | 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'. dsds1DryRun :: Lens' DeleteSpotDatafeedSubscription (Maybe Bool) dsds1DryRun = lens _dsds1DryRun (\s a -> s { _dsds1DryRun = a }) 
gen/Network/AWS/EC2/DeleteSubnet.hs view
@@ -67,6 +67,9 @@     , _ds2DryRun   = Nothing     } +-- | 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'. ds2DryRun :: Lens' DeleteSubnet (Maybe Bool) ds2DryRun = lens _ds2DryRun (\s a -> s { _ds2DryRun = a }) 
gen/Network/AWS/EC2/DeleteTags.hs view
@@ -25,7 +25,7 @@ -- | Deletes the specified set of tags from the specified set of resources. This -- call is designed to follow a 'DescribeTags' request. ----- For more information about tags, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html Tagging Your Resources> in the /AmazonElastic Compute Cloud User Guide for Linux/.+-- For more information about tags, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html Tagging Your Resources> in the /AmazonElastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DeleteTags.html> module Network.AWS.EC2.DeleteTags@@ -73,6 +73,9 @@     , _dt1Tags      = mempty     } +-- | 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'. dt1DryRun :: Lens' DeleteTags (Maybe Bool) dt1DryRun = lens _dt1DryRun (\s a -> s { _dt1DryRun = a }) 
gen/Network/AWS/EC2/DeleteVolume.hs view
@@ -22,12 +22,12 @@ -- -- Derived from AWS service descriptions, licensed under Apache 2.0. --- | Deletes the specified Amazon EBS volume. The volume must be in the 'available'--- state (not attached to an instance).+-- | Deletes the specified EBS volume. The volume must be in the 'available' state+-- (not attached to an instance). -- -- The volume may remain in the 'deleting' state for several minutes. ----- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-deleting-volume.html Deleting an Amazon EBS Volume> in the /AmazonElastic Compute Cloud User Guide for Linux/.+-- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-deleting-volume.html Deleting an Amazon EBS Volume> in the /AmazonElastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DeleteVolume.html> module Network.AWS.EC2.DeleteVolume@@ -71,6 +71,9 @@     , _dv4DryRun   = Nothing     } +-- | 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'. dv4DryRun :: Lens' DeleteVolume (Maybe Bool) dv4DryRun = lens _dv4DryRun (\s a -> s { _dv4DryRun = a }) 
gen/Network/AWS/EC2/DeleteVpc.hs view
@@ -70,6 +70,9 @@     , _dv3DryRun = Nothing     } +-- | 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'. dv3DryRun :: Lens' DeleteVpc (Maybe Bool) dv3DryRun = lens _dv3DryRun (\s a -> s { _dv3DryRun = a }) 
+ gen/Network/AWS/EC2/DeleteVpcEndpoints.hs view
@@ -0,0 +1,123 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.EC2.DeleteVpcEndpoints+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)+--+-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | Deletes one or more specified VPC endpoints. Deleting the endpoint also+-- deletes the endpoint routes in the route tables that were associated with the+-- endpoint.+--+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DeleteVpcEndpoints.html>+module Network.AWS.EC2.DeleteVpcEndpoints+    (+    -- * Request+      DeleteVpcEndpoints+    -- ** Request constructor+    , deleteVpcEndpoints+    -- ** Request lenses+    , dveDryRun+    , dveVpcEndpointIds++    -- * Response+    , DeleteVpcEndpointsResponse+    -- ** Response constructor+    , deleteVpcEndpointsResponse+    -- ** Response lenses+    , dverUnsuccessful+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.EC2.Types+import qualified GHC.Exts++data DeleteVpcEndpoints = DeleteVpcEndpoints+    { _dveDryRun         :: Maybe Bool+    , _dveVpcEndpointIds :: List "item" Text+    } deriving (Eq, Ord, Read, Show)++-- | 'DeleteVpcEndpoints' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dveDryRun' @::@ 'Maybe' 'Bool'+--+-- * 'dveVpcEndpointIds' @::@ ['Text']+--+deleteVpcEndpoints :: DeleteVpcEndpoints+deleteVpcEndpoints = DeleteVpcEndpoints+    { _dveDryRun         = Nothing+    , _dveVpcEndpointIds = mempty+    }++-- | 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'.+dveDryRun :: Lens' DeleteVpcEndpoints (Maybe Bool)+dveDryRun = lens _dveDryRun (\s a -> s { _dveDryRun = a })++-- | One or more endpoint IDs.+dveVpcEndpointIds :: Lens' DeleteVpcEndpoints [Text]+dveVpcEndpointIds =+    lens _dveVpcEndpointIds (\s a -> s { _dveVpcEndpointIds = a })+        . _List++newtype DeleteVpcEndpointsResponse = DeleteVpcEndpointsResponse+    { _dverUnsuccessful :: List "item" UnsuccessfulItem+    } deriving (Eq, Read, Show, Monoid, Semigroup)++-- | 'DeleteVpcEndpointsResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dverUnsuccessful' @::@ ['UnsuccessfulItem']+--+deleteVpcEndpointsResponse :: DeleteVpcEndpointsResponse+deleteVpcEndpointsResponse = DeleteVpcEndpointsResponse+    { _dverUnsuccessful = mempty+    }++-- | Information about the endpoints that were not successfully deleted.+dverUnsuccessful :: Lens' DeleteVpcEndpointsResponse [UnsuccessfulItem]+dverUnsuccessful = lens _dverUnsuccessful (\s a -> s { _dverUnsuccessful = a }) . _List++instance ToPath DeleteVpcEndpoints where+    toPath = const "/"++instance ToQuery DeleteVpcEndpoints where+    toQuery DeleteVpcEndpoints{..} = mconcat+        [ "DryRun"        =? _dveDryRun+        , "VpcEndpointId" `toQueryList` _dveVpcEndpointIds+        ]++instance ToHeaders DeleteVpcEndpoints++instance AWSRequest DeleteVpcEndpoints where+    type Sv DeleteVpcEndpoints = EC2+    type Rs DeleteVpcEndpoints = DeleteVpcEndpointsResponse++    request  = post "DeleteVpcEndpoints"+    response = xmlResponse++instance FromXML DeleteVpcEndpointsResponse where+    parseXML x = DeleteVpcEndpointsResponse+        <$> x .@? "unsuccessful" .!@ mempty
gen/Network/AWS/EC2/DeleteVpcPeeringConnection.hs view
@@ -71,6 +71,9 @@     , _dvpcDryRun                 = Nothing     } +-- | 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'. dvpcDryRun :: Lens' DeleteVpcPeeringConnection (Maybe Bool) dvpcDryRun = lens _dvpcDryRun (\s a -> s { _dvpcDryRun = a }) 
gen/Network/AWS/EC2/DeleteVpnConnection.hs view
@@ -75,6 +75,9 @@     , _dvcDryRun          = Nothing     } +-- | 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'. dvcDryRun :: Lens' DeleteVpnConnection (Maybe Bool) dvcDryRun = lens _dvcDryRun (\s a -> s { _dvcDryRun = a }) 
gen/Network/AWS/EC2/DeleteVpnGateway.hs view
@@ -70,6 +70,9 @@     , _dvgDryRun       = Nothing     } +-- | 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'. dvgDryRun :: Lens' DeleteVpnGateway (Maybe Bool) dvgDryRun = lens _dvgDryRun (\s a -> s { _dvgDryRun = a }) 
gen/Network/AWS/EC2/DeregisterImage.hs view
@@ -69,6 +69,9 @@     , _diDryRun  = Nothing     } +-- | 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'. diDryRun :: Lens' DeregisterImage (Maybe Bool) diDryRun = lens _diDryRun (\s a -> s { _diDryRun = a }) 
gen/Network/AWS/EC2/DescribeAccountAttributes.hs view
@@ -92,6 +92,9 @@     lens _daaAttributeNames (\s a -> s { _daaAttributeNames = a })         . _List +-- | 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'. daaDryRun :: Lens' DescribeAccountAttributes (Maybe Bool) daaDryRun = lens _daaDryRun (\s a -> s { _daaDryRun = a }) 
gen/Network/AWS/EC2/DescribeAddresses.hs view
@@ -25,7 +25,7 @@ -- | Describes one or more of your Elastic IP addresses. -- -- An Elastic IP address is for use in either the EC2-Classic platform or in a--- VPC. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP Addresses> in the /Amazon ElasticCompute Cloud User Guide for Linux/.+-- VPC. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP Addresses> in the /Amazon ElasticCompute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeAddresses.html> module Network.AWS.EC2.DescribeAddresses@@ -86,6 +86,9 @@ daAllocationIds :: Lens' DescribeAddresses [Text] daAllocationIds = lens _daAllocationIds (\s a -> s { _daAllocationIds = a }) . _List +-- | 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'. daDryRun :: Lens' DescribeAddresses (Maybe Bool) daDryRun = lens _daDryRun (\s a -> s { _daDryRun = a }) 
gen/Network/AWS/EC2/DescribeAvailabilityZones.hs view
@@ -27,7 +27,7 @@ -- there is an event impacting an Availability Zone, you can use this request to -- view the state and any provided message for that Availability Zone. ----- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html Regions and Availability Zones> in the /AmazonElastic Compute Cloud User Guide for Linux/.+-- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html Regions and Availability Zones> in the /AmazonElastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeAvailabilityZones.html> module Network.AWS.EC2.DescribeAvailabilityZones@@ -77,6 +77,9 @@     , _dazFilters   = mempty     } +-- | 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'. dazDryRun :: Lens' DescribeAvailabilityZones (Maybe Bool) dazDryRun = lens _dazDryRun (\s a -> s { _dazDryRun = a }) 
gen/Network/AWS/EC2/DescribeBundleTasks.hs view
@@ -84,6 +84,9 @@ dbtBundleIds :: Lens' DescribeBundleTasks [Text] dbtBundleIds = lens _dbtBundleIds (\s a -> s { _dbtBundleIds = a }) . _List +-- | 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'. dbtDryRun :: Lens' DescribeBundleTasks (Maybe Bool) dbtDryRun = lens _dbtDryRun (\s a -> s { _dbtDryRun = a }) 
gen/Network/AWS/EC2/DescribeClassicLinkInstances.hs view
@@ -86,6 +86,9 @@     , _dcliMaxResults  = Nothing     } +-- | 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'. dcliDryRun :: Lens' DescribeClassicLinkInstances (Maybe Bool) dcliDryRun = lens _dcliDryRun (\s a -> s { _dcliDryRun = a }) 
gen/Network/AWS/EC2/DescribeConversionTasks.hs view
@@ -22,7 +22,7 @@ -- -- Derived from AWS service descriptions, licensed under Apache 2.0. --- | Describes one or more of your conversion tasks. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UploadingYourInstancesandVolumes.html Using the Command Line Tools to Import Your Virtual Machine to Amazon EC2> in the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- | Describes one or more of your conversion tasks. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UploadingYourInstancesandVolumes.html Using the Command Line Tools to Import Your Virtual Machine to Amazon EC2> in the /Amazon Elastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeConversionTasks.html> module Network.AWS.EC2.DescribeConversionTasks@@ -78,9 +78,13 @@     lens _dctConversionTaskIds (\s a -> s { _dctConversionTaskIds = a })         . _List +-- | 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'. dctDryRun :: Lens' DescribeConversionTasks (Maybe Bool) dctDryRun = lens _dctDryRun (\s a -> s { _dctDryRun = a }) +-- | One or more filters. dctFilters :: Lens' DescribeConversionTasks [Filter] dctFilters = lens _dctFilters (\s a -> s { _dctFilters = a }) . _List @@ -99,6 +103,7 @@     { _dctrConversionTasks = mempty     } +-- | Information about the conversion tasks. dctrConversionTasks :: Lens' DescribeConversionTasksResponse [ConversionTask] dctrConversionTasks =     lens _dctrConversionTasks (\s a -> s { _dctrConversionTasks = a })
gen/Network/AWS/EC2/DescribeCustomerGateways.hs view
@@ -82,6 +82,9 @@     lens _dcgCustomerGatewayIds (\s a -> s { _dcgCustomerGatewayIds = a })         . _List +-- | 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'. dcgDryRun :: Lens' DescribeCustomerGateways (Maybe Bool) dcgDryRun = lens _dcgDryRun (\s a -> s { _dcgDryRun = a }) 
gen/Network/AWS/EC2/DescribeDhcpOptions.hs view
@@ -82,6 +82,9 @@     lens _ddoDhcpOptionsIds (\s a -> s { _ddoDhcpOptionsIds = a })         . _List +-- | 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'. ddoDryRun :: Lens' DescribeDhcpOptions (Maybe Bool) ddoDryRun = lens _ddoDryRun (\s a -> s { _ddoDryRun = a }) 
gen/Network/AWS/EC2/DescribeExportTasks.hs view
@@ -81,6 +81,7 @@     { _detrExportTasks = mempty     } +-- | Information about the export tasks. detrExportTasks :: Lens' DescribeExportTasksResponse [ExportTask] detrExportTasks = lens _detrExportTasks (\s a -> s { _detrExportTasks = a }) . _List 
gen/Network/AWS/EC2/DescribeImageAttribute.hs view
@@ -90,6 +90,9 @@ dia1Attribute :: Lens' DescribeImageAttribute ImageAttributeName dia1Attribute = lens _dia1Attribute (\s a -> s { _dia1Attribute = a }) +-- | 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'. dia1DryRun :: Lens' DescribeImageAttribute (Maybe Bool) dia1DryRun = lens _dia1DryRun (\s a -> s { _dia1DryRun = a }) 
gen/Network/AWS/EC2/DescribeImages.hs view
@@ -89,6 +89,9 @@     , _di2Filters         = mempty     } +-- | 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'. di2DryRun :: Lens' DescribeImages (Maybe Bool) di2DryRun = lens _di2DryRun (\s a -> s { _di2DryRun = a }) @@ -106,17 +109,17 @@ -- '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 Amazon EBS--- volume (for example, '/dev/sdh').+-- '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--- Amazon EBS volume.+-- '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 Amazon EBS--- volume, in GiB.+-- 'block-device-mapping.volume-size' - The volume size of the EBS volume, in+-- GiB. ----- 'block-device-mapping.volume-type' - The volume type of the Amazon EBS--- volume ('gp2' | 'standard' | 'io1').+-- '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).
+ gen/Network/AWS/EC2/DescribeImportImageTasks.hs view
@@ -0,0 +1,166 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.EC2.DescribeImportImageTasks+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)+--+-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | Displays details about an import virtual machine or import snapshot tasks+-- that are already created.+--+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeImportImageTasks.html>+module Network.AWS.EC2.DescribeImportImageTasks+    (+    -- * Request+      DescribeImportImageTasks+    -- ** Request constructor+    , describeImportImageTasks+    -- ** Request lenses+    , diitDryRun+    , diitFilters+    , diitImportTaskIds+    , diitMaxResults+    , diitNextToken++    -- * Response+    , DescribeImportImageTasksResponse+    -- ** Response constructor+    , describeImportImageTasksResponse+    -- ** Response lenses+    , diitrImportImageTasks+    , diitrNextToken+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.EC2.Types+import qualified GHC.Exts++data DescribeImportImageTasks = DescribeImportImageTasks+    { _diitDryRun        :: Maybe Bool+    , _diitFilters       :: List "Filter" Filter+    , _diitImportTaskIds :: List "ImportTaskId" Text+    , _diitMaxResults    :: Maybe Int+    , _diitNextToken     :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'DescribeImportImageTasks' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'diitDryRun' @::@ 'Maybe' 'Bool'+--+-- * 'diitFilters' @::@ ['Filter']+--+-- * 'diitImportTaskIds' @::@ ['Text']+--+-- * 'diitMaxResults' @::@ 'Maybe' 'Int'+--+-- * 'diitNextToken' @::@ 'Maybe' 'Text'+--+describeImportImageTasks :: DescribeImportImageTasks+describeImportImageTasks = DescribeImportImageTasks+    { _diitDryRun        = Nothing+    , _diitImportTaskIds = mempty+    , _diitNextToken     = Nothing+    , _diitMaxResults    = Nothing+    , _diitFilters       = mempty+    }++-- | 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'.+diitDryRun :: Lens' DescribeImportImageTasks (Maybe Bool)+diitDryRun = lens _diitDryRun (\s a -> s { _diitDryRun = a })++-- | One or more filters.+diitFilters :: Lens' DescribeImportImageTasks [Filter]+diitFilters = lens _diitFilters (\s a -> s { _diitFilters = a }) . _List++-- | A list of import image task IDs.+diitImportTaskIds :: Lens' DescribeImportImageTasks [Text]+diitImportTaskIds =+    lens _diitImportTaskIds (\s a -> s { _diitImportTaskIds = a })+        . _List++-- | The maximum number of results to return in a single request.+diitMaxResults :: Lens' DescribeImportImageTasks (Maybe Int)+diitMaxResults = lens _diitMaxResults (\s a -> s { _diitMaxResults = a })++-- | A token that indicates the next page of results.+diitNextToken :: Lens' DescribeImportImageTasks (Maybe Text)+diitNextToken = lens _diitNextToken (\s a -> s { _diitNextToken = a })++data DescribeImportImageTasksResponse = DescribeImportImageTasksResponse+    { _diitrImportImageTasks :: List "item" ImportImageTask+    , _diitrNextToken        :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'DescribeImportImageTasksResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'diitrImportImageTasks' @::@ ['ImportImageTask']+--+-- * 'diitrNextToken' @::@ 'Maybe' 'Text'+--+describeImportImageTasksResponse :: DescribeImportImageTasksResponse+describeImportImageTasksResponse = DescribeImportImageTasksResponse+    { _diitrImportImageTasks = mempty+    , _diitrNextToken        = Nothing+    }++-- | A list of zero or more import image tasks that are currently active or were+-- completed or canceled in the previous 7 days.+diitrImportImageTasks :: Lens' DescribeImportImageTasksResponse [ImportImageTask]+diitrImportImageTasks =+    lens _diitrImportImageTasks (\s a -> s { _diitrImportImageTasks = a })+        . _List++-- | The token to use to get the next page of results. This value is 'null' when+-- there are no more results to return.+diitrNextToken :: Lens' DescribeImportImageTasksResponse (Maybe Text)+diitrNextToken = lens _diitrNextToken (\s a -> s { _diitrNextToken = a })++instance ToPath DescribeImportImageTasks where+    toPath = const "/"++instance ToQuery DescribeImportImageTasks where+    toQuery DescribeImportImageTasks{..} = mconcat+        [ "DryRun"       =? _diitDryRun+        , "Filters"      `toQueryList` _diitFilters+        , "ImportTaskId" `toQueryList` _diitImportTaskIds+        , "MaxResults"   =? _diitMaxResults+        , "NextToken"    =? _diitNextToken+        ]++instance ToHeaders DescribeImportImageTasks++instance AWSRequest DescribeImportImageTasks where+    type Sv DescribeImportImageTasks = EC2+    type Rs DescribeImportImageTasks = DescribeImportImageTasksResponse++    request  = post "DescribeImportImageTasks"+    response = xmlResponse++instance FromXML DescribeImportImageTasksResponse where+    parseXML x = DescribeImportImageTasksResponse+        <$> x .@? "importImageTaskSet" .!@ mempty+        <*> x .@? "nextToken"
+ gen/Network/AWS/EC2/DescribeImportSnapshotTasks.hs view
@@ -0,0 +1,166 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.EC2.DescribeImportSnapshotTasks+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)+--+-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | Describes your import snapshot tasks.+--+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeImportSnapshotTasks.html>+module Network.AWS.EC2.DescribeImportSnapshotTasks+    (+    -- * Request+      DescribeImportSnapshotTasks+    -- ** Request constructor+    , describeImportSnapshotTasks+    -- ** Request lenses+    , distDryRun+    , distFilters+    , distImportTaskIds+    , distMaxResults+    , distNextToken++    -- * Response+    , DescribeImportSnapshotTasksResponse+    -- ** Response constructor+    , describeImportSnapshotTasksResponse+    -- ** Response lenses+    , distrImportSnapshotTasks+    , distrNextToken+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.EC2.Types+import qualified GHC.Exts++data DescribeImportSnapshotTasks = DescribeImportSnapshotTasks+    { _distDryRun        :: Maybe Bool+    , _distFilters       :: List "Filter" Filter+    , _distImportTaskIds :: List "ImportTaskId" Text+    , _distMaxResults    :: Maybe Int+    , _distNextToken     :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'DescribeImportSnapshotTasks' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'distDryRun' @::@ 'Maybe' 'Bool'+--+-- * 'distFilters' @::@ ['Filter']+--+-- * 'distImportTaskIds' @::@ ['Text']+--+-- * 'distMaxResults' @::@ 'Maybe' 'Int'+--+-- * 'distNextToken' @::@ 'Maybe' 'Text'+--+describeImportSnapshotTasks :: DescribeImportSnapshotTasks+describeImportSnapshotTasks = DescribeImportSnapshotTasks+    { _distDryRun        = Nothing+    , _distImportTaskIds = mempty+    , _distNextToken     = Nothing+    , _distMaxResults    = Nothing+    , _distFilters       = mempty+    }++-- | 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'.+distDryRun :: Lens' DescribeImportSnapshotTasks (Maybe Bool)+distDryRun = lens _distDryRun (\s a -> s { _distDryRun = a })++-- | One or more filters.+distFilters :: Lens' DescribeImportSnapshotTasks [Filter]+distFilters = lens _distFilters (\s a -> s { _distFilters = a }) . _List++-- | A list of import snapshot task IDs.+distImportTaskIds :: Lens' DescribeImportSnapshotTasks [Text]+distImportTaskIds =+    lens _distImportTaskIds (\s a -> s { _distImportTaskIds = a })+        . _List++-- | The maximum number of results to return in a single request.+distMaxResults :: Lens' DescribeImportSnapshotTasks (Maybe Int)+distMaxResults = lens _distMaxResults (\s a -> s { _distMaxResults = a })++-- | A token that indicates the next page of results.+distNextToken :: Lens' DescribeImportSnapshotTasks (Maybe Text)+distNextToken = lens _distNextToken (\s a -> s { _distNextToken = a })++data DescribeImportSnapshotTasksResponse = DescribeImportSnapshotTasksResponse+    { _distrImportSnapshotTasks :: List "item" ImportSnapshotTask+    , _distrNextToken           :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'DescribeImportSnapshotTasksResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'distrImportSnapshotTasks' @::@ ['ImportSnapshotTask']+--+-- * 'distrNextToken' @::@ 'Maybe' 'Text'+--+describeImportSnapshotTasksResponse :: DescribeImportSnapshotTasksResponse+describeImportSnapshotTasksResponse = DescribeImportSnapshotTasksResponse+    { _distrImportSnapshotTasks = mempty+    , _distrNextToken           = Nothing+    }++-- | A list of zero or more import snapshot tasks that are currently active or+-- were completed or canceled in the previous 7 days.+distrImportSnapshotTasks :: Lens' DescribeImportSnapshotTasksResponse [ImportSnapshotTask]+distrImportSnapshotTasks =+    lens _distrImportSnapshotTasks+        (\s a -> s { _distrImportSnapshotTasks = a })+            . _List++-- | The token to use to get the next page of results. This value is 'null' when+-- there are no more results to return.+distrNextToken :: Lens' DescribeImportSnapshotTasksResponse (Maybe Text)+distrNextToken = lens _distrNextToken (\s a -> s { _distrNextToken = a })++instance ToPath DescribeImportSnapshotTasks where+    toPath = const "/"++instance ToQuery DescribeImportSnapshotTasks where+    toQuery DescribeImportSnapshotTasks{..} = mconcat+        [ "DryRun"       =? _distDryRun+        , "Filters"      `toQueryList` _distFilters+        , "ImportTaskId" `toQueryList` _distImportTaskIds+        , "MaxResults"   =? _distMaxResults+        , "NextToken"    =? _distNextToken+        ]++instance ToHeaders DescribeImportSnapshotTasks++instance AWSRequest DescribeImportSnapshotTasks where+    type Sv DescribeImportSnapshotTasks = EC2+    type Rs DescribeImportSnapshotTasks = DescribeImportSnapshotTasksResponse++    request  = post "DescribeImportSnapshotTasks"+    response = xmlResponse++instance FromXML DescribeImportSnapshotTasksResponse where+    parseXML x = DescribeImportSnapshotTasksResponse+        <$> x .@? "importSnapshotTaskSet" .!@ mempty+        <*> x .@? "nextToken"
gen/Network/AWS/EC2/DescribeInstanceAttribute.hs view
@@ -92,6 +92,9 @@ diaAttribute :: Lens' DescribeInstanceAttribute InstanceAttributeName diaAttribute = lens _diaAttribute (\s a -> s { _diaAttribute = a }) +-- | 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'. diaDryRun :: Lens' DescribeInstanceAttribute (Maybe Bool) diaDryRun = lens _diaDryRun (\s a -> s { _diaDryRun = a }) 
gen/Network/AWS/EC2/DescribeInstanceStatus.hs view
@@ -22,63 +22,23 @@ -- -- Derived from AWS service descriptions, licensed under Apache 2.0. --- | Describes the status of one or more instances, including any scheduled events.+-- | Describes the status of one or more instances. ----- Instance status has two main components:+-- Instance status includes the following components: ----- System Status reports impaired functionality that stems from issues--- related to the systems that support an instance, such as such as hardware--- failures and network connectivity problems. This call reports such problems--- as impaired reachability.+-- Status checks - Amazon EC2 performs status checks on running EC2 instances+-- to identify hardware and software issues. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-system-instance-status-check.html StatusChecks for Your Instances> and <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstances.html Troubleshooting Instances with Failed StatusChecks> in the /Amazon Elastic Compute Cloud User Guide/. ----- Instance Status reports impaired functionality that arises from problems--- internal to the instance. This call reports such problems as impaired--- reachability.+-- Scheduled events - Amazon EC2 can schedule events (such as reboot, stop,+-- or terminate) for your instances related to hardware issues, software+-- updates, or system maintenance. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-instances-status-check_sched.html Scheduled Eventsfor Your Instances> in the /Amazon Elastic Compute Cloud User Guide/. ----- Instance status provides information about four types of scheduled events--- for an instance that may require your attention:+-- Instance state - You can manage your instances from the moment you launch+-- them through their termination. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html Instance Lifecycle>+-- in the /Amazon Elastic Compute Cloud User Guide/. ----- Scheduled Reboot: When Amazon EC2 determines that an instance must be--- rebooted, the instances status returns one of two event codes: 'system-reboot'--- or 'instance-reboot'. System reboot commonly occurs if certain maintenance or--- upgrade operations require a reboot of the underlying host that supports an--- instance. Instance reboot commonly occurs if the instance must be rebooted,--- rather than the underlying host. Rebooting events include a scheduled start--- and end time. ----- System Maintenance: When Amazon EC2 determines that an instance requires--- maintenance that requires power or network impact, the instance status is the--- event code 'system-maintenance'. System maintenance is either power maintenance--- or network maintenance. For power maintenance, your instance will be--- unavailable for a brief period of time and then rebooted. For network--- maintenance, your instance will experience a brief loss of network--- connectivity. System maintenance events include a scheduled start and end--- time. You will also be notified by email if one of your instances is set for--- system maintenance. The email message indicates when your instance is--- scheduled for maintenance. ----- Scheduled Retirement: When Amazon EC2 determines that an instance must be--- shut down, the instance status is the event code 'instance-retirement'.--- Retirement commonly occurs when the underlying host is degraded and must be--- replaced. Retirement events include a scheduled start and end time. You will--- also be notified by email if one of your instances is set to retiring. The--- email message indicates when your instance will be permanently retired.------ Scheduled Stop: When Amazon EC2 determines that an instance must be shut--- down, the instances status returns an event code called 'instance-stop'. Stop--- events include a scheduled start and end time. You will also be notified by--- email if one of your instances is set to stop. The email message indicates--- when your instance will be stopped.------ When your instance is retired, it will either be terminated (if its root--- device type is the instance-store) or stopped (if its root device type is an--- EBS volume). Instances stopped due to retirement will not be restarted, but--- you can do so manually. You can also avoid retirement of EBS-backed instances--- by manually restarting your instance when its event code is 'instance-retirement'. This ensures that your instance is started on a different underlying host.------ For more information about failed status checks, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstances.html TroubleshootingInstances with Failed Status Checks> in the /Amazon Elastic Compute Cloud UserGuide for Linux/. For more information about working with scheduled events,--- see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-instances-status-check_sched.html#schedevents_actions Working with an Instance That Has a Scheduled Event> in the /Amazon ElasticCompute Cloud User Guide for Linux/.--- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeInstanceStatus.html> module Network.AWS.EC2.DescribeInstanceStatus     (@@ -143,6 +103,9 @@     , _disIncludeAllInstances = Nothing     } +-- | 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'. disDryRun :: Lens' DescribeInstanceStatus (Maybe Bool) disDryRun = lens _disDryRun (\s a -> s { _disDryRun = a }) @@ -150,20 +113,20 @@ -- -- 'availability-zone' - The Availability Zone of the instance. ----- 'event.code' - The code identifying the type of event ('instance-reboot' | 'system-reboot' | 'system-maintenance' | 'instance-retirement' | 'instance-stop').+-- 'event.code' - The code for the scheduled event ('instance-reboot' | 'system-reboot' | 'system-maintenance' | 'instance-retirement' | 'instance-stop'). -- -- 'event.description' - A description of the event. ----- 'event.not-after' - The latest end time for the scheduled event, for--- example: '2010-09-15T17:15:20.000Z'.+-- 'event.not-after' - The latest end time for the scheduled event (for+-- example, '2014-09-15T17:15:20.000Z'). ----- 'event.not-before' - The earliest start time for the scheduled event, for--- example: '2010-09-15T17:15:20.000Z'.+-- 'event.not-before' - The earliest start time for the scheduled event (for+-- example, '2014-09-15T17:15:20.000Z'). ----- 'instance-state-code' - A code representing the state of the instance, as a--- 16-bit unsigned integer. The high byte is an opaque internal value and should--- be ignored. The low byte is set based on the state represented. The valid--- values are 0 (pending), 16 (running), 32 (shutting-down), 48 (terminated), 64+-- 'instance-state-code' - The code for the instance state, as a 16-bit+-- unsigned integer. The high byte is an opaque internal value and should be+-- ignored. The low byte is set based on the state represented. The valid values+-- are 0 (pending), 16 (running), 32 (shutting-down), 48 (terminated), 64 -- (stopping), and 80 (stopped). -- -- 'instance-state-name' - The state of the instance ('pending' | 'running' | 'shutting-down' | 'terminated' | 'stopping' | 'stopped').
gen/Network/AWS/EC2/DescribeInstances.hs view
@@ -92,6 +92,9 @@     , _di1MaxResults  = Nothing     } +-- | 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'. di1DryRun :: Lens' DescribeInstances (Maybe Bool) di1DryRun = lens _di1DryRun (\s a -> s { _di1DryRun = a }) @@ -101,18 +104,18 @@ -- -- 'availability-zone' - The Availability Zone of the instance. ----- 'block-device-mapping.attach-time' - The attach time for an Amazon EBS--- volume mapped to the instance, for example, '2010-09-15T17:15:20.000Z'.+-- 'block-device-mapping.attach-time' - The attach time for an EBS volume+-- mapped to the instance, for example, '2010-09-15T17:15:20.000Z'. -- -- 'block-device-mapping.delete-on-termination' - A Boolean that indicates--- whether the Amazon EBS volume is deleted on instance termination.+-- whether the EBS volume is deleted on instance termination. ----- 'block-device-mapping.device-name' - The device name for the Amazon EBS--- volume (for example, '/dev/sdh' or 'xvdh').+-- 'block-device-mapping.device-name' - The device name for the EBS volume (for+-- example, '/dev/sdh' or 'xvdh'). ----- 'block-device-mapping.status' - The status for the Amazon EBS volume ('attaching' | 'attached' | 'detaching' | 'detached').+-- 'block-device-mapping.status' - The status for the EBS volume ('attaching' | 'attached' | 'detaching' | 'detached'). ----- 'block-device-mapping.volume-id' - The volume ID of the Amazon EBS volume.+-- 'block-device-mapping.volume-id' - The volume ID of the EBS volume. -- -- 'client-token' - The idempotency token you provided when you launched the -- instance.
gen/Network/AWS/EC2/DescribeInternetGateways.hs view
@@ -72,6 +72,9 @@     , _dig1Filters            = mempty     } +-- | 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'. dig1DryRun :: Lens' DescribeInternetGateways (Maybe Bool) dig1DryRun = lens _dig1DryRun (\s a -> s { _dig1DryRun = a }) 
gen/Network/AWS/EC2/DescribeKeyPairs.hs view
@@ -24,7 +24,7 @@  -- | Describes one or more of your key pairs. ----- For more information about key pairs, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html Key Pairs> in the /Amazon ElasticCompute Cloud User Guide for Linux/.+-- For more information about key pairs, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html Key Pairs> in the /Amazon ElasticCompute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeKeyPairs.html> module Network.AWS.EC2.DescribeKeyPairs@@ -74,6 +74,9 @@     , _dkp1Filters  = mempty     } +-- | 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'. dkp1DryRun :: Lens' DescribeKeyPairs (Maybe Bool) dkp1DryRun = lens _dkp1DryRun (\s a -> s { _dkp1DryRun = a }) 
+ gen/Network/AWS/EC2/DescribeMovingAddresses.hs view
@@ -0,0 +1,176 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.EC2.DescribeMovingAddresses+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)+--+-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | Describes your Elastic IP addresses that are being moved to the EC2-VPC+-- platform, or that are being restored to the EC2-Classic platform. This+-- request does not return information about any other Elastic IP addresses in+-- your account.+--+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeMovingAddresses.html>+module Network.AWS.EC2.DescribeMovingAddresses+    (+    -- * Request+      DescribeMovingAddresses+    -- ** Request constructor+    , describeMovingAddresses+    -- ** Request lenses+    , dmaDryRun+    , dmaFilters+    , dmaMaxResults+    , dmaNextToken+    , dmaPublicIps++    -- * Response+    , DescribeMovingAddressesResponse+    -- ** Response constructor+    , describeMovingAddressesResponse+    -- ** Response lenses+    , dmarMovingAddressStatuses+    , dmarNextToken+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.EC2.Types+import qualified GHC.Exts++data DescribeMovingAddresses = DescribeMovingAddresses+    { _dmaDryRun     :: Maybe Bool+    , _dmaFilters    :: List "Filter" Filter+    , _dmaMaxResults :: Maybe Int+    , _dmaNextToken  :: Maybe Text+    , _dmaPublicIps  :: List "item" Text+    } deriving (Eq, Read, Show)++-- | 'DescribeMovingAddresses' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dmaDryRun' @::@ 'Maybe' 'Bool'+--+-- * 'dmaFilters' @::@ ['Filter']+--+-- * 'dmaMaxResults' @::@ 'Maybe' 'Int'+--+-- * 'dmaNextToken' @::@ 'Maybe' 'Text'+--+-- * 'dmaPublicIps' @::@ ['Text']+--+describeMovingAddresses :: DescribeMovingAddresses+describeMovingAddresses = DescribeMovingAddresses+    { _dmaDryRun     = Nothing+    , _dmaPublicIps  = mempty+    , _dmaNextToken  = Nothing+    , _dmaFilters    = mempty+    , _dmaMaxResults = Nothing+    }++-- | 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'.+dmaDryRun :: Lens' DescribeMovingAddresses (Maybe Bool)+dmaDryRun = lens _dmaDryRun (\s a -> s { _dmaDryRun = a })++-- | One or more filters.+--+-- 'moving-status' - The status of the Elastic IP address ('MovingToVpc' | 'RestoringToClassic').+--+--+dmaFilters :: Lens' DescribeMovingAddresses [Filter]+dmaFilters = lens _dmaFilters (\s a -> s { _dmaFilters = a }) . _List++-- | The maximum number of results to return for the request in a single page. The+-- remaining results of the initial request can be seen by sending another+-- request with the returned 'NextToken' value. This value can be between 5 and+-- 1000; if 'MaxResults' is given a value outside of this range, an error is+-- returned.+--+-- Default: If no value is provided, the default is 1000.+dmaMaxResults :: Lens' DescribeMovingAddresses (Maybe Int)+dmaMaxResults = lens _dmaMaxResults (\s a -> s { _dmaMaxResults = a })++-- | The token to use to retrieve the next page of results.+dmaNextToken :: Lens' DescribeMovingAddresses (Maybe Text)+dmaNextToken = lens _dmaNextToken (\s a -> s { _dmaNextToken = a })++-- | One or more Elastic IP addresses.+dmaPublicIps :: Lens' DescribeMovingAddresses [Text]+dmaPublicIps = lens _dmaPublicIps (\s a -> s { _dmaPublicIps = a }) . _List++data DescribeMovingAddressesResponse = DescribeMovingAddressesResponse+    { _dmarMovingAddressStatuses :: List "item" MovingAddressStatus+    , _dmarNextToken             :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'DescribeMovingAddressesResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dmarMovingAddressStatuses' @::@ ['MovingAddressStatus']+--+-- * 'dmarNextToken' @::@ 'Maybe' 'Text'+--+describeMovingAddressesResponse :: DescribeMovingAddressesResponse+describeMovingAddressesResponse = DescribeMovingAddressesResponse+    { _dmarMovingAddressStatuses = mempty+    , _dmarNextToken             = Nothing+    }++-- | The status for each Elastic IP address.+dmarMovingAddressStatuses :: Lens' DescribeMovingAddressesResponse [MovingAddressStatus]+dmarMovingAddressStatuses =+    lens _dmarMovingAddressStatuses+        (\s a -> s { _dmarMovingAddressStatuses = a })+            . _List++-- | The token to use to retrieve the next page of results. This value is 'null'+-- when there are no more results to return.+dmarNextToken :: Lens' DescribeMovingAddressesResponse (Maybe Text)+dmarNextToken = lens _dmarNextToken (\s a -> s { _dmarNextToken = a })++instance ToPath DescribeMovingAddresses where+    toPath = const "/"++instance ToQuery DescribeMovingAddresses where+    toQuery DescribeMovingAddresses{..} = mconcat+        [ "DryRun"     =? _dmaDryRun+        , "Filter"     `toQueryList` _dmaFilters+        , "MaxResults" =? _dmaMaxResults+        , "NextToken"  =? _dmaNextToken+        , "PublicIp"   `toQueryList` _dmaPublicIps+        ]++instance ToHeaders DescribeMovingAddresses++instance AWSRequest DescribeMovingAddresses where+    type Sv DescribeMovingAddresses = EC2+    type Rs DescribeMovingAddresses = DescribeMovingAddressesResponse++    request  = post "DescribeMovingAddresses"+    response = xmlResponse++instance FromXML DescribeMovingAddressesResponse where+    parseXML x = DescribeMovingAddressesResponse+        <$> x .@? "movingAddressStatusSet" .!@ mempty+        <*> x .@? "nextToken"
gen/Network/AWS/EC2/DescribeNetworkAcls.hs view
@@ -74,6 +74,9 @@     , _dna1Filters       = mempty     } +-- | 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'. dna1DryRun :: Lens' DescribeNetworkAcls (Maybe Bool) dna1DryRun = lens _dna1DryRun (\s a -> s { _dna1DryRun = a }) 
gen/Network/AWS/EC2/DescribeNetworkInterfaceAttribute.hs view
@@ -82,6 +82,9 @@ dniaAttribute :: Lens' DescribeNetworkInterfaceAttribute (Maybe NetworkInterfaceAttribute) dniaAttribute = lens _dniaAttribute (\s a -> s { _dniaAttribute = a }) +-- | 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'. dniaDryRun :: Lens' DescribeNetworkInterfaceAttribute (Maybe Bool) dniaDryRun = lens _dniaDryRun (\s a -> s { _dniaDryRun = a }) 
gen/Network/AWS/EC2/DescribeNetworkInterfaces.hs view
@@ -72,6 +72,9 @@     , _dni1Filters             = mempty     } +-- | 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'. dni1DryRun :: Lens' DescribeNetworkInterfaces (Maybe Bool) dni1DryRun = lens _dni1DryRun (\s a -> s { _dni1DryRun = a }) 
gen/Network/AWS/EC2/DescribePlacementGroups.hs view
@@ -23,7 +23,7 @@ -- Derived from AWS service descriptions, licensed under Apache 2.0.  -- | Describes one or more of your placement groups. For more information about--- placement groups and cluster instances, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using_cluster_computing.html Cluster Instances> in the /AmazonElastic Compute Cloud User Guide for Linux/.+-- placement groups and cluster instances, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using_cluster_computing.html Cluster Instances> in the /AmazonElastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribePlacementGroups.html> module Network.AWS.EC2.DescribePlacementGroups@@ -73,6 +73,9 @@     , _dpg1Filters    = mempty     } +-- | 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'. dpg1DryRun :: Lens' DescribePlacementGroups (Maybe Bool) dpg1DryRun = lens _dpg1DryRun (\s a -> s { _dpg1DryRun = a }) 
+ gen/Network/AWS/EC2/DescribePrefixLists.hs view
@@ -0,0 +1,176 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.EC2.DescribePrefixLists+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)+--+-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | Describes available AWS services in a prefix list format, which includes the+-- prefix list name and prefix list ID of the service and the IP address range+-- for the service. A prefix list ID is required for creating an outbound+-- security group rule that allows traffic from a VPC to access an AWS service+-- through a VPC endpoint.+--+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribePrefixLists.html>+module Network.AWS.EC2.DescribePrefixLists+    (+    -- * Request+      DescribePrefixLists+    -- ** Request constructor+    , describePrefixLists+    -- ** Request lenses+    , dplDryRun+    , dplFilters+    , dplMaxResults+    , dplNextToken+    , dplPrefixListIds++    -- * Response+    , DescribePrefixListsResponse+    -- ** Response constructor+    , describePrefixListsResponse+    -- ** Response lenses+    , dplrNextToken+    , dplrPrefixLists+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.EC2.Types+import qualified GHC.Exts++data DescribePrefixLists = DescribePrefixLists+    { _dplDryRun        :: Maybe Bool+    , _dplFilters       :: List "Filter" Filter+    , _dplMaxResults    :: Maybe Int+    , _dplNextToken     :: Maybe Text+    , _dplPrefixListIds :: List "item" Text+    } deriving (Eq, Read, Show)++-- | 'DescribePrefixLists' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dplDryRun' @::@ 'Maybe' 'Bool'+--+-- * 'dplFilters' @::@ ['Filter']+--+-- * 'dplMaxResults' @::@ 'Maybe' 'Int'+--+-- * 'dplNextToken' @::@ 'Maybe' 'Text'+--+-- * 'dplPrefixListIds' @::@ ['Text']+--+describePrefixLists :: DescribePrefixLists+describePrefixLists = DescribePrefixLists+    { _dplDryRun        = Nothing+    , _dplPrefixListIds = mempty+    , _dplFilters       = mempty+    , _dplMaxResults    = Nothing+    , _dplNextToken     = Nothing+    }++-- | 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'.+dplDryRun :: Lens' DescribePrefixLists (Maybe Bool)+dplDryRun = lens _dplDryRun (\s a -> s { _dplDryRun = a })++-- | One or more filters.+--+-- 'prefix-list-id': The ID of a prefix list.+--+-- 'prefix-list-name': The name of a prefix list.+--+--+dplFilters :: Lens' DescribePrefixLists [Filter]+dplFilters = lens _dplFilters (\s a -> s { _dplFilters = a }) . _List++-- | The maximum number of items to return for this request. The request returns a+-- token that you can specify in a subsequent call to get the next set of+-- results.+--+-- Constraint: If the value specified is greater than 1000, we return only 1000+-- items.+dplMaxResults :: Lens' DescribePrefixLists (Maybe Int)+dplMaxResults = lens _dplMaxResults (\s a -> s { _dplMaxResults = a })++-- | The token for the next set of items to return. (You received this token from+-- a prior call.)+dplNextToken :: Lens' DescribePrefixLists (Maybe Text)+dplNextToken = lens _dplNextToken (\s a -> s { _dplNextToken = a })++-- | One or more prefix list IDs.+dplPrefixListIds :: Lens' DescribePrefixLists [Text]+dplPrefixListIds = lens _dplPrefixListIds (\s a -> s { _dplPrefixListIds = a }) . _List++data DescribePrefixListsResponse = DescribePrefixListsResponse+    { _dplrNextToken   :: Maybe Text+    , _dplrPrefixLists :: List "item" PrefixList+    } deriving (Eq, Read, Show)++-- | 'DescribePrefixListsResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dplrNextToken' @::@ 'Maybe' 'Text'+--+-- * 'dplrPrefixLists' @::@ ['PrefixList']+--+describePrefixListsResponse :: DescribePrefixListsResponse+describePrefixListsResponse = DescribePrefixListsResponse+    { _dplrPrefixLists = mempty+    , _dplrNextToken   = Nothing+    }++-- | The token to use when requesting the next set of items. If there are no+-- additional items to return, the string is empty.+dplrNextToken :: Lens' DescribePrefixListsResponse (Maybe Text)+dplrNextToken = lens _dplrNextToken (\s a -> s { _dplrNextToken = a })++-- | All available prefix lists.+dplrPrefixLists :: Lens' DescribePrefixListsResponse [PrefixList]+dplrPrefixLists = lens _dplrPrefixLists (\s a -> s { _dplrPrefixLists = a }) . _List++instance ToPath DescribePrefixLists where+    toPath = const "/"++instance ToQuery DescribePrefixLists where+    toQuery DescribePrefixLists{..} = mconcat+        [ "DryRun"       =? _dplDryRun+        , "Filter"       `toQueryList` _dplFilters+        , "MaxResults"   =? _dplMaxResults+        , "NextToken"    =? _dplNextToken+        , "PrefixListId" `toQueryList` _dplPrefixListIds+        ]++instance ToHeaders DescribePrefixLists++instance AWSRequest DescribePrefixLists where+    type Sv DescribePrefixLists = EC2+    type Rs DescribePrefixLists = DescribePrefixListsResponse++    request  = post "DescribePrefixLists"+    response = xmlResponse++instance FromXML DescribePrefixListsResponse where+    parseXML x = DescribePrefixListsResponse+        <$> x .@? "nextToken"+        <*> x .@? "prefixListSet" .!@ mempty
gen/Network/AWS/EC2/DescribeRegions.hs view
@@ -74,6 +74,9 @@     , _dr1Filters     = mempty     } +-- | 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'. dr1DryRun :: Lens' DescribeRegions (Maybe Bool) dr1DryRun = lens _dr1DryRun (\s a -> s { _dr1DryRun = a }) 
gen/Network/AWS/EC2/DescribeReservedInstances.hs view
@@ -24,7 +24,7 @@  -- | Describes one or more of the Reserved Instances that you purchased. ----- For more information about Reserved Instances, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts-on-demand-reserved-instances.html Reserved Instances> in the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- For more information about Reserved Instances, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts-on-demand-reserved-instances.html Reserved Instances> in the /Amazon Elastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeReservedInstances.html> module Network.AWS.EC2.DescribeReservedInstances@@ -79,6 +79,9 @@     , _driOfferingType         = Nothing     } +-- | 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'. driDryRun :: Lens' DescribeReservedInstances (Maybe Bool) driDryRun = lens _driDryRun (\s a -> s { _driDryRun = a }) @@ -106,7 +109,7 @@ -- 'start' - The time at which the Reserved Instance purchase request was -- placed (for example, 2014-08-07T11:54:42.000Z). ----- 'state' - The state of the Reserved Instance ('pending-payment' | 'active' | 'payment-failed' | 'retired').+-- 'state' - The state of the Reserved Instance ('payment-pending' | 'active' | 'payment-failed' | 'retired'). -- -- 'tag':/key/=/value/ - The key/value combination of a tag assigned to the -- resource.
gen/Network/AWS/EC2/DescribeReservedInstancesListings.hs view
@@ -42,7 +42,7 @@ -- until your demand is met. You are charged based on the total price of all of -- the listings that you purchase. ----- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html Reserved Instance Marketplace> in the /AmazonElastic Compute Cloud User Guide for Linux/.+-- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html Reserved Instance Marketplace> in the /AmazonElastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeReservedInstancesListings.html> module Network.AWS.EC2.DescribeReservedInstancesListings
gen/Network/AWS/EC2/DescribeReservedInstancesModifications.hs view
@@ -28,7 +28,7 @@ -- about the specific modification is returned. -- -- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-modifying.html Modifying Reserved Instances> in the Amazon Elastic--- Compute Cloud User Guide for Linux.+-- Compute Cloud User Guide. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeReservedInstancesModifications.html> module Network.AWS.EC2.DescribeReservedInstancesModifications
gen/Network/AWS/EC2/DescribeReservedInstancesOfferings.hs view
@@ -28,7 +28,7 @@ -- errors, and you pay a lower usage rate than the rate charged for On-Demand -- instances for the actual time used. ----- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html Reserved Instance Marketplace> in the /AmazonElastic Compute Cloud User Guide for Linux/.+-- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html Reserved Instance Marketplace> in the /AmazonElastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeReservedInstancesOfferings.html> module Network.AWS.EC2.DescribeReservedInstancesOfferings@@ -139,6 +139,9 @@ drioAvailabilityZone =     lens _drioAvailabilityZone (\s a -> s { _drioAvailabilityZone = a }) +-- | 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'. drioDryRun :: Lens' DescribeReservedInstancesOfferings (Maybe Bool) drioDryRun = lens _drioDryRun (\s a -> s { _drioDryRun = a }) @@ -185,7 +188,8 @@     lens _drioInstanceTenancy (\s a -> s { _drioInstanceTenancy = a })  -- | The instance type on which the Reserved Instance can be used. For more--- information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html Instance Types> in the /Amazon Elastic Compute Cloud UserGuide for Linux/.+-- information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html Instance Types> in the /Amazon Elastic Compute Cloud User Guide/+-- . drioInstanceType :: Lens' DescribeReservedInstancesOfferings (Maybe InstanceType) drioInstanceType = lens _drioInstanceType (\s a -> s { _drioInstanceType = a }) 
gen/Network/AWS/EC2/DescribeRouteTables.hs view
@@ -74,6 +74,9 @@     , _drt2Filters       = mempty     } +-- | 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'. drt2DryRun :: Lens' DescribeRouteTables (Maybe Bool) drt2DryRun = lens _drt2DryRun (\s a -> s { _drt2DryRun = a }) @@ -94,6 +97,9 @@ -- -- 'route.destination-cidr-block' - The CIDR range specified in a route in the -- table.+--+-- 'route.destination-prefix-list-id' - The ID (prefix) of the AWS service+-- specified in a route in the table. -- -- 'route.gateway-id' - The ID of a gateway specified in a route in the table. --
gen/Network/AWS/EC2/DescribeSecurityGroups.hs view
@@ -25,7 +25,7 @@ -- | Describes one or more of your security groups. -- -- A security group is for use with instances either in the EC2-Classic--- platform or in a specific VPC. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html Amazon EC2 SecurityGroups> in the /Amazon Elastic Compute Cloud User Guide for Linux/ and <http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html SecurityGroups for Your VPC> in the /Amazon Virtual Private Cloud User Guide/.+-- platform or in a specific VPC. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html Amazon EC2 SecurityGroups> in the /Amazon Elastic Compute Cloud User Guide/ and <http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html Security Groups forYour VPC> in the /Amazon Virtual Private Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeSecurityGroups.html> module Network.AWS.EC2.DescribeSecurityGroups@@ -80,12 +80,18 @@     , _dsg1Filters    = mempty     } +-- | 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'. dsg1DryRun :: Lens' DescribeSecurityGroups (Maybe Bool) dsg1DryRun = lens _dsg1DryRun (\s a -> s { _dsg1DryRun = a })  -- | One or more filters. -- -- 'description' - The description of the security group.+--+-- 'egress.ip-permission.prefix-list-id' - The ID (prefix) of the AWS service+-- to which the security group allows access. -- -- 'group-id' - The ID of the security group. --
gen/Network/AWS/EC2/DescribeSnapshotAttribute.hs view
@@ -25,8 +25,7 @@ -- | Describes the specified attribute of the specified snapshot. You can specify -- only one attribute at a time. ----- For more information about Amazon EBS snapshots, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSSnapshots.html Amazon EBS Snapshots> in--- the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- For more information about EBS snapshots, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSSnapshots.html Amazon EBS Snapshots> in the /Amazon Elastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeSnapshotAttribute.html> module Network.AWS.EC2.DescribeSnapshotAttribute@@ -84,10 +83,13 @@ dsaAttribute :: Lens' DescribeSnapshotAttribute SnapshotAttributeName dsaAttribute = lens _dsaAttribute (\s a -> s { _dsaAttribute = a }) +-- | 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'. dsaDryRun :: Lens' DescribeSnapshotAttribute (Maybe Bool) dsaDryRun = lens _dsaDryRun (\s a -> s { _dsaDryRun = a }) --- | The ID of the Amazon EBS snapshot.+-- | The ID of the EBS snapshot. dsaSnapshotId :: Lens' DescribeSnapshotAttribute Text dsaSnapshotId = lens _dsaSnapshotId (\s a -> s { _dsaSnapshotId = a }) @@ -125,7 +127,7 @@ dsarProductCodes :: Lens' DescribeSnapshotAttributeResponse [ProductCode] dsarProductCodes = lens _dsarProductCodes (\s a -> s { _dsarProductCodes = a }) . _List --- | The ID of the Amazon EBS snapshot.+-- | The ID of the EBS snapshot. dsarSnapshotId :: Lens' DescribeSnapshotAttributeResponse (Maybe Text) dsarSnapshotId = lens _dsarSnapshotId (\s a -> s { _dsarSnapshotId = a }) 
gen/Network/AWS/EC2/DescribeSnapshots.hs view
@@ -22,7 +22,7 @@ -- -- Derived from AWS service descriptions, licensed under Apache 2.0. --- | Describes one or more of the Amazon EBS snapshots available to you. Available+-- | Describes one or more of the EBS snapshots available to you. Available -- snapshots include public snapshots available for any AWS account to launch, -- private snapshots that you own, and private snapshots owned by another AWS -- account but for which you've been given explicit create volume permissions.@@ -57,8 +57,7 @@ -- your 'MaxResults' value, then that number of results is returned along with a 'NextToken' value that can be passed to a subsequent 'DescribeSnapshots' request to -- retrieve the remaining results. ----- For more information about Amazon EBS snapshots, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSSnapshots.html Amazon EBS Snapshots> in--- the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- For more information about EBS snapshots, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSSnapshots.html Amazon EBS Snapshots> in the /Amazon Elastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeSnapshots.html> module Network.AWS.EC2.DescribeSnapshots@@ -129,6 +128,9 @@     , _ds1MaxResults          = Nothing     } +-- | 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'. ds1DryRun :: Lens' DescribeSnapshots (Maybe Bool) ds1DryRun = lens _ds1DryRun (\s a -> s { _ds1DryRun = a }) @@ -232,6 +234,7 @@ dsrNextToken :: Lens' DescribeSnapshotsResponse (Maybe Text) dsrNextToken = lens _dsrNextToken (\s a -> s { _dsrNextToken = a }) +-- | Information about the snapshots. dsrSnapshots :: Lens' DescribeSnapshotsResponse [Snapshot] dsrSnapshots = lens _dsrSnapshots (\s a -> s { _dsrSnapshots = a }) . _List 
gen/Network/AWS/EC2/DescribeSpotDatafeedSubscription.hs view
@@ -22,7 +22,7 @@ -- -- Derived from AWS service descriptions, licensed under Apache 2.0. --- | Describes the data feed for Spot Instances. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-data-feeds.html SpotInstance Data Feed> in the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- | Describes the data feed for Spot Instances. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-data-feeds.html SpotInstance Data Feed> in the /Amazon Elastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeSpotDatafeedSubscription.html> module Network.AWS.EC2.DescribeSpotDatafeedSubscription@@ -62,6 +62,9 @@     { _dsdsDryRun = Nothing     } +-- | 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'. dsdsDryRun :: Lens' DescribeSpotDatafeedSubscription (Maybe Bool) dsdsDryRun = lens _dsdsDryRun (\s a -> s { _dsdsDryRun = a }) 
+ gen/Network/AWS/EC2/DescribeSpotFleetInstances.hs view
@@ -0,0 +1,169 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.EC2.DescribeSpotFleetInstances+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)+--+-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | Describes the running instances for the specified Spot fleet.+--+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeSpotFleetInstances.html>+module Network.AWS.EC2.DescribeSpotFleetInstances+    (+    -- * Request+      DescribeSpotFleetInstances+    -- ** Request constructor+    , describeSpotFleetInstances+    -- ** Request lenses+    , dsfiDryRun+    , dsfiMaxResults+    , dsfiNextToken+    , dsfiSpotFleetRequestId++    -- * Response+    , DescribeSpotFleetInstancesResponse+    -- ** Response constructor+    , describeSpotFleetInstancesResponse+    -- ** Response lenses+    , dsfirActiveInstances+    , dsfirNextToken+    , dsfirSpotFleetRequestId+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.EC2.Types+import qualified GHC.Exts++data DescribeSpotFleetInstances = DescribeSpotFleetInstances+    { _dsfiDryRun             :: Maybe Bool+    , _dsfiMaxResults         :: Maybe Int+    , _dsfiNextToken          :: Maybe Text+    , _dsfiSpotFleetRequestId :: Text+    } deriving (Eq, Ord, Read, Show)++-- | 'DescribeSpotFleetInstances' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dsfiDryRun' @::@ 'Maybe' 'Bool'+--+-- * 'dsfiMaxResults' @::@ 'Maybe' 'Int'+--+-- * 'dsfiNextToken' @::@ 'Maybe' 'Text'+--+-- * 'dsfiSpotFleetRequestId' @::@ 'Text'+--+describeSpotFleetInstances :: Text -- ^ 'dsfiSpotFleetRequestId'+                           -> DescribeSpotFleetInstances+describeSpotFleetInstances p1 = DescribeSpotFleetInstances+    { _dsfiSpotFleetRequestId = p1+    , _dsfiDryRun             = Nothing+    , _dsfiNextToken          = Nothing+    , _dsfiMaxResults         = Nothing+    }++-- | 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'.+dsfiDryRun :: Lens' DescribeSpotFleetInstances (Maybe Bool)+dsfiDryRun = lens _dsfiDryRun (\s a -> s { _dsfiDryRun = a })++-- | The maximum number of results to return in a single call. Specify a value+-- between 1 and 1000. The default value is 1000. To retrieve the remaining+-- results, make another call with the returned 'NextToken' value.+dsfiMaxResults :: Lens' DescribeSpotFleetInstances (Maybe Int)+dsfiMaxResults = lens _dsfiMaxResults (\s a -> s { _dsfiMaxResults = a })++-- | The token for the next set of results.+dsfiNextToken :: Lens' DescribeSpotFleetInstances (Maybe Text)+dsfiNextToken = lens _dsfiNextToken (\s a -> s { _dsfiNextToken = a })++-- | The ID of the Spot fleet request.+dsfiSpotFleetRequestId :: Lens' DescribeSpotFleetInstances Text+dsfiSpotFleetRequestId =+    lens _dsfiSpotFleetRequestId (\s a -> s { _dsfiSpotFleetRequestId = a })++data DescribeSpotFleetInstancesResponse = DescribeSpotFleetInstancesResponse+    { _dsfirActiveInstances    :: List "item" ActiveInstance+    , _dsfirNextToken          :: Maybe Text+    , _dsfirSpotFleetRequestId :: Text+    } deriving (Eq, Read, Show)++-- | 'DescribeSpotFleetInstancesResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dsfirActiveInstances' @::@ ['ActiveInstance']+--+-- * 'dsfirNextToken' @::@ 'Maybe' 'Text'+--+-- * 'dsfirSpotFleetRequestId' @::@ 'Text'+--+describeSpotFleetInstancesResponse :: Text -- ^ 'dsfirSpotFleetRequestId'+                                   -> DescribeSpotFleetInstancesResponse+describeSpotFleetInstancesResponse p1 = DescribeSpotFleetInstancesResponse+    { _dsfirSpotFleetRequestId = p1+    , _dsfirActiveInstances    = mempty+    , _dsfirNextToken          = Nothing+    }++-- | The running instances. Note that this list is refreshed periodically and+-- might be out of date.+dsfirActiveInstances :: Lens' DescribeSpotFleetInstancesResponse [ActiveInstance]+dsfirActiveInstances =+    lens _dsfirActiveInstances (\s a -> s { _dsfirActiveInstances = a })+        . _List++-- | The token required to retrieve the next set of results. This value is 'null'+-- when there are no more results to return.+dsfirNextToken :: Lens' DescribeSpotFleetInstancesResponse (Maybe Text)+dsfirNextToken = lens _dsfirNextToken (\s a -> s { _dsfirNextToken = a })++-- | The ID of the Spot fleet request.+dsfirSpotFleetRequestId :: Lens' DescribeSpotFleetInstancesResponse Text+dsfirSpotFleetRequestId =+    lens _dsfirSpotFleetRequestId (\s a -> s { _dsfirSpotFleetRequestId = a })++instance ToPath DescribeSpotFleetInstances where+    toPath = const "/"++instance ToQuery DescribeSpotFleetInstances where+    toQuery DescribeSpotFleetInstances{..} = mconcat+        [ "DryRun"             =? _dsfiDryRun+        , "MaxResults"         =? _dsfiMaxResults+        , "NextToken"          =? _dsfiNextToken+        , "SpotFleetRequestId" =? _dsfiSpotFleetRequestId+        ]++instance ToHeaders DescribeSpotFleetInstances++instance AWSRequest DescribeSpotFleetInstances where+    type Sv DescribeSpotFleetInstances = EC2+    type Rs DescribeSpotFleetInstances = DescribeSpotFleetInstancesResponse++    request  = post "DescribeSpotFleetInstances"+    response = xmlResponse++instance FromXML DescribeSpotFleetInstancesResponse where+    parseXML x = DescribeSpotFleetInstancesResponse+        <$> x .@? "activeInstanceSet" .!@ mempty+        <*> x .@? "nextToken"+        <*> x .@  "spotFleetRequestId"
+ gen/Network/AWS/EC2/DescribeSpotFleetRequestHistory.hs view
@@ -0,0 +1,224 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.EC2.DescribeSpotFleetRequestHistory+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)+--+-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | Describes the events for the specified Spot fleet request during the+-- specified time.+--+-- Spot fleet events are delayed by up to 30 seconds before they can be+-- described. This ensures that you can query by the last evaluated time and not+-- miss a recorded event.+--+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeSpotFleetRequestHistory.html>+module Network.AWS.EC2.DescribeSpotFleetRequestHistory+    (+    -- * Request+      DescribeSpotFleetRequestHistory+    -- ** Request constructor+    , describeSpotFleetRequestHistory+    -- ** Request lenses+    , dsfrhDryRun+    , dsfrhEventType+    , dsfrhMaxResults+    , dsfrhNextToken+    , dsfrhSpotFleetRequestId+    , dsfrhStartTime++    -- * Response+    , DescribeSpotFleetRequestHistoryResponse+    -- ** Response constructor+    , describeSpotFleetRequestHistoryResponse+    -- ** Response lenses+    , dsfrhrHistoryRecords+    , dsfrhrLastEvaluatedTime+    , dsfrhrNextToken+    , dsfrhrSpotFleetRequestId+    , dsfrhrStartTime+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.EC2.Types+import qualified GHC.Exts++data DescribeSpotFleetRequestHistory = DescribeSpotFleetRequestHistory+    { _dsfrhDryRun             :: Maybe Bool+    , _dsfrhEventType          :: Maybe EventType+    , _dsfrhMaxResults         :: Maybe Int+    , _dsfrhNextToken          :: Maybe Text+    , _dsfrhSpotFleetRequestId :: Text+    , _dsfrhStartTime          :: ISO8601+    } deriving (Eq, Read, Show)++-- | 'DescribeSpotFleetRequestHistory' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dsfrhDryRun' @::@ 'Maybe' 'Bool'+--+-- * 'dsfrhEventType' @::@ 'Maybe' 'EventType'+--+-- * 'dsfrhMaxResults' @::@ 'Maybe' 'Int'+--+-- * 'dsfrhNextToken' @::@ 'Maybe' 'Text'+--+-- * 'dsfrhSpotFleetRequestId' @::@ 'Text'+--+-- * 'dsfrhStartTime' @::@ 'UTCTime'+--+describeSpotFleetRequestHistory :: Text -- ^ 'dsfrhSpotFleetRequestId'+                                -> UTCTime -- ^ 'dsfrhStartTime'+                                -> DescribeSpotFleetRequestHistory+describeSpotFleetRequestHistory p1 p2 = DescribeSpotFleetRequestHistory+    { _dsfrhSpotFleetRequestId = p1+    , _dsfrhStartTime          = withIso _Time (const id) p2+    , _dsfrhDryRun             = Nothing+    , _dsfrhEventType          = Nothing+    , _dsfrhNextToken          = Nothing+    , _dsfrhMaxResults         = Nothing+    }++-- | 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'.+dsfrhDryRun :: Lens' DescribeSpotFleetRequestHistory (Maybe Bool)+dsfrhDryRun = lens _dsfrhDryRun (\s a -> s { _dsfrhDryRun = a })++-- | The type of events to describe. By default, all events are described.+dsfrhEventType :: Lens' DescribeSpotFleetRequestHistory (Maybe EventType)+dsfrhEventType = lens _dsfrhEventType (\s a -> s { _dsfrhEventType = a })++-- | The maximum number of results to return in a single call. Specify a value+-- between 1 and 1000. The default value is 1000. To retrieve the remaining+-- results, make another call with the returned 'NextToken' value.+dsfrhMaxResults :: Lens' DescribeSpotFleetRequestHistory (Maybe Int)+dsfrhMaxResults = lens _dsfrhMaxResults (\s a -> s { _dsfrhMaxResults = a })++-- | The token for the next set of results.+dsfrhNextToken :: Lens' DescribeSpotFleetRequestHistory (Maybe Text)+dsfrhNextToken = lens _dsfrhNextToken (\s a -> s { _dsfrhNextToken = a })++-- | The ID of the Spot fleet request.+dsfrhSpotFleetRequestId :: Lens' DescribeSpotFleetRequestHistory Text+dsfrhSpotFleetRequestId =+    lens _dsfrhSpotFleetRequestId (\s a -> s { _dsfrhSpotFleetRequestId = a })++-- | The starting date and time for the events, in UTC format (for example, /YYYY/-/MM/+-- -/DD/T/HH/:/MM/:/SS/Z).+dsfrhStartTime :: Lens' DescribeSpotFleetRequestHistory UTCTime+dsfrhStartTime = lens _dsfrhStartTime (\s a -> s { _dsfrhStartTime = a }) . _Time++data DescribeSpotFleetRequestHistoryResponse = DescribeSpotFleetRequestHistoryResponse+    { _dsfrhrHistoryRecords     :: List "item" HistoryRecord+    , _dsfrhrLastEvaluatedTime  :: ISO8601+    , _dsfrhrNextToken          :: Maybe Text+    , _dsfrhrSpotFleetRequestId :: Text+    , _dsfrhrStartTime          :: ISO8601+    } deriving (Eq, Read, Show)++-- | 'DescribeSpotFleetRequestHistoryResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dsfrhrHistoryRecords' @::@ ['HistoryRecord']+--+-- * 'dsfrhrLastEvaluatedTime' @::@ 'UTCTime'+--+-- * 'dsfrhrNextToken' @::@ 'Maybe' 'Text'+--+-- * 'dsfrhrSpotFleetRequestId' @::@ 'Text'+--+-- * 'dsfrhrStartTime' @::@ 'UTCTime'+--+describeSpotFleetRequestHistoryResponse :: Text -- ^ 'dsfrhrSpotFleetRequestId'+                                        -> UTCTime -- ^ 'dsfrhrStartTime'+                                        -> UTCTime -- ^ 'dsfrhrLastEvaluatedTime'+                                        -> DescribeSpotFleetRequestHistoryResponse+describeSpotFleetRequestHistoryResponse p1 p2 p3 = DescribeSpotFleetRequestHistoryResponse+    { _dsfrhrSpotFleetRequestId = p1+    , _dsfrhrStartTime          = withIso _Time (const id) p2+    , _dsfrhrLastEvaluatedTime  = withIso _Time (const id) p3+    , _dsfrhrHistoryRecords     = mempty+    , _dsfrhrNextToken          = Nothing+    }++-- | Information about the events in the history of the Spot fleet request.+dsfrhrHistoryRecords :: Lens' DescribeSpotFleetRequestHistoryResponse [HistoryRecord]+dsfrhrHistoryRecords =+    lens _dsfrhrHistoryRecords (\s a -> s { _dsfrhrHistoryRecords = a })+        . _List++-- | The last date and time for the events, in UTC format (for example, /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z). All records up to this time were retrieved.+--+-- If 'nextToken' indicates that there are more results, this value is not+-- present.+dsfrhrLastEvaluatedTime :: Lens' DescribeSpotFleetRequestHistoryResponse UTCTime+dsfrhrLastEvaluatedTime =+    lens _dsfrhrLastEvaluatedTime (\s a -> s { _dsfrhrLastEvaluatedTime = a })+        . _Time++-- | The token required to retrieve the next set of results. This value is 'null'+-- when there are no more results to return.+dsfrhrNextToken :: Lens' DescribeSpotFleetRequestHistoryResponse (Maybe Text)+dsfrhrNextToken = lens _dsfrhrNextToken (\s a -> s { _dsfrhrNextToken = a })++-- | The ID of the Spot fleet request.+dsfrhrSpotFleetRequestId :: Lens' DescribeSpotFleetRequestHistoryResponse Text+dsfrhrSpotFleetRequestId =+    lens _dsfrhrSpotFleetRequestId+        (\s a -> s { _dsfrhrSpotFleetRequestId = a })++-- | The starting date and time for the events, in UTC format (for example, /YYYY/-/MM/+-- -/DD/T/HH/:/MM/:/SS/Z).+dsfrhrStartTime :: Lens' DescribeSpotFleetRequestHistoryResponse UTCTime+dsfrhrStartTime = lens _dsfrhrStartTime (\s a -> s { _dsfrhrStartTime = a }) . _Time++instance ToPath DescribeSpotFleetRequestHistory where+    toPath = const "/"++instance ToQuery DescribeSpotFleetRequestHistory where+    toQuery DescribeSpotFleetRequestHistory{..} = mconcat+        [ "DryRun"             =? _dsfrhDryRun+        , "EventType"          =? _dsfrhEventType+        , "MaxResults"         =? _dsfrhMaxResults+        , "NextToken"          =? _dsfrhNextToken+        , "SpotFleetRequestId" =? _dsfrhSpotFleetRequestId+        , "StartTime"          =? _dsfrhStartTime+        ]++instance ToHeaders DescribeSpotFleetRequestHistory++instance AWSRequest DescribeSpotFleetRequestHistory where+    type Sv DescribeSpotFleetRequestHistory = EC2+    type Rs DescribeSpotFleetRequestHistory = DescribeSpotFleetRequestHistoryResponse++    request  = post "DescribeSpotFleetRequestHistory"+    response = xmlResponse++instance FromXML DescribeSpotFleetRequestHistoryResponse where+    parseXML x = DescribeSpotFleetRequestHistoryResponse+        <$> x .@? "historyRecordSet" .!@ mempty+        <*> x .@  "lastEvaluatedTime"+        <*> x .@? "nextToken"+        <*> x .@  "spotFleetRequestId"+        <*> x .@  "startTime"
+ gen/Network/AWS/EC2/DescribeSpotFleetRequests.hs view
@@ -0,0 +1,157 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.EC2.DescribeSpotFleetRequests+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)+--+-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | Describes your Spot fleet requests.+--+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeSpotFleetRequests.html>+module Network.AWS.EC2.DescribeSpotFleetRequests+    (+    -- * Request+      DescribeSpotFleetRequests+    -- ** Request constructor+    , describeSpotFleetRequests+    -- ** Request lenses+    , dsfrDryRun+    , dsfrMaxResults+    , dsfrNextToken+    , dsfrSpotFleetRequestIds++    -- * Response+    , DescribeSpotFleetRequestsResponse+    -- ** Response constructor+    , describeSpotFleetRequestsResponse+    -- ** Response lenses+    , dsfrrNextToken+    , dsfrrSpotFleetRequestConfigs+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.EC2.Types+import qualified GHC.Exts++data DescribeSpotFleetRequests = DescribeSpotFleetRequests+    { _dsfrDryRun              :: Maybe Bool+    , _dsfrMaxResults          :: Maybe Int+    , _dsfrNextToken           :: Maybe Text+    , _dsfrSpotFleetRequestIds :: List "item" Text+    } deriving (Eq, Ord, Read, Show)++-- | 'DescribeSpotFleetRequests' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dsfrDryRun' @::@ 'Maybe' 'Bool'+--+-- * 'dsfrMaxResults' @::@ 'Maybe' 'Int'+--+-- * 'dsfrNextToken' @::@ 'Maybe' 'Text'+--+-- * 'dsfrSpotFleetRequestIds' @::@ ['Text']+--+describeSpotFleetRequests :: DescribeSpotFleetRequests+describeSpotFleetRequests = DescribeSpotFleetRequests+    { _dsfrDryRun              = Nothing+    , _dsfrSpotFleetRequestIds = mempty+    , _dsfrNextToken           = Nothing+    , _dsfrMaxResults          = Nothing+    }++-- | 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'.+dsfrDryRun :: Lens' DescribeSpotFleetRequests (Maybe Bool)+dsfrDryRun = lens _dsfrDryRun (\s a -> s { _dsfrDryRun = a })++-- | The maximum number of results to return in a single call. Specify a value+-- between 1 and 1000. The default value is 1000. To retrieve the remaining+-- results, make another call with the returned 'NextToken' value.+dsfrMaxResults :: Lens' DescribeSpotFleetRequests (Maybe Int)+dsfrMaxResults = lens _dsfrMaxResults (\s a -> s { _dsfrMaxResults = a })++-- | The token for the next set of results.+dsfrNextToken :: Lens' DescribeSpotFleetRequests (Maybe Text)+dsfrNextToken = lens _dsfrNextToken (\s a -> s { _dsfrNextToken = a })++-- | The IDs of the Spot fleet requests.+dsfrSpotFleetRequestIds :: Lens' DescribeSpotFleetRequests [Text]+dsfrSpotFleetRequestIds =+    lens _dsfrSpotFleetRequestIds (\s a -> s { _dsfrSpotFleetRequestIds = a })+        . _List++data DescribeSpotFleetRequestsResponse = DescribeSpotFleetRequestsResponse+    { _dsfrrNextToken               :: Maybe Text+    , _dsfrrSpotFleetRequestConfigs :: List "item" SpotFleetRequestConfig+    } deriving (Eq, Read, Show)++-- | 'DescribeSpotFleetRequestsResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dsfrrNextToken' @::@ 'Maybe' 'Text'+--+-- * 'dsfrrSpotFleetRequestConfigs' @::@ ['SpotFleetRequestConfig']+--+describeSpotFleetRequestsResponse :: DescribeSpotFleetRequestsResponse+describeSpotFleetRequestsResponse = DescribeSpotFleetRequestsResponse+    { _dsfrrSpotFleetRequestConfigs = mempty+    , _dsfrrNextToken               = Nothing+    }++-- | The token required to retrieve the next set of results. This value is 'null'+-- when there are no more results to return.+dsfrrNextToken :: Lens' DescribeSpotFleetRequestsResponse (Maybe Text)+dsfrrNextToken = lens _dsfrrNextToken (\s a -> s { _dsfrrNextToken = a })++-- | Information about the configuration of your Spot fleet.+dsfrrSpotFleetRequestConfigs :: Lens' DescribeSpotFleetRequestsResponse [SpotFleetRequestConfig]+dsfrrSpotFleetRequestConfigs =+    lens _dsfrrSpotFleetRequestConfigs+        (\s a -> s { _dsfrrSpotFleetRequestConfigs = a })+            . _List++instance ToPath DescribeSpotFleetRequests where+    toPath = const "/"++instance ToQuery DescribeSpotFleetRequests where+    toQuery DescribeSpotFleetRequests{..} = mconcat+        [ "DryRun"             =? _dsfrDryRun+        , "MaxResults"         =? _dsfrMaxResults+        , "NextToken"          =? _dsfrNextToken+        , "SpotFleetRequestId" `toQueryList` _dsfrSpotFleetRequestIds+        ]++instance ToHeaders DescribeSpotFleetRequests++instance AWSRequest DescribeSpotFleetRequests where+    type Sv DescribeSpotFleetRequests = EC2+    type Rs DescribeSpotFleetRequests = DescribeSpotFleetRequestsResponse++    request  = post "DescribeSpotFleetRequests"+    response = xmlResponse++instance FromXML DescribeSpotFleetRequestsResponse where+    parseXML x = DescribeSpotFleetRequestsResponse+        <$> x .@? "nextToken"+        <*> x .@? "spotFleetRequestConfigSet" .!@ mempty
gen/Network/AWS/EC2/DescribeSpotInstanceRequests.hs view
@@ -26,7 +26,7 @@ -- Instances are instances that Amazon EC2 launches when the bid price that you -- specify exceeds the current Spot Price. Amazon EC2 periodically sets the Spot -- Price based on available Spot Instance capacity and current Spot Instance--- requests. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html Spot Instance Requests> in the /AmazonElastic Compute Cloud User Guide for Linux/.+-- requests. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html Spot Instance Requests> in the /AmazonElastic Compute Cloud User Guide/. -- -- You can use 'DescribeSpotInstanceRequests' to find a running Spot Instance by -- examining the response. If the status of the Spot Instance is 'fulfilled', the@@ -82,6 +82,9 @@     , _dsirFilters                = mempty     } +-- | 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'. dsirDryRun :: Lens' DescribeSpotInstanceRequests (Maybe Bool) dsirDryRun = lens _dsirDryRun (\s a -> s { _dsirDryRun = a }) @@ -163,7 +166,7 @@ -- -- 'state' - The state of the Spot Instance request ('open' | 'active' | 'closed' | 'cancelled' | 'failed'). Spot bid status information can help you track your Amazon EC2 -- Spot Instance requests. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-bid-status.html Spot Bid Status> in the--- Amazon Elastic Compute Cloud User Guide for Linux.+-- Amazon Elastic Compute Cloud User Guide. -- -- 'status-code' - The short code describing the most recent evaluation of your -- Spot Instance request.
gen/Network/AWS/EC2/DescribeSpotPriceHistory.hs view
@@ -24,7 +24,7 @@  -- | Describes the Spot Price history. The prices returned are listed in -- chronological order, from the oldest to the most recent, for up to the past--- 90 days. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances-history.html Spot Instance Pricing History> in the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- 90 days. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances-history.html Spot Instance Pricing History> in the /Amazon Elastic Compute Cloud User Guide/. -- -- When you specify a start and end time, this operation returns the prices of -- the instance types within the time range that you specified and the time when@@ -115,11 +115,14 @@ dsphAvailabilityZone =     lens _dsphAvailabilityZone (\s a -> s { _dsphAvailabilityZone = a }) +-- | 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'. dsphDryRun :: Lens' DescribeSpotPriceHistory (Maybe Bool) dsphDryRun = lens _dsphDryRun (\s a -> s { _dsphDryRun = a })  -- | The date and time, up to the current date, from which to stop retrieving the--- price history data.+-- price history data, in UTC format (for example, /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z). dsphEndTime :: Lens' DescribeSpotPriceHistory (Maybe UTCTime) dsphEndTime = lens _dsphEndTime (\s a -> s { _dsphEndTime = a }) . mapping _Time @@ -135,9 +138,9 @@ -- 'spot-price' - The Spot Price. The value must match exactly (or use -- wildcards; greater than or less than comparison is not supported). ----- 'timestamp' - The timestamp of the Spot Price history (for example,--- 2010-08-16T05:06:11.000Z). You can use wildcards (* and ?). Greater than or--- less than comparison is not supported.+-- 'timestamp' - The timestamp of the Spot Price history, in UTC format (for+-- example, /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z). You can use wildcards (* and ?). Greater than+-- or less than comparison is not supported. -- -- dsphFilters :: Lens' DescribeSpotPriceHistory [Filter]@@ -149,15 +152,13 @@     lens _dsphInstanceTypes (\s a -> s { _dsphInstanceTypes = a })         . _List --- | The maximum number of results to return for the request in a single page. The--- remaining results of the initial request can be seen by sending another--- request with the returned 'NextToken' value. This value can be between 5 and--- 1000; if 'MaxResults' is given a value larger than 1000, only 1000 results are--- returned.+-- | The maximum number of results to return in a single call. Specify a value+-- between 1 and 1000. The default value is 1000. To retrieve the remaining+-- results, make another call with the returned 'NextToken' value. dsphMaxResults :: Lens' DescribeSpotPriceHistory (Maybe Int) dsphMaxResults = lens _dsphMaxResults (\s a -> s { _dsphMaxResults = a }) --- | The token to retrieve the next page of results.+-- | The token for the next set of results. dsphNextToken :: Lens' DescribeSpotPriceHistory (Maybe Text) dsphNextToken = lens _dsphNextToken (\s a -> s { _dsphNextToken = a }) @@ -168,7 +169,7 @@         . _List  -- | The date and time, up to the past 90 days, from which to start retrieving the--- price history data.+-- price history data, in UTC format (for example, /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z). dsphStartTime :: Lens' DescribeSpotPriceHistory (Maybe UTCTime) dsphStartTime = lens _dsphStartTime (\s a -> s { _dsphStartTime = a }) . mapping _Time @@ -191,7 +192,7 @@     , _dsphrNextToken        = Nothing     } --- | The token to use to retrieve the next page of results. This value is 'null'+-- | The token required to retrieve the next set of results. This value is 'null' -- when there are no more results to return. dsphrNextToken :: Lens' DescribeSpotPriceHistoryResponse (Maybe Text) dsphrNextToken = lens _dsphrNextToken (\s a -> s { _dsphrNextToken = a })
gen/Network/AWS/EC2/DescribeSubnets.hs view
@@ -74,6 +74,9 @@     , _dsFilters   = mempty     } +-- | 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'. dsDryRun :: Lens' DescribeSubnets (Maybe Bool) dsDryRun = lens _dsDryRun (\s a -> s { _dsDryRun = a }) 
gen/Network/AWS/EC2/DescribeTags.hs view
@@ -24,7 +24,7 @@  -- | Describes one or more of the tags for your EC2 resources. ----- For more information about tags, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html Tagging Your Resources> in the /AmazonElastic Compute Cloud User Guide for Linux/.+-- For more information about tags, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html Tagging Your Resources> in the /AmazonElastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeTags.html> module Network.AWS.EC2.DescribeTags@@ -80,6 +80,9 @@     , _dtNextToken  = Nothing     } +-- | 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'. dtDryRun :: Lens' DescribeTags (Maybe Bool) dtDryRun = lens _dtDryRun (\s a -> s { _dtDryRun = a }) 
gen/Network/AWS/EC2/DescribeVolumeAttribute.hs view
@@ -25,7 +25,7 @@ -- | Describes the specified attribute of the specified volume. You can specify -- only one attribute at a time. ----- For more information about Amazon EBS volumes, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumes.html Amazon EBS Volumes> in the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- For more information about EBS volumes, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumes.html Amazon EBS Volumes> in the /AmazonElastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeVolumeAttribute.html> module Network.AWS.EC2.DescribeVolumeAttribute@@ -82,6 +82,9 @@ dvaAttribute :: Lens' DescribeVolumeAttribute (Maybe VolumeAttributeName) dvaAttribute = lens _dvaAttribute (\s a -> s { _dvaAttribute = a }) +-- | 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'. dvaDryRun :: Lens' DescribeVolumeAttribute (Maybe Bool) dvaDryRun = lens _dvaDryRun (\s a -> s { _dvaDryRun = a }) 
gen/Network/AWS/EC2/DescribeVolumeStatus.hs view
@@ -118,6 +118,9 @@     , _dvsMaxResults = Nothing     } +-- | 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'. dvsDryRun :: Lens' DescribeVolumeStatus (Maybe Bool) dvsDryRun = lens _dvsDryRun (\s a -> s { _dvsDryRun = a }) 
gen/Network/AWS/EC2/DescribeVolumes.hs view
@@ -22,7 +22,7 @@ -- -- Derived from AWS service descriptions, licensed under Apache 2.0. --- | Describes the specified Amazon EBS volumes.+-- | Describes the specified EBS volumes. -- -- If you are describing a long list of volumes, you can paginate the output to -- make the list more manageable. The 'MaxResults' parameter sets the maximum@@ -30,7 +30,7 @@ -- your 'MaxResults' value, then that number of results is returned along with a 'NextToken' value that can be passed to a subsequent 'DescribeVolumes' request to retrieve -- the remaining results. ----- For more information about Amazon EBS volumes, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumes.html Amazon EBS Volumes> in the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- For more information about EBS volumes, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumes.html Amazon EBS Volumes> in the /AmazonElastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeVolumes.html> module Network.AWS.EC2.DescribeVolumes@@ -91,6 +91,9 @@     , _dv2MaxResults = Nothing     } +-- | 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'. dv2DryRun :: Lens' DescribeVolumes (Maybe Bool) dv2DryRun = lens _dv2DryRun (\s a -> s { _dv2DryRun = a }) @@ -194,6 +197,7 @@ dvrNextToken :: Lens' DescribeVolumesResponse (Maybe Text) dvrNextToken = lens _dvrNextToken (\s a -> s { _dvrNextToken = a }) +-- | Information about the volumes. dvrVolumes :: Lens' DescribeVolumesResponse [Volume] dvrVolumes = lens _dvrVolumes (\s a -> s { _dvrVolumes = a }) . _List 
gen/Network/AWS/EC2/DescribeVpcAttribute.hs view
@@ -80,6 +80,9 @@ dva1Attribute :: Lens' DescribeVpcAttribute (Maybe VpcAttributeName) dva1Attribute = lens _dva1Attribute (\s a -> s { _dva1Attribute = a }) +-- | 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'. dva1DryRun :: Lens' DescribeVpcAttribute (Maybe Bool) dva1DryRun = lens _dva1DryRun (\s a -> s { _dva1DryRun = a }) 
gen/Network/AWS/EC2/DescribeVpcClassicLink.hs view
@@ -72,6 +72,9 @@     , _dvclFilters = mempty     } +-- | 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'. dvclDryRun :: Lens' DescribeVpcClassicLink (Maybe Bool) dvclDryRun = lens _dvclDryRun (\s a -> s { _dvclDryRun = a }) 
+ gen/Network/AWS/EC2/DescribeVpcEndpointServices.hs view
@@ -0,0 +1,148 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.EC2.DescribeVpcEndpointServices+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)+--+-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | Describes all supported AWS services that can be specified when creating a+-- VPC endpoint.+--+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeVpcEndpointServices.html>+module Network.AWS.EC2.DescribeVpcEndpointServices+    (+    -- * Request+      DescribeVpcEndpointServices+    -- ** Request constructor+    , describeVpcEndpointServices+    -- ** Request lenses+    , dvesDryRun+    , dvesMaxResults+    , dvesNextToken++    -- * Response+    , DescribeVpcEndpointServicesResponse+    -- ** Response constructor+    , describeVpcEndpointServicesResponse+    -- ** Response lenses+    , dvesrNextToken+    , dvesrServiceNames+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.EC2.Types+import qualified GHC.Exts++data DescribeVpcEndpointServices = DescribeVpcEndpointServices+    { _dvesDryRun     :: Maybe Bool+    , _dvesMaxResults :: Maybe Int+    , _dvesNextToken  :: Maybe Text+    } deriving (Eq, Ord, Read, Show)++-- | 'DescribeVpcEndpointServices' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dvesDryRun' @::@ 'Maybe' 'Bool'+--+-- * 'dvesMaxResults' @::@ 'Maybe' 'Int'+--+-- * 'dvesNextToken' @::@ 'Maybe' 'Text'+--+describeVpcEndpointServices :: DescribeVpcEndpointServices+describeVpcEndpointServices = DescribeVpcEndpointServices+    { _dvesDryRun     = Nothing+    , _dvesMaxResults = Nothing+    , _dvesNextToken  = Nothing+    }++-- | 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'.+dvesDryRun :: Lens' DescribeVpcEndpointServices (Maybe Bool)+dvesDryRun = lens _dvesDryRun (\s a -> s { _dvesDryRun = a })++-- | The maximum number of items to return for this request. The request returns a+-- token that you can specify in a subsequent call to get the next set of+-- results.+--+-- Constraint: If the value is greater than 1000, we return only 1000 items.+dvesMaxResults :: Lens' DescribeVpcEndpointServices (Maybe Int)+dvesMaxResults = lens _dvesMaxResults (\s a -> s { _dvesMaxResults = a })++-- | The token for the next set of items to return. (You received this token from+-- a prior call.)+dvesNextToken :: Lens' DescribeVpcEndpointServices (Maybe Text)+dvesNextToken = lens _dvesNextToken (\s a -> s { _dvesNextToken = a })++data DescribeVpcEndpointServicesResponse = DescribeVpcEndpointServicesResponse+    { _dvesrNextToken    :: Maybe Text+    , _dvesrServiceNames :: List "item" Text+    } deriving (Eq, Ord, Read, Show)++-- | 'DescribeVpcEndpointServicesResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dvesrNextToken' @::@ 'Maybe' 'Text'+--+-- * 'dvesrServiceNames' @::@ ['Text']+--+describeVpcEndpointServicesResponse :: DescribeVpcEndpointServicesResponse+describeVpcEndpointServicesResponse = DescribeVpcEndpointServicesResponse+    { _dvesrServiceNames = mempty+    , _dvesrNextToken    = Nothing+    }++-- | The token to use when requesting the next set of items. If there are no+-- additional items to return, the string is empty.+dvesrNextToken :: Lens' DescribeVpcEndpointServicesResponse (Maybe Text)+dvesrNextToken = lens _dvesrNextToken (\s a -> s { _dvesrNextToken = a })++-- | A list of supported AWS services.+dvesrServiceNames :: Lens' DescribeVpcEndpointServicesResponse [Text]+dvesrServiceNames =+    lens _dvesrServiceNames (\s a -> s { _dvesrServiceNames = a })+        . _List++instance ToPath DescribeVpcEndpointServices where+    toPath = const "/"++instance ToQuery DescribeVpcEndpointServices where+    toQuery DescribeVpcEndpointServices{..} = mconcat+        [ "DryRun"     =? _dvesDryRun+        , "MaxResults" =? _dvesMaxResults+        , "NextToken"  =? _dvesNextToken+        ]++instance ToHeaders DescribeVpcEndpointServices++instance AWSRequest DescribeVpcEndpointServices where+    type Sv DescribeVpcEndpointServices = EC2+    type Rs DescribeVpcEndpointServices = DescribeVpcEndpointServicesResponse++    request  = post "DescribeVpcEndpointServices"+    response = xmlResponse++instance FromXML DescribeVpcEndpointServicesResponse where+    parseXML x = DescribeVpcEndpointServicesResponse+        <$> x .@? "nextToken"+        <*> x .@? "serviceNameSet" .!@ mempty
+ gen/Network/AWS/EC2/DescribeVpcEndpoints.hs view
@@ -0,0 +1,177 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.EC2.DescribeVpcEndpoints+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)+--+-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | Describes one or more of your VPC endpoints.+--+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeVpcEndpoints.html>+module Network.AWS.EC2.DescribeVpcEndpoints+    (+    -- * Request+      DescribeVpcEndpoints+    -- ** Request constructor+    , describeVpcEndpoints+    -- ** Request lenses+    , dve1DryRun+    , dve1Filters+    , dve1MaxResults+    , dve1NextToken+    , dve1VpcEndpointIds++    -- * Response+    , DescribeVpcEndpointsResponse+    -- ** Response constructor+    , describeVpcEndpointsResponse+    -- ** Response lenses+    , dverNextToken+    , dverVpcEndpoints+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.EC2.Types+import qualified GHC.Exts++data DescribeVpcEndpoints = DescribeVpcEndpoints+    { _dve1DryRun         :: Maybe Bool+    , _dve1Filters        :: List "Filter" Filter+    , _dve1MaxResults     :: Maybe Int+    , _dve1NextToken      :: Maybe Text+    , _dve1VpcEndpointIds :: List "item" Text+    } deriving (Eq, Read, Show)++-- | 'DescribeVpcEndpoints' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dve1DryRun' @::@ 'Maybe' 'Bool'+--+-- * 'dve1Filters' @::@ ['Filter']+--+-- * 'dve1MaxResults' @::@ 'Maybe' 'Int'+--+-- * 'dve1NextToken' @::@ 'Maybe' 'Text'+--+-- * 'dve1VpcEndpointIds' @::@ ['Text']+--+describeVpcEndpoints :: DescribeVpcEndpoints+describeVpcEndpoints = DescribeVpcEndpoints+    { _dve1DryRun         = Nothing+    , _dve1VpcEndpointIds = mempty+    , _dve1Filters        = mempty+    , _dve1MaxResults     = Nothing+    , _dve1NextToken      = Nothing+    }++-- | 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'.+dve1DryRun :: Lens' DescribeVpcEndpoints (Maybe Bool)+dve1DryRun = lens _dve1DryRun (\s a -> s { _dve1DryRun = a })++-- | One or more filters.+--+-- 'service-name': The name of the AWS service.+--+-- 'vpc-id': The ID of the VPC in which the endpoint resides.+--+-- 'vpc-endpoint-id': The ID of the endpoint.+--+-- 'vpc-endpoint-state': The state of the endpoint. ('pending' | 'available' | 'deleting' | 'deleted')+--+--+dve1Filters :: Lens' DescribeVpcEndpoints [Filter]+dve1Filters = lens _dve1Filters (\s a -> s { _dve1Filters = a }) . _List++-- | The maximum number of items to return for this request. The request returns a+-- token that you can specify in a subsequent call to get the next set of+-- results.+--+-- Constraint: If the value is greater than 1000, we return only 1000 items.+dve1MaxResults :: Lens' DescribeVpcEndpoints (Maybe Int)+dve1MaxResults = lens _dve1MaxResults (\s a -> s { _dve1MaxResults = a })++-- | The token for the next set of items to return. (You received this token from+-- a prior call.)+dve1NextToken :: Lens' DescribeVpcEndpoints (Maybe Text)+dve1NextToken = lens _dve1NextToken (\s a -> s { _dve1NextToken = a })++-- | One or more endpoint IDs.+dve1VpcEndpointIds :: Lens' DescribeVpcEndpoints [Text]+dve1VpcEndpointIds =+    lens _dve1VpcEndpointIds (\s a -> s { _dve1VpcEndpointIds = a })+        . _List++data DescribeVpcEndpointsResponse = DescribeVpcEndpointsResponse+    { _dverNextToken    :: Maybe Text+    , _dverVpcEndpoints :: List "item" VpcEndpoint+    } deriving (Eq, Read, Show)++-- | 'DescribeVpcEndpointsResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dverNextToken' @::@ 'Maybe' 'Text'+--+-- * 'dverVpcEndpoints' @::@ ['VpcEndpoint']+--+describeVpcEndpointsResponse :: DescribeVpcEndpointsResponse+describeVpcEndpointsResponse = DescribeVpcEndpointsResponse+    { _dverVpcEndpoints = mempty+    , _dverNextToken    = Nothing+    }++-- | The token to use when requesting the next set of items. If there are no+-- additional items to return, the string is empty.+dverNextToken :: Lens' DescribeVpcEndpointsResponse (Maybe Text)+dverNextToken = lens _dverNextToken (\s a -> s { _dverNextToken = a })++-- | Information about the endpoints.+dverVpcEndpoints :: Lens' DescribeVpcEndpointsResponse [VpcEndpoint]+dverVpcEndpoints = lens _dverVpcEndpoints (\s a -> s { _dverVpcEndpoints = a }) . _List++instance ToPath DescribeVpcEndpoints where+    toPath = const "/"++instance ToQuery DescribeVpcEndpoints where+    toQuery DescribeVpcEndpoints{..} = mconcat+        [ "DryRun"        =? _dve1DryRun+        , "Filter"        `toQueryList` _dve1Filters+        , "MaxResults"    =? _dve1MaxResults+        , "NextToken"     =? _dve1NextToken+        , "VpcEndpointId" `toQueryList` _dve1VpcEndpointIds+        ]++instance ToHeaders DescribeVpcEndpoints++instance AWSRequest DescribeVpcEndpoints where+    type Sv DescribeVpcEndpoints = EC2+    type Rs DescribeVpcEndpoints = DescribeVpcEndpointsResponse++    request  = post "DescribeVpcEndpoints"+    response = xmlResponse++instance FromXML DescribeVpcEndpointsResponse where+    parseXML x = DescribeVpcEndpointsResponse+        <$> x .@? "nextToken"+        <*> x .@? "vpcEndpointSet" .!@ mempty
gen/Network/AWS/EC2/DescribeVpcPeeringConnections.hs view
@@ -72,6 +72,9 @@     , _dvpc1Filters                 = mempty     } +-- | 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'. dvpc1DryRun :: Lens' DescribeVpcPeeringConnections (Maybe Bool) dvpc1DryRun = lens _dvpc1DryRun (\s a -> s { _dvpc1DryRun = a }) 
gen/Network/AWS/EC2/DescribeVpcs.hs view
@@ -72,6 +72,9 @@     , _dv1Filters = mempty     } +-- | 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'. dv1DryRun :: Lens' DescribeVpcs (Maybe Bool) dv1DryRun = lens _dv1DryRun (\s a -> s { _dv1DryRun = a }) 
gen/Network/AWS/EC2/DescribeVpnConnections.hs view
@@ -74,6 +74,9 @@     , _dvc1Filters          = mempty     } +-- | 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'. dvc1DryRun :: Lens' DescribeVpnConnections (Maybe Bool) dvc1DryRun = lens _dvc1DryRun (\s a -> s { _dvc1DryRun = a }) 
gen/Network/AWS/EC2/DescribeVpnGateways.hs view
@@ -74,6 +74,9 @@     , _dvg2Filters       = mempty     } +-- | 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'. dvg2DryRun :: Lens' DescribeVpnGateways (Maybe Bool) dvg2DryRun = lens _dvg2DryRun (\s a -> s { _dvg2DryRun = a }) 
gen/Network/AWS/EC2/DetachClassicLinkVpc.hs view
@@ -76,6 +76,9 @@     , _dclvDryRun     = Nothing     } +-- | 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'. dclvDryRun :: Lens' DetachClassicLinkVpc (Maybe Bool) dclvDryRun = lens _dclvDryRun (\s a -> s { _dclvDryRun = a }) 
gen/Network/AWS/EC2/DetachInternetGateway.hs view
@@ -74,6 +74,9 @@     , _digDryRun            = Nothing     } +-- | 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'. digDryRun :: Lens' DetachInternetGateway (Maybe Bool) digDryRun = lens _digDryRun (\s a -> s { _digDryRun = a }) 
gen/Network/AWS/EC2/DetachNetworkInterface.hs view
@@ -75,6 +75,9 @@ dniAttachmentId :: Lens' DetachNetworkInterface Text dniAttachmentId = lens _dniAttachmentId (\s a -> s { _dniAttachmentId = a }) +-- | 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'. dniDryRun :: Lens' DetachNetworkInterface (Maybe Bool) dniDryRun = lens _dniDryRun (\s a -> s { _dniDryRun = a }) 
gen/Network/AWS/EC2/DetachVolume.hs view
@@ -22,7 +22,7 @@ -- -- Derived from AWS service descriptions, licensed under Apache 2.0. --- | Detaches an Amazon EBS volume from an instance. Make sure to unmount any file+-- | Detaches an EBS volume from an instance. Make sure to unmount any file -- systems on the device within your operating system before detaching the -- volume. Failure to do so results in the volume being stuck in a busy state -- while detaching.@@ -34,7 +34,7 @@ -- When a volume with an AWS Marketplace product code is detached from an -- instance, the product code is no longer associated with the instance. ----- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-detaching-volume.html Detaching an Amazon EBS Volume> in the /AmazonElastic Compute Cloud User Guide for Linux/.+-- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-detaching-volume.html Detaching an Amazon EBS Volume> in the /AmazonElastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DetachVolume.html> module Network.AWS.EC2.DetachVolume@@ -104,6 +104,9 @@ dvDevice :: Lens' DetachVolume (Maybe Text) dvDevice = lens _dvDevice (\s a -> s { _dvDevice = a }) +-- | 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'. dvDryRun :: Lens' DetachVolume (Maybe Bool) dvDryRun = lens _dvDryRun (\s a -> s { _dvDryRun = a }) @@ -164,7 +167,7 @@ dvrAttachTime :: Lens' DetachVolumeResponse (Maybe UTCTime) dvrAttachTime = lens _dvrAttachTime (\s a -> s { _dvrAttachTime = a }) . mapping _Time --- | Indicates whether the Amazon EBS volume is deleted on instance termination.+-- | Indicates whether the EBS volume is deleted on instance termination. dvrDeleteOnTermination :: Lens' DetachVolumeResponse (Maybe Bool) dvrDeleteOnTermination =     lens _dvrDeleteOnTermination (\s a -> s { _dvrDeleteOnTermination = a })
gen/Network/AWS/EC2/DetachVpnGateway.hs view
@@ -79,6 +79,9 @@     , _dvg1DryRun       = Nothing     } +-- | 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'. dvg1DryRun :: Lens' DetachVpnGateway (Maybe Bool) dvg1DryRun = lens _dvg1DryRun (\s a -> s { _dvg1DryRun = a }) 
gen/Network/AWS/EC2/DisableVpcClassicLink.hs view
@@ -69,6 +69,9 @@     , _dvcl1DryRun = Nothing     } +-- | 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'. dvcl1DryRun :: Lens' DisableVpcClassicLink (Maybe Bool) dvcl1DryRun = lens _dvcl1DryRun (\s a -> s { _dvcl1DryRun = a }) 
gen/Network/AWS/EC2/DisassociateAddress.hs view
@@ -26,7 +26,7 @@ -- it's associated with. -- -- An Elastic IP address is for use in either the EC2-Classic platform or in a--- VPC. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP Addresses> in the /Amazon ElasticCompute Cloud User Guide for Linux/.+-- VPC. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP Addresses> in the /Amazon ElasticCompute Cloud User Guide/. -- -- This is an idempotent operation. If you perform the operation more than -- once, Amazon EC2 doesn't return an error.@@ -81,6 +81,9 @@ da1AssociationId :: Lens' DisassociateAddress (Maybe Text) da1AssociationId = lens _da1AssociationId (\s a -> s { _da1AssociationId = a }) +-- | 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'. da1DryRun :: Lens' DisassociateAddress (Maybe Bool) da1DryRun = lens _da1DryRun (\s a -> s { _da1DryRun = a }) 
gen/Network/AWS/EC2/DisassociateRouteTable.hs view
@@ -75,6 +75,9 @@ drtAssociationId :: Lens' DisassociateRouteTable Text drtAssociationId = lens _drtAssociationId (\s a -> s { _drtAssociationId = a }) +-- | 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'. drtDryRun :: Lens' DisassociateRouteTable (Maybe Bool) drtDryRun = lens _drtDryRun (\s a -> s { _drtDryRun = a }) 
gen/Network/AWS/EC2/EnableVolumeIO.hs view
@@ -67,6 +67,9 @@     , _evioDryRun   = Nothing     } +-- | 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'. evioDryRun :: Lens' EnableVolumeIO (Maybe Bool) evioDryRun = lens _evioDryRun (\s a -> s { _evioDryRun = a }) 
gen/Network/AWS/EC2/EnableVpcClassicLink.hs view
@@ -27,7 +27,7 @@ -- addresses. You cannot enable your VPC for ClassicLink if any of your VPC's -- route tables have existing routes for address ranges within the '10.0.0.0/8' IP -- address range, excluding local routes for VPCs in the '10.0.0.0/16' and '10.1.0.0/16' IP address ranges. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html ClassicLink> in the Amazon--- Elastic Compute Cloud User Guide for Linux.+-- Elastic Compute Cloud User Guide. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-EnableVpcClassicLink.html> module Network.AWS.EC2.EnableVpcClassicLink@@ -73,6 +73,9 @@     , _evclDryRun = Nothing     } +-- | 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'. evclDryRun :: Lens' EnableVpcClassicLink (Maybe Bool) evclDryRun = lens _evclDryRun (\s a -> s { _evclDryRun = a }) 
gen/Network/AWS/EC2/GetConsoleOutput.hs view
@@ -87,6 +87,9 @@     , _gcoDryRun     = Nothing     } +-- | 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'. gcoDryRun :: Lens' GetConsoleOutput (Maybe Bool) gcoDryRun = lens _gcoDryRun (\s a -> s { _gcoDryRun = a }) 
gen/Network/AWS/EC2/GetPasswordData.hs view
@@ -82,6 +82,9 @@     , _gpdDryRun     = Nothing     } +-- | 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'. gpdDryRun :: Lens' GetPasswordData (Maybe Bool) gpdDryRun = lens _gpdDryRun (\s a -> s { _gpdDryRun = a }) 
+ gen/Network/AWS/EC2/ImportImage.hs view
@@ -0,0 +1,316 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.EC2.ImportImage+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)+--+-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | Import single or multi-volume disk images or EBS snapshots into an Amazon+-- Machine Image (AMI).+--+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-ImportImage.html>+module Network.AWS.EC2.ImportImage+    (+    -- * Request+      ImportImage+    -- ** Request constructor+    , importImage+    -- ** Request lenses+    , ii1Architecture+    , ii1ClientData+    , ii1ClientToken+    , ii1Description+    , ii1DiskContainers+    , ii1DryRun+    , ii1Hypervisor+    , ii1LicenseType+    , ii1Platform+    , ii1RoleName++    -- * Response+    , ImportImageResponse+    -- ** Response constructor+    , importImageResponse+    -- ** Response lenses+    , iirArchitecture+    , iirDescription+    , iirHypervisor+    , iirImageId+    , iirImportTaskId+    , iirLicenseType+    , iirPlatform+    , iirProgress+    , iirSnapshotDetails+    , iirStatus+    , iirStatusMessage+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.EC2.Types+import qualified GHC.Exts++data ImportImage = ImportImage+    { _ii1Architecture   :: Maybe Text+    , _ii1ClientData     :: Maybe ClientData+    , _ii1ClientToken    :: Maybe Text+    , _ii1Description    :: Maybe Text+    , _ii1DiskContainers :: List "item" ImageDiskContainer+    , _ii1DryRun         :: Maybe Bool+    , _ii1Hypervisor     :: Maybe Text+    , _ii1LicenseType    :: Maybe Text+    , _ii1Platform       :: Maybe Text+    , _ii1RoleName       :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'ImportImage' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ii1Architecture' @::@ 'Maybe' 'Text'+--+-- * 'ii1ClientData' @::@ 'Maybe' 'ClientData'+--+-- * 'ii1ClientToken' @::@ 'Maybe' 'Text'+--+-- * 'ii1Description' @::@ 'Maybe' 'Text'+--+-- * 'ii1DiskContainers' @::@ ['ImageDiskContainer']+--+-- * 'ii1DryRun' @::@ 'Maybe' 'Bool'+--+-- * 'ii1Hypervisor' @::@ 'Maybe' 'Text'+--+-- * 'ii1LicenseType' @::@ 'Maybe' 'Text'+--+-- * 'ii1Platform' @::@ 'Maybe' 'Text'+--+-- * 'ii1RoleName' @::@ 'Maybe' 'Text'+--+importImage :: ImportImage+importImage = ImportImage+    { _ii1DryRun         = Nothing+    , _ii1Description    = Nothing+    , _ii1DiskContainers = mempty+    , _ii1LicenseType    = Nothing+    , _ii1Hypervisor     = Nothing+    , _ii1Architecture   = Nothing+    , _ii1Platform       = Nothing+    , _ii1ClientData     = Nothing+    , _ii1ClientToken    = Nothing+    , _ii1RoleName       = Nothing+    }++-- | The architecture of the virtual machine.+--+-- Valid values: 'i386' | 'x86_64'+ii1Architecture :: Lens' ImportImage (Maybe Text)+ii1Architecture = lens _ii1Architecture (\s a -> s { _ii1Architecture = a })++-- | The client-specific data.+ii1ClientData :: Lens' ImportImage (Maybe ClientData)+ii1ClientData = lens _ii1ClientData (\s a -> s { _ii1ClientData = a })++-- | The token to enable idempotency for VM import requests.+ii1ClientToken :: Lens' ImportImage (Maybe Text)+ii1ClientToken = lens _ii1ClientToken (\s a -> s { _ii1ClientToken = a })++-- | A description string for the import image task.+ii1Description :: Lens' ImportImage (Maybe Text)+ii1Description = lens _ii1Description (\s a -> s { _ii1Description = a })++-- | Information about the disk containers.+ii1DiskContainers :: Lens' ImportImage [ImageDiskContainer]+ii1DiskContainers =+    lens _ii1DiskContainers (\s a -> s { _ii1DiskContainers = a })+        . _List++-- | 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'.+ii1DryRun :: Lens' ImportImage (Maybe Bool)+ii1DryRun = lens _ii1DryRun (\s a -> s { _ii1DryRun = a })++-- | The target hypervisor platform.+--+-- Valid values: 'xen'+ii1Hypervisor :: Lens' ImportImage (Maybe Text)+ii1Hypervisor = lens _ii1Hypervisor (\s a -> s { _ii1Hypervisor = a })++-- | The license type to be used for the Amazon Machine Image (AMI) after+-- importing.+--+-- Note: You may only use BYOL if you have existing licenses with rights to use+-- these licenses in a third party cloud like AWS. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/VMImportPrerequisites.html VMImport/Export Prerequisites> in the /Amazon Elastic Compute Cloud User Guide/.+--+-- Valid values: 'AWS' | 'BYOL'+ii1LicenseType :: Lens' ImportImage (Maybe Text)+ii1LicenseType = lens _ii1LicenseType (\s a -> s { _ii1LicenseType = a })++-- | The operating system of the virtual machine.+--+-- Valid values: 'Windows' | 'Linux'+ii1Platform :: Lens' ImportImage (Maybe Text)+ii1Platform = lens _ii1Platform (\s a -> s { _ii1Platform = a })++-- | The name of the role to use when not using the default role, 'vmimport'.+ii1RoleName :: Lens' ImportImage (Maybe Text)+ii1RoleName = lens _ii1RoleName (\s a -> s { _ii1RoleName = a })++data ImportImageResponse = ImportImageResponse+    { _iirArchitecture    :: Maybe Text+    , _iirDescription     :: Maybe Text+    , _iirHypervisor      :: Maybe Text+    , _iirImageId         :: Maybe Text+    , _iirImportTaskId    :: Maybe Text+    , _iirLicenseType     :: Maybe Text+    , _iirPlatform        :: Maybe Text+    , _iirProgress        :: Maybe Text+    , _iirSnapshotDetails :: List "item" SnapshotDetail+    , _iirStatus          :: Maybe Text+    , _iirStatusMessage   :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'ImportImageResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'iirArchitecture' @::@ 'Maybe' 'Text'+--+-- * 'iirDescription' @::@ 'Maybe' 'Text'+--+-- * 'iirHypervisor' @::@ 'Maybe' 'Text'+--+-- * 'iirImageId' @::@ 'Maybe' 'Text'+--+-- * 'iirImportTaskId' @::@ 'Maybe' 'Text'+--+-- * 'iirLicenseType' @::@ 'Maybe' 'Text'+--+-- * 'iirPlatform' @::@ 'Maybe' 'Text'+--+-- * 'iirProgress' @::@ 'Maybe' 'Text'+--+-- * 'iirSnapshotDetails' @::@ ['SnapshotDetail']+--+-- * 'iirStatus' @::@ 'Maybe' 'Text'+--+-- * 'iirStatusMessage' @::@ 'Maybe' 'Text'+--+importImageResponse :: ImportImageResponse+importImageResponse = ImportImageResponse+    { _iirImportTaskId    = Nothing+    , _iirArchitecture    = Nothing+    , _iirLicenseType     = Nothing+    , _iirPlatform        = Nothing+    , _iirHypervisor      = Nothing+    , _iirDescription     = Nothing+    , _iirSnapshotDetails = mempty+    , _iirImageId         = Nothing+    , _iirProgress        = Nothing+    , _iirStatusMessage   = Nothing+    , _iirStatus          = Nothing+    }++-- | The architecture of the virtual machine.+iirArchitecture :: Lens' ImportImageResponse (Maybe Text)+iirArchitecture = lens _iirArchitecture (\s a -> s { _iirArchitecture = a })++-- | A description of the import task.+iirDescription :: Lens' ImportImageResponse (Maybe Text)+iirDescription = lens _iirDescription (\s a -> s { _iirDescription = a })++-- | The target hypervisor of the import task.+iirHypervisor :: Lens' ImportImageResponse (Maybe Text)+iirHypervisor = lens _iirHypervisor (\s a -> s { _iirHypervisor = a })++-- | The ID of the Amazon Machine Image (AMI) created by the import task.+iirImageId :: Lens' ImportImageResponse (Maybe Text)+iirImageId = lens _iirImageId (\s a -> s { _iirImageId = a })++-- | The task ID of the import image task.+iirImportTaskId :: Lens' ImportImageResponse (Maybe Text)+iirImportTaskId = lens _iirImportTaskId (\s a -> s { _iirImportTaskId = a })++-- | The license type of the virtual machine.+iirLicenseType :: Lens' ImportImageResponse (Maybe Text)+iirLicenseType = lens _iirLicenseType (\s a -> s { _iirLicenseType = a })++-- | The operating system of the virtual machine.+iirPlatform :: Lens' ImportImageResponse (Maybe Text)+iirPlatform = lens _iirPlatform (\s a -> s { _iirPlatform = a })++-- | The progress of the task.+iirProgress :: Lens' ImportImageResponse (Maybe Text)+iirProgress = lens _iirProgress (\s a -> s { _iirProgress = a })++-- | Information about the snapshots.+iirSnapshotDetails :: Lens' ImportImageResponse [SnapshotDetail]+iirSnapshotDetails =+    lens _iirSnapshotDetails (\s a -> s { _iirSnapshotDetails = a })+        . _List++-- | A brief status of the task.+iirStatus :: Lens' ImportImageResponse (Maybe Text)+iirStatus = lens _iirStatus (\s a -> s { _iirStatus = a })++-- | A detailed status message of the import task.+iirStatusMessage :: Lens' ImportImageResponse (Maybe Text)+iirStatusMessage = lens _iirStatusMessage (\s a -> s { _iirStatusMessage = a })++instance ToPath ImportImage where+    toPath = const "/"++instance ToQuery ImportImage where+    toQuery ImportImage{..} = mconcat+        [ "Architecture"  =? _ii1Architecture+        , "ClientData"    =? _ii1ClientData+        , "ClientToken"   =? _ii1ClientToken+        , "Description"   =? _ii1Description+        , "DiskContainer" `toQueryList` _ii1DiskContainers+        , "DryRun"        =? _ii1DryRun+        , "Hypervisor"    =? _ii1Hypervisor+        , "LicenseType"   =? _ii1LicenseType+        , "Platform"      =? _ii1Platform+        , "RoleName"      =? _ii1RoleName+        ]++instance ToHeaders ImportImage++instance AWSRequest ImportImage where+    type Sv ImportImage = EC2+    type Rs ImportImage = ImportImageResponse++    request  = post "ImportImage"+    response = xmlResponse++instance FromXML ImportImageResponse where+    parseXML x = ImportImageResponse+        <$> x .@? "architecture"+        <*> x .@? "description"+        <*> x .@? "hypervisor"+        <*> x .@? "imageId"+        <*> x .@? "importTaskId"+        <*> x .@? "licenseType"+        <*> x .@? "platform"+        <*> x .@? "progress"+        <*> x .@? "snapshotDetailSet" .!@ mempty+        <*> x .@? "status"+        <*> x .@? "statusMessage"
gen/Network/AWS/EC2/ImportInstance.hs view
@@ -22,9 +22,8 @@ -- -- Derived from AWS service descriptions, licensed under Apache 2.0. --- | Creates an import instance task using metadata from the specified disk image.--- After importing the image, you then upload it using the 'ec2-import-volume'--- command in the EC2 command line tools. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UploadingYourInstancesandVolumes.html Using theCommand Line Tools to Import Your Virtual Machine to Amazon EC2> in the /AmazonElastic Compute Cloud User Guide for Linux/.+-- | Creates an import instance task using metadata from the specified disk image. 'ImportInstance' only supports single-volume VMs. To import multi-volume VMs,+-- use 'ImportImage'. After importing the image, you then upload it using the 'ec2-import-volume' command in the EC2 command line tools. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UploadingYourInstancesandVolumes.html Using theCommand Line Tools to Import Your Virtual Machine to Amazon EC2> in the /AmazonElastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-ImportInstance.html> module Network.AWS.EC2.ImportInstance@@ -89,13 +88,17 @@ iiDescription :: Lens' ImportInstance (Maybe Text) iiDescription = lens _iiDescription (\s a -> s { _iiDescription = a }) +-- | The disk image. iiDiskImages :: Lens' ImportInstance [DiskImage] iiDiskImages = lens _iiDiskImages (\s a -> s { _iiDiskImages = a }) . _List +-- | 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'. iiDryRun :: Lens' ImportInstance (Maybe Bool) iiDryRun = lens _iiDryRun (\s a -> s { _iiDryRun = a }) -+-- | The launch specification. iiLaunchSpecification :: Lens' ImportInstance (Maybe ImportInstanceLaunchSpecification) iiLaunchSpecification =     lens _iiLaunchSpecification (\s a -> s { _iiLaunchSpecification = a })@@ -119,6 +122,7 @@     { _iirConversionTask = Nothing     } +-- | Information about the conversion task. iirConversionTask :: Lens' ImportInstanceResponse (Maybe ConversionTask) iirConversionTask =     lens _iirConversionTask (\s a -> s { _iirConversionTask = a })
gen/Network/AWS/EC2/ImportKeyPair.hs view
@@ -28,7 +28,7 @@ -- ImportKeyPair, you create the key pair and give AWS just the public key. The -- private key is never transferred between you and AWS. ----- For more information about key pairs, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html Key Pairs> in the /Amazon ElasticCompute Cloud User Guide for Linux/.+-- For more information about key pairs, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html Key Pairs> in the /Amazon ElasticCompute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-ImportKeyPair.html> module Network.AWS.EC2.ImportKeyPair@@ -81,6 +81,9 @@     , _ikpDryRun            = Nothing     } +-- | 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'. ikpDryRun :: Lens' ImportKeyPair (Maybe Bool) ikpDryRun = lens _ikpDryRun (\s a -> s { _ikpDryRun = a }) 
+ gen/Network/AWS/EC2/ImportSnapshot.hs view
@@ -0,0 +1,180 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.EC2.ImportSnapshot+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)+--+-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | Imports a disk into an EBS snapshot.+--+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-ImportSnapshot.html>+module Network.AWS.EC2.ImportSnapshot+    (+    -- * Request+      ImportSnapshot+    -- ** Request constructor+    , importSnapshot+    -- ** Request lenses+    , isClientData+    , isClientToken+    , isDescription+    , isDiskContainer+    , isDryRun+    , isRoleName++    -- * Response+    , ImportSnapshotResponse+    -- ** Response constructor+    , importSnapshotResponse+    -- ** Response lenses+    , isrDescription+    , isrImportTaskId+    , isrSnapshotTaskDetail+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.EC2.Types+import qualified GHC.Exts++data ImportSnapshot = ImportSnapshot+    { _isClientData    :: Maybe ClientData+    , _isClientToken   :: Maybe Text+    , _isDescription   :: Maybe Text+    , _isDiskContainer :: Maybe SnapshotDiskContainer+    , _isDryRun        :: Maybe Bool+    , _isRoleName      :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'ImportSnapshot' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'isClientData' @::@ 'Maybe' 'ClientData'+--+-- * 'isClientToken' @::@ 'Maybe' 'Text'+--+-- * 'isDescription' @::@ 'Maybe' 'Text'+--+-- * 'isDiskContainer' @::@ 'Maybe' 'SnapshotDiskContainer'+--+-- * 'isDryRun' @::@ 'Maybe' 'Bool'+--+-- * 'isRoleName' @::@ 'Maybe' 'Text'+--+importSnapshot :: ImportSnapshot+importSnapshot = ImportSnapshot+    { _isDryRun        = Nothing+    , _isDescription   = Nothing+    , _isDiskContainer = Nothing+    , _isClientData    = Nothing+    , _isClientToken   = Nothing+    , _isRoleName      = Nothing+    }++-- | The client-specific data.+isClientData :: Lens' ImportSnapshot (Maybe ClientData)+isClientData = lens _isClientData (\s a -> s { _isClientData = a })++-- | Token to enable idempotency for VM import requests.+isClientToken :: Lens' ImportSnapshot (Maybe Text)+isClientToken = lens _isClientToken (\s a -> s { _isClientToken = a })++-- | The description string for the import snapshot task.+isDescription :: Lens' ImportSnapshot (Maybe Text)+isDescription = lens _isDescription (\s a -> s { _isDescription = a })++-- | Information about the disk container.+isDiskContainer :: Lens' ImportSnapshot (Maybe SnapshotDiskContainer)+isDiskContainer = lens _isDiskContainer (\s a -> s { _isDiskContainer = a })++-- | 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'.+isDryRun :: Lens' ImportSnapshot (Maybe Bool)+isDryRun = lens _isDryRun (\s a -> s { _isDryRun = a })++-- | The name of the role to use when not using the default role, 'vmimport'.+isRoleName :: Lens' ImportSnapshot (Maybe Text)+isRoleName = lens _isRoleName (\s a -> s { _isRoleName = a })++data ImportSnapshotResponse = ImportSnapshotResponse+    { _isrDescription        :: Maybe Text+    , _isrImportTaskId       :: Maybe Text+    , _isrSnapshotTaskDetail :: Maybe SnapshotTaskDetail+    } deriving (Eq, Read, Show)++-- | 'ImportSnapshotResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'isrDescription' @::@ 'Maybe' 'Text'+--+-- * 'isrImportTaskId' @::@ 'Maybe' 'Text'+--+-- * 'isrSnapshotTaskDetail' @::@ 'Maybe' 'SnapshotTaskDetail'+--+importSnapshotResponse :: ImportSnapshotResponse+importSnapshotResponse = ImportSnapshotResponse+    { _isrImportTaskId       = Nothing+    , _isrSnapshotTaskDetail = Nothing+    , _isrDescription        = Nothing+    }++-- | A description of the import snapshot task.+isrDescription :: Lens' ImportSnapshotResponse (Maybe Text)+isrDescription = lens _isrDescription (\s a -> s { _isrDescription = a })++-- | The ID of the import snapshot task.+isrImportTaskId :: Lens' ImportSnapshotResponse (Maybe Text)+isrImportTaskId = lens _isrImportTaskId (\s a -> s { _isrImportTaskId = a })++-- | Information about the import snapshot task.+isrSnapshotTaskDetail :: Lens' ImportSnapshotResponse (Maybe SnapshotTaskDetail)+isrSnapshotTaskDetail =+    lens _isrSnapshotTaskDetail (\s a -> s { _isrSnapshotTaskDetail = a })++instance ToPath ImportSnapshot where+    toPath = const "/"++instance ToQuery ImportSnapshot where+    toQuery ImportSnapshot{..} = mconcat+        [ "ClientData"    =? _isClientData+        , "ClientToken"   =? _isClientToken+        , "Description"   =? _isDescription+        , "DiskContainer" =? _isDiskContainer+        , "DryRun"        =? _isDryRun+        , "RoleName"      =? _isRoleName+        ]++instance ToHeaders ImportSnapshot++instance AWSRequest ImportSnapshot where+    type Sv ImportSnapshot = EC2+    type Rs ImportSnapshot = ImportSnapshotResponse++    request  = post "ImportSnapshot"+    response = xmlResponse++instance FromXML ImportSnapshotResponse where+    parseXML x = ImportSnapshotResponse+        <$> x .@? "description"+        <*> x .@? "importTaskId"+        <*> x .@? "snapshotTaskDetail"
gen/Network/AWS/EC2/ImportVolume.hs view
@@ -25,7 +25,7 @@ -- | Creates an import volume task using metadata from the specified disk image. -- After importing the image, you then upload it using the 'ec2-import-volume' -- command in the Amazon EC2 command-line interface (CLI) tools. For more--- information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UploadingYourInstancesandVolumes.html Using the Command Line Tools to Import Your Virtual Machineto Amazon EC2> in the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UploadingYourInstancesandVolumes.html Using the Command Line Tools to Import Your Virtual Machineto Amazon EC2> in the /Amazon Elastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-ImportVolume.html> module Network.AWS.EC2.ImportVolume@@ -88,21 +88,26 @@     , _ivDescription      = Nothing     } --- | The Availability Zone for the resulting Amazon EBS volume.+-- | The Availability Zone for the resulting EBS volume. ivAvailabilityZone :: Lens' ImportVolume Text ivAvailabilityZone =     lens _ivAvailabilityZone (\s a -> s { _ivAvailabilityZone = a }) --- | An optional description for the volume being imported.+-- | A description of the volume. ivDescription :: Lens' ImportVolume (Maybe Text) ivDescription = lens _ivDescription (\s a -> s { _ivDescription = a }) +-- | 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'. ivDryRun :: Lens' ImportVolume (Maybe Bool) ivDryRun = lens _ivDryRun (\s a -> s { _ivDryRun = a }) +-- | The disk image. ivImage :: Lens' ImportVolume DiskImageDetail ivImage = lens _ivImage (\s a -> s { _ivImage = a }) +-- | The volume size. ivVolume :: Lens' ImportVolume VolumeDetail ivVolume = lens _ivVolume (\s a -> s { _ivVolume = a }) @@ -121,6 +126,7 @@     { _ivrConversionTask = Nothing     } +-- | Information about the conversion task. ivrConversionTask :: Lens' ImportVolumeResponse (Maybe ConversionTask) ivrConversionTask =     lens _ivrConversionTask (\s a -> s { _ivrConversionTask = a })
gen/Network/AWS/EC2/ModifyImageAttribute.hs view
@@ -119,6 +119,9 @@ miaDescription :: Lens' ModifyImageAttribute (Maybe AttributeValue) miaDescription = lens _miaDescription (\s a -> s { _miaDescription = a }) +-- | 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'. miaDryRun :: Lens' ModifyImageAttribute (Maybe Bool) miaDryRun = lens _miaDryRun (\s a -> s { _miaDryRun = a }) 
gen/Network/AWS/EC2/ModifyInstanceAttribute.hs view
@@ -26,7 +26,7 @@ -- only one attribute at a time. -- -- To modify some attributes, the instance must be stopped. For more--- information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_ChangingAttributesWhileInstanceStopped.html Modifying Attributes of a Stopped Instance> in the /AmazonElastic Compute Cloud User Guide for Linux/.+-- information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_ChangingAttributesWhileInstanceStopped.html Modifying Attributes of a Stopped Instance> in the /AmazonElastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-ModifyInstanceAttribute.html> module Network.AWS.EC2.ModifyInstanceAttribute@@ -145,7 +145,7 @@ -- the instance is terminated. -- -- To add instance store volumes to an Amazon EBS-backed instance, you must add--- them when you launch the instance. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html#Using_OverridingAMIBDM Updating theBlock Device Mapping when Launching an Instance> in the /Amazon Elastic ComputeCloud User Guide for Linux/.+-- them when you launch the instance. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html#Using_OverridingAMIBDM Updating theBlock Device Mapping when Launching an Instance> in the /Amazon Elastic ComputeCloud User Guide/. mia1BlockDeviceMappings :: Lens' ModifyInstanceAttribute [InstanceBlockDeviceMappingSpecification] mia1BlockDeviceMappings =     lens _mia1BlockDeviceMappings (\s a -> s { _mia1BlockDeviceMappings = a })@@ -158,6 +158,9 @@     lens _mia1DisableApiTermination         (\s a -> s { _mia1DisableApiTermination = a }) +-- | 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'. mia1DryRun :: Lens' ModifyInstanceAttribute (Maybe Bool) mia1DryRun = lens _mia1DryRun (\s a -> s { _mia1DryRun = a }) 
gen/Network/AWS/EC2/ModifyNetworkInterfaceAttribute.hs view
@@ -96,6 +96,9 @@ mniaDescription :: Lens' ModifyNetworkInterfaceAttribute (Maybe AttributeValue) mniaDescription = lens _mniaDescription (\s a -> s { _mniaDescription = a }) +-- | 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'. mniaDryRun :: Lens' ModifyNetworkInterfaceAttribute (Maybe Bool) mniaDryRun = lens _mniaDryRun (\s a -> s { _mniaDryRun = a }) 
gen/Network/AWS/EC2/ModifyReservedInstances.hs view
@@ -28,7 +28,7 @@ -- network platform, and instance type. -- -- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-modifying.html Modifying Reserved Instances> in the Amazon Elastic--- Compute Cloud User Guide for Linux.+-- Compute Cloud User Guide. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-ModifyReservedInstances.html> module Network.AWS.EC2.ModifyReservedInstances
gen/Network/AWS/EC2/ModifySnapshotAttribute.hs view
@@ -28,7 +28,7 @@ -- add and remove account IDs for a snapshot, you must use multiple API calls. -- -- For more information on modifying snapshot permissions, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-modifying-snapshot-permissions.html Sharing Snapshots>--- in the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- in the /Amazon Elastic Compute Cloud User Guide/. -- -- Snapshots with AWS Marketplace product codes cannot be made public. --@@ -111,6 +111,9 @@     lens _msaCreateVolumePermission         (\s a -> s { _msaCreateVolumePermission = a }) +-- | 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'. msaDryRun :: Lens' ModifySnapshotAttribute (Maybe Bool) msaDryRun = lens _msaDryRun (\s a -> s { _msaDryRun = a }) 
gen/Network/AWS/EC2/ModifyVolumeAttribute.hs view
@@ -85,6 +85,9 @@ mvaAutoEnableIO :: Lens' ModifyVolumeAttribute (Maybe AttributeBooleanValue) mvaAutoEnableIO = lens _mvaAutoEnableIO (\s a -> s { _mvaAutoEnableIO = a }) +-- | 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'. mvaDryRun :: Lens' ModifyVolumeAttribute (Maybe Bool) mvaDryRun = lens _mvaDryRun (\s a -> s { _mvaDryRun = a }) 
+ gen/Network/AWS/EC2/ModifyVpcEndpoint.hs view
@@ -0,0 +1,169 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.EC2.ModifyVpcEndpoint+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)+--+-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | Modifies attributes of a specified VPC endpoint. You can modify the policy+-- associated with the endpoint, and you can add and remove route tables+-- associated with the endpoint.+--+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-ModifyVpcEndpoint.html>+module Network.AWS.EC2.ModifyVpcEndpoint+    (+    -- * Request+      ModifyVpcEndpoint+    -- ** Request constructor+    , modifyVpcEndpoint+    -- ** Request lenses+    , mveAddRouteTableIds+    , mveDryRun+    , mvePolicyDocument+    , mveRemoveRouteTableIds+    , mveResetPolicy+    , mveVpcEndpointId++    -- * Response+    , ModifyVpcEndpointResponse+    -- ** Response constructor+    , modifyVpcEndpointResponse+    -- ** Response lenses+    , mverReturn+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.EC2.Types+import qualified GHC.Exts++data ModifyVpcEndpoint = ModifyVpcEndpoint+    { _mveAddRouteTableIds    :: List "item" Text+    , _mveDryRun              :: Maybe Bool+    , _mvePolicyDocument      :: Maybe Text+    , _mveRemoveRouteTableIds :: List "item" Text+    , _mveResetPolicy         :: Maybe Bool+    , _mveVpcEndpointId       :: Text+    } deriving (Eq, Ord, Read, Show)++-- | 'ModifyVpcEndpoint' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'mveAddRouteTableIds' @::@ ['Text']+--+-- * 'mveDryRun' @::@ 'Maybe' 'Bool'+--+-- * 'mvePolicyDocument' @::@ 'Maybe' 'Text'+--+-- * 'mveRemoveRouteTableIds' @::@ ['Text']+--+-- * 'mveResetPolicy' @::@ 'Maybe' 'Bool'+--+-- * 'mveVpcEndpointId' @::@ 'Text'+--+modifyVpcEndpoint :: Text -- ^ 'mveVpcEndpointId'+                  -> ModifyVpcEndpoint+modifyVpcEndpoint p1 = ModifyVpcEndpoint+    { _mveVpcEndpointId       = p1+    , _mveDryRun              = Nothing+    , _mveResetPolicy         = Nothing+    , _mvePolicyDocument      = Nothing+    , _mveAddRouteTableIds    = mempty+    , _mveRemoveRouteTableIds = mempty+    }++-- | One or more route tables IDs to associate with the endpoint.+mveAddRouteTableIds :: Lens' ModifyVpcEndpoint [Text]+mveAddRouteTableIds =+    lens _mveAddRouteTableIds (\s a -> s { _mveAddRouteTableIds = a })+        . _List++-- | 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'.+mveDryRun :: Lens' ModifyVpcEndpoint (Maybe Bool)+mveDryRun = lens _mveDryRun (\s a -> s { _mveDryRun = a })++-- | A policy document to attach to the endpoint. The policy must be in valid JSON+-- format.+mvePolicyDocument :: Lens' ModifyVpcEndpoint (Maybe Text)+mvePolicyDocument =+    lens _mvePolicyDocument (\s a -> s { _mvePolicyDocument = a })++-- | One or more route table IDs to disassociate from the endpoint.+mveRemoveRouteTableIds :: Lens' ModifyVpcEndpoint [Text]+mveRemoveRouteTableIds =+    lens _mveRemoveRouteTableIds (\s a -> s { _mveRemoveRouteTableIds = a })+        . _List++-- | Specify 'true' to reset the policy document to the default policy. The default+-- policy allows access to the service.+mveResetPolicy :: Lens' ModifyVpcEndpoint (Maybe Bool)+mveResetPolicy = lens _mveResetPolicy (\s a -> s { _mveResetPolicy = a })++-- | The ID of the endpoint.+mveVpcEndpointId :: Lens' ModifyVpcEndpoint Text+mveVpcEndpointId = lens _mveVpcEndpointId (\s a -> s { _mveVpcEndpointId = a })++newtype ModifyVpcEndpointResponse = ModifyVpcEndpointResponse+    { _mverReturn :: Maybe Bool+    } deriving (Eq, Ord, Read, Show)++-- | 'ModifyVpcEndpointResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'mverReturn' @::@ 'Maybe' 'Bool'+--+modifyVpcEndpointResponse :: ModifyVpcEndpointResponse+modifyVpcEndpointResponse = ModifyVpcEndpointResponse+    { _mverReturn = Nothing+    }++-- | Returns 'true' if the request succeeds; otherwise, it returns an error.+mverReturn :: Lens' ModifyVpcEndpointResponse (Maybe Bool)+mverReturn = lens _mverReturn (\s a -> s { _mverReturn = a })++instance ToPath ModifyVpcEndpoint where+    toPath = const "/"++instance ToQuery ModifyVpcEndpoint where+    toQuery ModifyVpcEndpoint{..} = mconcat+        [ "AddRouteTableId"    `toQueryList` _mveAddRouteTableIds+        , "DryRun"             =? _mveDryRun+        , "PolicyDocument"     =? _mvePolicyDocument+        , "RemoveRouteTableId" `toQueryList` _mveRemoveRouteTableIds+        , "ResetPolicy"        =? _mveResetPolicy+        , "VpcEndpointId"      =? _mveVpcEndpointId+        ]++instance ToHeaders ModifyVpcEndpoint++instance AWSRequest ModifyVpcEndpoint where+    type Sv ModifyVpcEndpoint = EC2+    type Rs ModifyVpcEndpoint = ModifyVpcEndpointResponse++    request  = post "ModifyVpcEndpoint"+    response = xmlResponse++instance FromXML ModifyVpcEndpointResponse where+    parseXML x = ModifyVpcEndpointResponse+        <$> x .@? "return"
gen/Network/AWS/EC2/MonitorInstances.hs view
@@ -23,7 +23,7 @@ -- Derived from AWS service descriptions, licensed under Apache 2.0.  -- | Enables monitoring for a running instance. For more information about--- monitoring instances, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-cloudwatch.html Monitoring Your Instances and Volumes> in the /AmazonElastic Compute Cloud User Guide for Linux/.+-- monitoring instances, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-cloudwatch.html Monitoring Your Instances and Volumes> in the /AmazonElastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-MonitorInstances.html> module Network.AWS.EC2.MonitorInstances@@ -68,6 +68,9 @@     , _miInstanceIds = mempty     } +-- | 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'. miDryRun :: Lens' MonitorInstances (Maybe Bool) miDryRun = lens _miDryRun (\s a -> s { _miDryRun = a }) 
+ gen/Network/AWS/EC2/MoveAddressToVpc.hs view
@@ -0,0 +1,137 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.EC2.MoveAddressToVpc+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)+--+-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | Moves an Elastic IP address from the EC2-Classic platform to the EC2-VPC+-- platform. The Elastic IP address must be allocated to your account, and it+-- must not be associated with an instance. After the Elastic IP address is+-- moved, it is no longer available for use in the EC2-Classic platform, unless+-- you move it back using the 'RestoreAddressToClassic' request. You cannot move+-- an Elastic IP address that's allocated for use in the EC2-VPC platform to the+-- EC2-Classic platform.+--+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-MoveAddressToVpc.html>+module Network.AWS.EC2.MoveAddressToVpc+    (+    -- * Request+      MoveAddressToVpc+    -- ** Request constructor+    , moveAddressToVpc+    -- ** Request lenses+    , matvDryRun+    , matvPublicIp++    -- * Response+    , MoveAddressToVpcResponse+    -- ** Response constructor+    , moveAddressToVpcResponse+    -- ** Response lenses+    , matvrAllocationId+    , matvrStatus+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.EC2.Types+import qualified GHC.Exts++data MoveAddressToVpc = MoveAddressToVpc+    { _matvDryRun   :: Maybe Bool+    , _matvPublicIp :: Text+    } deriving (Eq, Ord, Read, Show)++-- | 'MoveAddressToVpc' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'matvDryRun' @::@ 'Maybe' 'Bool'+--+-- * 'matvPublicIp' @::@ 'Text'+--+moveAddressToVpc :: Text -- ^ 'matvPublicIp'+                 -> MoveAddressToVpc+moveAddressToVpc p1 = MoveAddressToVpc+    { _matvPublicIp = p1+    , _matvDryRun   = Nothing+    }++-- | 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'.+matvDryRun :: Lens' MoveAddressToVpc (Maybe Bool)+matvDryRun = lens _matvDryRun (\s a -> s { _matvDryRun = a })++-- | The Elastic IP address.+matvPublicIp :: Lens' MoveAddressToVpc Text+matvPublicIp = lens _matvPublicIp (\s a -> s { _matvPublicIp = a })++data MoveAddressToVpcResponse = MoveAddressToVpcResponse+    { _matvrAllocationId :: Maybe Text+    , _matvrStatus       :: Maybe AddressStatus+    } deriving (Eq, Read, Show)++-- | 'MoveAddressToVpcResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'matvrAllocationId' @::@ 'Maybe' 'Text'+--+-- * 'matvrStatus' @::@ 'Maybe' 'AddressStatus'+--+moveAddressToVpcResponse :: MoveAddressToVpcResponse+moveAddressToVpcResponse = MoveAddressToVpcResponse+    { _matvrAllocationId = Nothing+    , _matvrStatus       = Nothing+    }++-- | The allocation ID for the Elastic IP address.+matvrAllocationId :: Lens' MoveAddressToVpcResponse (Maybe Text)+matvrAllocationId =+    lens _matvrAllocationId (\s a -> s { _matvrAllocationId = a })++-- | The status of the move of the IP address.+matvrStatus :: Lens' MoveAddressToVpcResponse (Maybe AddressStatus)+matvrStatus = lens _matvrStatus (\s a -> s { _matvrStatus = a })++instance ToPath MoveAddressToVpc where+    toPath = const "/"++instance ToQuery MoveAddressToVpc where+    toQuery MoveAddressToVpc{..} = mconcat+        [ "DryRun"   =? _matvDryRun+        , "PublicIp" =? _matvPublicIp+        ]++instance ToHeaders MoveAddressToVpc++instance AWSRequest MoveAddressToVpc where+    type Sv MoveAddressToVpc = EC2+    type Rs MoveAddressToVpc = MoveAddressToVpcResponse++    request  = post "MoveAddressToVpc"+    response = xmlResponse++instance FromXML MoveAddressToVpcResponse where+    parseXML x = MoveAddressToVpcResponse+        <$> x .@? "allocationId"+        <*> x .@? "status"
gen/Network/AWS/EC2/PurchaseReservedInstancesOffering.hs view
@@ -32,7 +32,7 @@ -- offerings that match your specifications. After you've purchased a Reserved -- Instance, you can check for your new Reserved Instance with 'DescribeReservedInstances'. ----- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts-on-demand-reserved-instances.html Reserved Instances> and <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html Reserved InstanceMarketplace> in the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts-on-demand-reserved-instances.html Reserved Instances> and <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html Reserved InstanceMarketplace> in the /Amazon Elastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-PurchaseReservedInstancesOffering.html> module Network.AWS.EC2.PurchaseReservedInstancesOffering@@ -89,6 +89,9 @@     , _prioLimitPrice                  = Nothing     } +-- | 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'. prioDryRun :: Lens' PurchaseReservedInstancesOffering (Maybe Bool) prioDryRun = lens _prioDryRun (\s a -> s { _prioDryRun = a }) 
gen/Network/AWS/EC2/RebootInstances.hs view
@@ -30,7 +30,7 @@ -- If a Linux/Unix instance does not cleanly shut down within four minutes, -- Amazon EC2 performs a hard reboot. ----- For more information about troubleshooting, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-console.html Getting Console Output andRebooting Instances> in the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- For more information about troubleshooting, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-console.html Getting Console Output andRebooting Instances> in the /Amazon Elastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-RebootInstances.html> module Network.AWS.EC2.RebootInstances@@ -73,6 +73,9 @@     , _ri2InstanceIds = mempty     } +-- | 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'. ri2DryRun :: Lens' RebootInstances (Maybe Bool) ri2DryRun = lens _ri2DryRun (\s a -> s { _ri2DryRun = a }) 
gen/Network/AWS/EC2/RegisterImage.hs view
@@ -24,13 +24,13 @@  -- | Registers an AMI. When you're creating an AMI, this is the final step you -- must complete before you can launch an instance from the AMI. For more--- information about creating AMIs, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami.html Creating Your Own AMIs> in the /AmazonElastic Compute Cloud User Guide for Linux/.+-- information about creating AMIs, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami.html Creating Your Own AMIs> in the /AmazonElastic Compute Cloud User Guide/. -- -- For Amazon EBS-backed instances, 'CreateImage' creates and registers the AMI -- in a single request, so you don't have to register the AMI yourself. -- -- You can also use 'RegisterImage' to create an Amazon EBS-backed AMI from a--- snapshot of a root device volume. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_LaunchingInstanceFromSnapshot.html Launching anInstance from a Snapshot> in the /Amazon Elastic Compute Cloud User Guide forLinux/.+-- snapshot of a root device volume. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_LaunchingInstanceFromSnapshot.html Launching anInstance from a Snapshot> in the /Amazon Elastic Compute Cloud User Guide/. -- -- If needed, you can deregister an AMI at any time. Any modifications you make -- to an AMI backed by an instance store volume invalidates its registration. If@@ -147,6 +147,9 @@ ri1Description :: Lens' RegisterImage (Maybe Text) ri1Description = lens _ri1Description (\s a -> s { _ri1Description = a }) +-- | 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'. ri1DryRun :: Lens' RegisterImage (Maybe Bool) ri1DryRun = lens _ri1DryRun (\s a -> s { _ri1DryRun = a }) 
gen/Network/AWS/EC2/RejectVpcPeeringConnection.hs view
@@ -72,6 +72,9 @@     , _rvpcDryRun                 = Nothing     } +-- | 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'. rvpcDryRun :: Lens' RejectVpcPeeringConnection (Maybe Bool) rvpcDryRun = lens _rvpcDryRun (\s a -> s { _rvpcDryRun = a }) 
gen/Network/AWS/EC2/ReleaseAddress.hs view
@@ -87,6 +87,9 @@ raAllocationId :: Lens' ReleaseAddress (Maybe Text) raAllocationId = lens _raAllocationId (\s a -> s { _raAllocationId = a }) +-- | 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'. raDryRun :: Lens' ReleaseAddress (Maybe Bool) raDryRun = lens _raDryRun (\s a -> s { _raDryRun = a }) 
gen/Network/AWS/EC2/ReplaceNetworkAclAssociation.hs view
@@ -82,6 +82,9 @@ rnaaAssociationId =     lens _rnaaAssociationId (\s a -> s { _rnaaAssociationId = a }) +-- | 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'. rnaaDryRun :: Lens' ReplaceNetworkAclAssociation (Maybe Bool) rnaaDryRun = lens _rnaaDryRun (\s a -> s { _rnaaDryRun = a }) 
gen/Network/AWS/EC2/ReplaceNetworkAclEntry.hs view
@@ -111,6 +111,9 @@ rnaeCidrBlock :: Lens' ReplaceNetworkAclEntry Text rnaeCidrBlock = lens _rnaeCidrBlock (\s a -> s { _rnaeCidrBlock = a }) +-- | 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'. rnaeDryRun :: Lens' ReplaceNetworkAclEntry (Maybe Bool) rnaeDryRun = lens _rnaeDryRun (\s a -> s { _rnaeDryRun = a }) 
gen/Network/AWS/EC2/ReplaceRoute.hs view
@@ -102,6 +102,9 @@ rrDestinationCidrBlock =     lens _rrDestinationCidrBlock (\s a -> s { _rrDestinationCidrBlock = a }) +-- | 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'. rrDryRun :: Lens' ReplaceRoute (Maybe Bool) rrDryRun = lens _rrDryRun (\s a -> s { _rrDryRun = a }) 
gen/Network/AWS/EC2/ReplaceRouteTableAssociation.hs view
@@ -86,6 +86,9 @@ rrtaAssociationId =     lens _rrtaAssociationId (\s a -> s { _rrtaAssociationId = a }) +-- | 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'. rrtaDryRun :: Lens' ReplaceRouteTableAssociation (Maybe Bool) rrtaDryRun = lens _rrtaDryRun (\s a -> s { _rrtaDryRun = a }) 
gen/Network/AWS/EC2/ReportInstanceStatus.hs view
@@ -100,6 +100,9 @@ risDescription :: Lens' ReportInstanceStatus (Maybe Text) risDescription = lens _risDescription (\s a -> s { _risDescription = a }) +-- | 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'. risDryRun :: Lens' ReportInstanceStatus (Maybe Bool) risDryRun = lens _risDryRun (\s a -> s { _risDryRun = a }) 
+ gen/Network/AWS/EC2/RequestSpotFleet.hs view
@@ -0,0 +1,126 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.EC2.RequestSpotFleet+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)+--+-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | Creates a Spot fleet request.+--+-- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet.html Spot Fleets> in the /Amazon Elastic Compute CloudUser Guide/.+--+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-RequestSpotFleet.html>+module Network.AWS.EC2.RequestSpotFleet+    (+    -- * Request+      RequestSpotFleet+    -- ** Request constructor+    , requestSpotFleet+    -- ** Request lenses+    , rsfDryRun+    , rsfSpotFleetRequestConfig++    -- * Response+    , RequestSpotFleetResponse+    -- ** Response constructor+    , requestSpotFleetResponse+    -- ** Response lenses+    , rsfrSpotFleetRequestId+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.EC2.Types+import qualified GHC.Exts++data RequestSpotFleet = RequestSpotFleet+    { _rsfDryRun                 :: Maybe Bool+    , _rsfSpotFleetRequestConfig :: SpotFleetRequestConfigData+    } deriving (Eq, Read, Show)++-- | 'RequestSpotFleet' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rsfDryRun' @::@ 'Maybe' 'Bool'+--+-- * 'rsfSpotFleetRequestConfig' @::@ 'SpotFleetRequestConfigData'+--+requestSpotFleet :: SpotFleetRequestConfigData -- ^ 'rsfSpotFleetRequestConfig'+                 -> RequestSpotFleet+requestSpotFleet p1 = RequestSpotFleet+    { _rsfSpotFleetRequestConfig = p1+    , _rsfDryRun                 = Nothing+    }++-- | 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'.+rsfDryRun :: Lens' RequestSpotFleet (Maybe Bool)+rsfDryRun = lens _rsfDryRun (\s a -> s { _rsfDryRun = a })++-- | The configuration for the Spot fleet request.+rsfSpotFleetRequestConfig :: Lens' RequestSpotFleet SpotFleetRequestConfigData+rsfSpotFleetRequestConfig =+    lens _rsfSpotFleetRequestConfig+        (\s a -> s { _rsfSpotFleetRequestConfig = a })++newtype RequestSpotFleetResponse = RequestSpotFleetResponse+    { _rsfrSpotFleetRequestId :: Text+    } deriving (Eq, Ord, Read, Show, Monoid, IsString)++-- | 'RequestSpotFleetResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rsfrSpotFleetRequestId' @::@ 'Text'+--+requestSpotFleetResponse :: Text -- ^ 'rsfrSpotFleetRequestId'+                         -> RequestSpotFleetResponse+requestSpotFleetResponse p1 = RequestSpotFleetResponse+    { _rsfrSpotFleetRequestId = p1+    }++-- | The ID of the Spot fleet request.+rsfrSpotFleetRequestId :: Lens' RequestSpotFleetResponse Text+rsfrSpotFleetRequestId =+    lens _rsfrSpotFleetRequestId (\s a -> s { _rsfrSpotFleetRequestId = a })++instance ToPath RequestSpotFleet where+    toPath = const "/"++instance ToQuery RequestSpotFleet where+    toQuery RequestSpotFleet{..} = mconcat+        [ "DryRun"                 =? _rsfDryRun+        , "SpotFleetRequestConfig" =? _rsfSpotFleetRequestConfig+        ]++instance ToHeaders RequestSpotFleet++instance AWSRequest RequestSpotFleet where+    type Sv RequestSpotFleet = EC2+    type Rs RequestSpotFleet = RequestSpotFleetResponse++    request  = post "RequestSpotFleet"+    response = xmlResponse++instance FromXML RequestSpotFleetResponse where+    parseXML x = RequestSpotFleetResponse+        <$> x .@  "spotFleetRequestId"
gen/Network/AWS/EC2/RequestSpotInstances.hs view
@@ -25,7 +25,7 @@ -- | Creates a Spot Instance request. Spot Instances are instances that Amazon EC2 -- launches when the bid price that you specify exceeds the current Spot Price. -- Amazon EC2 periodically sets the Spot Price based on available Spot Instance--- capacity and current Spot Instance requests. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html SpotInstance Requests> in the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- capacity and current Spot Instance requests. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html SpotInstance Requests> in the /Amazon Elastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-RequestSpotInstances.html> module Network.AWS.EC2.RequestSpotInstances@@ -36,6 +36,7 @@     , requestSpotInstances     -- ** Request lenses     , rsiAvailabilityZoneGroup+    , rsiClientToken     , rsiDryRun     , rsiInstanceCount     , rsiLaunchGroup@@ -60,6 +61,7 @@  data RequestSpotInstances = RequestSpotInstances     { _rsiAvailabilityZoneGroup :: Maybe Text+    , _rsiClientToken           :: Maybe Text     , _rsiDryRun                :: Maybe Bool     , _rsiInstanceCount         :: Maybe Int     , _rsiLaunchGroup           :: Maybe Text@@ -76,6 +78,8 @@ -- -- * 'rsiAvailabilityZoneGroup' @::@ 'Maybe' 'Text' --+-- * 'rsiClientToken' @::@ 'Maybe' 'Text'+-- -- * 'rsiDryRun' @::@ 'Maybe' 'Bool' -- -- * 'rsiInstanceCount' @::@ 'Maybe' 'Int'@@ -97,6 +101,7 @@ requestSpotInstances p1 = RequestSpotInstances     { _rsiSpotPrice             = p1     , _rsiDryRun                = Nothing+    , _rsiClientToken           = Nothing     , _rsiInstanceCount         = Nothing     , _rsiType                  = Nothing     , _rsiValidFrom             = Nothing@@ -131,6 +136,14 @@     lens _rsiAvailabilityZoneGroup         (\s a -> s { _rsiAvailabilityZoneGroup = a }) +-- | Unique, case-sensitive identifier that you provide to ensure the idempotency+-- of the request. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html How to Ensure Idempotency> in the /Amazon Elastic Compute Cloud User Guide/.+rsiClientToken :: Lens' RequestSpotInstances (Maybe Text)+rsiClientToken = lens _rsiClientToken (\s a -> s { _rsiClientToken = a })++-- | 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'. rsiDryRun :: Lens' RequestSpotInstances (Maybe Bool) rsiDryRun = lens _rsiDryRun (\s a -> s { _rsiDryRun = a }) @@ -209,6 +222,7 @@ instance ToQuery RequestSpotInstances where     toQuery RequestSpotInstances{..} = mconcat         [ "AvailabilityZoneGroup" =? _rsiAvailabilityZoneGroup+        , "ClientToken"           =? _rsiClientToken         , "DryRun"                =? _rsiDryRun         , "InstanceCount"         =? _rsiInstanceCount         , "LaunchGroup"           =? _rsiLaunchGroup
gen/Network/AWS/EC2/ResetImageAttribute.hs view
@@ -80,6 +80,9 @@ ria1Attribute :: Lens' ResetImageAttribute ResetImageAttributeName ria1Attribute = lens _ria1Attribute (\s a -> s { _ria1Attribute = a }) +-- | 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'. ria1DryRun :: Lens' ResetImageAttribute (Maybe Bool) ria1DryRun = lens _ria1DryRun (\s a -> s { _ria1DryRun = a }) 
gen/Network/AWS/EC2/ResetInstanceAttribute.hs view
@@ -82,6 +82,9 @@ riaAttribute :: Lens' ResetInstanceAttribute InstanceAttributeName riaAttribute = lens _riaAttribute (\s a -> s { _riaAttribute = a }) +-- | 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'. riaDryRun :: Lens' ResetInstanceAttribute (Maybe Bool) riaDryRun = lens _riaDryRun (\s a -> s { _riaDryRun = a }) 
gen/Network/AWS/EC2/ResetNetworkInterfaceAttribute.hs view
@@ -72,6 +72,9 @@     , _rniaSourceDestCheck    = Nothing     } +-- | 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'. rniaDryRun :: Lens' ResetNetworkInterfaceAttribute (Maybe Bool) rniaDryRun = lens _rniaDryRun (\s a -> s { _rniaDryRun = a }) 
gen/Network/AWS/EC2/ResetSnapshotAttribute.hs view
@@ -25,7 +25,7 @@ -- | Resets permission settings for the specified snapshot. -- -- For more information on modifying snapshot permissions, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-modifying-snapshot-permissions.html Sharing Snapshots>--- in the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- in the /Amazon Elastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-ResetSnapshotAttribute.html> module Network.AWS.EC2.ResetSnapshotAttribute@@ -80,6 +80,9 @@ rsaAttribute :: Lens' ResetSnapshotAttribute SnapshotAttributeName rsaAttribute = lens _rsaAttribute (\s a -> s { _rsaAttribute = a }) +-- | 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'. rsaDryRun :: Lens' ResetSnapshotAttribute (Maybe Bool) rsaDryRun = lens _rsaDryRun (\s a -> s { _rsaDryRun = a }) 
+ gen/Network/AWS/EC2/RestoreAddressToClassic.hs view
@@ -0,0 +1,133 @@+{-# LANGUAGE DataKinds                   #-}+{-# LANGUAGE DeriveGeneric               #-}+{-# LANGUAGE FlexibleInstances           #-}+{-# LANGUAGE GeneralizedNewtypeDeriving  #-}+{-# LANGUAGE LambdaCase                  #-}+{-# LANGUAGE NoImplicitPrelude           #-}+{-# LANGUAGE OverloadedStrings           #-}+{-# LANGUAGE RecordWildCards             #-}+{-# LANGUAGE TypeFamilies                #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module      : Network.AWS.EC2.RestoreAddressToClassic+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- License     : This Source Code Form is subject to the terms of+--               the Mozilla Public License, v. 2.0.+--               A copy of the MPL can be found in the LICENSE file or+--               you can obtain it at http://mozilla.org/MPL/2.0/.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)+--+-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | Restores an Elastic IP address that was previously moved to the EC2-VPC+-- platform back to the EC2-Classic platform. You cannot move an Elastic IP+-- address that was originally allocated for use in EC2-VPC. The Elastic IP+-- address must not be associated with an instance or network interface.+--+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-RestoreAddressToClassic.html>+module Network.AWS.EC2.RestoreAddressToClassic+    (+    -- * Request+      RestoreAddressToClassic+    -- ** Request constructor+    , restoreAddressToClassic+    -- ** Request lenses+    , ratcDryRun+    , ratcPublicIp++    -- * Response+    , RestoreAddressToClassicResponse+    -- ** Response constructor+    , restoreAddressToClassicResponse+    -- ** Response lenses+    , ratcrPublicIp+    , ratcrStatus+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.Query+import Network.AWS.EC2.Types+import qualified GHC.Exts++data RestoreAddressToClassic = RestoreAddressToClassic+    { _ratcDryRun   :: Maybe Bool+    , _ratcPublicIp :: Text+    } deriving (Eq, Ord, Read, Show)++-- | 'RestoreAddressToClassic' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ratcDryRun' @::@ 'Maybe' 'Bool'+--+-- * 'ratcPublicIp' @::@ 'Text'+--+restoreAddressToClassic :: Text -- ^ 'ratcPublicIp'+                        -> RestoreAddressToClassic+restoreAddressToClassic p1 = RestoreAddressToClassic+    { _ratcPublicIp = p1+    , _ratcDryRun   = Nothing+    }++-- | 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'.+ratcDryRun :: Lens' RestoreAddressToClassic (Maybe Bool)+ratcDryRun = lens _ratcDryRun (\s a -> s { _ratcDryRun = a })++-- | The Elastic IP address.+ratcPublicIp :: Lens' RestoreAddressToClassic Text+ratcPublicIp = lens _ratcPublicIp (\s a -> s { _ratcPublicIp = a })++data RestoreAddressToClassicResponse = RestoreAddressToClassicResponse+    { _ratcrPublicIp :: Maybe Text+    , _ratcrStatus   :: Maybe AddressStatus+    } deriving (Eq, Read, Show)++-- | 'RestoreAddressToClassicResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ratcrPublicIp' @::@ 'Maybe' 'Text'+--+-- * 'ratcrStatus' @::@ 'Maybe' 'AddressStatus'+--+restoreAddressToClassicResponse :: RestoreAddressToClassicResponse+restoreAddressToClassicResponse = RestoreAddressToClassicResponse+    { _ratcrStatus   = Nothing+    , _ratcrPublicIp = Nothing+    }++-- | The Elastic IP address.+ratcrPublicIp :: Lens' RestoreAddressToClassicResponse (Maybe Text)+ratcrPublicIp = lens _ratcrPublicIp (\s a -> s { _ratcrPublicIp = a })++-- | The move status for the IP address.+ratcrStatus :: Lens' RestoreAddressToClassicResponse (Maybe AddressStatus)+ratcrStatus = lens _ratcrStatus (\s a -> s { _ratcrStatus = a })++instance ToPath RestoreAddressToClassic where+    toPath = const "/"++instance ToQuery RestoreAddressToClassic where+    toQuery RestoreAddressToClassic{..} = mconcat+        [ "DryRun"   =? _ratcDryRun+        , "PublicIp" =? _ratcPublicIp+        ]++instance ToHeaders RestoreAddressToClassic++instance AWSRequest RestoreAddressToClassic where+    type Sv RestoreAddressToClassic = EC2+    type Rs RestoreAddressToClassic = RestoreAddressToClassicResponse++    request  = post "RestoreAddressToClassic"+    response = xmlResponse++instance FromXML RestoreAddressToClassicResponse where+    parseXML x = RestoreAddressToClassicResponse+        <$> x .@? "publicIp"+        <*> x .@? "status"
gen/Network/AWS/EC2/RevokeSecurityGroupEgress.hs view
@@ -116,6 +116,9 @@ rsgeCidrIp :: Lens' RevokeSecurityGroupEgress (Maybe Text) rsgeCidrIp = lens _rsgeCidrIp (\s a -> s { _rsgeCidrIp = a }) +-- | 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'. rsgeDryRun :: Lens' RevokeSecurityGroupEgress (Maybe Bool) rsgeDryRun = lens _rsgeDryRun (\s a -> s { _rsgeDryRun = a }) 
gen/Network/AWS/EC2/RevokeSecurityGroupIngress.hs view
@@ -120,6 +120,9 @@ rsgiCidrIp :: Lens' RevokeSecurityGroupIngress (Maybe Text) rsgiCidrIp = lens _rsgiCidrIp (\s a -> s { _rsgiCidrIp = a }) +-- | 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'. rsgiDryRun :: Lens' RevokeSecurityGroupIngress (Maybe Bool) rsgiDryRun = lens _rsgiDryRun (\s a -> s { _rsgiDryRun = a }) 
gen/Network/AWS/EC2/RunInstances.hs view
@@ -31,15 +31,15 @@ -- -- If you don't specify a security group when launching an instance, Amazon EC2 -- uses the default security group. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html Security Groups> in--- the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- the /Amazon Elastic Compute Cloud User Guide/. -- -- Linux instances have access to the public key of the key pair at boot. You -- can use this key to provide secure access to the instance. Amazon EC2 public -- images use this feature to provide secure access without passwords. For more--- information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html Key Pairs> in the /Amazon Elastic Compute Cloud User Guide forLinux/.+-- information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html Key Pairs> in the /Amazon Elastic Compute Cloud User Guide/. -- -- You can provide optional user data when launching an instance. For more--- information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AESDG-chapter-instancedata.html Instance Metadata> in the /Amazon Elastic Compute Cloud UserGuide for Linux/.+-- information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AESDG-chapter-instancedata.html Instance Metadata> in the /Amazon Elastic Compute Cloud UserGuide/. -- -- If any of the AMIs have a product code attached for which the user has not -- subscribed, 'RunInstances' fails.@@ -49,7 +49,7 @@ -- fails. -- -- For more information about troubleshooting, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_InstanceStraightToTerminated.html What To Do If An InstanceImmediately Terminates>, and <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html Troubleshooting Connecting to Your Instance> in--- the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- the /Amazon Elastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-RunInstances.html> module Network.AWS.EC2.RunInstances@@ -234,12 +234,15 @@ riDisableApiTermination =     lens _riDisableApiTermination (\s a -> s { _riDisableApiTermination = a }) +-- | 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'. riDryRun :: Lens' RunInstances (Maybe Bool) riDryRun = lens _riDryRun (\s a -> s { _riDryRun = a })  -- | Indicates whether the instance is optimized for EBS I/O. This optimization -- provides dedicated throughput to Amazon EBS and an optimized configuration--- stack to provide optimal Amazon EBS I/O performance. This optimization isn't+-- stack to provide optimal EBS I/O performance. This optimization isn't -- available with all instance types. Additional usage charges apply when using -- an EBS-optimized instance. --@@ -265,7 +268,7 @@     lens _riInstanceInitiatedShutdownBehavior         (\s a -> s { _riInstanceInitiatedShutdownBehavior = a }) --- | The instance type. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html Instance Types> in the /AmazonElastic Compute Cloud User Guide for Linux/.+-- | The instance type. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html Instance Types> in the /AmazonElastic Compute Cloud User Guide/. -- -- Default: 'm1.small' riInstanceType :: Lens' RunInstances (Maybe InstanceType)@@ -274,7 +277,7 @@ -- | The ID of the kernel. -- -- We recommend that you use PV-GRUB instead of kernels and RAM disks. For--- more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html  PV-GRUB> in the /Amazon Elastic Compute Cloud User Guidefor Linux/.+-- more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html  PV-GRUB> in the /Amazon Elastic Compute Cloud User Guide/. -- -- riKernelId :: Lens' RunInstances (Maybe Text)@@ -282,8 +285,8 @@  -- | The name of the key pair. You can create a key pair using 'CreateKeyPair' or 'ImportKeyPair'. ----- If you launch an instance without specifying a key pair, you can't connect--- to the instance.+-- If you do not specify a key pair, you can't connect to the instance unless+-- you choose an AMI that is configured to allow users another way to log in. -- -- riKeyName :: Lens' RunInstances (Maybe Text)@@ -340,7 +343,7 @@ -- | The ID of the RAM disk. -- -- We recommend that you use PV-GRUB instead of kernels and RAM disks. For--- more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html  PV-GRUB> in the /Amazon Elastic Compute Cloud User Guidefor Linux/.+-- more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html  PV-GRUB> in the /Amazon Elastic Compute Cloud User Guide/. -- -- riRamdiskId :: Lens' RunInstances (Maybe Text)
gen/Network/AWS/EC2/StartInstances.hs view
@@ -39,7 +39,7 @@ -- Performing this operation on an instance that uses an instance store as its -- root device returns an error. ----- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html Stopping Instances> in the /Amazon Elastic ComputeCloud User Guide for Linux/.+-- For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html Stopping Instances> in the /Amazon Elastic ComputeCloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-StartInstances.html> module Network.AWS.EC2.StartInstances@@ -94,6 +94,9 @@ si1AdditionalInfo =     lens _si1AdditionalInfo (\s a -> s { _si1AdditionalInfo = a }) +-- | 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'. si1DryRun :: Lens' StartInstances (Maybe Bool) si1DryRun = lens _si1DryRun (\s a -> s { _si1DryRun = a }) 
gen/Network/AWS/EC2/StopInstances.hs view
@@ -48,9 +48,9 @@ -- persist. When you terminate an instance, the root device and any other -- devices attached during the instance launch are automatically deleted. For -- more information about the differences between stopping and terminating--- instances, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html Instance Lifecycle> in the /Amazon Elastic Compute Cloud UserGuide for Linux/.+-- instances, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html Instance Lifecycle> in the /Amazon Elastic Compute Cloud UserGuide/. ----- For more information about troubleshooting, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesStopping.html Troubleshooting StoppingYour Instance> in the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- For more information about troubleshooting, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesStopping.html Troubleshooting StoppingYour Instance> in the /Amazon Elastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-StopInstances.html> module Network.AWS.EC2.StopInstances@@ -100,6 +100,9 @@     , _siForce       = Nothing     } +-- | 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'. siDryRun :: Lens' StopInstances (Maybe Bool) siDryRun = lens _siDryRun (\s a -> s { _siDryRun = a }) 
gen/Network/AWS/EC2/TerminateInstances.hs view
@@ -28,9 +28,8 @@ -- Terminated instances remain visible after termination (for approximately one -- hour). ----- By default, Amazon EC2 deletes all Amazon EBS volumes that were attached--- when the instance launched. Volumes attached after instance launch continue--- running.+-- By default, Amazon EC2 deletes all EBS volumes that were attached when the+-- instance launched. Volumes attached after instance launch continue running. -- -- You can stop, start, and terminate EBS-backed instances. You can only -- terminate instance store-backed instances. What happens to an instance@@ -39,9 +38,9 @@ -- persist. When you terminate an instance, the root device and any other -- devices attached during the instance launch are automatically deleted. For -- more information about the differences between stopping and terminating--- instances, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html Instance Lifecycle> in the /Amazon Elastic Compute Cloud UserGuide for Linux/.+-- instances, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html Instance Lifecycle> in the /Amazon Elastic Compute Cloud UserGuide/. ----- For more information about troubleshooting, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesShuttingDown.html Troubleshooting TerminatingYour Instance> in the /Amazon Elastic Compute Cloud User Guide for Linux/.+-- For more information about troubleshooting, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesShuttingDown.html Troubleshooting TerminatingYour Instance> in the /Amazon Elastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-TerminateInstances.html> module Network.AWS.EC2.TerminateInstances@@ -86,6 +85,9 @@     , _tiInstanceIds = mempty     } +-- | 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'. tiDryRun :: Lens' TerminateInstances (Maybe Bool) tiDryRun = lens _tiDryRun (\s a -> s { _tiDryRun = a }) 
gen/Network/AWS/EC2/Types.hs view
@@ -99,12347 +99,14285 @@     , tdResourceType     , tdValue -    -- * GroupIdentifier-    , GroupIdentifier-    , groupIdentifier-    , giGroupId-    , giGroupName--    -- * VpnStaticRouteSource-    , VpnStaticRouteSource (..)--    -- * ReservedInstancesListing-    , ReservedInstancesListing-    , reservedInstancesListing-    , rilClientToken-    , rilCreateDate-    , rilInstanceCounts-    , rilPriceSchedules-    , rilReservedInstancesId-    , rilReservedInstancesListingId-    , rilStatus-    , rilStatusMessage-    , rilTags-    , rilUpdateDate--    -- * InstanceLifecycleType-    , InstanceLifecycleType (..)--    -- * VirtualizationType-    , VirtualizationType (..)--    -- * NetworkInterfaceStatus-    , NetworkInterfaceStatus (..)--    -- * PlatformValues-    , PlatformValues (..)--    -- * CreateVolumePermission-    , CreateVolumePermission-    , createVolumePermission-    , cvpGroup-    , cvpUserId--    -- * NetworkInterfaceAttachmentChanges-    , NetworkInterfaceAttachmentChanges-    , networkInterfaceAttachmentChanges-    , niacAttachmentId-    , niacDeleteOnTermination--    -- * RecurringChargeFrequency-    , RecurringChargeFrequency (..)--    -- * DhcpOptions-    , DhcpOptions-    , dhcpOptions-    , doDhcpConfigurations-    , doDhcpOptionsId-    , doTags--    -- * InstanceNetworkInterfaceSpecification-    , InstanceNetworkInterfaceSpecification-    , instanceNetworkInterfaceSpecification-    , inisAssociatePublicIpAddress-    , inisDeleteOnTermination-    , inisDescription-    , inisDeviceIndex-    , inisGroups-    , inisNetworkInterfaceId-    , inisPrivateIpAddress-    , inisPrivateIpAddresses-    , inisSecondaryPrivateIpAddressCount-    , inisSubnetId--    -- * VolumeState-    , VolumeState (..)--    -- * AttributeValue-    , AttributeValue-    , attributeValue-    , avValue--    -- * PrivateIpAddressSpecification-    , PrivateIpAddressSpecification-    , privateIpAddressSpecification-    , piasPrimary-    , piasPrivateIpAddress--    -- * Image-    , Image-    , image-    , iArchitecture-    , iBlockDeviceMappings-    , iCreationDate-    , iDescription-    , iHypervisor-    , iImageId-    , iImageLocation-    , iImageOwnerAlias-    , iImageType-    , iKernelId-    , iName-    , iOwnerId-    , iPlatform-    , iProductCodes-    , iPublic-    , iRamdiskId-    , iRootDeviceName-    , iRootDeviceType-    , iSriovNetSupport-    , iState-    , iStateReason-    , iTags-    , iVirtualizationType--    -- * DhcpConfiguration-    , DhcpConfiguration-    , dhcpConfiguration-    , dcKey-    , dcValues--    -- * Tag-    , Tag-    , tag-    , tagKey-    , tagValue--    -- * AccountAttributeName-    , AccountAttributeName (..)--    -- * NetworkInterfaceAttachment-    , NetworkInterfaceAttachment-    , networkInterfaceAttachment-    , niaAttachTime-    , niaAttachmentId-    , niaDeleteOnTermination-    , niaDeviceIndex-    , niaInstanceId-    , niaInstanceOwnerId-    , niaStatus--    -- * RunInstancesMonitoringEnabled-    , RunInstancesMonitoringEnabled-    , runInstancesMonitoringEnabled-    , rimeEnabled--    -- * VolumeStatusInfo-    , VolumeStatusInfo-    , volumeStatusInfo-    , vsiDetails-    , vsiStatus--    -- * NetworkInterfaceAssociation-    , NetworkInterfaceAssociation-    , networkInterfaceAssociation-    , niaAllocationId-    , niaAssociationId-    , niaIpOwnerId-    , niaPublicDnsName-    , niaPublicIp--    -- * CreateVolumePermissionModifications-    , CreateVolumePermissionModifications-    , createVolumePermissionModifications-    , cvpmAdd-    , cvpmRemove--    -- * VpcState-    , VpcState (..)--    -- * ResourceType-    , ResourceType (..)--    -- * ReportStatusType-    , ReportStatusType (..)--    -- * CurrencyCodeValues-    , CurrencyCodeValues (..)--    -- * IcmpTypeCode-    , IcmpTypeCode-    , icmpTypeCode-    , itcCode-    , itcType--    -- * InstanceCount-    , InstanceCount-    , instanceCount-    , icInstanceCount-    , icState--    -- * ExportToS3Task-    , ExportToS3Task-    , exportToS3Task-    , etstContainerFormat-    , etstDiskImageFormat-    , etstS3Bucket-    , etstS3Key--    -- * BlockDeviceMapping-    , BlockDeviceMapping-    , blockDeviceMapping-    , bdmDeviceName-    , bdmEbs-    , bdmNoDevice-    , bdmVirtualName--    -- * ConversionTask-    , ConversionTask-    , conversionTask-    , ctConversionTaskId-    , ctExpirationTime-    , ctImportInstance-    , ctImportVolume-    , ctState-    , ctStatusMessage-    , ctTags--    -- * AttachmentStatus-    , AttachmentStatus (..)--    -- * ClassicLinkInstance-    , ClassicLinkInstance-    , classicLinkInstance-    , cliGroups-    , cliInstanceId-    , cliTags-    , cliVpcId--    -- * RouteOrigin-    , RouteOrigin (..)--    -- * ListingState-    , ListingState (..)--    -- * SpotPrice-    , SpotPrice-    , spotPrice-    , spAvailabilityZone-    , spInstanceType-    , spProductDescription-    , spSpotPrice-    , spTimestamp--    -- * InstanceMonitoring-    , InstanceMonitoring-    , instanceMonitoring-    , imInstanceId-    , imMonitoring--    -- * PriceScheduleSpecification-    , PriceScheduleSpecification-    , priceScheduleSpecification-    , pssCurrencyCode-    , pssPrice-    , pssTerm--    -- * SpotInstanceStatus-    , SpotInstanceStatus-    , spotInstanceStatus-    , sisCode-    , sisMessage-    , sisUpdateTime--    -- * AvailabilityZoneState-    , AvailabilityZoneState (..)--    -- * SpotInstanceRequest-    , SpotInstanceRequest-    , spotInstanceRequest-    , siAvailabilityZoneGroup-    , siCreateTime-    , siFault-    , siInstanceId-    , siLaunchGroup-    , siLaunchSpecification-    , siLaunchedAvailabilityZone-    , siProductDescription-    , siSpotInstanceRequestId-    , siSpotPrice-    , siState-    , siStatus-    , siTags-    , siType-    , siValidFrom-    , siValidUntil--    -- * LaunchSpecification-    , LaunchSpecification-    , launchSpecification-    , lsAddressingType-    , lsBlockDeviceMappings-    , lsEbsOptimized-    , lsIamInstanceProfile-    , lsImageId-    , lsInstanceType-    , lsKernelId-    , lsKeyName-    , lsMonitoring-    , lsNetworkInterfaces-    , lsPlacement-    , lsRamdiskId-    , lsSecurityGroups-    , lsSubnetId-    , lsUserData--    -- * VolumeStatusEvent-    , VolumeStatusEvent-    , volumeStatusEvent-    , vseDescription-    , vseEventId-    , vseEventType-    , vseNotAfter-    , vseNotBefore--    -- * Volume-    , Volume-    , volume-    , vAttachments-    , vAvailabilityZone-    , vCreateTime-    , vEncrypted-    , vIops-    , vKmsKeyId-    , vSize-    , vSnapshotId-    , vState-    , vTags-    , vVolumeId-    , vVolumeType--    -- * Reservation-    , Reservation-    , reservation-    , rGroups-    , rInstances-    , rOwnerId-    , rRequesterId-    , rReservationId--    -- * ImportInstanceVolumeDetailItem-    , ImportInstanceVolumeDetailItem-    , importInstanceVolumeDetailItem-    , iivdiAvailabilityZone-    , iivdiBytesConverted-    , iivdiDescription-    , iivdiImage-    , iivdiStatus-    , iivdiStatusMessage-    , iivdiVolume--    -- * SummaryStatus-    , SummaryStatus (..)--    -- * ReservedInstancesModification-    , ReservedInstancesModification-    , reservedInstancesModification-    , rimClientToken-    , rimCreateDate-    , rimEffectiveDate-    , rimModificationResults-    , rimReservedInstancesIds-    , rimReservedInstancesModificationId-    , rimStatus-    , rimStatusMessage-    , rimUpdateDate--    -- * RuleAction-    , RuleAction (..)--    -- * NetworkInterface-    , NetworkInterface-    , networkInterface-    , niAssociation-    , niAttachment-    , niAvailabilityZone-    , niDescription-    , niGroups-    , niMacAddress-    , niNetworkInterfaceId-    , niOwnerId-    , niPrivateDnsName-    , niPrivateIpAddress-    , niPrivateIpAddresses-    , niRequesterId-    , niRequesterManaged-    , niSourceDestCheck-    , niStatus-    , niSubnetId-    , niTagSet-    , niVpcId--    -- * TelemetryStatus-    , TelemetryStatus (..)--    -- * Subnet-    , Subnet-    , subnet-    , s1AvailabilityZone-    , s1AvailableIpAddressCount-    , s1CidrBlock-    , s1DefaultForAz-    , s1MapPublicIpOnLaunch-    , s1State-    , s1SubnetId-    , s1Tags-    , s1VpcId--    -- * KeyPairInfo-    , KeyPairInfo-    , keyPairInfo-    , kpiKeyFingerprint-    , kpiKeyName--    -- * LaunchPermissionModifications-    , LaunchPermissionModifications-    , launchPermissionModifications-    , lpmAdd-    , lpmRemove--    -- * SnapshotState-    , SnapshotState (..)--    -- * InstanceNetworkInterfaceAssociation-    , InstanceNetworkInterfaceAssociation-    , instanceNetworkInterfaceAssociation-    , iniaIpOwnerId-    , iniaPublicDnsName-    , iniaPublicIp--    -- * DiskImageDetail-    , DiskImageDetail-    , diskImageDetail-    , didBytes-    , didFormat-    , didImportManifestUrl--    -- * InstancePrivateIpAddress-    , InstancePrivateIpAddress-    , instancePrivateIpAddress-    , ipiaAssociation-    , ipiaPrimary-    , ipiaPrivateDnsName-    , ipiaPrivateIpAddress--    -- * CancelledSpotInstanceRequest-    , CancelledSpotInstanceRequest-    , cancelledSpotInstanceRequest-    , csiSpotInstanceRequestId-    , csiState--    -- * VpnConnectionOptionsSpecification-    , VpnConnectionOptionsSpecification-    , vpnConnectionOptionsSpecification-    , vcosStaticRoutesOnly--    -- * Address-    , Address-    , address-    , aAllocationId-    , aAssociationId-    , aDomain-    , aInstanceId-    , aNetworkInterfaceId-    , aNetworkInterfaceOwnerId-    , aPrivateIpAddress-    , aPublicIp--    -- * VolumeAttachmentState-    , VolumeAttachmentState (..)--    -- * LaunchPermission-    , LaunchPermission-    , launchPermission-    , lpGroup-    , lpUserId--    -- * RouteState-    , RouteState (..)--    -- * RouteTableAssociation-    , RouteTableAssociation-    , routeTableAssociation-    , rtaMain-    , rtaRouteTableAssociationId-    , rtaRouteTableId-    , rtaSubnetId--    -- * BundleTaskState-    , BundleTaskState (..)--    -- * PortRange-    , PortRange-    , portRange-    , prFrom-    , prTo--    -- * VpcAttributeName-    , VpcAttributeName (..)--    -- * ReservedInstancesConfiguration-    , ReservedInstancesConfiguration-    , reservedInstancesConfiguration-    , ricAvailabilityZone-    , ricInstanceCount-    , ricInstanceType-    , ricPlatform--    -- * VolumeStatusDetails-    , VolumeStatusDetails-    , volumeStatusDetails-    , vsdName-    , vsdStatus--    -- * SpotInstanceState-    , SpotInstanceState (..)--    -- * VpnConnectionOptions-    , VpnConnectionOptions-    , vpnConnectionOptions-    , vcoStaticRoutesOnly--    -- * UserIdGroupPair-    , UserIdGroupPair-    , userIdGroupPair-    , uigpGroupId-    , uigpGroupName-    , uigpUserId--    -- * InstanceStatusSummary-    , InstanceStatusSummary-    , instanceStatusSummary-    , issDetails-    , issStatus--    -- * SpotPlacement-    , SpotPlacement-    , spotPlacement-    , sp1AvailabilityZone-    , sp1GroupName--    -- * EbsInstanceBlockDeviceSpecification-    , EbsInstanceBlockDeviceSpecification-    , ebsInstanceBlockDeviceSpecification-    , eibdsDeleteOnTermination-    , eibdsVolumeId--    -- * NetworkAclAssociation-    , NetworkAclAssociation-    , networkAclAssociation-    , naaNetworkAclAssociationId-    , naaNetworkAclId-    , naaSubnetId--    -- * BundleTask-    , BundleTask-    , bundleTask-    , btBundleId-    , btBundleTaskError-    , btInstanceId-    , btProgress-    , btStartTime-    , btState-    , btStorage-    , btUpdateTime--    -- * InstanceStatusEvent-    , InstanceStatusEvent-    , instanceStatusEvent-    , iseCode-    , iseDescription-    , iseNotAfter-    , iseNotBefore--    -- * InstanceType-    , InstanceType (..)--    -- * Route-    , Route-    , route-    , rDestinationCidrBlock-    , rGatewayId-    , rInstanceId-    , rInstanceOwnerId-    , rNetworkInterfaceId-    , rOrigin-    , rState-    , rVpcPeeringConnectionId--    -- * SpotDatafeedSubscription-    , SpotDatafeedSubscription-    , spotDatafeedSubscription-    , sdsBucket-    , sdsFault-    , sdsOwnerId-    , sdsPrefix-    , sdsState--    -- * Storage-    , Storage-    , storage-    , sS3--    -- * SecurityGroup-    , SecurityGroup-    , securityGroup-    , sgDescription-    , sgGroupId-    , sgGroupName-    , sgIpPermissions-    , sgIpPermissionsEgress-    , sgOwnerId-    , sgTags-    , sgVpcId--    -- * CancelSpotInstanceRequestState-    , CancelSpotInstanceRequestState (..)--    -- * PlacementGroupState-    , PlacementGroupState (..)--    -- * ReservedInstancesModificationResult-    , ReservedInstancesModificationResult-    , reservedInstancesModificationResult-    , rimrReservedInstancesId-    , rimrTargetConfiguration--    -- * InstanceBlockDeviceMappingSpecification-    , InstanceBlockDeviceMappingSpecification-    , instanceBlockDeviceMappingSpecification-    , ibdmsDeviceName-    , ibdmsEbs-    , ibdmsNoDevice-    , ibdmsVirtualName--    -- * ExportEnvironment-    , ExportEnvironment (..)--    -- * UserData-    , UserData-    , userData-    , udData--    -- * VolumeAttachment-    , VolumeAttachment-    , volumeAttachment-    , vaAttachTime-    , vaDeleteOnTermination-    , vaDevice-    , vaInstanceId-    , vaState-    , vaVolumeId--    -- * CustomerGateway-    , CustomerGateway-    , customerGateway-    , cgBgpAsn-    , cgCustomerGatewayId-    , cgIpAddress-    , cgState-    , cgTags-    , cgType--    -- * EbsInstanceBlockDevice-    , EbsInstanceBlockDevice-    , ebsInstanceBlockDevice-    , eibdAttachTime-    , eibdDeleteOnTermination-    , eibdStatus-    , eibdVolumeId--    -- * ShutdownBehavior-    , ShutdownBehavior (..)--    -- * DiskImageDescription-    , DiskImageDescription-    , diskImageDescription-    , did1Checksum-    , did1Format-    , did1ImportManifestUrl-    , did1Size--    -- * DiskImageVolumeDescription-    , DiskImageVolumeDescription-    , diskImageVolumeDescription-    , divdId-    , divdSize--    -- * Monitoring-    , Monitoring-    , monitoring-    , mState--    -- * SubnetState-    , SubnetState (..)--    -- * ContainerFormat-    , ContainerFormat (..)--    -- * AvailabilityZoneMessage-    , AvailabilityZoneMessage-    , availabilityZoneMessage-    , azmMessage--    -- * VpcAttachment-    , VpcAttachment-    , vpcAttachment-    , va1State-    , va1VpcId--    -- * InstanceBlockDeviceMapping-    , InstanceBlockDeviceMapping-    , instanceBlockDeviceMapping-    , ibdmDeviceName-    , ibdmEbs--    -- * StatusType-    , StatusType (..)--    -- * ExportToS3TaskSpecification-    , ExportToS3TaskSpecification-    , exportToS3TaskSpecification-    , etstsContainerFormat-    , etstsDiskImageFormat-    , etstsS3Bucket-    , etstsS3Prefix--    -- * NetworkInterfaceAttribute-    , NetworkInterfaceAttribute (..)--    -- * ImageTypeValues-    , ImageTypeValues (..)--    -- * InstanceExportDetails-    , InstanceExportDetails-    , instanceExportDetails-    , iedInstanceId-    , iedTargetEnvironment--    -- * SnapshotAttributeName-    , SnapshotAttributeName (..)--    -- * AvailabilityZone-    , AvailabilityZone-    , availabilityZone-    , azMessages-    , azRegionName-    , azState-    , azZoneName--    -- * VpnState-    , VpnState (..)--    -- * RouteTable-    , RouteTable-    , routeTable-    , rtAssociations-    , rtPropagatingVgws-    , rtRouteTableId-    , rtRoutes-    , rtTags-    , rtVpcId--    -- * HypervisorType-    , HypervisorType (..)--    -- * InstanceStatusDetails-    , InstanceStatusDetails-    , instanceStatusDetails-    , isdImpairedSince-    , isdName-    , isdStatus--    -- * IamInstanceProfile-    , IamInstanceProfile-    , iamInstanceProfile-    , iipArn-    , iipId--    -- * InternetGatewayAttachment-    , InternetGatewayAttachment-    , internetGatewayAttachment-    , igaState-    , igaVpcId--    -- * ReservedInstanceState-    , ReservedInstanceState (..)--    -- * InstanceAttributeName-    , InstanceAttributeName (..)--    -- * IpPermission-    , IpPermission-    , ipPermission-    , ipFromPort-    , ipIpProtocol-    , ipIpRanges-    , ipToPort-    , ipUserIdGroupPairs--    -- * ConversionTaskState-    , ConversionTaskState (..)--    -- * DiskImage-    , DiskImage-    , diskImage-    , diDescription-    , diImage-    , diVolume--    -- * Tenancy-    , Tenancy (..)--    -- * VpcPeeringConnectionStateReason-    , VpcPeeringConnectionStateReason-    , vpcPeeringConnectionStateReason-    , vpcsrCode-    , vpcsrMessage--    -- * IamInstanceProfileSpecification-    , IamInstanceProfileSpecification-    , iamInstanceProfileSpecification-    , iipsArn-    , iipsName--    -- * ImportVolumeTaskDetails-    , ImportVolumeTaskDetails-    , importVolumeTaskDetails-    , ivtdAvailabilityZone-    , ivtdBytesConverted-    , ivtdDescription-    , ivtdImage-    , ivtdVolume--    -- * PlacementStrategy-    , PlacementStrategy (..)--    -- * InstanceNetworkInterface-    , InstanceNetworkInterface-    , instanceNetworkInterface-    , iniAssociation-    , iniAttachment-    , iniDescription-    , iniGroups-    , iniMacAddress-    , iniNetworkInterfaceId-    , iniOwnerId-    , iniPrivateDnsName-    , iniPrivateIpAddress-    , iniPrivateIpAddresses-    , iniSourceDestCheck-    , iniStatus-    , iniSubnetId-    , iniVpcId--    -- * VolumeStatusAction-    , VolumeStatusAction-    , volumeStatusAction-    , vsaCode-    , vsaDescription-    , vsaEventId-    , vsaEventType--    -- * VpcPeeringConnectionVpcInfo-    , VpcPeeringConnectionVpcInfo-    , vpcPeeringConnectionVpcInfo-    , vpcviCidrBlock-    , vpcviOwnerId-    , vpcviVpcId--    -- * ReservedInstanceLimitPrice-    , ReservedInstanceLimitPrice-    , reservedInstanceLimitPrice-    , rilpAmount-    , rilpCurrencyCode--    -- * Vpc-    , Vpc-    , vpc-    , vpcCidrBlock-    , vpcDhcpOptionsId-    , vpcInstanceTenancy-    , vpcIsDefault-    , vpcState-    , vpcTags-    , vpcVpcId--    -- * InstanceStatus-    , InstanceStatus-    , instanceStatus-    , isAvailabilityZone-    , isEvents-    , isInstanceId-    , isInstanceState-    , isInstanceStatus-    , isSystemStatus--    -- * ArchitectureValues-    , ArchitectureValues (..)--    -- * ReportInstanceReasonCodes-    , ReportInstanceReasonCodes (..)--    -- * EbsBlockDevice-    , EbsBlockDevice-    , ebsBlockDevice-    , ebdDeleteOnTermination-    , ebdEncrypted-    , ebdIops-    , ebdSnapshotId-    , ebdVolumeSize-    , ebdVolumeType--    -- * AccountAttribute-    , AccountAttribute-    , accountAttribute-    , aaAttributeName-    , aaAttributeValues--    -- * PriceSchedule-    , PriceSchedule-    , priceSchedule-    , psActive-    , psCurrencyCode-    , psPrice-    , psTerm--    -- * DeviceType-    , DeviceType (..)--    -- * DomainType-    , DomainType (..)--    -- * Region-    , Region-    , region-    , rEndpoint-    , rRegionName--    -- * PropagatingVgw-    , PropagatingVgw-    , propagatingVgw-    , pvGatewayId--    -- * OfferingTypeValues-    , OfferingTypeValues (..)--    -- * VpnGateway-    , VpnGateway-    , vpnGateway-    , vgAvailabilityZone-    , vgState-    , vgTags-    , vgType-    , vgVpcAttachments-    , vgVpnGatewayId--    -- * Filter-    , Filter-    , filter'-    , fName-    , fValues--    -- * VolumeType-    , VolumeType (..)--    -- * InstanceStateChange-    , InstanceStateChange-    , instanceStateChange-    , iscCurrentState-    , iscInstanceId-    , iscPreviousState--    -- * NetworkAcl-    , NetworkAcl-    , networkAcl-    , naAssociations-    , naEntries-    , naIsDefault-    , naNetworkAclId-    , naTags-    , naVpcId--    -- * ImageState-    , ImageState (..)--    -- * GatewayType-    , GatewayType (..)--    -- * InstanceNetworkInterfaceAttachment-    , InstanceNetworkInterfaceAttachment-    , instanceNetworkInterfaceAttachment-    , iniaAttachTime-    , iniaAttachmentId-    , iniaDeleteOnTermination-    , iniaDeviceIndex-    , iniaStatus--    -- * AttributeBooleanValue-    , AttributeBooleanValue-    , attributeBooleanValue-    , abvValue--    -- * RecurringCharge-    , RecurringCharge-    , recurringCharge-    , rcAmount-    , rcFrequency--    -- * NewDhcpConfiguration-    , NewDhcpConfiguration-    , newDhcpConfiguration-    , ndcKey-    , ndcValues--    -- * StateReason-    , StateReason-    , stateReason-    , srCode-    , srMessage--    -- * MonitoringState-    , MonitoringState (..)--    -- * ReservedInstancesId-    , ReservedInstancesId-    , reservedInstancesId-    , riiReservedInstancesId--    -- * StatusName-    , StatusName (..)--    -- * InternetGateway-    , InternetGateway-    , internetGateway-    , igAttachments-    , igInternetGatewayId-    , igTags--    -- * VolumeStatusName-    , VolumeStatusName (..)--    -- * VolumeAttributeName-    , VolumeAttributeName (..)--    -- * ImportInstanceTaskDetails-    , ImportInstanceTaskDetails-    , importInstanceTaskDetails-    , iitdDescription-    , iitdInstanceId-    , iitdPlatform-    , iitdVolumes--    -- * PlacementGroup-    , PlacementGroup-    , placementGroup-    , pgGroupName-    , pgState-    , pgStrategy--    -- * ProductCode-    , ProductCode-    , productCode-    , pcProductCodeId-    , pcProductCodeType--    -- * ListingStatus-    , ListingStatus (..)--    -- * IpRange-    , IpRange-    , ipRange-    , irCidrIp--    -- * VolumeStatusInfoStatus-    , VolumeStatusInfoStatus (..)--    -- * AccountAttributeValue-    , AccountAttributeValue-    , accountAttributeValue-    , aavAttributeValue--    -- * RIProductDescription-    , RIProductDescription (..)--    -- * ReservedInstancesOffering-    , ReservedInstancesOffering-    , reservedInstancesOffering-    , rioAvailabilityZone-    , rioCurrencyCode-    , rioDuration-    , rioFixedPrice-    , rioInstanceTenancy-    , rioInstanceType-    , rioMarketplace-    , rioOfferingType-    , rioPricingDetails-    , rioProductDescription-    , rioRecurringCharges-    , rioReservedInstancesOfferingId-    , rioUsagePrice--    -- * ReservedInstances-    , ReservedInstances-    , reservedInstances-    , ri1AvailabilityZone-    , ri1CurrencyCode-    , ri1Duration-    , ri1End-    , ri1FixedPrice-    , ri1InstanceCount-    , ri1InstanceTenancy-    , ri1InstanceType-    , ri1OfferingType-    , ri1ProductDescription-    , ri1RecurringCharges-    , ri1ReservedInstancesId-    , ri1Start-    , ri1State-    , ri1Tags-    , ri1UsagePrice--    -- * DatafeedSubscriptionState-    , DatafeedSubscriptionState (..)--    -- * ExportTaskState-    , ExportTaskState (..)--    -- * ProductCodeValues-    , ProductCodeValues (..)--    -- * VpnConnection-    , VpnConnection-    , vpnConnection-    , vcCustomerGatewayConfiguration-    , vcCustomerGatewayId-    , vcOptions-    , vcRoutes-    , vcState-    , vcTags-    , vcType-    , vcVgwTelemetry-    , vcVpnConnectionId-    , vcVpnGatewayId--    -- * InstanceState-    , InstanceState-    , instanceState-    , isCode-    , isName--    -- * Placement-    , Placement-    , placement-    , pAvailabilityZone-    , pGroupName-    , pTenancy--    -- * EventCode-    , EventCode (..)--    -- * SpotInstanceType-    , SpotInstanceType (..)--    -- * VpcPeeringConnection-    , VpcPeeringConnection-    , vpcPeeringConnection-    , vpc1AccepterVpcInfo-    , vpc1ExpirationTime-    , vpc1RequesterVpcInfo-    , vpc1Status-    , vpc1Tags-    , vpc1VpcPeeringConnectionId--    -- * S3Storage-    , S3Storage-    , s3Storage-    , ssAWSAccessKeyId-    , ssBucket-    , ssPrefix-    , ssUploadPolicy-    , ssUploadPolicySignature--    -- * VgwTelemetry-    , VgwTelemetry-    , vgwTelemetry-    , vtAcceptedRouteCount-    , vtLastStatusChange-    , vtOutsideIpAddress-    , vtStatus-    , vtStatusMessage--    -- * VpnStaticRoute-    , VpnStaticRoute-    , vpnStaticRoute-    , vsrDestinationCidrBlock-    , vsrSource-    , vsrState--    -- * InstanceStateName-    , InstanceStateName (..)--    -- * Instance-    , Instance-    , instance'-    , i1AmiLaunchIndex-    , i1Architecture-    , i1BlockDeviceMappings-    , i1ClientToken-    , i1EbsOptimized-    , i1Hypervisor-    , i1IamInstanceProfile-    , i1ImageId-    , i1InstanceId-    , i1InstanceLifecycle-    , i1InstanceType-    , i1KernelId-    , i1KeyName-    , i1LaunchTime-    , i1Monitoring-    , i1NetworkInterfaces-    , i1Placement-    , i1Platform-    , i1PrivateDnsName-    , i1PrivateIpAddress-    , i1ProductCodes-    , i1PublicDnsName-    , i1PublicIpAddress-    , i1RamdiskId-    , i1RootDeviceName-    , i1RootDeviceType-    , i1SecurityGroups-    , i1SourceDestCheck-    , i1SpotInstanceRequestId-    , i1SriovNetSupport-    , i1State-    , i1StateReason-    , i1StateTransitionReason-    , i1SubnetId-    , i1Tags-    , i1VirtualizationType-    , i1VpcId--    -- * ExportTask-    , ExportTask-    , exportTask-    , etDescription-    , etExportTaskId-    , etExportToS3Task-    , etInstanceExportDetails-    , etState-    , etStatusMessage--    -- * ResetImageAttributeName-    , ResetImageAttributeName (..)--    -- * RequestSpotLaunchSpecification-    , RequestSpotLaunchSpecification-    , requestSpotLaunchSpecification-    , rslsAddressingType-    , rslsBlockDeviceMappings-    , rslsEbsOptimized-    , rslsIamInstanceProfile-    , rslsImageId-    , rslsInstanceType-    , rslsKernelId-    , rslsKeyName-    , rslsMonitoring-    , rslsNetworkInterfaces-    , rslsPlacement-    , rslsRamdiskId-    , rslsSecurityGroupIds-    , rslsSecurityGroups-    , rslsSubnetId-    , rslsUserData--    -- * VolumeDetail-    , VolumeDetail-    , volumeDetail-    , vdSize--    -- * PricingDetail-    , PricingDetail-    , pricingDetail-    , pdCount-    , pdPrice--    -- * NetworkInterfacePrivateIpAddress-    , NetworkInterfacePrivateIpAddress-    , networkInterfacePrivateIpAddress-    , nipiaAssociation-    , nipiaPrimary-    , nipiaPrivateDnsName-    , nipiaPrivateIpAddress--    -- * DiskImageFormat-    , DiskImageFormat (..)--    -- * BundleTaskError-    , BundleTaskError-    , bundleTaskError-    , bteCode-    , bteMessage--    -- * VpcClassicLink-    , VpcClassicLink-    , vpcClassicLink-    , vclClassicLinkEnabled-    , vclTags-    , vclVpcId--    -- * VolumeStatusItem-    , VolumeStatusItem-    , volumeStatusItem-    , vsiActions-    , vsiAvailabilityZone-    , vsiEvents-    , vsiVolumeId-    , vsiVolumeStatus--    -- * Common-    , module Network.AWS.EC2.Internal-    ) where--import Network.AWS.Prelude-import Network.AWS.Signing-import Network.AWS.EC2.Internal-import qualified GHC.Exts---- | Version @2014-10-01@ of the Amazon Elastic Compute Cloud service.-data EC2--instance AWSService EC2 where-    type Sg EC2 = V4-    type Er EC2 = EC2Error--    service = service'-      where-        service' :: Service EC2-        service' = Service-            { _svcAbbrev       = "EC2"-            , _svcPrefix       = "ec2"-            , _svcVersion      = "2014-10-01"-            , _svcTargetPrefix = Nothing-            , _svcJSONVersion  = Nothing-            , _svcHandle       = handle-            , _svcRetry        = retry-            }--        handle :: Status-               -> Maybe (LazyByteString -> ServiceError EC2Error)-        handle = restError statusSuccess service'--        retry :: Retry EC2-        retry = Exponential-            { _retryBase     = 0.05-            , _retryGrowth   = 2-            , _retryAttempts = 5-            , _retryCheck    = check-            }--        check :: Status-              -> EC2Error-              -> Bool-        check (statusCode -> s) (awsErrorCode -> e)-            | s == 503 && "RequestLimitExceeded" == e = True -- Request Limit Exceeded-            | s == 500  = True -- General Server Error-            | s == 509  = True -- Limit Exceeded-            | s == 503  = True -- Service Unavailable-            | otherwise = False--ns :: Text-ns = "http://ec2.amazonaws.com/doc/2014-10-01"-{-# INLINE ns #-}--data ImageAttributeName-    = ImageBlockDeviceMapping -- ^ blockDeviceMapping-    | ImageDescription        -- ^ description-    | ImageKernel             -- ^ kernel-    | ImageLaunchPermission   -- ^ launchPermission-    | ImageProductCodes       -- ^ productCodes-    | ImageRamdisk            -- ^ ramdisk-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable ImageAttributeName--instance FromText ImageAttributeName where-    parser = takeLowerText >>= \case-        "blockdevicemapping" -> pure ImageBlockDeviceMapping-        "description"        -> pure ImageDescription-        "kernel"             -> pure ImageKernel-        "launchpermission"   -> pure ImageLaunchPermission-        "productcodes"       -> pure ImageProductCodes-        "ramdisk"            -> pure ImageRamdisk-        e                    -> fail $-            "Failure parsing ImageAttributeName from " ++ show e--instance ToText ImageAttributeName where-    toText = \case-        ImageBlockDeviceMapping -> "blockDeviceMapping"-        ImageDescription        -> "description"-        ImageKernel             -> "kernel"-        ImageLaunchPermission   -> "launchPermission"-        ImageProductCodes       -> "productCodes"-        ImageRamdisk            -> "ramdisk"--instance ToByteString ImageAttributeName-instance ToHeader     ImageAttributeName-instance ToQuery      ImageAttributeName--instance FromXML ImageAttributeName where-    parseXML = parseXMLText "ImageAttributeName"--data PermissionGroup-    = All -- ^ all-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable PermissionGroup--instance FromText PermissionGroup where-    parser = takeLowerText >>= \case-        "all" -> pure All-        e     -> fail $-            "Failure parsing PermissionGroup from " ++ show e--instance ToText PermissionGroup where-    toText All = "all"--instance ToByteString PermissionGroup-instance ToHeader     PermissionGroup-instance ToQuery      PermissionGroup--instance FromXML PermissionGroup where-    parseXML = parseXMLText "PermissionGroup"--data NetworkAclEntry = NetworkAclEntry-    { _naeCidrBlock    :: Maybe Text-    , _naeEgress       :: Maybe Bool-    , _naeIcmpTypeCode :: Maybe IcmpTypeCode-    , _naePortRange    :: Maybe PortRange-    , _naeProtocol     :: Maybe Text-    , _naeRuleAction   :: Maybe RuleAction-    , _naeRuleNumber   :: Maybe Int-    } deriving (Eq, Read, Show)---- | 'NetworkAclEntry' constructor.------ The fields accessible through corresponding lenses are:------ * 'naeCidrBlock' @::@ 'Maybe' 'Text'------ * 'naeEgress' @::@ 'Maybe' 'Bool'------ * 'naeIcmpTypeCode' @::@ 'Maybe' 'IcmpTypeCode'------ * 'naePortRange' @::@ 'Maybe' 'PortRange'------ * 'naeProtocol' @::@ 'Maybe' 'Text'------ * 'naeRuleAction' @::@ 'Maybe' 'RuleAction'------ * 'naeRuleNumber' @::@ 'Maybe' 'Int'----networkAclEntry :: NetworkAclEntry-networkAclEntry = NetworkAclEntry-    { _naeRuleNumber   = Nothing-    , _naeProtocol     = Nothing-    , _naeRuleAction   = Nothing-    , _naeEgress       = Nothing-    , _naeCidrBlock    = Nothing-    , _naeIcmpTypeCode = Nothing-    , _naePortRange    = Nothing-    }---- | The network range to allow or deny, in CIDR notation.-naeCidrBlock :: Lens' NetworkAclEntry (Maybe Text)-naeCidrBlock = lens _naeCidrBlock (\s a -> s { _naeCidrBlock = a })---- | Indicates whether the rule is an egress rule (applied to traffic leaving the--- subnet).-naeEgress :: Lens' NetworkAclEntry (Maybe Bool)-naeEgress = lens _naeEgress (\s a -> s { _naeEgress = a })---- | ICMP protocol: The ICMP type and code.-naeIcmpTypeCode :: Lens' NetworkAclEntry (Maybe IcmpTypeCode)-naeIcmpTypeCode = lens _naeIcmpTypeCode (\s a -> s { _naeIcmpTypeCode = a })---- | TCP or UDP protocols: The range of ports the rule applies to.-naePortRange :: Lens' NetworkAclEntry (Maybe PortRange)-naePortRange = lens _naePortRange (\s a -> s { _naePortRange = a })---- | The protocol. A value of '-1' means all protocols.-naeProtocol :: Lens' NetworkAclEntry (Maybe Text)-naeProtocol = lens _naeProtocol (\s a -> s { _naeProtocol = a })---- | Indicates whether to allow or deny the traffic that matches the rule.-naeRuleAction :: Lens' NetworkAclEntry (Maybe RuleAction)-naeRuleAction = lens _naeRuleAction (\s a -> s { _naeRuleAction = a })---- | The rule number for the entry. ACL entries are processed in ascending order--- by rule number.-naeRuleNumber :: Lens' NetworkAclEntry (Maybe Int)-naeRuleNumber = lens _naeRuleNumber (\s a -> s { _naeRuleNumber = a })--instance FromXML NetworkAclEntry where-    parseXML x = NetworkAclEntry-        <$> x .@? "cidrBlock"-        <*> x .@? "egress"-        <*> x .@? "icmpTypeCode"-        <*> x .@? "portRange"-        <*> x .@? "protocol"-        <*> x .@? "ruleAction"-        <*> x .@? "ruleNumber"--instance ToQuery NetworkAclEntry where-    toQuery NetworkAclEntry{..} = mconcat-        [ "CidrBlock"    =? _naeCidrBlock-        , "Egress"       =? _naeEgress-        , "IcmpTypeCode" =? _naeIcmpTypeCode-        , "PortRange"    =? _naePortRange-        , "Protocol"     =? _naeProtocol-        , "RuleAction"   =? _naeRuleAction-        , "RuleNumber"   =? _naeRuleNumber-        ]--newtype BlobAttributeValue = BlobAttributeValue-    { _bavValue :: Maybe Base64-    } deriving (Eq, Read, Show)---- | 'BlobAttributeValue' constructor.------ The fields accessible through corresponding lenses are:------ * 'bavValue' @::@ 'Maybe' 'Base64'----blobAttributeValue :: BlobAttributeValue-blobAttributeValue = BlobAttributeValue-    { _bavValue = Nothing-    }--bavValue :: Lens' BlobAttributeValue (Maybe Base64)-bavValue = lens _bavValue (\s a -> s { _bavValue = a })--instance FromXML BlobAttributeValue where-    parseXML x = BlobAttributeValue-        <$> x .@? "value"--instance ToQuery BlobAttributeValue where-    toQuery BlobAttributeValue{..} = mconcat-        [ "Value" =? _bavValue-        ]--data ImportInstanceLaunchSpecification = ImportInstanceLaunchSpecification-    { _iilsAdditionalInfo                    :: Maybe Text-    , _iilsArchitecture                      :: Maybe ArchitectureValues-    , _iilsGroupIds                          :: List "SecurityGroupId" Text-    , _iilsGroupNames                        :: List "SecurityGroup" Text-    , _iilsInstanceInitiatedShutdownBehavior :: Maybe ShutdownBehavior-    , _iilsInstanceType                      :: Maybe InstanceType-    , _iilsMonitoring                        :: Maybe Bool-    , _iilsPlacement                         :: Maybe Placement-    , _iilsPrivateIpAddress                  :: Maybe Text-    , _iilsSubnetId                          :: Maybe Text-    , _iilsUserData                          :: Maybe UserData-    } deriving (Eq, Read, Show)---- | 'ImportInstanceLaunchSpecification' constructor.------ The fields accessible through corresponding lenses are:------ * 'iilsAdditionalInfo' @::@ 'Maybe' 'Text'------ * 'iilsArchitecture' @::@ 'Maybe' 'ArchitectureValues'------ * 'iilsGroupIds' @::@ ['Text']------ * 'iilsGroupNames' @::@ ['Text']------ * 'iilsInstanceInitiatedShutdownBehavior' @::@ 'Maybe' 'ShutdownBehavior'------ * 'iilsInstanceType' @::@ 'Maybe' 'InstanceType'------ * 'iilsMonitoring' @::@ 'Maybe' 'Bool'------ * 'iilsPlacement' @::@ 'Maybe' 'Placement'------ * 'iilsPrivateIpAddress' @::@ 'Maybe' 'Text'------ * 'iilsSubnetId' @::@ 'Maybe' 'Text'------ * 'iilsUserData' @::@ 'Maybe' 'UserData'----importInstanceLaunchSpecification :: ImportInstanceLaunchSpecification-importInstanceLaunchSpecification = ImportInstanceLaunchSpecification-    { _iilsArchitecture                      = Nothing-    , _iilsGroupNames                        = mempty-    , _iilsGroupIds                          = mempty-    , _iilsAdditionalInfo                    = Nothing-    , _iilsUserData                          = Nothing-    , _iilsInstanceType                      = Nothing-    , _iilsPlacement                         = Nothing-    , _iilsMonitoring                        = Nothing-    , _iilsSubnetId                          = Nothing-    , _iilsInstanceInitiatedShutdownBehavior = Nothing-    , _iilsPrivateIpAddress                  = Nothing-    }--iilsAdditionalInfo :: Lens' ImportInstanceLaunchSpecification (Maybe Text)-iilsAdditionalInfo =-    lens _iilsAdditionalInfo (\s a -> s { _iilsAdditionalInfo = a })---- | The architecture of the instance.-iilsArchitecture :: Lens' ImportInstanceLaunchSpecification (Maybe ArchitectureValues)-iilsArchitecture = lens _iilsArchitecture (\s a -> s { _iilsArchitecture = a })---- | One or more security group IDs.-iilsGroupIds :: Lens' ImportInstanceLaunchSpecification [Text]-iilsGroupIds = lens _iilsGroupIds (\s a -> s { _iilsGroupIds = a }) . _List---- | One or more security group names.-iilsGroupNames :: Lens' ImportInstanceLaunchSpecification [Text]-iilsGroupNames = lens _iilsGroupNames (\s a -> s { _iilsGroupNames = a }) . _List---- | Indicates whether an instance stops or terminates when you initiate shutdown--- from the instance (using the operating system command for system shutdown).-iilsInstanceInitiatedShutdownBehavior :: Lens' ImportInstanceLaunchSpecification (Maybe ShutdownBehavior)-iilsInstanceInitiatedShutdownBehavior =-    lens _iilsInstanceInitiatedShutdownBehavior-        (\s a -> s { _iilsInstanceInitiatedShutdownBehavior = a })---- | The instance type. This is not supported for VMs imported into a VPC, which--- are assigned the default security group. After a VM is imported into a VPC,--- you can specify another security group using the AWS Management Console. For--- more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html Instance Types> in the /Amazon Elastic Compute Cloud UserGuide for Linux/. For more information about the Linux instance types you can--- import, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/VMImportPrerequisites.html Before You Get Started> in the Amazon Elastic Compute Cloud User--- Guide for Linux.-iilsInstanceType :: Lens' ImportInstanceLaunchSpecification (Maybe InstanceType)-iilsInstanceType = lens _iilsInstanceType (\s a -> s { _iilsInstanceType = a })--iilsMonitoring :: Lens' ImportInstanceLaunchSpecification (Maybe Bool)-iilsMonitoring = lens _iilsMonitoring (\s a -> s { _iilsMonitoring = a })--iilsPlacement :: Lens' ImportInstanceLaunchSpecification (Maybe Placement)-iilsPlacement = lens _iilsPlacement (\s a -> s { _iilsPlacement = a })---- | [EC2-VPC] Optionally, you can use this parameter to assign the instance a--- specific available IP address from the IP address range of the subnet.-iilsPrivateIpAddress :: Lens' ImportInstanceLaunchSpecification (Maybe Text)-iilsPrivateIpAddress =-    lens _iilsPrivateIpAddress (\s a -> s { _iilsPrivateIpAddress = a })---- | [EC2-VPC] The ID of the subnet to launch the instance into.-iilsSubnetId :: Lens' ImportInstanceLaunchSpecification (Maybe Text)-iilsSubnetId = lens _iilsSubnetId (\s a -> s { _iilsSubnetId = a })---- | User data to be made available to the instance.-iilsUserData :: Lens' ImportInstanceLaunchSpecification (Maybe UserData)-iilsUserData = lens _iilsUserData (\s a -> s { _iilsUserData = a })--instance FromXML ImportInstanceLaunchSpecification where-    parseXML x = ImportInstanceLaunchSpecification-        <$> x .@? "additionalInfo"-        <*> x .@? "architecture"-        <*> x .@? "GroupId" .!@ mempty-        <*> x .@? "GroupName" .!@ mempty-        <*> x .@? "instanceInitiatedShutdownBehavior"-        <*> x .@? "instanceType"-        <*> x .@? "monitoring"-        <*> x .@? "placement"-        <*> x .@? "privateIpAddress"-        <*> x .@? "subnetId"-        <*> x .@? "userData"--instance ToQuery ImportInstanceLaunchSpecification where-    toQuery ImportInstanceLaunchSpecification{..} = mconcat-        [ "AdditionalInfo"                    =? _iilsAdditionalInfo-        , "Architecture"                      =? _iilsArchitecture-        , "GroupId"                           `toQueryList` _iilsGroupIds-        , "GroupName"                         `toQueryList` _iilsGroupNames-        , "InstanceInitiatedShutdownBehavior" =? _iilsInstanceInitiatedShutdownBehavior-        , "InstanceType"                      =? _iilsInstanceType-        , "Monitoring"                        =? _iilsMonitoring-        , "Placement"                         =? _iilsPlacement-        , "PrivateIpAddress"                  =? _iilsPrivateIpAddress-        , "SubnetId"                          =? _iilsSubnetId-        , "UserData"                          =? _iilsUserData-        ]--data Snapshot = Snapshot-    { _sDescription :: Text-    , _sEncrypted   :: Bool-    , _sKmsKeyId    :: Maybe Text-    , _sOwnerAlias  :: Maybe Text-    , _sOwnerId     :: Text-    , _sProgress    :: Text-    , _sSnapshotId  :: Text-    , _sStartTime   :: ISO8601-    , _sState       :: SnapshotState-    , _sTags        :: List "item" Tag-    , _sVolumeId    :: Text-    , _sVolumeSize  :: Int-    } deriving (Eq, Read, Show)---- | 'Snapshot' constructor.------ The fields accessible through corresponding lenses are:------ * 'sDescription' @::@ 'Text'------ * 'sEncrypted' @::@ 'Bool'------ * 'sKmsKeyId' @::@ 'Maybe' 'Text'------ * 'sOwnerAlias' @::@ 'Maybe' 'Text'------ * 'sOwnerId' @::@ 'Text'------ * 'sProgress' @::@ 'Text'------ * 'sSnapshotId' @::@ 'Text'------ * 'sStartTime' @::@ 'UTCTime'------ * 'sState' @::@ 'SnapshotState'------ * 'sTags' @::@ ['Tag']------ * 'sVolumeId' @::@ 'Text'------ * 'sVolumeSize' @::@ 'Int'----snapshot :: Text -- ^ 'sSnapshotId'-         -> Text -- ^ 'sVolumeId'-         -> SnapshotState -- ^ 'sState'-         -> UTCTime -- ^ 'sStartTime'-         -> Text -- ^ 'sProgress'-         -> Text -- ^ 'sOwnerId'-         -> Text -- ^ 'sDescription'-         -> Int -- ^ 'sVolumeSize'-         -> Bool -- ^ 'sEncrypted'-         -> Snapshot-snapshot p1 p2 p3 p4 p5 p6 p7 p8 p9 = Snapshot-    { _sSnapshotId  = p1-    , _sVolumeId    = p2-    , _sState       = p3-    , _sStartTime   = withIso _Time (const id) p4-    , _sProgress    = p5-    , _sOwnerId     = p6-    , _sDescription = p7-    , _sVolumeSize  = p8-    , _sEncrypted   = p9-    , _sOwnerAlias  = Nothing-    , _sTags        = mempty-    , _sKmsKeyId    = Nothing-    }---- | The description for the snapshot.-sDescription :: Lens' Snapshot Text-sDescription = lens _sDescription (\s a -> s { _sDescription = a })---- | Indicates whether the snapshot is encrypted.-sEncrypted :: Lens' Snapshot Bool-sEncrypted = lens _sEncrypted (\s a -> s { _sEncrypted = a })---- | The full ARN of the AWS Key Management Service (KMS) master key that was used--- to protect the volume encryption key for the parent volume.-sKmsKeyId :: Lens' Snapshot (Maybe Text)-sKmsKeyId = lens _sKmsKeyId (\s a -> s { _sKmsKeyId = a })---- | The AWS account alias (for example, 'amazon', 'self') or AWS account ID that owns--- the snapshot.-sOwnerAlias :: Lens' Snapshot (Maybe Text)-sOwnerAlias = lens _sOwnerAlias (\s a -> s { _sOwnerAlias = a })---- | The AWS account ID of the Amazon EBS snapshot owner.-sOwnerId :: Lens' Snapshot Text-sOwnerId = lens _sOwnerId (\s a -> s { _sOwnerId = a })---- | The progress of the snapshot, as a percentage.-sProgress :: Lens' Snapshot Text-sProgress = lens _sProgress (\s a -> s { _sProgress = a })---- | The ID of the snapshot.-sSnapshotId :: Lens' Snapshot Text-sSnapshotId = lens _sSnapshotId (\s a -> s { _sSnapshotId = a })---- | The time stamp when the snapshot was initiated.-sStartTime :: Lens' Snapshot UTCTime-sStartTime = lens _sStartTime (\s a -> s { _sStartTime = a }) . _Time---- | The snapshot state.-sState :: Lens' Snapshot SnapshotState-sState = lens _sState (\s a -> s { _sState = a })---- | Any tags assigned to the snapshot.-sTags :: Lens' Snapshot [Tag]-sTags = lens _sTags (\s a -> s { _sTags = a }) . _List---- | The ID of the volume.-sVolumeId :: Lens' Snapshot Text-sVolumeId = lens _sVolumeId (\s a -> s { _sVolumeId = a })---- | The size of the volume, in GiB.-sVolumeSize :: Lens' Snapshot Int-sVolumeSize = lens _sVolumeSize (\s a -> s { _sVolumeSize = a })--instance FromXML Snapshot where-    parseXML x = Snapshot-        <$> x .@  "description"-        <*> x .@  "encrypted"-        <*> x .@? "kmsKeyId"-        <*> x .@? "ownerAlias"-        <*> x .@  "ownerId"-        <*> x .@  "progress"-        <*> x .@  "snapshotId"-        <*> x .@  "startTime"-        <*> x .@  "status"-        <*> x .@? "tagSet" .!@ mempty-        <*> x .@  "volumeId"-        <*> x .@  "volumeSize"--instance ToQuery Snapshot where-    toQuery Snapshot{..} = mconcat-        [ "Description" =? _sDescription-        , "Encrypted"   =? _sEncrypted-        , "KmsKeyId"    =? _sKmsKeyId-        , "OwnerAlias"  =? _sOwnerAlias-        , "OwnerId"     =? _sOwnerId-        , "Progress"    =? _sProgress-        , "SnapshotId"  =? _sSnapshotId-        , "StartTime"   =? _sStartTime-        , "Status"      =? _sState-        , "TagSet"      `toQueryList` _sTags-        , "VolumeId"    =? _sVolumeId-        , "VolumeSize"  =? _sVolumeSize-        ]--data SpotInstanceStateFault = SpotInstanceStateFault-    { _sisfCode    :: Maybe Text-    , _sisfMessage :: Maybe Text-    } deriving (Eq, Ord, Read, Show)---- | 'SpotInstanceStateFault' constructor.------ The fields accessible through corresponding lenses are:------ * 'sisfCode' @::@ 'Maybe' 'Text'------ * 'sisfMessage' @::@ 'Maybe' 'Text'----spotInstanceStateFault :: SpotInstanceStateFault-spotInstanceStateFault = SpotInstanceStateFault-    { _sisfCode    = Nothing-    , _sisfMessage = Nothing-    }---- | The reason code for the Spot Instance state change.-sisfCode :: Lens' SpotInstanceStateFault (Maybe Text)-sisfCode = lens _sisfCode (\s a -> s { _sisfCode = a })---- | The message for the Spot Instance state change.-sisfMessage :: Lens' SpotInstanceStateFault (Maybe Text)-sisfMessage = lens _sisfMessage (\s a -> s { _sisfMessage = a })--instance FromXML SpotInstanceStateFault where-    parseXML x = SpotInstanceStateFault-        <$> x .@? "code"-        <*> x .@? "message"--instance ToQuery SpotInstanceStateFault where-    toQuery SpotInstanceStateFault{..} = mconcat-        [ "Code"    =? _sisfCode-        , "Message" =? _sisfMessage-        ]--data TagDescription = TagDescription-    { _tdKey          :: Text-    , _tdResourceId   :: Text-    , _tdResourceType :: ResourceType-    , _tdValue        :: Text-    } deriving (Eq, Read, Show)---- | 'TagDescription' constructor.------ The fields accessible through corresponding lenses are:------ * 'tdKey' @::@ 'Text'------ * 'tdResourceId' @::@ 'Text'------ * 'tdResourceType' @::@ 'ResourceType'------ * 'tdValue' @::@ 'Text'----tagDescription :: Text -- ^ 'tdResourceId'-               -> ResourceType -- ^ 'tdResourceType'-               -> Text -- ^ 'tdKey'-               -> Text -- ^ 'tdValue'-               -> TagDescription-tagDescription p1 p2 p3 p4 = TagDescription-    { _tdResourceId   = p1-    , _tdResourceType = p2-    , _tdKey          = p3-    , _tdValue        = p4-    }---- | The tag key.-tdKey :: Lens' TagDescription Text-tdKey = lens _tdKey (\s a -> s { _tdKey = a })---- | The ID of the resource. For example, 'ami-1a2b3c4d'.-tdResourceId :: Lens' TagDescription Text-tdResourceId = lens _tdResourceId (\s a -> s { _tdResourceId = a })---- | The resource type.-tdResourceType :: Lens' TagDescription ResourceType-tdResourceType = lens _tdResourceType (\s a -> s { _tdResourceType = a })---- | The tag value.-tdValue :: Lens' TagDescription Text-tdValue = lens _tdValue (\s a -> s { _tdValue = a })--instance FromXML TagDescription where-    parseXML x = TagDescription-        <$> x .@  "key"-        <*> x .@  "resourceId"-        <*> x .@  "resourceType"-        <*> x .@  "value"--instance ToQuery TagDescription where-    toQuery TagDescription{..} = mconcat-        [ "Key"          =? _tdKey-        , "ResourceId"   =? _tdResourceId-        , "ResourceType" =? _tdResourceType-        , "Value"        =? _tdValue-        ]--data GroupIdentifier = GroupIdentifier-    { _giGroupId   :: Maybe Text-    , _giGroupName :: Maybe Text-    } deriving (Eq, Ord, Read, Show)---- | 'GroupIdentifier' constructor.------ The fields accessible through corresponding lenses are:------ * 'giGroupId' @::@ 'Maybe' 'Text'------ * 'giGroupName' @::@ 'Maybe' 'Text'----groupIdentifier :: GroupIdentifier-groupIdentifier = GroupIdentifier-    { _giGroupName = Nothing-    , _giGroupId   = Nothing-    }---- | The ID of the security group.-giGroupId :: Lens' GroupIdentifier (Maybe Text)-giGroupId = lens _giGroupId (\s a -> s { _giGroupId = a })---- | The name of the security group.-giGroupName :: Lens' GroupIdentifier (Maybe Text)-giGroupName = lens _giGroupName (\s a -> s { _giGroupName = a })--instance FromXML GroupIdentifier where-    parseXML x = GroupIdentifier-        <$> x .@? "groupId"-        <*> x .@? "groupName"--instance ToQuery GroupIdentifier where-    toQuery GroupIdentifier{..} = mconcat-        [ "GroupId"   =? _giGroupId-        , "GroupName" =? _giGroupName-        ]--data VpnStaticRouteSource-    = Static -- ^ Static-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable VpnStaticRouteSource--instance FromText VpnStaticRouteSource where-    parser = takeLowerText >>= \case-        "static" -> pure Static-        e        -> fail $-            "Failure parsing VpnStaticRouteSource from " ++ show e--instance ToText VpnStaticRouteSource where-    toText Static = "Static"--instance ToByteString VpnStaticRouteSource-instance ToHeader     VpnStaticRouteSource-instance ToQuery      VpnStaticRouteSource--instance FromXML VpnStaticRouteSource where-    parseXML = parseXMLText "VpnStaticRouteSource"--data ReservedInstancesListing = ReservedInstancesListing-    { _rilClientToken                :: Maybe Text-    , _rilCreateDate                 :: Maybe ISO8601-    , _rilInstanceCounts             :: List "item" InstanceCount-    , _rilPriceSchedules             :: List "item" PriceSchedule-    , _rilReservedInstancesId        :: Maybe Text-    , _rilReservedInstancesListingId :: Maybe Text-    , _rilStatus                     :: Maybe ListingStatus-    , _rilStatusMessage              :: Maybe Text-    , _rilTags                       :: List "item" Tag-    , _rilUpdateDate                 :: Maybe ISO8601-    } deriving (Eq, Read, Show)---- | 'ReservedInstancesListing' constructor.------ The fields accessible through corresponding lenses are:------ * 'rilClientToken' @::@ 'Maybe' 'Text'------ * 'rilCreateDate' @::@ 'Maybe' 'UTCTime'------ * 'rilInstanceCounts' @::@ ['InstanceCount']------ * 'rilPriceSchedules' @::@ ['PriceSchedule']------ * 'rilReservedInstancesId' @::@ 'Maybe' 'Text'------ * 'rilReservedInstancesListingId' @::@ 'Maybe' 'Text'------ * 'rilStatus' @::@ 'Maybe' 'ListingStatus'------ * 'rilStatusMessage' @::@ 'Maybe' 'Text'------ * 'rilTags' @::@ ['Tag']------ * 'rilUpdateDate' @::@ 'Maybe' 'UTCTime'----reservedInstancesListing :: ReservedInstancesListing-reservedInstancesListing = ReservedInstancesListing-    { _rilReservedInstancesListingId = Nothing-    , _rilReservedInstancesId        = Nothing-    , _rilCreateDate                 = Nothing-    , _rilUpdateDate                 = Nothing-    , _rilStatus                     = Nothing-    , _rilStatusMessage              = Nothing-    , _rilInstanceCounts             = mempty-    , _rilPriceSchedules             = mempty-    , _rilTags                       = mempty-    , _rilClientToken                = Nothing-    }---- | A unique, case-sensitive key supplied by the client to ensure that the--- request is idempotent. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html Ensuring Idempotency>.-rilClientToken :: Lens' ReservedInstancesListing (Maybe Text)-rilClientToken = lens _rilClientToken (\s a -> s { _rilClientToken = a })---- | The time the listing was created.-rilCreateDate :: Lens' ReservedInstancesListing (Maybe UTCTime)-rilCreateDate = lens _rilCreateDate (\s a -> s { _rilCreateDate = a }) . mapping _Time---- | The number of instances in this state.-rilInstanceCounts :: Lens' ReservedInstancesListing [InstanceCount]-rilInstanceCounts =-    lens _rilInstanceCounts (\s a -> s { _rilInstanceCounts = a })-        . _List---- | The price of the Reserved Instance listing.-rilPriceSchedules :: Lens' ReservedInstancesListing [PriceSchedule]-rilPriceSchedules =-    lens _rilPriceSchedules (\s a -> s { _rilPriceSchedules = a })-        . _List---- | The ID of the Reserved Instance.-rilReservedInstancesId :: Lens' ReservedInstancesListing (Maybe Text)-rilReservedInstancesId =-    lens _rilReservedInstancesId (\s a -> s { _rilReservedInstancesId = a })---- | The ID of the Reserved Instance listing.-rilReservedInstancesListingId :: Lens' ReservedInstancesListing (Maybe Text)-rilReservedInstancesListingId =-    lens _rilReservedInstancesListingId-        (\s a -> s { _rilReservedInstancesListingId = a })---- | The status of the Reserved Instance listing.-rilStatus :: Lens' ReservedInstancesListing (Maybe ListingStatus)-rilStatus = lens _rilStatus (\s a -> s { _rilStatus = a })---- | The reason for the current status of the Reserved Instance listing. The--- response can be blank.-rilStatusMessage :: Lens' ReservedInstancesListing (Maybe Text)-rilStatusMessage = lens _rilStatusMessage (\s a -> s { _rilStatusMessage = a })---- | Any tags assigned to the resource.-rilTags :: Lens' ReservedInstancesListing [Tag]-rilTags = lens _rilTags (\s a -> s { _rilTags = a }) . _List---- | The last modified timestamp of the listing.-rilUpdateDate :: Lens' ReservedInstancesListing (Maybe UTCTime)-rilUpdateDate = lens _rilUpdateDate (\s a -> s { _rilUpdateDate = a }) . mapping _Time--instance FromXML ReservedInstancesListing where-    parseXML x = ReservedInstancesListing-        <$> x .@? "clientToken"-        <*> x .@? "createDate"-        <*> x .@? "instanceCounts" .!@ mempty-        <*> x .@? "priceSchedules" .!@ mempty-        <*> x .@? "reservedInstancesId"-        <*> x .@? "reservedInstancesListingId"-        <*> x .@? "status"-        <*> x .@? "statusMessage"-        <*> x .@? "tagSet" .!@ mempty-        <*> x .@? "updateDate"--instance ToQuery ReservedInstancesListing where-    toQuery ReservedInstancesListing{..} = mconcat-        [ "ClientToken"                =? _rilClientToken-        , "CreateDate"                 =? _rilCreateDate-        , "InstanceCounts"             `toQueryList` _rilInstanceCounts-        , "PriceSchedules"             `toQueryList` _rilPriceSchedules-        , "ReservedInstancesId"        =? _rilReservedInstancesId-        , "ReservedInstancesListingId" =? _rilReservedInstancesListingId-        , "Status"                     =? _rilStatus-        , "StatusMessage"              =? _rilStatusMessage-        , "TagSet"                     `toQueryList` _rilTags-        , "UpdateDate"                 =? _rilUpdateDate-        ]--data InstanceLifecycleType-    = Spot -- ^ spot-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable InstanceLifecycleType--instance FromText InstanceLifecycleType where-    parser = takeLowerText >>= \case-        "spot" -> pure Spot-        e      -> fail $-            "Failure parsing InstanceLifecycleType from " ++ show e--instance ToText InstanceLifecycleType where-    toText Spot = "spot"--instance ToByteString InstanceLifecycleType-instance ToHeader     InstanceLifecycleType-instance ToQuery      InstanceLifecycleType--instance FromXML InstanceLifecycleType where-    parseXML = parseXMLText "InstanceLifecycleType"--data VirtualizationType-    = Hvm         -- ^ hvm-    | Paravirtual -- ^ paravirtual-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable VirtualizationType--instance FromText VirtualizationType where-    parser = takeLowerText >>= \case-        "hvm"         -> pure Hvm-        "paravirtual" -> pure Paravirtual-        e             -> fail $-            "Failure parsing VirtualizationType from " ++ show e--instance ToText VirtualizationType where-    toText = \case-        Hvm         -> "hvm"-        Paravirtual -> "paravirtual"--instance ToByteString VirtualizationType-instance ToHeader     VirtualizationType-instance ToQuery      VirtualizationType--instance FromXML VirtualizationType where-    parseXML = parseXMLText "VirtualizationType"--data NetworkInterfaceStatus-    = Attaching -- ^ attaching-    | Available -- ^ available-    | Detaching -- ^ detaching-    | InUse     -- ^ in-use-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable NetworkInterfaceStatus--instance FromText NetworkInterfaceStatus where-    parser = takeLowerText >>= \case-        "attaching" -> pure Attaching-        "available" -> pure Available-        "detaching" -> pure Detaching-        "in-use"    -> pure InUse-        e           -> fail $-            "Failure parsing NetworkInterfaceStatus from " ++ show e--instance ToText NetworkInterfaceStatus where-    toText = \case-        Attaching -> "attaching"-        Available -> "available"-        Detaching -> "detaching"-        InUse     -> "in-use"--instance ToByteString NetworkInterfaceStatus-instance ToHeader     NetworkInterfaceStatus-instance ToQuery      NetworkInterfaceStatus--instance FromXML NetworkInterfaceStatus where-    parseXML = parseXMLText "NetworkInterfaceStatus"--data PlatformValues-    = Windows -- ^ Windows-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable PlatformValues--instance FromText PlatformValues where-    parser = takeLowerText >>= \case-        "windows" -> pure Windows-        e         -> fail $-            "Failure parsing PlatformValues from " ++ show e--instance ToText PlatformValues where-    toText Windows = "Windows"--instance ToByteString PlatformValues-instance ToHeader     PlatformValues-instance ToQuery      PlatformValues--instance FromXML PlatformValues where-    parseXML = parseXMLText "PlatformValues"--data CreateVolumePermission = CreateVolumePermission-    { _cvpGroup  :: Maybe PermissionGroup-    , _cvpUserId :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'CreateVolumePermission' constructor.------ The fields accessible through corresponding lenses are:------ * 'cvpGroup' @::@ 'Maybe' 'PermissionGroup'------ * 'cvpUserId' @::@ 'Maybe' 'Text'----createVolumePermission :: CreateVolumePermission-createVolumePermission = CreateVolumePermission-    { _cvpUserId = Nothing-    , _cvpGroup  = Nothing-    }---- | The specific group that is to be added or removed from a volume's list of--- create volume permissions.-cvpGroup :: Lens' CreateVolumePermission (Maybe PermissionGroup)-cvpGroup = lens _cvpGroup (\s a -> s { _cvpGroup = a })---- | The specific AWS account ID that is to be added or removed from a volume's--- list of create volume permissions.-cvpUserId :: Lens' CreateVolumePermission (Maybe Text)-cvpUserId = lens _cvpUserId (\s a -> s { _cvpUserId = a })--instance FromXML CreateVolumePermission where-    parseXML x = CreateVolumePermission-        <$> x .@? "group"-        <*> x .@? "userId"--instance ToQuery CreateVolumePermission where-    toQuery CreateVolumePermission{..} = mconcat-        [ "Group"  =? _cvpGroup-        , "UserId" =? _cvpUserId-        ]--data NetworkInterfaceAttachmentChanges = NetworkInterfaceAttachmentChanges-    { _niacAttachmentId        :: Maybe Text-    , _niacDeleteOnTermination :: Maybe Bool-    } deriving (Eq, Ord, Read, Show)---- | 'NetworkInterfaceAttachmentChanges' constructor.------ The fields accessible through corresponding lenses are:------ * 'niacAttachmentId' @::@ 'Maybe' 'Text'------ * 'niacDeleteOnTermination' @::@ 'Maybe' 'Bool'----networkInterfaceAttachmentChanges :: NetworkInterfaceAttachmentChanges-networkInterfaceAttachmentChanges = NetworkInterfaceAttachmentChanges-    { _niacAttachmentId        = Nothing-    , _niacDeleteOnTermination = Nothing-    }---- | The ID of the network interface attachment.-niacAttachmentId :: Lens' NetworkInterfaceAttachmentChanges (Maybe Text)-niacAttachmentId = lens _niacAttachmentId (\s a -> s { _niacAttachmentId = a })---- | Indicates whether the network interface is deleted when the instance is--- terminated.-niacDeleteOnTermination :: Lens' NetworkInterfaceAttachmentChanges (Maybe Bool)-niacDeleteOnTermination =-    lens _niacDeleteOnTermination (\s a -> s { _niacDeleteOnTermination = a })--instance FromXML NetworkInterfaceAttachmentChanges where-    parseXML x = NetworkInterfaceAttachmentChanges-        <$> x .@? "attachmentId"-        <*> x .@? "deleteOnTermination"--instance ToQuery NetworkInterfaceAttachmentChanges where-    toQuery NetworkInterfaceAttachmentChanges{..} = mconcat-        [ "AttachmentId"        =? _niacAttachmentId-        , "DeleteOnTermination" =? _niacDeleteOnTermination-        ]--data RecurringChargeFrequency-    = Hourly -- ^ Hourly-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable RecurringChargeFrequency--instance FromText RecurringChargeFrequency where-    parser = takeLowerText >>= \case-        "hourly" -> pure Hourly-        e        -> fail $-            "Failure parsing RecurringChargeFrequency from " ++ show e--instance ToText RecurringChargeFrequency where-    toText Hourly = "Hourly"--instance ToByteString RecurringChargeFrequency-instance ToHeader     RecurringChargeFrequency-instance ToQuery      RecurringChargeFrequency--instance FromXML RecurringChargeFrequency where-    parseXML = parseXMLText "RecurringChargeFrequency"--data DhcpOptions = DhcpOptions-    { _doDhcpConfigurations :: List "item" DhcpConfiguration-    , _doDhcpOptionsId      :: Maybe Text-    , _doTags               :: List "item" Tag-    } deriving (Eq, Read, Show)---- | 'DhcpOptions' constructor.------ The fields accessible through corresponding lenses are:------ * 'doDhcpConfigurations' @::@ ['DhcpConfiguration']------ * 'doDhcpOptionsId' @::@ 'Maybe' 'Text'------ * 'doTags' @::@ ['Tag']----dhcpOptions :: DhcpOptions-dhcpOptions = DhcpOptions-    { _doDhcpOptionsId      = Nothing-    , _doDhcpConfigurations = mempty-    , _doTags               = mempty-    }---- | One or more DHCP options in the set.-doDhcpConfigurations :: Lens' DhcpOptions [DhcpConfiguration]-doDhcpConfigurations =-    lens _doDhcpConfigurations (\s a -> s { _doDhcpConfigurations = a })-        . _List---- | The ID of the set of DHCP options.-doDhcpOptionsId :: Lens' DhcpOptions (Maybe Text)-doDhcpOptionsId = lens _doDhcpOptionsId (\s a -> s { _doDhcpOptionsId = a })---- | Any tags assigned to the DHCP options set.-doTags :: Lens' DhcpOptions [Tag]-doTags = lens _doTags (\s a -> s { _doTags = a }) . _List--instance FromXML DhcpOptions where-    parseXML x = DhcpOptions-        <$> x .@? "dhcpConfigurationSet" .!@ mempty-        <*> x .@? "dhcpOptionsId"-        <*> x .@? "tagSet" .!@ mempty--instance ToQuery DhcpOptions where-    toQuery DhcpOptions{..} = mconcat-        [ "DhcpConfigurationSet" `toQueryList` _doDhcpConfigurations-        , "DhcpOptionsId"        =? _doDhcpOptionsId-        , "TagSet"               `toQueryList` _doTags-        ]--data InstanceNetworkInterfaceSpecification = InstanceNetworkInterfaceSpecification-    { _inisAssociatePublicIpAddress       :: Maybe Bool-    , _inisDeleteOnTermination            :: Maybe Bool-    , _inisDescription                    :: Maybe Text-    , _inisDeviceIndex                    :: Maybe Int-    , _inisGroups                         :: List "SecurityGroupId" Text-    , _inisNetworkInterfaceId             :: Maybe Text-    , _inisPrivateIpAddress               :: Maybe Text-    , _inisPrivateIpAddresses             :: List "item" PrivateIpAddressSpecification-    , _inisSecondaryPrivateIpAddressCount :: Maybe Int-    , _inisSubnetId                       :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'InstanceNetworkInterfaceSpecification' constructor.------ The fields accessible through corresponding lenses are:------ * 'inisAssociatePublicIpAddress' @::@ 'Maybe' 'Bool'------ * 'inisDeleteOnTermination' @::@ 'Maybe' 'Bool'------ * 'inisDescription' @::@ 'Maybe' 'Text'------ * 'inisDeviceIndex' @::@ 'Maybe' 'Int'------ * 'inisGroups' @::@ ['Text']------ * 'inisNetworkInterfaceId' @::@ 'Maybe' 'Text'------ * 'inisPrivateIpAddress' @::@ 'Maybe' 'Text'------ * 'inisPrivateIpAddresses' @::@ ['PrivateIpAddressSpecification']------ * 'inisSecondaryPrivateIpAddressCount' @::@ 'Maybe' 'Int'------ * 'inisSubnetId' @::@ 'Maybe' 'Text'----instanceNetworkInterfaceSpecification :: InstanceNetworkInterfaceSpecification-instanceNetworkInterfaceSpecification = InstanceNetworkInterfaceSpecification-    { _inisNetworkInterfaceId             = Nothing-    , _inisDeviceIndex                    = Nothing-    , _inisSubnetId                       = Nothing-    , _inisDescription                    = Nothing-    , _inisPrivateIpAddress               = Nothing-    , _inisGroups                         = mempty-    , _inisDeleteOnTermination            = Nothing-    , _inisPrivateIpAddresses             = mempty-    , _inisSecondaryPrivateIpAddressCount = Nothing-    , _inisAssociatePublicIpAddress       = Nothing-    }---- | Indicates whether to assign a public IP address to an instance you launch in--- a VPC. The public IP address can only be assigned to a network interface for--- eth0, and can only be assigned to a new network interface, not an existing--- one. You cannot specify more than one network interface in the request. If--- launching into a default subnet, the default value is 'true'.-inisAssociatePublicIpAddress :: Lens' InstanceNetworkInterfaceSpecification (Maybe Bool)-inisAssociatePublicIpAddress =-    lens _inisAssociatePublicIpAddress-        (\s a -> s { _inisAssociatePublicIpAddress = a })---- | If set to 'true', the interface is deleted when the instance is terminated. You--- can specify 'true' only if creating a new network interface when launching an--- instance.-inisDeleteOnTermination :: Lens' InstanceNetworkInterfaceSpecification (Maybe Bool)-inisDeleteOnTermination =-    lens _inisDeleteOnTermination (\s a -> s { _inisDeleteOnTermination = a })---- | The description of the network interface. Applies only if creating a network--- interface when launching an instance.-inisDescription :: Lens' InstanceNetworkInterfaceSpecification (Maybe Text)-inisDescription = lens _inisDescription (\s a -> s { _inisDescription = a })---- | The index of the device on the instance for the network interface attachment.--- If you are specifying a network interface in a 'RunInstances' request, you must--- provide the device index.-inisDeviceIndex :: Lens' InstanceNetworkInterfaceSpecification (Maybe Int)-inisDeviceIndex = lens _inisDeviceIndex (\s a -> s { _inisDeviceIndex = a })---- | The IDs of the security groups for the network interface. Applies only if--- creating a network interface when launching an instance.-inisGroups :: Lens' InstanceNetworkInterfaceSpecification [Text]-inisGroups = lens _inisGroups (\s a -> s { _inisGroups = a }) . _List---- | The ID of the network interface.-inisNetworkInterfaceId :: Lens' InstanceNetworkInterfaceSpecification (Maybe Text)-inisNetworkInterfaceId =-    lens _inisNetworkInterfaceId (\s a -> s { _inisNetworkInterfaceId = a })---- | The private IP address of the network interface. Applies only if creating a--- network interface when launching an instance.-inisPrivateIpAddress :: Lens' InstanceNetworkInterfaceSpecification (Maybe Text)-inisPrivateIpAddress =-    lens _inisPrivateIpAddress (\s a -> s { _inisPrivateIpAddress = a })---- | One or more private IP addresses to assign to the network interface. Only one--- private IP address can be designated as primary.-inisPrivateIpAddresses :: Lens' InstanceNetworkInterfaceSpecification [PrivateIpAddressSpecification]-inisPrivateIpAddresses =-    lens _inisPrivateIpAddresses (\s a -> s { _inisPrivateIpAddresses = a })-        . _List---- | The number of secondary private IP addresses. You can't specify this option--- and specify more than one private IP address using the private IP addresses--- option.-inisSecondaryPrivateIpAddressCount :: Lens' InstanceNetworkInterfaceSpecification (Maybe Int)-inisSecondaryPrivateIpAddressCount =-    lens _inisSecondaryPrivateIpAddressCount-        (\s a -> s { _inisSecondaryPrivateIpAddressCount = a })---- | The ID of the subnet associated with the network string. Applies only if--- creating a network interface when launching an instance.-inisSubnetId :: Lens' InstanceNetworkInterfaceSpecification (Maybe Text)-inisSubnetId = lens _inisSubnetId (\s a -> s { _inisSubnetId = a })--instance FromXML InstanceNetworkInterfaceSpecification where-    parseXML x = InstanceNetworkInterfaceSpecification-        <$> x .@? "associatePublicIpAddress"-        <*> x .@? "deleteOnTermination"-        <*> x .@? "description"-        <*> x .@? "deviceIndex"-        <*> x .@? "SecurityGroupId" .!@ mempty-        <*> x .@? "networkInterfaceId"-        <*> x .@? "privateIpAddress"-        <*> x .@? "privateIpAddressesSet" .!@ mempty-        <*> x .@? "secondaryPrivateIpAddressCount"-        <*> x .@? "subnetId"--instance ToQuery InstanceNetworkInterfaceSpecification where-    toQuery InstanceNetworkInterfaceSpecification{..} = mconcat-        [ "AssociatePublicIpAddress"       =? _inisAssociatePublicIpAddress-        , "DeleteOnTermination"            =? _inisDeleteOnTermination-        , "Description"                    =? _inisDescription-        , "DeviceIndex"                    =? _inisDeviceIndex-        , "SecurityGroupId"                `toQueryList` _inisGroups-        , "NetworkInterfaceId"             =? _inisNetworkInterfaceId-        , "PrivateIpAddress"               =? _inisPrivateIpAddress-        , "PrivateIpAddressesSet"          `toQueryList` _inisPrivateIpAddresses-        , "SecondaryPrivateIpAddressCount" =? _inisSecondaryPrivateIpAddressCount-        , "SubnetId"                       =? _inisSubnetId-        ]--data VolumeState-    = VSAvailable -- ^ available-    | VSCreating  -- ^ creating-    | VSDeleted   -- ^ deleted-    | VSDeleting  -- ^ deleting-    | VSError     -- ^ error-    | VSInUse     -- ^ in-use-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable VolumeState--instance FromText VolumeState where-    parser = takeLowerText >>= \case-        "available" -> pure VSAvailable-        "creating"  -> pure VSCreating-        "deleted"   -> pure VSDeleted-        "deleting"  -> pure VSDeleting-        "error"     -> pure VSError-        "in-use"    -> pure VSInUse-        e           -> fail $-            "Failure parsing VolumeState from " ++ show e--instance ToText VolumeState where-    toText = \case-        VSAvailable -> "available"-        VSCreating  -> "creating"-        VSDeleted   -> "deleted"-        VSDeleting  -> "deleting"-        VSError     -> "error"-        VSInUse     -> "in-use"--instance ToByteString VolumeState-instance ToHeader     VolumeState-instance ToQuery      VolumeState--instance FromXML VolumeState where-    parseXML = parseXMLText "VolumeState"--newtype AttributeValue = AttributeValue-    { _avValue :: Maybe Text-    } deriving (Eq, Ord, Read, Show, Monoid)---- | 'AttributeValue' constructor.------ The fields accessible through corresponding lenses are:------ * 'avValue' @::@ 'Maybe' 'Text'----attributeValue :: AttributeValue-attributeValue = AttributeValue-    { _avValue = Nothing-    }---- | Valid values are case-sensitive and vary by action.-avValue :: Lens' AttributeValue (Maybe Text)-avValue = lens _avValue (\s a -> s { _avValue = a })--instance FromXML AttributeValue where-    parseXML x = AttributeValue-        <$> x .@? "value"--instance ToQuery AttributeValue where-    toQuery AttributeValue{..} = mconcat-        [ "Value" =? _avValue-        ]--data PrivateIpAddressSpecification = PrivateIpAddressSpecification-    { _piasPrimary          :: Maybe Bool-    , _piasPrivateIpAddress :: Text-    } deriving (Eq, Ord, Read, Show)---- | 'PrivateIpAddressSpecification' constructor.------ The fields accessible through corresponding lenses are:------ * 'piasPrimary' @::@ 'Maybe' 'Bool'------ * 'piasPrivateIpAddress' @::@ 'Text'----privateIpAddressSpecification :: Text -- ^ 'piasPrivateIpAddress'-                              -> PrivateIpAddressSpecification-privateIpAddressSpecification p1 = PrivateIpAddressSpecification-    { _piasPrivateIpAddress = p1-    , _piasPrimary          = Nothing-    }---- | Indicates whether the private IP address is the primary private IP address.--- Only one IP address can be designated as primary.-piasPrimary :: Lens' PrivateIpAddressSpecification (Maybe Bool)-piasPrimary = lens _piasPrimary (\s a -> s { _piasPrimary = a })---- | The private IP addresses.-piasPrivateIpAddress :: Lens' PrivateIpAddressSpecification Text-piasPrivateIpAddress =-    lens _piasPrivateIpAddress (\s a -> s { _piasPrivateIpAddress = a })--instance FromXML PrivateIpAddressSpecification where-    parseXML x = PrivateIpAddressSpecification-        <$> x .@? "primary"-        <*> x .@  "privateIpAddress"--instance ToQuery PrivateIpAddressSpecification where-    toQuery PrivateIpAddressSpecification{..} = mconcat-        [ "Primary"          =? _piasPrimary-        , "PrivateIpAddress" =? _piasPrivateIpAddress-        ]--data Image = Image-    { _iArchitecture        :: ArchitectureValues-    , _iBlockDeviceMappings :: List "item" BlockDeviceMapping-    , _iCreationDate        :: Maybe Text-    , _iDescription         :: Maybe Text-    , _iHypervisor          :: HypervisorType-    , _iImageId             :: Text-    , _iImageLocation       :: Text-    , _iImageOwnerAlias     :: Maybe Text-    , _iImageType           :: ImageTypeValues-    , _iKernelId            :: Maybe Text-    , _iName                :: Maybe Text-    , _iOwnerId             :: Text-    , _iPlatform            :: Maybe PlatformValues-    , _iProductCodes        :: List "item" ProductCode-    , _iPublic              :: Bool-    , _iRamdiskId           :: Maybe Text-    , _iRootDeviceName      :: Maybe Text-    , _iRootDeviceType      :: DeviceType-    , _iSriovNetSupport     :: Maybe Text-    , _iState               :: ImageState-    , _iStateReason         :: Maybe StateReason-    , _iTags                :: List "item" Tag-    , _iVirtualizationType  :: VirtualizationType-    } deriving (Eq, Read, Show)---- | 'Image' constructor.------ The fields accessible through corresponding lenses are:------ * 'iArchitecture' @::@ 'ArchitectureValues'------ * 'iBlockDeviceMappings' @::@ ['BlockDeviceMapping']------ * 'iCreationDate' @::@ 'Maybe' 'Text'------ * 'iDescription' @::@ 'Maybe' 'Text'------ * 'iHypervisor' @::@ 'HypervisorType'------ * 'iImageId' @::@ 'Text'------ * 'iImageLocation' @::@ 'Text'------ * 'iImageOwnerAlias' @::@ 'Maybe' 'Text'------ * 'iImageType' @::@ 'ImageTypeValues'------ * 'iKernelId' @::@ 'Maybe' 'Text'------ * 'iName' @::@ 'Maybe' 'Text'------ * 'iOwnerId' @::@ 'Text'------ * 'iPlatform' @::@ 'Maybe' 'PlatformValues'------ * 'iProductCodes' @::@ ['ProductCode']------ * 'iPublic' @::@ 'Bool'------ * 'iRamdiskId' @::@ 'Maybe' 'Text'------ * 'iRootDeviceName' @::@ 'Maybe' 'Text'------ * 'iRootDeviceType' @::@ 'DeviceType'------ * 'iSriovNetSupport' @::@ 'Maybe' 'Text'------ * 'iState' @::@ 'ImageState'------ * 'iStateReason' @::@ 'Maybe' 'StateReason'------ * 'iTags' @::@ ['Tag']------ * 'iVirtualizationType' @::@ 'VirtualizationType'----image :: Text -- ^ 'iImageId'-      -> Text -- ^ 'iImageLocation'-      -> ImageState -- ^ 'iState'-      -> Text -- ^ 'iOwnerId'-      -> Bool -- ^ 'iPublic'-      -> ArchitectureValues -- ^ 'iArchitecture'-      -> ImageTypeValues -- ^ 'iImageType'-      -> DeviceType -- ^ 'iRootDeviceType'-      -> VirtualizationType -- ^ 'iVirtualizationType'-      -> HypervisorType -- ^ 'iHypervisor'-      -> Image-image p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 = Image-    { _iImageId             = p1-    , _iImageLocation       = p2-    , _iState               = p3-    , _iOwnerId             = p4-    , _iPublic              = p5-    , _iArchitecture        = p6-    , _iImageType           = p7-    , _iRootDeviceType      = p8-    , _iVirtualizationType  = p9-    , _iHypervisor          = p10-    , _iCreationDate        = Nothing-    , _iProductCodes        = mempty-    , _iKernelId            = Nothing-    , _iRamdiskId           = Nothing-    , _iPlatform            = Nothing-    , _iSriovNetSupport     = Nothing-    , _iStateReason         = Nothing-    , _iImageOwnerAlias     = Nothing-    , _iName                = Nothing-    , _iDescription         = Nothing-    , _iRootDeviceName      = Nothing-    , _iBlockDeviceMappings = mempty-    , _iTags                = mempty-    }---- | The architecture of the image.-iArchitecture :: Lens' Image ArchitectureValues-iArchitecture = lens _iArchitecture (\s a -> s { _iArchitecture = a })---- | Any block device mapping entries.-iBlockDeviceMappings :: Lens' Image [BlockDeviceMapping]-iBlockDeviceMappings =-    lens _iBlockDeviceMappings (\s a -> s { _iBlockDeviceMappings = a })-        . _List---- | The date and time the image was created.-iCreationDate :: Lens' Image (Maybe Text)-iCreationDate = lens _iCreationDate (\s a -> s { _iCreationDate = a })---- | The description of the AMI that was provided during image creation.-iDescription :: Lens' Image (Maybe Text)-iDescription = lens _iDescription (\s a -> s { _iDescription = a })---- | The hypervisor type of the image.-iHypervisor :: Lens' Image HypervisorType-iHypervisor = lens _iHypervisor (\s a -> s { _iHypervisor = a })---- | The ID of the AMI.-iImageId :: Lens' Image Text-iImageId = lens _iImageId (\s a -> s { _iImageId = a })---- | The location of the AMI.-iImageLocation :: Lens' Image Text-iImageLocation = lens _iImageLocation (\s a -> s { _iImageLocation = a })---- | The AWS account alias (for example, 'amazon', 'self') or the AWS account ID of--- the AMI owner.-iImageOwnerAlias :: Lens' Image (Maybe Text)-iImageOwnerAlias = lens _iImageOwnerAlias (\s a -> s { _iImageOwnerAlias = a })---- | The type of image.-iImageType :: Lens' Image ImageTypeValues-iImageType = lens _iImageType (\s a -> s { _iImageType = a })---- | The kernel associated with the image, if any. Only applicable for machine--- images.-iKernelId :: Lens' Image (Maybe Text)-iKernelId = lens _iKernelId (\s a -> s { _iKernelId = a })---- | The name of the AMI that was provided during image creation.-iName :: Lens' Image (Maybe Text)-iName = lens _iName (\s a -> s { _iName = a })---- | The AWS account ID of the image owner.-iOwnerId :: Lens' Image Text-iOwnerId = lens _iOwnerId (\s a -> s { _iOwnerId = a })---- | The value is 'Windows' for Windows AMIs; otherwise blank.-iPlatform :: Lens' Image (Maybe PlatformValues)-iPlatform = lens _iPlatform (\s a -> s { _iPlatform = a })---- | Any product codes associated with the AMI.-iProductCodes :: Lens' Image [ProductCode]-iProductCodes = lens _iProductCodes (\s a -> s { _iProductCodes = a }) . _List---- | Indicates whether the image has public launch permissions. The value is 'true'--- if this image has public launch permissions or 'false' if it has only implicit--- and explicit launch permissions.-iPublic :: Lens' Image Bool-iPublic = lens _iPublic (\s a -> s { _iPublic = a })---- | The RAM disk associated with the image, if any. Only applicable for machine--- images.-iRamdiskId :: Lens' Image (Maybe Text)-iRamdiskId = lens _iRamdiskId (\s a -> s { _iRamdiskId = a })---- | The device name of the root device (for example, '/dev/sda1' or '/dev/xvda').-iRootDeviceName :: Lens' Image (Maybe Text)-iRootDeviceName = lens _iRootDeviceName (\s a -> s { _iRootDeviceName = a })---- | The type of root device used by the AMI. The AMI can use an Amazon EBS volume--- or an instance store volume.-iRootDeviceType :: Lens' Image DeviceType-iRootDeviceType = lens _iRootDeviceType (\s a -> s { _iRootDeviceType = a })---- | Specifies whether enhanced networking is enabled.-iSriovNetSupport :: Lens' Image (Maybe Text)-iSriovNetSupport = lens _iSriovNetSupport (\s a -> s { _iSriovNetSupport = a })---- | The current state of the AMI. If the state is 'available', the image is--- successfully registered and can be used to launch an instance.-iState :: Lens' Image ImageState-iState = lens _iState (\s a -> s { _iState = a })---- | The reason for the state change.-iStateReason :: Lens' Image (Maybe StateReason)-iStateReason = lens _iStateReason (\s a -> s { _iStateReason = a })---- | Any tags assigned to the image.-iTags :: Lens' Image [Tag]-iTags = lens _iTags (\s a -> s { _iTags = a }) . _List---- | The type of virtualization of the AMI.-iVirtualizationType :: Lens' Image VirtualizationType-iVirtualizationType =-    lens _iVirtualizationType (\s a -> s { _iVirtualizationType = a })--instance FromXML Image where-    parseXML x = Image-        <$> x .@  "architecture"-        <*> x .@? "blockDeviceMapping" .!@ mempty-        <*> x .@? "creationDate"-        <*> x .@? "description"-        <*> x .@  "hypervisor"-        <*> x .@  "imageId"-        <*> x .@  "imageLocation"-        <*> x .@? "imageOwnerAlias"-        <*> x .@  "imageType"-        <*> x .@? "kernelId"-        <*> x .@? "name"-        <*> x .@  "imageOwnerId"-        <*> x .@? "platform"-        <*> x .@? "productCodes" .!@ mempty-        <*> x .@  "isPublic"-        <*> x .@? "ramdiskId"-        <*> x .@? "rootDeviceName"-        <*> x .@  "rootDeviceType"-        <*> x .@? "sriovNetSupport"-        <*> x .@  "imageState"-        <*> x .@? "stateReason"-        <*> x .@? "tagSet" .!@ mempty-        <*> x .@  "virtualizationType"--instance ToQuery Image where-    toQuery Image{..} = mconcat-        [ "Architecture"       =? _iArchitecture-        , "BlockDeviceMapping" `toQueryList` _iBlockDeviceMappings-        , "CreationDate"       =? _iCreationDate-        , "Description"        =? _iDescription-        , "Hypervisor"         =? _iHypervisor-        , "ImageId"            =? _iImageId-        , "ImageLocation"      =? _iImageLocation-        , "ImageOwnerAlias"    =? _iImageOwnerAlias-        , "ImageType"          =? _iImageType-        , "KernelId"           =? _iKernelId-        , "Name"               =? _iName-        , "ImageOwnerId"       =? _iOwnerId-        , "Platform"           =? _iPlatform-        , "ProductCodes"       `toQueryList` _iProductCodes-        , "IsPublic"           =? _iPublic-        , "RamdiskId"          =? _iRamdiskId-        , "RootDeviceName"     =? _iRootDeviceName-        , "RootDeviceType"     =? _iRootDeviceType-        , "SriovNetSupport"    =? _iSriovNetSupport-        , "ImageState"         =? _iState-        , "StateReason"        =? _iStateReason-        , "TagSet"             `toQueryList` _iTags-        , "VirtualizationType" =? _iVirtualizationType-        ]--data DhcpConfiguration = DhcpConfiguration-    { _dcKey    :: Maybe Text-    , _dcValues :: List "item" AttributeValue-    } deriving (Eq, Read, Show)---- | 'DhcpConfiguration' constructor.------ The fields accessible through corresponding lenses are:------ * 'dcKey' @::@ 'Maybe' 'Text'------ * 'dcValues' @::@ ['AttributeValue']----dhcpConfiguration :: DhcpConfiguration-dhcpConfiguration = DhcpConfiguration-    { _dcKey    = Nothing-    , _dcValues = mempty-    }---- | The name of a DHCP option.-dcKey :: Lens' DhcpConfiguration (Maybe Text)-dcKey = lens _dcKey (\s a -> s { _dcKey = a })---- | One or more values for the DHCP option.-dcValues :: Lens' DhcpConfiguration [AttributeValue]-dcValues = lens _dcValues (\s a -> s { _dcValues = a }) . _List--instance FromXML DhcpConfiguration where-    parseXML x = DhcpConfiguration-        <$> x .@? "key"-        <*> x .@? "valueSet" .!@ mempty--instance ToQuery DhcpConfiguration where-    toQuery DhcpConfiguration{..} = mconcat-        [ "Key"      =? _dcKey-        , "ValueSet" `toQueryList` _dcValues-        ]--data Tag = Tag-    { _tagKey   :: Text-    , _tagValue :: Text-    } deriving (Eq, Ord, Read, Show)---- | 'Tag' constructor.------ The fields accessible through corresponding lenses are:------ * 'tagKey' @::@ 'Text'------ * 'tagValue' @::@ 'Text'----tag :: Text -- ^ 'tagKey'-    -> Text -- ^ 'tagValue'-    -> Tag-tag p1 p2 = Tag-    { _tagKey   = p1-    , _tagValue = p2-    }---- | The key of the tag.------ Constraints: Tag keys are case-sensitive and accept a maximum of 127 Unicode--- characters. May not begin with 'aws:'-tagKey :: Lens' Tag Text-tagKey = lens _tagKey (\s a -> s { _tagKey = a })---- | The value of the tag.------ Constraints: Tag values are case-sensitive and accept a maximum of 255--- Unicode characters.-tagValue :: Lens' Tag Text-tagValue = lens _tagValue (\s a -> s { _tagValue = a })--instance FromXML Tag where-    parseXML x = Tag-        <$> x .@  "key"-        <*> x .@  "value"--instance ToQuery Tag where-    toQuery Tag{..} = mconcat-        [ "Key"   =? _tagKey-        , "Value" =? _tagValue-        ]--data AccountAttributeName-    = DefaultVpc         -- ^ default-vpc-    | SupportedPlatforms -- ^ supported-platforms-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable AccountAttributeName--instance FromText AccountAttributeName where-    parser = takeLowerText >>= \case-        "default-vpc"         -> pure DefaultVpc-        "supported-platforms" -> pure SupportedPlatforms-        e                     -> fail $-            "Failure parsing AccountAttributeName from " ++ show e--instance ToText AccountAttributeName where-    toText = \case-        DefaultVpc         -> "default-vpc"-        SupportedPlatforms -> "supported-platforms"--instance ToByteString AccountAttributeName-instance ToHeader     AccountAttributeName-instance ToQuery      AccountAttributeName--instance FromXML AccountAttributeName where-    parseXML = parseXMLText "AccountAttributeName"--data NetworkInterfaceAttachment = NetworkInterfaceAttachment-    { _niaAttachTime          :: Maybe ISO8601-    , _niaAttachmentId        :: Maybe Text-    , _niaDeleteOnTermination :: Maybe Bool-    , _niaDeviceIndex         :: Maybe Int-    , _niaInstanceId          :: Maybe Text-    , _niaInstanceOwnerId     :: Maybe Text-    , _niaStatus              :: Maybe AttachmentStatus-    } deriving (Eq, Read, Show)---- | 'NetworkInterfaceAttachment' constructor.------ The fields accessible through corresponding lenses are:------ * 'niaAttachTime' @::@ 'Maybe' 'UTCTime'------ * 'niaAttachmentId' @::@ 'Maybe' 'Text'------ * 'niaDeleteOnTermination' @::@ 'Maybe' 'Bool'------ * 'niaDeviceIndex' @::@ 'Maybe' 'Int'------ * 'niaInstanceId' @::@ 'Maybe' 'Text'------ * 'niaInstanceOwnerId' @::@ 'Maybe' 'Text'------ * 'niaStatus' @::@ 'Maybe' 'AttachmentStatus'----networkInterfaceAttachment :: NetworkInterfaceAttachment-networkInterfaceAttachment = NetworkInterfaceAttachment-    { _niaAttachmentId        = Nothing-    , _niaInstanceId          = Nothing-    , _niaInstanceOwnerId     = Nothing-    , _niaDeviceIndex         = Nothing-    , _niaStatus              = Nothing-    , _niaAttachTime          = Nothing-    , _niaDeleteOnTermination = Nothing-    }---- | The timestamp indicating when the attachment initiated.-niaAttachTime :: Lens' NetworkInterfaceAttachment (Maybe UTCTime)-niaAttachTime = lens _niaAttachTime (\s a -> s { _niaAttachTime = a }) . mapping _Time---- | The ID of the network interface attachment.-niaAttachmentId :: Lens' NetworkInterfaceAttachment (Maybe Text)-niaAttachmentId = lens _niaAttachmentId (\s a -> s { _niaAttachmentId = a })---- | Indicates whether the network interface is deleted when the instance is--- terminated.-niaDeleteOnTermination :: Lens' NetworkInterfaceAttachment (Maybe Bool)-niaDeleteOnTermination =-    lens _niaDeleteOnTermination (\s a -> s { _niaDeleteOnTermination = a })---- | The device index of the network interface attachment on the instance.-niaDeviceIndex :: Lens' NetworkInterfaceAttachment (Maybe Int)-niaDeviceIndex = lens _niaDeviceIndex (\s a -> s { _niaDeviceIndex = a })---- | The ID of the instance.-niaInstanceId :: Lens' NetworkInterfaceAttachment (Maybe Text)-niaInstanceId = lens _niaInstanceId (\s a -> s { _niaInstanceId = a })---- | The AWS account ID of the owner of the instance.-niaInstanceOwnerId :: Lens' NetworkInterfaceAttachment (Maybe Text)-niaInstanceOwnerId =-    lens _niaInstanceOwnerId (\s a -> s { _niaInstanceOwnerId = a })---- | The attachment state.-niaStatus :: Lens' NetworkInterfaceAttachment (Maybe AttachmentStatus)-niaStatus = lens _niaStatus (\s a -> s { _niaStatus = a })--instance FromXML NetworkInterfaceAttachment where-    parseXML x = NetworkInterfaceAttachment-        <$> x .@? "attachTime"-        <*> x .@? "attachmentId"-        <*> x .@? "deleteOnTermination"-        <*> x .@? "deviceIndex"-        <*> x .@? "instanceId"-        <*> x .@? "instanceOwnerId"-        <*> x .@? "status"--instance ToQuery NetworkInterfaceAttachment where-    toQuery NetworkInterfaceAttachment{..} = mconcat-        [ "AttachTime"          =? _niaAttachTime-        , "AttachmentId"        =? _niaAttachmentId-        , "DeleteOnTermination" =? _niaDeleteOnTermination-        , "DeviceIndex"         =? _niaDeviceIndex-        , "InstanceId"          =? _niaInstanceId-        , "InstanceOwnerId"     =? _niaInstanceOwnerId-        , "Status"              =? _niaStatus-        ]--newtype RunInstancesMonitoringEnabled = RunInstancesMonitoringEnabled-    { _rimeEnabled :: Bool-    } deriving (Eq, Ord, Read, Show, Enum)---- | 'RunInstancesMonitoringEnabled' constructor.------ The fields accessible through corresponding lenses are:------ * 'rimeEnabled' @::@ 'Bool'----runInstancesMonitoringEnabled :: Bool -- ^ 'rimeEnabled'-                              -> RunInstancesMonitoringEnabled-runInstancesMonitoringEnabled p1 = RunInstancesMonitoringEnabled-    { _rimeEnabled = p1-    }---- | Indicates whether monitoring is enabled for the instance.-rimeEnabled :: Lens' RunInstancesMonitoringEnabled Bool-rimeEnabled = lens _rimeEnabled (\s a -> s { _rimeEnabled = a })--instance FromXML RunInstancesMonitoringEnabled where-    parseXML x = RunInstancesMonitoringEnabled-        <$> x .@  "enabled"--instance ToQuery RunInstancesMonitoringEnabled where-    toQuery RunInstancesMonitoringEnabled{..} = mconcat-        [ "Enabled" =? _rimeEnabled-        ]--data VolumeStatusInfo = VolumeStatusInfo-    { _vsiDetails :: List "item" VolumeStatusDetails-    , _vsiStatus  :: Maybe VolumeStatusInfoStatus-    } deriving (Eq, Read, Show)---- | 'VolumeStatusInfo' constructor.------ The fields accessible through corresponding lenses are:------ * 'vsiDetails' @::@ ['VolumeStatusDetails']------ * 'vsiStatus' @::@ 'Maybe' 'VolumeStatusInfoStatus'----volumeStatusInfo :: VolumeStatusInfo-volumeStatusInfo = VolumeStatusInfo-    { _vsiStatus  = Nothing-    , _vsiDetails = mempty-    }---- | The details of the volume status.-vsiDetails :: Lens' VolumeStatusInfo [VolumeStatusDetails]-vsiDetails = lens _vsiDetails (\s a -> s { _vsiDetails = a }) . _List---- | The status of the volume.-vsiStatus :: Lens' VolumeStatusInfo (Maybe VolumeStatusInfoStatus)-vsiStatus = lens _vsiStatus (\s a -> s { _vsiStatus = a })--instance FromXML VolumeStatusInfo where-    parseXML x = VolumeStatusInfo-        <$> x .@? "details" .!@ mempty-        <*> x .@? "status"--instance ToQuery VolumeStatusInfo where-    toQuery VolumeStatusInfo{..} = mconcat-        [ "Details" `toQueryList` _vsiDetails-        , "Status"  =? _vsiStatus-        ]--data NetworkInterfaceAssociation = NetworkInterfaceAssociation-    { _niaAllocationId  :: Maybe Text-    , _niaAssociationId :: Maybe Text-    , _niaIpOwnerId     :: Maybe Text-    , _niaPublicDnsName :: Maybe Text-    , _niaPublicIp      :: Maybe Text-    } deriving (Eq, Ord, Read, Show)---- | 'NetworkInterfaceAssociation' constructor.------ The fields accessible through corresponding lenses are:------ * 'niaAllocationId' @::@ 'Maybe' 'Text'------ * 'niaAssociationId' @::@ 'Maybe' 'Text'------ * 'niaIpOwnerId' @::@ 'Maybe' 'Text'------ * 'niaPublicDnsName' @::@ 'Maybe' 'Text'------ * 'niaPublicIp' @::@ 'Maybe' 'Text'----networkInterfaceAssociation :: NetworkInterfaceAssociation-networkInterfaceAssociation = NetworkInterfaceAssociation-    { _niaPublicIp      = Nothing-    , _niaPublicDnsName = Nothing-    , _niaIpOwnerId     = Nothing-    , _niaAllocationId  = Nothing-    , _niaAssociationId = Nothing-    }---- | The allocation ID.-niaAllocationId :: Lens' NetworkInterfaceAssociation (Maybe Text)-niaAllocationId = lens _niaAllocationId (\s a -> s { _niaAllocationId = a })---- | The association ID.-niaAssociationId :: Lens' NetworkInterfaceAssociation (Maybe Text)-niaAssociationId = lens _niaAssociationId (\s a -> s { _niaAssociationId = a })---- | The ID of the Elastic IP address owner.-niaIpOwnerId :: Lens' NetworkInterfaceAssociation (Maybe Text)-niaIpOwnerId = lens _niaIpOwnerId (\s a -> s { _niaIpOwnerId = a })---- | The public DNS name.-niaPublicDnsName :: Lens' NetworkInterfaceAssociation (Maybe Text)-niaPublicDnsName = lens _niaPublicDnsName (\s a -> s { _niaPublicDnsName = a })---- | The address of the Elastic IP address bound to the network interface.-niaPublicIp :: Lens' NetworkInterfaceAssociation (Maybe Text)-niaPublicIp = lens _niaPublicIp (\s a -> s { _niaPublicIp = a })--instance FromXML NetworkInterfaceAssociation where-    parseXML x = NetworkInterfaceAssociation-        <$> x .@? "allocationId"-        <*> x .@? "associationId"-        <*> x .@? "ipOwnerId"-        <*> x .@? "publicDnsName"-        <*> x .@? "publicIp"--instance ToQuery NetworkInterfaceAssociation where-    toQuery NetworkInterfaceAssociation{..} = mconcat-        [ "AllocationId"  =? _niaAllocationId-        , "AssociationId" =? _niaAssociationId-        , "IpOwnerId"     =? _niaIpOwnerId-        , "PublicDnsName" =? _niaPublicDnsName-        , "PublicIp"      =? _niaPublicIp-        ]--data CreateVolumePermissionModifications = CreateVolumePermissionModifications-    { _cvpmAdd    :: List "item" CreateVolumePermission-    , _cvpmRemove :: List "item" CreateVolumePermission-    } deriving (Eq, Read, Show)---- | 'CreateVolumePermissionModifications' constructor.------ The fields accessible through corresponding lenses are:------ * 'cvpmAdd' @::@ ['CreateVolumePermission']------ * 'cvpmRemove' @::@ ['CreateVolumePermission']----createVolumePermissionModifications :: CreateVolumePermissionModifications-createVolumePermissionModifications = CreateVolumePermissionModifications-    { _cvpmAdd    = mempty-    , _cvpmRemove = mempty-    }---- | Adds a specific AWS account ID or group to a volume's list of create volume--- permissions.-cvpmAdd :: Lens' CreateVolumePermissionModifications [CreateVolumePermission]-cvpmAdd = lens _cvpmAdd (\s a -> s { _cvpmAdd = a }) . _List---- | Removes a specific AWS account ID or group from a volume's list of create--- volume permissions.-cvpmRemove :: Lens' CreateVolumePermissionModifications [CreateVolumePermission]-cvpmRemove = lens _cvpmRemove (\s a -> s { _cvpmRemove = a }) . _List--instance FromXML CreateVolumePermissionModifications where-    parseXML x = CreateVolumePermissionModifications-        <$> x .@? "Add" .!@ mempty-        <*> x .@? "Remove" .!@ mempty--instance ToQuery CreateVolumePermissionModifications where-    toQuery CreateVolumePermissionModifications{..} = mconcat-        [ "Add"    `toQueryList` _cvpmAdd-        , "Remove" `toQueryList` _cvpmRemove-        ]--data VpcState-    = VpcStateAvailable -- ^ available-    | VpcStatePending   -- ^ pending-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable VpcState--instance FromText VpcState where-    parser = takeLowerText >>= \case-        "available" -> pure VpcStateAvailable-        "pending"   -> pure VpcStatePending-        e           -> fail $-            "Failure parsing VpcState from " ++ show e--instance ToText VpcState where-    toText = \case-        VpcStateAvailable -> "available"-        VpcStatePending   -> "pending"--instance ToByteString VpcState-instance ToHeader     VpcState-instance ToQuery      VpcState--instance FromXML VpcState where-    parseXML = parseXMLText "VpcState"--data ResourceType-    = RTCustomerGateway      -- ^ customer-gateway-    | RTDhcpOptions          -- ^ dhcp-options-    | RTImage                -- ^ image-    | RTInstance'            -- ^ instance-    | RTInternetGateway      -- ^ internet-gateway-    | RTNetworkAcl           -- ^ network-acl-    | RTNetworkInterface     -- ^ network-interface-    | RTReservedInstances    -- ^ reserved-instances-    | RTRouteTable           -- ^ route-table-    | RTSecurityGroup        -- ^ security-group-    | RTSnapshot             -- ^ snapshot-    | RTSpotInstancesRequest -- ^ spot-instances-request-    | RTSubnet               -- ^ subnet-    | RTVolume               -- ^ volume-    | RTVpc                  -- ^ vpc-    | RTVpnConnection        -- ^ vpn-connection-    | RTVpnGateway           -- ^ vpn-gateway-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable ResourceType--instance FromText ResourceType where-    parser = takeLowerText >>= \case-        "customer-gateway"       -> pure RTCustomerGateway-        "dhcp-options"           -> pure RTDhcpOptions-        "image"                  -> pure RTImage-        "instance"               -> pure RTInstance'-        "internet-gateway"       -> pure RTInternetGateway-        "network-acl"            -> pure RTNetworkAcl-        "network-interface"      -> pure RTNetworkInterface-        "reserved-instances"     -> pure RTReservedInstances-        "route-table"            -> pure RTRouteTable-        "security-group"         -> pure RTSecurityGroup-        "snapshot"               -> pure RTSnapshot-        "spot-instances-request" -> pure RTSpotInstancesRequest-        "subnet"                 -> pure RTSubnet-        "volume"                 -> pure RTVolume-        "vpc"                    -> pure RTVpc-        "vpn-connection"         -> pure RTVpnConnection-        "vpn-gateway"            -> pure RTVpnGateway-        e                        -> fail $-            "Failure parsing ResourceType from " ++ show e--instance ToText ResourceType where-    toText = \case-        RTCustomerGateway      -> "customer-gateway"-        RTDhcpOptions          -> "dhcp-options"-        RTImage                -> "image"-        RTInstance'            -> "instance"-        RTInternetGateway      -> "internet-gateway"-        RTNetworkAcl           -> "network-acl"-        RTNetworkInterface     -> "network-interface"-        RTReservedInstances    -> "reserved-instances"-        RTRouteTable           -> "route-table"-        RTSecurityGroup        -> "security-group"-        RTSnapshot             -> "snapshot"-        RTSpotInstancesRequest -> "spot-instances-request"-        RTSubnet               -> "subnet"-        RTVolume               -> "volume"-        RTVpc                  -> "vpc"-        RTVpnConnection        -> "vpn-connection"-        RTVpnGateway           -> "vpn-gateway"--instance ToByteString ResourceType-instance ToHeader     ResourceType-instance ToQuery      ResourceType--instance FromXML ResourceType where-    parseXML = parseXMLText "ResourceType"--data ReportStatusType-    = Impaired -- ^ impaired-    | Ok       -- ^ ok-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable ReportStatusType--instance FromText ReportStatusType where-    parser = takeLowerText >>= \case-        "impaired" -> pure Impaired-        "ok"       -> pure Ok-        e          -> fail $-            "Failure parsing ReportStatusType from " ++ show e--instance ToText ReportStatusType where-    toText = \case-        Impaired -> "impaired"-        Ok       -> "ok"--instance ToByteString ReportStatusType-instance ToHeader     ReportStatusType-instance ToQuery      ReportStatusType--instance FromXML ReportStatusType where-    parseXML = parseXMLText "ReportStatusType"--data CurrencyCodeValues-    = Usd -- ^ USD-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable CurrencyCodeValues--instance FromText CurrencyCodeValues where-    parser = takeLowerText >>= \case-        "usd" -> pure Usd-        e     -> fail $-            "Failure parsing CurrencyCodeValues from " ++ show e--instance ToText CurrencyCodeValues where-    toText Usd = "USD"--instance ToByteString CurrencyCodeValues-instance ToHeader     CurrencyCodeValues-instance ToQuery      CurrencyCodeValues--instance FromXML CurrencyCodeValues where-    parseXML = parseXMLText "CurrencyCodeValues"--data IcmpTypeCode = IcmpTypeCode-    { _itcCode :: Maybe Int-    , _itcType :: Maybe Int-    } deriving (Eq, Ord, Read, Show)---- | 'IcmpTypeCode' constructor.------ The fields accessible through corresponding lenses are:------ * 'itcCode' @::@ 'Maybe' 'Int'------ * 'itcType' @::@ 'Maybe' 'Int'----icmpTypeCode :: IcmpTypeCode-icmpTypeCode = IcmpTypeCode-    { _itcType = Nothing-    , _itcCode = Nothing-    }---- | The ICMP type. A value of -1 means all types.-itcCode :: Lens' IcmpTypeCode (Maybe Int)-itcCode = lens _itcCode (\s a -> s { _itcCode = a })---- | The ICMP code. A value of -1 means all codes for the specified ICMP type.-itcType :: Lens' IcmpTypeCode (Maybe Int)-itcType = lens _itcType (\s a -> s { _itcType = a })--instance FromXML IcmpTypeCode where-    parseXML x = IcmpTypeCode-        <$> x .@? "code"-        <*> x .@? "type"--instance ToQuery IcmpTypeCode where-    toQuery IcmpTypeCode{..} = mconcat-        [ "Code" =? _itcCode-        , "Type" =? _itcType-        ]--data InstanceCount = InstanceCount-    { _icInstanceCount :: Maybe Int-    , _icState         :: Maybe ListingState-    } deriving (Eq, Read, Show)---- | 'InstanceCount' constructor.------ The fields accessible through corresponding lenses are:------ * 'icInstanceCount' @::@ 'Maybe' 'Int'------ * 'icState' @::@ 'Maybe' 'ListingState'----instanceCount :: InstanceCount-instanceCount = InstanceCount-    { _icState         = Nothing-    , _icInstanceCount = Nothing-    }---- | he number of listed Reserved Instances in the state specified by the 'state'.-icInstanceCount :: Lens' InstanceCount (Maybe Int)-icInstanceCount = lens _icInstanceCount (\s a -> s { _icInstanceCount = a })---- | The states of the listed Reserved Instances.-icState :: Lens' InstanceCount (Maybe ListingState)-icState = lens _icState (\s a -> s { _icState = a })--instance FromXML InstanceCount where-    parseXML x = InstanceCount-        <$> x .@? "instanceCount"-        <*> x .@? "state"--instance ToQuery InstanceCount where-    toQuery InstanceCount{..} = mconcat-        [ "InstanceCount" =? _icInstanceCount-        , "State"         =? _icState-        ]--data ExportToS3Task = ExportToS3Task-    { _etstContainerFormat :: Maybe ContainerFormat-    , _etstDiskImageFormat :: Maybe DiskImageFormat-    , _etstS3Bucket        :: Maybe Text-    , _etstS3Key           :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'ExportToS3Task' constructor.------ The fields accessible through corresponding lenses are:------ * 'etstContainerFormat' @::@ 'Maybe' 'ContainerFormat'------ * 'etstDiskImageFormat' @::@ 'Maybe' 'DiskImageFormat'------ * 'etstS3Bucket' @::@ 'Maybe' 'Text'------ * 'etstS3Key' @::@ 'Maybe' 'Text'----exportToS3Task :: ExportToS3Task-exportToS3Task = ExportToS3Task-    { _etstDiskImageFormat = Nothing-    , _etstContainerFormat = Nothing-    , _etstS3Bucket        = Nothing-    , _etstS3Key           = Nothing-    }---- | The container format used to combine disk images with metadata (such as OVF).--- If absent, only the disk image is exported.-etstContainerFormat :: Lens' ExportToS3Task (Maybe ContainerFormat)-etstContainerFormat =-    lens _etstContainerFormat (\s a -> s { _etstContainerFormat = a })---- | The format for the exported image.-etstDiskImageFormat :: Lens' ExportToS3Task (Maybe DiskImageFormat)-etstDiskImageFormat =-    lens _etstDiskImageFormat (\s a -> s { _etstDiskImageFormat = a })---- | The Amazon S3 bucket for the destination image. The destination bucket must--- exist and grant WRITE and READ_ACP permissions to the AWS account 'vm-import-export@amazon.com'.-etstS3Bucket :: Lens' ExportToS3Task (Maybe Text)-etstS3Bucket = lens _etstS3Bucket (\s a -> s { _etstS3Bucket = a })--etstS3Key :: Lens' ExportToS3Task (Maybe Text)-etstS3Key = lens _etstS3Key (\s a -> s { _etstS3Key = a })--instance FromXML ExportToS3Task where-    parseXML x = ExportToS3Task-        <$> x .@? "containerFormat"-        <*> x .@? "diskImageFormat"-        <*> x .@? "s3Bucket"-        <*> x .@? "s3Key"--instance ToQuery ExportToS3Task where-    toQuery ExportToS3Task{..} = mconcat-        [ "ContainerFormat" =? _etstContainerFormat-        , "DiskImageFormat" =? _etstDiskImageFormat-        , "S3Bucket"        =? _etstS3Bucket-        , "S3Key"           =? _etstS3Key-        ]--data BlockDeviceMapping = BlockDeviceMapping-    { _bdmDeviceName  :: Text-    , _bdmEbs         :: Maybe EbsBlockDevice-    , _bdmNoDevice    :: Maybe Text-    , _bdmVirtualName :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'BlockDeviceMapping' constructor.------ The fields accessible through corresponding lenses are:------ * 'bdmDeviceName' @::@ 'Text'------ * 'bdmEbs' @::@ 'Maybe' 'EbsBlockDevice'------ * 'bdmNoDevice' @::@ 'Maybe' 'Text'------ * 'bdmVirtualName' @::@ 'Maybe' 'Text'----blockDeviceMapping :: Text -- ^ 'bdmDeviceName'-                   -> BlockDeviceMapping-blockDeviceMapping p1 = BlockDeviceMapping-    { _bdmDeviceName  = p1-    , _bdmVirtualName = Nothing-    , _bdmEbs         = Nothing-    , _bdmNoDevice    = Nothing-    }---- | The device name exposed to the instance (for example, '/dev/sdh' or 'xvdh').-bdmDeviceName :: Lens' BlockDeviceMapping Text-bdmDeviceName = lens _bdmDeviceName (\s a -> s { _bdmDeviceName = a })---- | Parameters used to automatically set up Amazon EBS volumes when the instance--- is launched.-bdmEbs :: Lens' BlockDeviceMapping (Maybe EbsBlockDevice)-bdmEbs = lens _bdmEbs (\s a -> s { _bdmEbs = a })---- | Suppresses the specified device included in the block device mapping of the--- AMI.-bdmNoDevice :: Lens' BlockDeviceMapping (Maybe Text)-bdmNoDevice = lens _bdmNoDevice (\s a -> s { _bdmNoDevice = a })---- | The virtual device name ('ephemeral'N). Instance store volumes are numbered--- starting from 0. An instance type with 2 available instance store volumes can--- specify mappings for 'ephemeral0' and 'ephemeral1'.The number of available--- instance store volumes depends on the instance type. After you connect to the--- instance, you must mount the volume.------ Constraints: For M3 instances, you must specify instance store volumes in--- the block device mapping for the instance. When you launch an M3 instance, we--- ignore any instance store volumes specified in the block device mapping for--- the AMI.-bdmVirtualName :: Lens' BlockDeviceMapping (Maybe Text)-bdmVirtualName = lens _bdmVirtualName (\s a -> s { _bdmVirtualName = a })--instance FromXML BlockDeviceMapping where-    parseXML x = BlockDeviceMapping-        <$> x .@  "deviceName"-        <*> x .@? "ebs"-        <*> x .@? "noDevice"-        <*> x .@? "virtualName"--instance ToQuery BlockDeviceMapping where-    toQuery BlockDeviceMapping{..} = mconcat-        [ "DeviceName"  =? _bdmDeviceName-        , "Ebs"         =? _bdmEbs-        , "NoDevice"    =? _bdmNoDevice-        , "VirtualName" =? _bdmVirtualName-        ]--data ConversionTask = ConversionTask-    { _ctConversionTaskId :: Text-    , _ctExpirationTime   :: Maybe Text-    , _ctImportInstance   :: Maybe ImportInstanceTaskDetails-    , _ctImportVolume     :: Maybe ImportVolumeTaskDetails-    , _ctState            :: ConversionTaskState-    , _ctStatusMessage    :: Maybe Text-    , _ctTags             :: List "item" Tag-    } deriving (Eq, Read, Show)---- | 'ConversionTask' constructor.------ The fields accessible through corresponding lenses are:------ * 'ctConversionTaskId' @::@ 'Text'------ * 'ctExpirationTime' @::@ 'Maybe' 'Text'------ * 'ctImportInstance' @::@ 'Maybe' 'ImportInstanceTaskDetails'------ * 'ctImportVolume' @::@ 'Maybe' 'ImportVolumeTaskDetails'------ * 'ctState' @::@ 'ConversionTaskState'------ * 'ctStatusMessage' @::@ 'Maybe' 'Text'------ * 'ctTags' @::@ ['Tag']----conversionTask :: Text -- ^ 'ctConversionTaskId'-               -> ConversionTaskState -- ^ 'ctState'-               -> ConversionTask-conversionTask p1 p2 = ConversionTask-    { _ctConversionTaskId = p1-    , _ctState            = p2-    , _ctExpirationTime   = Nothing-    , _ctImportInstance   = Nothing-    , _ctImportVolume     = Nothing-    , _ctStatusMessage    = Nothing-    , _ctTags             = mempty-    }---- | The ID of the conversion task.-ctConversionTaskId :: Lens' ConversionTask Text-ctConversionTaskId =-    lens _ctConversionTaskId (\s a -> s { _ctConversionTaskId = a })---- | The time when the task expires. If the upload isn't complete before the--- expiration time, we automatically cancel the task.-ctExpirationTime :: Lens' ConversionTask (Maybe Text)-ctExpirationTime = lens _ctExpirationTime (\s a -> s { _ctExpirationTime = a })---- | If the task is for importing an instance, this contains information about the--- import instance task.-ctImportInstance :: Lens' ConversionTask (Maybe ImportInstanceTaskDetails)-ctImportInstance = lens _ctImportInstance (\s a -> s { _ctImportInstance = a })---- | If the task is for importing a volume, this contains information about the--- import volume task.-ctImportVolume :: Lens' ConversionTask (Maybe ImportVolumeTaskDetails)-ctImportVolume = lens _ctImportVolume (\s a -> s { _ctImportVolume = a })---- | The state of the conversion task.-ctState :: Lens' ConversionTask ConversionTaskState-ctState = lens _ctState (\s a -> s { _ctState = a })---- | The status message related to the conversion task.-ctStatusMessage :: Lens' ConversionTask (Maybe Text)-ctStatusMessage = lens _ctStatusMessage (\s a -> s { _ctStatusMessage = a })--ctTags :: Lens' ConversionTask [Tag]-ctTags = lens _ctTags (\s a -> s { _ctTags = a }) . _List--instance FromXML ConversionTask where-    parseXML x = ConversionTask-        <$> x .@  "conversionTaskId"-        <*> x .@? "expirationTime"-        <*> x .@? "importInstance"-        <*> x .@? "importVolume"-        <*> x .@  "state"-        <*> x .@? "statusMessage"-        <*> x .@? "tagSet" .!@ mempty--instance ToQuery ConversionTask where-    toQuery ConversionTask{..} = mconcat-        [ "ConversionTaskId" =? _ctConversionTaskId-        , "ExpirationTime"   =? _ctExpirationTime-        , "ImportInstance"   =? _ctImportInstance-        , "ImportVolume"     =? _ctImportVolume-        , "State"            =? _ctState-        , "StatusMessage"    =? _ctStatusMessage-        , "TagSet"           `toQueryList` _ctTags-        ]--data AttachmentStatus-    = ASAttached  -- ^ attached-    | ASAttaching -- ^ attaching-    | ASDetached  -- ^ detached-    | ASDetaching -- ^ detaching-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable AttachmentStatus--instance FromText AttachmentStatus where-    parser = takeLowerText >>= \case-        "attached"  -> pure ASAttached-        "attaching" -> pure ASAttaching-        "detached"  -> pure ASDetached-        "detaching" -> pure ASDetaching-        e           -> fail $-            "Failure parsing AttachmentStatus from " ++ show e--instance ToText AttachmentStatus where-    toText = \case-        ASAttached  -> "attached"-        ASAttaching -> "attaching"-        ASDetached  -> "detached"-        ASDetaching -> "detaching"--instance ToByteString AttachmentStatus-instance ToHeader     AttachmentStatus-instance ToQuery      AttachmentStatus--instance FromXML AttachmentStatus where-    parseXML = parseXMLText "AttachmentStatus"--data ClassicLinkInstance = ClassicLinkInstance-    { _cliGroups     :: List "item" GroupIdentifier-    , _cliInstanceId :: Maybe Text-    , _cliTags       :: List "item" Tag-    , _cliVpcId      :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'ClassicLinkInstance' constructor.------ The fields accessible through corresponding lenses are:------ * 'cliGroups' @::@ ['GroupIdentifier']------ * 'cliInstanceId' @::@ 'Maybe' 'Text'------ * 'cliTags' @::@ ['Tag']------ * 'cliVpcId' @::@ 'Maybe' 'Text'----classicLinkInstance :: ClassicLinkInstance-classicLinkInstance = ClassicLinkInstance-    { _cliInstanceId = Nothing-    , _cliVpcId      = Nothing-    , _cliGroups     = mempty-    , _cliTags       = mempty-    }---- | A list of security groups.-cliGroups :: Lens' ClassicLinkInstance [GroupIdentifier]-cliGroups = lens _cliGroups (\s a -> s { _cliGroups = a }) . _List---- | The ID of the instance.-cliInstanceId :: Lens' ClassicLinkInstance (Maybe Text)-cliInstanceId = lens _cliInstanceId (\s a -> s { _cliInstanceId = a })---- | Any tags assigned to the instance.-cliTags :: Lens' ClassicLinkInstance [Tag]-cliTags = lens _cliTags (\s a -> s { _cliTags = a }) . _List---- | The ID of the VPC.-cliVpcId :: Lens' ClassicLinkInstance (Maybe Text)-cliVpcId = lens _cliVpcId (\s a -> s { _cliVpcId = a })--instance FromXML ClassicLinkInstance where-    parseXML x = ClassicLinkInstance-        <$> x .@? "groupSet" .!@ mempty-        <*> x .@? "instanceId"-        <*> x .@? "tagSet" .!@ mempty-        <*> x .@? "vpcId"--instance ToQuery ClassicLinkInstance where-    toQuery ClassicLinkInstance{..} = mconcat-        [ "GroupSet"   `toQueryList` _cliGroups-        , "InstanceId" =? _cliInstanceId-        , "TagSet"     `toQueryList` _cliTags-        , "VpcId"      =? _cliVpcId-        ]--data RouteOrigin-    = OriginCreateRoute               -- ^ CreateRoute-    | OriginCreateRouteTable          -- ^ CreateRouteTable-    | OriginEnableVgwRoutePropagation -- ^ EnableVgwRoutePropagation-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable RouteOrigin--instance FromText RouteOrigin where-    parser = takeLowerText >>= \case-        "createroute"               -> pure OriginCreateRoute-        "createroutetable"          -> pure OriginCreateRouteTable-        "enablevgwroutepropagation" -> pure OriginEnableVgwRoutePropagation-        e                           -> fail $-            "Failure parsing RouteOrigin from " ++ show e--instance ToText RouteOrigin where-    toText = \case-        OriginCreateRoute               -> "CreateRoute"-        OriginCreateRouteTable          -> "CreateRouteTable"-        OriginEnableVgwRoutePropagation -> "EnableVgwRoutePropagation"--instance ToByteString RouteOrigin-instance ToHeader     RouteOrigin-instance ToQuery      RouteOrigin--instance FromXML RouteOrigin where-    parseXML = parseXMLText "RouteOrigin"--data ListingState-    = LSAvailable -- ^ available-    | LSCancelled -- ^ cancelled-    | LSPending   -- ^ pending-    | LSSold      -- ^ sold-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable ListingState--instance FromText ListingState where-    parser = takeLowerText >>= \case-        "available" -> pure LSAvailable-        "cancelled" -> pure LSCancelled-        "pending"   -> pure LSPending-        "sold"      -> pure LSSold-        e           -> fail $-            "Failure parsing ListingState from " ++ show e--instance ToText ListingState where-    toText = \case-        LSAvailable -> "available"-        LSCancelled -> "cancelled"-        LSPending   -> "pending"-        LSSold      -> "sold"--instance ToByteString ListingState-instance ToHeader     ListingState-instance ToQuery      ListingState--instance FromXML ListingState where-    parseXML = parseXMLText "ListingState"--data SpotPrice = SpotPrice-    { _spAvailabilityZone   :: Maybe Text-    , _spInstanceType       :: Maybe InstanceType-    , _spProductDescription :: Maybe RIProductDescription-    , _spSpotPrice          :: Maybe Text-    , _spTimestamp          :: Maybe ISO8601-    } deriving (Eq, Read, Show)---- | 'SpotPrice' constructor.------ The fields accessible through corresponding lenses are:------ * 'spAvailabilityZone' @::@ 'Maybe' 'Text'------ * 'spInstanceType' @::@ 'Maybe' 'InstanceType'------ * 'spProductDescription' @::@ 'Maybe' 'RIProductDescription'------ * 'spSpotPrice' @::@ 'Maybe' 'Text'------ * 'spTimestamp' @::@ 'Maybe' 'UTCTime'----spotPrice :: SpotPrice-spotPrice = SpotPrice-    { _spInstanceType       = Nothing-    , _spProductDescription = Nothing-    , _spSpotPrice          = Nothing-    , _spTimestamp          = Nothing-    , _spAvailabilityZone   = Nothing-    }---- | The Availability Zone.-spAvailabilityZone :: Lens' SpotPrice (Maybe Text)-spAvailabilityZone =-    lens _spAvailabilityZone (\s a -> s { _spAvailabilityZone = a })---- | The instance type.-spInstanceType :: Lens' SpotPrice (Maybe InstanceType)-spInstanceType = lens _spInstanceType (\s a -> s { _spInstanceType = a })---- | A general description of the AMI.-spProductDescription :: Lens' SpotPrice (Maybe RIProductDescription)-spProductDescription =-    lens _spProductDescription (\s a -> s { _spProductDescription = a })---- | The maximum price (bid) that you are willing to pay for a Spot Instance.-spSpotPrice :: Lens' SpotPrice (Maybe Text)-spSpotPrice = lens _spSpotPrice (\s a -> s { _spSpotPrice = a })---- | The date and time the request was created.-spTimestamp :: Lens' SpotPrice (Maybe UTCTime)-spTimestamp = lens _spTimestamp (\s a -> s { _spTimestamp = a }) . mapping _Time--instance FromXML SpotPrice where-    parseXML x = SpotPrice-        <$> x .@? "availabilityZone"-        <*> x .@? "instanceType"-        <*> x .@? "productDescription"-        <*> x .@? "spotPrice"-        <*> x .@? "timestamp"--instance ToQuery SpotPrice where-    toQuery SpotPrice{..} = mconcat-        [ "AvailabilityZone"   =? _spAvailabilityZone-        , "InstanceType"       =? _spInstanceType-        , "ProductDescription" =? _spProductDescription-        , "SpotPrice"          =? _spSpotPrice-        , "Timestamp"          =? _spTimestamp-        ]--data InstanceMonitoring = InstanceMonitoring-    { _imInstanceId :: Maybe Text-    , _imMonitoring :: Maybe Monitoring-    } deriving (Eq, Read, Show)---- | 'InstanceMonitoring' constructor.------ The fields accessible through corresponding lenses are:------ * 'imInstanceId' @::@ 'Maybe' 'Text'------ * 'imMonitoring' @::@ 'Maybe' 'Monitoring'----instanceMonitoring :: InstanceMonitoring-instanceMonitoring = InstanceMonitoring-    { _imInstanceId = Nothing-    , _imMonitoring = Nothing-    }---- | The ID of the instance.-imInstanceId :: Lens' InstanceMonitoring (Maybe Text)-imInstanceId = lens _imInstanceId (\s a -> s { _imInstanceId = a })---- | The monitoring information.-imMonitoring :: Lens' InstanceMonitoring (Maybe Monitoring)-imMonitoring = lens _imMonitoring (\s a -> s { _imMonitoring = a })--instance FromXML InstanceMonitoring where-    parseXML x = InstanceMonitoring-        <$> x .@? "instanceId"-        <*> x .@? "monitoring"--instance ToQuery InstanceMonitoring where-    toQuery InstanceMonitoring{..} = mconcat-        [ "InstanceId" =? _imInstanceId-        , "Monitoring" =? _imMonitoring-        ]--data PriceScheduleSpecification = PriceScheduleSpecification-    { _pssCurrencyCode :: Maybe CurrencyCodeValues-    , _pssPrice        :: Maybe Double-    , _pssTerm         :: Maybe Integer-    } deriving (Eq, Read, Show)---- | 'PriceScheduleSpecification' constructor.------ The fields accessible through corresponding lenses are:------ * 'pssCurrencyCode' @::@ 'Maybe' 'CurrencyCodeValues'------ * 'pssPrice' @::@ 'Maybe' 'Double'------ * 'pssTerm' @::@ 'Maybe' 'Integer'----priceScheduleSpecification :: PriceScheduleSpecification-priceScheduleSpecification = PriceScheduleSpecification-    { _pssTerm         = Nothing-    , _pssPrice        = Nothing-    , _pssCurrencyCode = Nothing-    }---- | The currency for transacting the Reserved Instance resale. At this time, the--- only supported currency is 'USD'.-pssCurrencyCode :: Lens' PriceScheduleSpecification (Maybe CurrencyCodeValues)-pssCurrencyCode = lens _pssCurrencyCode (\s a -> s { _pssCurrencyCode = a })---- | The fixed price for the term.-pssPrice :: Lens' PriceScheduleSpecification (Maybe Double)-pssPrice = lens _pssPrice (\s a -> s { _pssPrice = a })---- | The number of months remaining in the reservation. For example, 2 is the--- second to the last month before the capacity reservation expires.-pssTerm :: Lens' PriceScheduleSpecification (Maybe Integer)-pssTerm = lens _pssTerm (\s a -> s { _pssTerm = a })--instance FromXML PriceScheduleSpecification where-    parseXML x = PriceScheduleSpecification-        <$> x .@? "currencyCode"-        <*> x .@? "price"-        <*> x .@? "term"--instance ToQuery PriceScheduleSpecification where-    toQuery PriceScheduleSpecification{..} = mconcat-        [ "CurrencyCode" =? _pssCurrencyCode-        , "Price"        =? _pssPrice-        , "Term"         =? _pssTerm-        ]--data SpotInstanceStatus = SpotInstanceStatus-    { _sisCode       :: Maybe Text-    , _sisMessage    :: Maybe Text-    , _sisUpdateTime :: Maybe ISO8601-    } deriving (Eq, Ord, Read, Show)---- | 'SpotInstanceStatus' constructor.------ The fields accessible through corresponding lenses are:------ * 'sisCode' @::@ 'Maybe' 'Text'------ * 'sisMessage' @::@ 'Maybe' 'Text'------ * 'sisUpdateTime' @::@ 'Maybe' 'UTCTime'----spotInstanceStatus :: SpotInstanceStatus-spotInstanceStatus = SpotInstanceStatus-    { _sisCode       = Nothing-    , _sisUpdateTime = Nothing-    , _sisMessage    = Nothing-    }---- | The status code.-sisCode :: Lens' SpotInstanceStatus (Maybe Text)-sisCode = lens _sisCode (\s a -> s { _sisCode = a })---- | The description for the status code.-sisMessage :: Lens' SpotInstanceStatus (Maybe Text)-sisMessage = lens _sisMessage (\s a -> s { _sisMessage = a })---- | The time of the most recent status update.-sisUpdateTime :: Lens' SpotInstanceStatus (Maybe UTCTime)-sisUpdateTime = lens _sisUpdateTime (\s a -> s { _sisUpdateTime = a }) . mapping _Time--instance FromXML SpotInstanceStatus where-    parseXML x = SpotInstanceStatus-        <$> x .@? "code"-        <*> x .@? "message"-        <*> x .@? "updateTime"--instance ToQuery SpotInstanceStatus where-    toQuery SpotInstanceStatus{..} = mconcat-        [ "Code"       =? _sisCode-        , "Message"    =? _sisMessage-        , "UpdateTime" =? _sisUpdateTime-        ]--data AvailabilityZoneState-    = AZSAvailable -- ^ available-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable AvailabilityZoneState--instance FromText AvailabilityZoneState where-    parser = takeLowerText >>= \case-        "available" -> pure AZSAvailable-        e           -> fail $-            "Failure parsing AvailabilityZoneState from " ++ show e--instance ToText AvailabilityZoneState where-    toText AZSAvailable = "available"--instance ToByteString AvailabilityZoneState-instance ToHeader     AvailabilityZoneState-instance ToQuery      AvailabilityZoneState--instance FromXML AvailabilityZoneState where-    parseXML = parseXMLText "AvailabilityZoneState"--data SpotInstanceRequest = SpotInstanceRequest-    { _siAvailabilityZoneGroup    :: Maybe Text-    , _siCreateTime               :: Maybe ISO8601-    , _siFault                    :: Maybe SpotInstanceStateFault-    , _siInstanceId               :: Maybe Text-    , _siLaunchGroup              :: Maybe Text-    , _siLaunchSpecification      :: Maybe LaunchSpecification-    , _siLaunchedAvailabilityZone :: Maybe Text-    , _siProductDescription       :: Maybe RIProductDescription-    , _siSpotInstanceRequestId    :: Maybe Text-    , _siSpotPrice                :: Maybe Text-    , _siState                    :: Maybe SpotInstanceState-    , _siStatus                   :: Maybe SpotInstanceStatus-    , _siTags                     :: List "item" Tag-    , _siType                     :: Maybe SpotInstanceType-    , _siValidFrom                :: Maybe ISO8601-    , _siValidUntil               :: Maybe ISO8601-    } deriving (Eq, Read, Show)---- | 'SpotInstanceRequest' constructor.------ The fields accessible through corresponding lenses are:------ * 'siAvailabilityZoneGroup' @::@ 'Maybe' 'Text'------ * 'siCreateTime' @::@ 'Maybe' 'UTCTime'------ * 'siFault' @::@ 'Maybe' 'SpotInstanceStateFault'------ * 'siInstanceId' @::@ 'Maybe' 'Text'------ * 'siLaunchGroup' @::@ 'Maybe' 'Text'------ * 'siLaunchSpecification' @::@ 'Maybe' 'LaunchSpecification'------ * 'siLaunchedAvailabilityZone' @::@ 'Maybe' 'Text'------ * 'siProductDescription' @::@ 'Maybe' 'RIProductDescription'------ * 'siSpotInstanceRequestId' @::@ 'Maybe' 'Text'------ * 'siSpotPrice' @::@ 'Maybe' 'Text'------ * 'siState' @::@ 'Maybe' 'SpotInstanceState'------ * 'siStatus' @::@ 'Maybe' 'SpotInstanceStatus'------ * 'siTags' @::@ ['Tag']------ * 'siType' @::@ 'Maybe' 'SpotInstanceType'------ * 'siValidFrom' @::@ 'Maybe' 'UTCTime'------ * 'siValidUntil' @::@ 'Maybe' 'UTCTime'----spotInstanceRequest :: SpotInstanceRequest-spotInstanceRequest = SpotInstanceRequest-    { _siSpotInstanceRequestId    = Nothing-    , _siSpotPrice                = Nothing-    , _siType                     = Nothing-    , _siState                    = Nothing-    , _siFault                    = Nothing-    , _siStatus                   = Nothing-    , _siValidFrom                = Nothing-    , _siValidUntil               = Nothing-    , _siLaunchGroup              = Nothing-    , _siAvailabilityZoneGroup    = Nothing-    , _siLaunchSpecification      = Nothing-    , _siInstanceId               = Nothing-    , _siCreateTime               = Nothing-    , _siProductDescription       = Nothing-    , _siTags                     = mempty-    , _siLaunchedAvailabilityZone = Nothing-    }---- | The Availability Zone group. If you specify the same Availability Zone group--- for all Spot Instance requests, all Spot Instances are launched in the same--- Availability Zone.-siAvailabilityZoneGroup :: Lens' SpotInstanceRequest (Maybe Text)-siAvailabilityZoneGroup =-    lens _siAvailabilityZoneGroup (\s a -> s { _siAvailabilityZoneGroup = a })---- | The time stamp when the Spot Instance request was created.-siCreateTime :: Lens' SpotInstanceRequest (Maybe UTCTime)-siCreateTime = lens _siCreateTime (\s a -> s { _siCreateTime = a }) . mapping _Time---- | The fault codes for the Spot Instance request, if any.-siFault :: Lens' SpotInstanceRequest (Maybe SpotInstanceStateFault)-siFault = lens _siFault (\s a -> s { _siFault = a })---- | The instance ID, if an instance has been launched to fulfill the Spot--- Instance request.-siInstanceId :: Lens' SpotInstanceRequest (Maybe Text)-siInstanceId = lens _siInstanceId (\s a -> s { _siInstanceId = a })---- | The instance launch group. Launch groups are Spot Instances that launch--- together and terminate together.-siLaunchGroup :: Lens' SpotInstanceRequest (Maybe Text)-siLaunchGroup = lens _siLaunchGroup (\s a -> s { _siLaunchGroup = a })---- | Additional information for launching instances.-siLaunchSpecification :: Lens' SpotInstanceRequest (Maybe LaunchSpecification)-siLaunchSpecification =-    lens _siLaunchSpecification (\s a -> s { _siLaunchSpecification = a })---- | The Availability Zone in which the bid is launched.-siLaunchedAvailabilityZone :: Lens' SpotInstanceRequest (Maybe Text)-siLaunchedAvailabilityZone =-    lens _siLaunchedAvailabilityZone-        (\s a -> s { _siLaunchedAvailabilityZone = a })---- | The product description associated with the Spot Instance.-siProductDescription :: Lens' SpotInstanceRequest (Maybe RIProductDescription)-siProductDescription =-    lens _siProductDescription (\s a -> s { _siProductDescription = a })---- | The ID of the Spot Instance request.-siSpotInstanceRequestId :: Lens' SpotInstanceRequest (Maybe Text)-siSpotInstanceRequestId =-    lens _siSpotInstanceRequestId (\s a -> s { _siSpotInstanceRequestId = a })---- | The maximum hourly price (bid) for any Spot Instance launched to fulfill the--- request.-siSpotPrice :: Lens' SpotInstanceRequest (Maybe Text)-siSpotPrice = lens _siSpotPrice (\s a -> s { _siSpotPrice = a })---- | The state of the Spot Instance request. Spot bid status information can help--- you track your Spot Instance requests. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-bid-status.html Spot BidStatus> in the /Amazon Elastic Compute Cloud User Guide for Linux/.-siState :: Lens' SpotInstanceRequest (Maybe SpotInstanceState)-siState = lens _siState (\s a -> s { _siState = a })---- | The status code and status message describing the Spot Instance request.-siStatus :: Lens' SpotInstanceRequest (Maybe SpotInstanceStatus)-siStatus = lens _siStatus (\s a -> s { _siStatus = a })---- | Any tags assigned to the resource.-siTags :: Lens' SpotInstanceRequest [Tag]-siTags = lens _siTags (\s a -> s { _siTags = a }) . _List---- | The Spot Instance request type.-siType :: Lens' SpotInstanceRequest (Maybe SpotInstanceType)-siType = lens _siType (\s a -> s { _siType = a })---- | The start date of the request. If this is a one-time request, the request--- becomes active at this date and time and remains active until all instances--- launch, the request expires, or the request is canceled. If the request is--- persistent, the request becomes active at this date and time and remains--- active until it expires or is canceled.-siValidFrom :: Lens' SpotInstanceRequest (Maybe UTCTime)-siValidFrom = lens _siValidFrom (\s a -> s { _siValidFrom = a }) . mapping _Time---- | The end date of the request. If this is a one-time request, the request--- remains active until all instances launch, the request is canceled, or this--- date is reached. If the request is persistent, it remains active until it is--- canceled or this date is reached.-siValidUntil :: Lens' SpotInstanceRequest (Maybe UTCTime)-siValidUntil = lens _siValidUntil (\s a -> s { _siValidUntil = a }) . mapping _Time--instance FromXML SpotInstanceRequest where-    parseXML x = SpotInstanceRequest-        <$> x .@? "availabilityZoneGroup"-        <*> x .@? "createTime"-        <*> x .@? "fault"-        <*> x .@? "instanceId"-        <*> x .@? "launchGroup"-        <*> x .@? "launchSpecification"-        <*> x .@? "launchedAvailabilityZone"-        <*> x .@? "productDescription"-        <*> x .@? "spotInstanceRequestId"-        <*> x .@? "spotPrice"-        <*> x .@? "state"-        <*> x .@? "status"-        <*> x .@? "tagSet" .!@ mempty-        <*> x .@? "type"-        <*> x .@? "validFrom"-        <*> x .@? "validUntil"--instance ToQuery SpotInstanceRequest where-    toQuery SpotInstanceRequest{..} = mconcat-        [ "AvailabilityZoneGroup"    =? _siAvailabilityZoneGroup-        , "CreateTime"               =? _siCreateTime-        , "Fault"                    =? _siFault-        , "InstanceId"               =? _siInstanceId-        , "LaunchGroup"              =? _siLaunchGroup-        , "LaunchSpecification"      =? _siLaunchSpecification-        , "LaunchedAvailabilityZone" =? _siLaunchedAvailabilityZone-        , "ProductDescription"       =? _siProductDescription-        , "SpotInstanceRequestId"    =? _siSpotInstanceRequestId-        , "SpotPrice"                =? _siSpotPrice-        , "State"                    =? _siState-        , "Status"                   =? _siStatus-        , "TagSet"                   `toQueryList` _siTags-        , "Type"                     =? _siType-        , "ValidFrom"                =? _siValidFrom-        , "ValidUntil"               =? _siValidUntil-        ]--data LaunchSpecification = LaunchSpecification-    { _lsAddressingType      :: Maybe Text-    , _lsBlockDeviceMappings :: List "item" BlockDeviceMapping-    , _lsEbsOptimized        :: Maybe Bool-    , _lsIamInstanceProfile  :: Maybe IamInstanceProfileSpecification-    , _lsImageId             :: Maybe Text-    , _lsInstanceType        :: Maybe InstanceType-    , _lsKernelId            :: Maybe Text-    , _lsKeyName             :: Maybe Text-    , _lsMonitoring          :: Maybe RunInstancesMonitoringEnabled-    , _lsNetworkInterfaces   :: List "item" InstanceNetworkInterfaceSpecification-    , _lsPlacement           :: Maybe SpotPlacement-    , _lsRamdiskId           :: Maybe Text-    , _lsSecurityGroups      :: List "item" GroupIdentifier-    , _lsSubnetId            :: Maybe Text-    , _lsUserData            :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'LaunchSpecification' constructor.------ The fields accessible through corresponding lenses are:------ * 'lsAddressingType' @::@ 'Maybe' 'Text'------ * 'lsBlockDeviceMappings' @::@ ['BlockDeviceMapping']------ * 'lsEbsOptimized' @::@ 'Maybe' 'Bool'------ * 'lsIamInstanceProfile' @::@ 'Maybe' 'IamInstanceProfileSpecification'------ * 'lsImageId' @::@ 'Maybe' 'Text'------ * 'lsInstanceType' @::@ 'Maybe' 'InstanceType'------ * 'lsKernelId' @::@ 'Maybe' 'Text'------ * 'lsKeyName' @::@ 'Maybe' 'Text'------ * 'lsMonitoring' @::@ 'Maybe' 'RunInstancesMonitoringEnabled'------ * 'lsNetworkInterfaces' @::@ ['InstanceNetworkInterfaceSpecification']------ * 'lsPlacement' @::@ 'Maybe' 'SpotPlacement'------ * 'lsRamdiskId' @::@ 'Maybe' 'Text'------ * 'lsSecurityGroups' @::@ ['GroupIdentifier']------ * 'lsSubnetId' @::@ 'Maybe' 'Text'------ * 'lsUserData' @::@ 'Maybe' 'Text'----launchSpecification :: LaunchSpecification-launchSpecification = LaunchSpecification-    { _lsImageId             = Nothing-    , _lsKeyName             = Nothing-    , _lsSecurityGroups      = mempty-    , _lsUserData            = Nothing-    , _lsAddressingType      = Nothing-    , _lsInstanceType        = Nothing-    , _lsPlacement           = Nothing-    , _lsKernelId            = Nothing-    , _lsRamdiskId           = Nothing-    , _lsBlockDeviceMappings = mempty-    , _lsSubnetId            = Nothing-    , _lsNetworkInterfaces   = mempty-    , _lsIamInstanceProfile  = Nothing-    , _lsEbsOptimized        = Nothing-    , _lsMonitoring          = Nothing-    }---- | Deprecated.-lsAddressingType :: Lens' LaunchSpecification (Maybe Text)-lsAddressingType = lens _lsAddressingType (\s a -> s { _lsAddressingType = a })---- | One or more block device mapping entries.-lsBlockDeviceMappings :: Lens' LaunchSpecification [BlockDeviceMapping]-lsBlockDeviceMappings =-    lens _lsBlockDeviceMappings (\s a -> s { _lsBlockDeviceMappings = a })-        . _List---- | Indicates whether the instance is optimized for EBS I/O. This optimization--- provides dedicated throughput to Amazon EBS and an optimized configuration--- stack to provide optimal EBS I/O performance. This optimization isn't--- available with all instance types. Additional usage charges apply when using--- an EBS Optimized instance.------ Default: 'false'-lsEbsOptimized :: Lens' LaunchSpecification (Maybe Bool)-lsEbsOptimized = lens _lsEbsOptimized (\s a -> s { _lsEbsOptimized = a })---- | The IAM instance profile.-lsIamInstanceProfile :: Lens' LaunchSpecification (Maybe IamInstanceProfileSpecification)-lsIamInstanceProfile =-    lens _lsIamInstanceProfile (\s a -> s { _lsIamInstanceProfile = a })---- | The ID of the AMI.-lsImageId :: Lens' LaunchSpecification (Maybe Text)-lsImageId = lens _lsImageId (\s a -> s { _lsImageId = a })---- | The instance type.-lsInstanceType :: Lens' LaunchSpecification (Maybe InstanceType)-lsInstanceType = lens _lsInstanceType (\s a -> s { _lsInstanceType = a })---- | The ID of the kernel.-lsKernelId :: Lens' LaunchSpecification (Maybe Text)-lsKernelId = lens _lsKernelId (\s a -> s { _lsKernelId = a })---- | The name of the key pair.-lsKeyName :: Lens' LaunchSpecification (Maybe Text)-lsKeyName = lens _lsKeyName (\s a -> s { _lsKeyName = a })--lsMonitoring :: Lens' LaunchSpecification (Maybe RunInstancesMonitoringEnabled)-lsMonitoring = lens _lsMonitoring (\s a -> s { _lsMonitoring = a })---- | One or more network interfaces.-lsNetworkInterfaces :: Lens' LaunchSpecification [InstanceNetworkInterfaceSpecification]-lsNetworkInterfaces =-    lens _lsNetworkInterfaces (\s a -> s { _lsNetworkInterfaces = a })-        . _List---- | The placement information for the instance.-lsPlacement :: Lens' LaunchSpecification (Maybe SpotPlacement)-lsPlacement = lens _lsPlacement (\s a -> s { _lsPlacement = a })---- | The ID of the RAM disk.-lsRamdiskId :: Lens' LaunchSpecification (Maybe Text)-lsRamdiskId = lens _lsRamdiskId (\s a -> s { _lsRamdiskId = a })---- | One or more security groups. To request an instance in a nondefault VPC, you--- must specify the ID of the security group. To request an instance in--- EC2-Classic or a default VPC, you can specify the name or the ID of the--- security group.-lsSecurityGroups :: Lens' LaunchSpecification [GroupIdentifier]-lsSecurityGroups = lens _lsSecurityGroups (\s a -> s { _lsSecurityGroups = a }) . _List---- | The ID of the subnet in which to launch the instance.-lsSubnetId :: Lens' LaunchSpecification (Maybe Text)-lsSubnetId = lens _lsSubnetId (\s a -> s { _lsSubnetId = a })---- | The Base64-encoded MIME user data to make available to the instances.-lsUserData :: Lens' LaunchSpecification (Maybe Text)-lsUserData = lens _lsUserData (\s a -> s { _lsUserData = a })--instance FromXML LaunchSpecification where-    parseXML x = LaunchSpecification-        <$> x .@? "addressingType"-        <*> x .@? "blockDeviceMapping" .!@ mempty-        <*> x .@? "ebsOptimized"-        <*> x .@? "iamInstanceProfile"-        <*> x .@? "imageId"-        <*> x .@? "instanceType"-        <*> x .@? "kernelId"-        <*> x .@? "keyName"-        <*> x .@? "monitoring"-        <*> x .@? "networkInterfaceSet" .!@ mempty-        <*> x .@? "placement"-        <*> x .@? "ramdiskId"-        <*> x .@? "groupSet" .!@ mempty-        <*> x .@? "subnetId"-        <*> x .@? "userData"--instance ToQuery LaunchSpecification where-    toQuery LaunchSpecification{..} = mconcat-        [ "AddressingType"      =? _lsAddressingType-        , "BlockDeviceMapping"  `toQueryList` _lsBlockDeviceMappings-        , "EbsOptimized"        =? _lsEbsOptimized-        , "IamInstanceProfile"  =? _lsIamInstanceProfile-        , "ImageId"             =? _lsImageId-        , "InstanceType"        =? _lsInstanceType-        , "KernelId"            =? _lsKernelId-        , "KeyName"             =? _lsKeyName-        , "Monitoring"          =? _lsMonitoring-        , "NetworkInterfaceSet" `toQueryList` _lsNetworkInterfaces-        , "Placement"           =? _lsPlacement-        , "RamdiskId"           =? _lsRamdiskId-        , "GroupSet"            `toQueryList` _lsSecurityGroups-        , "SubnetId"            =? _lsSubnetId-        , "UserData"            =? _lsUserData-        ]--data VolumeStatusEvent = VolumeStatusEvent-    { _vseDescription :: Maybe Text-    , _vseEventId     :: Maybe Text-    , _vseEventType   :: Maybe Text-    , _vseNotAfter    :: Maybe ISO8601-    , _vseNotBefore   :: Maybe ISO8601-    } deriving (Eq, Ord, Read, Show)---- | 'VolumeStatusEvent' constructor.------ The fields accessible through corresponding lenses are:------ * 'vseDescription' @::@ 'Maybe' 'Text'------ * 'vseEventId' @::@ 'Maybe' 'Text'------ * 'vseEventType' @::@ 'Maybe' 'Text'------ * 'vseNotAfter' @::@ 'Maybe' 'UTCTime'------ * 'vseNotBefore' @::@ 'Maybe' 'UTCTime'----volumeStatusEvent :: VolumeStatusEvent-volumeStatusEvent = VolumeStatusEvent-    { _vseEventType   = Nothing-    , _vseDescription = Nothing-    , _vseNotBefore   = Nothing-    , _vseNotAfter    = Nothing-    , _vseEventId     = Nothing-    }---- | A description of the event.-vseDescription :: Lens' VolumeStatusEvent (Maybe Text)-vseDescription = lens _vseDescription (\s a -> s { _vseDescription = a })---- | The ID of this event.-vseEventId :: Lens' VolumeStatusEvent (Maybe Text)-vseEventId = lens _vseEventId (\s a -> s { _vseEventId = a })---- | The type of this event.-vseEventType :: Lens' VolumeStatusEvent (Maybe Text)-vseEventType = lens _vseEventType (\s a -> s { _vseEventType = a })---- | The latest end time of the event.-vseNotAfter :: Lens' VolumeStatusEvent (Maybe UTCTime)-vseNotAfter = lens _vseNotAfter (\s a -> s { _vseNotAfter = a }) . mapping _Time---- | The earliest start time of the event.-vseNotBefore :: Lens' VolumeStatusEvent (Maybe UTCTime)-vseNotBefore = lens _vseNotBefore (\s a -> s { _vseNotBefore = a }) . mapping _Time--instance FromXML VolumeStatusEvent where-    parseXML x = VolumeStatusEvent-        <$> x .@? "description"-        <*> x .@? "eventId"-        <*> x .@? "eventType"-        <*> x .@? "notAfter"-        <*> x .@? "notBefore"--instance ToQuery VolumeStatusEvent where-    toQuery VolumeStatusEvent{..} = mconcat-        [ "Description" =? _vseDescription-        , "EventId"     =? _vseEventId-        , "EventType"   =? _vseEventType-        , "NotAfter"    =? _vseNotAfter-        , "NotBefore"   =? _vseNotBefore-        ]--data Volume = Volume-    { _vAttachments      :: List "item" VolumeAttachment-    , _vAvailabilityZone :: Text-    , _vCreateTime       :: ISO8601-    , _vEncrypted        :: Bool-    , _vIops             :: Maybe Int-    , _vKmsKeyId         :: Maybe Text-    , _vSize             :: Int-    , _vSnapshotId       :: Text-    , _vState            :: VolumeState-    , _vTags             :: List "item" Tag-    , _vVolumeId         :: Text-    , _vVolumeType       :: VolumeType-    } deriving (Eq, Read, Show)---- | 'Volume' constructor.------ The fields accessible through corresponding lenses are:------ * 'vAttachments' @::@ ['VolumeAttachment']------ * 'vAvailabilityZone' @::@ 'Text'------ * 'vCreateTime' @::@ 'UTCTime'------ * 'vEncrypted' @::@ 'Bool'------ * 'vIops' @::@ 'Maybe' 'Int'------ * 'vKmsKeyId' @::@ 'Maybe' 'Text'------ * 'vSize' @::@ 'Int'------ * 'vSnapshotId' @::@ 'Text'------ * 'vState' @::@ 'VolumeState'------ * 'vTags' @::@ ['Tag']------ * 'vVolumeId' @::@ 'Text'------ * 'vVolumeType' @::@ 'VolumeType'----volume :: Text -- ^ 'vVolumeId'-       -> Int -- ^ 'vSize'-       -> Text -- ^ 'vSnapshotId'-       -> Text -- ^ 'vAvailabilityZone'-       -> VolumeState -- ^ 'vState'-       -> UTCTime -- ^ 'vCreateTime'-       -> VolumeType -- ^ 'vVolumeType'-       -> Bool -- ^ 'vEncrypted'-       -> Volume-volume p1 p2 p3 p4 p5 p6 p7 p8 = Volume-    { _vVolumeId         = p1-    , _vSize             = p2-    , _vSnapshotId       = p3-    , _vAvailabilityZone = p4-    , _vState            = p5-    , _vCreateTime       = withIso _Time (const id) p6-    , _vVolumeType       = p7-    , _vEncrypted        = p8-    , _vAttachments      = mempty-    , _vTags             = mempty-    , _vIops             = Nothing-    , _vKmsKeyId         = Nothing-    }--vAttachments :: Lens' Volume [VolumeAttachment]-vAttachments = lens _vAttachments (\s a -> s { _vAttachments = a }) . _List---- | The Availability Zone for the volume.-vAvailabilityZone :: Lens' Volume Text-vAvailabilityZone =-    lens _vAvailabilityZone (\s a -> s { _vAvailabilityZone = a })---- | The time stamp when volume creation was initiated.-vCreateTime :: Lens' Volume UTCTime-vCreateTime = lens _vCreateTime (\s a -> s { _vCreateTime = a }) . _Time---- | Indicates whether the volume will be encrypted.-vEncrypted :: Lens' Volume Bool-vEncrypted = lens _vEncrypted (\s a -> s { _vEncrypted = a })---- | The number of I/O operations per second (IOPS) that the volume supports. For--- Provisioned IOPS (SSD) volumes, this represents the number of IOPS that are--- provisioned for the volume. For General Purpose (SSD) volumes, this--- represents the baseline performance of the volume and the rate at which the--- volume accumulates I/O credits for bursting. For more information on General--- Purpose (SSD) baseline performance, I/O credits, and bursting, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html Amazon EBSVolume Types> in the /Amazon Elastic Compute Cloud User Guide for Linux/.------ Constraint: Range is 100 to 20000 for Provisioned IOPS (SSD) volumes and 3--- to 10000 for General Purpose (SSD) volumes.------ Condition: This parameter is required for requests to create 'io1' volumes; it--- is not used in requests to create 'standard' or 'gp2' volumes.-vIops :: Lens' Volume (Maybe Int)-vIops = lens _vIops (\s a -> s { _vIops = a })---- | The full ARN of the AWS Key Management Service (KMS) master key that was used--- to protect the volume encryption key for the volume.-vKmsKeyId :: Lens' Volume (Maybe Text)-vKmsKeyId = lens _vKmsKeyId (\s a -> s { _vKmsKeyId = a })---- | The size of the volume, in GiBs.-vSize :: Lens' Volume Int-vSize = lens _vSize (\s a -> s { _vSize = a })---- | The snapshot from which the volume was created, if applicable.-vSnapshotId :: Lens' Volume Text-vSnapshotId = lens _vSnapshotId (\s a -> s { _vSnapshotId = a })---- | The volume state.-vState :: Lens' Volume VolumeState-vState = lens _vState (\s a -> s { _vState = a })---- | Any tags assigned to the volume.-vTags :: Lens' Volume [Tag]-vTags = lens _vTags (\s a -> s { _vTags = a }) . _List---- | The ID of the volume.-vVolumeId :: Lens' Volume Text-vVolumeId = lens _vVolumeId (\s a -> s { _vVolumeId = a })---- | The volume type. This can be 'gp2' for General Purpose (SSD) volumes, 'io1' for--- Provisioned IOPS (SSD) volumes, or 'standard' for Magnetic volumes.-vVolumeType :: Lens' Volume VolumeType-vVolumeType = lens _vVolumeType (\s a -> s { _vVolumeType = a })--instance FromXML Volume where-    parseXML x = Volume-        <$> x .@? "attachmentSet" .!@ mempty-        <*> x .@  "availabilityZone"-        <*> x .@  "createTime"-        <*> x .@  "encrypted"-        <*> x .@? "iops"-        <*> x .@? "kmsKeyId"-        <*> x .@  "size"-        <*> x .@  "snapshotId"-        <*> x .@  "status"-        <*> x .@? "tagSet" .!@ mempty-        <*> x .@  "volumeId"-        <*> x .@  "volumeType"--instance ToQuery Volume where-    toQuery Volume{..} = mconcat-        [ "AttachmentSet"    `toQueryList` _vAttachments-        , "AvailabilityZone" =? _vAvailabilityZone-        , "CreateTime"       =? _vCreateTime-        , "Encrypted"        =? _vEncrypted-        , "Iops"             =? _vIops-        , "KmsKeyId"         =? _vKmsKeyId-        , "Size"             =? _vSize-        , "SnapshotId"       =? _vSnapshotId-        , "Status"           =? _vState-        , "TagSet"           `toQueryList` _vTags-        , "VolumeId"         =? _vVolumeId-        , "VolumeType"       =? _vVolumeType-        ]--data Reservation = Reservation-    { _rGroups        :: List "item" GroupIdentifier-    , _rInstances     :: List "item" Instance-    , _rOwnerId       :: Text-    , _rRequesterId   :: Maybe Text-    , _rReservationId :: Text-    } deriving (Eq, Read, Show)---- | 'Reservation' constructor.------ The fields accessible through corresponding lenses are:------ * 'rGroups' @::@ ['GroupIdentifier']------ * 'rInstances' @::@ ['Instance']------ * 'rOwnerId' @::@ 'Text'------ * 'rRequesterId' @::@ 'Maybe' 'Text'------ * 'rReservationId' @::@ 'Text'----reservation :: Text -- ^ 'rReservationId'-            -> Text -- ^ 'rOwnerId'-            -> Reservation-reservation p1 p2 = Reservation-    { _rReservationId = p1-    , _rOwnerId       = p2-    , _rRequesterId   = Nothing-    , _rGroups        = mempty-    , _rInstances     = mempty-    }---- | One or more security groups.-rGroups :: Lens' Reservation [GroupIdentifier]-rGroups = lens _rGroups (\s a -> s { _rGroups = a }) . _List---- | One or more instances.-rInstances :: Lens' Reservation [Instance]-rInstances = lens _rInstances (\s a -> s { _rInstances = a }) . _List---- | The ID of the AWS account that owns the reservation.-rOwnerId :: Lens' Reservation Text-rOwnerId = lens _rOwnerId (\s a -> s { _rOwnerId = a })---- | The ID of the requester that launched the instances on your behalf (for--- example, AWS Management Console or Auto Scaling).-rRequesterId :: Lens' Reservation (Maybe Text)-rRequesterId = lens _rRequesterId (\s a -> s { _rRequesterId = a })---- | The ID of the reservation.-rReservationId :: Lens' Reservation Text-rReservationId = lens _rReservationId (\s a -> s { _rReservationId = a })--instance FromXML Reservation where-    parseXML x = Reservation-        <$> x .@? "groupSet" .!@ mempty-        <*> x .@? "instancesSet" .!@ mempty-        <*> x .@  "ownerId"-        <*> x .@? "requesterId"-        <*> x .@  "reservationId"--instance ToQuery Reservation where-    toQuery Reservation{..} = mconcat-        [ "GroupSet"      `toQueryList` _rGroups-        , "InstancesSet"  `toQueryList` _rInstances-        , "OwnerId"       =? _rOwnerId-        , "RequesterId"   =? _rRequesterId-        , "ReservationId" =? _rReservationId-        ]--data ImportInstanceVolumeDetailItem = ImportInstanceVolumeDetailItem-    { _iivdiAvailabilityZone :: Text-    , _iivdiBytesConverted   :: Integer-    , _iivdiDescription      :: Maybe Text-    , _iivdiImage            :: DiskImageDescription-    , _iivdiStatus           :: Text-    , _iivdiStatusMessage    :: Maybe Text-    , _iivdiVolume           :: DiskImageVolumeDescription-    } deriving (Eq, Read, Show)---- | 'ImportInstanceVolumeDetailItem' constructor.------ The fields accessible through corresponding lenses are:------ * 'iivdiAvailabilityZone' @::@ 'Text'------ * 'iivdiBytesConverted' @::@ 'Integer'------ * 'iivdiDescription' @::@ 'Maybe' 'Text'------ * 'iivdiImage' @::@ 'DiskImageDescription'------ * 'iivdiStatus' @::@ 'Text'------ * 'iivdiStatusMessage' @::@ 'Maybe' 'Text'------ * 'iivdiVolume' @::@ 'DiskImageVolumeDescription'----importInstanceVolumeDetailItem :: Integer -- ^ 'iivdiBytesConverted'-                               -> Text -- ^ 'iivdiAvailabilityZone'-                               -> DiskImageDescription -- ^ 'iivdiImage'-                               -> DiskImageVolumeDescription -- ^ 'iivdiVolume'-                               -> Text -- ^ 'iivdiStatus'-                               -> ImportInstanceVolumeDetailItem-importInstanceVolumeDetailItem p1 p2 p3 p4 p5 = ImportInstanceVolumeDetailItem-    { _iivdiBytesConverted   = p1-    , _iivdiAvailabilityZone = p2-    , _iivdiImage            = p3-    , _iivdiVolume           = p4-    , _iivdiStatus           = p5-    , _iivdiStatusMessage    = Nothing-    , _iivdiDescription      = Nothing-    }---- | The Availability Zone where the resulting instance will reside.-iivdiAvailabilityZone :: Lens' ImportInstanceVolumeDetailItem Text-iivdiAvailabilityZone =-    lens _iivdiAvailabilityZone (\s a -> s { _iivdiAvailabilityZone = a })---- | The number of bytes converted so far.-iivdiBytesConverted :: Lens' ImportInstanceVolumeDetailItem Integer-iivdiBytesConverted =-    lens _iivdiBytesConverted (\s a -> s { _iivdiBytesConverted = a })--iivdiDescription :: Lens' ImportInstanceVolumeDetailItem (Maybe Text)-iivdiDescription = lens _iivdiDescription (\s a -> s { _iivdiDescription = a })---- | The image.-iivdiImage :: Lens' ImportInstanceVolumeDetailItem DiskImageDescription-iivdiImage = lens _iivdiImage (\s a -> s { _iivdiImage = a })---- | The status of the import of this particular disk image.-iivdiStatus :: Lens' ImportInstanceVolumeDetailItem Text-iivdiStatus = lens _iivdiStatus (\s a -> s { _iivdiStatus = a })---- | The status information or errors related to the disk image.-iivdiStatusMessage :: Lens' ImportInstanceVolumeDetailItem (Maybe Text)-iivdiStatusMessage =-    lens _iivdiStatusMessage (\s a -> s { _iivdiStatusMessage = a })---- | The volume.-iivdiVolume :: Lens' ImportInstanceVolumeDetailItem DiskImageVolumeDescription-iivdiVolume = lens _iivdiVolume (\s a -> s { _iivdiVolume = a })--instance FromXML ImportInstanceVolumeDetailItem where-    parseXML x = ImportInstanceVolumeDetailItem-        <$> x .@  "availabilityZone"-        <*> x .@  "bytesConverted"-        <*> x .@? "description"-        <*> x .@  "image"-        <*> x .@  "status"-        <*> x .@? "statusMessage"-        <*> x .@  "volume"--instance ToQuery ImportInstanceVolumeDetailItem where-    toQuery ImportInstanceVolumeDetailItem{..} = mconcat-        [ "AvailabilityZone" =? _iivdiAvailabilityZone-        , "BytesConverted"   =? _iivdiBytesConverted-        , "Description"      =? _iivdiDescription-        , "Image"            =? _iivdiImage-        , "Status"           =? _iivdiStatus-        , "StatusMessage"    =? _iivdiStatusMessage-        , "Volume"           =? _iivdiVolume-        ]--data SummaryStatus-    = SSImpaired         -- ^ impaired-    | SSInsufficientData -- ^ insufficient-data-    | SSNotApplicable    -- ^ not-applicable-    | SSOk               -- ^ ok-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable SummaryStatus--instance FromText SummaryStatus where-    parser = takeLowerText >>= \case-        "impaired"          -> pure SSImpaired-        "insufficient-data" -> pure SSInsufficientData-        "not-applicable"    -> pure SSNotApplicable-        "ok"                -> pure SSOk-        e                   -> fail $-            "Failure parsing SummaryStatus from " ++ show e--instance ToText SummaryStatus where-    toText = \case-        SSImpaired         -> "impaired"-        SSInsufficientData -> "insufficient-data"-        SSNotApplicable    -> "not-applicable"-        SSOk               -> "ok"--instance ToByteString SummaryStatus-instance ToHeader     SummaryStatus-instance ToQuery      SummaryStatus--instance FromXML SummaryStatus where-    parseXML = parseXMLText "SummaryStatus"--data ReservedInstancesModification = ReservedInstancesModification-    { _rimClientToken                     :: Maybe Text-    , _rimCreateDate                      :: Maybe ISO8601-    , _rimEffectiveDate                   :: Maybe ISO8601-    , _rimModificationResults             :: List "item" ReservedInstancesModificationResult-    , _rimReservedInstancesIds            :: List "item" ReservedInstancesId-    , _rimReservedInstancesModificationId :: Maybe Text-    , _rimStatus                          :: Maybe Text-    , _rimStatusMessage                   :: Maybe Text-    , _rimUpdateDate                      :: Maybe ISO8601-    } deriving (Eq, Read, Show)---- | 'ReservedInstancesModification' constructor.------ The fields accessible through corresponding lenses are:------ * 'rimClientToken' @::@ 'Maybe' 'Text'------ * 'rimCreateDate' @::@ 'Maybe' 'UTCTime'------ * 'rimEffectiveDate' @::@ 'Maybe' 'UTCTime'------ * 'rimModificationResults' @::@ ['ReservedInstancesModificationResult']------ * 'rimReservedInstancesIds' @::@ ['ReservedInstancesId']------ * 'rimReservedInstancesModificationId' @::@ 'Maybe' 'Text'------ * 'rimStatus' @::@ 'Maybe' 'Text'------ * 'rimStatusMessage' @::@ 'Maybe' 'Text'------ * 'rimUpdateDate' @::@ 'Maybe' 'UTCTime'----reservedInstancesModification :: ReservedInstancesModification-reservedInstancesModification = ReservedInstancesModification-    { _rimReservedInstancesModificationId = Nothing-    , _rimReservedInstancesIds            = mempty-    , _rimModificationResults             = mempty-    , _rimCreateDate                      = Nothing-    , _rimUpdateDate                      = Nothing-    , _rimEffectiveDate                   = Nothing-    , _rimStatus                          = Nothing-    , _rimStatusMessage                   = Nothing-    , _rimClientToken                     = Nothing-    }---- | A unique, case-sensitive key supplied by the client to ensure that the--- request is idempotent. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html Ensuring Idempotency>.-rimClientToken :: Lens' ReservedInstancesModification (Maybe Text)-rimClientToken = lens _rimClientToken (\s a -> s { _rimClientToken = a })---- | The time when the modification request was created.-rimCreateDate :: Lens' ReservedInstancesModification (Maybe UTCTime)-rimCreateDate = lens _rimCreateDate (\s a -> s { _rimCreateDate = a }) . mapping _Time---- | The time for the modification to become effective.-rimEffectiveDate :: Lens' ReservedInstancesModification (Maybe UTCTime)-rimEffectiveDate = lens _rimEffectiveDate (\s a -> s { _rimEffectiveDate = a }) . mapping _Time---- | Contains target configurations along with their corresponding new Reserved--- Instance IDs.-rimModificationResults :: Lens' ReservedInstancesModification [ReservedInstancesModificationResult]-rimModificationResults =-    lens _rimModificationResults (\s a -> s { _rimModificationResults = a })-        . _List---- | The IDs of one or more Reserved Instances.-rimReservedInstancesIds :: Lens' ReservedInstancesModification [ReservedInstancesId]-rimReservedInstancesIds =-    lens _rimReservedInstancesIds (\s a -> s { _rimReservedInstancesIds = a })-        . _List---- | A unique ID for the Reserved Instance modification.-rimReservedInstancesModificationId :: Lens' ReservedInstancesModification (Maybe Text)-rimReservedInstancesModificationId =-    lens _rimReservedInstancesModificationId-        (\s a -> s { _rimReservedInstancesModificationId = a })---- | The status of the Reserved Instances modification request.-rimStatus :: Lens' ReservedInstancesModification (Maybe Text)-rimStatus = lens _rimStatus (\s a -> s { _rimStatus = a })---- | The reason for the status.-rimStatusMessage :: Lens' ReservedInstancesModification (Maybe Text)-rimStatusMessage = lens _rimStatusMessage (\s a -> s { _rimStatusMessage = a })---- | The time when the modification request was last updated.-rimUpdateDate :: Lens' ReservedInstancesModification (Maybe UTCTime)-rimUpdateDate = lens _rimUpdateDate (\s a -> s { _rimUpdateDate = a }) . mapping _Time--instance FromXML ReservedInstancesModification where-    parseXML x = ReservedInstancesModification-        <$> x .@? "clientToken"-        <*> x .@? "createDate"-        <*> x .@? "effectiveDate"-        <*> x .@? "modificationResultSet" .!@ mempty-        <*> x .@? "reservedInstancesSet" .!@ mempty-        <*> x .@? "reservedInstancesModificationId"-        <*> x .@? "status"-        <*> x .@? "statusMessage"-        <*> x .@? "updateDate"--instance ToQuery ReservedInstancesModification where-    toQuery ReservedInstancesModification{..} = mconcat-        [ "ClientToken"                     =? _rimClientToken-        , "CreateDate"                      =? _rimCreateDate-        , "EffectiveDate"                   =? _rimEffectiveDate-        , "ModificationResultSet"           `toQueryList` _rimModificationResults-        , "ReservedInstancesSet"            `toQueryList` _rimReservedInstancesIds-        , "ReservedInstancesModificationId" =? _rimReservedInstancesModificationId-        , "Status"                          =? _rimStatus-        , "StatusMessage"                   =? _rimStatusMessage-        , "UpdateDate"                      =? _rimUpdateDate-        ]--data RuleAction-    = Allow -- ^ allow-    | Deny  -- ^ deny-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable RuleAction--instance FromText RuleAction where-    parser = takeLowerText >>= \case-        "allow" -> pure Allow-        "deny"  -> pure Deny-        e       -> fail $-            "Failure parsing RuleAction from " ++ show e--instance ToText RuleAction where-    toText = \case-        Allow -> "allow"-        Deny  -> "deny"--instance ToByteString RuleAction-instance ToHeader     RuleAction-instance ToQuery      RuleAction--instance FromXML RuleAction where-    parseXML = parseXMLText "RuleAction"--data NetworkInterface = NetworkInterface-    { _niAssociation        :: Maybe NetworkInterfaceAssociation-    , _niAttachment         :: Maybe NetworkInterfaceAttachment-    , _niAvailabilityZone   :: Maybe Text-    , _niDescription        :: Maybe Text-    , _niGroups             :: List "item" GroupIdentifier-    , _niMacAddress         :: Maybe Text-    , _niNetworkInterfaceId :: Maybe Text-    , _niOwnerId            :: Maybe Text-    , _niPrivateDnsName     :: Maybe Text-    , _niPrivateIpAddress   :: Maybe Text-    , _niPrivateIpAddresses :: List "item" NetworkInterfacePrivateIpAddress-    , _niRequesterId        :: Maybe Text-    , _niRequesterManaged   :: Maybe Bool-    , _niSourceDestCheck    :: Maybe Bool-    , _niStatus             :: Maybe NetworkInterfaceStatus-    , _niSubnetId           :: Maybe Text-    , _niTagSet             :: List "item" Tag-    , _niVpcId              :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'NetworkInterface' constructor.------ The fields accessible through corresponding lenses are:------ * 'niAssociation' @::@ 'Maybe' 'NetworkInterfaceAssociation'------ * 'niAttachment' @::@ 'Maybe' 'NetworkInterfaceAttachment'------ * 'niAvailabilityZone' @::@ 'Maybe' 'Text'------ * 'niDescription' @::@ 'Maybe' 'Text'------ * 'niGroups' @::@ ['GroupIdentifier']------ * 'niMacAddress' @::@ 'Maybe' 'Text'------ * 'niNetworkInterfaceId' @::@ 'Maybe' 'Text'------ * 'niOwnerId' @::@ 'Maybe' 'Text'------ * 'niPrivateDnsName' @::@ 'Maybe' 'Text'------ * 'niPrivateIpAddress' @::@ 'Maybe' 'Text'------ * 'niPrivateIpAddresses' @::@ ['NetworkInterfacePrivateIpAddress']------ * 'niRequesterId' @::@ 'Maybe' 'Text'------ * 'niRequesterManaged' @::@ 'Maybe' 'Bool'------ * 'niSourceDestCheck' @::@ 'Maybe' 'Bool'------ * 'niStatus' @::@ 'Maybe' 'NetworkInterfaceStatus'------ * 'niSubnetId' @::@ 'Maybe' 'Text'------ * 'niTagSet' @::@ ['Tag']------ * 'niVpcId' @::@ 'Maybe' 'Text'----networkInterface :: NetworkInterface-networkInterface = NetworkInterface-    { _niNetworkInterfaceId = Nothing-    , _niSubnetId           = Nothing-    , _niVpcId              = Nothing-    , _niAvailabilityZone   = Nothing-    , _niDescription        = Nothing-    , _niOwnerId            = Nothing-    , _niRequesterId        = Nothing-    , _niRequesterManaged   = Nothing-    , _niStatus             = Nothing-    , _niMacAddress         = Nothing-    , _niPrivateIpAddress   = Nothing-    , _niPrivateDnsName     = Nothing-    , _niSourceDestCheck    = Nothing-    , _niGroups             = mempty-    , _niAttachment         = Nothing-    , _niAssociation        = Nothing-    , _niTagSet             = mempty-    , _niPrivateIpAddresses = mempty-    }---- | The association information for an Elastic IP associated with the network--- interface.-niAssociation :: Lens' NetworkInterface (Maybe NetworkInterfaceAssociation)-niAssociation = lens _niAssociation (\s a -> s { _niAssociation = a })---- | The network interface attachment.-niAttachment :: Lens' NetworkInterface (Maybe NetworkInterfaceAttachment)-niAttachment = lens _niAttachment (\s a -> s { _niAttachment = a })---- | The Availability Zone.-niAvailabilityZone :: Lens' NetworkInterface (Maybe Text)-niAvailabilityZone =-    lens _niAvailabilityZone (\s a -> s { _niAvailabilityZone = a })---- | A description.-niDescription :: Lens' NetworkInterface (Maybe Text)-niDescription = lens _niDescription (\s a -> s { _niDescription = a })---- | Any security groups for the network interface.-niGroups :: Lens' NetworkInterface [GroupIdentifier]-niGroups = lens _niGroups (\s a -> s { _niGroups = a }) . _List---- | The MAC address.-niMacAddress :: Lens' NetworkInterface (Maybe Text)-niMacAddress = lens _niMacAddress (\s a -> s { _niMacAddress = a })---- | The ID of the network interface.-niNetworkInterfaceId :: Lens' NetworkInterface (Maybe Text)-niNetworkInterfaceId =-    lens _niNetworkInterfaceId (\s a -> s { _niNetworkInterfaceId = a })---- | The AWS account ID of the owner of the network interface.-niOwnerId :: Lens' NetworkInterface (Maybe Text)-niOwnerId = lens _niOwnerId (\s a -> s { _niOwnerId = a })---- | The private DNS name.-niPrivateDnsName :: Lens' NetworkInterface (Maybe Text)-niPrivateDnsName = lens _niPrivateDnsName (\s a -> s { _niPrivateDnsName = a })---- | The IP address of the network interface within the subnet.-niPrivateIpAddress :: Lens' NetworkInterface (Maybe Text)-niPrivateIpAddress =-    lens _niPrivateIpAddress (\s a -> s { _niPrivateIpAddress = a })---- | The private IP addresses associated with the network interface.-niPrivateIpAddresses :: Lens' NetworkInterface [NetworkInterfacePrivateIpAddress]-niPrivateIpAddresses =-    lens _niPrivateIpAddresses (\s a -> s { _niPrivateIpAddresses = a })-        . _List---- | The ID of the entity that launched the instance on your behalf (for example,--- AWS Management Console or Auto Scaling).-niRequesterId :: Lens' NetworkInterface (Maybe Text)-niRequesterId = lens _niRequesterId (\s a -> s { _niRequesterId = a })---- | Indicates whether the network interface is being managed by AWS.-niRequesterManaged :: Lens' NetworkInterface (Maybe Bool)-niRequesterManaged =-    lens _niRequesterManaged (\s a -> s { _niRequesterManaged = a })---- | Indicates whether traffic to or from the instance is validated.-niSourceDestCheck :: Lens' NetworkInterface (Maybe Bool)-niSourceDestCheck =-    lens _niSourceDestCheck (\s a -> s { _niSourceDestCheck = a })---- | The status of the network interface.-niStatus :: Lens' NetworkInterface (Maybe NetworkInterfaceStatus)-niStatus = lens _niStatus (\s a -> s { _niStatus = a })---- | The ID of the subnet.-niSubnetId :: Lens' NetworkInterface (Maybe Text)-niSubnetId = lens _niSubnetId (\s a -> s { _niSubnetId = a })---- | Any tags assigned to the network interface.-niTagSet :: Lens' NetworkInterface [Tag]-niTagSet = lens _niTagSet (\s a -> s { _niTagSet = a }) . _List---- | The ID of the VPC.-niVpcId :: Lens' NetworkInterface (Maybe Text)-niVpcId = lens _niVpcId (\s a -> s { _niVpcId = a })--instance FromXML NetworkInterface where-    parseXML x = NetworkInterface-        <$> x .@? "association"-        <*> x .@? "attachment"-        <*> x .@? "availabilityZone"-        <*> x .@? "description"-        <*> x .@? "groupSet" .!@ mempty-        <*> x .@? "macAddress"-        <*> x .@? "networkInterfaceId"-        <*> x .@? "ownerId"-        <*> x .@? "privateDnsName"-        <*> x .@? "privateIpAddress"-        <*> x .@? "privateIpAddressesSet" .!@ mempty-        <*> x .@? "requesterId"-        <*> x .@? "requesterManaged"-        <*> x .@? "sourceDestCheck"-        <*> x .@? "status"-        <*> x .@? "subnetId"-        <*> x .@? "tagSet" .!@ mempty-        <*> x .@? "vpcId"--instance ToQuery NetworkInterface where-    toQuery NetworkInterface{..} = mconcat-        [ "Association"           =? _niAssociation-        , "Attachment"            =? _niAttachment-        , "AvailabilityZone"      =? _niAvailabilityZone-        , "Description"           =? _niDescription-        , "GroupSet"              `toQueryList` _niGroups-        , "MacAddress"            =? _niMacAddress-        , "NetworkInterfaceId"    =? _niNetworkInterfaceId-        , "OwnerId"               =? _niOwnerId-        , "PrivateDnsName"        =? _niPrivateDnsName-        , "PrivateIpAddress"      =? _niPrivateIpAddress-        , "PrivateIpAddressesSet" `toQueryList` _niPrivateIpAddresses-        , "RequesterId"           =? _niRequesterId-        , "RequesterManaged"      =? _niRequesterManaged-        , "SourceDestCheck"       =? _niSourceDestCheck-        , "Status"                =? _niStatus-        , "SubnetId"              =? _niSubnetId-        , "TagSet"                `toQueryList` _niTagSet-        , "VpcId"                 =? _niVpcId-        ]--data TelemetryStatus-    = Down -- ^ DOWN-    | Up   -- ^ UP-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable TelemetryStatus--instance FromText TelemetryStatus where-    parser = takeLowerText >>= \case-        "down" -> pure Down-        "up"   -> pure Up-        e      -> fail $-            "Failure parsing TelemetryStatus from " ++ show e--instance ToText TelemetryStatus where-    toText = \case-        Down -> "DOWN"-        Up   -> "UP"--instance ToByteString TelemetryStatus-instance ToHeader     TelemetryStatus-instance ToQuery      TelemetryStatus--instance FromXML TelemetryStatus where-    parseXML = parseXMLText "TelemetryStatus"--data Subnet = Subnet-    { _s1AvailabilityZone        :: Text-    , _s1AvailableIpAddressCount :: Int-    , _s1CidrBlock               :: Text-    , _s1DefaultForAz            :: Bool-    , _s1MapPublicIpOnLaunch     :: Bool-    , _s1State                   :: SubnetState-    , _s1SubnetId                :: Text-    , _s1Tags                    :: List "item" Tag-    , _s1VpcId                   :: Text-    } deriving (Eq, Read, Show)---- | 'Subnet' constructor.------ The fields accessible through corresponding lenses are:------ * 's1AvailabilityZone' @::@ 'Text'------ * 's1AvailableIpAddressCount' @::@ 'Int'------ * 's1CidrBlock' @::@ 'Text'------ * 's1DefaultForAz' @::@ 'Bool'------ * 's1MapPublicIpOnLaunch' @::@ 'Bool'------ * 's1State' @::@ 'SubnetState'------ * 's1SubnetId' @::@ 'Text'------ * 's1Tags' @::@ ['Tag']------ * 's1VpcId' @::@ 'Text'----subnet :: Text -- ^ 's1SubnetId'-       -> SubnetState -- ^ 's1State'-       -> Text -- ^ 's1VpcId'-       -> Text -- ^ 's1CidrBlock'-       -> Int -- ^ 's1AvailableIpAddressCount'-       -> Text -- ^ 's1AvailabilityZone'-       -> Bool -- ^ 's1DefaultForAz'-       -> Bool -- ^ 's1MapPublicIpOnLaunch'-       -> Subnet-subnet p1 p2 p3 p4 p5 p6 p7 p8 = Subnet-    { _s1SubnetId                = p1-    , _s1State                   = p2-    , _s1VpcId                   = p3-    , _s1CidrBlock               = p4-    , _s1AvailableIpAddressCount = p5-    , _s1AvailabilityZone        = p6-    , _s1DefaultForAz            = p7-    , _s1MapPublicIpOnLaunch     = p8-    , _s1Tags                    = mempty-    }---- | The Availability Zone of the subnet.-s1AvailabilityZone :: Lens' Subnet Text-s1AvailabilityZone =-    lens _s1AvailabilityZone (\s a -> s { _s1AvailabilityZone = a })---- | The number of unused IP addresses in the subnet. Note that the IP addresses--- for any stopped instances are considered unavailable.-s1AvailableIpAddressCount :: Lens' Subnet Int-s1AvailableIpAddressCount =-    lens _s1AvailableIpAddressCount-        (\s a -> s { _s1AvailableIpAddressCount = a })---- | The CIDR block assigned to the subnet.-s1CidrBlock :: Lens' Subnet Text-s1CidrBlock = lens _s1CidrBlock (\s a -> s { _s1CidrBlock = a })---- | Indicates whether this is the default subnet for the Availability Zone.-s1DefaultForAz :: Lens' Subnet Bool-s1DefaultForAz = lens _s1DefaultForAz (\s a -> s { _s1DefaultForAz = a })---- | Indicates whether instances launched in this subnet receive a public IP--- address.-s1MapPublicIpOnLaunch :: Lens' Subnet Bool-s1MapPublicIpOnLaunch =-    lens _s1MapPublicIpOnLaunch (\s a -> s { _s1MapPublicIpOnLaunch = a })---- | The current state of the subnet.-s1State :: Lens' Subnet SubnetState-s1State = lens _s1State (\s a -> s { _s1State = a })---- | The ID of the subnet.-s1SubnetId :: Lens' Subnet Text-s1SubnetId = lens _s1SubnetId (\s a -> s { _s1SubnetId = a })---- | Any tags assigned to the subnet.-s1Tags :: Lens' Subnet [Tag]-s1Tags = lens _s1Tags (\s a -> s { _s1Tags = a }) . _List---- | The ID of the VPC the subnet is in.-s1VpcId :: Lens' Subnet Text-s1VpcId = lens _s1VpcId (\s a -> s { _s1VpcId = a })--instance FromXML Subnet where-    parseXML x = Subnet-        <$> x .@  "availabilityZone"-        <*> x .@  "availableIpAddressCount"-        <*> x .@  "cidrBlock"-        <*> x .@  "defaultForAz"-        <*> x .@  "mapPublicIpOnLaunch"-        <*> x .@  "state"-        <*> x .@  "subnetId"-        <*> x .@? "tagSet" .!@ mempty-        <*> x .@  "vpcId"--instance ToQuery Subnet where-    toQuery Subnet{..} = mconcat-        [ "AvailabilityZone"        =? _s1AvailabilityZone-        , "AvailableIpAddressCount" =? _s1AvailableIpAddressCount-        , "CidrBlock"               =? _s1CidrBlock-        , "DefaultForAz"            =? _s1DefaultForAz-        , "MapPublicIpOnLaunch"     =? _s1MapPublicIpOnLaunch-        , "State"                   =? _s1State-        , "SubnetId"                =? _s1SubnetId-        , "TagSet"                  `toQueryList` _s1Tags-        , "VpcId"                   =? _s1VpcId-        ]--data KeyPairInfo = KeyPairInfo-    { _kpiKeyFingerprint :: Maybe Text-    , _kpiKeyName        :: Maybe Text-    } deriving (Eq, Ord, Read, Show)---- | 'KeyPairInfo' constructor.------ The fields accessible through corresponding lenses are:------ * 'kpiKeyFingerprint' @::@ 'Maybe' 'Text'------ * 'kpiKeyName' @::@ 'Maybe' 'Text'----keyPairInfo :: KeyPairInfo-keyPairInfo = KeyPairInfo-    { _kpiKeyName        = Nothing-    , _kpiKeyFingerprint = Nothing-    }---- | If you used 'CreateKeyPair' to create the key pair, this is the SHA-1 digest of--- the DER encoded private key. If you used 'ImportKeyPair' to provide AWS the--- public key, this is the MD5 public key fingerprint as specified in section 4--- of RFC4716.-kpiKeyFingerprint :: Lens' KeyPairInfo (Maybe Text)-kpiKeyFingerprint =-    lens _kpiKeyFingerprint (\s a -> s { _kpiKeyFingerprint = a })---- | The name of the key pair.-kpiKeyName :: Lens' KeyPairInfo (Maybe Text)-kpiKeyName = lens _kpiKeyName (\s a -> s { _kpiKeyName = a })--instance FromXML KeyPairInfo where-    parseXML x = KeyPairInfo-        <$> x .@? "keyFingerprint"-        <*> x .@? "keyName"--instance ToQuery KeyPairInfo where-    toQuery KeyPairInfo{..} = mconcat-        [ "KeyFingerprint" =? _kpiKeyFingerprint-        , "KeyName"        =? _kpiKeyName-        ]--data LaunchPermissionModifications = LaunchPermissionModifications-    { _lpmAdd    :: List "item" LaunchPermission-    , _lpmRemove :: List "item" LaunchPermission-    } deriving (Eq, Read, Show)---- | 'LaunchPermissionModifications' constructor.------ The fields accessible through corresponding lenses are:------ * 'lpmAdd' @::@ ['LaunchPermission']------ * 'lpmRemove' @::@ ['LaunchPermission']----launchPermissionModifications :: LaunchPermissionModifications-launchPermissionModifications = LaunchPermissionModifications-    { _lpmAdd    = mempty-    , _lpmRemove = mempty-    }---- | The AWS account ID to add to the list of launch permissions for the AMI.-lpmAdd :: Lens' LaunchPermissionModifications [LaunchPermission]-lpmAdd = lens _lpmAdd (\s a -> s { _lpmAdd = a }) . _List---- | The AWS account ID to remove from the list of launch permissions for the AMI.-lpmRemove :: Lens' LaunchPermissionModifications [LaunchPermission]-lpmRemove = lens _lpmRemove (\s a -> s { _lpmRemove = a }) . _List--instance FromXML LaunchPermissionModifications where-    parseXML x = LaunchPermissionModifications-        <$> x .@? "Add" .!@ mempty-        <*> x .@? "Remove" .!@ mempty--instance ToQuery LaunchPermissionModifications where-    toQuery LaunchPermissionModifications{..} = mconcat-        [ "Add"    `toQueryList` _lpmAdd-        , "Remove" `toQueryList` _lpmRemove-        ]--data SnapshotState-    = Completed -- ^ completed-    | Error     -- ^ error-    | Pending   -- ^ pending-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable SnapshotState--instance FromText SnapshotState where-    parser = takeLowerText >>= \case-        "completed" -> pure Completed-        "error"     -> pure Error-        "pending"   -> pure Pending-        e           -> fail $-            "Failure parsing SnapshotState from " ++ show e--instance ToText SnapshotState where-    toText = \case-        Completed -> "completed"-        Error     -> "error"-        Pending   -> "pending"--instance ToByteString SnapshotState-instance ToHeader     SnapshotState-instance ToQuery      SnapshotState--instance FromXML SnapshotState where-    parseXML = parseXMLText "SnapshotState"--data InstanceNetworkInterfaceAssociation = InstanceNetworkInterfaceAssociation-    { _iniaIpOwnerId     :: Maybe Text-    , _iniaPublicDnsName :: Maybe Text-    , _iniaPublicIp      :: Maybe Text-    } deriving (Eq, Ord, Read, Show)---- | 'InstanceNetworkInterfaceAssociation' constructor.------ The fields accessible through corresponding lenses are:------ * 'iniaIpOwnerId' @::@ 'Maybe' 'Text'------ * 'iniaPublicDnsName' @::@ 'Maybe' 'Text'------ * 'iniaPublicIp' @::@ 'Maybe' 'Text'----instanceNetworkInterfaceAssociation :: InstanceNetworkInterfaceAssociation-instanceNetworkInterfaceAssociation = InstanceNetworkInterfaceAssociation-    { _iniaPublicIp      = Nothing-    , _iniaPublicDnsName = Nothing-    , _iniaIpOwnerId     = Nothing-    }---- | The ID of the owner of the Elastic IP address.-iniaIpOwnerId :: Lens' InstanceNetworkInterfaceAssociation (Maybe Text)-iniaIpOwnerId = lens _iniaIpOwnerId (\s a -> s { _iniaIpOwnerId = a })---- | The public DNS name.-iniaPublicDnsName :: Lens' InstanceNetworkInterfaceAssociation (Maybe Text)-iniaPublicDnsName =-    lens _iniaPublicDnsName (\s a -> s { _iniaPublicDnsName = a })---- | The public IP address or Elastic IP address bound to the network interface.-iniaPublicIp :: Lens' InstanceNetworkInterfaceAssociation (Maybe Text)-iniaPublicIp = lens _iniaPublicIp (\s a -> s { _iniaPublicIp = a })--instance FromXML InstanceNetworkInterfaceAssociation where-    parseXML x = InstanceNetworkInterfaceAssociation-        <$> x .@? "ipOwnerId"-        <*> x .@? "publicDnsName"-        <*> x .@? "publicIp"--instance ToQuery InstanceNetworkInterfaceAssociation where-    toQuery InstanceNetworkInterfaceAssociation{..} = mconcat-        [ "IpOwnerId"     =? _iniaIpOwnerId-        , "PublicDnsName" =? _iniaPublicDnsName-        , "PublicIp"      =? _iniaPublicIp-        ]--data DiskImageDetail = DiskImageDetail-    { _didBytes             :: Integer-    , _didFormat            :: DiskImageFormat-    , _didImportManifestUrl :: Text-    } deriving (Eq, Read, Show)---- | 'DiskImageDetail' constructor.------ The fields accessible through corresponding lenses are:------ * 'didBytes' @::@ 'Integer'------ * 'didFormat' @::@ 'DiskImageFormat'------ * 'didImportManifestUrl' @::@ 'Text'----diskImageDetail :: DiskImageFormat -- ^ 'didFormat'-                -> Integer -- ^ 'didBytes'-                -> Text -- ^ 'didImportManifestUrl'-                -> DiskImageDetail-diskImageDetail p1 p2 p3 = DiskImageDetail-    { _didFormat            = p1-    , _didBytes             = p2-    , _didImportManifestUrl = p3-    }--didBytes :: Lens' DiskImageDetail Integer-didBytes = lens _didBytes (\s a -> s { _didBytes = a })---- | The disk image format.-didFormat :: Lens' DiskImageDetail DiskImageFormat-didFormat = lens _didFormat (\s a -> s { _didFormat = a })---- | A presigned URL for the import manifest stored in Amazon S3 and presented--- here as an Amazon S3 presigned URL. For information about creating a--- presigned URL for an Amazon S3 object, read the "Query String Request--- Authentication Alternative" section of the <http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html Authenticating REST Requests> topic--- in the /Amazon Simple Storage Service Developer Guide/.-didImportManifestUrl :: Lens' DiskImageDetail Text-didImportManifestUrl =-    lens _didImportManifestUrl (\s a -> s { _didImportManifestUrl = a })--instance FromXML DiskImageDetail where-    parseXML x = DiskImageDetail-        <$> x .@  "bytes"-        <*> x .@  "format"-        <*> x .@  "importManifestUrl"--instance ToQuery DiskImageDetail where-    toQuery DiskImageDetail{..} = mconcat-        [ "Bytes"             =? _didBytes-        , "Format"            =? _didFormat-        , "ImportManifestUrl" =? _didImportManifestUrl-        ]--data InstancePrivateIpAddress = InstancePrivateIpAddress-    { _ipiaAssociation      :: Maybe InstanceNetworkInterfaceAssociation-    , _ipiaPrimary          :: Maybe Bool-    , _ipiaPrivateDnsName   :: Maybe Text-    , _ipiaPrivateIpAddress :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'InstancePrivateIpAddress' constructor.------ The fields accessible through corresponding lenses are:------ * 'ipiaAssociation' @::@ 'Maybe' 'InstanceNetworkInterfaceAssociation'------ * 'ipiaPrimary' @::@ 'Maybe' 'Bool'------ * 'ipiaPrivateDnsName' @::@ 'Maybe' 'Text'------ * 'ipiaPrivateIpAddress' @::@ 'Maybe' 'Text'----instancePrivateIpAddress :: InstancePrivateIpAddress-instancePrivateIpAddress = InstancePrivateIpAddress-    { _ipiaPrivateIpAddress = Nothing-    , _ipiaPrivateDnsName   = Nothing-    , _ipiaPrimary          = Nothing-    , _ipiaAssociation      = Nothing-    }---- | The association information for an Elastic IP address for the network--- interface.-ipiaAssociation :: Lens' InstancePrivateIpAddress (Maybe InstanceNetworkInterfaceAssociation)-ipiaAssociation = lens _ipiaAssociation (\s a -> s { _ipiaAssociation = a })---- | Indicates whether this IP address is the primary private IP address of the--- network interface.-ipiaPrimary :: Lens' InstancePrivateIpAddress (Maybe Bool)-ipiaPrimary = lens _ipiaPrimary (\s a -> s { _ipiaPrimary = a })---- | The private DNS name.-ipiaPrivateDnsName :: Lens' InstancePrivateIpAddress (Maybe Text)-ipiaPrivateDnsName =-    lens _ipiaPrivateDnsName (\s a -> s { _ipiaPrivateDnsName = a })---- | The private IP address of the network interface.-ipiaPrivateIpAddress :: Lens' InstancePrivateIpAddress (Maybe Text)-ipiaPrivateIpAddress =-    lens _ipiaPrivateIpAddress (\s a -> s { _ipiaPrivateIpAddress = a })--instance FromXML InstancePrivateIpAddress where-    parseXML x = InstancePrivateIpAddress-        <$> x .@? "association"-        <*> x .@? "primary"-        <*> x .@? "privateDnsName"-        <*> x .@? "privateIpAddress"--instance ToQuery InstancePrivateIpAddress where-    toQuery InstancePrivateIpAddress{..} = mconcat-        [ "Association"      =? _ipiaAssociation-        , "Primary"          =? _ipiaPrimary-        , "PrivateDnsName"   =? _ipiaPrivateDnsName-        , "PrivateIpAddress" =? _ipiaPrivateIpAddress-        ]--data CancelledSpotInstanceRequest = CancelledSpotInstanceRequest-    { _csiSpotInstanceRequestId :: Maybe Text-    , _csiState                 :: Maybe CancelSpotInstanceRequestState-    } deriving (Eq, Read, Show)---- | 'CancelledSpotInstanceRequest' constructor.------ The fields accessible through corresponding lenses are:------ * 'csiSpotInstanceRequestId' @::@ 'Maybe' 'Text'------ * 'csiState' @::@ 'Maybe' 'CancelSpotInstanceRequestState'----cancelledSpotInstanceRequest :: CancelledSpotInstanceRequest-cancelledSpotInstanceRequest = CancelledSpotInstanceRequest-    { _csiSpotInstanceRequestId = Nothing-    , _csiState                 = Nothing-    }---- | The ID of the Spot Instance request.-csiSpotInstanceRequestId :: Lens' CancelledSpotInstanceRequest (Maybe Text)-csiSpotInstanceRequestId =-    lens _csiSpotInstanceRequestId-        (\s a -> s { _csiSpotInstanceRequestId = a })---- | The state of the Spot Instance request.-csiState :: Lens' CancelledSpotInstanceRequest (Maybe CancelSpotInstanceRequestState)-csiState = lens _csiState (\s a -> s { _csiState = a })--instance FromXML CancelledSpotInstanceRequest where-    parseXML x = CancelledSpotInstanceRequest-        <$> x .@? "spotInstanceRequestId"-        <*> x .@? "state"--instance ToQuery CancelledSpotInstanceRequest where-    toQuery CancelledSpotInstanceRequest{..} = mconcat-        [ "SpotInstanceRequestId" =? _csiSpotInstanceRequestId-        , "State"                 =? _csiState-        ]--newtype VpnConnectionOptionsSpecification = VpnConnectionOptionsSpecification-    { _vcosStaticRoutesOnly :: Maybe Bool-    } deriving (Eq, Ord, Read, Show)---- | 'VpnConnectionOptionsSpecification' constructor.------ The fields accessible through corresponding lenses are:------ * 'vcosStaticRoutesOnly' @::@ 'Maybe' 'Bool'----vpnConnectionOptionsSpecification :: VpnConnectionOptionsSpecification-vpnConnectionOptionsSpecification = VpnConnectionOptionsSpecification-    { _vcosStaticRoutesOnly = Nothing-    }---- | Indicates whether the VPN connection uses static routes only. Static routes--- must be used for devices that don't support BGP.-vcosStaticRoutesOnly :: Lens' VpnConnectionOptionsSpecification (Maybe Bool)-vcosStaticRoutesOnly =-    lens _vcosStaticRoutesOnly (\s a -> s { _vcosStaticRoutesOnly = a })--instance FromXML VpnConnectionOptionsSpecification where-    parseXML x = VpnConnectionOptionsSpecification-        <$> x .@? "staticRoutesOnly"--instance ToQuery VpnConnectionOptionsSpecification where-    toQuery VpnConnectionOptionsSpecification{..} = mconcat-        [ "StaticRoutesOnly" =? _vcosStaticRoutesOnly-        ]--data Address = Address-    { _aAllocationId            :: Maybe Text-    , _aAssociationId           :: Maybe Text-    , _aDomain                  :: Maybe DomainType-    , _aInstanceId              :: Maybe Text-    , _aNetworkInterfaceId      :: Maybe Text-    , _aNetworkInterfaceOwnerId :: Maybe Text-    , _aPrivateIpAddress        :: Maybe Text-    , _aPublicIp                :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'Address' constructor.------ The fields accessible through corresponding lenses are:------ * 'aAllocationId' @::@ 'Maybe' 'Text'------ * 'aAssociationId' @::@ 'Maybe' 'Text'------ * 'aDomain' @::@ 'Maybe' 'DomainType'------ * 'aInstanceId' @::@ 'Maybe' 'Text'------ * 'aNetworkInterfaceId' @::@ 'Maybe' 'Text'------ * 'aNetworkInterfaceOwnerId' @::@ 'Maybe' 'Text'------ * 'aPrivateIpAddress' @::@ 'Maybe' 'Text'------ * 'aPublicIp' @::@ 'Maybe' 'Text'----address :: Address-address = Address-    { _aInstanceId              = Nothing-    , _aPublicIp                = Nothing-    , _aAllocationId            = Nothing-    , _aAssociationId           = Nothing-    , _aDomain                  = Nothing-    , _aNetworkInterfaceId      = Nothing-    , _aNetworkInterfaceOwnerId = Nothing-    , _aPrivateIpAddress        = Nothing-    }---- | The ID representing the allocation of the address for use with EC2-VPC.-aAllocationId :: Lens' Address (Maybe Text)-aAllocationId = lens _aAllocationId (\s a -> s { _aAllocationId = a })---- | The ID representing the association of the address with an instance in a VPC.-aAssociationId :: Lens' Address (Maybe Text)-aAssociationId = lens _aAssociationId (\s a -> s { _aAssociationId = a })---- | Indicates whether this Elastic IP address is for use with instances in--- EC2-Classic ('standard') or instances in a VPC ('vpc').-aDomain :: Lens' Address (Maybe DomainType)-aDomain = lens _aDomain (\s a -> s { _aDomain = a })---- | The ID of the instance the address is associated with (if any).-aInstanceId :: Lens' Address (Maybe Text)-aInstanceId = lens _aInstanceId (\s a -> s { _aInstanceId = a })---- | The ID of the network interface.-aNetworkInterfaceId :: Lens' Address (Maybe Text)-aNetworkInterfaceId =-    lens _aNetworkInterfaceId (\s a -> s { _aNetworkInterfaceId = a })---- | The ID of the AWS account that owns the network interface.-aNetworkInterfaceOwnerId :: Lens' Address (Maybe Text)-aNetworkInterfaceOwnerId =-    lens _aNetworkInterfaceOwnerId-        (\s a -> s { _aNetworkInterfaceOwnerId = a })---- | The private IP address associated with the Elastic IP address.-aPrivateIpAddress :: Lens' Address (Maybe Text)-aPrivateIpAddress =-    lens _aPrivateIpAddress (\s a -> s { _aPrivateIpAddress = a })---- | The Elastic IP address.-aPublicIp :: Lens' Address (Maybe Text)-aPublicIp = lens _aPublicIp (\s a -> s { _aPublicIp = a })--instance FromXML Address where-    parseXML x = Address-        <$> x .@? "allocationId"-        <*> x .@? "associationId"-        <*> x .@? "domain"-        <*> x .@? "instanceId"-        <*> x .@? "networkInterfaceId"-        <*> x .@? "networkInterfaceOwnerId"-        <*> x .@? "privateIpAddress"-        <*> x .@? "publicIp"--instance ToQuery Address where-    toQuery Address{..} = mconcat-        [ "AllocationId"            =? _aAllocationId-        , "AssociationId"           =? _aAssociationId-        , "Domain"                  =? _aDomain-        , "InstanceId"              =? _aInstanceId-        , "NetworkInterfaceId"      =? _aNetworkInterfaceId-        , "NetworkInterfaceOwnerId" =? _aNetworkInterfaceOwnerId-        , "PrivateIpAddress"        =? _aPrivateIpAddress-        , "PublicIp"                =? _aPublicIp-        ]--data VolumeAttachmentState-    = VASAttached  -- ^ attached-    | VASAttaching -- ^ attaching-    | VASDetached  -- ^ detached-    | VASDetaching -- ^ detaching-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable VolumeAttachmentState--instance FromText VolumeAttachmentState where-    parser = takeLowerText >>= \case-        "attached"  -> pure VASAttached-        "attaching" -> pure VASAttaching-        "detached"  -> pure VASDetached-        "detaching" -> pure VASDetaching-        e           -> fail $-            "Failure parsing VolumeAttachmentState from " ++ show e--instance ToText VolumeAttachmentState where-    toText = \case-        VASAttached  -> "attached"-        VASAttaching -> "attaching"-        VASDetached  -> "detached"-        VASDetaching -> "detaching"--instance ToByteString VolumeAttachmentState-instance ToHeader     VolumeAttachmentState-instance ToQuery      VolumeAttachmentState--instance FromXML VolumeAttachmentState where-    parseXML = parseXMLText "VolumeAttachmentState"--data LaunchPermission = LaunchPermission-    { _lpGroup  :: Maybe PermissionGroup-    , _lpUserId :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'LaunchPermission' constructor.------ The fields accessible through corresponding lenses are:------ * 'lpGroup' @::@ 'Maybe' 'PermissionGroup'------ * 'lpUserId' @::@ 'Maybe' 'Text'----launchPermission :: LaunchPermission-launchPermission = LaunchPermission-    { _lpUserId = Nothing-    , _lpGroup  = Nothing-    }---- | The name of the group.-lpGroup :: Lens' LaunchPermission (Maybe PermissionGroup)-lpGroup = lens _lpGroup (\s a -> s { _lpGroup = a })---- | The AWS account ID.-lpUserId :: Lens' LaunchPermission (Maybe Text)-lpUserId = lens _lpUserId (\s a -> s { _lpUserId = a })--instance FromXML LaunchPermission where-    parseXML x = LaunchPermission-        <$> x .@? "group"-        <*> x .@? "userId"--instance ToQuery LaunchPermission where-    toQuery LaunchPermission{..} = mconcat-        [ "Group"  =? _lpGroup-        , "UserId" =? _lpUserId-        ]--data RouteState-    = Active    -- ^ active-    | Blackhole -- ^ blackhole-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable RouteState--instance FromText RouteState where-    parser = takeLowerText >>= \case-        "active"    -> pure Active-        "blackhole" -> pure Blackhole-        e           -> fail $-            "Failure parsing RouteState from " ++ show e--instance ToText RouteState where-    toText = \case-        Active    -> "active"-        Blackhole -> "blackhole"--instance ToByteString RouteState-instance ToHeader     RouteState-instance ToQuery      RouteState--instance FromXML RouteState where-    parseXML = parseXMLText "RouteState"--data RouteTableAssociation = RouteTableAssociation-    { _rtaMain                    :: Maybe Bool-    , _rtaRouteTableAssociationId :: Maybe Text-    , _rtaRouteTableId            :: Maybe Text-    , _rtaSubnetId                :: Maybe Text-    } deriving (Eq, Ord, Read, Show)---- | 'RouteTableAssociation' constructor.------ The fields accessible through corresponding lenses are:------ * 'rtaMain' @::@ 'Maybe' 'Bool'------ * 'rtaRouteTableAssociationId' @::@ 'Maybe' 'Text'------ * 'rtaRouteTableId' @::@ 'Maybe' 'Text'------ * 'rtaSubnetId' @::@ 'Maybe' 'Text'----routeTableAssociation :: RouteTableAssociation-routeTableAssociation = RouteTableAssociation-    { _rtaRouteTableAssociationId = Nothing-    , _rtaRouteTableId            = Nothing-    , _rtaSubnetId                = Nothing-    , _rtaMain                    = Nothing-    }---- | Indicates whether this is the main route table.-rtaMain :: Lens' RouteTableAssociation (Maybe Bool)-rtaMain = lens _rtaMain (\s a -> s { _rtaMain = a })---- | The ID of the association between a route table and a subnet.-rtaRouteTableAssociationId :: Lens' RouteTableAssociation (Maybe Text)-rtaRouteTableAssociationId =-    lens _rtaRouteTableAssociationId-        (\s a -> s { _rtaRouteTableAssociationId = a })---- | The ID of the route table.-rtaRouteTableId :: Lens' RouteTableAssociation (Maybe Text)-rtaRouteTableId = lens _rtaRouteTableId (\s a -> s { _rtaRouteTableId = a })---- | The ID of the subnet.-rtaSubnetId :: Lens' RouteTableAssociation (Maybe Text)-rtaSubnetId = lens _rtaSubnetId (\s a -> s { _rtaSubnetId = a })--instance FromXML RouteTableAssociation where-    parseXML x = RouteTableAssociation-        <$> x .@? "main"-        <*> x .@? "routeTableAssociationId"-        <*> x .@? "routeTableId"-        <*> x .@? "subnetId"--instance ToQuery RouteTableAssociation where-    toQuery RouteTableAssociation{..} = mconcat-        [ "Main"                    =? _rtaMain-        , "RouteTableAssociationId" =? _rtaRouteTableAssociationId-        , "RouteTableId"            =? _rtaRouteTableId-        , "SubnetId"                =? _rtaSubnetId-        ]--data BundleTaskState-    = BTSBundling           -- ^ bundling-    | BTSCancelling         -- ^ cancelling-    | BTSComplete           -- ^ complete-    | BTSFailed             -- ^ failed-    | BTSPending            -- ^ pending-    | BTSStoring            -- ^ storing-    | BTSWaitingForShutdown -- ^ waiting-for-shutdown-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable BundleTaskState--instance FromText BundleTaskState where-    parser = takeLowerText >>= \case-        "bundling"             -> pure BTSBundling-        "cancelling"           -> pure BTSCancelling-        "complete"             -> pure BTSComplete-        "failed"               -> pure BTSFailed-        "pending"              -> pure BTSPending-        "storing"              -> pure BTSStoring-        "waiting-for-shutdown" -> pure BTSWaitingForShutdown-        e                      -> fail $-            "Failure parsing BundleTaskState from " ++ show e--instance ToText BundleTaskState where-    toText = \case-        BTSBundling           -> "bundling"-        BTSCancelling         -> "cancelling"-        BTSComplete           -> "complete"-        BTSFailed             -> "failed"-        BTSPending            -> "pending"-        BTSStoring            -> "storing"-        BTSWaitingForShutdown -> "waiting-for-shutdown"--instance ToByteString BundleTaskState-instance ToHeader     BundleTaskState-instance ToQuery      BundleTaskState--instance FromXML BundleTaskState where-    parseXML = parseXMLText "BundleTaskState"--data PortRange = PortRange-    { _prFrom :: Maybe Int-    , _prTo   :: Maybe Int-    } deriving (Eq, Ord, Read, Show)---- | 'PortRange' constructor.------ The fields accessible through corresponding lenses are:------ * 'prFrom' @::@ 'Maybe' 'Int'------ * 'prTo' @::@ 'Maybe' 'Int'----portRange :: PortRange-portRange = PortRange-    { _prFrom = Nothing-    , _prTo   = Nothing-    }---- | The first port in the range.-prFrom :: Lens' PortRange (Maybe Int)-prFrom = lens _prFrom (\s a -> s { _prFrom = a })---- | The last port in the range.-prTo :: Lens' PortRange (Maybe Int)-prTo = lens _prTo (\s a -> s { _prTo = a })--instance FromXML PortRange where-    parseXML x = PortRange-        <$> x .@? "from"-        <*> x .@? "to"--instance ToQuery PortRange where-    toQuery PortRange{..} = mconcat-        [ "From" =? _prFrom-        , "To"   =? _prTo-        ]--data VpcAttributeName-    = EnableDnsHostnames -- ^ enableDnsHostnames-    | EnableDnsSupport   -- ^ enableDnsSupport-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable VpcAttributeName--instance FromText VpcAttributeName where-    parser = takeLowerText >>= \case-        "enablednshostnames" -> pure EnableDnsHostnames-        "enablednssupport"   -> pure EnableDnsSupport-        e                    -> fail $-            "Failure parsing VpcAttributeName from " ++ show e--instance ToText VpcAttributeName where-    toText = \case-        EnableDnsHostnames -> "enableDnsHostnames"-        EnableDnsSupport   -> "enableDnsSupport"--instance ToByteString VpcAttributeName-instance ToHeader     VpcAttributeName-instance ToQuery      VpcAttributeName--instance FromXML VpcAttributeName where-    parseXML = parseXMLText "VpcAttributeName"--data ReservedInstancesConfiguration = ReservedInstancesConfiguration-    { _ricAvailabilityZone :: Maybe Text-    , _ricInstanceCount    :: Maybe Int-    , _ricInstanceType     :: Maybe InstanceType-    , _ricPlatform         :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'ReservedInstancesConfiguration' constructor.------ The fields accessible through corresponding lenses are:------ * 'ricAvailabilityZone' @::@ 'Maybe' 'Text'------ * 'ricInstanceCount' @::@ 'Maybe' 'Int'------ * 'ricInstanceType' @::@ 'Maybe' 'InstanceType'------ * 'ricPlatform' @::@ 'Maybe' 'Text'----reservedInstancesConfiguration :: ReservedInstancesConfiguration-reservedInstancesConfiguration = ReservedInstancesConfiguration-    { _ricAvailabilityZone = Nothing-    , _ricPlatform         = Nothing-    , _ricInstanceCount    = Nothing-    , _ricInstanceType     = Nothing-    }---- | The Availability Zone for the modified Reserved Instances.-ricAvailabilityZone :: Lens' ReservedInstancesConfiguration (Maybe Text)-ricAvailabilityZone =-    lens _ricAvailabilityZone (\s a -> s { _ricAvailabilityZone = a })---- | The number of modified Reserved Instances.-ricInstanceCount :: Lens' ReservedInstancesConfiguration (Maybe Int)-ricInstanceCount = lens _ricInstanceCount (\s a -> s { _ricInstanceCount = a })---- | The instance type for the modified Reserved Instances.-ricInstanceType :: Lens' ReservedInstancesConfiguration (Maybe InstanceType)-ricInstanceType = lens _ricInstanceType (\s a -> s { _ricInstanceType = a })---- | The network platform of the modified Reserved Instances, which is either--- EC2-Classic or EC2-VPC.-ricPlatform :: Lens' ReservedInstancesConfiguration (Maybe Text)-ricPlatform = lens _ricPlatform (\s a -> s { _ricPlatform = a })--instance FromXML ReservedInstancesConfiguration where-    parseXML x = ReservedInstancesConfiguration-        <$> x .@? "availabilityZone"-        <*> x .@? "instanceCount"-        <*> x .@? "instanceType"-        <*> x .@? "platform"--instance ToQuery ReservedInstancesConfiguration where-    toQuery ReservedInstancesConfiguration{..} = mconcat-        [ "AvailabilityZone" =? _ricAvailabilityZone-        , "InstanceCount"    =? _ricInstanceCount-        , "InstanceType"     =? _ricInstanceType-        , "Platform"         =? _ricPlatform-        ]--data VolumeStatusDetails = VolumeStatusDetails-    { _vsdName   :: Maybe VolumeStatusName-    , _vsdStatus :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'VolumeStatusDetails' constructor.------ The fields accessible through corresponding lenses are:------ * 'vsdName' @::@ 'Maybe' 'VolumeStatusName'------ * 'vsdStatus' @::@ 'Maybe' 'Text'----volumeStatusDetails :: VolumeStatusDetails-volumeStatusDetails = VolumeStatusDetails-    { _vsdName   = Nothing-    , _vsdStatus = Nothing-    }---- | The name of the volume status.-vsdName :: Lens' VolumeStatusDetails (Maybe VolumeStatusName)-vsdName = lens _vsdName (\s a -> s { _vsdName = a })---- | The intended status of the volume status.-vsdStatus :: Lens' VolumeStatusDetails (Maybe Text)-vsdStatus = lens _vsdStatus (\s a -> s { _vsdStatus = a })--instance FromXML VolumeStatusDetails where-    parseXML x = VolumeStatusDetails-        <$> x .@? "name"-        <*> x .@? "status"--instance ToQuery VolumeStatusDetails where-    toQuery VolumeStatusDetails{..} = mconcat-        [ "Name"   =? _vsdName-        , "Status" =? _vsdStatus-        ]--data SpotInstanceState-    = SISActive    -- ^ active-    | SISCancelled -- ^ cancelled-    | SISClosed    -- ^ closed-    | SISFailed    -- ^ failed-    | SISOpen      -- ^ open-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable SpotInstanceState--instance FromText SpotInstanceState where-    parser = takeLowerText >>= \case-        "active"    -> pure SISActive-        "cancelled" -> pure SISCancelled-        "closed"    -> pure SISClosed-        "failed"    -> pure SISFailed-        "open"      -> pure SISOpen-        e           -> fail $-            "Failure parsing SpotInstanceState from " ++ show e--instance ToText SpotInstanceState where-    toText = \case-        SISActive    -> "active"-        SISCancelled -> "cancelled"-        SISClosed    -> "closed"-        SISFailed    -> "failed"-        SISOpen      -> "open"--instance ToByteString SpotInstanceState-instance ToHeader     SpotInstanceState-instance ToQuery      SpotInstanceState--instance FromXML SpotInstanceState where-    parseXML = parseXMLText "SpotInstanceState"--newtype VpnConnectionOptions = VpnConnectionOptions-    { _vcoStaticRoutesOnly :: Maybe Bool-    } deriving (Eq, Ord, Read, Show)---- | 'VpnConnectionOptions' constructor.------ The fields accessible through corresponding lenses are:------ * 'vcoStaticRoutesOnly' @::@ 'Maybe' 'Bool'----vpnConnectionOptions :: VpnConnectionOptions-vpnConnectionOptions = VpnConnectionOptions-    { _vcoStaticRoutesOnly = Nothing-    }---- | Indicates whether the VPN connection uses static routes only. Static routes--- must be used for devices that don't support BGP.-vcoStaticRoutesOnly :: Lens' VpnConnectionOptions (Maybe Bool)-vcoStaticRoutesOnly =-    lens _vcoStaticRoutesOnly (\s a -> s { _vcoStaticRoutesOnly = a })--instance FromXML VpnConnectionOptions where-    parseXML x = VpnConnectionOptions-        <$> x .@? "staticRoutesOnly"--instance ToQuery VpnConnectionOptions where-    toQuery VpnConnectionOptions{..} = mconcat-        [ "StaticRoutesOnly" =? _vcoStaticRoutesOnly-        ]--data UserIdGroupPair = UserIdGroupPair-    { _uigpGroupId   :: Maybe Text-    , _uigpGroupName :: Maybe Text-    , _uigpUserId    :: Maybe Text-    } deriving (Eq, Ord, Read, Show)---- | 'UserIdGroupPair' constructor.------ The fields accessible through corresponding lenses are:------ * 'uigpGroupId' @::@ 'Maybe' 'Text'------ * 'uigpGroupName' @::@ 'Maybe' 'Text'------ * 'uigpUserId' @::@ 'Maybe' 'Text'----userIdGroupPair :: UserIdGroupPair-userIdGroupPair = UserIdGroupPair-    { _uigpUserId    = Nothing-    , _uigpGroupName = Nothing-    , _uigpGroupId   = Nothing-    }---- | The ID of the security group.-uigpGroupId :: Lens' UserIdGroupPair (Maybe Text)-uigpGroupId = lens _uigpGroupId (\s a -> s { _uigpGroupId = a })---- | The name of the security group. In a request, use this parameter for a--- security group in EC2-Classic or a default VPC only. For a security group in--- a nondefault VPC, use 'GroupId'.-uigpGroupName :: Lens' UserIdGroupPair (Maybe Text)-uigpGroupName = lens _uigpGroupName (\s a -> s { _uigpGroupName = a })---- | The ID of an AWS account. EC2-Classic only.-uigpUserId :: Lens' UserIdGroupPair (Maybe Text)-uigpUserId = lens _uigpUserId (\s a -> s { _uigpUserId = a })--instance FromXML UserIdGroupPair where-    parseXML x = UserIdGroupPair-        <$> x .@? "groupId"-        <*> x .@? "groupName"-        <*> x .@? "userId"--instance ToQuery UserIdGroupPair where-    toQuery UserIdGroupPair{..} = mconcat-        [ "GroupId"   =? _uigpGroupId-        , "GroupName" =? _uigpGroupName-        , "UserId"    =? _uigpUserId-        ]--data InstanceStatusSummary = InstanceStatusSummary-    { _issDetails :: List "item" InstanceStatusDetails-    , _issStatus  :: Maybe SummaryStatus-    } deriving (Eq, Read, Show)---- | 'InstanceStatusSummary' constructor.------ The fields accessible through corresponding lenses are:------ * 'issDetails' @::@ ['InstanceStatusDetails']------ * 'issStatus' @::@ 'Maybe' 'SummaryStatus'----instanceStatusSummary :: InstanceStatusSummary-instanceStatusSummary = InstanceStatusSummary-    { _issStatus  = Nothing-    , _issDetails = mempty-    }---- | The system instance health or application instance health.-issDetails :: Lens' InstanceStatusSummary [InstanceStatusDetails]-issDetails = lens _issDetails (\s a -> s { _issDetails = a }) . _List---- | The status.-issStatus :: Lens' InstanceStatusSummary (Maybe SummaryStatus)-issStatus = lens _issStatus (\s a -> s { _issStatus = a })--instance FromXML InstanceStatusSummary where-    parseXML x = InstanceStatusSummary-        <$> x .@? "details" .!@ mempty-        <*> x .@? "status"--instance ToQuery InstanceStatusSummary where-    toQuery InstanceStatusSummary{..} = mconcat-        [ "Details" `toQueryList` _issDetails-        , "Status"  =? _issStatus-        ]--data SpotPlacement = SpotPlacement-    { _sp1AvailabilityZone :: Maybe Text-    , _sp1GroupName        :: Maybe Text-    } deriving (Eq, Ord, Read, Show)---- | 'SpotPlacement' constructor.------ The fields accessible through corresponding lenses are:------ * 'sp1AvailabilityZone' @::@ 'Maybe' 'Text'------ * 'sp1GroupName' @::@ 'Maybe' 'Text'----spotPlacement :: SpotPlacement-spotPlacement = SpotPlacement-    { _sp1AvailabilityZone = Nothing-    , _sp1GroupName        = Nothing-    }---- | The Availability Zone.-sp1AvailabilityZone :: Lens' SpotPlacement (Maybe Text)-sp1AvailabilityZone =-    lens _sp1AvailabilityZone (\s a -> s { _sp1AvailabilityZone = a })---- | The name of the placement group (for cluster instances).-sp1GroupName :: Lens' SpotPlacement (Maybe Text)-sp1GroupName = lens _sp1GroupName (\s a -> s { _sp1GroupName = a })--instance FromXML SpotPlacement where-    parseXML x = SpotPlacement-        <$> x .@? "availabilityZone"-        <*> x .@? "groupName"--instance ToQuery SpotPlacement where-    toQuery SpotPlacement{..} = mconcat-        [ "AvailabilityZone" =? _sp1AvailabilityZone-        , "GroupName"        =? _sp1GroupName-        ]--data EbsInstanceBlockDeviceSpecification = EbsInstanceBlockDeviceSpecification-    { _eibdsDeleteOnTermination :: Maybe Bool-    , _eibdsVolumeId            :: Maybe Text-    } deriving (Eq, Ord, Read, Show)---- | 'EbsInstanceBlockDeviceSpecification' constructor.------ The fields accessible through corresponding lenses are:------ * 'eibdsDeleteOnTermination' @::@ 'Maybe' 'Bool'------ * 'eibdsVolumeId' @::@ 'Maybe' 'Text'----ebsInstanceBlockDeviceSpecification :: EbsInstanceBlockDeviceSpecification-ebsInstanceBlockDeviceSpecification = EbsInstanceBlockDeviceSpecification-    { _eibdsVolumeId            = Nothing-    , _eibdsDeleteOnTermination = Nothing-    }---- | Indicates whether the volume is deleted on instance termination.-eibdsDeleteOnTermination :: Lens' EbsInstanceBlockDeviceSpecification (Maybe Bool)-eibdsDeleteOnTermination =-    lens _eibdsDeleteOnTermination-        (\s a -> s { _eibdsDeleteOnTermination = a })---- | The ID of the Amazon EBS volume.-eibdsVolumeId :: Lens' EbsInstanceBlockDeviceSpecification (Maybe Text)-eibdsVolumeId = lens _eibdsVolumeId (\s a -> s { _eibdsVolumeId = a })--instance FromXML EbsInstanceBlockDeviceSpecification where-    parseXML x = EbsInstanceBlockDeviceSpecification-        <$> x .@? "deleteOnTermination"-        <*> x .@? "volumeId"--instance ToQuery EbsInstanceBlockDeviceSpecification where-    toQuery EbsInstanceBlockDeviceSpecification{..} = mconcat-        [ "DeleteOnTermination" =? _eibdsDeleteOnTermination-        , "VolumeId"            =? _eibdsVolumeId-        ]--data NetworkAclAssociation = NetworkAclAssociation-    { _naaNetworkAclAssociationId :: Maybe Text-    , _naaNetworkAclId            :: Maybe Text-    , _naaSubnetId                :: Maybe Text-    } deriving (Eq, Ord, Read, Show)---- | 'NetworkAclAssociation' constructor.------ The fields accessible through corresponding lenses are:------ * 'naaNetworkAclAssociationId' @::@ 'Maybe' 'Text'------ * 'naaNetworkAclId' @::@ 'Maybe' 'Text'------ * 'naaSubnetId' @::@ 'Maybe' 'Text'----networkAclAssociation :: NetworkAclAssociation-networkAclAssociation = NetworkAclAssociation-    { _naaNetworkAclAssociationId = Nothing-    , _naaNetworkAclId            = Nothing-    , _naaSubnetId                = Nothing-    }---- | The ID of the association between a network ACL and a subnet.-naaNetworkAclAssociationId :: Lens' NetworkAclAssociation (Maybe Text)-naaNetworkAclAssociationId =-    lens _naaNetworkAclAssociationId-        (\s a -> s { _naaNetworkAclAssociationId = a })---- | The ID of the network ACL.-naaNetworkAclId :: Lens' NetworkAclAssociation (Maybe Text)-naaNetworkAclId = lens _naaNetworkAclId (\s a -> s { _naaNetworkAclId = a })---- | The ID of the subnet.-naaSubnetId :: Lens' NetworkAclAssociation (Maybe Text)-naaSubnetId = lens _naaSubnetId (\s a -> s { _naaSubnetId = a })--instance FromXML NetworkAclAssociation where-    parseXML x = NetworkAclAssociation-        <$> x .@? "networkAclAssociationId"-        <*> x .@? "networkAclId"-        <*> x .@? "subnetId"--instance ToQuery NetworkAclAssociation where-    toQuery NetworkAclAssociation{..} = mconcat-        [ "NetworkAclAssociationId" =? _naaNetworkAclAssociationId-        , "NetworkAclId"            =? _naaNetworkAclId-        , "SubnetId"                =? _naaSubnetId-        ]--data BundleTask = BundleTask-    { _btBundleId        :: Text-    , _btBundleTaskError :: Maybe BundleTaskError-    , _btInstanceId      :: Text-    , _btProgress        :: Text-    , _btStartTime       :: ISO8601-    , _btState           :: BundleTaskState-    , _btStorage         :: Storage-    , _btUpdateTime      :: ISO8601-    } deriving (Eq, Read, Show)---- | 'BundleTask' constructor.------ The fields accessible through corresponding lenses are:------ * 'btBundleId' @::@ 'Text'------ * 'btBundleTaskError' @::@ 'Maybe' 'BundleTaskError'------ * 'btInstanceId' @::@ 'Text'------ * 'btProgress' @::@ 'Text'------ * 'btStartTime' @::@ 'UTCTime'------ * 'btState' @::@ 'BundleTaskState'------ * 'btStorage' @::@ 'Storage'------ * 'btUpdateTime' @::@ 'UTCTime'----bundleTask :: Text -- ^ 'btInstanceId'-           -> Text -- ^ 'btBundleId'-           -> BundleTaskState -- ^ 'btState'-           -> UTCTime -- ^ 'btStartTime'-           -> UTCTime -- ^ 'btUpdateTime'-           -> Storage -- ^ 'btStorage'-           -> Text -- ^ 'btProgress'-           -> BundleTask-bundleTask p1 p2 p3 p4 p5 p6 p7 = BundleTask-    { _btInstanceId      = p1-    , _btBundleId        = p2-    , _btState           = p3-    , _btStartTime       = withIso _Time (const id) p4-    , _btUpdateTime      = withIso _Time (const id) p5-    , _btStorage         = p6-    , _btProgress        = p7-    , _btBundleTaskError = Nothing-    }---- | The ID of the bundle task.-btBundleId :: Lens' BundleTask Text-btBundleId = lens _btBundleId (\s a -> s { _btBundleId = a })---- | If the task fails, a description of the error.-btBundleTaskError :: Lens' BundleTask (Maybe BundleTaskError)-btBundleTaskError =-    lens _btBundleTaskError (\s a -> s { _btBundleTaskError = a })---- | The ID of the instance associated with this bundle task.-btInstanceId :: Lens' BundleTask Text-btInstanceId = lens _btInstanceId (\s a -> s { _btInstanceId = a })---- | The level of task completion, as a percent (for example, 20%).-btProgress :: Lens' BundleTask Text-btProgress = lens _btProgress (\s a -> s { _btProgress = a })---- | The time this task started.-btStartTime :: Lens' BundleTask UTCTime-btStartTime = lens _btStartTime (\s a -> s { _btStartTime = a }) . _Time---- | The state of the task.-btState :: Lens' BundleTask BundleTaskState-btState = lens _btState (\s a -> s { _btState = a })---- | The Amazon S3 storage locations.-btStorage :: Lens' BundleTask Storage-btStorage = lens _btStorage (\s a -> s { _btStorage = a })---- | The time of the most recent update for the task.-btUpdateTime :: Lens' BundleTask UTCTime-btUpdateTime = lens _btUpdateTime (\s a -> s { _btUpdateTime = a }) . _Time--instance FromXML BundleTask where-    parseXML x = BundleTask-        <$> x .@  "bundleId"-        <*> x .@? "error"-        <*> x .@  "instanceId"-        <*> x .@  "progress"-        <*> x .@  "startTime"-        <*> x .@  "state"-        <*> x .@  "storage"-        <*> x .@  "updateTime"--instance ToQuery BundleTask where-    toQuery BundleTask{..} = mconcat-        [ "BundleId"   =? _btBundleId-        , "Error"      =? _btBundleTaskError-        , "InstanceId" =? _btInstanceId-        , "Progress"   =? _btProgress-        , "StartTime"  =? _btStartTime-        , "State"      =? _btState-        , "Storage"    =? _btStorage-        , "UpdateTime" =? _btUpdateTime-        ]--data InstanceStatusEvent = InstanceStatusEvent-    { _iseCode        :: Maybe EventCode-    , _iseDescription :: Maybe Text-    , _iseNotAfter    :: Maybe ISO8601-    , _iseNotBefore   :: Maybe ISO8601-    } deriving (Eq, Read, Show)---- | 'InstanceStatusEvent' constructor.------ The fields accessible through corresponding lenses are:------ * 'iseCode' @::@ 'Maybe' 'EventCode'------ * 'iseDescription' @::@ 'Maybe' 'Text'------ * 'iseNotAfter' @::@ 'Maybe' 'UTCTime'------ * 'iseNotBefore' @::@ 'Maybe' 'UTCTime'----instanceStatusEvent :: InstanceStatusEvent-instanceStatusEvent = InstanceStatusEvent-    { _iseCode        = Nothing-    , _iseDescription = Nothing-    , _iseNotBefore   = Nothing-    , _iseNotAfter    = Nothing-    }---- | The associated code of the event.-iseCode :: Lens' InstanceStatusEvent (Maybe EventCode)-iseCode = lens _iseCode (\s a -> s { _iseCode = a })---- | A description of the event.-iseDescription :: Lens' InstanceStatusEvent (Maybe Text)-iseDescription = lens _iseDescription (\s a -> s { _iseDescription = a })---- | The latest scheduled end time for the event.-iseNotAfter :: Lens' InstanceStatusEvent (Maybe UTCTime)-iseNotAfter = lens _iseNotAfter (\s a -> s { _iseNotAfter = a }) . mapping _Time---- | The earliest scheduled start time for the event.-iseNotBefore :: Lens' InstanceStatusEvent (Maybe UTCTime)-iseNotBefore = lens _iseNotBefore (\s a -> s { _iseNotBefore = a }) . mapping _Time--instance FromXML InstanceStatusEvent where-    parseXML x = InstanceStatusEvent-        <$> x .@? "code"-        <*> x .@? "description"-        <*> x .@? "notAfter"-        <*> x .@? "notBefore"--instance ToQuery InstanceStatusEvent where-    toQuery InstanceStatusEvent{..} = mconcat-        [ "Code"        =? _iseCode-        , "Description" =? _iseDescription-        , "NotAfter"    =? _iseNotAfter-        , "NotBefore"   =? _iseNotBefore-        ]--data InstanceType-    = C1_Medium   -- ^ c1.medium-    | C1_XLarge   -- ^ c1.xlarge-    | C3_2XLarge  -- ^ c3.2xlarge-    | C3_4XLarge  -- ^ c3.4xlarge-    | C3_8XLarge  -- ^ c3.8xlarge-    | C3_Large    -- ^ c3.large-    | C3_XLarge   -- ^ c3.xlarge-    | C4_2XLarge  -- ^ c4.2xlarge-    | C4_4XLarge  -- ^ c4.4xlarge-    | C4_8XLarge  -- ^ c4.8xlarge-    | C4_Large    -- ^ c4.large-    | C4_XLarge   -- ^ c4.xlarge-    | CC1_4XLarge -- ^ cc1.4xlarge-    | CC2_8XLarge -- ^ cc2.8xlarge-    | CG1_4XLarge -- ^ cg1.4xlarge-    | CR1_8XLarge -- ^ cr1.8xlarge-    | D2_2XLarge  -- ^ d2.2xlarge-    | D2_4XLarge  -- ^ d2.4xlarge-    | D2_8XLarge  -- ^ d2.8xlarge-    | D2_XLarge   -- ^ d2.xlarge-    | G2_2XLarge  -- ^ g2.2xlarge-    | HI1_4XLarge -- ^ hi1.4xlarge-    | HS1_8XLarge -- ^ hs1.8xlarge-    | I2_2XLarge  -- ^ i2.2xlarge-    | I2_4XLarge  -- ^ i2.4xlarge-    | I2_8XLarge  -- ^ i2.8xlarge-    | I2_XLarge   -- ^ i2.xlarge-    | M1_Large    -- ^ m1.large-    | M1_Medium   -- ^ m1.medium-    | M1_Small    -- ^ m1.small-    | M1_XLarge   -- ^ m1.xlarge-    | M2_2XLarge  -- ^ m2.2xlarge-    | M2_4XLarge  -- ^ m2.4xlarge-    | M2_XLarge   -- ^ m2.xlarge-    | M3_2XLarge  -- ^ m3.2xlarge-    | M3_Large    -- ^ m3.large-    | M3_Medium   -- ^ m3.medium-    | M3_XLarge   -- ^ m3.xlarge-    | R3_2XLarge  -- ^ r3.2xlarge-    | R3_4XLarge  -- ^ r3.4xlarge-    | R3_8XLarge  -- ^ r3.8xlarge-    | R3_Large    -- ^ r3.large-    | R3_XLarge   -- ^ r3.xlarge-    | T1_Micro    -- ^ t1.micro-    | T2_Medium   -- ^ t2.medium-    | T2_Micro    -- ^ t2.micro-    | T2_Small    -- ^ t2.small-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable InstanceType--instance FromText InstanceType where-    parser = takeLowerText >>= \case-        "c1.medium"   -> pure C1_Medium-        "c1.xlarge"   -> pure C1_XLarge-        "c3.2xlarge"  -> pure C3_2XLarge-        "c3.4xlarge"  -> pure C3_4XLarge-        "c3.8xlarge"  -> pure C3_8XLarge-        "c3.large"    -> pure C3_Large-        "c3.xlarge"   -> pure C3_XLarge-        "c4.2xlarge"  -> pure C4_2XLarge-        "c4.4xlarge"  -> pure C4_4XLarge-        "c4.8xlarge"  -> pure C4_8XLarge-        "c4.large"    -> pure C4_Large-        "c4.xlarge"   -> pure C4_XLarge-        "cc1.4xlarge" -> pure CC1_4XLarge-        "cc2.8xlarge" -> pure CC2_8XLarge-        "cg1.4xlarge" -> pure CG1_4XLarge-        "cr1.8xlarge" -> pure CR1_8XLarge-        "d2.2xlarge"  -> pure D2_2XLarge-        "d2.4xlarge"  -> pure D2_4XLarge-        "d2.8xlarge"  -> pure D2_8XLarge-        "d2.xlarge"   -> pure D2_XLarge-        "g2.2xlarge"  -> pure G2_2XLarge-        "hi1.4xlarge" -> pure HI1_4XLarge-        "hs1.8xlarge" -> pure HS1_8XLarge-        "i2.2xlarge"  -> pure I2_2XLarge-        "i2.4xlarge"  -> pure I2_4XLarge-        "i2.8xlarge"  -> pure I2_8XLarge-        "i2.xlarge"   -> pure I2_XLarge-        "m1.large"    -> pure M1_Large-        "m1.medium"   -> pure M1_Medium-        "m1.small"    -> pure M1_Small-        "m1.xlarge"   -> pure M1_XLarge-        "m2.2xlarge"  -> pure M2_2XLarge-        "m2.4xlarge"  -> pure M2_4XLarge-        "m2.xlarge"   -> pure M2_XLarge-        "m3.2xlarge"  -> pure M3_2XLarge-        "m3.large"    -> pure M3_Large-        "m3.medium"   -> pure M3_Medium-        "m3.xlarge"   -> pure M3_XLarge-        "r3.2xlarge"  -> pure R3_2XLarge-        "r3.4xlarge"  -> pure R3_4XLarge-        "r3.8xlarge"  -> pure R3_8XLarge-        "r3.large"    -> pure R3_Large-        "r3.xlarge"   -> pure R3_XLarge-        "t1.micro"    -> pure T1_Micro-        "t2.medium"   -> pure T2_Medium-        "t2.micro"    -> pure T2_Micro-        "t2.small"    -> pure T2_Small-        e             -> fail $-            "Failure parsing InstanceType from " ++ show e--instance ToText InstanceType where-    toText = \case-        C1_Medium   -> "c1.medium"-        C1_XLarge   -> "c1.xlarge"-        C3_2XLarge  -> "c3.2xlarge"-        C3_4XLarge  -> "c3.4xlarge"-        C3_8XLarge  -> "c3.8xlarge"-        C3_Large    -> "c3.large"-        C3_XLarge   -> "c3.xlarge"-        C4_2XLarge  -> "c4.2xlarge"-        C4_4XLarge  -> "c4.4xlarge"-        C4_8XLarge  -> "c4.8xlarge"-        C4_Large    -> "c4.large"-        C4_XLarge   -> "c4.xlarge"-        CC1_4XLarge -> "cc1.4xlarge"-        CC2_8XLarge -> "cc2.8xlarge"-        CG1_4XLarge -> "cg1.4xlarge"-        CR1_8XLarge -> "cr1.8xlarge"-        D2_2XLarge  -> "d2.2xlarge"-        D2_4XLarge  -> "d2.4xlarge"-        D2_8XLarge  -> "d2.8xlarge"-        D2_XLarge   -> "d2.xlarge"-        G2_2XLarge  -> "g2.2xlarge"-        HI1_4XLarge -> "hi1.4xlarge"-        HS1_8XLarge -> "hs1.8xlarge"-        I2_2XLarge  -> "i2.2xlarge"-        I2_4XLarge  -> "i2.4xlarge"-        I2_8XLarge  -> "i2.8xlarge"-        I2_XLarge   -> "i2.xlarge"-        M1_Large    -> "m1.large"-        M1_Medium   -> "m1.medium"-        M1_Small    -> "m1.small"-        M1_XLarge   -> "m1.xlarge"-        M2_2XLarge  -> "m2.2xlarge"-        M2_4XLarge  -> "m2.4xlarge"-        M2_XLarge   -> "m2.xlarge"-        M3_2XLarge  -> "m3.2xlarge"-        M3_Large    -> "m3.large"-        M3_Medium   -> "m3.medium"-        M3_XLarge   -> "m3.xlarge"-        R3_2XLarge  -> "r3.2xlarge"-        R3_4XLarge  -> "r3.4xlarge"-        R3_8XLarge  -> "r3.8xlarge"-        R3_Large    -> "r3.large"-        R3_XLarge   -> "r3.xlarge"-        T1_Micro    -> "t1.micro"-        T2_Medium   -> "t2.medium"-        T2_Micro    -> "t2.micro"-        T2_Small    -> "t2.small"--instance ToByteString InstanceType-instance ToHeader     InstanceType-instance ToQuery      InstanceType--instance FromXML InstanceType where-    parseXML = parseXMLText "InstanceType"--data Route = Route-    { _rDestinationCidrBlock   :: Maybe Text-    , _rGatewayId              :: Maybe Text-    , _rInstanceId             :: Maybe Text-    , _rInstanceOwnerId        :: Maybe Text-    , _rNetworkInterfaceId     :: Maybe Text-    , _rOrigin                 :: Maybe RouteOrigin-    , _rState                  :: Maybe RouteState-    , _rVpcPeeringConnectionId :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'Route' constructor.------ The fields accessible through corresponding lenses are:------ * 'rDestinationCidrBlock' @::@ 'Maybe' 'Text'------ * 'rGatewayId' @::@ 'Maybe' 'Text'------ * 'rInstanceId' @::@ 'Maybe' 'Text'------ * 'rInstanceOwnerId' @::@ 'Maybe' 'Text'------ * 'rNetworkInterfaceId' @::@ 'Maybe' 'Text'------ * 'rOrigin' @::@ 'Maybe' 'RouteOrigin'------ * 'rState' @::@ 'Maybe' 'RouteState'------ * 'rVpcPeeringConnectionId' @::@ 'Maybe' 'Text'----route :: Route-route = Route-    { _rDestinationCidrBlock   = Nothing-    , _rGatewayId              = Nothing-    , _rInstanceId             = Nothing-    , _rInstanceOwnerId        = Nothing-    , _rNetworkInterfaceId     = Nothing-    , _rVpcPeeringConnectionId = Nothing-    , _rState                  = Nothing-    , _rOrigin                 = Nothing-    }---- | The CIDR block used for the destination match.-rDestinationCidrBlock :: Lens' Route (Maybe Text)-rDestinationCidrBlock =-    lens _rDestinationCidrBlock (\s a -> s { _rDestinationCidrBlock = a })---- | The ID of a gateway attached to your VPC.-rGatewayId :: Lens' Route (Maybe Text)-rGatewayId = lens _rGatewayId (\s a -> s { _rGatewayId = a })---- | The ID of a NAT instance in your VPC.-rInstanceId :: Lens' Route (Maybe Text)-rInstanceId = lens _rInstanceId (\s a -> s { _rInstanceId = a })---- | The AWS account ID of the owner of the instance.-rInstanceOwnerId :: Lens' Route (Maybe Text)-rInstanceOwnerId = lens _rInstanceOwnerId (\s a -> s { _rInstanceOwnerId = a })---- | The ID of the network interface.-rNetworkInterfaceId :: Lens' Route (Maybe Text)-rNetworkInterfaceId =-    lens _rNetworkInterfaceId (\s a -> s { _rNetworkInterfaceId = a })---- | Describes how the route was created.------ 'CreateRouteTable' indicates that route was automatically created when the--- route table was created.  'CreateRoute' indicates that the route was manually--- added to the route table.  'EnableVgwRoutePropagation' indicates that the route--- was propagated by route propagation.-rOrigin :: Lens' Route (Maybe RouteOrigin)-rOrigin = lens _rOrigin (\s a -> s { _rOrigin = a })---- | The state of the route. The 'blackhole' state indicates that the route's target--- isn't available (for example, the specified gateway isn't attached to the--- VPC, or the specified NAT instance has been terminated).-rState :: Lens' Route (Maybe RouteState)-rState = lens _rState (\s a -> s { _rState = a })---- | The ID of the VPC peering connection.-rVpcPeeringConnectionId :: Lens' Route (Maybe Text)-rVpcPeeringConnectionId =-    lens _rVpcPeeringConnectionId (\s a -> s { _rVpcPeeringConnectionId = a })--instance FromXML Route where-    parseXML x = Route-        <$> x .@? "destinationCidrBlock"-        <*> x .@? "gatewayId"-        <*> x .@? "instanceId"-        <*> x .@? "instanceOwnerId"-        <*> x .@? "networkInterfaceId"-        <*> x .@? "origin"-        <*> x .@? "state"-        <*> x .@? "vpcPeeringConnectionId"--instance ToQuery Route where-    toQuery Route{..} = mconcat-        [ "DestinationCidrBlock"   =? _rDestinationCidrBlock-        , "GatewayId"              =? _rGatewayId-        , "InstanceId"             =? _rInstanceId-        , "InstanceOwnerId"        =? _rInstanceOwnerId-        , "NetworkInterfaceId"     =? _rNetworkInterfaceId-        , "Origin"                 =? _rOrigin-        , "State"                  =? _rState-        , "VpcPeeringConnectionId" =? _rVpcPeeringConnectionId-        ]--data SpotDatafeedSubscription = SpotDatafeedSubscription-    { _sdsBucket  :: Maybe Text-    , _sdsFault   :: Maybe SpotInstanceStateFault-    , _sdsOwnerId :: Maybe Text-    , _sdsPrefix  :: Maybe Text-    , _sdsState   :: Maybe DatafeedSubscriptionState-    } deriving (Eq, Read, Show)---- | 'SpotDatafeedSubscription' constructor.------ The fields accessible through corresponding lenses are:------ * 'sdsBucket' @::@ 'Maybe' 'Text'------ * 'sdsFault' @::@ 'Maybe' 'SpotInstanceStateFault'------ * 'sdsOwnerId' @::@ 'Maybe' 'Text'------ * 'sdsPrefix' @::@ 'Maybe' 'Text'------ * 'sdsState' @::@ 'Maybe' 'DatafeedSubscriptionState'----spotDatafeedSubscription :: SpotDatafeedSubscription-spotDatafeedSubscription = SpotDatafeedSubscription-    { _sdsOwnerId = Nothing-    , _sdsBucket  = Nothing-    , _sdsPrefix  = Nothing-    , _sdsState   = Nothing-    , _sdsFault   = Nothing-    }---- | The Amazon S3 bucket where the Spot Instance data feed is located.-sdsBucket :: Lens' SpotDatafeedSubscription (Maybe Text)-sdsBucket = lens _sdsBucket (\s a -> s { _sdsBucket = a })---- | The fault codes for the Spot Instance request, if any.-sdsFault :: Lens' SpotDatafeedSubscription (Maybe SpotInstanceStateFault)-sdsFault = lens _sdsFault (\s a -> s { _sdsFault = a })---- | The AWS account ID of the account.-sdsOwnerId :: Lens' SpotDatafeedSubscription (Maybe Text)-sdsOwnerId = lens _sdsOwnerId (\s a -> s { _sdsOwnerId = a })---- | The prefix that is prepended to data feed files.-sdsPrefix :: Lens' SpotDatafeedSubscription (Maybe Text)-sdsPrefix = lens _sdsPrefix (\s a -> s { _sdsPrefix = a })---- | The state of the Spot Instance data feed subscription.-sdsState :: Lens' SpotDatafeedSubscription (Maybe DatafeedSubscriptionState)-sdsState = lens _sdsState (\s a -> s { _sdsState = a })--instance FromXML SpotDatafeedSubscription where-    parseXML x = SpotDatafeedSubscription-        <$> x .@? "bucket"-        <*> x .@? "fault"-        <*> x .@? "ownerId"-        <*> x .@? "prefix"-        <*> x .@? "state"--instance ToQuery SpotDatafeedSubscription where-    toQuery SpotDatafeedSubscription{..} = mconcat-        [ "Bucket"  =? _sdsBucket-        , "Fault"   =? _sdsFault-        , "OwnerId" =? _sdsOwnerId-        , "Prefix"  =? _sdsPrefix-        , "State"   =? _sdsState-        ]--newtype Storage = Storage-    { _sS3 :: Maybe S3Storage-    } deriving (Eq, Read, Show)---- | 'Storage' constructor.------ The fields accessible through corresponding lenses are:------ * 'sS3' @::@ 'Maybe' 'S3Storage'----storage :: Storage-storage = Storage-    { _sS3 = Nothing-    }---- | An Amazon S3 storage location.-sS3 :: Lens' Storage (Maybe S3Storage)-sS3 = lens _sS3 (\s a -> s { _sS3 = a })--instance FromXML Storage where-    parseXML x = Storage-        <$> x .@? "S3"--instance ToQuery Storage where-    toQuery Storage{..} = mconcat-        [ "S3" =? _sS3-        ]--data SecurityGroup = SecurityGroup-    { _sgDescription         :: Text-    , _sgGroupId             :: Text-    , _sgGroupName           :: Text-    , _sgIpPermissions       :: List "item" IpPermission-    , _sgIpPermissionsEgress :: List "item" IpPermission-    , _sgOwnerId             :: Text-    , _sgTags                :: List "item" Tag-    , _sgVpcId               :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'SecurityGroup' constructor.------ The fields accessible through corresponding lenses are:------ * 'sgDescription' @::@ 'Text'------ * 'sgGroupId' @::@ 'Text'------ * 'sgGroupName' @::@ 'Text'------ * 'sgIpPermissions' @::@ ['IpPermission']------ * 'sgIpPermissionsEgress' @::@ ['IpPermission']------ * 'sgOwnerId' @::@ 'Text'------ * 'sgTags' @::@ ['Tag']------ * 'sgVpcId' @::@ 'Maybe' 'Text'----securityGroup :: Text -- ^ 'sgOwnerId'-              -> Text -- ^ 'sgGroupName'-              -> Text -- ^ 'sgGroupId'-              -> Text -- ^ 'sgDescription'-              -> SecurityGroup-securityGroup p1 p2 p3 p4 = SecurityGroup-    { _sgOwnerId             = p1-    , _sgGroupName           = p2-    , _sgGroupId             = p3-    , _sgDescription         = p4-    , _sgIpPermissions       = mempty-    , _sgIpPermissionsEgress = mempty-    , _sgVpcId               = Nothing-    , _sgTags                = mempty-    }---- | A description of the security group.-sgDescription :: Lens' SecurityGroup Text-sgDescription = lens _sgDescription (\s a -> s { _sgDescription = a })---- | The ID of the security group.-sgGroupId :: Lens' SecurityGroup Text-sgGroupId = lens _sgGroupId (\s a -> s { _sgGroupId = a })---- | The name of the security group.-sgGroupName :: Lens' SecurityGroup Text-sgGroupName = lens _sgGroupName (\s a -> s { _sgGroupName = a })---- | One or more inbound rules associated with the security group.-sgIpPermissions :: Lens' SecurityGroup [IpPermission]-sgIpPermissions = lens _sgIpPermissions (\s a -> s { _sgIpPermissions = a }) . _List---- | [EC2-VPC] One or more outbound rules associated with the security group.-sgIpPermissionsEgress :: Lens' SecurityGroup [IpPermission]-sgIpPermissionsEgress =-    lens _sgIpPermissionsEgress (\s a -> s { _sgIpPermissionsEgress = a })-        . _List---- | The AWS account ID of the owner of the security group.-sgOwnerId :: Lens' SecurityGroup Text-sgOwnerId = lens _sgOwnerId (\s a -> s { _sgOwnerId = a })---- | Any tags assigned to the security group.-sgTags :: Lens' SecurityGroup [Tag]-sgTags = lens _sgTags (\s a -> s { _sgTags = a }) . _List---- | [EC2-VPC] The ID of the VPC for the security group.-sgVpcId :: Lens' SecurityGroup (Maybe Text)-sgVpcId = lens _sgVpcId (\s a -> s { _sgVpcId = a })--instance FromXML SecurityGroup where-    parseXML x = SecurityGroup-        <$> x .@  "groupDescription"-        <*> x .@  "groupId"-        <*> x .@  "groupName"-        <*> x .@? "ipPermissions" .!@ mempty-        <*> x .@? "ipPermissionsEgress" .!@ mempty-        <*> x .@  "ownerId"-        <*> x .@? "tagSet" .!@ mempty-        <*> x .@? "vpcId"--instance ToQuery SecurityGroup where-    toQuery SecurityGroup{..} = mconcat-        [ "GroupDescription"    =? _sgDescription-        , "GroupId"             =? _sgGroupId-        , "GroupName"           =? _sgGroupName-        , "IpPermissions"       `toQueryList` _sgIpPermissions-        , "IpPermissionsEgress" `toQueryList` _sgIpPermissionsEgress-        , "OwnerId"             =? _sgOwnerId-        , "TagSet"              `toQueryList` _sgTags-        , "VpcId"               =? _sgVpcId-        ]--data CancelSpotInstanceRequestState-    = CSIRSActive    -- ^ active-    | CSIRSCancelled -- ^ cancelled-    | CSIRSClosed    -- ^ closed-    | CSIRSCompleted -- ^ completed-    | CSIRSOpen      -- ^ open-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable CancelSpotInstanceRequestState--instance FromText CancelSpotInstanceRequestState where-    parser = takeLowerText >>= \case-        "active"    -> pure CSIRSActive-        "cancelled" -> pure CSIRSCancelled-        "closed"    -> pure CSIRSClosed-        "completed" -> pure CSIRSCompleted-        "open"      -> pure CSIRSOpen-        e           -> fail $-            "Failure parsing CancelSpotInstanceRequestState from " ++ show e--instance ToText CancelSpotInstanceRequestState where-    toText = \case-        CSIRSActive    -> "active"-        CSIRSCancelled -> "cancelled"-        CSIRSClosed    -> "closed"-        CSIRSCompleted -> "completed"-        CSIRSOpen      -> "open"--instance ToByteString CancelSpotInstanceRequestState-instance ToHeader     CancelSpotInstanceRequestState-instance ToQuery      CancelSpotInstanceRequestState--instance FromXML CancelSpotInstanceRequestState where-    parseXML = parseXMLText "CancelSpotInstanceRequestState"--data PlacementGroupState-    = PGSAvailable -- ^ available-    | PGSDeleted   -- ^ deleted-    | PGSDeleting  -- ^ deleting-    | PGSPending   -- ^ pending-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable PlacementGroupState--instance FromText PlacementGroupState where-    parser = takeLowerText >>= \case-        "available" -> pure PGSAvailable-        "deleted"   -> pure PGSDeleted-        "deleting"  -> pure PGSDeleting-        "pending"   -> pure PGSPending-        e           -> fail $-            "Failure parsing PlacementGroupState from " ++ show e--instance ToText PlacementGroupState where-    toText = \case-        PGSAvailable -> "available"-        PGSDeleted   -> "deleted"-        PGSDeleting  -> "deleting"-        PGSPending   -> "pending"--instance ToByteString PlacementGroupState-instance ToHeader     PlacementGroupState-instance ToQuery      PlacementGroupState--instance FromXML PlacementGroupState where-    parseXML = parseXMLText "PlacementGroupState"--data ReservedInstancesModificationResult = ReservedInstancesModificationResult-    { _rimrReservedInstancesId :: Maybe Text-    , _rimrTargetConfiguration :: Maybe ReservedInstancesConfiguration-    } deriving (Eq, Read, Show)---- | 'ReservedInstancesModificationResult' constructor.------ The fields accessible through corresponding lenses are:------ * 'rimrReservedInstancesId' @::@ 'Maybe' 'Text'------ * 'rimrTargetConfiguration' @::@ 'Maybe' 'ReservedInstancesConfiguration'----reservedInstancesModificationResult :: ReservedInstancesModificationResult-reservedInstancesModificationResult = ReservedInstancesModificationResult-    { _rimrReservedInstancesId = Nothing-    , _rimrTargetConfiguration = Nothing-    }---- | The ID for the Reserved Instances that were created as part of the--- modification request. This field is only available when the modification is--- fulfilled.-rimrReservedInstancesId :: Lens' ReservedInstancesModificationResult (Maybe Text)-rimrReservedInstancesId =-    lens _rimrReservedInstancesId (\s a -> s { _rimrReservedInstancesId = a })---- | The target Reserved Instances configurations supplied as part of the--- modification request.-rimrTargetConfiguration :: Lens' ReservedInstancesModificationResult (Maybe ReservedInstancesConfiguration)-rimrTargetConfiguration =-    lens _rimrTargetConfiguration (\s a -> s { _rimrTargetConfiguration = a })--instance FromXML ReservedInstancesModificationResult where-    parseXML x = ReservedInstancesModificationResult-        <$> x .@? "reservedInstancesId"-        <*> x .@? "targetConfiguration"--instance ToQuery ReservedInstancesModificationResult where-    toQuery ReservedInstancesModificationResult{..} = mconcat-        [ "ReservedInstancesId" =? _rimrReservedInstancesId-        , "TargetConfiguration" =? _rimrTargetConfiguration-        ]--data InstanceBlockDeviceMappingSpecification = InstanceBlockDeviceMappingSpecification-    { _ibdmsDeviceName  :: Maybe Text-    , _ibdmsEbs         :: Maybe EbsInstanceBlockDeviceSpecification-    , _ibdmsNoDevice    :: Maybe Text-    , _ibdmsVirtualName :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'InstanceBlockDeviceMappingSpecification' constructor.------ The fields accessible through corresponding lenses are:------ * 'ibdmsDeviceName' @::@ 'Maybe' 'Text'------ * 'ibdmsEbs' @::@ 'Maybe' 'EbsInstanceBlockDeviceSpecification'------ * 'ibdmsNoDevice' @::@ 'Maybe' 'Text'------ * 'ibdmsVirtualName' @::@ 'Maybe' 'Text'----instanceBlockDeviceMappingSpecification :: InstanceBlockDeviceMappingSpecification-instanceBlockDeviceMappingSpecification = InstanceBlockDeviceMappingSpecification-    { _ibdmsDeviceName  = Nothing-    , _ibdmsEbs         = Nothing-    , _ibdmsVirtualName = Nothing-    , _ibdmsNoDevice    = Nothing-    }---- | The device name exposed to the instance (for example, '/dev/sdh' or 'xvdh').-ibdmsDeviceName :: Lens' InstanceBlockDeviceMappingSpecification (Maybe Text)-ibdmsDeviceName = lens _ibdmsDeviceName (\s a -> s { _ibdmsDeviceName = a })---- | Parameters used to automatically set up Amazon EBS volumes when the instance--- is launched.-ibdmsEbs :: Lens' InstanceBlockDeviceMappingSpecification (Maybe EbsInstanceBlockDeviceSpecification)-ibdmsEbs = lens _ibdmsEbs (\s a -> s { _ibdmsEbs = a })---- | suppress the specified device included in the block device mapping.-ibdmsNoDevice :: Lens' InstanceBlockDeviceMappingSpecification (Maybe Text)-ibdmsNoDevice = lens _ibdmsNoDevice (\s a -> s { _ibdmsNoDevice = a })---- | The virtual device name.-ibdmsVirtualName :: Lens' InstanceBlockDeviceMappingSpecification (Maybe Text)-ibdmsVirtualName = lens _ibdmsVirtualName (\s a -> s { _ibdmsVirtualName = a })--instance FromXML InstanceBlockDeviceMappingSpecification where-    parseXML x = InstanceBlockDeviceMappingSpecification-        <$> x .@? "deviceName"-        <*> x .@? "ebs"-        <*> x .@? "noDevice"-        <*> x .@? "virtualName"--instance ToQuery InstanceBlockDeviceMappingSpecification where-    toQuery InstanceBlockDeviceMappingSpecification{..} = mconcat-        [ "DeviceName"  =? _ibdmsDeviceName-        , "Ebs"         =? _ibdmsEbs-        , "NoDevice"    =? _ibdmsNoDevice-        , "VirtualName" =? _ibdmsVirtualName-        ]--data ExportEnvironment-    = Citrix    -- ^ citrix-    | Microsoft -- ^ microsoft-    | Vmware    -- ^ vmware-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable ExportEnvironment--instance FromText ExportEnvironment where-    parser = takeLowerText >>= \case-        "citrix"    -> pure Citrix-        "microsoft" -> pure Microsoft-        "vmware"    -> pure Vmware-        e           -> fail $-            "Failure parsing ExportEnvironment from " ++ show e--instance ToText ExportEnvironment where-    toText = \case-        Citrix    -> "citrix"-        Microsoft -> "microsoft"-        Vmware    -> "vmware"--instance ToByteString ExportEnvironment-instance ToHeader     ExportEnvironment-instance ToQuery      ExportEnvironment--instance FromXML ExportEnvironment where-    parseXML = parseXMLText "ExportEnvironment"--newtype UserData = UserData-    { _udData :: Maybe Text-    } deriving (Eq, Ord, Read, Show, Monoid)---- | 'UserData' constructor.------ The fields accessible through corresponding lenses are:------ * 'udData' @::@ 'Maybe' 'Text'----userData :: UserData-userData = UserData-    { _udData = Nothing-    }--udData :: Lens' UserData (Maybe Text)-udData = lens _udData (\s a -> s { _udData = a })--instance FromXML UserData where-    parseXML x = UserData-        <$> x .@? "data"--instance ToQuery UserData where-    toQuery UserData{..} = mconcat-        [ "Data" =? _udData-        ]--data VolumeAttachment = VolumeAttachment-    { _vaAttachTime          :: Maybe ISO8601-    , _vaDeleteOnTermination :: Maybe Bool-    , _vaDevice              :: Maybe Text-    , _vaInstanceId          :: Maybe Text-    , _vaState               :: Maybe VolumeAttachmentState-    , _vaVolumeId            :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'VolumeAttachment' constructor.------ The fields accessible through corresponding lenses are:------ * 'vaAttachTime' @::@ 'Maybe' 'UTCTime'------ * 'vaDeleteOnTermination' @::@ 'Maybe' 'Bool'------ * 'vaDevice' @::@ 'Maybe' 'Text'------ * 'vaInstanceId' @::@ 'Maybe' 'Text'------ * 'vaState' @::@ 'Maybe' 'VolumeAttachmentState'------ * 'vaVolumeId' @::@ 'Maybe' 'Text'----volumeAttachment :: VolumeAttachment-volumeAttachment = VolumeAttachment-    { _vaVolumeId            = Nothing-    , _vaInstanceId          = Nothing-    , _vaDevice              = Nothing-    , _vaState               = Nothing-    , _vaAttachTime          = Nothing-    , _vaDeleteOnTermination = Nothing-    }---- | The time stamp when the attachment initiated.-vaAttachTime :: Lens' VolumeAttachment (Maybe UTCTime)-vaAttachTime = lens _vaAttachTime (\s a -> s { _vaAttachTime = a }) . mapping _Time---- | Indicates whether the Amazon EBS volume is deleted on instance termination.-vaDeleteOnTermination :: Lens' VolumeAttachment (Maybe Bool)-vaDeleteOnTermination =-    lens _vaDeleteOnTermination (\s a -> s { _vaDeleteOnTermination = a })---- | The device name.-vaDevice :: Lens' VolumeAttachment (Maybe Text)-vaDevice = lens _vaDevice (\s a -> s { _vaDevice = a })---- | The ID of the instance.-vaInstanceId :: Lens' VolumeAttachment (Maybe Text)-vaInstanceId = lens _vaInstanceId (\s a -> s { _vaInstanceId = a })---- | The attachment state of the volume.-vaState :: Lens' VolumeAttachment (Maybe VolumeAttachmentState)-vaState = lens _vaState (\s a -> s { _vaState = a })---- | The ID of the volume.-vaVolumeId :: Lens' VolumeAttachment (Maybe Text)-vaVolumeId = lens _vaVolumeId (\s a -> s { _vaVolumeId = a })--instance FromXML VolumeAttachment where-    parseXML x = VolumeAttachment-        <$> x .@? "attachTime"-        <*> x .@? "deleteOnTermination"-        <*> x .@? "device"-        <*> x .@? "instanceId"-        <*> x .@? "status"-        <*> x .@? "volumeId"--instance ToQuery VolumeAttachment where-    toQuery VolumeAttachment{..} = mconcat-        [ "AttachTime"          =? _vaAttachTime-        , "DeleteOnTermination" =? _vaDeleteOnTermination-        , "Device"              =? _vaDevice-        , "InstanceId"          =? _vaInstanceId-        , "Status"              =? _vaState-        , "VolumeId"            =? _vaVolumeId-        ]--data CustomerGateway = CustomerGateway-    { _cgBgpAsn            :: Text-    , _cgCustomerGatewayId :: Text-    , _cgIpAddress         :: Text-    , _cgState             :: Text-    , _cgTags              :: List "item" Tag-    , _cgType              :: Text-    } deriving (Eq, Read, Show)---- | 'CustomerGateway' constructor.------ The fields accessible through corresponding lenses are:------ * 'cgBgpAsn' @::@ 'Text'------ * 'cgCustomerGatewayId' @::@ 'Text'------ * 'cgIpAddress' @::@ 'Text'------ * 'cgState' @::@ 'Text'------ * 'cgTags' @::@ ['Tag']------ * 'cgType' @::@ 'Text'----customerGateway :: Text -- ^ 'cgCustomerGatewayId'-                -> Text -- ^ 'cgState'-                -> Text -- ^ 'cgType'-                -> Text -- ^ 'cgIpAddress'-                -> Text -- ^ 'cgBgpAsn'-                -> CustomerGateway-customerGateway p1 p2 p3 p4 p5 = CustomerGateway-    { _cgCustomerGatewayId = p1-    , _cgState             = p2-    , _cgType              = p3-    , _cgIpAddress         = p4-    , _cgBgpAsn            = p5-    , _cgTags              = mempty-    }---- | The customer gateway's Border Gateway Protocol (BGP) Autonomous System Number--- (ASN).-cgBgpAsn :: Lens' CustomerGateway Text-cgBgpAsn = lens _cgBgpAsn (\s a -> s { _cgBgpAsn = a })---- | The ID of the customer gateway.-cgCustomerGatewayId :: Lens' CustomerGateway Text-cgCustomerGatewayId =-    lens _cgCustomerGatewayId (\s a -> s { _cgCustomerGatewayId = a })---- | The Internet-routable IP address of the customer gateway's outside interface.-cgIpAddress :: Lens' CustomerGateway Text-cgIpAddress = lens _cgIpAddress (\s a -> s { _cgIpAddress = a })---- | The current state of the customer gateway ('pending | available | deleting |deleted').-cgState :: Lens' CustomerGateway Text-cgState = lens _cgState (\s a -> s { _cgState = a })---- | Any tags assigned to the customer gateway.-cgTags :: Lens' CustomerGateway [Tag]-cgTags = lens _cgTags (\s a -> s { _cgTags = a }) . _List---- | The type of VPN connection the customer gateway supports ('ipsec.1').-cgType :: Lens' CustomerGateway Text-cgType = lens _cgType (\s a -> s { _cgType = a })--instance FromXML CustomerGateway where-    parseXML x = CustomerGateway-        <$> x .@  "bgpAsn"-        <*> x .@  "customerGatewayId"-        <*> x .@  "ipAddress"-        <*> x .@  "state"-        <*> x .@? "tagSet" .!@ mempty-        <*> x .@  "type"--instance ToQuery CustomerGateway where-    toQuery CustomerGateway{..} = mconcat-        [ "BgpAsn"            =? _cgBgpAsn-        , "CustomerGatewayId" =? _cgCustomerGatewayId-        , "IpAddress"         =? _cgIpAddress-        , "State"             =? _cgState-        , "TagSet"            `toQueryList` _cgTags-        , "Type"              =? _cgType-        ]--data EbsInstanceBlockDevice = EbsInstanceBlockDevice-    { _eibdAttachTime          :: Maybe ISO8601-    , _eibdDeleteOnTermination :: Maybe Bool-    , _eibdStatus              :: Maybe AttachmentStatus-    , _eibdVolumeId            :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'EbsInstanceBlockDevice' constructor.------ The fields accessible through corresponding lenses are:------ * 'eibdAttachTime' @::@ 'Maybe' 'UTCTime'------ * 'eibdDeleteOnTermination' @::@ 'Maybe' 'Bool'------ * 'eibdStatus' @::@ 'Maybe' 'AttachmentStatus'------ * 'eibdVolumeId' @::@ 'Maybe' 'Text'----ebsInstanceBlockDevice :: EbsInstanceBlockDevice-ebsInstanceBlockDevice = EbsInstanceBlockDevice-    { _eibdVolumeId            = Nothing-    , _eibdStatus              = Nothing-    , _eibdAttachTime          = Nothing-    , _eibdDeleteOnTermination = Nothing-    }---- | The time stamp when the attachment initiated.-eibdAttachTime :: Lens' EbsInstanceBlockDevice (Maybe UTCTime)-eibdAttachTime = lens _eibdAttachTime (\s a -> s { _eibdAttachTime = a }) . mapping _Time---- | Indicates whether the volume is deleted on instance termination.-eibdDeleteOnTermination :: Lens' EbsInstanceBlockDevice (Maybe Bool)-eibdDeleteOnTermination =-    lens _eibdDeleteOnTermination (\s a -> s { _eibdDeleteOnTermination = a })---- | The attachment state.-eibdStatus :: Lens' EbsInstanceBlockDevice (Maybe AttachmentStatus)-eibdStatus = lens _eibdStatus (\s a -> s { _eibdStatus = a })---- | The ID of the Amazon EBS volume.-eibdVolumeId :: Lens' EbsInstanceBlockDevice (Maybe Text)-eibdVolumeId = lens _eibdVolumeId (\s a -> s { _eibdVolumeId = a })--instance FromXML EbsInstanceBlockDevice where-    parseXML x = EbsInstanceBlockDevice-        <$> x .@? "attachTime"-        <*> x .@? "deleteOnTermination"-        <*> x .@? "status"-        <*> x .@? "volumeId"--instance ToQuery EbsInstanceBlockDevice where-    toQuery EbsInstanceBlockDevice{..} = mconcat-        [ "AttachTime"          =? _eibdAttachTime-        , "DeleteOnTermination" =? _eibdDeleteOnTermination-        , "Status"              =? _eibdStatus-        , "VolumeId"            =? _eibdVolumeId-        ]--data ShutdownBehavior-    = Stop      -- ^ stop-    | Terminate -- ^ terminate-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable ShutdownBehavior--instance FromText ShutdownBehavior where-    parser = takeLowerText >>= \case-        "stop"      -> pure Stop-        "terminate" -> pure Terminate-        e           -> fail $-            "Failure parsing ShutdownBehavior from " ++ show e--instance ToText ShutdownBehavior where-    toText = \case-        Stop      -> "stop"-        Terminate -> "terminate"--instance ToByteString ShutdownBehavior-instance ToHeader     ShutdownBehavior-instance ToQuery      ShutdownBehavior--instance FromXML ShutdownBehavior where-    parseXML = parseXMLText "ShutdownBehavior"--data DiskImageDescription = DiskImageDescription-    { _did1Checksum          :: Maybe Text-    , _did1Format            :: DiskImageFormat-    , _did1ImportManifestUrl :: Text-    , _did1Size              :: Integer-    } deriving (Eq, Read, Show)---- | 'DiskImageDescription' constructor.------ The fields accessible through corresponding lenses are:------ * 'did1Checksum' @::@ 'Maybe' 'Text'------ * 'did1Format' @::@ 'DiskImageFormat'------ * 'did1ImportManifestUrl' @::@ 'Text'------ * 'did1Size' @::@ 'Integer'----diskImageDescription :: DiskImageFormat -- ^ 'did1Format'-                     -> Integer -- ^ 'did1Size'-                     -> Text -- ^ 'did1ImportManifestUrl'-                     -> DiskImageDescription-diskImageDescription p1 p2 p3 = DiskImageDescription-    { _did1Format            = p1-    , _did1Size              = p2-    , _did1ImportManifestUrl = p3-    , _did1Checksum          = Nothing-    }---- | The checksum computed for the disk image.-did1Checksum :: Lens' DiskImageDescription (Maybe Text)-did1Checksum = lens _did1Checksum (\s a -> s { _did1Checksum = a })---- | The disk image format.-did1Format :: Lens' DiskImageDescription DiskImageFormat-did1Format = lens _did1Format (\s a -> s { _did1Format = a })---- | A presigned URL for the import manifest stored in Amazon S3. For information--- about creating a presigned URL for an Amazon S3 object, read the "Query--- String Request Authentication Alternative" section of the <http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html Authenticating RESTRequests> topic in the /Amazon Simple Storage Service Developer Guide/.-did1ImportManifestUrl :: Lens' DiskImageDescription Text-did1ImportManifestUrl =-    lens _did1ImportManifestUrl (\s a -> s { _did1ImportManifestUrl = a })---- | The size of the disk image.-did1Size :: Lens' DiskImageDescription Integer-did1Size = lens _did1Size (\s a -> s { _did1Size = a })--instance FromXML DiskImageDescription where-    parseXML x = DiskImageDescription-        <$> x .@? "checksum"-        <*> x .@  "format"-        <*> x .@  "importManifestUrl"-        <*> x .@  "size"--instance ToQuery DiskImageDescription where-    toQuery DiskImageDescription{..} = mconcat-        [ "Checksum"          =? _did1Checksum-        , "Format"            =? _did1Format-        , "ImportManifestUrl" =? _did1ImportManifestUrl-        , "Size"              =? _did1Size-        ]--data DiskImageVolumeDescription = DiskImageVolumeDescription-    { _divdId   :: Text-    , _divdSize :: Maybe Integer-    } deriving (Eq, Ord, Read, Show)---- | 'DiskImageVolumeDescription' constructor.------ The fields accessible through corresponding lenses are:------ * 'divdId' @::@ 'Text'------ * 'divdSize' @::@ 'Maybe' 'Integer'----diskImageVolumeDescription :: Text -- ^ 'divdId'-                           -> DiskImageVolumeDescription-diskImageVolumeDescription p1 = DiskImageVolumeDescription-    { _divdId   = p1-    , _divdSize = Nothing-    }---- | The volume identifier.-divdId :: Lens' DiskImageVolumeDescription Text-divdId = lens _divdId (\s a -> s { _divdId = a })---- | The size of the volume.-divdSize :: Lens' DiskImageVolumeDescription (Maybe Integer)-divdSize = lens _divdSize (\s a -> s { _divdSize = a })--instance FromXML DiskImageVolumeDescription where-    parseXML x = DiskImageVolumeDescription-        <$> x .@  "id"-        <*> x .@? "size"--instance ToQuery DiskImageVolumeDescription where-    toQuery DiskImageVolumeDescription{..} = mconcat-        [ "Id"   =? _divdId-        , "Size" =? _divdSize-        ]--newtype Monitoring = Monitoring-    { _mState :: Maybe MonitoringState-    } deriving (Eq, Read, Show)---- | 'Monitoring' constructor.------ The fields accessible through corresponding lenses are:------ * 'mState' @::@ 'Maybe' 'MonitoringState'----monitoring :: Monitoring-monitoring = Monitoring-    { _mState = Nothing-    }---- | Indicates whether monitoring is enabled for the instance.-mState :: Lens' Monitoring (Maybe MonitoringState)-mState = lens _mState (\s a -> s { _mState = a })--instance FromXML Monitoring where-    parseXML x = Monitoring-        <$> x .@? "state"--instance ToQuery Monitoring where-    toQuery Monitoring{..} = mconcat-        [ "State" =? _mState-        ]--data SubnetState-    = SSAvailable -- ^ available-    | SSPending   -- ^ pending-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable SubnetState--instance FromText SubnetState where-    parser = takeLowerText >>= \case-        "available" -> pure SSAvailable-        "pending"   -> pure SSPending-        e           -> fail $-            "Failure parsing SubnetState from " ++ show e--instance ToText SubnetState where-    toText = \case-        SSAvailable -> "available"-        SSPending   -> "pending"--instance ToByteString SubnetState-instance ToHeader     SubnetState-instance ToQuery      SubnetState--instance FromXML SubnetState where-    parseXML = parseXMLText "SubnetState"--data ContainerFormat-    = Ova -- ^ ova-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable ContainerFormat--instance FromText ContainerFormat where-    parser = takeLowerText >>= \case-        "ova" -> pure Ova-        e     -> fail $-            "Failure parsing ContainerFormat from " ++ show e--instance ToText ContainerFormat where-    toText Ova = "ova"--instance ToByteString ContainerFormat-instance ToHeader     ContainerFormat-instance ToQuery      ContainerFormat--instance FromXML ContainerFormat where-    parseXML = parseXMLText "ContainerFormat"--newtype AvailabilityZoneMessage = AvailabilityZoneMessage-    { _azmMessage :: Maybe Text-    } deriving (Eq, Ord, Read, Show, Monoid)---- | 'AvailabilityZoneMessage' constructor.------ The fields accessible through corresponding lenses are:------ * 'azmMessage' @::@ 'Maybe' 'Text'----availabilityZoneMessage :: AvailabilityZoneMessage-availabilityZoneMessage = AvailabilityZoneMessage-    { _azmMessage = Nothing-    }---- | The message about the Availability Zone.-azmMessage :: Lens' AvailabilityZoneMessage (Maybe Text)-azmMessage = lens _azmMessage (\s a -> s { _azmMessage = a })--instance FromXML AvailabilityZoneMessage where-    parseXML x = AvailabilityZoneMessage-        <$> x .@? "message"--instance ToQuery AvailabilityZoneMessage where-    toQuery AvailabilityZoneMessage{..} = mconcat-        [ "Message" =? _azmMessage-        ]--data VpcAttachment = VpcAttachment-    { _va1State :: Maybe AttachmentStatus-    , _va1VpcId :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'VpcAttachment' constructor.------ The fields accessible through corresponding lenses are:------ * 'va1State' @::@ 'Maybe' 'AttachmentStatus'------ * 'va1VpcId' @::@ 'Maybe' 'Text'----vpcAttachment :: VpcAttachment-vpcAttachment = VpcAttachment-    { _va1VpcId = Nothing-    , _va1State = Nothing-    }---- | The current state of the attachment.-va1State :: Lens' VpcAttachment (Maybe AttachmentStatus)-va1State = lens _va1State (\s a -> s { _va1State = a })---- | The ID of the VPC.-va1VpcId :: Lens' VpcAttachment (Maybe Text)-va1VpcId = lens _va1VpcId (\s a -> s { _va1VpcId = a })--instance FromXML VpcAttachment where-    parseXML x = VpcAttachment-        <$> x .@? "state"-        <*> x .@? "vpcId"--instance ToQuery VpcAttachment where-    toQuery VpcAttachment{..} = mconcat-        [ "State" =? _va1State-        , "VpcId" =? _va1VpcId-        ]--data InstanceBlockDeviceMapping = InstanceBlockDeviceMapping-    { _ibdmDeviceName :: Maybe Text-    , _ibdmEbs        :: Maybe EbsInstanceBlockDevice-    } deriving (Eq, Read, Show)---- | 'InstanceBlockDeviceMapping' constructor.------ The fields accessible through corresponding lenses are:------ * 'ibdmDeviceName' @::@ 'Maybe' 'Text'------ * 'ibdmEbs' @::@ 'Maybe' 'EbsInstanceBlockDevice'----instanceBlockDeviceMapping :: InstanceBlockDeviceMapping-instanceBlockDeviceMapping = InstanceBlockDeviceMapping-    { _ibdmDeviceName = Nothing-    , _ibdmEbs        = Nothing-    }---- | The device name exposed to the instance (for example, '/dev/sdh' or 'xvdh').-ibdmDeviceName :: Lens' InstanceBlockDeviceMapping (Maybe Text)-ibdmDeviceName = lens _ibdmDeviceName (\s a -> s { _ibdmDeviceName = a })---- | Parameters used to automatically set up Amazon EBS volumes when the instance--- is launched.-ibdmEbs :: Lens' InstanceBlockDeviceMapping (Maybe EbsInstanceBlockDevice)-ibdmEbs = lens _ibdmEbs (\s a -> s { _ibdmEbs = a })--instance FromXML InstanceBlockDeviceMapping where-    parseXML x = InstanceBlockDeviceMapping-        <$> x .@? "deviceName"-        <*> x .@? "ebs"--instance ToQuery InstanceBlockDeviceMapping where-    toQuery InstanceBlockDeviceMapping{..} = mconcat-        [ "DeviceName" =? _ibdmDeviceName-        , "Ebs"        =? _ibdmEbs-        ]--data StatusType-    = Failed           -- ^ failed-    | InsufficientData -- ^ insufficient-data-    | Passed           -- ^ passed-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable StatusType--instance FromText StatusType where-    parser = takeLowerText >>= \case-        "failed"            -> pure Failed-        "insufficient-data" -> pure InsufficientData-        "passed"            -> pure Passed-        e                   -> fail $-            "Failure parsing StatusType from " ++ show e--instance ToText StatusType where-    toText = \case-        Failed           -> "failed"-        InsufficientData -> "insufficient-data"-        Passed           -> "passed"--instance ToByteString StatusType-instance ToHeader     StatusType-instance ToQuery      StatusType--instance FromXML StatusType where-    parseXML = parseXMLText "StatusType"--data ExportToS3TaskSpecification = ExportToS3TaskSpecification-    { _etstsContainerFormat :: Maybe ContainerFormat-    , _etstsDiskImageFormat :: Maybe DiskImageFormat-    , _etstsS3Bucket        :: Maybe Text-    , _etstsS3Prefix        :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'ExportToS3TaskSpecification' constructor.------ The fields accessible through corresponding lenses are:------ * 'etstsContainerFormat' @::@ 'Maybe' 'ContainerFormat'------ * 'etstsDiskImageFormat' @::@ 'Maybe' 'DiskImageFormat'------ * 'etstsS3Bucket' @::@ 'Maybe' 'Text'------ * 'etstsS3Prefix' @::@ 'Maybe' 'Text'----exportToS3TaskSpecification :: ExportToS3TaskSpecification-exportToS3TaskSpecification = ExportToS3TaskSpecification-    { _etstsDiskImageFormat = Nothing-    , _etstsContainerFormat = Nothing-    , _etstsS3Bucket        = Nothing-    , _etstsS3Prefix        = Nothing-    }--etstsContainerFormat :: Lens' ExportToS3TaskSpecification (Maybe ContainerFormat)-etstsContainerFormat =-    lens _etstsContainerFormat (\s a -> s { _etstsContainerFormat = a })--etstsDiskImageFormat :: Lens' ExportToS3TaskSpecification (Maybe DiskImageFormat)-etstsDiskImageFormat =-    lens _etstsDiskImageFormat (\s a -> s { _etstsDiskImageFormat = a })--etstsS3Bucket :: Lens' ExportToS3TaskSpecification (Maybe Text)-etstsS3Bucket = lens _etstsS3Bucket (\s a -> s { _etstsS3Bucket = a })---- | The image is written to a single object in the Amazon S3 bucket at the S3 key--- s3prefix + exportTaskId + '.' + diskImageFormat.-etstsS3Prefix :: Lens' ExportToS3TaskSpecification (Maybe Text)-etstsS3Prefix = lens _etstsS3Prefix (\s a -> s { _etstsS3Prefix = a })--instance FromXML ExportToS3TaskSpecification where-    parseXML x = ExportToS3TaskSpecification-        <$> x .@? "containerFormat"-        <*> x .@? "diskImageFormat"-        <*> x .@? "s3Bucket"-        <*> x .@? "s3Prefix"--instance ToQuery ExportToS3TaskSpecification where-    toQuery ExportToS3TaskSpecification{..} = mconcat-        [ "ContainerFormat" =? _etstsContainerFormat-        , "DiskImageFormat" =? _etstsDiskImageFormat-        , "S3Bucket"        =? _etstsS3Bucket-        , "S3Prefix"        =? _etstsS3Prefix-        ]--data NetworkInterfaceAttribute-    = Attachment      -- ^ attachment-    | Description     -- ^ description-    | GroupSet        -- ^ groupSet-    | SourceDestCheck -- ^ sourceDestCheck-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable NetworkInterfaceAttribute--instance FromText NetworkInterfaceAttribute where-    parser = takeLowerText >>= \case-        "attachment"      -> pure Attachment-        "description"     -> pure Description-        "groupset"        -> pure GroupSet-        "sourcedestcheck" -> pure SourceDestCheck-        e                 -> fail $-            "Failure parsing NetworkInterfaceAttribute from " ++ show e--instance ToText NetworkInterfaceAttribute where-    toText = \case-        Attachment      -> "attachment"-        Description     -> "description"-        GroupSet        -> "groupSet"-        SourceDestCheck -> "sourceDestCheck"--instance ToByteString NetworkInterfaceAttribute-instance ToHeader     NetworkInterfaceAttribute-instance ToQuery      NetworkInterfaceAttribute--instance FromXML NetworkInterfaceAttribute where-    parseXML = parseXMLText "NetworkInterfaceAttribute"--data ImageTypeValues-    = Kernel  -- ^ kernel-    | Machine -- ^ machine-    | Ramdisk -- ^ ramdisk-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable ImageTypeValues--instance FromText ImageTypeValues where-    parser = takeLowerText >>= \case-        "kernel"  -> pure Kernel-        "machine" -> pure Machine-        "ramdisk" -> pure Ramdisk-        e         -> fail $-            "Failure parsing ImageTypeValues from " ++ show e--instance ToText ImageTypeValues where-    toText = \case-        Kernel  -> "kernel"-        Machine -> "machine"-        Ramdisk -> "ramdisk"--instance ToByteString ImageTypeValues-instance ToHeader     ImageTypeValues-instance ToQuery      ImageTypeValues--instance FromXML ImageTypeValues where-    parseXML = parseXMLText "ImageTypeValues"--data InstanceExportDetails = InstanceExportDetails-    { _iedInstanceId        :: Maybe Text-    , _iedTargetEnvironment :: Maybe ExportEnvironment-    } deriving (Eq, Read, Show)---- | 'InstanceExportDetails' constructor.------ The fields accessible through corresponding lenses are:------ * 'iedInstanceId' @::@ 'Maybe' 'Text'------ * 'iedTargetEnvironment' @::@ 'Maybe' 'ExportEnvironment'----instanceExportDetails :: InstanceExportDetails-instanceExportDetails = InstanceExportDetails-    { _iedInstanceId        = Nothing-    , _iedTargetEnvironment = Nothing-    }---- | The ID of the resource being exported.-iedInstanceId :: Lens' InstanceExportDetails (Maybe Text)-iedInstanceId = lens _iedInstanceId (\s a -> s { _iedInstanceId = a })---- | The target virtualization environment.-iedTargetEnvironment :: Lens' InstanceExportDetails (Maybe ExportEnvironment)-iedTargetEnvironment =-    lens _iedTargetEnvironment (\s a -> s { _iedTargetEnvironment = a })--instance FromXML InstanceExportDetails where-    parseXML x = InstanceExportDetails-        <$> x .@? "instanceId"-        <*> x .@? "targetEnvironment"--instance ToQuery InstanceExportDetails where-    toQuery InstanceExportDetails{..} = mconcat-        [ "InstanceId"        =? _iedInstanceId-        , "TargetEnvironment" =? _iedTargetEnvironment-        ]--data SnapshotAttributeName-    = SANCreateVolumePermission -- ^ createVolumePermission-    | SANProductCodes           -- ^ productCodes-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable SnapshotAttributeName--instance FromText SnapshotAttributeName where-    parser = takeLowerText >>= \case-        "createvolumepermission" -> pure SANCreateVolumePermission-        "productcodes"           -> pure SANProductCodes-        e                        -> fail $-            "Failure parsing SnapshotAttributeName from " ++ show e--instance ToText SnapshotAttributeName where-    toText = \case-        SANCreateVolumePermission -> "createVolumePermission"-        SANProductCodes           -> "productCodes"--instance ToByteString SnapshotAttributeName-instance ToHeader     SnapshotAttributeName-instance ToQuery      SnapshotAttributeName--instance FromXML SnapshotAttributeName where-    parseXML = parseXMLText "SnapshotAttributeName"--data AvailabilityZone = AvailabilityZone-    { _azMessages   :: List "item" AvailabilityZoneMessage-    , _azRegionName :: Maybe Text-    , _azState      :: Maybe AvailabilityZoneState-    , _azZoneName   :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'AvailabilityZone' constructor.------ The fields accessible through corresponding lenses are:------ * 'azMessages' @::@ ['AvailabilityZoneMessage']------ * 'azRegionName' @::@ 'Maybe' 'Text'------ * 'azState' @::@ 'Maybe' 'AvailabilityZoneState'------ * 'azZoneName' @::@ 'Maybe' 'Text'----availabilityZone :: AvailabilityZone-availabilityZone = AvailabilityZone-    { _azZoneName   = Nothing-    , _azState      = Nothing-    , _azRegionName = Nothing-    , _azMessages   = mempty-    }---- | Any messages about the Availability Zone.-azMessages :: Lens' AvailabilityZone [AvailabilityZoneMessage]-azMessages = lens _azMessages (\s a -> s { _azMessages = a }) . _List---- | The name of the region.-azRegionName :: Lens' AvailabilityZone (Maybe Text)-azRegionName = lens _azRegionName (\s a -> s { _azRegionName = a })---- | The state of the Availability Zone ('available' | 'impaired' | 'unavailable').-azState :: Lens' AvailabilityZone (Maybe AvailabilityZoneState)-azState = lens _azState (\s a -> s { _azState = a })---- | The name of the Availability Zone.-azZoneName :: Lens' AvailabilityZone (Maybe Text)-azZoneName = lens _azZoneName (\s a -> s { _azZoneName = a })--instance FromXML AvailabilityZone where-    parseXML x = AvailabilityZone-        <$> x .@? "messageSet" .!@ mempty-        <*> x .@? "regionName"-        <*> x .@? "zoneState"-        <*> x .@? "zoneName"--instance ToQuery AvailabilityZone where-    toQuery AvailabilityZone{..} = mconcat-        [ "MessageSet" `toQueryList` _azMessages-        , "RegionName" =? _azRegionName-        , "ZoneState"  =? _azState-        , "ZoneName"   =? _azZoneName-        ]--data VpnState-    = VpnStateAvailable -- ^ available-    | VpnStateDeleted   -- ^ deleted-    | VpnStateDeleting  -- ^ deleting-    | VpnStatePending   -- ^ pending-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable VpnState--instance FromText VpnState where-    parser = takeLowerText >>= \case-        "available" -> pure VpnStateAvailable-        "deleted"   -> pure VpnStateDeleted-        "deleting"  -> pure VpnStateDeleting-        "pending"   -> pure VpnStatePending-        e           -> fail $-            "Failure parsing VpnState from " ++ show e--instance ToText VpnState where-    toText = \case-        VpnStateAvailable -> "available"-        VpnStateDeleted   -> "deleted"-        VpnStateDeleting  -> "deleting"-        VpnStatePending   -> "pending"--instance ToByteString VpnState-instance ToHeader     VpnState-instance ToQuery      VpnState--instance FromXML VpnState where-    parseXML = parseXMLText "VpnState"--data RouteTable = RouteTable-    { _rtAssociations    :: List "item" RouteTableAssociation-    , _rtPropagatingVgws :: List "item" PropagatingVgw-    , _rtRouteTableId    :: Maybe Text-    , _rtRoutes          :: List "item" Route-    , _rtTags            :: List "item" Tag-    , _rtVpcId           :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'RouteTable' constructor.------ The fields accessible through corresponding lenses are:------ * 'rtAssociations' @::@ ['RouteTableAssociation']------ * 'rtPropagatingVgws' @::@ ['PropagatingVgw']------ * 'rtRouteTableId' @::@ 'Maybe' 'Text'------ * 'rtRoutes' @::@ ['Route']------ * 'rtTags' @::@ ['Tag']------ * 'rtVpcId' @::@ 'Maybe' 'Text'----routeTable :: RouteTable-routeTable = RouteTable-    { _rtRouteTableId    = Nothing-    , _rtVpcId           = Nothing-    , _rtRoutes          = mempty-    , _rtAssociations    = mempty-    , _rtTags            = mempty-    , _rtPropagatingVgws = mempty-    }---- | The associations between the route table and one or more subnets.-rtAssociations :: Lens' RouteTable [RouteTableAssociation]-rtAssociations = lens _rtAssociations (\s a -> s { _rtAssociations = a }) . _List---- | Any virtual private gateway (VGW) propagating routes.-rtPropagatingVgws :: Lens' RouteTable [PropagatingVgw]-rtPropagatingVgws =-    lens _rtPropagatingVgws (\s a -> s { _rtPropagatingVgws = a })-        . _List---- | The ID of the route table.-rtRouteTableId :: Lens' RouteTable (Maybe Text)-rtRouteTableId = lens _rtRouteTableId (\s a -> s { _rtRouteTableId = a })---- | The routes in the route table.-rtRoutes :: Lens' RouteTable [Route]-rtRoutes = lens _rtRoutes (\s a -> s { _rtRoutes = a }) . _List---- | Any tags assigned to the route table.-rtTags :: Lens' RouteTable [Tag]-rtTags = lens _rtTags (\s a -> s { _rtTags = a }) . _List---- | The ID of the VPC.-rtVpcId :: Lens' RouteTable (Maybe Text)-rtVpcId = lens _rtVpcId (\s a -> s { _rtVpcId = a })--instance FromXML RouteTable where-    parseXML x = RouteTable-        <$> x .@? "associationSet" .!@ mempty-        <*> x .@? "propagatingVgwSet" .!@ mempty-        <*> x .@? "routeTableId"-        <*> x .@? "routeSet" .!@ mempty-        <*> x .@? "tagSet" .!@ mempty-        <*> x .@? "vpcId"--instance ToQuery RouteTable where-    toQuery RouteTable{..} = mconcat-        [ "AssociationSet"    `toQueryList` _rtAssociations-        , "PropagatingVgwSet" `toQueryList` _rtPropagatingVgws-        , "RouteTableId"      =? _rtRouteTableId-        , "RouteSet"          `toQueryList` _rtRoutes-        , "TagSet"            `toQueryList` _rtTags-        , "VpcId"             =? _rtVpcId-        ]--data HypervisorType-    = Ovm -- ^ ovm-    | Xen -- ^ xen-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable HypervisorType--instance FromText HypervisorType where-    parser = takeLowerText >>= \case-        "ovm" -> pure Ovm-        "xen" -> pure Xen-        e     -> fail $-            "Failure parsing HypervisorType from " ++ show e--instance ToText HypervisorType where-    toText = \case-        Ovm -> "ovm"-        Xen -> "xen"--instance ToByteString HypervisorType-instance ToHeader     HypervisorType-instance ToQuery      HypervisorType--instance FromXML HypervisorType where-    parseXML = parseXMLText "HypervisorType"--data InstanceStatusDetails = InstanceStatusDetails-    { _isdImpairedSince :: Maybe ISO8601-    , _isdName          :: Maybe StatusName-    , _isdStatus        :: Maybe StatusType-    } deriving (Eq, Read, Show)---- | 'InstanceStatusDetails' constructor.------ The fields accessible through corresponding lenses are:------ * 'isdImpairedSince' @::@ 'Maybe' 'UTCTime'------ * 'isdName' @::@ 'Maybe' 'StatusName'------ * 'isdStatus' @::@ 'Maybe' 'StatusType'----instanceStatusDetails :: InstanceStatusDetails-instanceStatusDetails = InstanceStatusDetails-    { _isdName          = Nothing-    , _isdStatus        = Nothing-    , _isdImpairedSince = Nothing-    }---- | The time when a status check failed. For an instance that was launched and--- impaired, this is the time when the instance was launched.-isdImpairedSince :: Lens' InstanceStatusDetails (Maybe UTCTime)-isdImpairedSince = lens _isdImpairedSince (\s a -> s { _isdImpairedSince = a }) . mapping _Time---- | The type of instance status.-isdName :: Lens' InstanceStatusDetails (Maybe StatusName)-isdName = lens _isdName (\s a -> s { _isdName = a })---- | The status.-isdStatus :: Lens' InstanceStatusDetails (Maybe StatusType)-isdStatus = lens _isdStatus (\s a -> s { _isdStatus = a })--instance FromXML InstanceStatusDetails where-    parseXML x = InstanceStatusDetails-        <$> x .@? "impairedSince"-        <*> x .@? "name"-        <*> x .@? "status"--instance ToQuery InstanceStatusDetails where-    toQuery InstanceStatusDetails{..} = mconcat-        [ "ImpairedSince" =? _isdImpairedSince-        , "Name"          =? _isdName-        , "Status"        =? _isdStatus-        ]--data IamInstanceProfile = IamInstanceProfile-    { _iipArn :: Maybe Text-    , _iipId  :: Maybe Text-    } deriving (Eq, Ord, Read, Show)---- | 'IamInstanceProfile' constructor.------ The fields accessible through corresponding lenses are:------ * 'iipArn' @::@ 'Maybe' 'Text'------ * 'iipId' @::@ 'Maybe' 'Text'----iamInstanceProfile :: IamInstanceProfile-iamInstanceProfile = IamInstanceProfile-    { _iipArn = Nothing-    , _iipId  = Nothing-    }---- | The Amazon Resource Name (ARN) of the instance profile.-iipArn :: Lens' IamInstanceProfile (Maybe Text)-iipArn = lens _iipArn (\s a -> s { _iipArn = a })---- | The ID of the instance profile.-iipId :: Lens' IamInstanceProfile (Maybe Text)-iipId = lens _iipId (\s a -> s { _iipId = a })--instance FromXML IamInstanceProfile where-    parseXML x = IamInstanceProfile-        <$> x .@? "arn"-        <*> x .@? "id"--instance ToQuery IamInstanceProfile where-    toQuery IamInstanceProfile{..} = mconcat-        [ "Arn" =? _iipArn-        , "Id"  =? _iipId-        ]--data InternetGatewayAttachment = InternetGatewayAttachment-    { _igaState :: AttachmentStatus-    , _igaVpcId :: Text-    } deriving (Eq, Read, Show)---- | 'InternetGatewayAttachment' constructor.------ The fields accessible through corresponding lenses are:------ * 'igaState' @::@ 'AttachmentStatus'------ * 'igaVpcId' @::@ 'Text'----internetGatewayAttachment :: Text -- ^ 'igaVpcId'-                          -> AttachmentStatus -- ^ 'igaState'-                          -> InternetGatewayAttachment-internetGatewayAttachment p1 p2 = InternetGatewayAttachment-    { _igaVpcId = p1-    , _igaState = p2-    }---- | The current state of the attachment.-igaState :: Lens' InternetGatewayAttachment AttachmentStatus-igaState = lens _igaState (\s a -> s { _igaState = a })---- | The ID of the VPC.-igaVpcId :: Lens' InternetGatewayAttachment Text-igaVpcId = lens _igaVpcId (\s a -> s { _igaVpcId = a })--instance FromXML InternetGatewayAttachment where-    parseXML x = InternetGatewayAttachment-        <$> x .@  "state"-        <*> x .@  "vpcId"--instance ToQuery InternetGatewayAttachment where-    toQuery InternetGatewayAttachment{..} = mconcat-        [ "State" =? _igaState-        , "VpcId" =? _igaVpcId-        ]--data ReservedInstanceState-    = RISActive         -- ^ active-    | RISPaymentFailed  -- ^ payment-failed-    | RISPaymentPending -- ^ payment-pending-    | RISRetired        -- ^ retired-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable ReservedInstanceState--instance FromText ReservedInstanceState where-    parser = takeLowerText >>= \case-        "active"          -> pure RISActive-        "payment-failed"  -> pure RISPaymentFailed-        "payment-pending" -> pure RISPaymentPending-        "retired"         -> pure RISRetired-        e                 -> fail $-            "Failure parsing ReservedInstanceState from " ++ show e--instance ToText ReservedInstanceState where-    toText = \case-        RISActive         -> "active"-        RISPaymentFailed  -> "payment-failed"-        RISPaymentPending -> "payment-pending"-        RISRetired        -> "retired"--instance ToByteString ReservedInstanceState-instance ToHeader     ReservedInstanceState-instance ToQuery      ReservedInstanceState--instance FromXML ReservedInstanceState where-    parseXML = parseXMLText "ReservedInstanceState"--data InstanceAttributeName-    = IANInstanceBlockDeviceMapping                -- ^ blockDeviceMapping-    | IANInstanceDisableApiTermination             -- ^ disableApiTermination-    | IANInstanceEbsOptimized                      -- ^ ebsOptimized-    | IANInstanceGroupSet                          -- ^ groupSet-    | IANInstanceInstanceInitiatedShutdownBehavior -- ^ instanceInitiatedShutdownBehavior-    | IANInstanceInstanceType                      -- ^ instanceType-    | IANInstanceKernel                            -- ^ kernel-    | IANInstanceProductCodes                      -- ^ productCodes-    | IANInstanceRamdisk                           -- ^ ramdisk-    | IANInstanceRootDeviceName                    -- ^ rootDeviceName-    | IANInstanceSourceDestCheck                   -- ^ sourceDestCheck-    | IANInstanceSriovNetSupport                   -- ^ sriovNetSupport-    | IANInstanceUserData                          -- ^ userData-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable InstanceAttributeName--instance FromText InstanceAttributeName where-    parser = takeLowerText >>= \case-        "blockdevicemapping"                -> pure IANInstanceBlockDeviceMapping-        "disableapitermination"             -> pure IANInstanceDisableApiTermination-        "ebsoptimized"                      -> pure IANInstanceEbsOptimized-        "groupset"                          -> pure IANInstanceGroupSet-        "instanceinitiatedshutdownbehavior" -> pure IANInstanceInstanceInitiatedShutdownBehavior-        "instancetype"                      -> pure IANInstanceInstanceType-        "kernel"                            -> pure IANInstanceKernel-        "productcodes"                      -> pure IANInstanceProductCodes-        "ramdisk"                           -> pure IANInstanceRamdisk-        "rootdevicename"                    -> pure IANInstanceRootDeviceName-        "sourcedestcheck"                   -> pure IANInstanceSourceDestCheck-        "sriovnetsupport"                   -> pure IANInstanceSriovNetSupport-        "userdata"                          -> pure IANInstanceUserData-        e                                   -> fail $-            "Failure parsing InstanceAttributeName from " ++ show e--instance ToText InstanceAttributeName where-    toText = \case-        IANInstanceBlockDeviceMapping                -> "blockDeviceMapping"-        IANInstanceDisableApiTermination             -> "disableApiTermination"-        IANInstanceEbsOptimized                      -> "ebsOptimized"-        IANInstanceGroupSet                          -> "groupSet"-        IANInstanceInstanceInitiatedShutdownBehavior -> "instanceInitiatedShutdownBehavior"-        IANInstanceInstanceType                      -> "instanceType"-        IANInstanceKernel                            -> "kernel"-        IANInstanceProductCodes                      -> "productCodes"-        IANInstanceRamdisk                           -> "ramdisk"-        IANInstanceRootDeviceName                    -> "rootDeviceName"-        IANInstanceSourceDestCheck                   -> "sourceDestCheck"-        IANInstanceSriovNetSupport                   -> "sriovNetSupport"-        IANInstanceUserData                          -> "userData"--instance ToByteString InstanceAttributeName-instance ToHeader     InstanceAttributeName-instance ToQuery      InstanceAttributeName--instance FromXML InstanceAttributeName where-    parseXML = parseXMLText "InstanceAttributeName"--data IpPermission = IpPermission-    { _ipFromPort         :: Maybe Int-    , _ipIpProtocol       :: Text-    , _ipIpRanges         :: List "item" IpRange-    , _ipToPort           :: Maybe Int-    , _ipUserIdGroupPairs :: List "item" UserIdGroupPair-    } deriving (Eq, Read, Show)---- | 'IpPermission' constructor.------ The fields accessible through corresponding lenses are:------ * 'ipFromPort' @::@ 'Maybe' 'Int'------ * 'ipIpProtocol' @::@ 'Text'------ * 'ipIpRanges' @::@ ['IpRange']------ * 'ipToPort' @::@ 'Maybe' 'Int'------ * 'ipUserIdGroupPairs' @::@ ['UserIdGroupPair']----ipPermission :: Text -- ^ 'ipIpProtocol'-             -> IpPermission-ipPermission p1 = IpPermission-    { _ipIpProtocol       = p1-    , _ipFromPort         = Nothing-    , _ipToPort           = Nothing-    , _ipUserIdGroupPairs = mempty-    , _ipIpRanges         = mempty-    }---- | The start of port range for the TCP and UDP protocols, or an ICMP type--- number. A value of '-1' indicates all ICMP types.-ipFromPort :: Lens' IpPermission (Maybe Int)-ipFromPort = lens _ipFromPort (\s a -> s { _ipFromPort = a })---- | The protocol.------ When you call 'DescribeSecurityGroups', the protocol value returned is the--- number. Exception: For TCP, UDP, and ICMP, the value returned is the name--- (for example, 'tcp', 'udp', or 'icmp'). For a list of protocol numbers, see <http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml Protocol Numbers>. (VPC only) When you call 'AuthorizeSecurityGroupIngress', you can use '-1' to--- specify all.-ipIpProtocol :: Lens' IpPermission Text-ipIpProtocol = lens _ipIpProtocol (\s a -> s { _ipIpProtocol = a })---- | One or more IP ranges.-ipIpRanges :: Lens' IpPermission [IpRange]-ipIpRanges = lens _ipIpRanges (\s a -> s { _ipIpRanges = a }) . _List---- | The end of port range for the TCP and UDP protocols, or an ICMP code. A value--- of '-1' indicates all ICMP codes for the specified ICMP type.-ipToPort :: Lens' IpPermission (Maybe Int)-ipToPort = lens _ipToPort (\s a -> s { _ipToPort = a })---- | One or more security group and AWS account ID pairs.-ipUserIdGroupPairs :: Lens' IpPermission [UserIdGroupPair]-ipUserIdGroupPairs =-    lens _ipUserIdGroupPairs (\s a -> s { _ipUserIdGroupPairs = a })-        . _List--instance FromXML IpPermission where-    parseXML x = IpPermission-        <$> x .@? "fromPort"-        <*> x .@  "ipProtocol"-        <*> x .@? "ipRanges" .!@ mempty-        <*> x .@? "toPort"-        <*> x .@? "groups" .!@ mempty--instance ToQuery IpPermission where-    toQuery IpPermission{..} = mconcat-        [ "FromPort"   =? _ipFromPort-        , "IpProtocol" =? _ipIpProtocol-        , "IpRanges"   `toQueryList` _ipIpRanges-        , "ToPort"     =? _ipToPort-        , "Groups"     `toQueryList` _ipUserIdGroupPairs-        ]--data ConversionTaskState-    = CTSActive     -- ^ active-    | CTSCancelled  -- ^ cancelled-    | CTSCancelling -- ^ cancelling-    | CTSCompleted  -- ^ completed-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable ConversionTaskState--instance FromText ConversionTaskState where-    parser = takeLowerText >>= \case-        "active"     -> pure CTSActive-        "cancelled"  -> pure CTSCancelled-        "cancelling" -> pure CTSCancelling-        "completed"  -> pure CTSCompleted-        e            -> fail $-            "Failure parsing ConversionTaskState from " ++ show e--instance ToText ConversionTaskState where-    toText = \case-        CTSActive     -> "active"-        CTSCancelled  -> "cancelled"-        CTSCancelling -> "cancelling"-        CTSCompleted  -> "completed"--instance ToByteString ConversionTaskState-instance ToHeader     ConversionTaskState-instance ToQuery      ConversionTaskState--instance FromXML ConversionTaskState where-    parseXML = parseXMLText "ConversionTaskState"--data DiskImage = DiskImage-    { _diDescription :: Maybe Text-    , _diImage       :: Maybe DiskImageDetail-    , _diVolume      :: Maybe VolumeDetail-    } deriving (Eq, Read, Show)---- | 'DiskImage' constructor.------ The fields accessible through corresponding lenses are:------ * 'diDescription' @::@ 'Maybe' 'Text'------ * 'diImage' @::@ 'Maybe' 'DiskImageDetail'------ * 'diVolume' @::@ 'Maybe' 'VolumeDetail'----diskImage :: DiskImage-diskImage = DiskImage-    { _diImage       = Nothing-    , _diDescription = Nothing-    , _diVolume      = Nothing-    }--diDescription :: Lens' DiskImage (Maybe Text)-diDescription = lens _diDescription (\s a -> s { _diDescription = a })--diImage :: Lens' DiskImage (Maybe DiskImageDetail)-diImage = lens _diImage (\s a -> s { _diImage = a })--diVolume :: Lens' DiskImage (Maybe VolumeDetail)-diVolume = lens _diVolume (\s a -> s { _diVolume = a })--instance FromXML DiskImage where-    parseXML x = DiskImage-        <$> x .@? "Description"-        <*> x .@? "Image"-        <*> x .@? "Volume"--instance ToQuery DiskImage where-    toQuery DiskImage{..} = mconcat-        [ "Description" =? _diDescription-        , "Image"       =? _diImage-        , "Volume"      =? _diVolume-        ]--data Tenancy-    = Dedicated -- ^ dedicated-    | Default'  -- ^ default-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable Tenancy--instance FromText Tenancy where-    parser = takeLowerText >>= \case-        "dedicated" -> pure Dedicated-        "default"   -> pure Default'-        e           -> fail $-            "Failure parsing Tenancy from " ++ show e--instance ToText Tenancy where-    toText = \case-        Dedicated -> "dedicated"-        Default'  -> "default"--instance ToByteString Tenancy-instance ToHeader     Tenancy-instance ToQuery      Tenancy--instance FromXML Tenancy where-    parseXML = parseXMLText "Tenancy"--data VpcPeeringConnectionStateReason = VpcPeeringConnectionStateReason-    { _vpcsrCode    :: Maybe Text-    , _vpcsrMessage :: Maybe Text-    } deriving (Eq, Ord, Read, Show)---- | 'VpcPeeringConnectionStateReason' constructor.------ The fields accessible through corresponding lenses are:------ * 'vpcsrCode' @::@ 'Maybe' 'Text'------ * 'vpcsrMessage' @::@ 'Maybe' 'Text'----vpcPeeringConnectionStateReason :: VpcPeeringConnectionStateReason-vpcPeeringConnectionStateReason = VpcPeeringConnectionStateReason-    { _vpcsrCode    = Nothing-    , _vpcsrMessage = Nothing-    }---- | The status of the VPC peering connection.-vpcsrCode :: Lens' VpcPeeringConnectionStateReason (Maybe Text)-vpcsrCode = lens _vpcsrCode (\s a -> s { _vpcsrCode = a })---- | A message that provides more information about the status, if applicable.-vpcsrMessage :: Lens' VpcPeeringConnectionStateReason (Maybe Text)-vpcsrMessage = lens _vpcsrMessage (\s a -> s { _vpcsrMessage = a })--instance FromXML VpcPeeringConnectionStateReason where-    parseXML x = VpcPeeringConnectionStateReason-        <$> x .@? "code"-        <*> x .@? "message"--instance ToQuery VpcPeeringConnectionStateReason where-    toQuery VpcPeeringConnectionStateReason{..} = mconcat-        [ "Code"    =? _vpcsrCode-        , "Message" =? _vpcsrMessage-        ]--data IamInstanceProfileSpecification = IamInstanceProfileSpecification-    { _iipsArn  :: Maybe Text-    , _iipsName :: Maybe Text-    } deriving (Eq, Ord, Read, Show)---- | 'IamInstanceProfileSpecification' constructor.------ The fields accessible through corresponding lenses are:------ * 'iipsArn' @::@ 'Maybe' 'Text'------ * 'iipsName' @::@ 'Maybe' 'Text'----iamInstanceProfileSpecification :: IamInstanceProfileSpecification-iamInstanceProfileSpecification = IamInstanceProfileSpecification-    { _iipsArn  = Nothing-    , _iipsName = Nothing-    }---- | The Amazon Resource Name (ARN) of the instance profile.-iipsArn :: Lens' IamInstanceProfileSpecification (Maybe Text)-iipsArn = lens _iipsArn (\s a -> s { _iipsArn = a })---- | The name of the instance profile.-iipsName :: Lens' IamInstanceProfileSpecification (Maybe Text)-iipsName = lens _iipsName (\s a -> s { _iipsName = a })--instance FromXML IamInstanceProfileSpecification where-    parseXML x = IamInstanceProfileSpecification-        <$> x .@? "arn"-        <*> x .@? "name"--instance ToQuery IamInstanceProfileSpecification where-    toQuery IamInstanceProfileSpecification{..} = mconcat-        [ "Arn"  =? _iipsArn-        , "Name" =? _iipsName-        ]--data ImportVolumeTaskDetails = ImportVolumeTaskDetails-    { _ivtdAvailabilityZone :: Text-    , _ivtdBytesConverted   :: Integer-    , _ivtdDescription      :: Maybe Text-    , _ivtdImage            :: DiskImageDescription-    , _ivtdVolume           :: DiskImageVolumeDescription-    } deriving (Eq, Read, Show)---- | 'ImportVolumeTaskDetails' constructor.------ The fields accessible through corresponding lenses are:------ * 'ivtdAvailabilityZone' @::@ 'Text'------ * 'ivtdBytesConverted' @::@ 'Integer'------ * 'ivtdDescription' @::@ 'Maybe' 'Text'------ * 'ivtdImage' @::@ 'DiskImageDescription'------ * 'ivtdVolume' @::@ 'DiskImageVolumeDescription'----importVolumeTaskDetails :: Integer -- ^ 'ivtdBytesConverted'-                        -> Text -- ^ 'ivtdAvailabilityZone'-                        -> DiskImageDescription -- ^ 'ivtdImage'-                        -> DiskImageVolumeDescription -- ^ 'ivtdVolume'-                        -> ImportVolumeTaskDetails-importVolumeTaskDetails p1 p2 p3 p4 = ImportVolumeTaskDetails-    { _ivtdBytesConverted   = p1-    , _ivtdAvailabilityZone = p2-    , _ivtdImage            = p3-    , _ivtdVolume           = p4-    , _ivtdDescription      = Nothing-    }---- | The Availability Zone where the resulting volume will reside.-ivtdAvailabilityZone :: Lens' ImportVolumeTaskDetails Text-ivtdAvailabilityZone =-    lens _ivtdAvailabilityZone (\s a -> s { _ivtdAvailabilityZone = a })---- | The number of bytes converted so far.-ivtdBytesConverted :: Lens' ImportVolumeTaskDetails Integer-ivtdBytesConverted =-    lens _ivtdBytesConverted (\s a -> s { _ivtdBytesConverted = a })---- | The description you provided when starting the import volume task.-ivtdDescription :: Lens' ImportVolumeTaskDetails (Maybe Text)-ivtdDescription = lens _ivtdDescription (\s a -> s { _ivtdDescription = a })---- | The image.-ivtdImage :: Lens' ImportVolumeTaskDetails DiskImageDescription-ivtdImage = lens _ivtdImage (\s a -> s { _ivtdImage = a })---- | The volume.-ivtdVolume :: Lens' ImportVolumeTaskDetails DiskImageVolumeDescription-ivtdVolume = lens _ivtdVolume (\s a -> s { _ivtdVolume = a })--instance FromXML ImportVolumeTaskDetails where-    parseXML x = ImportVolumeTaskDetails-        <$> x .@  "availabilityZone"-        <*> x .@  "bytesConverted"-        <*> x .@? "description"-        <*> x .@  "image"-        <*> x .@  "volume"--instance ToQuery ImportVolumeTaskDetails where-    toQuery ImportVolumeTaskDetails{..} = mconcat-        [ "AvailabilityZone" =? _ivtdAvailabilityZone-        , "BytesConverted"   =? _ivtdBytesConverted-        , "Description"      =? _ivtdDescription-        , "Image"            =? _ivtdImage-        , "Volume"           =? _ivtdVolume-        ]--data PlacementStrategy-    = Cluster -- ^ cluster-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable PlacementStrategy--instance FromText PlacementStrategy where-    parser = takeLowerText >>= \case-        "cluster" -> pure Cluster-        e         -> fail $-            "Failure parsing PlacementStrategy from " ++ show e--instance ToText PlacementStrategy where-    toText Cluster = "cluster"--instance ToByteString PlacementStrategy-instance ToHeader     PlacementStrategy-instance ToQuery      PlacementStrategy--instance FromXML PlacementStrategy where-    parseXML = parseXMLText "PlacementStrategy"--data InstanceNetworkInterface = InstanceNetworkInterface-    { _iniAssociation        :: Maybe InstanceNetworkInterfaceAssociation-    , _iniAttachment         :: Maybe InstanceNetworkInterfaceAttachment-    , _iniDescription        :: Maybe Text-    , _iniGroups             :: List "item" GroupIdentifier-    , _iniMacAddress         :: Maybe Text-    , _iniNetworkInterfaceId :: Maybe Text-    , _iniOwnerId            :: Maybe Text-    , _iniPrivateDnsName     :: Maybe Text-    , _iniPrivateIpAddress   :: Maybe Text-    , _iniPrivateIpAddresses :: List "item" InstancePrivateIpAddress-    , _iniSourceDestCheck    :: Maybe Bool-    , _iniStatus             :: Maybe NetworkInterfaceStatus-    , _iniSubnetId           :: Maybe Text-    , _iniVpcId              :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'InstanceNetworkInterface' constructor.------ The fields accessible through corresponding lenses are:------ * 'iniAssociation' @::@ 'Maybe' 'InstanceNetworkInterfaceAssociation'------ * 'iniAttachment' @::@ 'Maybe' 'InstanceNetworkInterfaceAttachment'------ * 'iniDescription' @::@ 'Maybe' 'Text'------ * 'iniGroups' @::@ ['GroupIdentifier']------ * 'iniMacAddress' @::@ 'Maybe' 'Text'------ * 'iniNetworkInterfaceId' @::@ 'Maybe' 'Text'------ * 'iniOwnerId' @::@ 'Maybe' 'Text'------ * 'iniPrivateDnsName' @::@ 'Maybe' 'Text'------ * 'iniPrivateIpAddress' @::@ 'Maybe' 'Text'------ * 'iniPrivateIpAddresses' @::@ ['InstancePrivateIpAddress']------ * 'iniSourceDestCheck' @::@ 'Maybe' 'Bool'------ * 'iniStatus' @::@ 'Maybe' 'NetworkInterfaceStatus'------ * 'iniSubnetId' @::@ 'Maybe' 'Text'------ * 'iniVpcId' @::@ 'Maybe' 'Text'----instanceNetworkInterface :: InstanceNetworkInterface-instanceNetworkInterface = InstanceNetworkInterface-    { _iniNetworkInterfaceId = Nothing-    , _iniSubnetId           = Nothing-    , _iniVpcId              = Nothing-    , _iniDescription        = Nothing-    , _iniOwnerId            = Nothing-    , _iniStatus             = Nothing-    , _iniMacAddress         = Nothing-    , _iniPrivateIpAddress   = Nothing-    , _iniPrivateDnsName     = Nothing-    , _iniSourceDestCheck    = Nothing-    , _iniGroups             = mempty-    , _iniAttachment         = Nothing-    , _iniAssociation        = Nothing-    , _iniPrivateIpAddresses = mempty-    }---- | The association information for an Elastic IP associated with the network--- interface.-iniAssociation :: Lens' InstanceNetworkInterface (Maybe InstanceNetworkInterfaceAssociation)-iniAssociation = lens _iniAssociation (\s a -> s { _iniAssociation = a })---- | The network interface attachment.-iniAttachment :: Lens' InstanceNetworkInterface (Maybe InstanceNetworkInterfaceAttachment)-iniAttachment = lens _iniAttachment (\s a -> s { _iniAttachment = a })---- | The description.-iniDescription :: Lens' InstanceNetworkInterface (Maybe Text)-iniDescription = lens _iniDescription (\s a -> s { _iniDescription = a })---- | One or more security groups.-iniGroups :: Lens' InstanceNetworkInterface [GroupIdentifier]-iniGroups = lens _iniGroups (\s a -> s { _iniGroups = a }) . _List---- | The MAC address.-iniMacAddress :: Lens' InstanceNetworkInterface (Maybe Text)-iniMacAddress = lens _iniMacAddress (\s a -> s { _iniMacAddress = a })---- | The ID of the network interface.-iniNetworkInterfaceId :: Lens' InstanceNetworkInterface (Maybe Text)-iniNetworkInterfaceId =-    lens _iniNetworkInterfaceId (\s a -> s { _iniNetworkInterfaceId = a })---- | The ID of the AWS account that created the network interface.-iniOwnerId :: Lens' InstanceNetworkInterface (Maybe Text)-iniOwnerId = lens _iniOwnerId (\s a -> s { _iniOwnerId = a })---- | The private DNS name.-iniPrivateDnsName :: Lens' InstanceNetworkInterface (Maybe Text)-iniPrivateDnsName =-    lens _iniPrivateDnsName (\s a -> s { _iniPrivateDnsName = a })---- | The IP address of the network interface within the subnet.-iniPrivateIpAddress :: Lens' InstanceNetworkInterface (Maybe Text)-iniPrivateIpAddress =-    lens _iniPrivateIpAddress (\s a -> s { _iniPrivateIpAddress = a })---- | The private IP addresses associated with the network interface.-iniPrivateIpAddresses :: Lens' InstanceNetworkInterface [InstancePrivateIpAddress]-iniPrivateIpAddresses =-    lens _iniPrivateIpAddresses (\s a -> s { _iniPrivateIpAddresses = a })-        . _List---- | Indicates whether to validate network traffic to or from this network--- interface.-iniSourceDestCheck :: Lens' InstanceNetworkInterface (Maybe Bool)-iniSourceDestCheck =-    lens _iniSourceDestCheck (\s a -> s { _iniSourceDestCheck = a })---- | The status of the network interface.-iniStatus :: Lens' InstanceNetworkInterface (Maybe NetworkInterfaceStatus)-iniStatus = lens _iniStatus (\s a -> s { _iniStatus = a })---- | The ID of the subnet.-iniSubnetId :: Lens' InstanceNetworkInterface (Maybe Text)-iniSubnetId = lens _iniSubnetId (\s a -> s { _iniSubnetId = a })---- | The ID of the VPC.-iniVpcId :: Lens' InstanceNetworkInterface (Maybe Text)-iniVpcId = lens _iniVpcId (\s a -> s { _iniVpcId = a })--instance FromXML InstanceNetworkInterface where-    parseXML x = InstanceNetworkInterface-        <$> x .@? "association"-        <*> x .@? "attachment"-        <*> x .@? "description"-        <*> x .@? "groupSet" .!@ mempty-        <*> x .@? "macAddress"-        <*> x .@? "networkInterfaceId"-        <*> x .@? "ownerId"-        <*> x .@? "privateDnsName"-        <*> x .@? "privateIpAddress"-        <*> x .@? "privateIpAddressesSet" .!@ mempty-        <*> x .@? "sourceDestCheck"-        <*> x .@? "status"-        <*> x .@? "subnetId"-        <*> x .@? "vpcId"--instance ToQuery InstanceNetworkInterface where-    toQuery InstanceNetworkInterface{..} = mconcat-        [ "Association"           =? _iniAssociation-        , "Attachment"            =? _iniAttachment-        , "Description"           =? _iniDescription-        , "GroupSet"              `toQueryList` _iniGroups-        , "MacAddress"            =? _iniMacAddress-        , "NetworkInterfaceId"    =? _iniNetworkInterfaceId-        , "OwnerId"               =? _iniOwnerId-        , "PrivateDnsName"        =? _iniPrivateDnsName-        , "PrivateIpAddress"      =? _iniPrivateIpAddress-        , "PrivateIpAddressesSet" `toQueryList` _iniPrivateIpAddresses-        , "SourceDestCheck"       =? _iniSourceDestCheck-        , "Status"                =? _iniStatus-        , "SubnetId"              =? _iniSubnetId-        , "VpcId"                 =? _iniVpcId-        ]--data VolumeStatusAction = VolumeStatusAction-    { _vsaCode        :: Maybe Text-    , _vsaDescription :: Maybe Text-    , _vsaEventId     :: Maybe Text-    , _vsaEventType   :: Maybe Text-    } deriving (Eq, Ord, Read, Show)---- | 'VolumeStatusAction' constructor.------ The fields accessible through corresponding lenses are:------ * 'vsaCode' @::@ 'Maybe' 'Text'------ * 'vsaDescription' @::@ 'Maybe' 'Text'------ * 'vsaEventId' @::@ 'Maybe' 'Text'------ * 'vsaEventType' @::@ 'Maybe' 'Text'----volumeStatusAction :: VolumeStatusAction-volumeStatusAction = VolumeStatusAction-    { _vsaCode        = Nothing-    , _vsaDescription = Nothing-    , _vsaEventType   = Nothing-    , _vsaEventId     = Nothing-    }---- | The code identifying the operation, for example, 'enable-volume-io'.-vsaCode :: Lens' VolumeStatusAction (Maybe Text)-vsaCode = lens _vsaCode (\s a -> s { _vsaCode = a })---- | A description of the operation.-vsaDescription :: Lens' VolumeStatusAction (Maybe Text)-vsaDescription = lens _vsaDescription (\s a -> s { _vsaDescription = a })---- | The ID of the event associated with this operation.-vsaEventId :: Lens' VolumeStatusAction (Maybe Text)-vsaEventId = lens _vsaEventId (\s a -> s { _vsaEventId = a })---- | The event type associated with this operation.-vsaEventType :: Lens' VolumeStatusAction (Maybe Text)-vsaEventType = lens _vsaEventType (\s a -> s { _vsaEventType = a })--instance FromXML VolumeStatusAction where-    parseXML x = VolumeStatusAction-        <$> x .@? "code"-        <*> x .@? "description"-        <*> x .@? "eventId"-        <*> x .@? "eventType"--instance ToQuery VolumeStatusAction where-    toQuery VolumeStatusAction{..} = mconcat-        [ "Code"        =? _vsaCode-        , "Description" =? _vsaDescription-        , "EventId"     =? _vsaEventId-        , "EventType"   =? _vsaEventType-        ]--data VpcPeeringConnectionVpcInfo = VpcPeeringConnectionVpcInfo-    { _vpcviCidrBlock :: Maybe Text-    , _vpcviOwnerId   :: Maybe Text-    , _vpcviVpcId     :: Maybe Text-    } deriving (Eq, Ord, Read, Show)---- | 'VpcPeeringConnectionVpcInfo' constructor.------ The fields accessible through corresponding lenses are:------ * 'vpcviCidrBlock' @::@ 'Maybe' 'Text'------ * 'vpcviOwnerId' @::@ 'Maybe' 'Text'------ * 'vpcviVpcId' @::@ 'Maybe' 'Text'----vpcPeeringConnectionVpcInfo :: VpcPeeringConnectionVpcInfo-vpcPeeringConnectionVpcInfo = VpcPeeringConnectionVpcInfo-    { _vpcviCidrBlock = Nothing-    , _vpcviOwnerId   = Nothing-    , _vpcviVpcId     = Nothing-    }---- | The CIDR block for the VPC.-vpcviCidrBlock :: Lens' VpcPeeringConnectionVpcInfo (Maybe Text)-vpcviCidrBlock = lens _vpcviCidrBlock (\s a -> s { _vpcviCidrBlock = a })---- | The AWS account ID of the VPC owner.-vpcviOwnerId :: Lens' VpcPeeringConnectionVpcInfo (Maybe Text)-vpcviOwnerId = lens _vpcviOwnerId (\s a -> s { _vpcviOwnerId = a })---- | The ID of the VPC.-vpcviVpcId :: Lens' VpcPeeringConnectionVpcInfo (Maybe Text)-vpcviVpcId = lens _vpcviVpcId (\s a -> s { _vpcviVpcId = a })--instance FromXML VpcPeeringConnectionVpcInfo where-    parseXML x = VpcPeeringConnectionVpcInfo-        <$> x .@? "cidrBlock"-        <*> x .@? "ownerId"-        <*> x .@? "vpcId"--instance ToQuery VpcPeeringConnectionVpcInfo where-    toQuery VpcPeeringConnectionVpcInfo{..} = mconcat-        [ "CidrBlock" =? _vpcviCidrBlock-        , "OwnerId"   =? _vpcviOwnerId-        , "VpcId"     =? _vpcviVpcId-        ]--data ReservedInstanceLimitPrice = ReservedInstanceLimitPrice-    { _rilpAmount       :: Maybe Double-    , _rilpCurrencyCode :: Maybe CurrencyCodeValues-    } deriving (Eq, Read, Show)---- | 'ReservedInstanceLimitPrice' constructor.------ The fields accessible through corresponding lenses are:------ * 'rilpAmount' @::@ 'Maybe' 'Double'------ * 'rilpCurrencyCode' @::@ 'Maybe' 'CurrencyCodeValues'----reservedInstanceLimitPrice :: ReservedInstanceLimitPrice-reservedInstanceLimitPrice = ReservedInstanceLimitPrice-    { _rilpAmount       = Nothing-    , _rilpCurrencyCode = Nothing-    }---- | Used for Reserved Instance Marketplace offerings. Specifies the limit price--- on the total order (instanceCount * price).-rilpAmount :: Lens' ReservedInstanceLimitPrice (Maybe Double)-rilpAmount = lens _rilpAmount (\s a -> s { _rilpAmount = a })---- | The currency in which the 'limitPrice' amount is specified. At this time, the--- only supported currency is 'USD'.-rilpCurrencyCode :: Lens' ReservedInstanceLimitPrice (Maybe CurrencyCodeValues)-rilpCurrencyCode = lens _rilpCurrencyCode (\s a -> s { _rilpCurrencyCode = a })--instance FromXML ReservedInstanceLimitPrice where-    parseXML x = ReservedInstanceLimitPrice-        <$> x .@? "amount"-        <*> x .@? "currencyCode"--instance ToQuery ReservedInstanceLimitPrice where-    toQuery ReservedInstanceLimitPrice{..} = mconcat-        [ "Amount"       =? _rilpAmount-        , "CurrencyCode" =? _rilpCurrencyCode-        ]--data Vpc = Vpc-    { _vpcCidrBlock       :: Text-    , _vpcDhcpOptionsId   :: Text-    , _vpcInstanceTenancy :: Tenancy-    , _vpcIsDefault       :: Bool-    , _vpcState           :: VpcState-    , _vpcTags            :: List "item" Tag-    , _vpcVpcId           :: Text-    } deriving (Eq, Read, Show)---- | 'Vpc' constructor.------ The fields accessible through corresponding lenses are:------ * 'vpcCidrBlock' @::@ 'Text'------ * 'vpcDhcpOptionsId' @::@ 'Text'------ * 'vpcInstanceTenancy' @::@ 'Tenancy'------ * 'vpcIsDefault' @::@ 'Bool'------ * 'vpcState' @::@ 'VpcState'------ * 'vpcTags' @::@ ['Tag']------ * 'vpcVpcId' @::@ 'Text'----vpc :: Text -- ^ 'vpcVpcId'-    -> VpcState -- ^ 'vpcState'-    -> Text -- ^ 'vpcCidrBlock'-    -> Text -- ^ 'vpcDhcpOptionsId'-    -> Tenancy -- ^ 'vpcInstanceTenancy'-    -> Bool -- ^ 'vpcIsDefault'-    -> Vpc-vpc p1 p2 p3 p4 p5 p6 = Vpc-    { _vpcVpcId           = p1-    , _vpcState           = p2-    , _vpcCidrBlock       = p3-    , _vpcDhcpOptionsId   = p4-    , _vpcInstanceTenancy = p5-    , _vpcIsDefault       = p6-    , _vpcTags            = mempty-    }---- | The CIDR block for the VPC.-vpcCidrBlock :: Lens' Vpc Text-vpcCidrBlock = lens _vpcCidrBlock (\s a -> s { _vpcCidrBlock = a })---- | The ID of the set of DHCP options you've associated with the VPC (or 'default'--- if the default options are associated with the VPC).-vpcDhcpOptionsId :: Lens' Vpc Text-vpcDhcpOptionsId = lens _vpcDhcpOptionsId (\s a -> s { _vpcDhcpOptionsId = a })---- | The allowed tenancy of instances launched into the VPC.-vpcInstanceTenancy :: Lens' Vpc Tenancy-vpcInstanceTenancy =-    lens _vpcInstanceTenancy (\s a -> s { _vpcInstanceTenancy = a })---- | Indicates whether the VPC is the default VPC.-vpcIsDefault :: Lens' Vpc Bool-vpcIsDefault = lens _vpcIsDefault (\s a -> s { _vpcIsDefault = a })---- | The current state of the VPC.-vpcState :: Lens' Vpc VpcState-vpcState = lens _vpcState (\s a -> s { _vpcState = a })---- | Any tags assigned to the VPC.-vpcTags :: Lens' Vpc [Tag]-vpcTags = lens _vpcTags (\s a -> s { _vpcTags = a }) . _List---- | The ID of the VPC.-vpcVpcId :: Lens' Vpc Text-vpcVpcId = lens _vpcVpcId (\s a -> s { _vpcVpcId = a })--instance FromXML Vpc where-    parseXML x = Vpc-        <$> x .@  "cidrBlock"-        <*> x .@  "dhcpOptionsId"-        <*> x .@  "instanceTenancy"-        <*> x .@  "isDefault"-        <*> x .@  "state"-        <*> x .@? "tagSet" .!@ mempty-        <*> x .@  "vpcId"--instance ToQuery Vpc where-    toQuery Vpc{..} = mconcat-        [ "CidrBlock"       =? _vpcCidrBlock-        , "DhcpOptionsId"   =? _vpcDhcpOptionsId-        , "InstanceTenancy" =? _vpcInstanceTenancy-        , "IsDefault"       =? _vpcIsDefault-        , "State"           =? _vpcState-        , "TagSet"          `toQueryList` _vpcTags-        , "VpcId"           =? _vpcVpcId-        ]--data InstanceStatus = InstanceStatus-    { _isAvailabilityZone :: Maybe Text-    , _isEvents           :: List "item" InstanceStatusEvent-    , _isInstanceId       :: Maybe Text-    , _isInstanceState    :: Maybe InstanceState-    , _isInstanceStatus   :: Maybe InstanceStatusSummary-    , _isSystemStatus     :: Maybe InstanceStatusSummary-    } deriving (Eq, Read, Show)---- | 'InstanceStatus' constructor.------ The fields accessible through corresponding lenses are:------ * 'isAvailabilityZone' @::@ 'Maybe' 'Text'------ * 'isEvents' @::@ ['InstanceStatusEvent']------ * 'isInstanceId' @::@ 'Maybe' 'Text'------ * 'isInstanceState' @::@ 'Maybe' 'InstanceState'------ * 'isInstanceStatus' @::@ 'Maybe' 'InstanceStatusSummary'------ * 'isSystemStatus' @::@ 'Maybe' 'InstanceStatusSummary'----instanceStatus :: InstanceStatus-instanceStatus = InstanceStatus-    { _isInstanceId       = Nothing-    , _isAvailabilityZone = Nothing-    , _isEvents           = mempty-    , _isInstanceState    = Nothing-    , _isSystemStatus     = Nothing-    , _isInstanceStatus   = Nothing-    }---- | The Availability Zone of the instance.-isAvailabilityZone :: Lens' InstanceStatus (Maybe Text)-isAvailabilityZone =-    lens _isAvailabilityZone (\s a -> s { _isAvailabilityZone = a })---- | Extra information regarding events associated with the instance.-isEvents :: Lens' InstanceStatus [InstanceStatusEvent]-isEvents = lens _isEvents (\s a -> s { _isEvents = a }) . _List---- | The ID of the instance.-isInstanceId :: Lens' InstanceStatus (Maybe Text)-isInstanceId = lens _isInstanceId (\s a -> s { _isInstanceId = a })---- | The intended state of the instance. 'DescribeInstanceStatus' requires that an--- instance be in the 'running' state.-isInstanceState :: Lens' InstanceStatus (Maybe InstanceState)-isInstanceState = lens _isInstanceState (\s a -> s { _isInstanceState = a })---- | Reports impaired functionality that stems from issues internal to the--- instance, such as impaired reachability.-isInstanceStatus :: Lens' InstanceStatus (Maybe InstanceStatusSummary)-isInstanceStatus = lens _isInstanceStatus (\s a -> s { _isInstanceStatus = a })---- | Reports impaired functionality that stems from issues related to the systems--- that support an instance, such as hardware failures and network connectivity--- problems.-isSystemStatus :: Lens' InstanceStatus (Maybe InstanceStatusSummary)-isSystemStatus = lens _isSystemStatus (\s a -> s { _isSystemStatus = a })--instance FromXML InstanceStatus where-    parseXML x = InstanceStatus-        <$> x .@? "availabilityZone"-        <*> x .@? "eventsSet" .!@ mempty-        <*> x .@? "instanceId"-        <*> x .@? "instanceState"-        <*> x .@? "instanceStatus"-        <*> x .@? "systemStatus"--instance ToQuery InstanceStatus where-    toQuery InstanceStatus{..} = mconcat-        [ "AvailabilityZone" =? _isAvailabilityZone-        , "EventsSet"        `toQueryList` _isEvents-        , "InstanceId"       =? _isInstanceId-        , "InstanceState"    =? _isInstanceState-        , "InstanceStatus"   =? _isInstanceStatus-        , "SystemStatus"     =? _isSystemStatus-        ]--data ArchitectureValues-    = I386  -- ^ i386-    | X8664 -- ^ x86_64-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable ArchitectureValues--instance FromText ArchitectureValues where-    parser = takeLowerText >>= \case-        "i386"   -> pure I386-        "x86_64" -> pure X8664-        e        -> fail $-            "Failure parsing ArchitectureValues from " ++ show e--instance ToText ArchitectureValues where-    toText = \case-        I386  -> "i386"-        X8664 -> "x86_64"--instance ToByteString ArchitectureValues-instance ToHeader     ArchitectureValues-instance ToQuery      ArchitectureValues--instance FromXML ArchitectureValues where-    parseXML = parseXMLText "ArchitectureValues"--data ReportInstanceReasonCodes-    = InstanceStuckInState     -- ^ instance-stuck-in-state-    | NotAcceptingCredentials  -- ^ not-accepting-credentials-    | Other                    -- ^ other-    | PasswordNotAvailable     -- ^ password-not-available-    | PerformanceEbsVolume     -- ^ performance-ebs-volume-    | PerformanceInstanceStore -- ^ performance-instance-store-    | PerformanceNetwork       -- ^ performance-network-    | PerformanceOther         -- ^ performance-other-    | Unresponsive             -- ^ unresponsive-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable ReportInstanceReasonCodes--instance FromText ReportInstanceReasonCodes where-    parser = takeLowerText >>= \case-        "instance-stuck-in-state"    -> pure InstanceStuckInState-        "not-accepting-credentials"  -> pure NotAcceptingCredentials-        "other"                      -> pure Other-        "password-not-available"     -> pure PasswordNotAvailable-        "performance-ebs-volume"     -> pure PerformanceEbsVolume-        "performance-instance-store" -> pure PerformanceInstanceStore-        "performance-network"        -> pure PerformanceNetwork-        "performance-other"          -> pure PerformanceOther-        "unresponsive"               -> pure Unresponsive-        e                            -> fail $-            "Failure parsing ReportInstanceReasonCodes from " ++ show e--instance ToText ReportInstanceReasonCodes where-    toText = \case-        InstanceStuckInState     -> "instance-stuck-in-state"-        NotAcceptingCredentials  -> "not-accepting-credentials"-        Other                    -> "other"-        PasswordNotAvailable     -> "password-not-available"-        PerformanceEbsVolume     -> "performance-ebs-volume"-        PerformanceInstanceStore -> "performance-instance-store"-        PerformanceNetwork       -> "performance-network"-        PerformanceOther         -> "performance-other"-        Unresponsive             -> "unresponsive"--instance ToByteString ReportInstanceReasonCodes-instance ToHeader     ReportInstanceReasonCodes-instance ToQuery      ReportInstanceReasonCodes--instance FromXML ReportInstanceReasonCodes where-    parseXML = parseXMLText "ReportInstanceReasonCodes"--data EbsBlockDevice = EbsBlockDevice-    { _ebdDeleteOnTermination :: Maybe Bool-    , _ebdEncrypted           :: Maybe Bool-    , _ebdIops                :: Maybe Int-    , _ebdSnapshotId          :: Maybe Text-    , _ebdVolumeSize          :: Maybe Int-    , _ebdVolumeType          :: Maybe VolumeType-    } deriving (Eq, Read, Show)---- | 'EbsBlockDevice' constructor.------ The fields accessible through corresponding lenses are:------ * 'ebdDeleteOnTermination' @::@ 'Maybe' 'Bool'------ * 'ebdEncrypted' @::@ 'Maybe' 'Bool'------ * 'ebdIops' @::@ 'Maybe' 'Int'------ * 'ebdSnapshotId' @::@ 'Maybe' 'Text'------ * 'ebdVolumeSize' @::@ 'Maybe' 'Int'------ * 'ebdVolumeType' @::@ 'Maybe' 'VolumeType'----ebsBlockDevice :: EbsBlockDevice-ebsBlockDevice = EbsBlockDevice-    { _ebdSnapshotId          = Nothing-    , _ebdVolumeSize          = Nothing-    , _ebdDeleteOnTermination = Nothing-    , _ebdVolumeType          = Nothing-    , _ebdIops                = Nothing-    , _ebdEncrypted           = Nothing-    }---- | Indicates whether the Amazon EBS volume is deleted on instance termination.-ebdDeleteOnTermination :: Lens' EbsBlockDevice (Maybe Bool)-ebdDeleteOnTermination =-    lens _ebdDeleteOnTermination (\s a -> s { _ebdDeleteOnTermination = a })---- | Indicates whether the Amazon EBS volume is encrypted. Encrypted Amazon EBS--- volumes may only be attached to instances that support Amazon EBS encryption.-ebdEncrypted :: Lens' EbsBlockDevice (Maybe Bool)-ebdEncrypted = lens _ebdEncrypted (\s a -> s { _ebdEncrypted = a })---- | The number of I/O operations per second (IOPS) that the volume supports. For--- Provisioned IOPS (SSD) volumes, this represents the number of IOPS that are--- provisioned for the volume. For General Purpose (SSD) volumes, this--- represents the baseline performance of the volume and the rate at which the--- volume accumulates I/O credits for bursting. For more information on General--- Purpose (SSD) baseline performance, I/O credits, and bursting, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html Amazon EBSVolume Types> in the /Amazon Elastic Compute Cloud User Guide for Linux/.------ Constraint: Range is 100 to 20000 for Provisioned IOPS (SSD) volumes and 3--- to 10000 for General Purpose (SSD) volumes.------ Condition: This parameter is required for requests to create 'io1' volumes; it--- is not used in requests to create 'standard' or 'gp2' volumes.-ebdIops :: Lens' EbsBlockDevice (Maybe Int)-ebdIops = lens _ebdIops (\s a -> s { _ebdIops = a })---- | The ID of the snapshot.-ebdSnapshotId :: Lens' EbsBlockDevice (Maybe Text)-ebdSnapshotId = lens _ebdSnapshotId (\s a -> s { _ebdSnapshotId = a })---- | The size of the volume, in GiB.------ Constraints: '1-1024' for 'standard' volumes, '1-16384' for 'gp2' volumes, and '4-16384' for 'io1' volumes. If you specify a snapshot, the volume size must be equal to--- or larger than the snapshot size.------ Default: If you're creating the volume from a snapshot and don't specify a--- volume size, the default is the snapshot size.-ebdVolumeSize :: Lens' EbsBlockDevice (Maybe Int)-ebdVolumeSize = lens _ebdVolumeSize (\s a -> s { _ebdVolumeSize = a })---- | The volume type. 'gp2' for General Purpose (SSD) volumes, 'io1' for Provisioned--- IOPS (SSD) volumes, and 'standard' for Magnetic volumes.------ Default: 'standard'-ebdVolumeType :: Lens' EbsBlockDevice (Maybe VolumeType)-ebdVolumeType = lens _ebdVolumeType (\s a -> s { _ebdVolumeType = a })--instance FromXML EbsBlockDevice where-    parseXML x = EbsBlockDevice-        <$> x .@? "deleteOnTermination"-        <*> x .@? "encrypted"-        <*> x .@? "iops"-        <*> x .@? "snapshotId"-        <*> x .@? "volumeSize"-        <*> x .@? "volumeType"--instance ToQuery EbsBlockDevice where-    toQuery EbsBlockDevice{..} = mconcat-        [ "DeleteOnTermination" =? _ebdDeleteOnTermination-        , "Encrypted"           =? _ebdEncrypted-        , "Iops"                =? _ebdIops-        , "SnapshotId"          =? _ebdSnapshotId-        , "VolumeSize"          =? _ebdVolumeSize-        , "VolumeType"          =? _ebdVolumeType-        ]--data AccountAttribute = AccountAttribute-    { _aaAttributeName   :: Maybe Text-    , _aaAttributeValues :: List "item" AccountAttributeValue-    } deriving (Eq, Read, Show)---- | 'AccountAttribute' constructor.------ The fields accessible through corresponding lenses are:------ * 'aaAttributeName' @::@ 'Maybe' 'Text'------ * 'aaAttributeValues' @::@ ['AccountAttributeValue']----accountAttribute :: AccountAttribute-accountAttribute = AccountAttribute-    { _aaAttributeName   = Nothing-    , _aaAttributeValues = mempty-    }---- | The name of the account attribute.-aaAttributeName :: Lens' AccountAttribute (Maybe Text)-aaAttributeName = lens _aaAttributeName (\s a -> s { _aaAttributeName = a })---- | One or more values for the account attribute.-aaAttributeValues :: Lens' AccountAttribute [AccountAttributeValue]-aaAttributeValues =-    lens _aaAttributeValues (\s a -> s { _aaAttributeValues = a })-        . _List--instance FromXML AccountAttribute where-    parseXML x = AccountAttribute-        <$> x .@? "attributeName"-        <*> x .@? "attributeValueSet" .!@ mempty--instance ToQuery AccountAttribute where-    toQuery AccountAttribute{..} = mconcat-        [ "AttributeName"     =? _aaAttributeName-        , "AttributeValueSet" `toQueryList` _aaAttributeValues-        ]--data PriceSchedule = PriceSchedule-    { _psActive       :: Maybe Bool-    , _psCurrencyCode :: Maybe CurrencyCodeValues-    , _psPrice        :: Maybe Double-    , _psTerm         :: Maybe Integer-    } deriving (Eq, Read, Show)---- | 'PriceSchedule' constructor.------ The fields accessible through corresponding lenses are:------ * 'psActive' @::@ 'Maybe' 'Bool'------ * 'psCurrencyCode' @::@ 'Maybe' 'CurrencyCodeValues'------ * 'psPrice' @::@ 'Maybe' 'Double'------ * 'psTerm' @::@ 'Maybe' 'Integer'----priceSchedule :: PriceSchedule-priceSchedule = PriceSchedule-    { _psTerm         = Nothing-    , _psPrice        = Nothing-    , _psCurrencyCode = Nothing-    , _psActive       = Nothing-    }---- | The current price schedule, as determined by the term remaining for the--- Reserved Instance in the listing.------ A specific price schedule is always in effect, but only one price schedule--- can be active at any time. Take, for example, a Reserved Instance listing--- that has five months remaining in its term. When you specify price schedules--- for five months and two months, this means that schedule 1, covering the--- first three months of the remaining term, will be active during months 5, 4,--- and 3. Then schedule 2, covering the last two months of the term, will be--- active for months 2 and 1.-psActive :: Lens' PriceSchedule (Maybe Bool)-psActive = lens _psActive (\s a -> s { _psActive = a })---- | The currency for transacting the Reserved Instance resale. At this time, the--- only supported currency is 'USD'.-psCurrencyCode :: Lens' PriceSchedule (Maybe CurrencyCodeValues)-psCurrencyCode = lens _psCurrencyCode (\s a -> s { _psCurrencyCode = a })---- | The fixed price for the term.-psPrice :: Lens' PriceSchedule (Maybe Double)-psPrice = lens _psPrice (\s a -> s { _psPrice = a })---- | The number of months remaining in the reservation. For example, 2 is the--- second to the last month before the capacity reservation expires.-psTerm :: Lens' PriceSchedule (Maybe Integer)-psTerm = lens _psTerm (\s a -> s { _psTerm = a })--instance FromXML PriceSchedule where-    parseXML x = PriceSchedule-        <$> x .@? "active"-        <*> x .@? "currencyCode"-        <*> x .@? "price"-        <*> x .@? "term"--instance ToQuery PriceSchedule where-    toQuery PriceSchedule{..} = mconcat-        [ "Active"       =? _psActive-        , "CurrencyCode" =? _psCurrencyCode-        , "Price"        =? _psPrice-        , "Term"         =? _psTerm-        ]--data DeviceType-    = Ebs           -- ^ ebs-    | InstanceStore -- ^ instance-store-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable DeviceType--instance FromText DeviceType where-    parser = takeLowerText >>= \case-        "ebs"            -> pure Ebs-        "instance-store" -> pure InstanceStore-        e                -> fail $-            "Failure parsing DeviceType from " ++ show e--instance ToText DeviceType where-    toText = \case-        Ebs           -> "ebs"-        InstanceStore -> "instance-store"--instance ToByteString DeviceType-instance ToHeader     DeviceType-instance ToQuery      DeviceType--instance FromXML DeviceType where-    parseXML = parseXMLText "DeviceType"--data DomainType-    = DTStandard -- ^ standard-    | DTVpc      -- ^ vpc-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable DomainType--instance FromText DomainType where-    parser = takeLowerText >>= \case-        "standard" -> pure DTStandard-        "vpc"      -> pure DTVpc-        e          -> fail $-            "Failure parsing DomainType from " ++ show e--instance ToText DomainType where-    toText = \case-        DTStandard -> "standard"-        DTVpc      -> "vpc"--instance ToByteString DomainType-instance ToHeader     DomainType-instance ToQuery      DomainType--instance FromXML DomainType where-    parseXML = parseXMLText "DomainType"--data Region = Region-    { _rEndpoint   :: Maybe Text-    , _rRegionName :: Maybe Text-    } deriving (Eq, Ord, Read, Show)---- | 'Region' constructor.------ The fields accessible through corresponding lenses are:------ * 'rEndpoint' @::@ 'Maybe' 'Text'------ * 'rRegionName' @::@ 'Maybe' 'Text'----region :: Region-region = Region-    { _rRegionName = Nothing-    , _rEndpoint   = Nothing-    }---- | The region service endpoint.-rEndpoint :: Lens' Region (Maybe Text)-rEndpoint = lens _rEndpoint (\s a -> s { _rEndpoint = a })---- | The name of the region.-rRegionName :: Lens' Region (Maybe Text)-rRegionName = lens _rRegionName (\s a -> s { _rRegionName = a })--instance FromXML Region where-    parseXML x = Region-        <$> x .@? "regionEndpoint"-        <*> x .@? "regionName"--instance ToQuery Region where-    toQuery Region{..} = mconcat-        [ "RegionEndpoint" =? _rEndpoint-        , "RegionName"     =? _rRegionName-        ]--newtype PropagatingVgw = PropagatingVgw-    { _pvGatewayId :: Maybe Text-    } deriving (Eq, Ord, Read, Show, Monoid)---- | 'PropagatingVgw' constructor.------ The fields accessible through corresponding lenses are:------ * 'pvGatewayId' @::@ 'Maybe' 'Text'----propagatingVgw :: PropagatingVgw-propagatingVgw = PropagatingVgw-    { _pvGatewayId = Nothing-    }---- | The ID of the virtual private gateway (VGW).-pvGatewayId :: Lens' PropagatingVgw (Maybe Text)-pvGatewayId = lens _pvGatewayId (\s a -> s { _pvGatewayId = a })--instance FromXML PropagatingVgw where-    parseXML x = PropagatingVgw-        <$> x .@? "gatewayId"--instance ToQuery PropagatingVgw where-    toQuery PropagatingVgw{..} = mconcat-        [ "GatewayId" =? _pvGatewayId-        ]--data OfferingTypeValues-    = AllUpfront        -- ^ All Upfront-    | HeavyUtilization  -- ^ Heavy Utilization-    | LightUtilization  -- ^ Light Utilization-    | MediumUtilization -- ^ Medium Utilization-    | NoUpfront         -- ^ No Upfront-    | PartialUpfront    -- ^ Partial Upfront-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable OfferingTypeValues--instance FromText OfferingTypeValues where-    parser = takeLowerText >>= \case-        "all upfront"        -> pure AllUpfront-        "heavy utilization"  -> pure HeavyUtilization-        "light utilization"  -> pure LightUtilization-        "medium utilization" -> pure MediumUtilization-        "no upfront"         -> pure NoUpfront-        "partial upfront"    -> pure PartialUpfront-        e                    -> fail $-            "Failure parsing OfferingTypeValues from " ++ show e--instance ToText OfferingTypeValues where-    toText = \case-        AllUpfront        -> "All Upfront"-        HeavyUtilization  -> "Heavy Utilization"-        LightUtilization  -> "Light Utilization"-        MediumUtilization -> "Medium Utilization"-        NoUpfront         -> "No Upfront"-        PartialUpfront    -> "Partial Upfront"--instance ToByteString OfferingTypeValues-instance ToHeader     OfferingTypeValues-instance ToQuery      OfferingTypeValues--instance FromXML OfferingTypeValues where-    parseXML = parseXMLText "OfferingTypeValues"--data VpnGateway = VpnGateway-    { _vgAvailabilityZone :: Maybe Text-    , _vgState            :: Maybe VpnState-    , _vgTags             :: List "item" Tag-    , _vgType             :: Maybe GatewayType-    , _vgVpcAttachments   :: List "item" VpcAttachment-    , _vgVpnGatewayId     :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'VpnGateway' constructor.------ The fields accessible through corresponding lenses are:------ * 'vgAvailabilityZone' @::@ 'Maybe' 'Text'------ * 'vgState' @::@ 'Maybe' 'VpnState'------ * 'vgTags' @::@ ['Tag']------ * 'vgType' @::@ 'Maybe' 'GatewayType'------ * 'vgVpcAttachments' @::@ ['VpcAttachment']------ * 'vgVpnGatewayId' @::@ 'Maybe' 'Text'----vpnGateway :: VpnGateway-vpnGateway = VpnGateway-    { _vgVpnGatewayId     = Nothing-    , _vgState            = Nothing-    , _vgType             = Nothing-    , _vgAvailabilityZone = Nothing-    , _vgVpcAttachments   = mempty-    , _vgTags             = mempty-    }---- | The Availability Zone where the virtual private gateway was created.-vgAvailabilityZone :: Lens' VpnGateway (Maybe Text)-vgAvailabilityZone =-    lens _vgAvailabilityZone (\s a -> s { _vgAvailabilityZone = a })---- | The current state of the virtual private gateway.-vgState :: Lens' VpnGateway (Maybe VpnState)-vgState = lens _vgState (\s a -> s { _vgState = a })---- | Any tags assigned to the virtual private gateway.-vgTags :: Lens' VpnGateway [Tag]-vgTags = lens _vgTags (\s a -> s { _vgTags = a }) . _List---- | The type of VPN connection the virtual private gateway supports.-vgType :: Lens' VpnGateway (Maybe GatewayType)-vgType = lens _vgType (\s a -> s { _vgType = a })---- | Any VPCs attached to the virtual private gateway.-vgVpcAttachments :: Lens' VpnGateway [VpcAttachment]-vgVpcAttachments = lens _vgVpcAttachments (\s a -> s { _vgVpcAttachments = a }) . _List---- | The ID of the virtual private gateway.-vgVpnGatewayId :: Lens' VpnGateway (Maybe Text)-vgVpnGatewayId = lens _vgVpnGatewayId (\s a -> s { _vgVpnGatewayId = a })--instance FromXML VpnGateway where-    parseXML x = VpnGateway-        <$> x .@? "availabilityZone"-        <*> x .@? "state"-        <*> x .@? "tagSet" .!@ mempty-        <*> x .@? "type"-        <*> x .@? "attachments" .!@ mempty-        <*> x .@? "vpnGatewayId"--instance ToQuery VpnGateway where-    toQuery VpnGateway{..} = mconcat-        [ "AvailabilityZone" =? _vgAvailabilityZone-        , "State"            =? _vgState-        , "TagSet"           `toQueryList` _vgTags-        , "Type"             =? _vgType-        , "Attachments"      `toQueryList` _vgVpcAttachments-        , "VpnGatewayId"     =? _vgVpnGatewayId-        ]--data Filter = Filter-    { _fName   :: Text-    , _fValues :: List "item" Text-    } deriving (Eq, Ord, Read, Show)---- | 'Filter' constructor.------ The fields accessible through corresponding lenses are:------ * 'fName' @::@ 'Text'------ * 'fValues' @::@ ['Text']----filter' :: Text -- ^ 'fName'-        -> Filter-filter' p1 = Filter-    { _fName   = p1-    , _fValues = mempty-    }---- | The name of the filter. Filter names are case-sensitive.-fName :: Lens' Filter Text-fName = lens _fName (\s a -> s { _fName = a })---- | One or more filter values. Filter values are case-sensitive.-fValues :: Lens' Filter [Text]-fValues = lens _fValues (\s a -> s { _fValues = a }) . _List--instance FromXML Filter where-    parseXML x = Filter-        <$> x .@  "Name"-        <*> x .@? "Value" .!@ mempty--instance ToQuery Filter where-    toQuery Filter{..} = mconcat-        [ "Name"  =? _fName-        , "Value" `toQueryList` _fValues-        ]--data VolumeType-    = Gp2      -- ^ gp2-    | Io1      -- ^ io1-    | Standard -- ^ standard-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable VolumeType--instance FromText VolumeType where-    parser = takeLowerText >>= \case-        "gp2"      -> pure Gp2-        "io1"      -> pure Io1-        "standard" -> pure Standard-        e          -> fail $-            "Failure parsing VolumeType from " ++ show e--instance ToText VolumeType where-    toText = \case-        Gp2      -> "gp2"-        Io1      -> "io1"-        Standard -> "standard"--instance ToByteString VolumeType-instance ToHeader     VolumeType-instance ToQuery      VolumeType--instance FromXML VolumeType where-    parseXML = parseXMLText "VolumeType"--data InstanceStateChange = InstanceStateChange-    { _iscCurrentState  :: Maybe InstanceState-    , _iscInstanceId    :: Maybe Text-    , _iscPreviousState :: Maybe InstanceState-    } deriving (Eq, Read, Show)---- | 'InstanceStateChange' constructor.------ The fields accessible through corresponding lenses are:------ * 'iscCurrentState' @::@ 'Maybe' 'InstanceState'------ * 'iscInstanceId' @::@ 'Maybe' 'Text'------ * 'iscPreviousState' @::@ 'Maybe' 'InstanceState'----instanceStateChange :: InstanceStateChange-instanceStateChange = InstanceStateChange-    { _iscInstanceId    = Nothing-    , _iscCurrentState  = Nothing-    , _iscPreviousState = Nothing-    }---- | The current state of the instance.-iscCurrentState :: Lens' InstanceStateChange (Maybe InstanceState)-iscCurrentState = lens _iscCurrentState (\s a -> s { _iscCurrentState = a })---- | The ID of the instance.-iscInstanceId :: Lens' InstanceStateChange (Maybe Text)-iscInstanceId = lens _iscInstanceId (\s a -> s { _iscInstanceId = a })---- | The previous state of the instance.-iscPreviousState :: Lens' InstanceStateChange (Maybe InstanceState)-iscPreviousState = lens _iscPreviousState (\s a -> s { _iscPreviousState = a })--instance FromXML InstanceStateChange where-    parseXML x = InstanceStateChange-        <$> x .@? "currentState"-        <*> x .@? "instanceId"-        <*> x .@? "previousState"--instance ToQuery InstanceStateChange where-    toQuery InstanceStateChange{..} = mconcat-        [ "CurrentState"  =? _iscCurrentState-        , "InstanceId"    =? _iscInstanceId-        , "PreviousState" =? _iscPreviousState-        ]--data NetworkAcl = NetworkAcl-    { _naAssociations :: List "item" NetworkAclAssociation-    , _naEntries      :: List "item" NetworkAclEntry-    , _naIsDefault    :: Maybe Bool-    , _naNetworkAclId :: Maybe Text-    , _naTags         :: List "item" Tag-    , _naVpcId        :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'NetworkAcl' constructor.------ The fields accessible through corresponding lenses are:------ * 'naAssociations' @::@ ['NetworkAclAssociation']------ * 'naEntries' @::@ ['NetworkAclEntry']------ * 'naIsDefault' @::@ 'Maybe' 'Bool'------ * 'naNetworkAclId' @::@ 'Maybe' 'Text'------ * 'naTags' @::@ ['Tag']------ * 'naVpcId' @::@ 'Maybe' 'Text'----networkAcl :: NetworkAcl-networkAcl = NetworkAcl-    { _naNetworkAclId = Nothing-    , _naVpcId        = Nothing-    , _naIsDefault    = Nothing-    , _naEntries      = mempty-    , _naAssociations = mempty-    , _naTags         = mempty-    }---- | Any associations between the network ACL and one or more subnets-naAssociations :: Lens' NetworkAcl [NetworkAclAssociation]-naAssociations = lens _naAssociations (\s a -> s { _naAssociations = a }) . _List---- | One or more entries (rules) in the network ACL.-naEntries :: Lens' NetworkAcl [NetworkAclEntry]-naEntries = lens _naEntries (\s a -> s { _naEntries = a }) . _List---- | Indicates whether this is the default network ACL for the VPC.-naIsDefault :: Lens' NetworkAcl (Maybe Bool)-naIsDefault = lens _naIsDefault (\s a -> s { _naIsDefault = a })---- | The ID of the network ACL.-naNetworkAclId :: Lens' NetworkAcl (Maybe Text)-naNetworkAclId = lens _naNetworkAclId (\s a -> s { _naNetworkAclId = a })---- | Any tags assigned to the network ACL.-naTags :: Lens' NetworkAcl [Tag]-naTags = lens _naTags (\s a -> s { _naTags = a }) . _List---- | The ID of the VPC for the network ACL.-naVpcId :: Lens' NetworkAcl (Maybe Text)-naVpcId = lens _naVpcId (\s a -> s { _naVpcId = a })--instance FromXML NetworkAcl where-    parseXML x = NetworkAcl-        <$> x .@? "associationSet" .!@ mempty-        <*> x .@? "entrySet" .!@ mempty-        <*> x .@? "default"-        <*> x .@? "networkAclId"-        <*> x .@? "tagSet" .!@ mempty-        <*> x .@? "vpcId"--instance ToQuery NetworkAcl where-    toQuery NetworkAcl{..} = mconcat-        [ "AssociationSet" `toQueryList` _naAssociations-        , "EntrySet"       `toQueryList` _naEntries-        , "Default"        =? _naIsDefault-        , "NetworkAclId"   =? _naNetworkAclId-        , "TagSet"         `toQueryList` _naTags-        , "VpcId"          =? _naVpcId-        ]--data ImageState-    = ISAvailable    -- ^ available-    | ISDeregistered -- ^ deregistered-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable ImageState--instance FromText ImageState where-    parser = takeLowerText >>= \case-        "available"    -> pure ISAvailable-        "deregistered" -> pure ISDeregistered-        e              -> fail $-            "Failure parsing ImageState from " ++ show e--instance ToText ImageState where-    toText = \case-        ISAvailable    -> "available"-        ISDeregistered -> "deregistered"--instance ToByteString ImageState-instance ToHeader     ImageState-instance ToQuery      ImageState--instance FromXML ImageState where-    parseXML = parseXMLText "ImageState"--data GatewayType-    = Ipsec1 -- ^ ipsec.1-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable GatewayType--instance FromText GatewayType where-    parser = takeLowerText >>= \case-        "ipsec.1" -> pure Ipsec1-        e         -> fail $-            "Failure parsing GatewayType from " ++ show e--instance ToText GatewayType where-    toText Ipsec1 = "ipsec.1"--instance ToByteString GatewayType-instance ToHeader     GatewayType-instance ToQuery      GatewayType--instance FromXML GatewayType where-    parseXML = parseXMLText "GatewayType"--data InstanceNetworkInterfaceAttachment = InstanceNetworkInterfaceAttachment-    { _iniaAttachTime          :: Maybe ISO8601-    , _iniaAttachmentId        :: Maybe Text-    , _iniaDeleteOnTermination :: Maybe Bool-    , _iniaDeviceIndex         :: Maybe Int-    , _iniaStatus              :: Maybe AttachmentStatus-    } deriving (Eq, Read, Show)---- | 'InstanceNetworkInterfaceAttachment' constructor.------ The fields accessible through corresponding lenses are:------ * 'iniaAttachTime' @::@ 'Maybe' 'UTCTime'------ * 'iniaAttachmentId' @::@ 'Maybe' 'Text'------ * 'iniaDeleteOnTermination' @::@ 'Maybe' 'Bool'------ * 'iniaDeviceIndex' @::@ 'Maybe' 'Int'------ * 'iniaStatus' @::@ 'Maybe' 'AttachmentStatus'----instanceNetworkInterfaceAttachment :: InstanceNetworkInterfaceAttachment-instanceNetworkInterfaceAttachment = InstanceNetworkInterfaceAttachment-    { _iniaAttachmentId        = Nothing-    , _iniaDeviceIndex         = Nothing-    , _iniaStatus              = Nothing-    , _iniaAttachTime          = Nothing-    , _iniaDeleteOnTermination = Nothing-    }---- | The time stamp when the attachment initiated.-iniaAttachTime :: Lens' InstanceNetworkInterfaceAttachment (Maybe UTCTime)-iniaAttachTime = lens _iniaAttachTime (\s a -> s { _iniaAttachTime = a }) . mapping _Time---- | The ID of the network interface attachment.-iniaAttachmentId :: Lens' InstanceNetworkInterfaceAttachment (Maybe Text)-iniaAttachmentId = lens _iniaAttachmentId (\s a -> s { _iniaAttachmentId = a })---- | Indicates whether the network interface is deleted when the instance is--- terminated.-iniaDeleteOnTermination :: Lens' InstanceNetworkInterfaceAttachment (Maybe Bool)-iniaDeleteOnTermination =-    lens _iniaDeleteOnTermination (\s a -> s { _iniaDeleteOnTermination = a })---- | The index of the device on the instance for the network interface attachment.-iniaDeviceIndex :: Lens' InstanceNetworkInterfaceAttachment (Maybe Int)-iniaDeviceIndex = lens _iniaDeviceIndex (\s a -> s { _iniaDeviceIndex = a })---- | The attachment state.-iniaStatus :: Lens' InstanceNetworkInterfaceAttachment (Maybe AttachmentStatus)-iniaStatus = lens _iniaStatus (\s a -> s { _iniaStatus = a })--instance FromXML InstanceNetworkInterfaceAttachment where-    parseXML x = InstanceNetworkInterfaceAttachment-        <$> x .@? "attachTime"-        <*> x .@? "attachmentId"-        <*> x .@? "deleteOnTermination"-        <*> x .@? "deviceIndex"-        <*> x .@? "status"--instance ToQuery InstanceNetworkInterfaceAttachment where-    toQuery InstanceNetworkInterfaceAttachment{..} = mconcat-        [ "AttachTime"          =? _iniaAttachTime-        , "AttachmentId"        =? _iniaAttachmentId-        , "DeleteOnTermination" =? _iniaDeleteOnTermination-        , "DeviceIndex"         =? _iniaDeviceIndex-        , "Status"              =? _iniaStatus-        ]--newtype AttributeBooleanValue = AttributeBooleanValue-    { _abvValue :: Maybe Bool-    } deriving (Eq, Ord, Read, Show)---- | 'AttributeBooleanValue' constructor.------ The fields accessible through corresponding lenses are:------ * 'abvValue' @::@ 'Maybe' 'Bool'----attributeBooleanValue :: AttributeBooleanValue-attributeBooleanValue = AttributeBooleanValue-    { _abvValue = Nothing-    }---- | Valid values are 'true' or 'false'.-abvValue :: Lens' AttributeBooleanValue (Maybe Bool)-abvValue = lens _abvValue (\s a -> s { _abvValue = a })--instance FromXML AttributeBooleanValue where-    parseXML x = AttributeBooleanValue-        <$> x .@? "value"--instance ToQuery AttributeBooleanValue where-    toQuery AttributeBooleanValue{..} = mconcat-        [ "Value" =? _abvValue-        ]--data RecurringCharge = RecurringCharge-    { _rcAmount    :: Maybe Double-    , _rcFrequency :: Maybe RecurringChargeFrequency-    } deriving (Eq, Read, Show)---- | 'RecurringCharge' constructor.------ The fields accessible through corresponding lenses are:------ * 'rcAmount' @::@ 'Maybe' 'Double'------ * 'rcFrequency' @::@ 'Maybe' 'RecurringChargeFrequency'----recurringCharge :: RecurringCharge-recurringCharge = RecurringCharge-    { _rcFrequency = Nothing-    , _rcAmount    = Nothing-    }---- | The amount of the recurring charge.-rcAmount :: Lens' RecurringCharge (Maybe Double)-rcAmount = lens _rcAmount (\s a -> s { _rcAmount = a })---- | The frequency of the recurring charge.-rcFrequency :: Lens' RecurringCharge (Maybe RecurringChargeFrequency)-rcFrequency = lens _rcFrequency (\s a -> s { _rcFrequency = a })--instance FromXML RecurringCharge where-    parseXML x = RecurringCharge-        <$> x .@? "amount"-        <*> x .@? "frequency"--instance ToQuery RecurringCharge where-    toQuery RecurringCharge{..} = mconcat-        [ "Amount"    =? _rcAmount-        , "Frequency" =? _rcFrequency-        ]--data NewDhcpConfiguration = NewDhcpConfiguration-    { _ndcKey    :: Maybe Text-    , _ndcValues :: List "item" Text-    } deriving (Eq, Ord, Read, Show)---- | 'NewDhcpConfiguration' constructor.------ The fields accessible through corresponding lenses are:------ * 'ndcKey' @::@ 'Maybe' 'Text'------ * 'ndcValues' @::@ ['Text']----newDhcpConfiguration :: NewDhcpConfiguration-newDhcpConfiguration = NewDhcpConfiguration-    { _ndcKey    = Nothing-    , _ndcValues = mempty-    }--ndcKey :: Lens' NewDhcpConfiguration (Maybe Text)-ndcKey = lens _ndcKey (\s a -> s { _ndcKey = a })--ndcValues :: Lens' NewDhcpConfiguration [Text]-ndcValues = lens _ndcValues (\s a -> s { _ndcValues = a }) . _List--instance FromXML NewDhcpConfiguration where-    parseXML x = NewDhcpConfiguration-        <$> x .@? "key"-        <*> x .@? "Value" .!@ mempty--instance ToQuery NewDhcpConfiguration where-    toQuery NewDhcpConfiguration{..} = mconcat-        [ "Key"   =? _ndcKey-        , "Value" `toQueryList` _ndcValues-        ]--data StateReason = StateReason-    { _srCode    :: Maybe Text-    , _srMessage :: Maybe Text-    } deriving (Eq, Ord, Read, Show)---- | 'StateReason' constructor.------ The fields accessible through corresponding lenses are:------ * 'srCode' @::@ 'Maybe' 'Text'------ * 'srMessage' @::@ 'Maybe' 'Text'----stateReason :: StateReason-stateReason = StateReason-    { _srCode    = Nothing-    , _srMessage = Nothing-    }---- | The reason code for the state change.-srCode :: Lens' StateReason (Maybe Text)-srCode = lens _srCode (\s a -> s { _srCode = a })---- | The message for the state change.------ 'Server.SpotInstanceTermination': A Spot Instance was terminated due to an--- increase in the market price.------ 'Server.InternalError': An internal error occurred during instance launch,--- resulting in termination.------ 'Server.InsufficientInstanceCapacity': There was insufficient instance--- capacity to satisfy the launch request.------ 'Client.InternalError': A client error caused the instance to terminate on--- launch.------ 'Client.InstanceInitiatedShutdown': The instance was shut down using the 'shutdown -h' command from the instance.------ 'Client.UserInitiatedShutdown': The instance was shut down using the Amazon--- EC2 API.------ 'Client.VolumeLimitExceeded': The volume limit was exceeded.------ 'Client.InvalidSnapshot.NotFound': The specified snapshot was not found.-------srMessage :: Lens' StateReason (Maybe Text)-srMessage = lens _srMessage (\s a -> s { _srMessage = a })--instance FromXML StateReason where-    parseXML x = StateReason-        <$> x .@? "code"-        <*> x .@? "message"--instance ToQuery StateReason where-    toQuery StateReason{..} = mconcat-        [ "Code"    =? _srCode-        , "Message" =? _srMessage-        ]--data MonitoringState-    = MSDisabled -- ^ disabled-    | MSEnabled  -- ^ enabled-    | MSPending  -- ^ pending-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable MonitoringState--instance FromText MonitoringState where-    parser = takeLowerText >>= \case-        "disabled" -> pure MSDisabled-        "enabled"  -> pure MSEnabled-        "pending"  -> pure MSPending-        e          -> fail $-            "Failure parsing MonitoringState from " ++ show e--instance ToText MonitoringState where-    toText = \case-        MSDisabled -> "disabled"-        MSEnabled  -> "enabled"-        MSPending  -> "pending"--instance ToByteString MonitoringState-instance ToHeader     MonitoringState-instance ToQuery      MonitoringState--instance FromXML MonitoringState where-    parseXML = parseXMLText "MonitoringState"--newtype ReservedInstancesId = ReservedInstancesId-    { _riiReservedInstancesId :: Maybe Text-    } deriving (Eq, Ord, Read, Show, Monoid)---- | 'ReservedInstancesId' constructor.------ The fields accessible through corresponding lenses are:------ * 'riiReservedInstancesId' @::@ 'Maybe' 'Text'----reservedInstancesId :: ReservedInstancesId-reservedInstancesId = ReservedInstancesId-    { _riiReservedInstancesId = Nothing-    }---- | The ID of the Reserved Instance.-riiReservedInstancesId :: Lens' ReservedInstancesId (Maybe Text)-riiReservedInstancesId =-    lens _riiReservedInstancesId (\s a -> s { _riiReservedInstancesId = a })--instance FromXML ReservedInstancesId where-    parseXML x = ReservedInstancesId-        <$> x .@? "reservedInstancesId"--instance ToQuery ReservedInstancesId where-    toQuery ReservedInstancesId{..} = mconcat-        [ "ReservedInstancesId" =? _riiReservedInstancesId-        ]--data StatusName-    = Reachability -- ^ reachability-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable StatusName--instance FromText StatusName where-    parser = takeLowerText >>= \case-        "reachability" -> pure Reachability-        e              -> fail $-            "Failure parsing StatusName from " ++ show e--instance ToText StatusName where-    toText Reachability = "reachability"--instance ToByteString StatusName-instance ToHeader     StatusName-instance ToQuery      StatusName--instance FromXML StatusName where-    parseXML = parseXMLText "StatusName"--data InternetGateway = InternetGateway-    { _igAttachments       :: List "item" InternetGatewayAttachment-    , _igInternetGatewayId :: Text-    , _igTags              :: List "item" Tag-    } deriving (Eq, Read, Show)---- | 'InternetGateway' constructor.------ The fields accessible through corresponding lenses are:------ * 'igAttachments' @::@ ['InternetGatewayAttachment']------ * 'igInternetGatewayId' @::@ 'Text'------ * 'igTags' @::@ ['Tag']----internetGateway :: Text -- ^ 'igInternetGatewayId'-                -> InternetGateway-internetGateway p1 = InternetGateway-    { _igInternetGatewayId = p1-    , _igAttachments       = mempty-    , _igTags              = mempty-    }---- | Any VPCs attached to the Internet gateway.-igAttachments :: Lens' InternetGateway [InternetGatewayAttachment]-igAttachments = lens _igAttachments (\s a -> s { _igAttachments = a }) . _List---- | The ID of the Internet gateway.-igInternetGatewayId :: Lens' InternetGateway Text-igInternetGatewayId =-    lens _igInternetGatewayId (\s a -> s { _igInternetGatewayId = a })---- | Any tags assigned to the Internet gateway.-igTags :: Lens' InternetGateway [Tag]-igTags = lens _igTags (\s a -> s { _igTags = a }) . _List--instance FromXML InternetGateway where-    parseXML x = InternetGateway-        <$> x .@? "attachmentSet" .!@ mempty-        <*> x .@  "internetGatewayId"-        <*> x .@? "tagSet" .!@ mempty--instance ToQuery InternetGateway where-    toQuery InternetGateway{..} = mconcat-        [ "AttachmentSet"     `toQueryList` _igAttachments-        , "InternetGatewayId" =? _igInternetGatewayId-        , "TagSet"            `toQueryList` _igTags-        ]--data VolumeStatusName-    = IoEnabled     -- ^ io-enabled-    | IoPerformance -- ^ io-performance-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable VolumeStatusName--instance FromText VolumeStatusName where-    parser = takeLowerText >>= \case-        "io-enabled"     -> pure IoEnabled-        "io-performance" -> pure IoPerformance-        e                -> fail $-            "Failure parsing VolumeStatusName from " ++ show e--instance ToText VolumeStatusName where-    toText = \case-        IoEnabled     -> "io-enabled"-        IoPerformance -> "io-performance"--instance ToByteString VolumeStatusName-instance ToHeader     VolumeStatusName-instance ToQuery      VolumeStatusName--instance FromXML VolumeStatusName where-    parseXML = parseXMLText "VolumeStatusName"--data VolumeAttributeName-    = AutoEnableIO -- ^ autoEnableIO-    | ProductCodes -- ^ productCodes-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable VolumeAttributeName--instance FromText VolumeAttributeName where-    parser = takeLowerText >>= \case-        "autoenableio" -> pure AutoEnableIO-        "productcodes" -> pure ProductCodes-        e              -> fail $-            "Failure parsing VolumeAttributeName from " ++ show e--instance ToText VolumeAttributeName where-    toText = \case-        AutoEnableIO -> "autoEnableIO"-        ProductCodes -> "productCodes"--instance ToByteString VolumeAttributeName-instance ToHeader     VolumeAttributeName-instance ToQuery      VolumeAttributeName--instance FromXML VolumeAttributeName where-    parseXML = parseXMLText "VolumeAttributeName"--data ImportInstanceTaskDetails = ImportInstanceTaskDetails-    { _iitdDescription :: Maybe Text-    , _iitdInstanceId  :: Maybe Text-    , _iitdPlatform    :: Maybe PlatformValues-    , _iitdVolumes     :: List "item" ImportInstanceVolumeDetailItem-    } deriving (Eq, Read, Show)---- | 'ImportInstanceTaskDetails' constructor.------ The fields accessible through corresponding lenses are:------ * 'iitdDescription' @::@ 'Maybe' 'Text'------ * 'iitdInstanceId' @::@ 'Maybe' 'Text'------ * 'iitdPlatform' @::@ 'Maybe' 'PlatformValues'------ * 'iitdVolumes' @::@ ['ImportInstanceVolumeDetailItem']----importInstanceTaskDetails :: ImportInstanceTaskDetails-importInstanceTaskDetails = ImportInstanceTaskDetails-    { _iitdVolumes     = mempty-    , _iitdInstanceId  = Nothing-    , _iitdPlatform    = Nothing-    , _iitdDescription = Nothing-    }--iitdDescription :: Lens' ImportInstanceTaskDetails (Maybe Text)-iitdDescription = lens _iitdDescription (\s a -> s { _iitdDescription = a })--iitdInstanceId :: Lens' ImportInstanceTaskDetails (Maybe Text)-iitdInstanceId = lens _iitdInstanceId (\s a -> s { _iitdInstanceId = a })---- | The instance operating system.-iitdPlatform :: Lens' ImportInstanceTaskDetails (Maybe PlatformValues)-iitdPlatform = lens _iitdPlatform (\s a -> s { _iitdPlatform = a })--iitdVolumes :: Lens' ImportInstanceTaskDetails [ImportInstanceVolumeDetailItem]-iitdVolumes = lens _iitdVolumes (\s a -> s { _iitdVolumes = a }) . _List--instance FromXML ImportInstanceTaskDetails where-    parseXML x = ImportInstanceTaskDetails-        <$> x .@? "description"-        <*> x .@? "instanceId"-        <*> x .@? "platform"-        <*> x .@? "volumes" .!@ mempty--instance ToQuery ImportInstanceTaskDetails where-    toQuery ImportInstanceTaskDetails{..} = mconcat-        [ "Description" =? _iitdDescription-        , "InstanceId"  =? _iitdInstanceId-        , "Platform"    =? _iitdPlatform-        , "Volumes"     `toQueryList` _iitdVolumes-        ]--data PlacementGroup = PlacementGroup-    { _pgGroupName :: Maybe Text-    , _pgState     :: Maybe PlacementGroupState-    , _pgStrategy  :: Maybe PlacementStrategy-    } deriving (Eq, Read, Show)---- | 'PlacementGroup' constructor.------ The fields accessible through corresponding lenses are:------ * 'pgGroupName' @::@ 'Maybe' 'Text'------ * 'pgState' @::@ 'Maybe' 'PlacementGroupState'------ * 'pgStrategy' @::@ 'Maybe' 'PlacementStrategy'----placementGroup :: PlacementGroup-placementGroup = PlacementGroup-    { _pgGroupName = Nothing-    , _pgStrategy  = Nothing-    , _pgState     = Nothing-    }---- | The name of the placement group.-pgGroupName :: Lens' PlacementGroup (Maybe Text)-pgGroupName = lens _pgGroupName (\s a -> s { _pgGroupName = a })---- | The state of the placement group.-pgState :: Lens' PlacementGroup (Maybe PlacementGroupState)-pgState = lens _pgState (\s a -> s { _pgState = a })---- | The placement strategy.-pgStrategy :: Lens' PlacementGroup (Maybe PlacementStrategy)-pgStrategy = lens _pgStrategy (\s a -> s { _pgStrategy = a })--instance FromXML PlacementGroup where-    parseXML x = PlacementGroup-        <$> x .@? "groupName"-        <*> x .@? "state"-        <*> x .@? "strategy"--instance ToQuery PlacementGroup where-    toQuery PlacementGroup{..} = mconcat-        [ "GroupName" =? _pgGroupName-        , "State"     =? _pgState-        , "Strategy"  =? _pgStrategy-        ]--data ProductCode = ProductCode-    { _pcProductCodeId   :: Maybe Text-    , _pcProductCodeType :: Maybe ProductCodeValues-    } deriving (Eq, Read, Show)---- | 'ProductCode' constructor.------ The fields accessible through corresponding lenses are:------ * 'pcProductCodeId' @::@ 'Maybe' 'Text'------ * 'pcProductCodeType' @::@ 'Maybe' 'ProductCodeValues'----productCode :: ProductCode-productCode = ProductCode-    { _pcProductCodeId   = Nothing-    , _pcProductCodeType = Nothing-    }---- | The product code.-pcProductCodeId :: Lens' ProductCode (Maybe Text)-pcProductCodeId = lens _pcProductCodeId (\s a -> s { _pcProductCodeId = a })---- | The type of product code.-pcProductCodeType :: Lens' ProductCode (Maybe ProductCodeValues)-pcProductCodeType =-    lens _pcProductCodeType (\s a -> s { _pcProductCodeType = a })--instance FromXML ProductCode where-    parseXML x = ProductCode-        <$> x .@? "productCode"-        <*> x .@? "type"--instance ToQuery ProductCode where-    toQuery ProductCode{..} = mconcat-        [ "ProductCode" =? _pcProductCodeId-        , "Type"        =? _pcProductCodeType-        ]--data ListingStatus-    = ListingStatusActive    -- ^ active-    | ListingStatusCancelled -- ^ cancelled-    | ListingStatusClosed    -- ^ closed-    | ListingStatusPending   -- ^ pending-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable ListingStatus--instance FromText ListingStatus where-    parser = takeLowerText >>= \case-        "active"    -> pure ListingStatusActive-        "cancelled" -> pure ListingStatusCancelled-        "closed"    -> pure ListingStatusClosed-        "pending"   -> pure ListingStatusPending-        e           -> fail $-            "Failure parsing ListingStatus from " ++ show e--instance ToText ListingStatus where-    toText = \case-        ListingStatusActive    -> "active"-        ListingStatusCancelled -> "cancelled"-        ListingStatusClosed    -> "closed"-        ListingStatusPending   -> "pending"--instance ToByteString ListingStatus-instance ToHeader     ListingStatus-instance ToQuery      ListingStatus--instance FromXML ListingStatus where-    parseXML = parseXMLText "ListingStatus"--newtype IpRange = IpRange-    { _irCidrIp :: Text-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)---- | 'IpRange' constructor.------ The fields accessible through corresponding lenses are:------ * 'irCidrIp' @::@ 'Text'----ipRange :: Text -- ^ 'irCidrIp'-        -> IpRange-ipRange p1 = IpRange-    { _irCidrIp = p1-    }---- | The CIDR range. You can either specify a CIDR range or a source security--- group, not both.-irCidrIp :: Lens' IpRange Text-irCidrIp = lens _irCidrIp (\s a -> s { _irCidrIp = a })--instance FromXML IpRange where-    parseXML x = IpRange-        <$> x .@  "cidrIp"--instance ToQuery IpRange where-    toQuery IpRange{..} = mconcat-        [ "CidrIp" =? _irCidrIp-        ]--data VolumeStatusInfoStatus-    = VSISImpaired         -- ^ impaired-    | VSISInsufficientData -- ^ insufficient-data-    | VSISOk               -- ^ ok-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable VolumeStatusInfoStatus--instance FromText VolumeStatusInfoStatus where-    parser = takeLowerText >>= \case-        "impaired"          -> pure VSISImpaired-        "insufficient-data" -> pure VSISInsufficientData-        "ok"                -> pure VSISOk-        e                   -> fail $-            "Failure parsing VolumeStatusInfoStatus from " ++ show e--instance ToText VolumeStatusInfoStatus where-    toText = \case-        VSISImpaired         -> "impaired"-        VSISInsufficientData -> "insufficient-data"-        VSISOk               -> "ok"--instance ToByteString VolumeStatusInfoStatus-instance ToHeader     VolumeStatusInfoStatus-instance ToQuery      VolumeStatusInfoStatus--instance FromXML VolumeStatusInfoStatus where-    parseXML = parseXMLText "VolumeStatusInfoStatus"--newtype AccountAttributeValue = AccountAttributeValue-    { _aavAttributeValue :: Maybe Text-    } deriving (Eq, Ord, Read, Show, Monoid)---- | 'AccountAttributeValue' constructor.------ The fields accessible through corresponding lenses are:------ * 'aavAttributeValue' @::@ 'Maybe' 'Text'----accountAttributeValue :: AccountAttributeValue-accountAttributeValue = AccountAttributeValue-    { _aavAttributeValue = Nothing-    }---- | The value of the attribute.-aavAttributeValue :: Lens' AccountAttributeValue (Maybe Text)-aavAttributeValue =-    lens _aavAttributeValue (\s a -> s { _aavAttributeValue = a })--instance FromXML AccountAttributeValue where-    parseXML x = AccountAttributeValue-        <$> x .@? "attributeValue"--instance ToQuery AccountAttributeValue where-    toQuery AccountAttributeValue{..} = mconcat-        [ "AttributeValue" =? _aavAttributeValue-        ]--data RIProductDescription-    = RIPDLinuxUNIX          -- ^ Linux/UNIX-    | RIPDLinuxUNIXAmazonVPC -- ^ Linux/UNIX (Amazon VPC)-    | RIPDWindows            -- ^ Windows-    | RIPDWindowsAmazonVPC   -- ^ Windows (Amazon VPC)-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable RIProductDescription--instance FromText RIProductDescription where-    parser = takeLowerText >>= \case-        "linux/unix"              -> pure RIPDLinuxUNIX-        "linux/unix (amazon vpc)" -> pure RIPDLinuxUNIXAmazonVPC-        "windows"                 -> pure RIPDWindows-        "windows (amazon vpc)"    -> pure RIPDWindowsAmazonVPC-        e                         -> fail $-            "Failure parsing RIProductDescription from " ++ show e--instance ToText RIProductDescription where-    toText = \case-        RIPDLinuxUNIX          -> "Linux/UNIX"-        RIPDLinuxUNIXAmazonVPC -> "Linux/UNIX (Amazon VPC)"-        RIPDWindows            -> "Windows"-        RIPDWindowsAmazonVPC   -> "Windows (Amazon VPC)"--instance ToByteString RIProductDescription-instance ToHeader     RIProductDescription-instance ToQuery      RIProductDescription--instance FromXML RIProductDescription where-    parseXML = parseXMLText "RIProductDescription"--data ReservedInstancesOffering = ReservedInstancesOffering-    { _rioAvailabilityZone            :: Maybe Text-    , _rioCurrencyCode                :: Maybe CurrencyCodeValues-    , _rioDuration                    :: Maybe Integer-    , _rioFixedPrice                  :: Maybe Double-    , _rioInstanceTenancy             :: Maybe Tenancy-    , _rioInstanceType                :: Maybe InstanceType-    , _rioMarketplace                 :: Maybe Bool-    , _rioOfferingType                :: Maybe OfferingTypeValues-    , _rioPricingDetails              :: List "item" PricingDetail-    , _rioProductDescription          :: Maybe RIProductDescription-    , _rioRecurringCharges            :: List "item" RecurringCharge-    , _rioReservedInstancesOfferingId :: Maybe Text-    , _rioUsagePrice                  :: Maybe Double-    } deriving (Eq, Read, Show)---- | 'ReservedInstancesOffering' constructor.------ The fields accessible through corresponding lenses are:------ * 'rioAvailabilityZone' @::@ 'Maybe' 'Text'------ * 'rioCurrencyCode' @::@ 'Maybe' 'CurrencyCodeValues'------ * 'rioDuration' @::@ 'Maybe' 'Integer'------ * 'rioFixedPrice' @::@ 'Maybe' 'Double'------ * 'rioInstanceTenancy' @::@ 'Maybe' 'Tenancy'------ * 'rioInstanceType' @::@ 'Maybe' 'InstanceType'------ * 'rioMarketplace' @::@ 'Maybe' 'Bool'------ * 'rioOfferingType' @::@ 'Maybe' 'OfferingTypeValues'------ * 'rioPricingDetails' @::@ ['PricingDetail']------ * 'rioProductDescription' @::@ 'Maybe' 'RIProductDescription'------ * 'rioRecurringCharges' @::@ ['RecurringCharge']------ * 'rioReservedInstancesOfferingId' @::@ 'Maybe' 'Text'------ * 'rioUsagePrice' @::@ 'Maybe' 'Double'----reservedInstancesOffering :: ReservedInstancesOffering-reservedInstancesOffering = ReservedInstancesOffering-    { _rioReservedInstancesOfferingId = Nothing-    , _rioInstanceType                = Nothing-    , _rioAvailabilityZone            = Nothing-    , _rioDuration                    = Nothing-    , _rioUsagePrice                  = Nothing-    , _rioFixedPrice                  = Nothing-    , _rioProductDescription          = Nothing-    , _rioInstanceTenancy             = Nothing-    , _rioCurrencyCode                = Nothing-    , _rioOfferingType                = Nothing-    , _rioRecurringCharges            = mempty-    , _rioMarketplace                 = Nothing-    , _rioPricingDetails              = mempty-    }---- | The Availability Zone in which the Reserved Instance can be used.-rioAvailabilityZone :: Lens' ReservedInstancesOffering (Maybe Text)-rioAvailabilityZone =-    lens _rioAvailabilityZone (\s a -> s { _rioAvailabilityZone = a })---- | The currency of the Reserved Instance offering you are purchasing. It's--- specified using ISO 4217 standard currency codes. At this time, the only--- supported currency is 'USD'.-rioCurrencyCode :: Lens' ReservedInstancesOffering (Maybe CurrencyCodeValues)-rioCurrencyCode = lens _rioCurrencyCode (\s a -> s { _rioCurrencyCode = a })---- | The duration of the Reserved Instance, in seconds.-rioDuration :: Lens' ReservedInstancesOffering (Maybe Integer)-rioDuration = lens _rioDuration (\s a -> s { _rioDuration = a })---- | The purchase price of the Reserved Instance.-rioFixedPrice :: Lens' ReservedInstancesOffering (Maybe Double)-rioFixedPrice = lens _rioFixedPrice (\s a -> s { _rioFixedPrice = a })---- | The tenancy of the reserved instance.-rioInstanceTenancy :: Lens' ReservedInstancesOffering (Maybe Tenancy)-rioInstanceTenancy =-    lens _rioInstanceTenancy (\s a -> s { _rioInstanceTenancy = a })---- | The instance type on which the Reserved Instance can be used.-rioInstanceType :: Lens' ReservedInstancesOffering (Maybe InstanceType)-rioInstanceType = lens _rioInstanceType (\s a -> s { _rioInstanceType = a })---- | Indicates whether the offering is available through the Reserved Instance--- Marketplace (resale) or AWS. If it's a Reserved Instance Marketplace--- offering, this is 'true'.-rioMarketplace :: Lens' ReservedInstancesOffering (Maybe Bool)-rioMarketplace = lens _rioMarketplace (\s a -> s { _rioMarketplace = a })---- | The Reserved Instance offering type.-rioOfferingType :: Lens' ReservedInstancesOffering (Maybe OfferingTypeValues)-rioOfferingType = lens _rioOfferingType (\s a -> s { _rioOfferingType = a })---- | The pricing details of the Reserved Instance offering.-rioPricingDetails :: Lens' ReservedInstancesOffering [PricingDetail]-rioPricingDetails =-    lens _rioPricingDetails (\s a -> s { _rioPricingDetails = a })-        . _List---- | The Reserved Instance description.-rioProductDescription :: Lens' ReservedInstancesOffering (Maybe RIProductDescription)-rioProductDescription =-    lens _rioProductDescription (\s a -> s { _rioProductDescription = a })---- | The recurring charge tag assigned to the resource.-rioRecurringCharges :: Lens' ReservedInstancesOffering [RecurringCharge]-rioRecurringCharges =-    lens _rioRecurringCharges (\s a -> s { _rioRecurringCharges = a })-        . _List---- | The ID of the Reserved Instance offering.-rioReservedInstancesOfferingId :: Lens' ReservedInstancesOffering (Maybe Text)-rioReservedInstancesOfferingId =-    lens _rioReservedInstancesOfferingId-        (\s a -> s { _rioReservedInstancesOfferingId = a })---- | The usage price of the Reserved Instance, per hour.-rioUsagePrice :: Lens' ReservedInstancesOffering (Maybe Double)-rioUsagePrice = lens _rioUsagePrice (\s a -> s { _rioUsagePrice = a })--instance FromXML ReservedInstancesOffering where-    parseXML x = ReservedInstancesOffering-        <$> x .@? "availabilityZone"-        <*> x .@? "currencyCode"-        <*> x .@? "duration"-        <*> x .@? "fixedPrice"-        <*> x .@? "instanceTenancy"-        <*> x .@? "instanceType"-        <*> x .@? "marketplace"-        <*> x .@? "offeringType"-        <*> x .@? "pricingDetailsSet" .!@ mempty-        <*> x .@? "productDescription"-        <*> x .@? "recurringCharges" .!@ mempty-        <*> x .@? "reservedInstancesOfferingId"-        <*> x .@? "usagePrice"--instance ToQuery ReservedInstancesOffering where-    toQuery ReservedInstancesOffering{..} = mconcat-        [ "AvailabilityZone"            =? _rioAvailabilityZone-        , "CurrencyCode"                =? _rioCurrencyCode-        , "Duration"                    =? _rioDuration-        , "FixedPrice"                  =? _rioFixedPrice-        , "InstanceTenancy"             =? _rioInstanceTenancy-        , "InstanceType"                =? _rioInstanceType-        , "Marketplace"                 =? _rioMarketplace-        , "OfferingType"                =? _rioOfferingType-        , "PricingDetailsSet"           `toQueryList` _rioPricingDetails-        , "ProductDescription"          =? _rioProductDescription-        , "RecurringCharges"            `toQueryList` _rioRecurringCharges-        , "ReservedInstancesOfferingId" =? _rioReservedInstancesOfferingId-        , "UsagePrice"                  =? _rioUsagePrice-        ]--data ReservedInstances = ReservedInstances-    { _ri1AvailabilityZone    :: Maybe Text-    , _ri1CurrencyCode        :: Maybe CurrencyCodeValues-    , _ri1Duration            :: Maybe Integer-    , _ri1End                 :: Maybe ISO8601-    , _ri1FixedPrice          :: Maybe Double-    , _ri1InstanceCount       :: Maybe Int-    , _ri1InstanceTenancy     :: Maybe Tenancy-    , _ri1InstanceType        :: Maybe InstanceType-    , _ri1OfferingType        :: Maybe OfferingTypeValues-    , _ri1ProductDescription  :: Maybe RIProductDescription-    , _ri1RecurringCharges    :: List "item" RecurringCharge-    , _ri1ReservedInstancesId :: Maybe Text-    , _ri1Start               :: Maybe ISO8601-    , _ri1State               :: Maybe ReservedInstanceState-    , _ri1Tags                :: List "item" Tag-    , _ri1UsagePrice          :: Maybe Double-    } deriving (Eq, Read, Show)---- | 'ReservedInstances' constructor.------ The fields accessible through corresponding lenses are:------ * 'ri1AvailabilityZone' @::@ 'Maybe' 'Text'------ * 'ri1CurrencyCode' @::@ 'Maybe' 'CurrencyCodeValues'------ * 'ri1Duration' @::@ 'Maybe' 'Integer'------ * 'ri1End' @::@ 'Maybe' 'UTCTime'------ * 'ri1FixedPrice' @::@ 'Maybe' 'Double'------ * 'ri1InstanceCount' @::@ 'Maybe' 'Int'------ * 'ri1InstanceTenancy' @::@ 'Maybe' 'Tenancy'------ * 'ri1InstanceType' @::@ 'Maybe' 'InstanceType'------ * 'ri1OfferingType' @::@ 'Maybe' 'OfferingTypeValues'------ * 'ri1ProductDescription' @::@ 'Maybe' 'RIProductDescription'------ * 'ri1RecurringCharges' @::@ ['RecurringCharge']------ * 'ri1ReservedInstancesId' @::@ 'Maybe' 'Text'------ * 'ri1Start' @::@ 'Maybe' 'UTCTime'------ * 'ri1State' @::@ 'Maybe' 'ReservedInstanceState'------ * 'ri1Tags' @::@ ['Tag']------ * 'ri1UsagePrice' @::@ 'Maybe' 'Double'----reservedInstances :: ReservedInstances-reservedInstances = ReservedInstances-    { _ri1ReservedInstancesId = Nothing-    , _ri1InstanceType        = Nothing-    , _ri1AvailabilityZone    = Nothing-    , _ri1Start               = Nothing-    , _ri1End                 = Nothing-    , _ri1Duration            = Nothing-    , _ri1UsagePrice          = Nothing-    , _ri1FixedPrice          = Nothing-    , _ri1InstanceCount       = Nothing-    , _ri1ProductDescription  = Nothing-    , _ri1State               = Nothing-    , _ri1Tags                = mempty-    , _ri1InstanceTenancy     = Nothing-    , _ri1CurrencyCode        = Nothing-    , _ri1OfferingType        = Nothing-    , _ri1RecurringCharges    = mempty-    }---- | The Availability Zone in which the Reserved Instance can be used.-ri1AvailabilityZone :: Lens' ReservedInstances (Maybe Text)-ri1AvailabilityZone =-    lens _ri1AvailabilityZone (\s a -> s { _ri1AvailabilityZone = a })---- | The currency of the Reserved Instance. It's specified using ISO 4217 standard--- currency codes. At this time, the only supported currency is 'USD'.-ri1CurrencyCode :: Lens' ReservedInstances (Maybe CurrencyCodeValues)-ri1CurrencyCode = lens _ri1CurrencyCode (\s a -> s { _ri1CurrencyCode = a })---- | The duration of the Reserved Instance, in seconds.-ri1Duration :: Lens' ReservedInstances (Maybe Integer)-ri1Duration = lens _ri1Duration (\s a -> s { _ri1Duration = a })---- | The time when the Reserved Instance expires.-ri1End :: Lens' ReservedInstances (Maybe UTCTime)-ri1End = lens _ri1End (\s a -> s { _ri1End = a }) . mapping _Time---- | The purchase price of the Reserved Instance.-ri1FixedPrice :: Lens' ReservedInstances (Maybe Double)-ri1FixedPrice = lens _ri1FixedPrice (\s a -> s { _ri1FixedPrice = a })---- | The number of Reserved Instances purchased.-ri1InstanceCount :: Lens' ReservedInstances (Maybe Int)-ri1InstanceCount = lens _ri1InstanceCount (\s a -> s { _ri1InstanceCount = a })---- | The tenancy of the reserved instance.-ri1InstanceTenancy :: Lens' ReservedInstances (Maybe Tenancy)-ri1InstanceTenancy =-    lens _ri1InstanceTenancy (\s a -> s { _ri1InstanceTenancy = a })---- | The instance type on which the Reserved Instance can be used.-ri1InstanceType :: Lens' ReservedInstances (Maybe InstanceType)-ri1InstanceType = lens _ri1InstanceType (\s a -> s { _ri1InstanceType = a })---- | The Reserved Instance offering type.-ri1OfferingType :: Lens' ReservedInstances (Maybe OfferingTypeValues)-ri1OfferingType = lens _ri1OfferingType (\s a -> s { _ri1OfferingType = a })---- | The Reserved Instance description.-ri1ProductDescription :: Lens' ReservedInstances (Maybe RIProductDescription)-ri1ProductDescription =-    lens _ri1ProductDescription (\s a -> s { _ri1ProductDescription = a })---- | The recurring charge tag assigned to the resource.-ri1RecurringCharges :: Lens' ReservedInstances [RecurringCharge]-ri1RecurringCharges =-    lens _ri1RecurringCharges (\s a -> s { _ri1RecurringCharges = a })-        . _List---- | The ID of the Reserved Instance.-ri1ReservedInstancesId :: Lens' ReservedInstances (Maybe Text)-ri1ReservedInstancesId =-    lens _ri1ReservedInstancesId (\s a -> s { _ri1ReservedInstancesId = a })---- | The date and time the Reserved Instance started.-ri1Start :: Lens' ReservedInstances (Maybe UTCTime)-ri1Start = lens _ri1Start (\s a -> s { _ri1Start = a }) . mapping _Time---- | The state of the Reserved Instance purchase.-ri1State :: Lens' ReservedInstances (Maybe ReservedInstanceState)-ri1State = lens _ri1State (\s a -> s { _ri1State = a })---- | Any tags assigned to the resource.-ri1Tags :: Lens' ReservedInstances [Tag]-ri1Tags = lens _ri1Tags (\s a -> s { _ri1Tags = a }) . _List---- | The usage price of the Reserved Instance, per hour.-ri1UsagePrice :: Lens' ReservedInstances (Maybe Double)-ri1UsagePrice = lens _ri1UsagePrice (\s a -> s { _ri1UsagePrice = a })--instance FromXML ReservedInstances where-    parseXML x = ReservedInstances-        <$> x .@? "availabilityZone"-        <*> x .@? "currencyCode"-        <*> x .@? "duration"-        <*> x .@? "end"-        <*> x .@? "fixedPrice"-        <*> x .@? "instanceCount"-        <*> x .@? "instanceTenancy"-        <*> x .@? "instanceType"-        <*> x .@? "offeringType"-        <*> x .@? "productDescription"-        <*> x .@? "recurringCharges" .!@ mempty-        <*> x .@? "reservedInstancesId"-        <*> x .@? "start"-        <*> x .@? "state"-        <*> x .@? "tagSet" .!@ mempty-        <*> x .@? "usagePrice"--instance ToQuery ReservedInstances where-    toQuery ReservedInstances{..} = mconcat-        [ "AvailabilityZone"    =? _ri1AvailabilityZone-        , "CurrencyCode"        =? _ri1CurrencyCode-        , "Duration"            =? _ri1Duration-        , "End"                 =? _ri1End-        , "FixedPrice"          =? _ri1FixedPrice-        , "InstanceCount"       =? _ri1InstanceCount-        , "InstanceTenancy"     =? _ri1InstanceTenancy-        , "InstanceType"        =? _ri1InstanceType-        , "OfferingType"        =? _ri1OfferingType-        , "ProductDescription"  =? _ri1ProductDescription-        , "RecurringCharges"    `toQueryList` _ri1RecurringCharges-        , "ReservedInstancesId" =? _ri1ReservedInstancesId-        , "Start"               =? _ri1Start-        , "State"               =? _ri1State-        , "TagSet"              `toQueryList` _ri1Tags-        , "UsagePrice"          =? _ri1UsagePrice-        ]--data DatafeedSubscriptionState-    = DSSActive   -- ^ Active-    | DSSInactive -- ^ Inactive-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable DatafeedSubscriptionState--instance FromText DatafeedSubscriptionState where-    parser = takeLowerText >>= \case-        "active"   -> pure DSSActive-        "inactive" -> pure DSSInactive-        e          -> fail $-            "Failure parsing DatafeedSubscriptionState from " ++ show e--instance ToText DatafeedSubscriptionState where-    toText = \case-        DSSActive   -> "Active"-        DSSInactive -> "Inactive"--instance ToByteString DatafeedSubscriptionState-instance ToHeader     DatafeedSubscriptionState-instance ToQuery      DatafeedSubscriptionState--instance FromXML DatafeedSubscriptionState where-    parseXML = parseXMLText "DatafeedSubscriptionState"--data ExportTaskState-    = ETSActive     -- ^ active-    | ETSCancelled  -- ^ cancelled-    | ETSCancelling -- ^ cancelling-    | ETSCompleted  -- ^ completed-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable ExportTaskState--instance FromText ExportTaskState where-    parser = takeLowerText >>= \case-        "active"     -> pure ETSActive-        "cancelled"  -> pure ETSCancelled-        "cancelling" -> pure ETSCancelling-        "completed"  -> pure ETSCompleted-        e            -> fail $-            "Failure parsing ExportTaskState from " ++ show e--instance ToText ExportTaskState where-    toText = \case-        ETSActive     -> "active"-        ETSCancelled  -> "cancelled"-        ETSCancelling -> "cancelling"-        ETSCompleted  -> "completed"--instance ToByteString ExportTaskState-instance ToHeader     ExportTaskState-instance ToQuery      ExportTaskState--instance FromXML ExportTaskState where-    parseXML = parseXMLText "ExportTaskState"--data ProductCodeValues-    = Devpay      -- ^ devpay-    | Marketplace -- ^ marketplace-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable ProductCodeValues--instance FromText ProductCodeValues where-    parser = takeLowerText >>= \case-        "devpay"      -> pure Devpay-        "marketplace" -> pure Marketplace-        e             -> fail $-            "Failure parsing ProductCodeValues from " ++ show e--instance ToText ProductCodeValues where-    toText = \case-        Devpay      -> "devpay"-        Marketplace -> "marketplace"--instance ToByteString ProductCodeValues-instance ToHeader     ProductCodeValues-instance ToQuery      ProductCodeValues--instance FromXML ProductCodeValues where-    parseXML = parseXMLText "ProductCodeValues"--data VpnConnection = VpnConnection-    { _vcCustomerGatewayConfiguration :: Text-    , _vcCustomerGatewayId            :: Text-    , _vcOptions                      :: Maybe VpnConnectionOptions-    , _vcRoutes                       :: List "item" VpnStaticRoute-    , _vcState                        :: VpnState-    , _vcTags                         :: List "item" Tag-    , _vcType                         :: GatewayType-    , _vcVgwTelemetry                 :: List "item" VgwTelemetry-    , _vcVpnConnectionId              :: Text-    , _vcVpnGatewayId                 :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'VpnConnection' constructor.------ The fields accessible through corresponding lenses are:------ * 'vcCustomerGatewayConfiguration' @::@ 'Text'------ * 'vcCustomerGatewayId' @::@ 'Text'------ * 'vcOptions' @::@ 'Maybe' 'VpnConnectionOptions'------ * 'vcRoutes' @::@ ['VpnStaticRoute']------ * 'vcState' @::@ 'VpnState'------ * 'vcTags' @::@ ['Tag']------ * 'vcType' @::@ 'GatewayType'------ * 'vcVgwTelemetry' @::@ ['VgwTelemetry']------ * 'vcVpnConnectionId' @::@ 'Text'------ * 'vcVpnGatewayId' @::@ 'Maybe' 'Text'----vpnConnection :: Text -- ^ 'vcVpnConnectionId'-              -> VpnState -- ^ 'vcState'-              -> Text -- ^ 'vcCustomerGatewayConfiguration'-              -> GatewayType -- ^ 'vcType'-              -> Text -- ^ 'vcCustomerGatewayId'-              -> VpnConnection-vpnConnection p1 p2 p3 p4 p5 = VpnConnection-    { _vcVpnConnectionId              = p1-    , _vcState                        = p2-    , _vcCustomerGatewayConfiguration = p3-    , _vcType                         = p4-    , _vcCustomerGatewayId            = p5-    , _vcVpnGatewayId                 = Nothing-    , _vcTags                         = mempty-    , _vcVgwTelemetry                 = mempty-    , _vcOptions                      = Nothing-    , _vcRoutes                       = mempty-    }---- | The configuration information for the VPN connection's customer gateway (in--- the native XML format). This element is always present in the 'CreateVpnConnection' response; however, it's present in the 'DescribeVpnConnections' response only--- if the VPN connection is in the 'pending' or 'available' state.-vcCustomerGatewayConfiguration :: Lens' VpnConnection Text-vcCustomerGatewayConfiguration =-    lens _vcCustomerGatewayConfiguration-        (\s a -> s { _vcCustomerGatewayConfiguration = a })---- | The ID of the customer gateway at your end of the VPN connection.-vcCustomerGatewayId :: Lens' VpnConnection Text-vcCustomerGatewayId =-    lens _vcCustomerGatewayId (\s a -> s { _vcCustomerGatewayId = a })---- | The VPN connection options.-vcOptions :: Lens' VpnConnection (Maybe VpnConnectionOptions)-vcOptions = lens _vcOptions (\s a -> s { _vcOptions = a })---- | The static routes associated with the VPN connection.-vcRoutes :: Lens' VpnConnection [VpnStaticRoute]-vcRoutes = lens _vcRoutes (\s a -> s { _vcRoutes = a }) . _List---- | The current state of the VPN connection.-vcState :: Lens' VpnConnection VpnState-vcState = lens _vcState (\s a -> s { _vcState = a })---- | Any tags assigned to the VPN connection.-vcTags :: Lens' VpnConnection [Tag]-vcTags = lens _vcTags (\s a -> s { _vcTags = a }) . _List---- | The type of VPN connection.-vcType :: Lens' VpnConnection GatewayType-vcType = lens _vcType (\s a -> s { _vcType = a })---- | Information about the VPN tunnel.-vcVgwTelemetry :: Lens' VpnConnection [VgwTelemetry]-vcVgwTelemetry = lens _vcVgwTelemetry (\s a -> s { _vcVgwTelemetry = a }) . _List---- | The ID of the VPN connection.-vcVpnConnectionId :: Lens' VpnConnection Text-vcVpnConnectionId =-    lens _vcVpnConnectionId (\s a -> s { _vcVpnConnectionId = a })---- | The ID of the virtual private gateway at the AWS side of the VPN connection.-vcVpnGatewayId :: Lens' VpnConnection (Maybe Text)-vcVpnGatewayId = lens _vcVpnGatewayId (\s a -> s { _vcVpnGatewayId = a })--instance FromXML VpnConnection where-    parseXML x = VpnConnection-        <$> x .@  "customerGatewayConfiguration"-        <*> x .@  "customerGatewayId"-        <*> x .@? "options"-        <*> x .@? "routes" .!@ mempty-        <*> x .@  "state"-        <*> x .@? "tagSet" .!@ mempty-        <*> x .@  "type"-        <*> x .@? "vgwTelemetry" .!@ mempty-        <*> x .@  "vpnConnectionId"-        <*> x .@? "vpnGatewayId"--instance ToQuery VpnConnection where-    toQuery VpnConnection{..} = mconcat-        [ "CustomerGatewayConfiguration" =? _vcCustomerGatewayConfiguration-        , "CustomerGatewayId"            =? _vcCustomerGatewayId-        , "Options"                      =? _vcOptions-        , "Routes"                       `toQueryList` _vcRoutes-        , "State"                        =? _vcState-        , "TagSet"                       `toQueryList` _vcTags-        , "Type"                         =? _vcType-        , "VgwTelemetry"                 `toQueryList` _vcVgwTelemetry-        , "VpnConnectionId"              =? _vcVpnConnectionId-        , "VpnGatewayId"                 =? _vcVpnGatewayId-        ]--data InstanceState = InstanceState-    { _isCode :: Int-    , _isName :: InstanceStateName-    } deriving (Eq, Read, Show)---- | 'InstanceState' constructor.------ The fields accessible through corresponding lenses are:------ * 'isCode' @::@ 'Int'------ * 'isName' @::@ 'InstanceStateName'----instanceState :: Int -- ^ 'isCode'-              -> InstanceStateName -- ^ 'isName'-              -> InstanceState-instanceState p1 p2 = InstanceState-    { _isCode = p1-    , _isName = p2-    }---- | The low byte represents the state. The high byte is an opaque internal value--- and should be ignored.------ '0' : 'pending'------ '16' : 'running'------ '32' : 'shutting-down'------ '48' : 'terminated'------ '64' : 'stopping'------ '80' : 'stopped'-------isCode :: Lens' InstanceState Int-isCode = lens _isCode (\s a -> s { _isCode = a })---- | The current state of the instance.-isName :: Lens' InstanceState InstanceStateName-isName = lens _isName (\s a -> s { _isName = a })--instance FromXML InstanceState where-    parseXML x = InstanceState-        <$> x .@  "code"-        <*> x .@  "name"--instance ToQuery InstanceState where-    toQuery InstanceState{..} = mconcat-        [ "Code" =? _isCode-        , "Name" =? _isName-        ]--data Placement = Placement-    { _pAvailabilityZone :: Maybe Text-    , _pGroupName        :: Maybe Text-    , _pTenancy          :: Maybe Tenancy-    } deriving (Eq, Read, Show)---- | 'Placement' constructor.------ The fields accessible through corresponding lenses are:------ * 'pAvailabilityZone' @::@ 'Maybe' 'Text'------ * 'pGroupName' @::@ 'Maybe' 'Text'------ * 'pTenancy' @::@ 'Maybe' 'Tenancy'----placement :: Placement-placement = Placement-    { _pAvailabilityZone = Nothing-    , _pGroupName        = Nothing-    , _pTenancy          = Nothing-    }---- | The Availability Zone of the instance.-pAvailabilityZone :: Lens' Placement (Maybe Text)-pAvailabilityZone =-    lens _pAvailabilityZone (\s a -> s { _pAvailabilityZone = a })---- | The name of the placement group the instance is in (for cluster compute--- instances).-pGroupName :: Lens' Placement (Maybe Text)-pGroupName = lens _pGroupName (\s a -> s { _pGroupName = a })---- | The tenancy of the instance (if the instance is running in a VPC). An--- instance with a tenancy of 'dedicated' runs on single-tenant hardware.-pTenancy :: Lens' Placement (Maybe Tenancy)-pTenancy = lens _pTenancy (\s a -> s { _pTenancy = a })--instance FromXML Placement where-    parseXML x = Placement-        <$> x .@? "availabilityZone"-        <*> x .@? "groupName"-        <*> x .@? "tenancy"--instance ToQuery Placement where-    toQuery Placement{..} = mconcat-        [ "AvailabilityZone" =? _pAvailabilityZone-        , "GroupName"        =? _pGroupName-        , "Tenancy"          =? _pTenancy-        ]--data EventCode-    = InstanceReboot     -- ^ instance-reboot-    | InstanceRetirement -- ^ instance-retirement-    | InstanceStop       -- ^ instance-stop-    | SystemMaintenance  -- ^ system-maintenance-    | SystemReboot       -- ^ system-reboot-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable EventCode--instance FromText EventCode where-    parser = takeLowerText >>= \case-        "instance-reboot"     -> pure InstanceReboot-        "instance-retirement" -> pure InstanceRetirement-        "instance-stop"       -> pure InstanceStop-        "system-maintenance"  -> pure SystemMaintenance-        "system-reboot"       -> pure SystemReboot-        e                     -> fail $-            "Failure parsing EventCode from " ++ show e--instance ToText EventCode where-    toText = \case-        InstanceReboot     -> "instance-reboot"-        InstanceRetirement -> "instance-retirement"-        InstanceStop       -> "instance-stop"-        SystemMaintenance  -> "system-maintenance"-        SystemReboot       -> "system-reboot"--instance ToByteString EventCode-instance ToHeader     EventCode-instance ToQuery      EventCode--instance FromXML EventCode where-    parseXML = parseXMLText "EventCode"--data SpotInstanceType-    = OneTime    -- ^ one-time-    | Persistent -- ^ persistent-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable SpotInstanceType--instance FromText SpotInstanceType where-    parser = takeLowerText >>= \case-        "one-time"   -> pure OneTime-        "persistent" -> pure Persistent-        e            -> fail $-            "Failure parsing SpotInstanceType from " ++ show e--instance ToText SpotInstanceType where-    toText = \case-        OneTime    -> "one-time"-        Persistent -> "persistent"--instance ToByteString SpotInstanceType-instance ToHeader     SpotInstanceType-instance ToQuery      SpotInstanceType--instance FromXML SpotInstanceType where-    parseXML = parseXMLText "SpotInstanceType"--data VpcPeeringConnection = VpcPeeringConnection-    { _vpc1AccepterVpcInfo        :: Maybe VpcPeeringConnectionVpcInfo-    , _vpc1ExpirationTime         :: Maybe ISO8601-    , _vpc1RequesterVpcInfo       :: Maybe VpcPeeringConnectionVpcInfo-    , _vpc1Status                 :: Maybe VpcPeeringConnectionStateReason-    , _vpc1Tags                   :: List "item" Tag-    , _vpc1VpcPeeringConnectionId :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'VpcPeeringConnection' constructor.------ The fields accessible through corresponding lenses are:------ * 'vpc1AccepterVpcInfo' @::@ 'Maybe' 'VpcPeeringConnectionVpcInfo'------ * 'vpc1ExpirationTime' @::@ 'Maybe' 'UTCTime'------ * 'vpc1RequesterVpcInfo' @::@ 'Maybe' 'VpcPeeringConnectionVpcInfo'------ * 'vpc1Status' @::@ 'Maybe' 'VpcPeeringConnectionStateReason'------ * 'vpc1Tags' @::@ ['Tag']------ * 'vpc1VpcPeeringConnectionId' @::@ 'Maybe' 'Text'----vpcPeeringConnection :: VpcPeeringConnection-vpcPeeringConnection = VpcPeeringConnection-    { _vpc1AccepterVpcInfo        = Nothing-    , _vpc1ExpirationTime         = Nothing-    , _vpc1RequesterVpcInfo       = Nothing-    , _vpc1Status                 = Nothing-    , _vpc1Tags                   = mempty-    , _vpc1VpcPeeringConnectionId = Nothing-    }---- | The information of the peer VPC.-vpc1AccepterVpcInfo :: Lens' VpcPeeringConnection (Maybe VpcPeeringConnectionVpcInfo)-vpc1AccepterVpcInfo =-    lens _vpc1AccepterVpcInfo (\s a -> s { _vpc1AccepterVpcInfo = a })---- | The time that an unaccepted VPC peering connection will expire.-vpc1ExpirationTime :: Lens' VpcPeeringConnection (Maybe UTCTime)-vpc1ExpirationTime =-    lens _vpc1ExpirationTime (\s a -> s { _vpc1ExpirationTime = a })-        . mapping _Time---- | The information of the requester VPC.-vpc1RequesterVpcInfo :: Lens' VpcPeeringConnection (Maybe VpcPeeringConnectionVpcInfo)-vpc1RequesterVpcInfo =-    lens _vpc1RequesterVpcInfo (\s a -> s { _vpc1RequesterVpcInfo = a })---- | The status of the VPC peering connection.-vpc1Status :: Lens' VpcPeeringConnection (Maybe VpcPeeringConnectionStateReason)-vpc1Status = lens _vpc1Status (\s a -> s { _vpc1Status = a })---- | Any tags assigned to the resource.-vpc1Tags :: Lens' VpcPeeringConnection [Tag]-vpc1Tags = lens _vpc1Tags (\s a -> s { _vpc1Tags = a }) . _List---- | The ID of the VPC peering connection.-vpc1VpcPeeringConnectionId :: Lens' VpcPeeringConnection (Maybe Text)-vpc1VpcPeeringConnectionId =-    lens _vpc1VpcPeeringConnectionId-        (\s a -> s { _vpc1VpcPeeringConnectionId = a })--instance FromXML VpcPeeringConnection where-    parseXML x = VpcPeeringConnection-        <$> x .@? "accepterVpcInfo"-        <*> x .@? "expirationTime"-        <*> x .@? "requesterVpcInfo"-        <*> x .@? "status"-        <*> x .@? "tagSet" .!@ mempty-        <*> x .@? "vpcPeeringConnectionId"--instance ToQuery VpcPeeringConnection where-    toQuery VpcPeeringConnection{..} = mconcat-        [ "AccepterVpcInfo"        =? _vpc1AccepterVpcInfo-        , "ExpirationTime"         =? _vpc1ExpirationTime-        , "RequesterVpcInfo"       =? _vpc1RequesterVpcInfo-        , "Status"                 =? _vpc1Status-        , "TagSet"                 `toQueryList` _vpc1Tags-        , "VpcPeeringConnectionId" =? _vpc1VpcPeeringConnectionId-        ]--data S3Storage = S3Storage-    { _ssAWSAccessKeyId        :: Maybe Text-    , _ssBucket                :: Maybe Text-    , _ssPrefix                :: Maybe Text-    , _ssUploadPolicy          :: Maybe Base64-    , _ssUploadPolicySignature :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'S3Storage' constructor.------ The fields accessible through corresponding lenses are:------ * 'ssAWSAccessKeyId' @::@ 'Maybe' 'Text'------ * 'ssBucket' @::@ 'Maybe' 'Text'------ * 'ssPrefix' @::@ 'Maybe' 'Text'------ * 'ssUploadPolicy' @::@ 'Maybe' 'Base64'------ * 'ssUploadPolicySignature' @::@ 'Maybe' 'Text'----s3Storage :: S3Storage-s3Storage = S3Storage-    { _ssBucket                = Nothing-    , _ssPrefix                = Nothing-    , _ssAWSAccessKeyId        = Nothing-    , _ssUploadPolicy          = Nothing-    , _ssUploadPolicySignature = Nothing-    }---- | The access key ID of the owner of the bucket. Before you specify a value for--- your access key ID, review and follow the guidance in <http://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html Best Practices forManaging AWS Access Keys>.-ssAWSAccessKeyId :: Lens' S3Storage (Maybe Text)-ssAWSAccessKeyId = lens _ssAWSAccessKeyId (\s a -> s { _ssAWSAccessKeyId = a })---- | The bucket in which to store the AMI. You can specify a bucket that you--- already own or a new bucket that Amazon EC2 creates on your behalf. If you--- specify a bucket that belongs to someone else, Amazon EC2 returns an error.-ssBucket :: Lens' S3Storage (Maybe Text)-ssBucket = lens _ssBucket (\s a -> s { _ssBucket = a })---- | The beginning of the file name of the AMI.-ssPrefix :: Lens' S3Storage (Maybe Text)-ssPrefix = lens _ssPrefix (\s a -> s { _ssPrefix = a })---- | A Base64-encoded Amazon S3 upload policy that gives Amazon EC2 permission to--- upload items into Amazon S3 on your behalf.-ssUploadPolicy :: Lens' S3Storage (Maybe Base64)-ssUploadPolicy = lens _ssUploadPolicy (\s a -> s { _ssUploadPolicy = a })---- | The signature of the Base64 encoded JSON document.-ssUploadPolicySignature :: Lens' S3Storage (Maybe Text)-ssUploadPolicySignature =-    lens _ssUploadPolicySignature (\s a -> s { _ssUploadPolicySignature = a })--instance FromXML S3Storage where-    parseXML x = S3Storage-        <$> x .@? "AWSAccessKeyId"-        <*> x .@? "bucket"-        <*> x .@? "prefix"-        <*> x .@? "uploadPolicy"-        <*> x .@? "uploadPolicySignature"--instance ToQuery S3Storage where-    toQuery S3Storage{..} = mconcat-        [ "AWSAccessKeyId"        =? _ssAWSAccessKeyId-        , "Bucket"                =? _ssBucket-        , "Prefix"                =? _ssPrefix-        , "UploadPolicy"          =? _ssUploadPolicy-        , "UploadPolicySignature" =? _ssUploadPolicySignature-        ]--data VgwTelemetry = VgwTelemetry-    { _vtAcceptedRouteCount :: Maybe Int-    , _vtLastStatusChange   :: Maybe ISO8601-    , _vtOutsideIpAddress   :: Maybe Text-    , _vtStatus             :: Maybe TelemetryStatus-    , _vtStatusMessage      :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'VgwTelemetry' constructor.------ The fields accessible through corresponding lenses are:------ * 'vtAcceptedRouteCount' @::@ 'Maybe' 'Int'------ * 'vtLastStatusChange' @::@ 'Maybe' 'UTCTime'------ * 'vtOutsideIpAddress' @::@ 'Maybe' 'Text'------ * 'vtStatus' @::@ 'Maybe' 'TelemetryStatus'------ * 'vtStatusMessage' @::@ 'Maybe' 'Text'----vgwTelemetry :: VgwTelemetry-vgwTelemetry = VgwTelemetry-    { _vtOutsideIpAddress   = Nothing-    , _vtStatus             = Nothing-    , _vtLastStatusChange   = Nothing-    , _vtStatusMessage      = Nothing-    , _vtAcceptedRouteCount = Nothing-    }---- | The number of accepted routes.-vtAcceptedRouteCount :: Lens' VgwTelemetry (Maybe Int)-vtAcceptedRouteCount =-    lens _vtAcceptedRouteCount (\s a -> s { _vtAcceptedRouteCount = a })---- | The date and time of the last change in status.-vtLastStatusChange :: Lens' VgwTelemetry (Maybe UTCTime)-vtLastStatusChange =-    lens _vtLastStatusChange (\s a -> s { _vtLastStatusChange = a })-        . mapping _Time---- | The Internet-routable IP address of the virtual private gateway's outside--- interface.-vtOutsideIpAddress :: Lens' VgwTelemetry (Maybe Text)-vtOutsideIpAddress =-    lens _vtOutsideIpAddress (\s a -> s { _vtOutsideIpAddress = a })---- | The status of the VPN tunnel.-vtStatus :: Lens' VgwTelemetry (Maybe TelemetryStatus)-vtStatus = lens _vtStatus (\s a -> s { _vtStatus = a })---- | If an error occurs, a description of the error.-vtStatusMessage :: Lens' VgwTelemetry (Maybe Text)-vtStatusMessage = lens _vtStatusMessage (\s a -> s { _vtStatusMessage = a })--instance FromXML VgwTelemetry where-    parseXML x = VgwTelemetry-        <$> x .@? "acceptedRouteCount"-        <*> x .@? "lastStatusChange"-        <*> x .@? "outsideIpAddress"-        <*> x .@? "status"-        <*> x .@? "statusMessage"--instance ToQuery VgwTelemetry where-    toQuery VgwTelemetry{..} = mconcat-        [ "AcceptedRouteCount" =? _vtAcceptedRouteCount-        , "LastStatusChange"   =? _vtLastStatusChange-        , "OutsideIpAddress"   =? _vtOutsideIpAddress-        , "Status"             =? _vtStatus-        , "StatusMessage"      =? _vtStatusMessage-        ]--data VpnStaticRoute = VpnStaticRoute-    { _vsrDestinationCidrBlock :: Maybe Text-    , _vsrSource               :: Maybe VpnStaticRouteSource-    , _vsrState                :: Maybe VpnState-    } deriving (Eq, Read, Show)---- | 'VpnStaticRoute' constructor.------ The fields accessible through corresponding lenses are:------ * 'vsrDestinationCidrBlock' @::@ 'Maybe' 'Text'------ * 'vsrSource' @::@ 'Maybe' 'VpnStaticRouteSource'------ * 'vsrState' @::@ 'Maybe' 'VpnState'----vpnStaticRoute :: VpnStaticRoute-vpnStaticRoute = VpnStaticRoute-    { _vsrDestinationCidrBlock = Nothing-    , _vsrSource               = Nothing-    , _vsrState                = Nothing-    }---- | The CIDR block associated with the local subnet of the customer data center.-vsrDestinationCidrBlock :: Lens' VpnStaticRoute (Maybe Text)-vsrDestinationCidrBlock =-    lens _vsrDestinationCidrBlock (\s a -> s { _vsrDestinationCidrBlock = a })---- | Indicates how the routes were provided.-vsrSource :: Lens' VpnStaticRoute (Maybe VpnStaticRouteSource)-vsrSource = lens _vsrSource (\s a -> s { _vsrSource = a })---- | The current state of the static route.-vsrState :: Lens' VpnStaticRoute (Maybe VpnState)-vsrState = lens _vsrState (\s a -> s { _vsrState = a })--instance FromXML VpnStaticRoute where-    parseXML x = VpnStaticRoute-        <$> x .@? "destinationCidrBlock"-        <*> x .@? "source"-        <*> x .@? "state"--instance ToQuery VpnStaticRoute where-    toQuery VpnStaticRoute{..} = mconcat-        [ "DestinationCidrBlock" =? _vsrDestinationCidrBlock-        , "Source"               =? _vsrSource-        , "State"                =? _vsrState-        ]--data InstanceStateName-    = ISNPending      -- ^ pending-    | ISNRunning      -- ^ running-    | ISNShuttingDown -- ^ shutting-down-    | ISNStopped      -- ^ stopped-    | ISNStopping     -- ^ stopping-    | ISNTerminated   -- ^ terminated-      deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable InstanceStateName--instance FromText InstanceStateName where-    parser = takeLowerText >>= \case-        "pending"       -> pure ISNPending-        "running"       -> pure ISNRunning-        "shutting-down" -> pure ISNShuttingDown-        "stopped"       -> pure ISNStopped-        "stopping"      -> pure ISNStopping-        "terminated"    -> pure ISNTerminated-        e               -> fail $-            "Failure parsing InstanceStateName from " ++ show e--instance ToText InstanceStateName where-    toText = \case-        ISNPending      -> "pending"-        ISNRunning      -> "running"-        ISNShuttingDown -> "shutting-down"-        ISNStopped      -> "stopped"-        ISNStopping     -> "stopping"-        ISNTerminated   -> "terminated"--instance ToByteString InstanceStateName-instance ToHeader     InstanceStateName-instance ToQuery      InstanceStateName--instance FromXML InstanceStateName where-    parseXML = parseXMLText "InstanceStateName"--data Instance = Instance-    { _i1AmiLaunchIndex        :: Int-    , _i1Architecture          :: ArchitectureValues-    , _i1BlockDeviceMappings   :: List "item" InstanceBlockDeviceMapping-    , _i1ClientToken           :: Maybe Text-    , _i1EbsOptimized          :: Bool-    , _i1Hypervisor            :: HypervisorType-    , _i1IamInstanceProfile    :: Maybe IamInstanceProfile-    , _i1ImageId               :: Text-    , _i1InstanceId            :: Text-    , _i1InstanceLifecycle     :: Maybe InstanceLifecycleType-    , _i1InstanceType          :: InstanceType-    , _i1KernelId              :: Maybe Text-    , _i1KeyName               :: Maybe Text-    , _i1LaunchTime            :: ISO8601-    , _i1Monitoring            :: Monitoring-    , _i1NetworkInterfaces     :: List "item" InstanceNetworkInterface-    , _i1Placement             :: Placement-    , _i1Platform              :: Maybe PlatformValues-    , _i1PrivateDnsName        :: Maybe Text-    , _i1PrivateIpAddress      :: Maybe Text-    , _i1ProductCodes          :: List "item" ProductCode-    , _i1PublicDnsName         :: Maybe Text-    , _i1PublicIpAddress       :: Maybe Text-    , _i1RamdiskId             :: Maybe Text-    , _i1RootDeviceName        :: Maybe Text-    , _i1RootDeviceType        :: DeviceType-    , _i1SecurityGroups        :: List "item" GroupIdentifier-    , _i1SourceDestCheck       :: Maybe Bool-    , _i1SpotInstanceRequestId :: Maybe Text-    , _i1SriovNetSupport       :: Maybe Text-    , _i1State                 :: InstanceState-    , _i1StateReason           :: Maybe StateReason-    , _i1StateTransitionReason :: Maybe Text-    , _i1SubnetId              :: Maybe Text-    , _i1Tags                  :: List "item" Tag-    , _i1VirtualizationType    :: VirtualizationType-    , _i1VpcId                 :: Maybe Text-    } deriving (Eq, Read, Show)---- | 'Instance' constructor.------ The fields accessible through corresponding lenses are:------ * 'i1AmiLaunchIndex' @::@ 'Int'------ * 'i1Architecture' @::@ 'ArchitectureValues'------ * 'i1BlockDeviceMappings' @::@ ['InstanceBlockDeviceMapping']------ * 'i1ClientToken' @::@ 'Maybe' 'Text'------ * 'i1EbsOptimized' @::@ 'Bool'------ * 'i1Hypervisor' @::@ 'HypervisorType'------ * 'i1IamInstanceProfile' @::@ 'Maybe' 'IamInstanceProfile'------ * 'i1ImageId' @::@ 'Text'------ * 'i1InstanceId' @::@ 'Text'------ * 'i1InstanceLifecycle' @::@ 'Maybe' 'InstanceLifecycleType'------ * 'i1InstanceType' @::@ 'InstanceType'------ * 'i1KernelId' @::@ 'Maybe' 'Text'------ * 'i1KeyName' @::@ 'Maybe' 'Text'------ * 'i1LaunchTime' @::@ 'UTCTime'------ * 'i1Monitoring' @::@ 'Monitoring'------ * 'i1NetworkInterfaces' @::@ ['InstanceNetworkInterface']------ * 'i1Placement' @::@ 'Placement'------ * 'i1Platform' @::@ 'Maybe' 'PlatformValues'------ * 'i1PrivateDnsName' @::@ 'Maybe' 'Text'------ * 'i1PrivateIpAddress' @::@ 'Maybe' 'Text'------ * 'i1ProductCodes' @::@ ['ProductCode']------ * 'i1PublicDnsName' @::@ 'Maybe' 'Text'------ * 'i1PublicIpAddress' @::@ 'Maybe' 'Text'------ * 'i1RamdiskId' @::@ 'Maybe' 'Text'------ * 'i1RootDeviceName' @::@ 'Maybe' 'Text'------ * 'i1RootDeviceType' @::@ 'DeviceType'------ * 'i1SecurityGroups' @::@ ['GroupIdentifier']------ * 'i1SourceDestCheck' @::@ 'Maybe' 'Bool'------ * 'i1SpotInstanceRequestId' @::@ 'Maybe' 'Text'------ * 'i1SriovNetSupport' @::@ 'Maybe' 'Text'------ * 'i1State' @::@ 'InstanceState'------ * 'i1StateReason' @::@ 'Maybe' 'StateReason'------ * 'i1StateTransitionReason' @::@ 'Maybe' 'Text'------ * 'i1SubnetId' @::@ 'Maybe' 'Text'------ * 'i1Tags' @::@ ['Tag']------ * 'i1VirtualizationType' @::@ 'VirtualizationType'------ * 'i1VpcId' @::@ 'Maybe' 'Text'----instance' :: Text -- ^ 'i1InstanceId'-          -> Text -- ^ 'i1ImageId'-          -> InstanceState -- ^ 'i1State'-          -> Int -- ^ 'i1AmiLaunchIndex'-          -> InstanceType -- ^ 'i1InstanceType'-          -> UTCTime -- ^ 'i1LaunchTime'-          -> Placement -- ^ 'i1Placement'-          -> Monitoring -- ^ 'i1Monitoring'-          -> ArchitectureValues -- ^ 'i1Architecture'-          -> DeviceType -- ^ 'i1RootDeviceType'-          -> VirtualizationType -- ^ 'i1VirtualizationType'-          -> HypervisorType -- ^ 'i1Hypervisor'-          -> Bool -- ^ 'i1EbsOptimized'-          -> Instance-instance' p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 = Instance-    { _i1InstanceId            = p1-    , _i1ImageId               = p2-    , _i1State                 = p3-    , _i1AmiLaunchIndex        = p4-    , _i1InstanceType          = p5-    , _i1LaunchTime            = withIso _Time (const id) p6-    , _i1Placement             = p7-    , _i1Monitoring            = p8-    , _i1Architecture          = p9-    , _i1RootDeviceType        = p10-    , _i1VirtualizationType    = p11-    , _i1Hypervisor            = p12-    , _i1EbsOptimized          = p13-    , _i1PrivateDnsName        = Nothing-    , _i1PublicDnsName         = Nothing-    , _i1StateTransitionReason = Nothing-    , _i1KeyName               = Nothing-    , _i1ProductCodes          = mempty-    , _i1KernelId              = Nothing-    , _i1RamdiskId             = Nothing-    , _i1Platform              = Nothing-    , _i1SubnetId              = Nothing-    , _i1VpcId                 = Nothing-    , _i1PrivateIpAddress      = Nothing-    , _i1PublicIpAddress       = Nothing-    , _i1StateReason           = Nothing-    , _i1RootDeviceName        = Nothing-    , _i1BlockDeviceMappings   = mempty-    , _i1InstanceLifecycle     = Nothing-    , _i1SpotInstanceRequestId = Nothing-    , _i1ClientToken           = Nothing-    , _i1Tags                  = mempty-    , _i1SecurityGroups        = mempty-    , _i1SourceDestCheck       = Nothing-    , _i1NetworkInterfaces     = mempty-    , _i1IamInstanceProfile    = Nothing-    , _i1SriovNetSupport       = Nothing-    }---- | The AMI launch index, which can be used to find this instance in the launch--- group.-i1AmiLaunchIndex :: Lens' Instance Int-i1AmiLaunchIndex = lens _i1AmiLaunchIndex (\s a -> s { _i1AmiLaunchIndex = a })---- | The architecture of the image.-i1Architecture :: Lens' Instance ArchitectureValues-i1Architecture = lens _i1Architecture (\s a -> s { _i1Architecture = a })---- | Any block device mapping entries for the instance.-i1BlockDeviceMappings :: Lens' Instance [InstanceBlockDeviceMapping]-i1BlockDeviceMappings =-    lens _i1BlockDeviceMappings (\s a -> s { _i1BlockDeviceMappings = a })-        . _List---- | The idempotency token you provided when you launched the instance.-i1ClientToken :: Lens' Instance (Maybe Text)-i1ClientToken = lens _i1ClientToken (\s a -> s { _i1ClientToken = a })---- | Indicates whether the instance is optimized for EBS I/O. This optimization--- provides dedicated throughput to Amazon EBS and an optimized configuration--- stack to provide optimal I/O performance. This optimization isn't available--- with all instance types. Additional usage charges apply when using an EBS--- Optimized instance.-i1EbsOptimized :: Lens' Instance Bool-i1EbsOptimized = lens _i1EbsOptimized (\s a -> s { _i1EbsOptimized = a })---- | The hypervisor type of the instance.-i1Hypervisor :: Lens' Instance HypervisorType-i1Hypervisor = lens _i1Hypervisor (\s a -> s { _i1Hypervisor = a })---- | The IAM instance profile associated with the instance.-i1IamInstanceProfile :: Lens' Instance (Maybe IamInstanceProfile)-i1IamInstanceProfile =-    lens _i1IamInstanceProfile (\s a -> s { _i1IamInstanceProfile = a })---- | The ID of the AMI used to launch the instance.-i1ImageId :: Lens' Instance Text-i1ImageId = lens _i1ImageId (\s a -> s { _i1ImageId = a })---- | The ID of the instance.-i1InstanceId :: Lens' Instance Text-i1InstanceId = lens _i1InstanceId (\s a -> s { _i1InstanceId = a })---- | Indicates whether this is a Spot Instance.-i1InstanceLifecycle :: Lens' Instance (Maybe InstanceLifecycleType)-i1InstanceLifecycle =-    lens _i1InstanceLifecycle (\s a -> s { _i1InstanceLifecycle = a })---- | The instance type.-i1InstanceType :: Lens' Instance InstanceType-i1InstanceType = lens _i1InstanceType (\s a -> s { _i1InstanceType = a })---- | The kernel associated with this instance.-i1KernelId :: Lens' Instance (Maybe Text)-i1KernelId = lens _i1KernelId (\s a -> s { _i1KernelId = a })---- | The name of the key pair, if this instance was launched with an associated--- key pair.-i1KeyName :: Lens' Instance (Maybe Text)-i1KeyName = lens _i1KeyName (\s a -> s { _i1KeyName = a })---- | The time the instance was launched.-i1LaunchTime :: Lens' Instance UTCTime-i1LaunchTime = lens _i1LaunchTime (\s a -> s { _i1LaunchTime = a }) . _Time---- | The monitoring information for the instance.-i1Monitoring :: Lens' Instance Monitoring-i1Monitoring = lens _i1Monitoring (\s a -> s { _i1Monitoring = a })---- | [EC2-VPC] One or more network interfaces for the instance.-i1NetworkInterfaces :: Lens' Instance [InstanceNetworkInterface]-i1NetworkInterfaces =-    lens _i1NetworkInterfaces (\s a -> s { _i1NetworkInterfaces = a })-        . _List---- | The location where the instance launched.-i1Placement :: Lens' Instance Placement-i1Placement = lens _i1Placement (\s a -> s { _i1Placement = a })---- | The value is 'Windows' for Windows instances; otherwise blank.-i1Platform :: Lens' Instance (Maybe PlatformValues)-i1Platform = lens _i1Platform (\s a -> s { _i1Platform = a })---- | The private DNS name assigned to the instance. This DNS name can only be used--- inside the Amazon EC2 network. This name is not available until the instance--- enters the 'running' state.-i1PrivateDnsName :: Lens' Instance (Maybe Text)-i1PrivateDnsName = lens _i1PrivateDnsName (\s a -> s { _i1PrivateDnsName = a })---- | The private IP address assigned to the instance.-i1PrivateIpAddress :: Lens' Instance (Maybe Text)-i1PrivateIpAddress =-    lens _i1PrivateIpAddress (\s a -> s { _i1PrivateIpAddress = a })---- | The product codes attached to this instance.-i1ProductCodes :: Lens' Instance [ProductCode]-i1ProductCodes = lens _i1ProductCodes (\s a -> s { _i1ProductCodes = a }) . _List---- | The public DNS name assigned to the instance. This name is not available--- until the instance enters the 'running' state.-i1PublicDnsName :: Lens' Instance (Maybe Text)-i1PublicDnsName = lens _i1PublicDnsName (\s a -> s { _i1PublicDnsName = a })---- | The public IP address assigned to the instance.-i1PublicIpAddress :: Lens' Instance (Maybe Text)-i1PublicIpAddress =-    lens _i1PublicIpAddress (\s a -> s { _i1PublicIpAddress = a })---- | The RAM disk associated with this instance.-i1RamdiskId :: Lens' Instance (Maybe Text)-i1RamdiskId = lens _i1RamdiskId (\s a -> s { _i1RamdiskId = a })---- | The root device name (for example, '/dev/sda1' or '/dev/xvda').-i1RootDeviceName :: Lens' Instance (Maybe Text)-i1RootDeviceName = lens _i1RootDeviceName (\s a -> s { _i1RootDeviceName = a })---- | The root device type used by the AMI. The AMI can use an Amazon EBS volume or--- an instance store volume.-i1RootDeviceType :: Lens' Instance DeviceType-i1RootDeviceType = lens _i1RootDeviceType (\s a -> s { _i1RootDeviceType = a })---- | One or more security groups for the instance.-i1SecurityGroups :: Lens' Instance [GroupIdentifier]-i1SecurityGroups = lens _i1SecurityGroups (\s a -> s { _i1SecurityGroups = a }) . _List---- | Specifies whether to enable an instance launched in a VPC to perform NAT.--- This controls whether source/destination checking is enabled on the instance.--- A value of 'true' means checking is enabled, and 'false' means checking is--- disabled. The value must be 'false' for the instance to perform NAT. For more--- information, see <http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html NAT Instances> in the /Amazon Virtual Private Cloud User Guide/.-i1SourceDestCheck :: Lens' Instance (Maybe Bool)-i1SourceDestCheck =-    lens _i1SourceDestCheck (\s a -> s { _i1SourceDestCheck = a })---- | The ID of the Spot Instance request.-i1SpotInstanceRequestId :: Lens' Instance (Maybe Text)-i1SpotInstanceRequestId =-    lens _i1SpotInstanceRequestId (\s a -> s { _i1SpotInstanceRequestId = a })---- | Specifies whether enhanced networking is enabled.-i1SriovNetSupport :: Lens' Instance (Maybe Text)-i1SriovNetSupport =-    lens _i1SriovNetSupport (\s a -> s { _i1SriovNetSupport = a })---- | The current state of the instance.-i1State :: Lens' Instance InstanceState-i1State = lens _i1State (\s a -> s { _i1State = a })---- | The reason for the most recent state transition.-i1StateReason :: Lens' Instance (Maybe StateReason)-i1StateReason = lens _i1StateReason (\s a -> s { _i1StateReason = a })---- | The reason for the most recent state transition. This might be an empty--- string.-i1StateTransitionReason :: Lens' Instance (Maybe Text)-i1StateTransitionReason =-    lens _i1StateTransitionReason (\s a -> s { _i1StateTransitionReason = a })---- | The ID of the subnet in which the instance is running.-i1SubnetId :: Lens' Instance (Maybe Text)-i1SubnetId = lens _i1SubnetId (\s a -> s { _i1SubnetId = a })---- | Any tags assigned to the instance.-i1Tags :: Lens' Instance [Tag]-i1Tags = lens _i1Tags (\s a -> s { _i1Tags = a }) . _List---- | The virtualization type of the instance.-i1VirtualizationType :: Lens' Instance VirtualizationType-i1VirtualizationType =-    lens _i1VirtualizationType (\s a -> s { _i1VirtualizationType = a })---- | The ID of the VPC in which the instance is running.-i1VpcId :: Lens' Instance (Maybe Text)-i1VpcId = lens _i1VpcId (\s a -> s { _i1VpcId = a })--instance FromXML Instance where-    parseXML x = Instance-        <$> x .@  "amiLaunchIndex"-        <*> x .@  "architecture"-        <*> x .@? "blockDeviceMapping" .!@ mempty-        <*> x .@? "clientToken"-        <*> x .@  "ebsOptimized"-        <*> x .@  "hypervisor"-        <*> x .@? "iamInstanceProfile"-        <*> x .@  "imageId"-        <*> x .@  "instanceId"-        <*> x .@? "instanceLifecycle"-        <*> x .@  "instanceType"-        <*> x .@? "kernelId"-        <*> x .@? "keyName"-        <*> x .@  "launchTime"-        <*> x .@  "monitoring"-        <*> x .@? "networkInterfaceSet" .!@ mempty-        <*> x .@  "placement"-        <*> x .@? "platform"-        <*> x .@? "privateDnsName"-        <*> x .@? "privateIpAddress"-        <*> x .@? "productCodes" .!@ mempty-        <*> x .@? "dnsName"-        <*> x .@? "ipAddress"-        <*> x .@? "ramdiskId"-        <*> x .@? "rootDeviceName"-        <*> x .@  "rootDeviceType"-        <*> x .@? "groupSet" .!@ mempty-        <*> x .@? "sourceDestCheck"-        <*> x .@? "spotInstanceRequestId"-        <*> x .@? "sriovNetSupport"-        <*> x .@  "instanceState"-        <*> x .@? "stateReason"-        <*> x .@? "reason"-        <*> x .@? "subnetId"-        <*> x .@? "tagSet" .!@ mempty-        <*> x .@  "virtualizationType"-        <*> x .@? "vpcId"--instance ToQuery Instance where-    toQuery Instance{..} = mconcat-        [ "AmiLaunchIndex"        =? _i1AmiLaunchIndex-        , "Architecture"          =? _i1Architecture-        , "BlockDeviceMapping"    `toQueryList` _i1BlockDeviceMappings-        , "ClientToken"           =? _i1ClientToken-        , "EbsOptimized"          =? _i1EbsOptimized-        , "Hypervisor"            =? _i1Hypervisor-        , "IamInstanceProfile"    =? _i1IamInstanceProfile-        , "ImageId"               =? _i1ImageId-        , "InstanceId"            =? _i1InstanceId-        , "InstanceLifecycle"     =? _i1InstanceLifecycle-        , "InstanceType"          =? _i1InstanceType-        , "KernelId"              =? _i1KernelId-        , "KeyName"               =? _i1KeyName-        , "LaunchTime"            =? _i1LaunchTime-        , "Monitoring"            =? _i1Monitoring-        , "NetworkInterfaceSet"   `toQueryList` _i1NetworkInterfaces-        , "Placement"             =? _i1Placement-        , "Platform"              =? _i1Platform-        , "PrivateDnsName"        =? _i1PrivateDnsName-        , "PrivateIpAddress"      =? _i1PrivateIpAddress-        , "ProductCodes"          `toQueryList` _i1ProductCodes-        , "DnsName"               =? _i1PublicDnsName-        , "IpAddress"             =? _i1PublicIpAddress-        , "RamdiskId"             =? _i1RamdiskId-        , "RootDeviceName"        =? _i1RootDeviceName-        , "RootDeviceType"        =? _i1RootDeviceType-        , "GroupSet"              `toQueryList` _i1SecurityGroups-        , "SourceDestCheck"       =? _i1SourceDestCheck-        , "SpotInstanceRequestId" =? _i1SpotInstanceRequestId-        , "SriovNetSupport"       =? _i1SriovNetSupport-        , "InstanceState"         =? _i1State-        , "StateReason"           =? _i1StateReason-        , "Reason"                =? _i1StateTransitionReason-        , "SubnetId"              =? _i1SubnetId-        , "TagSet"                `toQueryList` _i1Tags-        , "VirtualizationType"    =? _i1VirtualizationType-        , "VpcId"                 =? _i1VpcId-        ]--data ExportTask = ExportTask-    { _etDescription           :: Text-    , _etExportTaskId          :: Text-    , _etExportToS3Task        :: ExportToS3Task-    , _etInstanceExportDetails :: InstanceExportDetails-    , _etState                 :: ExportTaskState-    , _etStatusMessage         :: Text-    } deriving (Eq, Read, Show)---- | 'ExportTask' constructor.------ The fields accessible through corresponding lenses are:------ * 'etDescription' @::@ 'Text'------ * 'etExportTaskId' @::@ 'Text'------ * 'etExportToS3Task' @::@ 'ExportToS3Task'------ * 'etInstanceExportDetails' @::@ 'InstanceExportDetails'------ * 'etState' @::@ 'ExportTaskState'------ * 'etStatusMessage' @::@ 'Text'----exportTask :: Text -- ^ 'etExportTaskId'-           -> Text -- ^ 'etDescription'-           -> ExportTaskState -- ^ 'etState'-           -> Text -- ^ 'etStatusMessage'-           -> InstanceExportDetails -- ^ 'etInstanceExportDetails'-           -> ExportToS3Task -- ^ 'etExportToS3Task'-           -> ExportTask-exportTask p1 p2 p3 p4 p5 p6 = ExportTask-    { _etExportTaskId          = p1-    , _etDescription           = p2-    , _etState                 = p3-    , _etStatusMessage         = p4-    , _etInstanceExportDetails = p5-    , _etExportToS3Task        = p6-    }---- | A description of the resource being exported.-etDescription :: Lens' ExportTask Text-etDescription = lens _etDescription (\s a -> s { _etDescription = a })---- | The ID of the export task.-etExportTaskId :: Lens' ExportTask Text-etExportTaskId = lens _etExportTaskId (\s a -> s { _etExportTaskId = a })--etExportToS3Task :: Lens' ExportTask ExportToS3Task-etExportToS3Task = lens _etExportToS3Task (\s a -> s { _etExportToS3Task = a })---- | The instance being exported.-etInstanceExportDetails :: Lens' ExportTask InstanceExportDetails-etInstanceExportDetails =-    lens _etInstanceExportDetails (\s a -> s { _etInstanceExportDetails = a })---- | The state of the conversion task.+    -- * ImportSnapshotTask+    , ImportSnapshotTask+    , importSnapshotTask+    , istDescription+    , istImportTaskId+    , istSnapshotTaskDetail++    -- * GroupIdentifier+    , GroupIdentifier+    , groupIdentifier+    , giGroupId+    , giGroupName++    -- * VpnStaticRouteSource+    , VpnStaticRouteSource (..)++    -- * ReservedInstancesListing+    , ReservedInstancesListing+    , reservedInstancesListing+    , rilClientToken+    , rilCreateDate+    , rilInstanceCounts+    , rilPriceSchedules+    , rilReservedInstancesId+    , rilReservedInstancesListingId+    , rilStatus+    , rilStatusMessage+    , rilTags+    , rilUpdateDate++    -- * InstanceLifecycleType+    , InstanceLifecycleType (..)++    -- * State+    , State (..)++    -- * VirtualizationType+    , VirtualizationType (..)++    -- * NetworkInterfaceStatus+    , NetworkInterfaceStatus (..)++    -- * PlatformValues+    , PlatformValues (..)++    -- * CreateVolumePermission+    , CreateVolumePermission+    , createVolumePermission+    , cvpGroup+    , cvpUserId++    -- * NetworkInterfaceAttachmentChanges+    , NetworkInterfaceAttachmentChanges+    , networkInterfaceAttachmentChanges+    , niacAttachmentId+    , niacDeleteOnTermination++    -- * RecurringChargeFrequency+    , RecurringChargeFrequency (..)++    -- * DhcpOptions+    , DhcpOptions+    , dhcpOptions+    , doDhcpConfigurations+    , doDhcpOptionsId+    , doTags++    -- * InstanceNetworkInterfaceSpecification+    , InstanceNetworkInterfaceSpecification+    , instanceNetworkInterfaceSpecification+    , inisAssociatePublicIpAddress+    , inisDeleteOnTermination+    , inisDescription+    , inisDeviceIndex+    , inisGroups+    , inisNetworkInterfaceId+    , inisPrivateIpAddress+    , inisPrivateIpAddresses+    , inisSecondaryPrivateIpAddressCount+    , inisSubnetId++    -- * VolumeState+    , VolumeState (..)++    -- * AttributeValue+    , AttributeValue+    , attributeValue+    , avValue++    -- * PrivateIpAddressSpecification+    , PrivateIpAddressSpecification+    , privateIpAddressSpecification+    , piasPrimary+    , piasPrivateIpAddress++    -- * Image+    , Image+    , image+    , iArchitecture+    , iBlockDeviceMappings+    , iCreationDate+    , iDescription+    , iHypervisor+    , iImageId+    , iImageLocation+    , iImageOwnerAlias+    , iImageType+    , iKernelId+    , iName+    , iOwnerId+    , iPlatform+    , iProductCodes+    , iPublic+    , iRamdiskId+    , iRootDeviceName+    , iRootDeviceType+    , iSriovNetSupport+    , iState+    , iStateReason+    , iTags+    , iVirtualizationType++    -- * DhcpConfiguration+    , DhcpConfiguration+    , dhcpConfiguration+    , dcKey+    , dcValues++    -- * CancelSpotFleetRequestsError+    , CancelSpotFleetRequestsError+    , cancelSpotFleetRequestsError+    , csfreCode+    , csfreMessage++    -- * Tag+    , Tag+    , tag+    , tagKey+    , tagValue++    -- * AccountAttributeName+    , AccountAttributeName (..)++    -- * NetworkInterfaceAttachment+    , NetworkInterfaceAttachment+    , networkInterfaceAttachment+    , niaAttachTime+    , niaAttachmentId+    , niaDeleteOnTermination+    , niaDeviceIndex+    , niaInstanceId+    , niaInstanceOwnerId+    , niaStatus++    -- * RunInstancesMonitoringEnabled+    , RunInstancesMonitoringEnabled+    , runInstancesMonitoringEnabled+    , rimeEnabled++    -- * VolumeStatusInfo+    , VolumeStatusInfo+    , volumeStatusInfo+    , vsiDetails+    , vsiStatus++    -- * NetworkInterfaceAssociation+    , NetworkInterfaceAssociation+    , networkInterfaceAssociation+    , niaAllocationId+    , niaAssociationId+    , niaIpOwnerId+    , niaPublicDnsName+    , niaPublicIp++    -- * CreateVolumePermissionModifications+    , CreateVolumePermissionModifications+    , createVolumePermissionModifications+    , cvpmAdd+    , cvpmRemove++    -- * VpcState+    , VpcState (..)++    -- * ResourceType+    , ResourceType (..)++    -- * ReportStatusType+    , ReportStatusType (..)++    -- * CurrencyCodeValues+    , CurrencyCodeValues (..)++    -- * IcmpTypeCode+    , IcmpTypeCode+    , icmpTypeCode+    , itcCode+    , itcType++    -- * InstanceCount+    , InstanceCount+    , instanceCount+    , icInstanceCount+    , icState++    -- * ExportToS3Task+    , ExportToS3Task+    , exportToS3Task+    , etstContainerFormat+    , etstDiskImageFormat+    , etstS3Bucket+    , etstS3Key++    -- * PrefixList+    , PrefixList+    , prefixList+    , plCidrs+    , plPrefixListId+    , plPrefixListName++    -- * BlockDeviceMapping+    , BlockDeviceMapping+    , blockDeviceMapping+    , bdmDeviceName+    , bdmEbs+    , bdmNoDevice+    , bdmVirtualName++    -- * ConversionTask+    , ConversionTask+    , conversionTask+    , ctConversionTaskId+    , ctExpirationTime+    , ctImportInstance+    , ctImportVolume+    , ctState+    , ctStatusMessage+    , ctTags++    -- * AttachmentStatus+    , AttachmentStatus (..)++    -- * ClassicLinkInstance+    , ClassicLinkInstance+    , classicLinkInstance+    , cliGroups+    , cliInstanceId+    , cliTags+    , cliVpcId++    -- * RouteOrigin+    , RouteOrigin (..)++    -- * ListingState+    , ListingState (..)++    -- * SpotPrice+    , SpotPrice+    , spotPrice+    , spAvailabilityZone+    , spInstanceType+    , spProductDescription+    , spSpotPrice+    , spTimestamp++    -- * ActiveInstance+    , ActiveInstance+    , activeInstance+    , aiInstanceId+    , aiInstanceType+    , aiSpotInstanceRequestId++    -- * SpotFleetRequestConfigData+    , SpotFleetRequestConfigData+    , spotFleetRequestConfigData+    , sfrcdClientToken+    , sfrcdIamFleetRole+    , sfrcdLaunchSpecifications+    , sfrcdSpotPrice+    , sfrcdTargetCapacity+    , sfrcdTerminateInstancesWithExpiration+    , sfrcdValidFrom+    , sfrcdValidUntil++    -- * InstanceMonitoring+    , InstanceMonitoring+    , instanceMonitoring+    , imInstanceId+    , imMonitoring++    -- * PriceScheduleSpecification+    , PriceScheduleSpecification+    , priceScheduleSpecification+    , pssCurrencyCode+    , pssPrice+    , pssTerm++    -- * SpotFleetRequestConfig+    , SpotFleetRequestConfig+    , spotFleetRequestConfig+    , sfrcSpotFleetRequestConfig+    , sfrcSpotFleetRequestId+    , sfrcSpotFleetRequestState++    -- * SpotInstanceStatus+    , SpotInstanceStatus+    , spotInstanceStatus+    , sisCode+    , sisMessage+    , sisUpdateTime++    -- * SnapshotTaskDetail+    , SnapshotTaskDetail+    , snapshotTaskDetail+    , stdDescription+    , stdDiskImageSize+    , stdFormat+    , stdProgress+    , stdSnapshotId+    , stdStatus+    , stdStatusMessage+    , stdUrl+    , stdUserBucket++    -- * AvailabilityZoneState+    , AvailabilityZoneState (..)++    -- * SpotInstanceRequest+    , SpotInstanceRequest+    , spotInstanceRequest+    , siAvailabilityZoneGroup+    , siCreateTime+    , siFault+    , siInstanceId+    , siLaunchGroup+    , siLaunchSpecification+    , siLaunchedAvailabilityZone+    , siProductDescription+    , siSpotInstanceRequestId+    , siSpotPrice+    , siState+    , siStatus+    , siTags+    , siType+    , siValidFrom+    , siValidUntil++    -- * LaunchSpecification+    , LaunchSpecification+    , launchSpecification+    , lsAddressingType+    , lsBlockDeviceMappings+    , lsEbsOptimized+    , lsIamInstanceProfile+    , lsImageId+    , lsInstanceType+    , lsKernelId+    , lsKeyName+    , lsMonitoring+    , lsNetworkInterfaces+    , lsPlacement+    , lsRamdiskId+    , lsSecurityGroups+    , lsSubnetId+    , lsUserData++    -- * VolumeStatusEvent+    , VolumeStatusEvent+    , volumeStatusEvent+    , vseDescription+    , vseEventId+    , vseEventType+    , vseNotAfter+    , vseNotBefore++    -- * Volume+    , Volume+    , volume+    , vAttachments+    , vAvailabilityZone+    , vCreateTime+    , vEncrypted+    , vIops+    , vKmsKeyId+    , vSize+    , vSnapshotId+    , vState+    , vTags+    , vVolumeId+    , vVolumeType++    -- * Reservation+    , Reservation+    , reservation+    , rGroups+    , rInstances+    , rOwnerId+    , rRequesterId+    , rReservationId++    -- * ImportInstanceVolumeDetailItem+    , ImportInstanceVolumeDetailItem+    , importInstanceVolumeDetailItem+    , iivdiAvailabilityZone+    , iivdiBytesConverted+    , iivdiDescription+    , iivdiImage+    , iivdiStatus+    , iivdiStatusMessage+    , iivdiVolume++    -- * SummaryStatus+    , SummaryStatus (..)++    -- * ReservedInstancesModification+    , ReservedInstancesModification+    , reservedInstancesModification+    , rimClientToken+    , rimCreateDate+    , rimEffectiveDate+    , rimModificationResults+    , rimReservedInstancesIds+    , rimReservedInstancesModificationId+    , rimStatus+    , rimStatusMessage+    , rimUpdateDate++    -- * RuleAction+    , RuleAction (..)++    -- * BatchState+    , BatchState (..)++    -- * NetworkInterface+    , NetworkInterface+    , networkInterface+    , niAssociation+    , niAttachment+    , niAvailabilityZone+    , niDescription+    , niGroups+    , niMacAddress+    , niNetworkInterfaceId+    , niOwnerId+    , niPrivateDnsName+    , niPrivateIpAddress+    , niPrivateIpAddresses+    , niRequesterId+    , niRequesterManaged+    , niSourceDestCheck+    , niStatus+    , niSubnetId+    , niTagSet+    , niVpcId++    -- * TelemetryStatus+    , TelemetryStatus (..)++    -- * Subnet+    , Subnet+    , subnet+    , s1AvailabilityZone+    , s1AvailableIpAddressCount+    , s1CidrBlock+    , s1DefaultForAz+    , s1MapPublicIpOnLaunch+    , s1State+    , s1SubnetId+    , s1Tags+    , s1VpcId++    -- * KeyPairInfo+    , KeyPairInfo+    , keyPairInfo+    , kpiKeyFingerprint+    , kpiKeyName++    -- * LaunchPermissionModifications+    , LaunchPermissionModifications+    , launchPermissionModifications+    , lpmAdd+    , lpmRemove++    -- * SnapshotState+    , SnapshotState (..)++    -- * InstanceNetworkInterfaceAssociation+    , InstanceNetworkInterfaceAssociation+    , instanceNetworkInterfaceAssociation+    , iniaIpOwnerId+    , iniaPublicDnsName+    , iniaPublicIp++    -- * DiskImageDetail+    , DiskImageDetail+    , diskImageDetail+    , didBytes+    , didFormat+    , didImportManifestUrl++    -- * InstancePrivateIpAddress+    , InstancePrivateIpAddress+    , instancePrivateIpAddress+    , ipiaAssociation+    , ipiaPrimary+    , ipiaPrivateDnsName+    , ipiaPrivateIpAddress++    -- * CancelledSpotInstanceRequest+    , CancelledSpotInstanceRequest+    , cancelledSpotInstanceRequest+    , csiSpotInstanceRequestId+    , csiState++    -- * VpnConnectionOptionsSpecification+    , VpnConnectionOptionsSpecification+    , vpnConnectionOptionsSpecification+    , vcosStaticRoutesOnly++    -- * Address+    , Address+    , address+    , aAllocationId+    , aAssociationId+    , aDomain+    , aInstanceId+    , aNetworkInterfaceId+    , aNetworkInterfaceOwnerId+    , aPrivateIpAddress+    , aPublicIp++    -- * VolumeAttachmentState+    , VolumeAttachmentState (..)++    -- * MovingAddressStatus+    , MovingAddressStatus+    , movingAddressStatus+    , masMoveStatus+    , masPublicIp++    -- * LaunchPermission+    , LaunchPermission+    , launchPermission+    , lpGroup+    , lpUserId++    -- * RouteState+    , RouteState (..)++    -- * RouteTableAssociation+    , RouteTableAssociation+    , routeTableAssociation+    , rtaMain+    , rtaRouteTableAssociationId+    , rtaRouteTableId+    , rtaSubnetId++    -- * BundleTaskState+    , BundleTaskState (..)++    -- * PortRange+    , PortRange+    , portRange+    , prFrom+    , prTo++    -- * VpcAttributeName+    , VpcAttributeName (..)++    -- * ReservedInstancesConfiguration+    , ReservedInstancesConfiguration+    , reservedInstancesConfiguration+    , ricAvailabilityZone+    , ricInstanceCount+    , ricInstanceType+    , ricPlatform++    -- * VolumeStatusDetails+    , VolumeStatusDetails+    , volumeStatusDetails+    , vsdName+    , vsdStatus++    -- * SpotInstanceState+    , SpotInstanceState (..)++    -- * VpnConnectionOptions+    , VpnConnectionOptions+    , vpnConnectionOptions+    , vcoStaticRoutesOnly++    -- * UserIdGroupPair+    , UserIdGroupPair+    , userIdGroupPair+    , uigpGroupId+    , uigpGroupName+    , uigpUserId++    -- * InstanceStatusSummary+    , InstanceStatusSummary+    , instanceStatusSummary+    , issDetails+    , issStatus++    -- * SpotPlacement+    , SpotPlacement+    , spotPlacement+    , sp1AvailabilityZone+    , sp1GroupName++    -- * EbsInstanceBlockDeviceSpecification+    , EbsInstanceBlockDeviceSpecification+    , ebsInstanceBlockDeviceSpecification+    , eibdsDeleteOnTermination+    , eibdsVolumeId++    -- * NetworkAclAssociation+    , NetworkAclAssociation+    , networkAclAssociation+    , naaNetworkAclAssociationId+    , naaNetworkAclId+    , naaSubnetId++    -- * BundleTask+    , BundleTask+    , bundleTask+    , btBundleId+    , btBundleTaskError+    , btInstanceId+    , btProgress+    , btStartTime+    , btState+    , btStorage+    , btUpdateTime++    -- * InstanceStatusEvent+    , InstanceStatusEvent+    , instanceStatusEvent+    , iseCode+    , iseDescription+    , iseNotAfter+    , iseNotBefore++    -- * InstanceType+    , InstanceType (..)++    -- * Route+    , Route+    , route+    , rDestinationCidrBlock+    , rDestinationPrefixListId+    , rGatewayId+    , rInstanceId+    , rInstanceOwnerId+    , rNetworkInterfaceId+    , rOrigin+    , rState+    , rVpcPeeringConnectionId++    -- * SpotDatafeedSubscription+    , SpotDatafeedSubscription+    , spotDatafeedSubscription+    , sdsBucket+    , sdsFault+    , sdsOwnerId+    , sdsPrefix+    , sdsState++    -- * Storage+    , Storage+    , storage+    , sS3++    -- * SecurityGroup+    , SecurityGroup+    , securityGroup+    , sgDescription+    , sgGroupId+    , sgGroupName+    , sgIpPermissions+    , sgIpPermissionsEgress+    , sgOwnerId+    , sgTags+    , sgVpcId++    -- * CancelSpotInstanceRequestState+    , CancelSpotInstanceRequestState (..)++    -- * PlacementGroupState+    , PlacementGroupState (..)++    -- * ReservedInstancesModificationResult+    , ReservedInstancesModificationResult+    , reservedInstancesModificationResult+    , rimrReservedInstancesId+    , rimrTargetConfiguration++    -- * InstanceBlockDeviceMappingSpecification+    , InstanceBlockDeviceMappingSpecification+    , instanceBlockDeviceMappingSpecification+    , ibdmsDeviceName+    , ibdmsEbs+    , ibdmsNoDevice+    , ibdmsVirtualName++    -- * ExportEnvironment+    , ExportEnvironment (..)++    -- * UserData+    , UserData+    , userData+    , udData++    -- * VolumeAttachment+    , VolumeAttachment+    , volumeAttachment+    , vaAttachTime+    , vaDeleteOnTermination+    , vaDevice+    , vaInstanceId+    , vaState+    , vaVolumeId++    -- * CustomerGateway+    , CustomerGateway+    , customerGateway+    , cgBgpAsn+    , cgCustomerGatewayId+    , cgIpAddress+    , cgState+    , cgTags+    , cgType++    -- * EbsInstanceBlockDevice+    , EbsInstanceBlockDevice+    , ebsInstanceBlockDevice+    , eibdAttachTime+    , eibdDeleteOnTermination+    , eibdStatus+    , eibdVolumeId++    -- * ShutdownBehavior+    , ShutdownBehavior (..)++    -- * DiskImageDescription+    , DiskImageDescription+    , diskImageDescription+    , did1Checksum+    , did1Format+    , did1ImportManifestUrl+    , did1Size++    -- * DiskImageVolumeDescription+    , DiskImageVolumeDescription+    , diskImageVolumeDescription+    , divdId+    , divdSize++    -- * Monitoring+    , Monitoring+    , monitoring+    , mState++    -- * SubnetState+    , SubnetState (..)++    -- * CancelSpotFleetRequestsSuccessItem+    , CancelSpotFleetRequestsSuccessItem+    , cancelSpotFleetRequestsSuccessItem+    , csfrsiCurrentSpotFleetRequestState+    , csfrsiPreviousSpotFleetRequestState+    , csfrsiSpotFleetRequestId++    -- * ContainerFormat+    , ContainerFormat (..)++    -- * AvailabilityZoneMessage+    , AvailabilityZoneMessage+    , availabilityZoneMessage+    , azmMessage++    -- * VpcAttachment+    , VpcAttachment+    , vpcAttachment+    , va1State+    , va1VpcId++    -- * EventType+    , EventType (..)++    -- * InstanceBlockDeviceMapping+    , InstanceBlockDeviceMapping+    , instanceBlockDeviceMapping+    , ibdmDeviceName+    , ibdmEbs++    -- * StatusType+    , StatusType (..)++    -- * ExportToS3TaskSpecification+    , ExportToS3TaskSpecification+    , exportToS3TaskSpecification+    , etstsContainerFormat+    , etstsDiskImageFormat+    , etstsS3Bucket+    , etstsS3Prefix++    -- * CancelBatchErrorCode+    , CancelBatchErrorCode (..)++    -- * PrefixListId+    , PrefixListId+    , prefixListId+    , pliPrefixListId++    -- * NetworkInterfaceAttribute+    , NetworkInterfaceAttribute (..)++    -- * ImageTypeValues+    , ImageTypeValues (..)++    -- * InstanceExportDetails+    , InstanceExportDetails+    , instanceExportDetails+    , iedInstanceId+    , iedTargetEnvironment++    -- * SnapshotAttributeName+    , SnapshotAttributeName (..)++    -- * AvailabilityZone+    , AvailabilityZone+    , availabilityZone+    , azMessages+    , azRegionName+    , azState+    , azZoneName++    -- * HistoryRecord+    , HistoryRecord+    , historyRecord+    , hrEventInformation+    , hrEventType+    , hrTimestamp++    -- * ImportImageTask+    , ImportImageTask+    , importImageTask+    , iitArchitecture+    , iitDescription+    , iitHypervisor+    , iitImageId+    , iitImportTaskId+    , iitLicenseType+    , iitPlatform+    , iitProgress+    , iitSnapshotDetails+    , iitStatus+    , iitStatusMessage++    -- * VpnState+    , VpnState (..)++    -- * RouteTable+    , RouteTable+    , routeTable+    , rtAssociations+    , rtPropagatingVgws+    , rtRouteTableId+    , rtRoutes+    , rtTags+    , rtVpcId++    -- * UserBucket+    , UserBucket+    , userBucket+    , ubS3Bucket+    , ubS3Key++    -- * HypervisorType+    , HypervisorType (..)++    -- * CancelSpotFleetRequestsErrorItem+    , CancelSpotFleetRequestsErrorItem+    , cancelSpotFleetRequestsErrorItem+    , csfreiError+    , csfreiSpotFleetRequestId++    -- * InstanceStatusDetails+    , InstanceStatusDetails+    , instanceStatusDetails+    , isdImpairedSince+    , isdName+    , isdStatus++    -- * IamInstanceProfile+    , IamInstanceProfile+    , iamInstanceProfile+    , iipArn+    , iipId++    -- * UnsuccessfulItem+    , UnsuccessfulItem+    , unsuccessfulItem+    , uiError+    , uiResourceId++    -- * InternetGatewayAttachment+    , InternetGatewayAttachment+    , internetGatewayAttachment+    , igaState+    , igaVpcId++    -- * AddressStatus+    , AddressStatus (..)++    -- * ReservedInstanceState+    , ReservedInstanceState (..)++    -- * InstanceAttributeName+    , InstanceAttributeName (..)++    -- * IpPermission+    , IpPermission+    , ipPermission+    , ipFromPort+    , ipIpProtocol+    , ipIpRanges+    , ipPrefixListIds+    , ipToPort+    , ipUserIdGroupPairs++    -- * ConversionTaskState+    , ConversionTaskState (..)++    -- * DiskImage+    , DiskImage+    , diskImage+    , diDescription+    , diImage+    , diVolume++    -- * Tenancy+    , Tenancy (..)++    -- * UnsuccessfulItemError+    , UnsuccessfulItemError+    , unsuccessfulItemError+    , uieCode+    , uieMessage++    -- * VpcPeeringConnectionStateReason+    , VpcPeeringConnectionStateReason+    , vpcPeeringConnectionStateReason+    , vpcsrCode+    , vpcsrMessage++    -- * IamInstanceProfileSpecification+    , IamInstanceProfileSpecification+    , iamInstanceProfileSpecification+    , iipsArn+    , iipsName++    -- * ImportVolumeTaskDetails+    , ImportVolumeTaskDetails+    , importVolumeTaskDetails+    , ivtdAvailabilityZone+    , ivtdBytesConverted+    , ivtdDescription+    , ivtdImage+    , ivtdVolume++    -- * PlacementStrategy+    , PlacementStrategy (..)++    -- * InstanceNetworkInterface+    , InstanceNetworkInterface+    , instanceNetworkInterface+    , iniAssociation+    , iniAttachment+    , iniDescription+    , iniGroups+    , iniMacAddress+    , iniNetworkInterfaceId+    , iniOwnerId+    , iniPrivateDnsName+    , iniPrivateIpAddress+    , iniPrivateIpAddresses+    , iniSourceDestCheck+    , iniStatus+    , iniSubnetId+    , iniVpcId++    -- * VolumeStatusAction+    , VolumeStatusAction+    , volumeStatusAction+    , vsaCode+    , vsaDescription+    , vsaEventId+    , vsaEventType++    -- * VpcPeeringConnectionVpcInfo+    , VpcPeeringConnectionVpcInfo+    , vpcPeeringConnectionVpcInfo+    , vpcviCidrBlock+    , vpcviOwnerId+    , vpcviVpcId++    -- * UserBucketDetails+    , UserBucketDetails+    , userBucketDetails+    , ubdS3Bucket+    , ubdS3Key++    -- * ReservedInstanceLimitPrice+    , ReservedInstanceLimitPrice+    , reservedInstanceLimitPrice+    , rilpAmount+    , rilpCurrencyCode++    -- * Vpc+    , Vpc+    , vpc+    , vpcCidrBlock+    , vpcDhcpOptionsId+    , vpcInstanceTenancy+    , vpcIsDefault+    , vpcState+    , vpcTags+    , vpcVpcId++    -- * ImageDiskContainer+    , ImageDiskContainer+    , imageDiskContainer+    , idcDescription+    , idcDeviceName+    , idcFormat+    , idcSnapshotId+    , idcUrl+    , idcUserBucket++    -- * InstanceStatus+    , InstanceStatus+    , instanceStatus+    , isAvailabilityZone+    , isEvents+    , isInstanceId+    , isInstanceState+    , isInstanceStatus+    , isSystemStatus++    -- * ArchitectureValues+    , ArchitectureValues (..)++    -- * ReportInstanceReasonCodes+    , ReportInstanceReasonCodes (..)++    -- * MoveStatus+    , MoveStatus (..)++    -- * EbsBlockDevice+    , EbsBlockDevice+    , ebsBlockDevice+    , ebdDeleteOnTermination+    , ebdEncrypted+    , ebdIops+    , ebdSnapshotId+    , ebdVolumeSize+    , ebdVolumeType++    -- * AccountAttribute+    , AccountAttribute+    , accountAttribute+    , aaAttributeName+    , aaAttributeValues++    -- * SnapshotDetail+    , SnapshotDetail+    , snapshotDetail+    , sdDescription+    , sdDeviceName+    , sdDiskImageSize+    , sdFormat+    , sdProgress+    , sdSnapshotId+    , sdStatus+    , sdStatusMessage+    , sdUrl+    , sdUserBucket++    -- * PriceSchedule+    , PriceSchedule+    , priceSchedule+    , psActive+    , psCurrencyCode+    , psPrice+    , psTerm++    -- * DeviceType+    , DeviceType (..)++    -- * DomainType+    , DomainType (..)++    -- * Region+    , Region+    , region+    , rEndpoint+    , rRegionName++    -- * PropagatingVgw+    , PropagatingVgw+    , propagatingVgw+    , pvGatewayId++    -- * OfferingTypeValues+    , OfferingTypeValues (..)++    -- * VpnGateway+    , VpnGateway+    , vpnGateway+    , vgAvailabilityZone+    , vgState+    , vgTags+    , vgType+    , vgVpcAttachments+    , vgVpnGatewayId++    -- * EventInformation+    , EventInformation+    , eventInformation+    , eiEventDescription+    , eiEventSubType+    , eiInstanceId++    -- * Filter+    , Filter+    , filter'+    , fName+    , fValues++    -- * VolumeType+    , VolumeType (..)++    -- * InstanceStateChange+    , InstanceStateChange+    , instanceStateChange+    , iscCurrentState+    , iscInstanceId+    , iscPreviousState++    -- * NetworkAcl+    , NetworkAcl+    , networkAcl+    , naAssociations+    , naEntries+    , naIsDefault+    , naNetworkAclId+    , naTags+    , naVpcId++    -- * ImageState+    , ImageState (..)++    -- * GatewayType+    , GatewayType (..)++    -- * InstanceNetworkInterfaceAttachment+    , InstanceNetworkInterfaceAttachment+    , instanceNetworkInterfaceAttachment+    , iniaAttachTime+    , iniaAttachmentId+    , iniaDeleteOnTermination+    , iniaDeviceIndex+    , iniaStatus++    -- * AttributeBooleanValue+    , AttributeBooleanValue+    , attributeBooleanValue+    , abvValue++    -- * RecurringCharge+    , RecurringCharge+    , recurringCharge+    , rcAmount+    , rcFrequency++    -- * NewDhcpConfiguration+    , NewDhcpConfiguration+    , newDhcpConfiguration+    , ndcKey+    , ndcValues++    -- * StateReason+    , StateReason+    , stateReason+    , srCode+    , srMessage++    -- * MonitoringState+    , MonitoringState (..)++    -- * ReservedInstancesId+    , ReservedInstancesId+    , reservedInstancesId+    , riiReservedInstancesId++    -- * StatusName+    , StatusName (..)++    -- * InternetGateway+    , InternetGateway+    , internetGateway+    , igAttachments+    , igInternetGatewayId+    , igTags++    -- * VolumeStatusName+    , VolumeStatusName (..)++    -- * VolumeAttributeName+    , VolumeAttributeName (..)++    -- * ImportInstanceTaskDetails+    , ImportInstanceTaskDetails+    , importInstanceTaskDetails+    , iitdDescription+    , iitdInstanceId+    , iitdPlatform+    , iitdVolumes++    -- * PlacementGroup+    , PlacementGroup+    , placementGroup+    , pgGroupName+    , pgState+    , pgStrategy++    -- * ProductCode+    , ProductCode+    , productCode+    , pcProductCodeId+    , pcProductCodeType++    -- * ListingStatus+    , ListingStatus (..)++    -- * IpRange+    , IpRange+    , ipRange+    , irCidrIp++    -- * VolumeStatusInfoStatus+    , VolumeStatusInfoStatus (..)++    -- * AccountAttributeValue+    , AccountAttributeValue+    , accountAttributeValue+    , aavAttributeValue++    -- * SnapshotDiskContainer+    , SnapshotDiskContainer+    , snapshotDiskContainer+    , sdcDescription+    , sdcFormat+    , sdcUrl+    , sdcUserBucket++    -- * RIProductDescription+    , RIProductDescription (..)++    -- * ReservedInstancesOffering+    , ReservedInstancesOffering+    , reservedInstancesOffering+    , rioAvailabilityZone+    , rioCurrencyCode+    , rioDuration+    , rioFixedPrice+    , rioInstanceTenancy+    , rioInstanceType+    , rioMarketplace+    , rioOfferingType+    , rioPricingDetails+    , rioProductDescription+    , rioRecurringCharges+    , rioReservedInstancesOfferingId+    , rioUsagePrice++    -- * ReservedInstances+    , ReservedInstances+    , reservedInstances+    , ri1AvailabilityZone+    , ri1CurrencyCode+    , ri1Duration+    , ri1End+    , ri1FixedPrice+    , ri1InstanceCount+    , ri1InstanceTenancy+    , ri1InstanceType+    , ri1OfferingType+    , ri1ProductDescription+    , ri1RecurringCharges+    , ri1ReservedInstancesId+    , ri1Start+    , ri1State+    , ri1Tags+    , ri1UsagePrice++    -- * DatafeedSubscriptionState+    , DatafeedSubscriptionState (..)++    -- * ExportTaskState+    , ExportTaskState (..)++    -- * ProductCodeValues+    , ProductCodeValues (..)++    -- * VpnConnection+    , VpnConnection+    , vpnConnection+    , vcCustomerGatewayConfiguration+    , vcCustomerGatewayId+    , vcOptions+    , vcRoutes+    , vcState+    , vcTags+    , vcType+    , vcVgwTelemetry+    , vcVpnConnectionId+    , vcVpnGatewayId++    -- * InstanceState+    , InstanceState+    , instanceState+    , isCode+    , isName++    -- * VpcEndpoint+    , VpcEndpoint+    , vpcEndpoint+    , veCreationTimestamp+    , vePolicyDocument+    , veRouteTableIds+    , veServiceName+    , veState+    , veVpcEndpointId+    , veVpcId++    -- * ClientData+    , ClientData+    , clientData+    , cdComment+    , cdUploadEnd+    , cdUploadSize+    , cdUploadStart++    -- * Placement+    , Placement+    , placement+    , pAvailabilityZone+    , pGroupName+    , pTenancy++    -- * EventCode+    , EventCode (..)++    -- * SpotInstanceType+    , SpotInstanceType (..)++    -- * VpcPeeringConnection+    , VpcPeeringConnection+    , vpcPeeringConnection+    , vpc1AccepterVpcInfo+    , vpc1ExpirationTime+    , vpc1RequesterVpcInfo+    , vpc1Status+    , vpc1Tags+    , vpc1VpcPeeringConnectionId++    -- * S3Storage+    , S3Storage+    , s3Storage+    , ssAWSAccessKeyId+    , ssBucket+    , ssPrefix+    , ssUploadPolicy+    , ssUploadPolicySignature++    -- * VgwTelemetry+    , VgwTelemetry+    , vgwTelemetry+    , vtAcceptedRouteCount+    , vtLastStatusChange+    , vtOutsideIpAddress+    , vtStatus+    , vtStatusMessage++    -- * VpnStaticRoute+    , VpnStaticRoute+    , vpnStaticRoute+    , vsrDestinationCidrBlock+    , vsrSource+    , vsrState++    -- * InstanceStateName+    , InstanceStateName (..)++    -- * Instance+    , Instance+    , instance'+    , i1AmiLaunchIndex+    , i1Architecture+    , i1BlockDeviceMappings+    , i1ClientToken+    , i1EbsOptimized+    , i1Hypervisor+    , i1IamInstanceProfile+    , i1ImageId+    , i1InstanceId+    , i1InstanceLifecycle+    , i1InstanceType+    , i1KernelId+    , i1KeyName+    , i1LaunchTime+    , i1Monitoring+    , i1NetworkInterfaces+    , i1Placement+    , i1Platform+    , i1PrivateDnsName+    , i1PrivateIpAddress+    , i1ProductCodes+    , i1PublicDnsName+    , i1PublicIpAddress+    , i1RamdiskId+    , i1RootDeviceName+    , i1RootDeviceType+    , i1SecurityGroups+    , i1SourceDestCheck+    , i1SpotInstanceRequestId+    , i1SriovNetSupport+    , i1State+    , i1StateReason+    , i1StateTransitionReason+    , i1SubnetId+    , i1Tags+    , i1VirtualizationType+    , i1VpcId++    -- * ExportTask+    , ExportTask+    , exportTask+    , etDescription+    , etExportTaskId+    , etExportToS3Task+    , etInstanceExportDetails+    , etState+    , etStatusMessage++    -- * ResetImageAttributeName+    , ResetImageAttributeName (..)++    -- * RequestSpotLaunchSpecification+    , RequestSpotLaunchSpecification+    , requestSpotLaunchSpecification+    , rslsAddressingType+    , rslsBlockDeviceMappings+    , rslsEbsOptimized+    , rslsIamInstanceProfile+    , rslsImageId+    , rslsInstanceType+    , rslsKernelId+    , rslsKeyName+    , rslsMonitoring+    , rslsNetworkInterfaces+    , rslsPlacement+    , rslsRamdiskId+    , rslsSecurityGroupIds+    , rslsSecurityGroups+    , rslsSubnetId+    , rslsUserData++    -- * VolumeDetail+    , VolumeDetail+    , volumeDetail+    , vdSize++    -- * PricingDetail+    , PricingDetail+    , pricingDetail+    , pdCount+    , pdPrice++    -- * NetworkInterfacePrivateIpAddress+    , NetworkInterfacePrivateIpAddress+    , networkInterfacePrivateIpAddress+    , nipiaAssociation+    , nipiaPrimary+    , nipiaPrivateDnsName+    , nipiaPrivateIpAddress++    -- * DiskImageFormat+    , DiskImageFormat (..)++    -- * BundleTaskError+    , BundleTaskError+    , bundleTaskError+    , bteCode+    , bteMessage++    -- * VpcClassicLink+    , VpcClassicLink+    , vpcClassicLink+    , vclClassicLinkEnabled+    , vclTags+    , vclVpcId++    -- * VolumeStatusItem+    , VolumeStatusItem+    , volumeStatusItem+    , vsiActions+    , vsiAvailabilityZone+    , vsiEvents+    , vsiVolumeId+    , vsiVolumeStatus++    -- * Common+    , module Network.AWS.EC2.Internal+    ) where++import Network.AWS.Prelude+import Network.AWS.Signing+import Network.AWS.EC2.Internal+import qualified GHC.Exts++-- | Version @2015-04-15@ of the Amazon Elastic Compute Cloud service.+data EC2++instance AWSService EC2 where+    type Sg EC2 = V4+    type Er EC2 = EC2Error++    service = service'+      where+        service' :: Service EC2+        service' = Service+            { _svcAbbrev       = "EC2"+            , _svcPrefix       = "ec2"+            , _svcVersion      = "2015-04-15"+            , _svcTargetPrefix = Nothing+            , _svcJSONVersion  = Nothing+            , _svcHandle       = handle+            , _svcRetry        = retry+            }++        handle :: Status+               -> Maybe (LazyByteString -> ServiceError EC2Error)+        handle = restError statusSuccess service'++        retry :: Retry EC2+        retry = Exponential+            { _retryBase     = 0.05+            , _retryGrowth   = 2+            , _retryAttempts = 5+            , _retryCheck    = check+            }++        check :: Status+              -> EC2Error+              -> Bool+        check (statusCode -> s) (awsErrorCode -> e)+            | s == 503 && (Just "RequestLimitExceeded") == e = True -- Request Limit Exceeded+            | s == 500  = True -- General Server Error+            | s == 509  = True -- Limit Exceeded+            | s == 503  = True -- Service Unavailable+            | otherwise = False++ns :: Text+ns = "http://ec2.amazonaws.com/doc/2015-04-15"+{-# INLINE ns #-}++data ImageAttributeName+    = ImageBlockDeviceMapping -- ^ blockDeviceMapping+    | ImageDescription        -- ^ description+    | ImageKernel             -- ^ kernel+    | ImageLaunchPermission   -- ^ launchPermission+    | ImageProductCodes       -- ^ productCodes+    | ImageRamdisk            -- ^ ramdisk+    | ImageSriovNetSupport    -- ^ sriovNetSupport+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable ImageAttributeName++instance FromText ImageAttributeName where+    parser = takeLowerText >>= \case+        "blockdevicemapping" -> pure ImageBlockDeviceMapping+        "description"        -> pure ImageDescription+        "kernel"             -> pure ImageKernel+        "launchpermission"   -> pure ImageLaunchPermission+        "productcodes"       -> pure ImageProductCodes+        "ramdisk"            -> pure ImageRamdisk+        "sriovnetsupport"    -> pure ImageSriovNetSupport+        e                    -> fail $+            "Failure parsing ImageAttributeName from " ++ show e++instance ToText ImageAttributeName where+    toText = \case+        ImageBlockDeviceMapping -> "blockDeviceMapping"+        ImageDescription        -> "description"+        ImageKernel             -> "kernel"+        ImageLaunchPermission   -> "launchPermission"+        ImageProductCodes       -> "productCodes"+        ImageRamdisk            -> "ramdisk"+        ImageSriovNetSupport    -> "sriovNetSupport"++instance ToByteString ImageAttributeName+instance ToHeader     ImageAttributeName+instance ToQuery      ImageAttributeName++instance FromXML ImageAttributeName where+    parseXML = parseXMLText "ImageAttributeName"++data PermissionGroup+    = All -- ^ all+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable PermissionGroup++instance FromText PermissionGroup where+    parser = takeLowerText >>= \case+        "all" -> pure All+        e     -> fail $+            "Failure parsing PermissionGroup from " ++ show e++instance ToText PermissionGroup where+    toText All = "all"++instance ToByteString PermissionGroup+instance ToHeader     PermissionGroup+instance ToQuery      PermissionGroup++instance FromXML PermissionGroup where+    parseXML = parseXMLText "PermissionGroup"++data NetworkAclEntry = NetworkAclEntry+    { _naeCidrBlock    :: Maybe Text+    , _naeEgress       :: Maybe Bool+    , _naeIcmpTypeCode :: Maybe IcmpTypeCode+    , _naePortRange    :: Maybe PortRange+    , _naeProtocol     :: Maybe Text+    , _naeRuleAction   :: Maybe RuleAction+    , _naeRuleNumber   :: Maybe Int+    } deriving (Eq, Read, Show)++-- | 'NetworkAclEntry' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'naeCidrBlock' @::@ 'Maybe' 'Text'+--+-- * 'naeEgress' @::@ 'Maybe' 'Bool'+--+-- * 'naeIcmpTypeCode' @::@ 'Maybe' 'IcmpTypeCode'+--+-- * 'naePortRange' @::@ 'Maybe' 'PortRange'+--+-- * 'naeProtocol' @::@ 'Maybe' 'Text'+--+-- * 'naeRuleAction' @::@ 'Maybe' 'RuleAction'+--+-- * 'naeRuleNumber' @::@ 'Maybe' 'Int'+--+networkAclEntry :: NetworkAclEntry+networkAclEntry = NetworkAclEntry+    { _naeRuleNumber   = Nothing+    , _naeProtocol     = Nothing+    , _naeRuleAction   = Nothing+    , _naeEgress       = Nothing+    , _naeCidrBlock    = Nothing+    , _naeIcmpTypeCode = Nothing+    , _naePortRange    = Nothing+    }++-- | The network range to allow or deny, in CIDR notation.+naeCidrBlock :: Lens' NetworkAclEntry (Maybe Text)+naeCidrBlock = lens _naeCidrBlock (\s a -> s { _naeCidrBlock = a })++-- | Indicates whether the rule is an egress rule (applied to traffic leaving the+-- subnet).+naeEgress :: Lens' NetworkAclEntry (Maybe Bool)+naeEgress = lens _naeEgress (\s a -> s { _naeEgress = a })++-- | ICMP protocol: The ICMP type and code.+naeIcmpTypeCode :: Lens' NetworkAclEntry (Maybe IcmpTypeCode)+naeIcmpTypeCode = lens _naeIcmpTypeCode (\s a -> s { _naeIcmpTypeCode = a })++-- | TCP or UDP protocols: The range of ports the rule applies to.+naePortRange :: Lens' NetworkAclEntry (Maybe PortRange)+naePortRange = lens _naePortRange (\s a -> s { _naePortRange = a })++-- | The protocol. A value of '-1' means all protocols.+naeProtocol :: Lens' NetworkAclEntry (Maybe Text)+naeProtocol = lens _naeProtocol (\s a -> s { _naeProtocol = a })++-- | Indicates whether to allow or deny the traffic that matches the rule.+naeRuleAction :: Lens' NetworkAclEntry (Maybe RuleAction)+naeRuleAction = lens _naeRuleAction (\s a -> s { _naeRuleAction = a })++-- | The rule number for the entry. ACL entries are processed in ascending order+-- by rule number.+naeRuleNumber :: Lens' NetworkAclEntry (Maybe Int)+naeRuleNumber = lens _naeRuleNumber (\s a -> s { _naeRuleNumber = a })++instance FromXML NetworkAclEntry where+    parseXML x = NetworkAclEntry+        <$> x .@? "cidrBlock"+        <*> x .@? "egress"+        <*> x .@? "icmpTypeCode"+        <*> x .@? "portRange"+        <*> x .@? "protocol"+        <*> x .@? "ruleAction"+        <*> x .@? "ruleNumber"++instance ToQuery NetworkAclEntry where+    toQuery NetworkAclEntry{..} = mconcat+        [ "CidrBlock"    =? _naeCidrBlock+        , "Egress"       =? _naeEgress+        , "IcmpTypeCode" =? _naeIcmpTypeCode+        , "PortRange"    =? _naePortRange+        , "Protocol"     =? _naeProtocol+        , "RuleAction"   =? _naeRuleAction+        , "RuleNumber"   =? _naeRuleNumber+        ]++newtype BlobAttributeValue = BlobAttributeValue+    { _bavValue :: Maybe Base64+    } deriving (Eq, Read, Show)++-- | 'BlobAttributeValue' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'bavValue' @::@ 'Maybe' 'Base64'+--+blobAttributeValue :: BlobAttributeValue+blobAttributeValue = BlobAttributeValue+    { _bavValue = Nothing+    }++bavValue :: Lens' BlobAttributeValue (Maybe Base64)+bavValue = lens _bavValue (\s a -> s { _bavValue = a })++instance FromXML BlobAttributeValue where+    parseXML x = BlobAttributeValue+        <$> x .@? "value"++instance ToQuery BlobAttributeValue where+    toQuery BlobAttributeValue{..} = mconcat+        [ "Value" =? _bavValue+        ]++data ImportInstanceLaunchSpecification = ImportInstanceLaunchSpecification+    { _iilsAdditionalInfo                    :: Maybe Text+    , _iilsArchitecture                      :: Maybe ArchitectureValues+    , _iilsGroupIds                          :: List "SecurityGroupId" Text+    , _iilsGroupNames                        :: List "SecurityGroup" Text+    , _iilsInstanceInitiatedShutdownBehavior :: Maybe ShutdownBehavior+    , _iilsInstanceType                      :: Maybe InstanceType+    , _iilsMonitoring                        :: Maybe Bool+    , _iilsPlacement                         :: Maybe Placement+    , _iilsPrivateIpAddress                  :: Maybe Text+    , _iilsSubnetId                          :: Maybe Text+    , _iilsUserData                          :: Maybe UserData+    } deriving (Eq, Read, Show)++-- | 'ImportInstanceLaunchSpecification' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'iilsAdditionalInfo' @::@ 'Maybe' 'Text'+--+-- * 'iilsArchitecture' @::@ 'Maybe' 'ArchitectureValues'+--+-- * 'iilsGroupIds' @::@ ['Text']+--+-- * 'iilsGroupNames' @::@ ['Text']+--+-- * 'iilsInstanceInitiatedShutdownBehavior' @::@ 'Maybe' 'ShutdownBehavior'+--+-- * 'iilsInstanceType' @::@ 'Maybe' 'InstanceType'+--+-- * 'iilsMonitoring' @::@ 'Maybe' 'Bool'+--+-- * 'iilsPlacement' @::@ 'Maybe' 'Placement'+--+-- * 'iilsPrivateIpAddress' @::@ 'Maybe' 'Text'+--+-- * 'iilsSubnetId' @::@ 'Maybe' 'Text'+--+-- * 'iilsUserData' @::@ 'Maybe' 'UserData'+--+importInstanceLaunchSpecification :: ImportInstanceLaunchSpecification+importInstanceLaunchSpecification = ImportInstanceLaunchSpecification+    { _iilsArchitecture                      = Nothing+    , _iilsGroupNames                        = mempty+    , _iilsGroupIds                          = mempty+    , _iilsAdditionalInfo                    = Nothing+    , _iilsUserData                          = Nothing+    , _iilsInstanceType                      = Nothing+    , _iilsPlacement                         = Nothing+    , _iilsMonitoring                        = Nothing+    , _iilsSubnetId                          = Nothing+    , _iilsInstanceInitiatedShutdownBehavior = Nothing+    , _iilsPrivateIpAddress                  = Nothing+    }++-- | Reserved.+iilsAdditionalInfo :: Lens' ImportInstanceLaunchSpecification (Maybe Text)+iilsAdditionalInfo =+    lens _iilsAdditionalInfo (\s a -> s { _iilsAdditionalInfo = a })++-- | The architecture of the instance.+iilsArchitecture :: Lens' ImportInstanceLaunchSpecification (Maybe ArchitectureValues)+iilsArchitecture = lens _iilsArchitecture (\s a -> s { _iilsArchitecture = a })++-- | One or more security group IDs.+iilsGroupIds :: Lens' ImportInstanceLaunchSpecification [Text]+iilsGroupIds = lens _iilsGroupIds (\s a -> s { _iilsGroupIds = a }) . _List++-- | One or more security group names.+iilsGroupNames :: Lens' ImportInstanceLaunchSpecification [Text]+iilsGroupNames = lens _iilsGroupNames (\s a -> s { _iilsGroupNames = a }) . _List++-- | Indicates whether an instance stops or terminates when you initiate shutdown+-- from the instance (using the operating system command for system shutdown).+iilsInstanceInitiatedShutdownBehavior :: Lens' ImportInstanceLaunchSpecification (Maybe ShutdownBehavior)+iilsInstanceInitiatedShutdownBehavior =+    lens _iilsInstanceInitiatedShutdownBehavior+        (\s a -> s { _iilsInstanceInitiatedShutdownBehavior = a })++-- | The instance type. For more information about the instance types that you can+-- import, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/VMImportPrerequisites.html Before You Get Started> in the Amazon Elastic Compute Cloud User+-- Guide.+iilsInstanceType :: Lens' ImportInstanceLaunchSpecification (Maybe InstanceType)+iilsInstanceType = lens _iilsInstanceType (\s a -> s { _iilsInstanceType = a })++-- | Indicates whether monitoring is enabled.+iilsMonitoring :: Lens' ImportInstanceLaunchSpecification (Maybe Bool)+iilsMonitoring = lens _iilsMonitoring (\s a -> s { _iilsMonitoring = a })++-- | The placement information for the instance.+iilsPlacement :: Lens' ImportInstanceLaunchSpecification (Maybe Placement)+iilsPlacement = lens _iilsPlacement (\s a -> s { _iilsPlacement = a })++-- | [EC2-VPC] An available IP address from the IP address range of the subnet.+iilsPrivateIpAddress :: Lens' ImportInstanceLaunchSpecification (Maybe Text)+iilsPrivateIpAddress =+    lens _iilsPrivateIpAddress (\s a -> s { _iilsPrivateIpAddress = a })++-- | [EC2-VPC] The ID of the subnet in which to launch the instance.+iilsSubnetId :: Lens' ImportInstanceLaunchSpecification (Maybe Text)+iilsSubnetId = lens _iilsSubnetId (\s a -> s { _iilsSubnetId = a })++-- | The Base64-encoded MIME user data to be made available to the instance.+iilsUserData :: Lens' ImportInstanceLaunchSpecification (Maybe UserData)+iilsUserData = lens _iilsUserData (\s a -> s { _iilsUserData = a })++instance FromXML ImportInstanceLaunchSpecification where+    parseXML x = ImportInstanceLaunchSpecification+        <$> x .@? "additionalInfo"+        <*> x .@? "architecture"+        <*> x .@? "GroupId" .!@ mempty+        <*> x .@? "GroupName" .!@ mempty+        <*> x .@? "instanceInitiatedShutdownBehavior"+        <*> x .@? "instanceType"+        <*> x .@? "monitoring"+        <*> x .@? "placement"+        <*> x .@? "privateIpAddress"+        <*> x .@? "subnetId"+        <*> x .@? "userData"++instance ToQuery ImportInstanceLaunchSpecification where+    toQuery ImportInstanceLaunchSpecification{..} = mconcat+        [ "AdditionalInfo"                    =? _iilsAdditionalInfo+        , "Architecture"                      =? _iilsArchitecture+        , "GroupId"                           `toQueryList` _iilsGroupIds+        , "GroupName"                         `toQueryList` _iilsGroupNames+        , "InstanceInitiatedShutdownBehavior" =? _iilsInstanceInitiatedShutdownBehavior+        , "InstanceType"                      =? _iilsInstanceType+        , "Monitoring"                        =? _iilsMonitoring+        , "Placement"                         =? _iilsPlacement+        , "PrivateIpAddress"                  =? _iilsPrivateIpAddress+        , "SubnetId"                          =? _iilsSubnetId+        , "UserData"                          =? _iilsUserData+        ]++data Snapshot = Snapshot+    { _sDescription :: Text+    , _sEncrypted   :: Bool+    , _sKmsKeyId    :: Maybe Text+    , _sOwnerAlias  :: Maybe Text+    , _sOwnerId     :: Text+    , _sProgress    :: Text+    , _sSnapshotId  :: Text+    , _sStartTime   :: ISO8601+    , _sState       :: SnapshotState+    , _sTags        :: List "item" Tag+    , _sVolumeId    :: Text+    , _sVolumeSize  :: Int+    } deriving (Eq, Read, Show)++-- | 'Snapshot' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'sDescription' @::@ 'Text'+--+-- * 'sEncrypted' @::@ 'Bool'+--+-- * 'sKmsKeyId' @::@ 'Maybe' 'Text'+--+-- * 'sOwnerAlias' @::@ 'Maybe' 'Text'+--+-- * 'sOwnerId' @::@ 'Text'+--+-- * 'sProgress' @::@ 'Text'+--+-- * 'sSnapshotId' @::@ 'Text'+--+-- * 'sStartTime' @::@ 'UTCTime'+--+-- * 'sState' @::@ 'SnapshotState'+--+-- * 'sTags' @::@ ['Tag']+--+-- * 'sVolumeId' @::@ 'Text'+--+-- * 'sVolumeSize' @::@ 'Int'+--+snapshot :: Text -- ^ 'sSnapshotId'+         -> Text -- ^ 'sVolumeId'+         -> SnapshotState -- ^ 'sState'+         -> UTCTime -- ^ 'sStartTime'+         -> Text -- ^ 'sProgress'+         -> Text -- ^ 'sOwnerId'+         -> Text -- ^ 'sDescription'+         -> Int -- ^ 'sVolumeSize'+         -> Bool -- ^ 'sEncrypted'+         -> Snapshot+snapshot p1 p2 p3 p4 p5 p6 p7 p8 p9 = Snapshot+    { _sSnapshotId  = p1+    , _sVolumeId    = p2+    , _sState       = p3+    , _sStartTime   = withIso _Time (const id) p4+    , _sProgress    = p5+    , _sOwnerId     = p6+    , _sDescription = p7+    , _sVolumeSize  = p8+    , _sEncrypted   = p9+    , _sOwnerAlias  = Nothing+    , _sTags        = mempty+    , _sKmsKeyId    = Nothing+    }++-- | The description for the snapshot.+sDescription :: Lens' Snapshot Text+sDescription = lens _sDescription (\s a -> s { _sDescription = a })++-- | Indicates whether the snapshot is encrypted.+sEncrypted :: Lens' Snapshot Bool+sEncrypted = lens _sEncrypted (\s a -> s { _sEncrypted = a })++-- | The full ARN of the AWS Key Management Service (KMS) master key that was used+-- to protect the volume encryption key for the parent volume.+sKmsKeyId :: Lens' Snapshot (Maybe Text)+sKmsKeyId = lens _sKmsKeyId (\s a -> s { _sKmsKeyId = a })++-- | The AWS account alias (for example, 'amazon', 'self') or AWS account ID that owns+-- the snapshot.+sOwnerAlias :: Lens' Snapshot (Maybe Text)+sOwnerAlias = lens _sOwnerAlias (\s a -> s { _sOwnerAlias = a })++-- | The AWS account ID of the EBS snapshot owner.+sOwnerId :: Lens' Snapshot Text+sOwnerId = lens _sOwnerId (\s a -> s { _sOwnerId = a })++-- | The progress of the snapshot, as a percentage.+sProgress :: Lens' Snapshot Text+sProgress = lens _sProgress (\s a -> s { _sProgress = a })++-- | The ID of the snapshot.+sSnapshotId :: Lens' Snapshot Text+sSnapshotId = lens _sSnapshotId (\s a -> s { _sSnapshotId = a })++-- | The time stamp when the snapshot was initiated.+sStartTime :: Lens' Snapshot UTCTime+sStartTime = lens _sStartTime (\s a -> s { _sStartTime = a }) . _Time++-- | The snapshot state.+sState :: Lens' Snapshot SnapshotState+sState = lens _sState (\s a -> s { _sState = a })++-- | Any tags assigned to the snapshot.+sTags :: Lens' Snapshot [Tag]+sTags = lens _sTags (\s a -> s { _sTags = a }) . _List++-- | The ID of the volume.+sVolumeId :: Lens' Snapshot Text+sVolumeId = lens _sVolumeId (\s a -> s { _sVolumeId = a })++-- | The size of the volume, in GiB.+sVolumeSize :: Lens' Snapshot Int+sVolumeSize = lens _sVolumeSize (\s a -> s { _sVolumeSize = a })++instance FromXML Snapshot where+    parseXML x = Snapshot+        <$> x .@  "description"+        <*> x .@  "encrypted"+        <*> x .@? "kmsKeyId"+        <*> x .@? "ownerAlias"+        <*> x .@  "ownerId"+        <*> x .@  "progress"+        <*> x .@  "snapshotId"+        <*> x .@  "startTime"+        <*> x .@  "status"+        <*> x .@? "tagSet" .!@ mempty+        <*> x .@  "volumeId"+        <*> x .@  "volumeSize"++instance ToQuery Snapshot where+    toQuery Snapshot{..} = mconcat+        [ "Description" =? _sDescription+        , "Encrypted"   =? _sEncrypted+        , "KmsKeyId"    =? _sKmsKeyId+        , "OwnerAlias"  =? _sOwnerAlias+        , "OwnerId"     =? _sOwnerId+        , "Progress"    =? _sProgress+        , "SnapshotId"  =? _sSnapshotId+        , "StartTime"   =? _sStartTime+        , "Status"      =? _sState+        , "TagSet"      `toQueryList` _sTags+        , "VolumeId"    =? _sVolumeId+        , "VolumeSize"  =? _sVolumeSize+        ]++data SpotInstanceStateFault = SpotInstanceStateFault+    { _sisfCode    :: Maybe Text+    , _sisfMessage :: Maybe Text+    } deriving (Eq, Ord, Read, Show)++-- | 'SpotInstanceStateFault' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'sisfCode' @::@ 'Maybe' 'Text'+--+-- * 'sisfMessage' @::@ 'Maybe' 'Text'+--+spotInstanceStateFault :: SpotInstanceStateFault+spotInstanceStateFault = SpotInstanceStateFault+    { _sisfCode    = Nothing+    , _sisfMessage = Nothing+    }++-- | The reason code for the Spot Instance state change.+sisfCode :: Lens' SpotInstanceStateFault (Maybe Text)+sisfCode = lens _sisfCode (\s a -> s { _sisfCode = a })++-- | The message for the Spot Instance state change.+sisfMessage :: Lens' SpotInstanceStateFault (Maybe Text)+sisfMessage = lens _sisfMessage (\s a -> s { _sisfMessage = a })++instance FromXML SpotInstanceStateFault where+    parseXML x = SpotInstanceStateFault+        <$> x .@? "code"+        <*> x .@? "message"++instance ToQuery SpotInstanceStateFault where+    toQuery SpotInstanceStateFault{..} = mconcat+        [ "Code"    =? _sisfCode+        , "Message" =? _sisfMessage+        ]++data TagDescription = TagDescription+    { _tdKey          :: Text+    , _tdResourceId   :: Text+    , _tdResourceType :: ResourceType+    , _tdValue        :: Text+    } deriving (Eq, Read, Show)++-- | 'TagDescription' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'tdKey' @::@ 'Text'+--+-- * 'tdResourceId' @::@ 'Text'+--+-- * 'tdResourceType' @::@ 'ResourceType'+--+-- * 'tdValue' @::@ 'Text'+--+tagDescription :: Text -- ^ 'tdResourceId'+               -> ResourceType -- ^ 'tdResourceType'+               -> Text -- ^ 'tdKey'+               -> Text -- ^ 'tdValue'+               -> TagDescription+tagDescription p1 p2 p3 p4 = TagDescription+    { _tdResourceId   = p1+    , _tdResourceType = p2+    , _tdKey          = p3+    , _tdValue        = p4+    }++-- | The tag key.+tdKey :: Lens' TagDescription Text+tdKey = lens _tdKey (\s a -> s { _tdKey = a })++-- | The ID of the resource. For example, 'ami-1a2b3c4d'.+tdResourceId :: Lens' TagDescription Text+tdResourceId = lens _tdResourceId (\s a -> s { _tdResourceId = a })++-- | The resource type.+tdResourceType :: Lens' TagDescription ResourceType+tdResourceType = lens _tdResourceType (\s a -> s { _tdResourceType = a })++-- | The tag value.+tdValue :: Lens' TagDescription Text+tdValue = lens _tdValue (\s a -> s { _tdValue = a })++instance FromXML TagDescription where+    parseXML x = TagDescription+        <$> x .@  "key"+        <*> x .@  "resourceId"+        <*> x .@  "resourceType"+        <*> x .@  "value"++instance ToQuery TagDescription where+    toQuery TagDescription{..} = mconcat+        [ "Key"          =? _tdKey+        , "ResourceId"   =? _tdResourceId+        , "ResourceType" =? _tdResourceType+        , "Value"        =? _tdValue+        ]++data ImportSnapshotTask = ImportSnapshotTask+    { _istDescription        :: Maybe Text+    , _istImportTaskId       :: Maybe Text+    , _istSnapshotTaskDetail :: Maybe SnapshotTaskDetail+    } deriving (Eq, Read, Show)++-- | 'ImportSnapshotTask' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'istDescription' @::@ 'Maybe' 'Text'+--+-- * 'istImportTaskId' @::@ 'Maybe' 'Text'+--+-- * 'istSnapshotTaskDetail' @::@ 'Maybe' 'SnapshotTaskDetail'+--+importSnapshotTask :: ImportSnapshotTask+importSnapshotTask = ImportSnapshotTask+    { _istImportTaskId       = Nothing+    , _istSnapshotTaskDetail = Nothing+    , _istDescription        = Nothing+    }++-- | A description of the import snapshot task.+istDescription :: Lens' ImportSnapshotTask (Maybe Text)+istDescription = lens _istDescription (\s a -> s { _istDescription = a })++-- | The ID of the import snapshot task.+istImportTaskId :: Lens' ImportSnapshotTask (Maybe Text)+istImportTaskId = lens _istImportTaskId (\s a -> s { _istImportTaskId = a })++-- | Describes an import snapshot task.+istSnapshotTaskDetail :: Lens' ImportSnapshotTask (Maybe SnapshotTaskDetail)+istSnapshotTaskDetail =+    lens _istSnapshotTaskDetail (\s a -> s { _istSnapshotTaskDetail = a })++instance FromXML ImportSnapshotTask where+    parseXML x = ImportSnapshotTask+        <$> x .@? "description"+        <*> x .@? "importTaskId"+        <*> x .@? "snapshotTaskDetail"++instance ToQuery ImportSnapshotTask where+    toQuery ImportSnapshotTask{..} = mconcat+        [ "Description"        =? _istDescription+        , "ImportTaskId"       =? _istImportTaskId+        , "SnapshotTaskDetail" =? _istSnapshotTaskDetail+        ]++data GroupIdentifier = GroupIdentifier+    { _giGroupId   :: Maybe Text+    , _giGroupName :: Maybe Text+    } deriving (Eq, Ord, Read, Show)++-- | 'GroupIdentifier' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'giGroupId' @::@ 'Maybe' 'Text'+--+-- * 'giGroupName' @::@ 'Maybe' 'Text'+--+groupIdentifier :: GroupIdentifier+groupIdentifier = GroupIdentifier+    { _giGroupName = Nothing+    , _giGroupId   = Nothing+    }++-- | The ID of the security group.+giGroupId :: Lens' GroupIdentifier (Maybe Text)+giGroupId = lens _giGroupId (\s a -> s { _giGroupId = a })++-- | The name of the security group.+giGroupName :: Lens' GroupIdentifier (Maybe Text)+giGroupName = lens _giGroupName (\s a -> s { _giGroupName = a })++instance FromXML GroupIdentifier where+    parseXML x = GroupIdentifier+        <$> x .@? "groupId"+        <*> x .@? "groupName"++instance ToQuery GroupIdentifier where+    toQuery GroupIdentifier{..} = mconcat+        [ "GroupId"   =? _giGroupId+        , "GroupName" =? _giGroupName+        ]++data VpnStaticRouteSource+    = Static -- ^ Static+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable VpnStaticRouteSource++instance FromText VpnStaticRouteSource where+    parser = takeLowerText >>= \case+        "static" -> pure Static+        e        -> fail $+            "Failure parsing VpnStaticRouteSource from " ++ show e++instance ToText VpnStaticRouteSource where+    toText Static = "Static"++instance ToByteString VpnStaticRouteSource+instance ToHeader     VpnStaticRouteSource+instance ToQuery      VpnStaticRouteSource++instance FromXML VpnStaticRouteSource where+    parseXML = parseXMLText "VpnStaticRouteSource"++data ReservedInstancesListing = ReservedInstancesListing+    { _rilClientToken                :: Maybe Text+    , _rilCreateDate                 :: Maybe ISO8601+    , _rilInstanceCounts             :: List "item" InstanceCount+    , _rilPriceSchedules             :: List "item" PriceSchedule+    , _rilReservedInstancesId        :: Maybe Text+    , _rilReservedInstancesListingId :: Maybe Text+    , _rilStatus                     :: Maybe ListingStatus+    , _rilStatusMessage              :: Maybe Text+    , _rilTags                       :: List "item" Tag+    , _rilUpdateDate                 :: Maybe ISO8601+    } deriving (Eq, Read, Show)++-- | 'ReservedInstancesListing' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rilClientToken' @::@ 'Maybe' 'Text'+--+-- * 'rilCreateDate' @::@ 'Maybe' 'UTCTime'+--+-- * 'rilInstanceCounts' @::@ ['InstanceCount']+--+-- * 'rilPriceSchedules' @::@ ['PriceSchedule']+--+-- * 'rilReservedInstancesId' @::@ 'Maybe' 'Text'+--+-- * 'rilReservedInstancesListingId' @::@ 'Maybe' 'Text'+--+-- * 'rilStatus' @::@ 'Maybe' 'ListingStatus'+--+-- * 'rilStatusMessage' @::@ 'Maybe' 'Text'+--+-- * 'rilTags' @::@ ['Tag']+--+-- * 'rilUpdateDate' @::@ 'Maybe' 'UTCTime'+--+reservedInstancesListing :: ReservedInstancesListing+reservedInstancesListing = ReservedInstancesListing+    { _rilReservedInstancesListingId = Nothing+    , _rilReservedInstancesId        = Nothing+    , _rilCreateDate                 = Nothing+    , _rilUpdateDate                 = Nothing+    , _rilStatus                     = Nothing+    , _rilStatusMessage              = Nothing+    , _rilInstanceCounts             = mempty+    , _rilPriceSchedules             = mempty+    , _rilTags                       = mempty+    , _rilClientToken                = Nothing+    }++-- | A unique, case-sensitive key supplied by the client to ensure that the+-- request is idempotent. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html Ensuring Idempotency>.+rilClientToken :: Lens' ReservedInstancesListing (Maybe Text)+rilClientToken = lens _rilClientToken (\s a -> s { _rilClientToken = a })++-- | The time the listing was created.+rilCreateDate :: Lens' ReservedInstancesListing (Maybe UTCTime)+rilCreateDate = lens _rilCreateDate (\s a -> s { _rilCreateDate = a }) . mapping _Time++-- | The number of instances in this state.+rilInstanceCounts :: Lens' ReservedInstancesListing [InstanceCount]+rilInstanceCounts =+    lens _rilInstanceCounts (\s a -> s { _rilInstanceCounts = a })+        . _List++-- | The price of the Reserved Instance listing.+rilPriceSchedules :: Lens' ReservedInstancesListing [PriceSchedule]+rilPriceSchedules =+    lens _rilPriceSchedules (\s a -> s { _rilPriceSchedules = a })+        . _List++-- | The ID of the Reserved Instance.+rilReservedInstancesId :: Lens' ReservedInstancesListing (Maybe Text)+rilReservedInstancesId =+    lens _rilReservedInstancesId (\s a -> s { _rilReservedInstancesId = a })++-- | The ID of the Reserved Instance listing.+rilReservedInstancesListingId :: Lens' ReservedInstancesListing (Maybe Text)+rilReservedInstancesListingId =+    lens _rilReservedInstancesListingId+        (\s a -> s { _rilReservedInstancesListingId = a })++-- | The status of the Reserved Instance listing.+rilStatus :: Lens' ReservedInstancesListing (Maybe ListingStatus)+rilStatus = lens _rilStatus (\s a -> s { _rilStatus = a })++-- | The reason for the current status of the Reserved Instance listing. The+-- response can be blank.+rilStatusMessage :: Lens' ReservedInstancesListing (Maybe Text)+rilStatusMessage = lens _rilStatusMessage (\s a -> s { _rilStatusMessage = a })++-- | Any tags assigned to the resource.+rilTags :: Lens' ReservedInstancesListing [Tag]+rilTags = lens _rilTags (\s a -> s { _rilTags = a }) . _List++-- | The last modified timestamp of the listing.+rilUpdateDate :: Lens' ReservedInstancesListing (Maybe UTCTime)+rilUpdateDate = lens _rilUpdateDate (\s a -> s { _rilUpdateDate = a }) . mapping _Time++instance FromXML ReservedInstancesListing where+    parseXML x = ReservedInstancesListing+        <$> x .@? "clientToken"+        <*> x .@? "createDate"+        <*> x .@? "instanceCounts" .!@ mempty+        <*> x .@? "priceSchedules" .!@ mempty+        <*> x .@? "reservedInstancesId"+        <*> x .@? "reservedInstancesListingId"+        <*> x .@? "status"+        <*> x .@? "statusMessage"+        <*> x .@? "tagSet" .!@ mempty+        <*> x .@? "updateDate"++instance ToQuery ReservedInstancesListing where+    toQuery ReservedInstancesListing{..} = mconcat+        [ "ClientToken"                =? _rilClientToken+        , "CreateDate"                 =? _rilCreateDate+        , "InstanceCounts"             `toQueryList` _rilInstanceCounts+        , "PriceSchedules"             `toQueryList` _rilPriceSchedules+        , "ReservedInstancesId"        =? _rilReservedInstancesId+        , "ReservedInstancesListingId" =? _rilReservedInstancesListingId+        , "Status"                     =? _rilStatus+        , "StatusMessage"              =? _rilStatusMessage+        , "TagSet"                     `toQueryList` _rilTags+        , "UpdateDate"                 =? _rilUpdateDate+        ]++data InstanceLifecycleType+    = Spot -- ^ spot+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable InstanceLifecycleType++instance FromText InstanceLifecycleType where+    parser = takeLowerText >>= \case+        "spot" -> pure Spot+        e      -> fail $+            "Failure parsing InstanceLifecycleType from " ++ show e++instance ToText InstanceLifecycleType where+    toText Spot = "spot"++instance ToByteString InstanceLifecycleType+instance ToHeader     InstanceLifecycleType+instance ToQuery      InstanceLifecycleType++instance FromXML InstanceLifecycleType where+    parseXML = parseXMLText "InstanceLifecycleType"++data State+    = Available -- ^ Available+    | Deleted   -- ^ Deleted+    | Deleting  -- ^ Deleting+    | Pending   -- ^ Pending+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable State++instance FromText State where+    parser = takeLowerText >>= \case+        "available" -> pure Available+        "deleted"   -> pure Deleted+        "deleting"  -> pure Deleting+        "pending"   -> pure Pending+        e           -> fail $+            "Failure parsing State from " ++ show e++instance ToText State where+    toText = \case+        Available -> "Available"+        Deleted   -> "Deleted"+        Deleting  -> "Deleting"+        Pending   -> "Pending"++instance ToByteString State+instance ToHeader     State+instance ToQuery      State++instance FromXML State where+    parseXML = parseXMLText "State"++data VirtualizationType+    = Hvm         -- ^ hvm+    | Paravirtual -- ^ paravirtual+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable VirtualizationType++instance FromText VirtualizationType where+    parser = takeLowerText >>= \case+        "hvm"         -> pure Hvm+        "paravirtual" -> pure Paravirtual+        e             -> fail $+            "Failure parsing VirtualizationType from " ++ show e++instance ToText VirtualizationType where+    toText = \case+        Hvm         -> "hvm"+        Paravirtual -> "paravirtual"++instance ToByteString VirtualizationType+instance ToHeader     VirtualizationType+instance ToQuery      VirtualizationType++instance FromXML VirtualizationType where+    parseXML = parseXMLText "VirtualizationType"++data NetworkInterfaceStatus+    = NISAttaching -- ^ attaching+    | NISAvailable -- ^ available+    | NISDetaching -- ^ detaching+    | NISInUse     -- ^ in-use+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable NetworkInterfaceStatus++instance FromText NetworkInterfaceStatus where+    parser = takeLowerText >>= \case+        "attaching" -> pure NISAttaching+        "available" -> pure NISAvailable+        "detaching" -> pure NISDetaching+        "in-use"    -> pure NISInUse+        e           -> fail $+            "Failure parsing NetworkInterfaceStatus from " ++ show e++instance ToText NetworkInterfaceStatus where+    toText = \case+        NISAttaching -> "attaching"+        NISAvailable -> "available"+        NISDetaching -> "detaching"+        NISInUse     -> "in-use"++instance ToByteString NetworkInterfaceStatus+instance ToHeader     NetworkInterfaceStatus+instance ToQuery      NetworkInterfaceStatus++instance FromXML NetworkInterfaceStatus where+    parseXML = parseXMLText "NetworkInterfaceStatus"++data PlatformValues+    = Windows -- ^ Windows+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable PlatformValues++instance FromText PlatformValues where+    parser = takeLowerText >>= \case+        "windows" -> pure Windows+        e         -> fail $+            "Failure parsing PlatformValues from " ++ show e++instance ToText PlatformValues where+    toText Windows = "Windows"++instance ToByteString PlatformValues+instance ToHeader     PlatformValues+instance ToQuery      PlatformValues++instance FromXML PlatformValues where+    parseXML = parseXMLText "PlatformValues"++data CreateVolumePermission = CreateVolumePermission+    { _cvpGroup  :: Maybe PermissionGroup+    , _cvpUserId :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'CreateVolumePermission' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cvpGroup' @::@ 'Maybe' 'PermissionGroup'+--+-- * 'cvpUserId' @::@ 'Maybe' 'Text'+--+createVolumePermission :: CreateVolumePermission+createVolumePermission = CreateVolumePermission+    { _cvpUserId = Nothing+    , _cvpGroup  = Nothing+    }++-- | The specific group that is to be added or removed from a volume's list of+-- create volume permissions.+cvpGroup :: Lens' CreateVolumePermission (Maybe PermissionGroup)+cvpGroup = lens _cvpGroup (\s a -> s { _cvpGroup = a })++-- | The specific AWS account ID that is to be added or removed from a volume's+-- list of create volume permissions.+cvpUserId :: Lens' CreateVolumePermission (Maybe Text)+cvpUserId = lens _cvpUserId (\s a -> s { _cvpUserId = a })++instance FromXML CreateVolumePermission where+    parseXML x = CreateVolumePermission+        <$> x .@? "group"+        <*> x .@? "userId"++instance ToQuery CreateVolumePermission where+    toQuery CreateVolumePermission{..} = mconcat+        [ "Group"  =? _cvpGroup+        , "UserId" =? _cvpUserId+        ]++data NetworkInterfaceAttachmentChanges = NetworkInterfaceAttachmentChanges+    { _niacAttachmentId        :: Maybe Text+    , _niacDeleteOnTermination :: Maybe Bool+    } deriving (Eq, Ord, Read, Show)++-- | 'NetworkInterfaceAttachmentChanges' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'niacAttachmentId' @::@ 'Maybe' 'Text'+--+-- * 'niacDeleteOnTermination' @::@ 'Maybe' 'Bool'+--+networkInterfaceAttachmentChanges :: NetworkInterfaceAttachmentChanges+networkInterfaceAttachmentChanges = NetworkInterfaceAttachmentChanges+    { _niacAttachmentId        = Nothing+    , _niacDeleteOnTermination = Nothing+    }++-- | The ID of the network interface attachment.+niacAttachmentId :: Lens' NetworkInterfaceAttachmentChanges (Maybe Text)+niacAttachmentId = lens _niacAttachmentId (\s a -> s { _niacAttachmentId = a })++-- | Indicates whether the network interface is deleted when the instance is+-- terminated.+niacDeleteOnTermination :: Lens' NetworkInterfaceAttachmentChanges (Maybe Bool)+niacDeleteOnTermination =+    lens _niacDeleteOnTermination (\s a -> s { _niacDeleteOnTermination = a })++instance FromXML NetworkInterfaceAttachmentChanges where+    parseXML x = NetworkInterfaceAttachmentChanges+        <$> x .@? "attachmentId"+        <*> x .@? "deleteOnTermination"++instance ToQuery NetworkInterfaceAttachmentChanges where+    toQuery NetworkInterfaceAttachmentChanges{..} = mconcat+        [ "AttachmentId"        =? _niacAttachmentId+        , "DeleteOnTermination" =? _niacDeleteOnTermination+        ]++data RecurringChargeFrequency+    = Hourly -- ^ Hourly+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable RecurringChargeFrequency++instance FromText RecurringChargeFrequency where+    parser = takeLowerText >>= \case+        "hourly" -> pure Hourly+        e        -> fail $+            "Failure parsing RecurringChargeFrequency from " ++ show e++instance ToText RecurringChargeFrequency where+    toText Hourly = "Hourly"++instance ToByteString RecurringChargeFrequency+instance ToHeader     RecurringChargeFrequency+instance ToQuery      RecurringChargeFrequency++instance FromXML RecurringChargeFrequency where+    parseXML = parseXMLText "RecurringChargeFrequency"++data DhcpOptions = DhcpOptions+    { _doDhcpConfigurations :: List "item" DhcpConfiguration+    , _doDhcpOptionsId      :: Maybe Text+    , _doTags               :: List "item" Tag+    } deriving (Eq, Read, Show)++-- | 'DhcpOptions' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'doDhcpConfigurations' @::@ ['DhcpConfiguration']+--+-- * 'doDhcpOptionsId' @::@ 'Maybe' 'Text'+--+-- * 'doTags' @::@ ['Tag']+--+dhcpOptions :: DhcpOptions+dhcpOptions = DhcpOptions+    { _doDhcpOptionsId      = Nothing+    , _doDhcpConfigurations = mempty+    , _doTags               = mempty+    }++-- | One or more DHCP options in the set.+doDhcpConfigurations :: Lens' DhcpOptions [DhcpConfiguration]+doDhcpConfigurations =+    lens _doDhcpConfigurations (\s a -> s { _doDhcpConfigurations = a })+        . _List++-- | The ID of the set of DHCP options.+doDhcpOptionsId :: Lens' DhcpOptions (Maybe Text)+doDhcpOptionsId = lens _doDhcpOptionsId (\s a -> s { _doDhcpOptionsId = a })++-- | Any tags assigned to the DHCP options set.+doTags :: Lens' DhcpOptions [Tag]+doTags = lens _doTags (\s a -> s { _doTags = a }) . _List++instance FromXML DhcpOptions where+    parseXML x = DhcpOptions+        <$> x .@? "dhcpConfigurationSet" .!@ mempty+        <*> x .@? "dhcpOptionsId"+        <*> x .@? "tagSet" .!@ mempty++instance ToQuery DhcpOptions where+    toQuery DhcpOptions{..} = mconcat+        [ "DhcpConfigurationSet" `toQueryList` _doDhcpConfigurations+        , "DhcpOptionsId"        =? _doDhcpOptionsId+        , "TagSet"               `toQueryList` _doTags+        ]++data InstanceNetworkInterfaceSpecification = InstanceNetworkInterfaceSpecification+    { _inisAssociatePublicIpAddress       :: Maybe Bool+    , _inisDeleteOnTermination            :: Maybe Bool+    , _inisDescription                    :: Maybe Text+    , _inisDeviceIndex                    :: Maybe Int+    , _inisGroups                         :: List "SecurityGroupId" Text+    , _inisNetworkInterfaceId             :: Maybe Text+    , _inisPrivateIpAddress               :: Maybe Text+    , _inisPrivateIpAddresses             :: List "item" PrivateIpAddressSpecification+    , _inisSecondaryPrivateIpAddressCount :: Maybe Int+    , _inisSubnetId                       :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'InstanceNetworkInterfaceSpecification' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'inisAssociatePublicIpAddress' @::@ 'Maybe' 'Bool'+--+-- * 'inisDeleteOnTermination' @::@ 'Maybe' 'Bool'+--+-- * 'inisDescription' @::@ 'Maybe' 'Text'+--+-- * 'inisDeviceIndex' @::@ 'Maybe' 'Int'+--+-- * 'inisGroups' @::@ ['Text']+--+-- * 'inisNetworkInterfaceId' @::@ 'Maybe' 'Text'+--+-- * 'inisPrivateIpAddress' @::@ 'Maybe' 'Text'+--+-- * 'inisPrivateIpAddresses' @::@ ['PrivateIpAddressSpecification']+--+-- * 'inisSecondaryPrivateIpAddressCount' @::@ 'Maybe' 'Int'+--+-- * 'inisSubnetId' @::@ 'Maybe' 'Text'+--+instanceNetworkInterfaceSpecification :: InstanceNetworkInterfaceSpecification+instanceNetworkInterfaceSpecification = InstanceNetworkInterfaceSpecification+    { _inisNetworkInterfaceId             = Nothing+    , _inisDeviceIndex                    = Nothing+    , _inisSubnetId                       = Nothing+    , _inisDescription                    = Nothing+    , _inisPrivateIpAddress               = Nothing+    , _inisGroups                         = mempty+    , _inisDeleteOnTermination            = Nothing+    , _inisPrivateIpAddresses             = mempty+    , _inisSecondaryPrivateIpAddressCount = Nothing+    , _inisAssociatePublicIpAddress       = Nothing+    }++-- | Indicates whether to assign a public IP address to an instance you launch in+-- a VPC. The public IP address can only be assigned to a network interface for+-- eth0, and can only be assigned to a new network interface, not an existing+-- one. You cannot specify more than one network interface in the request. If+-- launching into a default subnet, the default value is 'true'.+inisAssociatePublicIpAddress :: Lens' InstanceNetworkInterfaceSpecification (Maybe Bool)+inisAssociatePublicIpAddress =+    lens _inisAssociatePublicIpAddress+        (\s a -> s { _inisAssociatePublicIpAddress = a })++-- | If set to 'true', the interface is deleted when the instance is terminated. You+-- can specify 'true' only if creating a new network interface when launching an+-- instance.+inisDeleteOnTermination :: Lens' InstanceNetworkInterfaceSpecification (Maybe Bool)+inisDeleteOnTermination =+    lens _inisDeleteOnTermination (\s a -> s { _inisDeleteOnTermination = a })++-- | The description of the network interface. Applies only if creating a network+-- interface when launching an instance.+inisDescription :: Lens' InstanceNetworkInterfaceSpecification (Maybe Text)+inisDescription = lens _inisDescription (\s a -> s { _inisDescription = a })++-- | The index of the device on the instance for the network interface attachment.+-- If you are specifying a network interface in a 'RunInstances' request, you must+-- provide the device index.+inisDeviceIndex :: Lens' InstanceNetworkInterfaceSpecification (Maybe Int)+inisDeviceIndex = lens _inisDeviceIndex (\s a -> s { _inisDeviceIndex = a })++-- | The IDs of the security groups for the network interface. Applies only if+-- creating a network interface when launching an instance.+inisGroups :: Lens' InstanceNetworkInterfaceSpecification [Text]+inisGroups = lens _inisGroups (\s a -> s { _inisGroups = a }) . _List++-- | The ID of the network interface.+inisNetworkInterfaceId :: Lens' InstanceNetworkInterfaceSpecification (Maybe Text)+inisNetworkInterfaceId =+    lens _inisNetworkInterfaceId (\s a -> s { _inisNetworkInterfaceId = a })++-- | The private IP address of the network interface. Applies only if creating a+-- network interface when launching an instance.+inisPrivateIpAddress :: Lens' InstanceNetworkInterfaceSpecification (Maybe Text)+inisPrivateIpAddress =+    lens _inisPrivateIpAddress (\s a -> s { _inisPrivateIpAddress = a })++-- | One or more private IP addresses to assign to the network interface. Only one+-- private IP address can be designated as primary.+inisPrivateIpAddresses :: Lens' InstanceNetworkInterfaceSpecification [PrivateIpAddressSpecification]+inisPrivateIpAddresses =+    lens _inisPrivateIpAddresses (\s a -> s { _inisPrivateIpAddresses = a })+        . _List++-- | The number of secondary private IP addresses. You can't specify this option+-- and specify more than one private IP address using the private IP addresses+-- option.+inisSecondaryPrivateIpAddressCount :: Lens' InstanceNetworkInterfaceSpecification (Maybe Int)+inisSecondaryPrivateIpAddressCount =+    lens _inisSecondaryPrivateIpAddressCount+        (\s a -> s { _inisSecondaryPrivateIpAddressCount = a })++-- | The ID of the subnet associated with the network string. Applies only if+-- creating a network interface when launching an instance.+inisSubnetId :: Lens' InstanceNetworkInterfaceSpecification (Maybe Text)+inisSubnetId = lens _inisSubnetId (\s a -> s { _inisSubnetId = a })++instance FromXML InstanceNetworkInterfaceSpecification where+    parseXML x = InstanceNetworkInterfaceSpecification+        <$> x .@? "associatePublicIpAddress"+        <*> x .@? "deleteOnTermination"+        <*> x .@? "description"+        <*> x .@? "deviceIndex"+        <*> x .@? "SecurityGroupId" .!@ mempty+        <*> x .@? "networkInterfaceId"+        <*> x .@? "privateIpAddress"+        <*> x .@? "privateIpAddressesSet" .!@ mempty+        <*> x .@? "secondaryPrivateIpAddressCount"+        <*> x .@? "subnetId"++instance ToQuery InstanceNetworkInterfaceSpecification where+    toQuery InstanceNetworkInterfaceSpecification{..} = mconcat+        [ "AssociatePublicIpAddress"       =? _inisAssociatePublicIpAddress+        , "DeleteOnTermination"            =? _inisDeleteOnTermination+        , "Description"                    =? _inisDescription+        , "DeviceIndex"                    =? _inisDeviceIndex+        , "SecurityGroupId"                `toQueryList` _inisGroups+        , "NetworkInterfaceId"             =? _inisNetworkInterfaceId+        , "PrivateIpAddress"               =? _inisPrivateIpAddress+        , "PrivateIpAddressesSet"          `toQueryList` _inisPrivateIpAddresses+        , "SecondaryPrivateIpAddressCount" =? _inisSecondaryPrivateIpAddressCount+        , "SubnetId"                       =? _inisSubnetId+        ]++data VolumeState+    = VSAvailable -- ^ available+    | VSCreating  -- ^ creating+    | VSDeleted   -- ^ deleted+    | VSDeleting  -- ^ deleting+    | VSError     -- ^ error+    | VSInUse     -- ^ in-use+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable VolumeState++instance FromText VolumeState where+    parser = takeLowerText >>= \case+        "available" -> pure VSAvailable+        "creating"  -> pure VSCreating+        "deleted"   -> pure VSDeleted+        "deleting"  -> pure VSDeleting+        "error"     -> pure VSError+        "in-use"    -> pure VSInUse+        e           -> fail $+            "Failure parsing VolumeState from " ++ show e++instance ToText VolumeState where+    toText = \case+        VSAvailable -> "available"+        VSCreating  -> "creating"+        VSDeleted   -> "deleted"+        VSDeleting  -> "deleting"+        VSError     -> "error"+        VSInUse     -> "in-use"++instance ToByteString VolumeState+instance ToHeader     VolumeState+instance ToQuery      VolumeState++instance FromXML VolumeState where+    parseXML = parseXMLText "VolumeState"++newtype AttributeValue = AttributeValue+    { _avValue :: Maybe Text+    } deriving (Eq, Ord, Read, Show, Monoid)++-- | 'AttributeValue' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'avValue' @::@ 'Maybe' 'Text'+--+attributeValue :: AttributeValue+attributeValue = AttributeValue+    { _avValue = Nothing+    }++-- | Valid values are case-sensitive and vary by action.+avValue :: Lens' AttributeValue (Maybe Text)+avValue = lens _avValue (\s a -> s { _avValue = a })++instance FromXML AttributeValue where+    parseXML x = AttributeValue+        <$> x .@? "value"++instance ToQuery AttributeValue where+    toQuery AttributeValue{..} = mconcat+        [ "Value" =? _avValue+        ]++data PrivateIpAddressSpecification = PrivateIpAddressSpecification+    { _piasPrimary          :: Maybe Bool+    , _piasPrivateIpAddress :: Text+    } deriving (Eq, Ord, Read, Show)++-- | 'PrivateIpAddressSpecification' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'piasPrimary' @::@ 'Maybe' 'Bool'+--+-- * 'piasPrivateIpAddress' @::@ 'Text'+--+privateIpAddressSpecification :: Text -- ^ 'piasPrivateIpAddress'+                              -> PrivateIpAddressSpecification+privateIpAddressSpecification p1 = PrivateIpAddressSpecification+    { _piasPrivateIpAddress = p1+    , _piasPrimary          = Nothing+    }++-- | Indicates whether the private IP address is the primary private IP address.+-- Only one IP address can be designated as primary.+piasPrimary :: Lens' PrivateIpAddressSpecification (Maybe Bool)+piasPrimary = lens _piasPrimary (\s a -> s { _piasPrimary = a })++-- | The private IP addresses.+piasPrivateIpAddress :: Lens' PrivateIpAddressSpecification Text+piasPrivateIpAddress =+    lens _piasPrivateIpAddress (\s a -> s { _piasPrivateIpAddress = a })++instance FromXML PrivateIpAddressSpecification where+    parseXML x = PrivateIpAddressSpecification+        <$> x .@? "primary"+        <*> x .@  "privateIpAddress"++instance ToQuery PrivateIpAddressSpecification where+    toQuery PrivateIpAddressSpecification{..} = mconcat+        [ "Primary"          =? _piasPrimary+        , "PrivateIpAddress" =? _piasPrivateIpAddress+        ]++data Image = Image+    { _iArchitecture        :: ArchitectureValues+    , _iBlockDeviceMappings :: List "item" BlockDeviceMapping+    , _iCreationDate        :: Maybe Text+    , _iDescription         :: Maybe Text+    , _iHypervisor          :: HypervisorType+    , _iImageId             :: Text+    , _iImageLocation       :: Text+    , _iImageOwnerAlias     :: Maybe Text+    , _iImageType           :: ImageTypeValues+    , _iKernelId            :: Maybe Text+    , _iName                :: Maybe Text+    , _iOwnerId             :: Text+    , _iPlatform            :: Maybe PlatformValues+    , _iProductCodes        :: List "item" ProductCode+    , _iPublic              :: Bool+    , _iRamdiskId           :: Maybe Text+    , _iRootDeviceName      :: Maybe Text+    , _iRootDeviceType      :: DeviceType+    , _iSriovNetSupport     :: Maybe Text+    , _iState               :: ImageState+    , _iStateReason         :: Maybe StateReason+    , _iTags                :: List "item" Tag+    , _iVirtualizationType  :: VirtualizationType+    } deriving (Eq, Read, Show)++-- | 'Image' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'iArchitecture' @::@ 'ArchitectureValues'+--+-- * 'iBlockDeviceMappings' @::@ ['BlockDeviceMapping']+--+-- * 'iCreationDate' @::@ 'Maybe' 'Text'+--+-- * 'iDescription' @::@ 'Maybe' 'Text'+--+-- * 'iHypervisor' @::@ 'HypervisorType'+--+-- * 'iImageId' @::@ 'Text'+--+-- * 'iImageLocation' @::@ 'Text'+--+-- * 'iImageOwnerAlias' @::@ 'Maybe' 'Text'+--+-- * 'iImageType' @::@ 'ImageTypeValues'+--+-- * 'iKernelId' @::@ 'Maybe' 'Text'+--+-- * 'iName' @::@ 'Maybe' 'Text'+--+-- * 'iOwnerId' @::@ 'Text'+--+-- * 'iPlatform' @::@ 'Maybe' 'PlatformValues'+--+-- * 'iProductCodes' @::@ ['ProductCode']+--+-- * 'iPublic' @::@ 'Bool'+--+-- * 'iRamdiskId' @::@ 'Maybe' 'Text'+--+-- * 'iRootDeviceName' @::@ 'Maybe' 'Text'+--+-- * 'iRootDeviceType' @::@ 'DeviceType'+--+-- * 'iSriovNetSupport' @::@ 'Maybe' 'Text'+--+-- * 'iState' @::@ 'ImageState'+--+-- * 'iStateReason' @::@ 'Maybe' 'StateReason'+--+-- * 'iTags' @::@ ['Tag']+--+-- * 'iVirtualizationType' @::@ 'VirtualizationType'+--+image :: Text -- ^ 'iImageId'+      -> Text -- ^ 'iImageLocation'+      -> ImageState -- ^ 'iState'+      -> Text -- ^ 'iOwnerId'+      -> Bool -- ^ 'iPublic'+      -> ArchitectureValues -- ^ 'iArchitecture'+      -> ImageTypeValues -- ^ 'iImageType'+      -> DeviceType -- ^ 'iRootDeviceType'+      -> VirtualizationType -- ^ 'iVirtualizationType'+      -> HypervisorType -- ^ 'iHypervisor'+      -> Image+image p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 = Image+    { _iImageId             = p1+    , _iImageLocation       = p2+    , _iState               = p3+    , _iOwnerId             = p4+    , _iPublic              = p5+    , _iArchitecture        = p6+    , _iImageType           = p7+    , _iRootDeviceType      = p8+    , _iVirtualizationType  = p9+    , _iHypervisor          = p10+    , _iCreationDate        = Nothing+    , _iProductCodes        = mempty+    , _iKernelId            = Nothing+    , _iRamdiskId           = Nothing+    , _iPlatform            = Nothing+    , _iSriovNetSupport     = Nothing+    , _iStateReason         = Nothing+    , _iImageOwnerAlias     = Nothing+    , _iName                = Nothing+    , _iDescription         = Nothing+    , _iRootDeviceName      = Nothing+    , _iBlockDeviceMappings = mempty+    , _iTags                = mempty+    }++-- | The architecture of the image.+iArchitecture :: Lens' Image ArchitectureValues+iArchitecture = lens _iArchitecture (\s a -> s { _iArchitecture = a })++-- | Any block device mapping entries.+iBlockDeviceMappings :: Lens' Image [BlockDeviceMapping]+iBlockDeviceMappings =+    lens _iBlockDeviceMappings (\s a -> s { _iBlockDeviceMappings = a })+        . _List++-- | The date and time the image was created.+iCreationDate :: Lens' Image (Maybe Text)+iCreationDate = lens _iCreationDate (\s a -> s { _iCreationDate = a })++-- | The description of the AMI that was provided during image creation.+iDescription :: Lens' Image (Maybe Text)+iDescription = lens _iDescription (\s a -> s { _iDescription = a })++-- | The hypervisor type of the image.+iHypervisor :: Lens' Image HypervisorType+iHypervisor = lens _iHypervisor (\s a -> s { _iHypervisor = a })++-- | The ID of the AMI.+iImageId :: Lens' Image Text+iImageId = lens _iImageId (\s a -> s { _iImageId = a })++-- | The location of the AMI.+iImageLocation :: Lens' Image Text+iImageLocation = lens _iImageLocation (\s a -> s { _iImageLocation = a })++-- | The AWS account alias (for example, 'amazon', 'self') or the AWS account ID of+-- the AMI owner.+iImageOwnerAlias :: Lens' Image (Maybe Text)+iImageOwnerAlias = lens _iImageOwnerAlias (\s a -> s { _iImageOwnerAlias = a })++-- | The type of image.+iImageType :: Lens' Image ImageTypeValues+iImageType = lens _iImageType (\s a -> s { _iImageType = a })++-- | The kernel associated with the image, if any. Only applicable for machine+-- images.+iKernelId :: Lens' Image (Maybe Text)+iKernelId = lens _iKernelId (\s a -> s { _iKernelId = a })++-- | The name of the AMI that was provided during image creation.+iName :: Lens' Image (Maybe Text)+iName = lens _iName (\s a -> s { _iName = a })++-- | The AWS account ID of the image owner.+iOwnerId :: Lens' Image Text+iOwnerId = lens _iOwnerId (\s a -> s { _iOwnerId = a })++-- | The value is 'Windows' for Windows AMIs; otherwise blank.+iPlatform :: Lens' Image (Maybe PlatformValues)+iPlatform = lens _iPlatform (\s a -> s { _iPlatform = a })++-- | Any product codes associated with the AMI.+iProductCodes :: Lens' Image [ProductCode]+iProductCodes = lens _iProductCodes (\s a -> s { _iProductCodes = a }) . _List++-- | Indicates whether the image has public launch permissions. The value is 'true'+-- if this image has public launch permissions or 'false' if it has only implicit+-- and explicit launch permissions.+iPublic :: Lens' Image Bool+iPublic = lens _iPublic (\s a -> s { _iPublic = a })++-- | The RAM disk associated with the image, if any. Only applicable for machine+-- images.+iRamdiskId :: Lens' Image (Maybe Text)+iRamdiskId = lens _iRamdiskId (\s a -> s { _iRamdiskId = a })++-- | The device name of the root device (for example, '/dev/sda1' or '/dev/xvda').+iRootDeviceName :: Lens' Image (Maybe Text)+iRootDeviceName = lens _iRootDeviceName (\s a -> s { _iRootDeviceName = a })++-- | The type of root device used by the AMI. The AMI can use an EBS volume or an+-- instance store volume.+iRootDeviceType :: Lens' Image DeviceType+iRootDeviceType = lens _iRootDeviceType (\s a -> s { _iRootDeviceType = a })++-- | Specifies whether enhanced networking is enabled.+iSriovNetSupport :: Lens' Image (Maybe Text)+iSriovNetSupport = lens _iSriovNetSupport (\s a -> s { _iSriovNetSupport = a })++-- | The current state of the AMI. If the state is 'available', the image is+-- successfully registered and can be used to launch an instance.+iState :: Lens' Image ImageState+iState = lens _iState (\s a -> s { _iState = a })++-- | The reason for the state change.+iStateReason :: Lens' Image (Maybe StateReason)+iStateReason = lens _iStateReason (\s a -> s { _iStateReason = a })++-- | Any tags assigned to the image.+iTags :: Lens' Image [Tag]+iTags = lens _iTags (\s a -> s { _iTags = a }) . _List++-- | The type of virtualization of the AMI.+iVirtualizationType :: Lens' Image VirtualizationType+iVirtualizationType =+    lens _iVirtualizationType (\s a -> s { _iVirtualizationType = a })++instance FromXML Image where+    parseXML x = Image+        <$> x .@  "architecture"+        <*> x .@? "blockDeviceMapping" .!@ mempty+        <*> x .@? "creationDate"+        <*> x .@? "description"+        <*> x .@  "hypervisor"+        <*> x .@  "imageId"+        <*> x .@  "imageLocation"+        <*> x .@? "imageOwnerAlias"+        <*> x .@  "imageType"+        <*> x .@? "kernelId"+        <*> x .@? "name"+        <*> x .@  "imageOwnerId"+        <*> x .@? "platform"+        <*> x .@? "productCodes" .!@ mempty+        <*> x .@  "isPublic"+        <*> x .@? "ramdiskId"+        <*> x .@? "rootDeviceName"+        <*> x .@  "rootDeviceType"+        <*> x .@? "sriovNetSupport"+        <*> x .@  "imageState"+        <*> x .@? "stateReason"+        <*> x .@? "tagSet" .!@ mempty+        <*> x .@  "virtualizationType"++instance ToQuery Image where+    toQuery Image{..} = mconcat+        [ "Architecture"       =? _iArchitecture+        , "BlockDeviceMapping" `toQueryList` _iBlockDeviceMappings+        , "CreationDate"       =? _iCreationDate+        , "Description"        =? _iDescription+        , "Hypervisor"         =? _iHypervisor+        , "ImageId"            =? _iImageId+        , "ImageLocation"      =? _iImageLocation+        , "ImageOwnerAlias"    =? _iImageOwnerAlias+        , "ImageType"          =? _iImageType+        , "KernelId"           =? _iKernelId+        , "Name"               =? _iName+        , "ImageOwnerId"       =? _iOwnerId+        , "Platform"           =? _iPlatform+        , "ProductCodes"       `toQueryList` _iProductCodes+        , "IsPublic"           =? _iPublic+        , "RamdiskId"          =? _iRamdiskId+        , "RootDeviceName"     =? _iRootDeviceName+        , "RootDeviceType"     =? _iRootDeviceType+        , "SriovNetSupport"    =? _iSriovNetSupport+        , "ImageState"         =? _iState+        , "StateReason"        =? _iStateReason+        , "TagSet"             `toQueryList` _iTags+        , "VirtualizationType" =? _iVirtualizationType+        ]++data DhcpConfiguration = DhcpConfiguration+    { _dcKey    :: Maybe Text+    , _dcValues :: List "item" AttributeValue+    } deriving (Eq, Read, Show)++-- | 'DhcpConfiguration' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcKey' @::@ 'Maybe' 'Text'+--+-- * 'dcValues' @::@ ['AttributeValue']+--+dhcpConfiguration :: DhcpConfiguration+dhcpConfiguration = DhcpConfiguration+    { _dcKey    = Nothing+    , _dcValues = mempty+    }++-- | The name of a DHCP option.+dcKey :: Lens' DhcpConfiguration (Maybe Text)+dcKey = lens _dcKey (\s a -> s { _dcKey = a })++-- | One or more values for the DHCP option.+dcValues :: Lens' DhcpConfiguration [AttributeValue]+dcValues = lens _dcValues (\s a -> s { _dcValues = a }) . _List++instance FromXML DhcpConfiguration where+    parseXML x = DhcpConfiguration+        <$> x .@? "key"+        <*> x .@? "valueSet" .!@ mempty++instance ToQuery DhcpConfiguration where+    toQuery DhcpConfiguration{..} = mconcat+        [ "Key"      =? _dcKey+        , "ValueSet" `toQueryList` _dcValues+        ]++data CancelSpotFleetRequestsError = CancelSpotFleetRequestsError+    { _csfreCode    :: CancelBatchErrorCode+    , _csfreMessage :: Text+    } deriving (Eq, Read, Show)++-- | 'CancelSpotFleetRequestsError' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'csfreCode' @::@ 'CancelBatchErrorCode'+--+-- * 'csfreMessage' @::@ 'Text'+--+cancelSpotFleetRequestsError :: CancelBatchErrorCode -- ^ 'csfreCode'+                             -> Text -- ^ 'csfreMessage'+                             -> CancelSpotFleetRequestsError+cancelSpotFleetRequestsError p1 p2 = CancelSpotFleetRequestsError+    { _csfreCode    = p1+    , _csfreMessage = p2+    }++-- | The error code.+csfreCode :: Lens' CancelSpotFleetRequestsError CancelBatchErrorCode+csfreCode = lens _csfreCode (\s a -> s { _csfreCode = a })++-- | The description for the error code.+csfreMessage :: Lens' CancelSpotFleetRequestsError Text+csfreMessage = lens _csfreMessage (\s a -> s { _csfreMessage = a })++instance FromXML CancelSpotFleetRequestsError where+    parseXML x = CancelSpotFleetRequestsError+        <$> x .@  "code"+        <*> x .@  "message"++instance ToQuery CancelSpotFleetRequestsError where+    toQuery CancelSpotFleetRequestsError{..} = mconcat+        [ "Code"    =? _csfreCode+        , "Message" =? _csfreMessage+        ]++data Tag = Tag+    { _tagKey   :: Text+    , _tagValue :: Text+    } deriving (Eq, Ord, Read, Show)++-- | 'Tag' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'tagKey' @::@ 'Text'+--+-- * 'tagValue' @::@ 'Text'+--+tag :: Text -- ^ 'tagKey'+    -> Text -- ^ 'tagValue'+    -> Tag+tag p1 p2 = Tag+    { _tagKey   = p1+    , _tagValue = p2+    }++-- | The key of the tag.+--+-- Constraints: Tag keys are case-sensitive and accept a maximum of 127 Unicode+-- characters. May not begin with 'aws:'+tagKey :: Lens' Tag Text+tagKey = lens _tagKey (\s a -> s { _tagKey = a })++-- | The value of the tag.+--+-- Constraints: Tag values are case-sensitive and accept a maximum of 255+-- Unicode characters.+tagValue :: Lens' Tag Text+tagValue = lens _tagValue (\s a -> s { _tagValue = a })++instance FromXML Tag where+    parseXML x = Tag+        <$> x .@  "key"+        <*> x .@  "value"++instance ToQuery Tag where+    toQuery Tag{..} = mconcat+        [ "Key"   =? _tagKey+        , "Value" =? _tagValue+        ]++data AccountAttributeName+    = DefaultVpc         -- ^ default-vpc+    | SupportedPlatforms -- ^ supported-platforms+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable AccountAttributeName++instance FromText AccountAttributeName where+    parser = takeLowerText >>= \case+        "default-vpc"         -> pure DefaultVpc+        "supported-platforms" -> pure SupportedPlatforms+        e                     -> fail $+            "Failure parsing AccountAttributeName from " ++ show e++instance ToText AccountAttributeName where+    toText = \case+        DefaultVpc         -> "default-vpc"+        SupportedPlatforms -> "supported-platforms"++instance ToByteString AccountAttributeName+instance ToHeader     AccountAttributeName+instance ToQuery      AccountAttributeName++instance FromXML AccountAttributeName where+    parseXML = parseXMLText "AccountAttributeName"++data NetworkInterfaceAttachment = NetworkInterfaceAttachment+    { _niaAttachTime          :: Maybe ISO8601+    , _niaAttachmentId        :: Maybe Text+    , _niaDeleteOnTermination :: Maybe Bool+    , _niaDeviceIndex         :: Maybe Int+    , _niaInstanceId          :: Maybe Text+    , _niaInstanceOwnerId     :: Maybe Text+    , _niaStatus              :: Maybe AttachmentStatus+    } deriving (Eq, Read, Show)++-- | 'NetworkInterfaceAttachment' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'niaAttachTime' @::@ 'Maybe' 'UTCTime'+--+-- * 'niaAttachmentId' @::@ 'Maybe' 'Text'+--+-- * 'niaDeleteOnTermination' @::@ 'Maybe' 'Bool'+--+-- * 'niaDeviceIndex' @::@ 'Maybe' 'Int'+--+-- * 'niaInstanceId' @::@ 'Maybe' 'Text'+--+-- * 'niaInstanceOwnerId' @::@ 'Maybe' 'Text'+--+-- * 'niaStatus' @::@ 'Maybe' 'AttachmentStatus'+--+networkInterfaceAttachment :: NetworkInterfaceAttachment+networkInterfaceAttachment = NetworkInterfaceAttachment+    { _niaAttachmentId        = Nothing+    , _niaInstanceId          = Nothing+    , _niaInstanceOwnerId     = Nothing+    , _niaDeviceIndex         = Nothing+    , _niaStatus              = Nothing+    , _niaAttachTime          = Nothing+    , _niaDeleteOnTermination = Nothing+    }++-- | The timestamp indicating when the attachment initiated.+niaAttachTime :: Lens' NetworkInterfaceAttachment (Maybe UTCTime)+niaAttachTime = lens _niaAttachTime (\s a -> s { _niaAttachTime = a }) . mapping _Time++-- | The ID of the network interface attachment.+niaAttachmentId :: Lens' NetworkInterfaceAttachment (Maybe Text)+niaAttachmentId = lens _niaAttachmentId (\s a -> s { _niaAttachmentId = a })++-- | Indicates whether the network interface is deleted when the instance is+-- terminated.+niaDeleteOnTermination :: Lens' NetworkInterfaceAttachment (Maybe Bool)+niaDeleteOnTermination =+    lens _niaDeleteOnTermination (\s a -> s { _niaDeleteOnTermination = a })++-- | The device index of the network interface attachment on the instance.+niaDeviceIndex :: Lens' NetworkInterfaceAttachment (Maybe Int)+niaDeviceIndex = lens _niaDeviceIndex (\s a -> s { _niaDeviceIndex = a })++-- | The ID of the instance.+niaInstanceId :: Lens' NetworkInterfaceAttachment (Maybe Text)+niaInstanceId = lens _niaInstanceId (\s a -> s { _niaInstanceId = a })++-- | The AWS account ID of the owner of the instance.+niaInstanceOwnerId :: Lens' NetworkInterfaceAttachment (Maybe Text)+niaInstanceOwnerId =+    lens _niaInstanceOwnerId (\s a -> s { _niaInstanceOwnerId = a })++-- | The attachment state.+niaStatus :: Lens' NetworkInterfaceAttachment (Maybe AttachmentStatus)+niaStatus = lens _niaStatus (\s a -> s { _niaStatus = a })++instance FromXML NetworkInterfaceAttachment where+    parseXML x = NetworkInterfaceAttachment+        <$> x .@? "attachTime"+        <*> x .@? "attachmentId"+        <*> x .@? "deleteOnTermination"+        <*> x .@? "deviceIndex"+        <*> x .@? "instanceId"+        <*> x .@? "instanceOwnerId"+        <*> x .@? "status"++instance ToQuery NetworkInterfaceAttachment where+    toQuery NetworkInterfaceAttachment{..} = mconcat+        [ "AttachTime"          =? _niaAttachTime+        , "AttachmentId"        =? _niaAttachmentId+        , "DeleteOnTermination" =? _niaDeleteOnTermination+        , "DeviceIndex"         =? _niaDeviceIndex+        , "InstanceId"          =? _niaInstanceId+        , "InstanceOwnerId"     =? _niaInstanceOwnerId+        , "Status"              =? _niaStatus+        ]++newtype RunInstancesMonitoringEnabled = RunInstancesMonitoringEnabled+    { _rimeEnabled :: Bool+    } deriving (Eq, Ord, Read, Show, Enum)++-- | 'RunInstancesMonitoringEnabled' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rimeEnabled' @::@ 'Bool'+--+runInstancesMonitoringEnabled :: Bool -- ^ 'rimeEnabled'+                              -> RunInstancesMonitoringEnabled+runInstancesMonitoringEnabled p1 = RunInstancesMonitoringEnabled+    { _rimeEnabled = p1+    }++-- | Indicates whether monitoring is enabled for the instance.+rimeEnabled :: Lens' RunInstancesMonitoringEnabled Bool+rimeEnabled = lens _rimeEnabled (\s a -> s { _rimeEnabled = a })++instance FromXML RunInstancesMonitoringEnabled where+    parseXML x = RunInstancesMonitoringEnabled+        <$> x .@  "enabled"++instance ToQuery RunInstancesMonitoringEnabled where+    toQuery RunInstancesMonitoringEnabled{..} = mconcat+        [ "Enabled" =? _rimeEnabled+        ]++data VolumeStatusInfo = VolumeStatusInfo+    { _vsiDetails :: List "item" VolumeStatusDetails+    , _vsiStatus  :: Maybe VolumeStatusInfoStatus+    } deriving (Eq, Read, Show)++-- | 'VolumeStatusInfo' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'vsiDetails' @::@ ['VolumeStatusDetails']+--+-- * 'vsiStatus' @::@ 'Maybe' 'VolumeStatusInfoStatus'+--+volumeStatusInfo :: VolumeStatusInfo+volumeStatusInfo = VolumeStatusInfo+    { _vsiStatus  = Nothing+    , _vsiDetails = mempty+    }++-- | The details of the volume status.+vsiDetails :: Lens' VolumeStatusInfo [VolumeStatusDetails]+vsiDetails = lens _vsiDetails (\s a -> s { _vsiDetails = a }) . _List++-- | The status of the volume.+vsiStatus :: Lens' VolumeStatusInfo (Maybe VolumeStatusInfoStatus)+vsiStatus = lens _vsiStatus (\s a -> s { _vsiStatus = a })++instance FromXML VolumeStatusInfo where+    parseXML x = VolumeStatusInfo+        <$> x .@? "details" .!@ mempty+        <*> x .@? "status"++instance ToQuery VolumeStatusInfo where+    toQuery VolumeStatusInfo{..} = mconcat+        [ "Details" `toQueryList` _vsiDetails+        , "Status"  =? _vsiStatus+        ]++data NetworkInterfaceAssociation = NetworkInterfaceAssociation+    { _niaAllocationId  :: Maybe Text+    , _niaAssociationId :: Maybe Text+    , _niaIpOwnerId     :: Maybe Text+    , _niaPublicDnsName :: Maybe Text+    , _niaPublicIp      :: Maybe Text+    } deriving (Eq, Ord, Read, Show)++-- | 'NetworkInterfaceAssociation' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'niaAllocationId' @::@ 'Maybe' 'Text'+--+-- * 'niaAssociationId' @::@ 'Maybe' 'Text'+--+-- * 'niaIpOwnerId' @::@ 'Maybe' 'Text'+--+-- * 'niaPublicDnsName' @::@ 'Maybe' 'Text'+--+-- * 'niaPublicIp' @::@ 'Maybe' 'Text'+--+networkInterfaceAssociation :: NetworkInterfaceAssociation+networkInterfaceAssociation = NetworkInterfaceAssociation+    { _niaPublicIp      = Nothing+    , _niaPublicDnsName = Nothing+    , _niaIpOwnerId     = Nothing+    , _niaAllocationId  = Nothing+    , _niaAssociationId = Nothing+    }++-- | The allocation ID.+niaAllocationId :: Lens' NetworkInterfaceAssociation (Maybe Text)+niaAllocationId = lens _niaAllocationId (\s a -> s { _niaAllocationId = a })++-- | The association ID.+niaAssociationId :: Lens' NetworkInterfaceAssociation (Maybe Text)+niaAssociationId = lens _niaAssociationId (\s a -> s { _niaAssociationId = a })++-- | The ID of the Elastic IP address owner.+niaIpOwnerId :: Lens' NetworkInterfaceAssociation (Maybe Text)+niaIpOwnerId = lens _niaIpOwnerId (\s a -> s { _niaIpOwnerId = a })++-- | The public DNS name.+niaPublicDnsName :: Lens' NetworkInterfaceAssociation (Maybe Text)+niaPublicDnsName = lens _niaPublicDnsName (\s a -> s { _niaPublicDnsName = a })++-- | The address of the Elastic IP address bound to the network interface.+niaPublicIp :: Lens' NetworkInterfaceAssociation (Maybe Text)+niaPublicIp = lens _niaPublicIp (\s a -> s { _niaPublicIp = a })++instance FromXML NetworkInterfaceAssociation where+    parseXML x = NetworkInterfaceAssociation+        <$> x .@? "allocationId"+        <*> x .@? "associationId"+        <*> x .@? "ipOwnerId"+        <*> x .@? "publicDnsName"+        <*> x .@? "publicIp"++instance ToQuery NetworkInterfaceAssociation where+    toQuery NetworkInterfaceAssociation{..} = mconcat+        [ "AllocationId"  =? _niaAllocationId+        , "AssociationId" =? _niaAssociationId+        , "IpOwnerId"     =? _niaIpOwnerId+        , "PublicDnsName" =? _niaPublicDnsName+        , "PublicIp"      =? _niaPublicIp+        ]++data CreateVolumePermissionModifications = CreateVolumePermissionModifications+    { _cvpmAdd    :: List "item" CreateVolumePermission+    , _cvpmRemove :: List "item" CreateVolumePermission+    } deriving (Eq, Read, Show)++-- | 'CreateVolumePermissionModifications' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cvpmAdd' @::@ ['CreateVolumePermission']+--+-- * 'cvpmRemove' @::@ ['CreateVolumePermission']+--+createVolumePermissionModifications :: CreateVolumePermissionModifications+createVolumePermissionModifications = CreateVolumePermissionModifications+    { _cvpmAdd    = mempty+    , _cvpmRemove = mempty+    }++-- | Adds a specific AWS account ID or group to a volume's list of create volume+-- permissions.+cvpmAdd :: Lens' CreateVolumePermissionModifications [CreateVolumePermission]+cvpmAdd = lens _cvpmAdd (\s a -> s { _cvpmAdd = a }) . _List++-- | Removes a specific AWS account ID or group from a volume's list of create+-- volume permissions.+cvpmRemove :: Lens' CreateVolumePermissionModifications [CreateVolumePermission]+cvpmRemove = lens _cvpmRemove (\s a -> s { _cvpmRemove = a }) . _List++instance FromXML CreateVolumePermissionModifications where+    parseXML x = CreateVolumePermissionModifications+        <$> x .@? "Add" .!@ mempty+        <*> x .@? "Remove" .!@ mempty++instance ToQuery CreateVolumePermissionModifications where+    toQuery CreateVolumePermissionModifications{..} = mconcat+        [ "Add"    `toQueryList` _cvpmAdd+        , "Remove" `toQueryList` _cvpmRemove+        ]++data VpcState+    = VpcStateAvailable -- ^ available+    | VpcStatePending   -- ^ pending+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable VpcState++instance FromText VpcState where+    parser = takeLowerText >>= \case+        "available" -> pure VpcStateAvailable+        "pending"   -> pure VpcStatePending+        e           -> fail $+            "Failure parsing VpcState from " ++ show e++instance ToText VpcState where+    toText = \case+        VpcStateAvailable -> "available"+        VpcStatePending   -> "pending"++instance ToByteString VpcState+instance ToHeader     VpcState+instance ToQuery      VpcState++instance FromXML VpcState where+    parseXML = parseXMLText "VpcState"++data ResourceType+    = RTCustomerGateway      -- ^ customer-gateway+    | RTDhcpOptions          -- ^ dhcp-options+    | RTImage                -- ^ image+    | RTInstance'            -- ^ instance+    | RTInternetGateway      -- ^ internet-gateway+    | RTNetworkAcl           -- ^ network-acl+    | RTNetworkInterface     -- ^ network-interface+    | RTReservedInstances    -- ^ reserved-instances+    | RTRouteTable           -- ^ route-table+    | RTSecurityGroup        -- ^ security-group+    | RTSnapshot             -- ^ snapshot+    | RTSpotInstancesRequest -- ^ spot-instances-request+    | RTSubnet               -- ^ subnet+    | RTVolume               -- ^ volume+    | RTVpc                  -- ^ vpc+    | RTVpnConnection        -- ^ vpn-connection+    | RTVpnGateway           -- ^ vpn-gateway+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable ResourceType++instance FromText ResourceType where+    parser = takeLowerText >>= \case+        "customer-gateway"       -> pure RTCustomerGateway+        "dhcp-options"           -> pure RTDhcpOptions+        "image"                  -> pure RTImage+        "instance"               -> pure RTInstance'+        "internet-gateway"       -> pure RTInternetGateway+        "network-acl"            -> pure RTNetworkAcl+        "network-interface"      -> pure RTNetworkInterface+        "reserved-instances"     -> pure RTReservedInstances+        "route-table"            -> pure RTRouteTable+        "security-group"         -> pure RTSecurityGroup+        "snapshot"               -> pure RTSnapshot+        "spot-instances-request" -> pure RTSpotInstancesRequest+        "subnet"                 -> pure RTSubnet+        "volume"                 -> pure RTVolume+        "vpc"                    -> pure RTVpc+        "vpn-connection"         -> pure RTVpnConnection+        "vpn-gateway"            -> pure RTVpnGateway+        e                        -> fail $+            "Failure parsing ResourceType from " ++ show e++instance ToText ResourceType where+    toText = \case+        RTCustomerGateway      -> "customer-gateway"+        RTDhcpOptions          -> "dhcp-options"+        RTImage                -> "image"+        RTInstance'            -> "instance"+        RTInternetGateway      -> "internet-gateway"+        RTNetworkAcl           -> "network-acl"+        RTNetworkInterface     -> "network-interface"+        RTReservedInstances    -> "reserved-instances"+        RTRouteTable           -> "route-table"+        RTSecurityGroup        -> "security-group"+        RTSnapshot             -> "snapshot"+        RTSpotInstancesRequest -> "spot-instances-request"+        RTSubnet               -> "subnet"+        RTVolume               -> "volume"+        RTVpc                  -> "vpc"+        RTVpnConnection        -> "vpn-connection"+        RTVpnGateway           -> "vpn-gateway"++instance ToByteString ResourceType+instance ToHeader     ResourceType+instance ToQuery      ResourceType++instance FromXML ResourceType where+    parseXML = parseXMLText "ResourceType"++data ReportStatusType+    = Impaired -- ^ impaired+    | Ok       -- ^ ok+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable ReportStatusType++instance FromText ReportStatusType where+    parser = takeLowerText >>= \case+        "impaired" -> pure Impaired+        "ok"       -> pure Ok+        e          -> fail $+            "Failure parsing ReportStatusType from " ++ show e++instance ToText ReportStatusType where+    toText = \case+        Impaired -> "impaired"+        Ok       -> "ok"++instance ToByteString ReportStatusType+instance ToHeader     ReportStatusType+instance ToQuery      ReportStatusType++instance FromXML ReportStatusType where+    parseXML = parseXMLText "ReportStatusType"++data CurrencyCodeValues+    = Usd -- ^ USD+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable CurrencyCodeValues++instance FromText CurrencyCodeValues where+    parser = takeLowerText >>= \case+        "usd" -> pure Usd+        e     -> fail $+            "Failure parsing CurrencyCodeValues from " ++ show e++instance ToText CurrencyCodeValues where+    toText Usd = "USD"++instance ToByteString CurrencyCodeValues+instance ToHeader     CurrencyCodeValues+instance ToQuery      CurrencyCodeValues++instance FromXML CurrencyCodeValues where+    parseXML = parseXMLText "CurrencyCodeValues"++data IcmpTypeCode = IcmpTypeCode+    { _itcCode :: Maybe Int+    , _itcType :: Maybe Int+    } deriving (Eq, Ord, Read, Show)++-- | 'IcmpTypeCode' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'itcCode' @::@ 'Maybe' 'Int'+--+-- * 'itcType' @::@ 'Maybe' 'Int'+--+icmpTypeCode :: IcmpTypeCode+icmpTypeCode = IcmpTypeCode+    { _itcType = Nothing+    , _itcCode = Nothing+    }++-- | The ICMP type. A value of -1 means all types.+itcCode :: Lens' IcmpTypeCode (Maybe Int)+itcCode = lens _itcCode (\s a -> s { _itcCode = a })++-- | The ICMP code. A value of -1 means all codes for the specified ICMP type.+itcType :: Lens' IcmpTypeCode (Maybe Int)+itcType = lens _itcType (\s a -> s { _itcType = a })++instance FromXML IcmpTypeCode where+    parseXML x = IcmpTypeCode+        <$> x .@? "code"+        <*> x .@? "type"++instance ToQuery IcmpTypeCode where+    toQuery IcmpTypeCode{..} = mconcat+        [ "Code" =? _itcCode+        , "Type" =? _itcType+        ]++data InstanceCount = InstanceCount+    { _icInstanceCount :: Maybe Int+    , _icState         :: Maybe ListingState+    } deriving (Eq, Read, Show)++-- | 'InstanceCount' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'icInstanceCount' @::@ 'Maybe' 'Int'+--+-- * 'icState' @::@ 'Maybe' 'ListingState'+--+instanceCount :: InstanceCount+instanceCount = InstanceCount+    { _icState         = Nothing+    , _icInstanceCount = Nothing+    }++-- | The number of listed Reserved Instances in the state specified by the 'state'.+icInstanceCount :: Lens' InstanceCount (Maybe Int)+icInstanceCount = lens _icInstanceCount (\s a -> s { _icInstanceCount = a })++-- | The states of the listed Reserved Instances.+icState :: Lens' InstanceCount (Maybe ListingState)+icState = lens _icState (\s a -> s { _icState = a })++instance FromXML InstanceCount where+    parseXML x = InstanceCount+        <$> x .@? "instanceCount"+        <*> x .@? "state"++instance ToQuery InstanceCount where+    toQuery InstanceCount{..} = mconcat+        [ "InstanceCount" =? _icInstanceCount+        , "State"         =? _icState+        ]++data ExportToS3Task = ExportToS3Task+    { _etstContainerFormat :: Maybe ContainerFormat+    , _etstDiskImageFormat :: Maybe DiskImageFormat+    , _etstS3Bucket        :: Maybe Text+    , _etstS3Key           :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'ExportToS3Task' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'etstContainerFormat' @::@ 'Maybe' 'ContainerFormat'+--+-- * 'etstDiskImageFormat' @::@ 'Maybe' 'DiskImageFormat'+--+-- * 'etstS3Bucket' @::@ 'Maybe' 'Text'+--+-- * 'etstS3Key' @::@ 'Maybe' 'Text'+--+exportToS3Task :: ExportToS3Task+exportToS3Task = ExportToS3Task+    { _etstDiskImageFormat = Nothing+    , _etstContainerFormat = Nothing+    , _etstS3Bucket        = Nothing+    , _etstS3Key           = Nothing+    }++-- | The container format used to combine disk images with metadata (such as OVF).+-- If absent, only the disk image is exported.+etstContainerFormat :: Lens' ExportToS3Task (Maybe ContainerFormat)+etstContainerFormat =+    lens _etstContainerFormat (\s a -> s { _etstContainerFormat = a })++-- | The format for the exported image.+etstDiskImageFormat :: Lens' ExportToS3Task (Maybe DiskImageFormat)+etstDiskImageFormat =+    lens _etstDiskImageFormat (\s a -> s { _etstDiskImageFormat = a })++-- | The S3 bucket for the destination image. The destination bucket must exist+-- and grant WRITE and READ_ACP permissions to the AWS account 'vm-import-export@amazon.com'.+etstS3Bucket :: Lens' ExportToS3Task (Maybe Text)+etstS3Bucket = lens _etstS3Bucket (\s a -> s { _etstS3Bucket = a })++-- | The encryption key for your S3 bucket.+etstS3Key :: Lens' ExportToS3Task (Maybe Text)+etstS3Key = lens _etstS3Key (\s a -> s { _etstS3Key = a })++instance FromXML ExportToS3Task where+    parseXML x = ExportToS3Task+        <$> x .@? "containerFormat"+        <*> x .@? "diskImageFormat"+        <*> x .@? "s3Bucket"+        <*> x .@? "s3Key"++instance ToQuery ExportToS3Task where+    toQuery ExportToS3Task{..} = mconcat+        [ "ContainerFormat" =? _etstContainerFormat+        , "DiskImageFormat" =? _etstDiskImageFormat+        , "S3Bucket"        =? _etstS3Bucket+        , "S3Key"           =? _etstS3Key+        ]++data PrefixList = PrefixList+    { _plCidrs          :: List "item" Text+    , _plPrefixListId   :: Maybe Text+    , _plPrefixListName :: Maybe Text+    } deriving (Eq, Ord, Read, Show)++-- | 'PrefixList' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'plCidrs' @::@ ['Text']+--+-- * 'plPrefixListId' @::@ 'Maybe' 'Text'+--+-- * 'plPrefixListName' @::@ 'Maybe' 'Text'+--+prefixList :: PrefixList+prefixList = PrefixList+    { _plPrefixListId   = Nothing+    , _plPrefixListName = Nothing+    , _plCidrs          = mempty+    }++-- | The IP address range of the AWS service.+plCidrs :: Lens' PrefixList [Text]+plCidrs = lens _plCidrs (\s a -> s { _plCidrs = a }) . _List++-- | The ID of the prefix.+plPrefixListId :: Lens' PrefixList (Maybe Text)+plPrefixListId = lens _plPrefixListId (\s a -> s { _plPrefixListId = a })++-- | The name of the prefix.+plPrefixListName :: Lens' PrefixList (Maybe Text)+plPrefixListName = lens _plPrefixListName (\s a -> s { _plPrefixListName = a })++instance FromXML PrefixList where+    parseXML x = PrefixList+        <$> x .@? "cidrSet" .!@ mempty+        <*> x .@? "prefixListId"+        <*> x .@? "prefixListName"++instance ToQuery PrefixList where+    toQuery PrefixList{..} = mconcat+        [ "CidrSet"        `toQueryList` _plCidrs+        , "PrefixListId"   =? _plPrefixListId+        , "PrefixListName" =? _plPrefixListName+        ]++data BlockDeviceMapping = BlockDeviceMapping+    { _bdmDeviceName  :: Text+    , _bdmEbs         :: Maybe EbsBlockDevice+    , _bdmNoDevice    :: Maybe Text+    , _bdmVirtualName :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'BlockDeviceMapping' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'bdmDeviceName' @::@ 'Text'+--+-- * 'bdmEbs' @::@ 'Maybe' 'EbsBlockDevice'+--+-- * 'bdmNoDevice' @::@ 'Maybe' 'Text'+--+-- * 'bdmVirtualName' @::@ 'Maybe' 'Text'+--+blockDeviceMapping :: Text -- ^ 'bdmDeviceName'+                   -> BlockDeviceMapping+blockDeviceMapping p1 = BlockDeviceMapping+    { _bdmDeviceName  = p1+    , _bdmVirtualName = Nothing+    , _bdmEbs         = Nothing+    , _bdmNoDevice    = Nothing+    }++-- | The device name exposed to the instance (for example, '/dev/sdh' or 'xvdh').+bdmDeviceName :: Lens' BlockDeviceMapping Text+bdmDeviceName = lens _bdmDeviceName (\s a -> s { _bdmDeviceName = a })++-- | Parameters used to automatically set up EBS volumes when the instance is+-- launched.+bdmEbs :: Lens' BlockDeviceMapping (Maybe EbsBlockDevice)+bdmEbs = lens _bdmEbs (\s a -> s { _bdmEbs = a })++-- | Suppresses the specified device included in the block device mapping of the+-- AMI.+bdmNoDevice :: Lens' BlockDeviceMapping (Maybe Text)+bdmNoDevice = lens _bdmNoDevice (\s a -> s { _bdmNoDevice = a })++-- | The virtual device name ('ephemeral'N). Instance store volumes are numbered+-- starting from 0. An instance type with 2 available instance store volumes can+-- specify mappings for 'ephemeral0' and 'ephemeral1'.The number of available+-- instance store volumes depends on the instance type. After you connect to the+-- instance, you must mount the volume.+--+-- Constraints: For M3 instances, you must specify instance store volumes in+-- the block device mapping for the instance. When you launch an M3 instance, we+-- ignore any instance store volumes specified in the block device mapping for+-- the AMI.+bdmVirtualName :: Lens' BlockDeviceMapping (Maybe Text)+bdmVirtualName = lens _bdmVirtualName (\s a -> s { _bdmVirtualName = a })++instance FromXML BlockDeviceMapping where+    parseXML x = BlockDeviceMapping+        <$> x .@  "deviceName"+        <*> x .@? "ebs"+        <*> x .@? "noDevice"+        <*> x .@? "virtualName"++instance ToQuery BlockDeviceMapping where+    toQuery BlockDeviceMapping{..} = mconcat+        [ "DeviceName"  =? _bdmDeviceName+        , "Ebs"         =? _bdmEbs+        , "NoDevice"    =? _bdmNoDevice+        , "VirtualName" =? _bdmVirtualName+        ]++data ConversionTask = ConversionTask+    { _ctConversionTaskId :: Text+    , _ctExpirationTime   :: Maybe Text+    , _ctImportInstance   :: Maybe ImportInstanceTaskDetails+    , _ctImportVolume     :: Maybe ImportVolumeTaskDetails+    , _ctState            :: ConversionTaskState+    , _ctStatusMessage    :: Maybe Text+    , _ctTags             :: List "item" Tag+    } deriving (Eq, Read, Show)++-- | 'ConversionTask' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ctConversionTaskId' @::@ 'Text'+--+-- * 'ctExpirationTime' @::@ 'Maybe' 'Text'+--+-- * 'ctImportInstance' @::@ 'Maybe' 'ImportInstanceTaskDetails'+--+-- * 'ctImportVolume' @::@ 'Maybe' 'ImportVolumeTaskDetails'+--+-- * 'ctState' @::@ 'ConversionTaskState'+--+-- * 'ctStatusMessage' @::@ 'Maybe' 'Text'+--+-- * 'ctTags' @::@ ['Tag']+--+conversionTask :: Text -- ^ 'ctConversionTaskId'+               -> ConversionTaskState -- ^ 'ctState'+               -> ConversionTask+conversionTask p1 p2 = ConversionTask+    { _ctConversionTaskId = p1+    , _ctState            = p2+    , _ctExpirationTime   = Nothing+    , _ctImportInstance   = Nothing+    , _ctImportVolume     = Nothing+    , _ctStatusMessage    = Nothing+    , _ctTags             = mempty+    }++-- | The ID of the conversion task.+ctConversionTaskId :: Lens' ConversionTask Text+ctConversionTaskId =+    lens _ctConversionTaskId (\s a -> s { _ctConversionTaskId = a })++-- | The time when the task expires. If the upload isn't complete before the+-- expiration time, we automatically cancel the task.+ctExpirationTime :: Lens' ConversionTask (Maybe Text)+ctExpirationTime = lens _ctExpirationTime (\s a -> s { _ctExpirationTime = a })++-- | If the task is for importing an instance, this contains information about the+-- import instance task.+ctImportInstance :: Lens' ConversionTask (Maybe ImportInstanceTaskDetails)+ctImportInstance = lens _ctImportInstance (\s a -> s { _ctImportInstance = a })++-- | If the task is for importing a volume, this contains information about the+-- import volume task.+ctImportVolume :: Lens' ConversionTask (Maybe ImportVolumeTaskDetails)+ctImportVolume = lens _ctImportVolume (\s a -> s { _ctImportVolume = a })++-- | The state of the conversion task.+ctState :: Lens' ConversionTask ConversionTaskState+ctState = lens _ctState (\s a -> s { _ctState = a })++-- | The status message related to the conversion task.+ctStatusMessage :: Lens' ConversionTask (Maybe Text)+ctStatusMessage = lens _ctStatusMessage (\s a -> s { _ctStatusMessage = a })++-- | Any tags assigned to the task.+ctTags :: Lens' ConversionTask [Tag]+ctTags = lens _ctTags (\s a -> s { _ctTags = a }) . _List++instance FromXML ConversionTask where+    parseXML x = ConversionTask+        <$> x .@  "conversionTaskId"+        <*> x .@? "expirationTime"+        <*> x .@? "importInstance"+        <*> x .@? "importVolume"+        <*> x .@  "state"+        <*> x .@? "statusMessage"+        <*> x .@? "tagSet" .!@ mempty++instance ToQuery ConversionTask where+    toQuery ConversionTask{..} = mconcat+        [ "ConversionTaskId" =? _ctConversionTaskId+        , "ExpirationTime"   =? _ctExpirationTime+        , "ImportInstance"   =? _ctImportInstance+        , "ImportVolume"     =? _ctImportVolume+        , "State"            =? _ctState+        , "StatusMessage"    =? _ctStatusMessage+        , "TagSet"           `toQueryList` _ctTags+        ]++data AttachmentStatus+    = Attached  -- ^ attached+    | Attaching -- ^ attaching+    | Detached  -- ^ detached+    | Detaching -- ^ detaching+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable AttachmentStatus++instance FromText AttachmentStatus where+    parser = takeLowerText >>= \case+        "attached"  -> pure Attached+        "attaching" -> pure Attaching+        "detached"  -> pure Detached+        "detaching" -> pure Detaching+        e           -> fail $+            "Failure parsing AttachmentStatus from " ++ show e++instance ToText AttachmentStatus where+    toText = \case+        Attached  -> "attached"+        Attaching -> "attaching"+        Detached  -> "detached"+        Detaching -> "detaching"++instance ToByteString AttachmentStatus+instance ToHeader     AttachmentStatus+instance ToQuery      AttachmentStatus++instance FromXML AttachmentStatus where+    parseXML = parseXMLText "AttachmentStatus"++data ClassicLinkInstance = ClassicLinkInstance+    { _cliGroups     :: List "item" GroupIdentifier+    , _cliInstanceId :: Maybe Text+    , _cliTags       :: List "item" Tag+    , _cliVpcId      :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'ClassicLinkInstance' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cliGroups' @::@ ['GroupIdentifier']+--+-- * 'cliInstanceId' @::@ 'Maybe' 'Text'+--+-- * 'cliTags' @::@ ['Tag']+--+-- * 'cliVpcId' @::@ 'Maybe' 'Text'+--+classicLinkInstance :: ClassicLinkInstance+classicLinkInstance = ClassicLinkInstance+    { _cliInstanceId = Nothing+    , _cliVpcId      = Nothing+    , _cliGroups     = mempty+    , _cliTags       = mempty+    }++-- | A list of security groups.+cliGroups :: Lens' ClassicLinkInstance [GroupIdentifier]+cliGroups = lens _cliGroups (\s a -> s { _cliGroups = a }) . _List++-- | The ID of the instance.+cliInstanceId :: Lens' ClassicLinkInstance (Maybe Text)+cliInstanceId = lens _cliInstanceId (\s a -> s { _cliInstanceId = a })++-- | Any tags assigned to the instance.+cliTags :: Lens' ClassicLinkInstance [Tag]+cliTags = lens _cliTags (\s a -> s { _cliTags = a }) . _List++-- | The ID of the VPC.+cliVpcId :: Lens' ClassicLinkInstance (Maybe Text)+cliVpcId = lens _cliVpcId (\s a -> s { _cliVpcId = a })++instance FromXML ClassicLinkInstance where+    parseXML x = ClassicLinkInstance+        <$> x .@? "groupSet" .!@ mempty+        <*> x .@? "instanceId"+        <*> x .@? "tagSet" .!@ mempty+        <*> x .@? "vpcId"++instance ToQuery ClassicLinkInstance where+    toQuery ClassicLinkInstance{..} = mconcat+        [ "GroupSet"   `toQueryList` _cliGroups+        , "InstanceId" =? _cliInstanceId+        , "TagSet"     `toQueryList` _cliTags+        , "VpcId"      =? _cliVpcId+        ]++data RouteOrigin+    = OriginCreateRoute               -- ^ CreateRoute+    | OriginCreateRouteTable          -- ^ CreateRouteTable+    | OriginEnableVgwRoutePropagation -- ^ EnableVgwRoutePropagation+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable RouteOrigin++instance FromText RouteOrigin where+    parser = takeLowerText >>= \case+        "createroute"               -> pure OriginCreateRoute+        "createroutetable"          -> pure OriginCreateRouteTable+        "enablevgwroutepropagation" -> pure OriginEnableVgwRoutePropagation+        e                           -> fail $+            "Failure parsing RouteOrigin from " ++ show e++instance ToText RouteOrigin where+    toText = \case+        OriginCreateRoute               -> "CreateRoute"+        OriginCreateRouteTable          -> "CreateRouteTable"+        OriginEnableVgwRoutePropagation -> "EnableVgwRoutePropagation"++instance ToByteString RouteOrigin+instance ToHeader     RouteOrigin+instance ToQuery      RouteOrigin++instance FromXML RouteOrigin where+    parseXML = parseXMLText "RouteOrigin"++data ListingState+    = LSAvailable -- ^ available+    | LSCancelled -- ^ cancelled+    | LSPending   -- ^ pending+    | LSSold      -- ^ sold+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable ListingState++instance FromText ListingState where+    parser = takeLowerText >>= \case+        "available" -> pure LSAvailable+        "cancelled" -> pure LSCancelled+        "pending"   -> pure LSPending+        "sold"      -> pure LSSold+        e           -> fail $+            "Failure parsing ListingState from " ++ show e++instance ToText ListingState where+    toText = \case+        LSAvailable -> "available"+        LSCancelled -> "cancelled"+        LSPending   -> "pending"+        LSSold      -> "sold"++instance ToByteString ListingState+instance ToHeader     ListingState+instance ToQuery      ListingState++instance FromXML ListingState where+    parseXML = parseXMLText "ListingState"++data SpotPrice = SpotPrice+    { _spAvailabilityZone   :: Maybe Text+    , _spInstanceType       :: Maybe InstanceType+    , _spProductDescription :: Maybe RIProductDescription+    , _spSpotPrice          :: Maybe Text+    , _spTimestamp          :: Maybe ISO8601+    } deriving (Eq, Read, Show)++-- | 'SpotPrice' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'spAvailabilityZone' @::@ 'Maybe' 'Text'+--+-- * 'spInstanceType' @::@ 'Maybe' 'InstanceType'+--+-- * 'spProductDescription' @::@ 'Maybe' 'RIProductDescription'+--+-- * 'spSpotPrice' @::@ 'Maybe' 'Text'+--+-- * 'spTimestamp' @::@ 'Maybe' 'UTCTime'+--+spotPrice :: SpotPrice+spotPrice = SpotPrice+    { _spInstanceType       = Nothing+    , _spProductDescription = Nothing+    , _spSpotPrice          = Nothing+    , _spTimestamp          = Nothing+    , _spAvailabilityZone   = Nothing+    }++-- | The Availability Zone.+spAvailabilityZone :: Lens' SpotPrice (Maybe Text)+spAvailabilityZone =+    lens _spAvailabilityZone (\s a -> s { _spAvailabilityZone = a })++-- | The instance type.+spInstanceType :: Lens' SpotPrice (Maybe InstanceType)+spInstanceType = lens _spInstanceType (\s a -> s { _spInstanceType = a })++-- | A general description of the AMI.+spProductDescription :: Lens' SpotPrice (Maybe RIProductDescription)+spProductDescription =+    lens _spProductDescription (\s a -> s { _spProductDescription = a })++-- | The maximum price (bid) that you are willing to pay for a Spot Instance.+spSpotPrice :: Lens' SpotPrice (Maybe Text)+spSpotPrice = lens _spSpotPrice (\s a -> s { _spSpotPrice = a })++-- | The date and time the request was created, in UTC format (for example, /YYYY/-/MM/+-- -/DD/T/HH/:/MM/:/SS/Z).+spTimestamp :: Lens' SpotPrice (Maybe UTCTime)+spTimestamp = lens _spTimestamp (\s a -> s { _spTimestamp = a }) . mapping _Time++instance FromXML SpotPrice where+    parseXML x = SpotPrice+        <$> x .@? "availabilityZone"+        <*> x .@? "instanceType"+        <*> x .@? "productDescription"+        <*> x .@? "spotPrice"+        <*> x .@? "timestamp"++instance ToQuery SpotPrice where+    toQuery SpotPrice{..} = mconcat+        [ "AvailabilityZone"   =? _spAvailabilityZone+        , "InstanceType"       =? _spInstanceType+        , "ProductDescription" =? _spProductDescription+        , "SpotPrice"          =? _spSpotPrice+        , "Timestamp"          =? _spTimestamp+        ]++data ActiveInstance = ActiveInstance+    { _aiInstanceId            :: Maybe Text+    , _aiInstanceType          :: Maybe Text+    , _aiSpotInstanceRequestId :: Maybe Text+    } deriving (Eq, Ord, Read, Show)++-- | 'ActiveInstance' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'aiInstanceId' @::@ 'Maybe' 'Text'+--+-- * 'aiInstanceType' @::@ 'Maybe' 'Text'+--+-- * 'aiSpotInstanceRequestId' @::@ 'Maybe' 'Text'+--+activeInstance :: ActiveInstance+activeInstance = ActiveInstance+    { _aiInstanceType          = Nothing+    , _aiInstanceId            = Nothing+    , _aiSpotInstanceRequestId = Nothing+    }++-- | The ID of the instance.+aiInstanceId :: Lens' ActiveInstance (Maybe Text)+aiInstanceId = lens _aiInstanceId (\s a -> s { _aiInstanceId = a })++-- | The instance type.+aiInstanceType :: Lens' ActiveInstance (Maybe Text)+aiInstanceType = lens _aiInstanceType (\s a -> s { _aiInstanceType = a })++-- | The ID of the Spot Instance request.+aiSpotInstanceRequestId :: Lens' ActiveInstance (Maybe Text)+aiSpotInstanceRequestId =+    lens _aiSpotInstanceRequestId (\s a -> s { _aiSpotInstanceRequestId = a })++instance FromXML ActiveInstance where+    parseXML x = ActiveInstance+        <$> x .@? "instanceId"+        <*> x .@? "instanceType"+        <*> x .@? "spotInstanceRequestId"++instance ToQuery ActiveInstance where+    toQuery ActiveInstance{..} = mconcat+        [ "InstanceId"            =? _aiInstanceId+        , "InstanceType"          =? _aiInstanceType+        , "SpotInstanceRequestId" =? _aiSpotInstanceRequestId+        ]++data SpotFleetRequestConfigData = SpotFleetRequestConfigData+    { _sfrcdClientToken                      :: Maybe Text+    , _sfrcdIamFleetRole                     :: Text+    , _sfrcdLaunchSpecifications             :: List1 "item" LaunchSpecification+    , _sfrcdSpotPrice                        :: Text+    , _sfrcdTargetCapacity                   :: Int+    , _sfrcdTerminateInstancesWithExpiration :: Maybe Bool+    , _sfrcdValidFrom                        :: Maybe ISO8601+    , _sfrcdValidUntil                       :: Maybe ISO8601+    } deriving (Eq, Read, Show)++-- | 'SpotFleetRequestConfigData' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'sfrcdClientToken' @::@ 'Maybe' 'Text'+--+-- * 'sfrcdIamFleetRole' @::@ 'Text'+--+-- * 'sfrcdLaunchSpecifications' @::@ 'NonEmpty' 'LaunchSpecification'+--+-- * 'sfrcdSpotPrice' @::@ 'Text'+--+-- * 'sfrcdTargetCapacity' @::@ 'Int'+--+-- * 'sfrcdTerminateInstancesWithExpiration' @::@ 'Maybe' 'Bool'+--+-- * 'sfrcdValidFrom' @::@ 'Maybe' 'UTCTime'+--+-- * 'sfrcdValidUntil' @::@ 'Maybe' 'UTCTime'+--+spotFleetRequestConfigData :: Text -- ^ 'sfrcdSpotPrice'+                           -> Int -- ^ 'sfrcdTargetCapacity'+                           -> Text -- ^ 'sfrcdIamFleetRole'+                           -> NonEmpty LaunchSpecification -- ^ 'sfrcdLaunchSpecifications'+                           -> SpotFleetRequestConfigData+spotFleetRequestConfigData p1 p2 p3 p4 = SpotFleetRequestConfigData+    { _sfrcdSpotPrice                        = p1+    , _sfrcdTargetCapacity                   = p2+    , _sfrcdIamFleetRole                     = p3+    , _sfrcdLaunchSpecifications             = withIso _List1 (const id) p4+    , _sfrcdClientToken                      = Nothing+    , _sfrcdValidFrom                        = Nothing+    , _sfrcdValidUntil                       = Nothing+    , _sfrcdTerminateInstancesWithExpiration = Nothing+    }++-- | A unique, case-sensitive identifier you provide to ensure idempotency of your+-- listings. This helps avoid duplicate listings. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html Ensuring Idempotency>.+sfrcdClientToken :: Lens' SpotFleetRequestConfigData (Maybe Text)+sfrcdClientToken = lens _sfrcdClientToken (\s a -> s { _sfrcdClientToken = a })++-- | Grants the Spot fleet service permission to terminate instances on your+-- behalf when you cancel a Spot fleet request using 'CancelSpotFleetRequests' or+-- when the Spot fleet request expires, if you set 'terminateInstancesWithExpiration'.+sfrcdIamFleetRole :: Lens' SpotFleetRequestConfigData Text+sfrcdIamFleetRole =+    lens _sfrcdIamFleetRole (\s a -> s { _sfrcdIamFleetRole = a })++-- | Information about the launch specifications for the instances.+sfrcdLaunchSpecifications :: Lens' SpotFleetRequestConfigData (NonEmpty LaunchSpecification)+sfrcdLaunchSpecifications =+    lens _sfrcdLaunchSpecifications+        (\s a -> s { _sfrcdLaunchSpecifications = a })+            . _List1++-- | The maximum hourly price (bid) for any Spot Instance launched to fulfill the+-- request.+sfrcdSpotPrice :: Lens' SpotFleetRequestConfigData Text+sfrcdSpotPrice = lens _sfrcdSpotPrice (\s a -> s { _sfrcdSpotPrice = a })++-- | The maximum number of Spot Instances to launch.+sfrcdTargetCapacity :: Lens' SpotFleetRequestConfigData Int+sfrcdTargetCapacity =+    lens _sfrcdTargetCapacity (\s a -> s { _sfrcdTargetCapacity = a })++-- | Indicates whether running instances should be terminated when the Spot fleet+-- request expires.+sfrcdTerminateInstancesWithExpiration :: Lens' SpotFleetRequestConfigData (Maybe Bool)+sfrcdTerminateInstancesWithExpiration =+    lens _sfrcdTerminateInstancesWithExpiration+        (\s a -> s { _sfrcdTerminateInstancesWithExpiration = a })++-- | The start date and time of the request, in UTC format (for example, /YYYY/-/MM/-/DD/+-- T/HH/:/MM/:/SS/Z). The default is to start fulfilling the request immediately.+sfrcdValidFrom :: Lens' SpotFleetRequestConfigData (Maybe UTCTime)+sfrcdValidFrom = lens _sfrcdValidFrom (\s a -> s { _sfrcdValidFrom = a }) . mapping _Time++-- | The end date and time of the request, in UTC format (for example, /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z). At this point, no new Spot Instance requests are placed or enabled+-- to fulfill the request.+sfrcdValidUntil :: Lens' SpotFleetRequestConfigData (Maybe UTCTime)+sfrcdValidUntil = lens _sfrcdValidUntil (\s a -> s { _sfrcdValidUntil = a }) . mapping _Time++instance FromXML SpotFleetRequestConfigData where+    parseXML x = SpotFleetRequestConfigData+        <$> x .@? "clientToken"+        <*> x .@  "iamFleetRole"+        <*> x .@  "launchSpecifications"+        <*> x .@  "spotPrice"+        <*> x .@  "targetCapacity"+        <*> x .@? "terminateInstancesWithExpiration"+        <*> x .@? "validFrom"+        <*> x .@? "validUntil"++instance ToQuery SpotFleetRequestConfigData where+    toQuery SpotFleetRequestConfigData{..} = mconcat+        [ "ClientToken"                      =? _sfrcdClientToken+        , "IamFleetRole"                     =? _sfrcdIamFleetRole+        , "LaunchSpecifications"             =? _sfrcdLaunchSpecifications+        , "SpotPrice"                        =? _sfrcdSpotPrice+        , "TargetCapacity"                   =? _sfrcdTargetCapacity+        , "TerminateInstancesWithExpiration" =? _sfrcdTerminateInstancesWithExpiration+        , "ValidFrom"                        =? _sfrcdValidFrom+        , "ValidUntil"                       =? _sfrcdValidUntil+        ]++data InstanceMonitoring = InstanceMonitoring+    { _imInstanceId :: Maybe Text+    , _imMonitoring :: Maybe Monitoring+    } deriving (Eq, Read, Show)++-- | 'InstanceMonitoring' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'imInstanceId' @::@ 'Maybe' 'Text'+--+-- * 'imMonitoring' @::@ 'Maybe' 'Monitoring'+--+instanceMonitoring :: InstanceMonitoring+instanceMonitoring = InstanceMonitoring+    { _imInstanceId = Nothing+    , _imMonitoring = Nothing+    }++-- | The ID of the instance.+imInstanceId :: Lens' InstanceMonitoring (Maybe Text)+imInstanceId = lens _imInstanceId (\s a -> s { _imInstanceId = a })++-- | The monitoring information.+imMonitoring :: Lens' InstanceMonitoring (Maybe Monitoring)+imMonitoring = lens _imMonitoring (\s a -> s { _imMonitoring = a })++instance FromXML InstanceMonitoring where+    parseXML x = InstanceMonitoring+        <$> x .@? "instanceId"+        <*> x .@? "monitoring"++instance ToQuery InstanceMonitoring where+    toQuery InstanceMonitoring{..} = mconcat+        [ "InstanceId" =? _imInstanceId+        , "Monitoring" =? _imMonitoring+        ]++data PriceScheduleSpecification = PriceScheduleSpecification+    { _pssCurrencyCode :: Maybe CurrencyCodeValues+    , _pssPrice        :: Maybe Double+    , _pssTerm         :: Maybe Integer+    } deriving (Eq, Read, Show)++-- | 'PriceScheduleSpecification' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'pssCurrencyCode' @::@ 'Maybe' 'CurrencyCodeValues'+--+-- * 'pssPrice' @::@ 'Maybe' 'Double'+--+-- * 'pssTerm' @::@ 'Maybe' 'Integer'+--+priceScheduleSpecification :: PriceScheduleSpecification+priceScheduleSpecification = PriceScheduleSpecification+    { _pssTerm         = Nothing+    , _pssPrice        = Nothing+    , _pssCurrencyCode = Nothing+    }++-- | The currency for transacting the Reserved Instance resale. At this time, the+-- only supported currency is 'USD'.+pssCurrencyCode :: Lens' PriceScheduleSpecification (Maybe CurrencyCodeValues)+pssCurrencyCode = lens _pssCurrencyCode (\s a -> s { _pssCurrencyCode = a })++-- | The fixed price for the term.+pssPrice :: Lens' PriceScheduleSpecification (Maybe Double)+pssPrice = lens _pssPrice (\s a -> s { _pssPrice = a })++-- | The number of months remaining in the reservation. For example, 2 is the+-- second to the last month before the capacity reservation expires.+pssTerm :: Lens' PriceScheduleSpecification (Maybe Integer)+pssTerm = lens _pssTerm (\s a -> s { _pssTerm = a })++instance FromXML PriceScheduleSpecification where+    parseXML x = PriceScheduleSpecification+        <$> x .@? "currencyCode"+        <*> x .@? "price"+        <*> x .@? "term"++instance ToQuery PriceScheduleSpecification where+    toQuery PriceScheduleSpecification{..} = mconcat+        [ "CurrencyCode" =? _pssCurrencyCode+        , "Price"        =? _pssPrice+        , "Term"         =? _pssTerm+        ]++data SpotFleetRequestConfig = SpotFleetRequestConfig+    { _sfrcSpotFleetRequestConfig :: SpotFleetRequestConfigData+    , _sfrcSpotFleetRequestId     :: Text+    , _sfrcSpotFleetRequestState  :: BatchState+    } deriving (Eq, Read, Show)++-- | 'SpotFleetRequestConfig' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'sfrcSpotFleetRequestConfig' @::@ 'SpotFleetRequestConfigData'+--+-- * 'sfrcSpotFleetRequestId' @::@ 'Text'+--+-- * 'sfrcSpotFleetRequestState' @::@ 'BatchState'+--+spotFleetRequestConfig :: Text -- ^ 'sfrcSpotFleetRequestId'+                       -> BatchState -- ^ 'sfrcSpotFleetRequestState'+                       -> SpotFleetRequestConfigData -- ^ 'sfrcSpotFleetRequestConfig'+                       -> SpotFleetRequestConfig+spotFleetRequestConfig p1 p2 p3 = SpotFleetRequestConfig+    { _sfrcSpotFleetRequestId     = p1+    , _sfrcSpotFleetRequestState  = p2+    , _sfrcSpotFleetRequestConfig = p3+    }++-- | Information about the configuration of the Spot fleet request.+sfrcSpotFleetRequestConfig :: Lens' SpotFleetRequestConfig SpotFleetRequestConfigData+sfrcSpotFleetRequestConfig =+    lens _sfrcSpotFleetRequestConfig+        (\s a -> s { _sfrcSpotFleetRequestConfig = a })++-- | The ID of the Spot fleet request.+sfrcSpotFleetRequestId :: Lens' SpotFleetRequestConfig Text+sfrcSpotFleetRequestId =+    lens _sfrcSpotFleetRequestId (\s a -> s { _sfrcSpotFleetRequestId = a })++-- | The state of the Spot fleet request.+sfrcSpotFleetRequestState :: Lens' SpotFleetRequestConfig BatchState+sfrcSpotFleetRequestState =+    lens _sfrcSpotFleetRequestState+        (\s a -> s { _sfrcSpotFleetRequestState = a })++instance FromXML SpotFleetRequestConfig where+    parseXML x = SpotFleetRequestConfig+        <$> x .@  "spotFleetRequestConfig"+        <*> x .@  "spotFleetRequestId"+        <*> x .@  "spotFleetRequestState"++instance ToQuery SpotFleetRequestConfig where+    toQuery SpotFleetRequestConfig{..} = mconcat+        [ "SpotFleetRequestConfig" =? _sfrcSpotFleetRequestConfig+        , "SpotFleetRequestId"     =? _sfrcSpotFleetRequestId+        , "SpotFleetRequestState"  =? _sfrcSpotFleetRequestState+        ]++data SpotInstanceStatus = SpotInstanceStatus+    { _sisCode       :: Maybe Text+    , _sisMessage    :: Maybe Text+    , _sisUpdateTime :: Maybe ISO8601+    } deriving (Eq, Ord, Read, Show)++-- | 'SpotInstanceStatus' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'sisCode' @::@ 'Maybe' 'Text'+--+-- * 'sisMessage' @::@ 'Maybe' 'Text'+--+-- * 'sisUpdateTime' @::@ 'Maybe' 'UTCTime'+--+spotInstanceStatus :: SpotInstanceStatus+spotInstanceStatus = SpotInstanceStatus+    { _sisCode       = Nothing+    , _sisUpdateTime = Nothing+    , _sisMessage    = Nothing+    }++-- | The status code.+sisCode :: Lens' SpotInstanceStatus (Maybe Text)+sisCode = lens _sisCode (\s a -> s { _sisCode = a })++-- | The description for the status code.+sisMessage :: Lens' SpotInstanceStatus (Maybe Text)+sisMessage = lens _sisMessage (\s a -> s { _sisMessage = a })++-- | The date and time of the most recent status update, in UTC format (for+-- example, /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z).+sisUpdateTime :: Lens' SpotInstanceStatus (Maybe UTCTime)+sisUpdateTime = lens _sisUpdateTime (\s a -> s { _sisUpdateTime = a }) . mapping _Time++instance FromXML SpotInstanceStatus where+    parseXML x = SpotInstanceStatus+        <$> x .@? "code"+        <*> x .@? "message"+        <*> x .@? "updateTime"++instance ToQuery SpotInstanceStatus where+    toQuery SpotInstanceStatus{..} = mconcat+        [ "Code"       =? _sisCode+        , "Message"    =? _sisMessage+        , "UpdateTime" =? _sisUpdateTime+        ]++data SnapshotTaskDetail = SnapshotTaskDetail+    { _stdDescription   :: Maybe Text+    , _stdDiskImageSize :: Maybe Double+    , _stdFormat        :: Maybe Text+    , _stdProgress      :: Maybe Text+    , _stdSnapshotId    :: Maybe Text+    , _stdStatus        :: Maybe Text+    , _stdStatusMessage :: Maybe Text+    , _stdUrl           :: Maybe Text+    , _stdUserBucket    :: Maybe UserBucketDetails+    } deriving (Eq, Read, Show)++-- | 'SnapshotTaskDetail' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'stdDescription' @::@ 'Maybe' 'Text'+--+-- * 'stdDiskImageSize' @::@ 'Maybe' 'Double'+--+-- * 'stdFormat' @::@ 'Maybe' 'Text'+--+-- * 'stdProgress' @::@ 'Maybe' 'Text'+--+-- * 'stdSnapshotId' @::@ 'Maybe' 'Text'+--+-- * 'stdStatus' @::@ 'Maybe' 'Text'+--+-- * 'stdStatusMessage' @::@ 'Maybe' 'Text'+--+-- * 'stdUrl' @::@ 'Maybe' 'Text'+--+-- * 'stdUserBucket' @::@ 'Maybe' 'UserBucketDetails'+--+snapshotTaskDetail :: SnapshotTaskDetail+snapshotTaskDetail = SnapshotTaskDetail+    { _stdDiskImageSize = Nothing+    , _stdDescription   = Nothing+    , _stdFormat        = Nothing+    , _stdUrl           = Nothing+    , _stdUserBucket    = Nothing+    , _stdSnapshotId    = Nothing+    , _stdProgress      = Nothing+    , _stdStatusMessage = Nothing+    , _stdStatus        = Nothing+    }++-- | The description of the snapshot.+stdDescription :: Lens' SnapshotTaskDetail (Maybe Text)+stdDescription = lens _stdDescription (\s a -> s { _stdDescription = a })++-- | The size of the disk in the snapshot, in GiB.+stdDiskImageSize :: Lens' SnapshotTaskDetail (Maybe Double)+stdDiskImageSize = lens _stdDiskImageSize (\s a -> s { _stdDiskImageSize = a })++-- | The format of the disk image from which the snapshot is created.+stdFormat :: Lens' SnapshotTaskDetail (Maybe Text)+stdFormat = lens _stdFormat (\s a -> s { _stdFormat = a })++-- | The percentage of completion for the import snapshot task.+stdProgress :: Lens' SnapshotTaskDetail (Maybe Text)+stdProgress = lens _stdProgress (\s a -> s { _stdProgress = a })++-- | The snapshot ID of the disk being imported.+stdSnapshotId :: Lens' SnapshotTaskDetail (Maybe Text)+stdSnapshotId = lens _stdSnapshotId (\s a -> s { _stdSnapshotId = a })++-- | A brief status for the import snapshot task.+stdStatus :: Lens' SnapshotTaskDetail (Maybe Text)+stdStatus = lens _stdStatus (\s a -> s { _stdStatus = a })++-- | A detailed status message for the import snapshot task.+stdStatusMessage :: Lens' SnapshotTaskDetail (Maybe Text)+stdStatusMessage = lens _stdStatusMessage (\s a -> s { _stdStatusMessage = a })++-- | The URL of the disk image from which the snapshot is created.+stdUrl :: Lens' SnapshotTaskDetail (Maybe Text)+stdUrl = lens _stdUrl (\s a -> s { _stdUrl = a })++-- | The S3 bucket for the disk image.+stdUserBucket :: Lens' SnapshotTaskDetail (Maybe UserBucketDetails)+stdUserBucket = lens _stdUserBucket (\s a -> s { _stdUserBucket = a })++instance FromXML SnapshotTaskDetail where+    parseXML x = SnapshotTaskDetail+        <$> x .@? "description"+        <*> x .@? "diskImageSize"+        <*> x .@? "format"+        <*> x .@? "progress"+        <*> x .@? "snapshotId"+        <*> x .@? "status"+        <*> x .@? "statusMessage"+        <*> x .@? "url"+        <*> x .@? "userBucket"++instance ToQuery SnapshotTaskDetail where+    toQuery SnapshotTaskDetail{..} = mconcat+        [ "Description"   =? _stdDescription+        , "DiskImageSize" =? _stdDiskImageSize+        , "Format"        =? _stdFormat+        , "Progress"      =? _stdProgress+        , "SnapshotId"    =? _stdSnapshotId+        , "Status"        =? _stdStatus+        , "StatusMessage" =? _stdStatusMessage+        , "Url"           =? _stdUrl+        , "UserBucket"    =? _stdUserBucket+        ]++data AvailabilityZoneState+    = AZSAvailable -- ^ available+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable AvailabilityZoneState++instance FromText AvailabilityZoneState where+    parser = takeLowerText >>= \case+        "available" -> pure AZSAvailable+        e           -> fail $+            "Failure parsing AvailabilityZoneState from " ++ show e++instance ToText AvailabilityZoneState where+    toText AZSAvailable = "available"++instance ToByteString AvailabilityZoneState+instance ToHeader     AvailabilityZoneState+instance ToQuery      AvailabilityZoneState++instance FromXML AvailabilityZoneState where+    parseXML = parseXMLText "AvailabilityZoneState"++data SpotInstanceRequest = SpotInstanceRequest+    { _siAvailabilityZoneGroup    :: Maybe Text+    , _siCreateTime               :: Maybe ISO8601+    , _siFault                    :: Maybe SpotInstanceStateFault+    , _siInstanceId               :: Maybe Text+    , _siLaunchGroup              :: Maybe Text+    , _siLaunchSpecification      :: Maybe LaunchSpecification+    , _siLaunchedAvailabilityZone :: Maybe Text+    , _siProductDescription       :: Maybe RIProductDescription+    , _siSpotInstanceRequestId    :: Maybe Text+    , _siSpotPrice                :: Maybe Text+    , _siState                    :: Maybe SpotInstanceState+    , _siStatus                   :: Maybe SpotInstanceStatus+    , _siTags                     :: List "item" Tag+    , _siType                     :: Maybe SpotInstanceType+    , _siValidFrom                :: Maybe ISO8601+    , _siValidUntil               :: Maybe ISO8601+    } deriving (Eq, Read, Show)++-- | 'SpotInstanceRequest' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'siAvailabilityZoneGroup' @::@ 'Maybe' 'Text'+--+-- * 'siCreateTime' @::@ 'Maybe' 'UTCTime'+--+-- * 'siFault' @::@ 'Maybe' 'SpotInstanceStateFault'+--+-- * 'siInstanceId' @::@ 'Maybe' 'Text'+--+-- * 'siLaunchGroup' @::@ 'Maybe' 'Text'+--+-- * 'siLaunchSpecification' @::@ 'Maybe' 'LaunchSpecification'+--+-- * 'siLaunchedAvailabilityZone' @::@ 'Maybe' 'Text'+--+-- * 'siProductDescription' @::@ 'Maybe' 'RIProductDescription'+--+-- * 'siSpotInstanceRequestId' @::@ 'Maybe' 'Text'+--+-- * 'siSpotPrice' @::@ 'Maybe' 'Text'+--+-- * 'siState' @::@ 'Maybe' 'SpotInstanceState'+--+-- * 'siStatus' @::@ 'Maybe' 'SpotInstanceStatus'+--+-- * 'siTags' @::@ ['Tag']+--+-- * 'siType' @::@ 'Maybe' 'SpotInstanceType'+--+-- * 'siValidFrom' @::@ 'Maybe' 'UTCTime'+--+-- * 'siValidUntil' @::@ 'Maybe' 'UTCTime'+--+spotInstanceRequest :: SpotInstanceRequest+spotInstanceRequest = SpotInstanceRequest+    { _siSpotInstanceRequestId    = Nothing+    , _siSpotPrice                = Nothing+    , _siType                     = Nothing+    , _siState                    = Nothing+    , _siFault                    = Nothing+    , _siStatus                   = Nothing+    , _siValidFrom                = Nothing+    , _siValidUntil               = Nothing+    , _siLaunchGroup              = Nothing+    , _siAvailabilityZoneGroup    = Nothing+    , _siLaunchSpecification      = Nothing+    , _siInstanceId               = Nothing+    , _siCreateTime               = Nothing+    , _siProductDescription       = Nothing+    , _siTags                     = mempty+    , _siLaunchedAvailabilityZone = Nothing+    }++-- | The Availability Zone group. If you specify the same Availability Zone group+-- for all Spot Instance requests, all Spot Instances are launched in the same+-- Availability Zone.+siAvailabilityZoneGroup :: Lens' SpotInstanceRequest (Maybe Text)+siAvailabilityZoneGroup =+    lens _siAvailabilityZoneGroup (\s a -> s { _siAvailabilityZoneGroup = a })++-- | The date and time when the Spot Instance request was created, in UTC format+-- (for example, /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z).+siCreateTime :: Lens' SpotInstanceRequest (Maybe UTCTime)+siCreateTime = lens _siCreateTime (\s a -> s { _siCreateTime = a }) . mapping _Time++-- | The fault codes for the Spot Instance request, if any.+siFault :: Lens' SpotInstanceRequest (Maybe SpotInstanceStateFault)+siFault = lens _siFault (\s a -> s { _siFault = a })++-- | The instance ID, if an instance has been launched to fulfill the Spot+-- Instance request.+siInstanceId :: Lens' SpotInstanceRequest (Maybe Text)+siInstanceId = lens _siInstanceId (\s a -> s { _siInstanceId = a })++-- | The instance launch group. Launch groups are Spot Instances that launch+-- together and terminate together.+siLaunchGroup :: Lens' SpotInstanceRequest (Maybe Text)+siLaunchGroup = lens _siLaunchGroup (\s a -> s { _siLaunchGroup = a })++-- | Additional information for launching instances.+siLaunchSpecification :: Lens' SpotInstanceRequest (Maybe LaunchSpecification)+siLaunchSpecification =+    lens _siLaunchSpecification (\s a -> s { _siLaunchSpecification = a })++-- | The Availability Zone in which the bid is launched.+siLaunchedAvailabilityZone :: Lens' SpotInstanceRequest (Maybe Text)+siLaunchedAvailabilityZone =+    lens _siLaunchedAvailabilityZone+        (\s a -> s { _siLaunchedAvailabilityZone = a })++-- | The product description associated with the Spot Instance.+siProductDescription :: Lens' SpotInstanceRequest (Maybe RIProductDescription)+siProductDescription =+    lens _siProductDescription (\s a -> s { _siProductDescription = a })++-- | The ID of the Spot Instance request.+siSpotInstanceRequestId :: Lens' SpotInstanceRequest (Maybe Text)+siSpotInstanceRequestId =+    lens _siSpotInstanceRequestId (\s a -> s { _siSpotInstanceRequestId = a })++-- | The maximum hourly price (bid) for any Spot Instance launched to fulfill the+-- request.+siSpotPrice :: Lens' SpotInstanceRequest (Maybe Text)+siSpotPrice = lens _siSpotPrice (\s a -> s { _siSpotPrice = a })++-- | The state of the Spot Instance request. Spot bid status information can help+-- you track your Spot Instance requests. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-bid-status.html Spot BidStatus> in the /Amazon Elastic Compute Cloud User Guide/.+siState :: Lens' SpotInstanceRequest (Maybe SpotInstanceState)+siState = lens _siState (\s a -> s { _siState = a })++-- | The status code and status message describing the Spot Instance request.+siStatus :: Lens' SpotInstanceRequest (Maybe SpotInstanceStatus)+siStatus = lens _siStatus (\s a -> s { _siStatus = a })++-- | Any tags assigned to the resource.+siTags :: Lens' SpotInstanceRequest [Tag]+siTags = lens _siTags (\s a -> s { _siTags = a }) . _List++-- | The Spot Instance request type.+siType :: Lens' SpotInstanceRequest (Maybe SpotInstanceType)+siType = lens _siType (\s a -> s { _siType = a })++-- | The start date of the request, in UTC format (for example, /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/+-- Z). If this is a one-time request, the request becomes active at this date+-- and time and remains active until all instances launch, the request expires,+-- or the request is canceled. If the request is persistent, the request becomes+-- active at this date and time and remains active until it expires or is+-- canceled.+siValidFrom :: Lens' SpotInstanceRequest (Maybe UTCTime)+siValidFrom = lens _siValidFrom (\s a -> s { _siValidFrom = a }) . mapping _Time++-- | The end date of the request, in UTC format (for example, /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z). If this is a one-time request, the request remains active until all instances launch, the request is canceled, or this date is reached. If the request is persistent, it remains active until it is canceled or this date is reached.+siValidUntil :: Lens' SpotInstanceRequest (Maybe UTCTime)+siValidUntil = lens _siValidUntil (\s a -> s { _siValidUntil = a }) . mapping _Time++instance FromXML SpotInstanceRequest where+    parseXML x = SpotInstanceRequest+        <$> x .@? "availabilityZoneGroup"+        <*> x .@? "createTime"+        <*> x .@? "fault"+        <*> x .@? "instanceId"+        <*> x .@? "launchGroup"+        <*> x .@? "launchSpecification"+        <*> x .@? "launchedAvailabilityZone"+        <*> x .@? "productDescription"+        <*> x .@? "spotInstanceRequestId"+        <*> x .@? "spotPrice"+        <*> x .@? "state"+        <*> x .@? "status"+        <*> x .@? "tagSet" .!@ mempty+        <*> x .@? "type"+        <*> x .@? "validFrom"+        <*> x .@? "validUntil"++instance ToQuery SpotInstanceRequest where+    toQuery SpotInstanceRequest{..} = mconcat+        [ "AvailabilityZoneGroup"    =? _siAvailabilityZoneGroup+        , "CreateTime"               =? _siCreateTime+        , "Fault"                    =? _siFault+        , "InstanceId"               =? _siInstanceId+        , "LaunchGroup"              =? _siLaunchGroup+        , "LaunchSpecification"      =? _siLaunchSpecification+        , "LaunchedAvailabilityZone" =? _siLaunchedAvailabilityZone+        , "ProductDescription"       =? _siProductDescription+        , "SpotInstanceRequestId"    =? _siSpotInstanceRequestId+        , "SpotPrice"                =? _siSpotPrice+        , "State"                    =? _siState+        , "Status"                   =? _siStatus+        , "TagSet"                   `toQueryList` _siTags+        , "Type"                     =? _siType+        , "ValidFrom"                =? _siValidFrom+        , "ValidUntil"               =? _siValidUntil+        ]++data LaunchSpecification = LaunchSpecification+    { _lsAddressingType      :: Maybe Text+    , _lsBlockDeviceMappings :: List "item" BlockDeviceMapping+    , _lsEbsOptimized        :: Maybe Bool+    , _lsIamInstanceProfile  :: Maybe IamInstanceProfileSpecification+    , _lsImageId             :: Maybe Text+    , _lsInstanceType        :: Maybe InstanceType+    , _lsKernelId            :: Maybe Text+    , _lsKeyName             :: Maybe Text+    , _lsMonitoring          :: Maybe RunInstancesMonitoringEnabled+    , _lsNetworkInterfaces   :: List "item" InstanceNetworkInterfaceSpecification+    , _lsPlacement           :: Maybe SpotPlacement+    , _lsRamdiskId           :: Maybe Text+    , _lsSecurityGroups      :: List "item" GroupIdentifier+    , _lsSubnetId            :: Maybe Text+    , _lsUserData            :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'LaunchSpecification' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lsAddressingType' @::@ 'Maybe' 'Text'+--+-- * 'lsBlockDeviceMappings' @::@ ['BlockDeviceMapping']+--+-- * 'lsEbsOptimized' @::@ 'Maybe' 'Bool'+--+-- * 'lsIamInstanceProfile' @::@ 'Maybe' 'IamInstanceProfileSpecification'+--+-- * 'lsImageId' @::@ 'Maybe' 'Text'+--+-- * 'lsInstanceType' @::@ 'Maybe' 'InstanceType'+--+-- * 'lsKernelId' @::@ 'Maybe' 'Text'+--+-- * 'lsKeyName' @::@ 'Maybe' 'Text'+--+-- * 'lsMonitoring' @::@ 'Maybe' 'RunInstancesMonitoringEnabled'+--+-- * 'lsNetworkInterfaces' @::@ ['InstanceNetworkInterfaceSpecification']+--+-- * 'lsPlacement' @::@ 'Maybe' 'SpotPlacement'+--+-- * 'lsRamdiskId' @::@ 'Maybe' 'Text'+--+-- * 'lsSecurityGroups' @::@ ['GroupIdentifier']+--+-- * 'lsSubnetId' @::@ 'Maybe' 'Text'+--+-- * 'lsUserData' @::@ 'Maybe' 'Text'+--+launchSpecification :: LaunchSpecification+launchSpecification = LaunchSpecification+    { _lsImageId             = Nothing+    , _lsKeyName             = Nothing+    , _lsSecurityGroups      = mempty+    , _lsUserData            = Nothing+    , _lsAddressingType      = Nothing+    , _lsInstanceType        = Nothing+    , _lsPlacement           = Nothing+    , _lsKernelId            = Nothing+    , _lsRamdiskId           = Nothing+    , _lsBlockDeviceMappings = mempty+    , _lsSubnetId            = Nothing+    , _lsNetworkInterfaces   = mempty+    , _lsIamInstanceProfile  = Nothing+    , _lsEbsOptimized        = Nothing+    , _lsMonitoring          = Nothing+    }++-- | Deprecated.+lsAddressingType :: Lens' LaunchSpecification (Maybe Text)+lsAddressingType = lens _lsAddressingType (\s a -> s { _lsAddressingType = a })++-- | One or more block device mapping entries.+lsBlockDeviceMappings :: Lens' LaunchSpecification [BlockDeviceMapping]+lsBlockDeviceMappings =+    lens _lsBlockDeviceMappings (\s a -> s { _lsBlockDeviceMappings = a })+        . _List++-- | Indicates whether the instance is optimized for EBS I/O. This optimization+-- provides dedicated throughput to Amazon EBS and an optimized configuration+-- stack to provide optimal EBS I/O performance. This optimization isn't+-- available with all instance types. Additional usage charges apply when using+-- an EBS Optimized instance.+--+-- Default: 'false'+lsEbsOptimized :: Lens' LaunchSpecification (Maybe Bool)+lsEbsOptimized = lens _lsEbsOptimized (\s a -> s { _lsEbsOptimized = a })++-- | The IAM instance profile.+lsIamInstanceProfile :: Lens' LaunchSpecification (Maybe IamInstanceProfileSpecification)+lsIamInstanceProfile =+    lens _lsIamInstanceProfile (\s a -> s { _lsIamInstanceProfile = a })++-- | The ID of the AMI.+lsImageId :: Lens' LaunchSpecification (Maybe Text)+lsImageId = lens _lsImageId (\s a -> s { _lsImageId = a })++-- | The instance type.+lsInstanceType :: Lens' LaunchSpecification (Maybe InstanceType)+lsInstanceType = lens _lsInstanceType (\s a -> s { _lsInstanceType = a })++-- | The ID of the kernel.+lsKernelId :: Lens' LaunchSpecification (Maybe Text)+lsKernelId = lens _lsKernelId (\s a -> s { _lsKernelId = a })++-- | The name of the key pair.+lsKeyName :: Lens' LaunchSpecification (Maybe Text)+lsKeyName = lens _lsKeyName (\s a -> s { _lsKeyName = a })++lsMonitoring :: Lens' LaunchSpecification (Maybe RunInstancesMonitoringEnabled)+lsMonitoring = lens _lsMonitoring (\s a -> s { _lsMonitoring = a })++-- | One or more network interfaces.+lsNetworkInterfaces :: Lens' LaunchSpecification [InstanceNetworkInterfaceSpecification]+lsNetworkInterfaces =+    lens _lsNetworkInterfaces (\s a -> s { _lsNetworkInterfaces = a })+        . _List++-- | The placement information for the instance.+lsPlacement :: Lens' LaunchSpecification (Maybe SpotPlacement)+lsPlacement = lens _lsPlacement (\s a -> s { _lsPlacement = a })++-- | The ID of the RAM disk.+lsRamdiskId :: Lens' LaunchSpecification (Maybe Text)+lsRamdiskId = lens _lsRamdiskId (\s a -> s { _lsRamdiskId = a })++-- | One or more security groups. To request an instance in a nondefault VPC, you+-- must specify the ID of the security group. To request an instance in+-- EC2-Classic or a default VPC, you can specify the name or the ID of the+-- security group.+lsSecurityGroups :: Lens' LaunchSpecification [GroupIdentifier]+lsSecurityGroups = lens _lsSecurityGroups (\s a -> s { _lsSecurityGroups = a }) . _List++-- | The ID of the subnet in which to launch the instance.+lsSubnetId :: Lens' LaunchSpecification (Maybe Text)+lsSubnetId = lens _lsSubnetId (\s a -> s { _lsSubnetId = a })++-- | The Base64-encoded MIME user data to make available to the instances.+lsUserData :: Lens' LaunchSpecification (Maybe Text)+lsUserData = lens _lsUserData (\s a -> s { _lsUserData = a })++instance FromXML LaunchSpecification where+    parseXML x = LaunchSpecification+        <$> x .@? "addressingType"+        <*> x .@? "blockDeviceMapping" .!@ mempty+        <*> x .@? "ebsOptimized"+        <*> x .@? "iamInstanceProfile"+        <*> x .@? "imageId"+        <*> x .@? "instanceType"+        <*> x .@? "kernelId"+        <*> x .@? "keyName"+        <*> x .@? "monitoring"+        <*> x .@? "networkInterfaceSet" .!@ mempty+        <*> x .@? "placement"+        <*> x .@? "ramdiskId"+        <*> x .@? "groupSet" .!@ mempty+        <*> x .@? "subnetId"+        <*> x .@? "userData"++instance ToQuery LaunchSpecification where+    toQuery LaunchSpecification{..} = mconcat+        [ "AddressingType"      =? _lsAddressingType+        , "BlockDeviceMapping"  `toQueryList` _lsBlockDeviceMappings+        , "EbsOptimized"        =? _lsEbsOptimized+        , "IamInstanceProfile"  =? _lsIamInstanceProfile+        , "ImageId"             =? _lsImageId+        , "InstanceType"        =? _lsInstanceType+        , "KernelId"            =? _lsKernelId+        , "KeyName"             =? _lsKeyName+        , "Monitoring"          =? _lsMonitoring+        , "NetworkInterfaceSet" `toQueryList` _lsNetworkInterfaces+        , "Placement"           =? _lsPlacement+        , "RamdiskId"           =? _lsRamdiskId+        , "GroupSet"            `toQueryList` _lsSecurityGroups+        , "SubnetId"            =? _lsSubnetId+        , "UserData"            =? _lsUserData+        ]++data VolumeStatusEvent = VolumeStatusEvent+    { _vseDescription :: Maybe Text+    , _vseEventId     :: Maybe Text+    , _vseEventType   :: Maybe Text+    , _vseNotAfter    :: Maybe ISO8601+    , _vseNotBefore   :: Maybe ISO8601+    } deriving (Eq, Ord, Read, Show)++-- | 'VolumeStatusEvent' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'vseDescription' @::@ 'Maybe' 'Text'+--+-- * 'vseEventId' @::@ 'Maybe' 'Text'+--+-- * 'vseEventType' @::@ 'Maybe' 'Text'+--+-- * 'vseNotAfter' @::@ 'Maybe' 'UTCTime'+--+-- * 'vseNotBefore' @::@ 'Maybe' 'UTCTime'+--+volumeStatusEvent :: VolumeStatusEvent+volumeStatusEvent = VolumeStatusEvent+    { _vseEventType   = Nothing+    , _vseDescription = Nothing+    , _vseNotBefore   = Nothing+    , _vseNotAfter    = Nothing+    , _vseEventId     = Nothing+    }++-- | A description of the event.+vseDescription :: Lens' VolumeStatusEvent (Maybe Text)+vseDescription = lens _vseDescription (\s a -> s { _vseDescription = a })++-- | The ID of this event.+vseEventId :: Lens' VolumeStatusEvent (Maybe Text)+vseEventId = lens _vseEventId (\s a -> s { _vseEventId = a })++-- | The type of this event.+vseEventType :: Lens' VolumeStatusEvent (Maybe Text)+vseEventType = lens _vseEventType (\s a -> s { _vseEventType = a })++-- | The latest end time of the event.+vseNotAfter :: Lens' VolumeStatusEvent (Maybe UTCTime)+vseNotAfter = lens _vseNotAfter (\s a -> s { _vseNotAfter = a }) . mapping _Time++-- | The earliest start time of the event.+vseNotBefore :: Lens' VolumeStatusEvent (Maybe UTCTime)+vseNotBefore = lens _vseNotBefore (\s a -> s { _vseNotBefore = a }) . mapping _Time++instance FromXML VolumeStatusEvent where+    parseXML x = VolumeStatusEvent+        <$> x .@? "description"+        <*> x .@? "eventId"+        <*> x .@? "eventType"+        <*> x .@? "notAfter"+        <*> x .@? "notBefore"++instance ToQuery VolumeStatusEvent where+    toQuery VolumeStatusEvent{..} = mconcat+        [ "Description" =? _vseDescription+        , "EventId"     =? _vseEventId+        , "EventType"   =? _vseEventType+        , "NotAfter"    =? _vseNotAfter+        , "NotBefore"   =? _vseNotBefore+        ]++data Volume = Volume+    { _vAttachments      :: List "item" VolumeAttachment+    , _vAvailabilityZone :: Text+    , _vCreateTime       :: ISO8601+    , _vEncrypted        :: Bool+    , _vIops             :: Maybe Int+    , _vKmsKeyId         :: Maybe Text+    , _vSize             :: Int+    , _vSnapshotId       :: Text+    , _vState            :: VolumeState+    , _vTags             :: List "item" Tag+    , _vVolumeId         :: Text+    , _vVolumeType       :: VolumeType+    } deriving (Eq, Read, Show)++-- | 'Volume' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'vAttachments' @::@ ['VolumeAttachment']+--+-- * 'vAvailabilityZone' @::@ 'Text'+--+-- * 'vCreateTime' @::@ 'UTCTime'+--+-- * 'vEncrypted' @::@ 'Bool'+--+-- * 'vIops' @::@ 'Maybe' 'Int'+--+-- * 'vKmsKeyId' @::@ 'Maybe' 'Text'+--+-- * 'vSize' @::@ 'Int'+--+-- * 'vSnapshotId' @::@ 'Text'+--+-- * 'vState' @::@ 'VolumeState'+--+-- * 'vTags' @::@ ['Tag']+--+-- * 'vVolumeId' @::@ 'Text'+--+-- * 'vVolumeType' @::@ 'VolumeType'+--+volume :: Text -- ^ 'vVolumeId'+       -> Int -- ^ 'vSize'+       -> Text -- ^ 'vSnapshotId'+       -> Text -- ^ 'vAvailabilityZone'+       -> VolumeState -- ^ 'vState'+       -> UTCTime -- ^ 'vCreateTime'+       -> VolumeType -- ^ 'vVolumeType'+       -> Bool -- ^ 'vEncrypted'+       -> Volume+volume p1 p2 p3 p4 p5 p6 p7 p8 = Volume+    { _vVolumeId         = p1+    , _vSize             = p2+    , _vSnapshotId       = p3+    , _vAvailabilityZone = p4+    , _vState            = p5+    , _vCreateTime       = withIso _Time (const id) p6+    , _vVolumeType       = p7+    , _vEncrypted        = p8+    , _vAttachments      = mempty+    , _vTags             = mempty+    , _vIops             = Nothing+    , _vKmsKeyId         = Nothing+    }++-- | Information about the volume attachments.+vAttachments :: Lens' Volume [VolumeAttachment]+vAttachments = lens _vAttachments (\s a -> s { _vAttachments = a }) . _List++-- | The Availability Zone for the volume.+vAvailabilityZone :: Lens' Volume Text+vAvailabilityZone =+    lens _vAvailabilityZone (\s a -> s { _vAvailabilityZone = a })++-- | The time stamp when volume creation was initiated.+vCreateTime :: Lens' Volume UTCTime+vCreateTime = lens _vCreateTime (\s a -> s { _vCreateTime = a }) . _Time++-- | Indicates whether the volume will be encrypted.+vEncrypted :: Lens' Volume Bool+vEncrypted = lens _vEncrypted (\s a -> s { _vEncrypted = a })++-- | The number of I/O operations per second (IOPS) that the volume supports. For+-- Provisioned IOPS (SSD) volumes, this represents the number of IOPS that are+-- provisioned for the volume. For General Purpose (SSD) volumes, this+-- represents the baseline performance of the volume and the rate at which the+-- volume accumulates I/O credits for bursting. For more information on General+-- Purpose (SSD) baseline performance, I/O credits, and bursting, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html Amazon EBSVolume Types> in the /Amazon Elastic Compute Cloud User Guide/.+--+-- Constraint: Range is 100 to 20000 for Provisioned IOPS (SSD) volumes and 3+-- to 10000 for General Purpose (SSD) volumes.+--+-- Condition: This parameter is required for requests to create 'io1' volumes; it+-- is not used in requests to create 'standard' or 'gp2' volumes.+vIops :: Lens' Volume (Maybe Int)+vIops = lens _vIops (\s a -> s { _vIops = a })++-- | The full ARN of the AWS Key Management Service (KMS) master key that was used+-- to protect the volume encryption key for the volume.+vKmsKeyId :: Lens' Volume (Maybe Text)+vKmsKeyId = lens _vKmsKeyId (\s a -> s { _vKmsKeyId = a })++-- | The size of the volume, in GiBs.+vSize :: Lens' Volume Int+vSize = lens _vSize (\s a -> s { _vSize = a })++-- | The snapshot from which the volume was created, if applicable.+vSnapshotId :: Lens' Volume Text+vSnapshotId = lens _vSnapshotId (\s a -> s { _vSnapshotId = a })++-- | The volume state.+vState :: Lens' Volume VolumeState+vState = lens _vState (\s a -> s { _vState = a })++-- | Any tags assigned to the volume.+vTags :: Lens' Volume [Tag]+vTags = lens _vTags (\s a -> s { _vTags = a }) . _List++-- | The ID of the volume.+vVolumeId :: Lens' Volume Text+vVolumeId = lens _vVolumeId (\s a -> s { _vVolumeId = a })++-- | The volume type. This can be 'gp2' for General Purpose (SSD) volumes, 'io1' for+-- Provisioned IOPS (SSD) volumes, or 'standard' for Magnetic volumes.+vVolumeType :: Lens' Volume VolumeType+vVolumeType = lens _vVolumeType (\s a -> s { _vVolumeType = a })++instance FromXML Volume where+    parseXML x = Volume+        <$> x .@? "attachmentSet" .!@ mempty+        <*> x .@  "availabilityZone"+        <*> x .@  "createTime"+        <*> x .@  "encrypted"+        <*> x .@? "iops"+        <*> x .@? "kmsKeyId"+        <*> x .@  "size"+        <*> x .@  "snapshotId"+        <*> x .@  "status"+        <*> x .@? "tagSet" .!@ mempty+        <*> x .@  "volumeId"+        <*> x .@  "volumeType"++instance ToQuery Volume where+    toQuery Volume{..} = mconcat+        [ "AttachmentSet"    `toQueryList` _vAttachments+        , "AvailabilityZone" =? _vAvailabilityZone+        , "CreateTime"       =? _vCreateTime+        , "Encrypted"        =? _vEncrypted+        , "Iops"             =? _vIops+        , "KmsKeyId"         =? _vKmsKeyId+        , "Size"             =? _vSize+        , "SnapshotId"       =? _vSnapshotId+        , "Status"           =? _vState+        , "TagSet"           `toQueryList` _vTags+        , "VolumeId"         =? _vVolumeId+        , "VolumeType"       =? _vVolumeType+        ]++data Reservation = Reservation+    { _rGroups        :: List "item" GroupIdentifier+    , _rInstances     :: List "item" Instance+    , _rOwnerId       :: Text+    , _rRequesterId   :: Maybe Text+    , _rReservationId :: Text+    } deriving (Eq, Read, Show)++-- | 'Reservation' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rGroups' @::@ ['GroupIdentifier']+--+-- * 'rInstances' @::@ ['Instance']+--+-- * 'rOwnerId' @::@ 'Text'+--+-- * 'rRequesterId' @::@ 'Maybe' 'Text'+--+-- * 'rReservationId' @::@ 'Text'+--+reservation :: Text -- ^ 'rReservationId'+            -> Text -- ^ 'rOwnerId'+            -> Reservation+reservation p1 p2 = Reservation+    { _rReservationId = p1+    , _rOwnerId       = p2+    , _rRequesterId   = Nothing+    , _rGroups        = mempty+    , _rInstances     = mempty+    }++-- | One or more security groups.+rGroups :: Lens' Reservation [GroupIdentifier]+rGroups = lens _rGroups (\s a -> s { _rGroups = a }) . _List++-- | One or more instances.+rInstances :: Lens' Reservation [Instance]+rInstances = lens _rInstances (\s a -> s { _rInstances = a }) . _List++-- | The ID of the AWS account that owns the reservation.+rOwnerId :: Lens' Reservation Text+rOwnerId = lens _rOwnerId (\s a -> s { _rOwnerId = a })++-- | The ID of the requester that launched the instances on your behalf (for+-- example, AWS Management Console or Auto Scaling).+rRequesterId :: Lens' Reservation (Maybe Text)+rRequesterId = lens _rRequesterId (\s a -> s { _rRequesterId = a })++-- | The ID of the reservation.+rReservationId :: Lens' Reservation Text+rReservationId = lens _rReservationId (\s a -> s { _rReservationId = a })++instance FromXML Reservation where+    parseXML x = Reservation+        <$> x .@? "groupSet" .!@ mempty+        <*> x .@? "instancesSet" .!@ mempty+        <*> x .@  "ownerId"+        <*> x .@? "requesterId"+        <*> x .@  "reservationId"++instance ToQuery Reservation where+    toQuery Reservation{..} = mconcat+        [ "GroupSet"      `toQueryList` _rGroups+        , "InstancesSet"  `toQueryList` _rInstances+        , "OwnerId"       =? _rOwnerId+        , "RequesterId"   =? _rRequesterId+        , "ReservationId" =? _rReservationId+        ]++data ImportInstanceVolumeDetailItem = ImportInstanceVolumeDetailItem+    { _iivdiAvailabilityZone :: Text+    , _iivdiBytesConverted   :: Integer+    , _iivdiDescription      :: Maybe Text+    , _iivdiImage            :: DiskImageDescription+    , _iivdiStatus           :: Text+    , _iivdiStatusMessage    :: Maybe Text+    , _iivdiVolume           :: DiskImageVolumeDescription+    } deriving (Eq, Read, Show)++-- | 'ImportInstanceVolumeDetailItem' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'iivdiAvailabilityZone' @::@ 'Text'+--+-- * 'iivdiBytesConverted' @::@ 'Integer'+--+-- * 'iivdiDescription' @::@ 'Maybe' 'Text'+--+-- * 'iivdiImage' @::@ 'DiskImageDescription'+--+-- * 'iivdiStatus' @::@ 'Text'+--+-- * 'iivdiStatusMessage' @::@ 'Maybe' 'Text'+--+-- * 'iivdiVolume' @::@ 'DiskImageVolumeDescription'+--+importInstanceVolumeDetailItem :: Integer -- ^ 'iivdiBytesConverted'+                               -> Text -- ^ 'iivdiAvailabilityZone'+                               -> DiskImageDescription -- ^ 'iivdiImage'+                               -> DiskImageVolumeDescription -- ^ 'iivdiVolume'+                               -> Text -- ^ 'iivdiStatus'+                               -> ImportInstanceVolumeDetailItem+importInstanceVolumeDetailItem p1 p2 p3 p4 p5 = ImportInstanceVolumeDetailItem+    { _iivdiBytesConverted   = p1+    , _iivdiAvailabilityZone = p2+    , _iivdiImage            = p3+    , _iivdiVolume           = p4+    , _iivdiStatus           = p5+    , _iivdiStatusMessage    = Nothing+    , _iivdiDescription      = Nothing+    }++-- | The Availability Zone where the resulting instance will reside.+iivdiAvailabilityZone :: Lens' ImportInstanceVolumeDetailItem Text+iivdiAvailabilityZone =+    lens _iivdiAvailabilityZone (\s a -> s { _iivdiAvailabilityZone = a })++-- | The number of bytes converted so far.+iivdiBytesConverted :: Lens' ImportInstanceVolumeDetailItem Integer+iivdiBytesConverted =+    lens _iivdiBytesConverted (\s a -> s { _iivdiBytesConverted = a })++-- | A description of the task.+iivdiDescription :: Lens' ImportInstanceVolumeDetailItem (Maybe Text)+iivdiDescription = lens _iivdiDescription (\s a -> s { _iivdiDescription = a })++-- | The image.+iivdiImage :: Lens' ImportInstanceVolumeDetailItem DiskImageDescription+iivdiImage = lens _iivdiImage (\s a -> s { _iivdiImage = a })++-- | The status of the import of this particular disk image.+iivdiStatus :: Lens' ImportInstanceVolumeDetailItem Text+iivdiStatus = lens _iivdiStatus (\s a -> s { _iivdiStatus = a })++-- | The status information or errors related to the disk image.+iivdiStatusMessage :: Lens' ImportInstanceVolumeDetailItem (Maybe Text)+iivdiStatusMessage =+    lens _iivdiStatusMessage (\s a -> s { _iivdiStatusMessage = a })++-- | The volume.+iivdiVolume :: Lens' ImportInstanceVolumeDetailItem DiskImageVolumeDescription+iivdiVolume = lens _iivdiVolume (\s a -> s { _iivdiVolume = a })++instance FromXML ImportInstanceVolumeDetailItem where+    parseXML x = ImportInstanceVolumeDetailItem+        <$> x .@  "availabilityZone"+        <*> x .@  "bytesConverted"+        <*> x .@? "description"+        <*> x .@  "image"+        <*> x .@  "status"+        <*> x .@? "statusMessage"+        <*> x .@  "volume"++instance ToQuery ImportInstanceVolumeDetailItem where+    toQuery ImportInstanceVolumeDetailItem{..} = mconcat+        [ "AvailabilityZone" =? _iivdiAvailabilityZone+        , "BytesConverted"   =? _iivdiBytesConverted+        , "Description"      =? _iivdiDescription+        , "Image"            =? _iivdiImage+        , "Status"           =? _iivdiStatus+        , "StatusMessage"    =? _iivdiStatusMessage+        , "Volume"           =? _iivdiVolume+        ]++data SummaryStatus+    = SSImpaired         -- ^ impaired+    | SSInsufficientData -- ^ insufficient-data+    | SSNotApplicable    -- ^ not-applicable+    | SSOk               -- ^ ok+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable SummaryStatus++instance FromText SummaryStatus where+    parser = takeLowerText >>= \case+        "impaired"          -> pure SSImpaired+        "insufficient-data" -> pure SSInsufficientData+        "not-applicable"    -> pure SSNotApplicable+        "ok"                -> pure SSOk+        e                   -> fail $+            "Failure parsing SummaryStatus from " ++ show e++instance ToText SummaryStatus where+    toText = \case+        SSImpaired         -> "impaired"+        SSInsufficientData -> "insufficient-data"+        SSNotApplicable    -> "not-applicable"+        SSOk               -> "ok"++instance ToByteString SummaryStatus+instance ToHeader     SummaryStatus+instance ToQuery      SummaryStatus++instance FromXML SummaryStatus where+    parseXML = parseXMLText "SummaryStatus"++data ReservedInstancesModification = ReservedInstancesModification+    { _rimClientToken                     :: Maybe Text+    , _rimCreateDate                      :: Maybe ISO8601+    , _rimEffectiveDate                   :: Maybe ISO8601+    , _rimModificationResults             :: List "item" ReservedInstancesModificationResult+    , _rimReservedInstancesIds            :: List "item" ReservedInstancesId+    , _rimReservedInstancesModificationId :: Maybe Text+    , _rimStatus                          :: Maybe Text+    , _rimStatusMessage                   :: Maybe Text+    , _rimUpdateDate                      :: Maybe ISO8601+    } deriving (Eq, Read, Show)++-- | 'ReservedInstancesModification' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rimClientToken' @::@ 'Maybe' 'Text'+--+-- * 'rimCreateDate' @::@ 'Maybe' 'UTCTime'+--+-- * 'rimEffectiveDate' @::@ 'Maybe' 'UTCTime'+--+-- * 'rimModificationResults' @::@ ['ReservedInstancesModificationResult']+--+-- * 'rimReservedInstancesIds' @::@ ['ReservedInstancesId']+--+-- * 'rimReservedInstancesModificationId' @::@ 'Maybe' 'Text'+--+-- * 'rimStatus' @::@ 'Maybe' 'Text'+--+-- * 'rimStatusMessage' @::@ 'Maybe' 'Text'+--+-- * 'rimUpdateDate' @::@ 'Maybe' 'UTCTime'+--+reservedInstancesModification :: ReservedInstancesModification+reservedInstancesModification = ReservedInstancesModification+    { _rimReservedInstancesModificationId = Nothing+    , _rimReservedInstancesIds            = mempty+    , _rimModificationResults             = mempty+    , _rimCreateDate                      = Nothing+    , _rimUpdateDate                      = Nothing+    , _rimEffectiveDate                   = Nothing+    , _rimStatus                          = Nothing+    , _rimStatusMessage                   = Nothing+    , _rimClientToken                     = Nothing+    }++-- | A unique, case-sensitive key supplied by the client to ensure that the+-- request is idempotent. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html Ensuring Idempotency>.+rimClientToken :: Lens' ReservedInstancesModification (Maybe Text)+rimClientToken = lens _rimClientToken (\s a -> s { _rimClientToken = a })++-- | The time when the modification request was created.+rimCreateDate :: Lens' ReservedInstancesModification (Maybe UTCTime)+rimCreateDate = lens _rimCreateDate (\s a -> s { _rimCreateDate = a }) . mapping _Time++-- | The time for the modification to become effective.+rimEffectiveDate :: Lens' ReservedInstancesModification (Maybe UTCTime)+rimEffectiveDate = lens _rimEffectiveDate (\s a -> s { _rimEffectiveDate = a }) . mapping _Time++-- | Contains target configurations along with their corresponding new Reserved+-- Instance IDs.+rimModificationResults :: Lens' ReservedInstancesModification [ReservedInstancesModificationResult]+rimModificationResults =+    lens _rimModificationResults (\s a -> s { _rimModificationResults = a })+        . _List++-- | The IDs of one or more Reserved Instances.+rimReservedInstancesIds :: Lens' ReservedInstancesModification [ReservedInstancesId]+rimReservedInstancesIds =+    lens _rimReservedInstancesIds (\s a -> s { _rimReservedInstancesIds = a })+        . _List++-- | A unique ID for the Reserved Instance modification.+rimReservedInstancesModificationId :: Lens' ReservedInstancesModification (Maybe Text)+rimReservedInstancesModificationId =+    lens _rimReservedInstancesModificationId+        (\s a -> s { _rimReservedInstancesModificationId = a })++-- | The status of the Reserved Instances modification request.+rimStatus :: Lens' ReservedInstancesModification (Maybe Text)+rimStatus = lens _rimStatus (\s a -> s { _rimStatus = a })++-- | The reason for the status.+rimStatusMessage :: Lens' ReservedInstancesModification (Maybe Text)+rimStatusMessage = lens _rimStatusMessage (\s a -> s { _rimStatusMessage = a })++-- | The time when the modification request was last updated.+rimUpdateDate :: Lens' ReservedInstancesModification (Maybe UTCTime)+rimUpdateDate = lens _rimUpdateDate (\s a -> s { _rimUpdateDate = a }) . mapping _Time++instance FromXML ReservedInstancesModification where+    parseXML x = ReservedInstancesModification+        <$> x .@? "clientToken"+        <*> x .@? "createDate"+        <*> x .@? "effectiveDate"+        <*> x .@? "modificationResultSet" .!@ mempty+        <*> x .@? "reservedInstancesSet" .!@ mempty+        <*> x .@? "reservedInstancesModificationId"+        <*> x .@? "status"+        <*> x .@? "statusMessage"+        <*> x .@? "updateDate"++instance ToQuery ReservedInstancesModification where+    toQuery ReservedInstancesModification{..} = mconcat+        [ "ClientToken"                     =? _rimClientToken+        , "CreateDate"                      =? _rimCreateDate+        , "EffectiveDate"                   =? _rimEffectiveDate+        , "ModificationResultSet"           `toQueryList` _rimModificationResults+        , "ReservedInstancesSet"            `toQueryList` _rimReservedInstancesIds+        , "ReservedInstancesModificationId" =? _rimReservedInstancesModificationId+        , "Status"                          =? _rimStatus+        , "StatusMessage"                   =? _rimStatusMessage+        , "UpdateDate"                      =? _rimUpdateDate+        ]++data RuleAction+    = Allow -- ^ allow+    | Deny  -- ^ deny+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable RuleAction++instance FromText RuleAction where+    parser = takeLowerText >>= \case+        "allow" -> pure Allow+        "deny"  -> pure Deny+        e       -> fail $+            "Failure parsing RuleAction from " ++ show e++instance ToText RuleAction where+    toText = \case+        Allow -> "allow"+        Deny  -> "deny"++instance ToByteString RuleAction+instance ToHeader     RuleAction+instance ToQuery      RuleAction++instance FromXML RuleAction where+    parseXML = parseXMLText "RuleAction"++data BatchState+    = Active               -- ^ active+    | Cancelled            -- ^ cancelled+    | CancelledRunning     -- ^ cancelled_running+    | CancelledTerminating -- ^ cancelled_terminating+    | Failed               -- ^ failed+    | Submitted            -- ^ submitted+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable BatchState++instance FromText BatchState where+    parser = takeLowerText >>= \case+        "active"                -> pure Active+        "cancelled"             -> pure Cancelled+        "cancelled_running"     -> pure CancelledRunning+        "cancelled_terminating" -> pure CancelledTerminating+        "failed"                -> pure Failed+        "submitted"             -> pure Submitted+        e                       -> fail $+            "Failure parsing BatchState from " ++ show e++instance ToText BatchState where+    toText = \case+        Active               -> "active"+        Cancelled            -> "cancelled"+        CancelledRunning     -> "cancelled_running"+        CancelledTerminating -> "cancelled_terminating"+        Failed               -> "failed"+        Submitted            -> "submitted"++instance ToByteString BatchState+instance ToHeader     BatchState+instance ToQuery      BatchState++instance FromXML BatchState where+    parseXML = parseXMLText "BatchState"++data NetworkInterface = NetworkInterface+    { _niAssociation        :: Maybe NetworkInterfaceAssociation+    , _niAttachment         :: Maybe NetworkInterfaceAttachment+    , _niAvailabilityZone   :: Maybe Text+    , _niDescription        :: Maybe Text+    , _niGroups             :: List "item" GroupIdentifier+    , _niMacAddress         :: Maybe Text+    , _niNetworkInterfaceId :: Maybe Text+    , _niOwnerId            :: Maybe Text+    , _niPrivateDnsName     :: Maybe Text+    , _niPrivateIpAddress   :: Maybe Text+    , _niPrivateIpAddresses :: List "item" NetworkInterfacePrivateIpAddress+    , _niRequesterId        :: Maybe Text+    , _niRequesterManaged   :: Maybe Bool+    , _niSourceDestCheck    :: Maybe Bool+    , _niStatus             :: Maybe NetworkInterfaceStatus+    , _niSubnetId           :: Maybe Text+    , _niTagSet             :: List "item" Tag+    , _niVpcId              :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'NetworkInterface' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'niAssociation' @::@ 'Maybe' 'NetworkInterfaceAssociation'+--+-- * 'niAttachment' @::@ 'Maybe' 'NetworkInterfaceAttachment'+--+-- * 'niAvailabilityZone' @::@ 'Maybe' 'Text'+--+-- * 'niDescription' @::@ 'Maybe' 'Text'+--+-- * 'niGroups' @::@ ['GroupIdentifier']+--+-- * 'niMacAddress' @::@ 'Maybe' 'Text'+--+-- * 'niNetworkInterfaceId' @::@ 'Maybe' 'Text'+--+-- * 'niOwnerId' @::@ 'Maybe' 'Text'+--+-- * 'niPrivateDnsName' @::@ 'Maybe' 'Text'+--+-- * 'niPrivateIpAddress' @::@ 'Maybe' 'Text'+--+-- * 'niPrivateIpAddresses' @::@ ['NetworkInterfacePrivateIpAddress']+--+-- * 'niRequesterId' @::@ 'Maybe' 'Text'+--+-- * 'niRequesterManaged' @::@ 'Maybe' 'Bool'+--+-- * 'niSourceDestCheck' @::@ 'Maybe' 'Bool'+--+-- * 'niStatus' @::@ 'Maybe' 'NetworkInterfaceStatus'+--+-- * 'niSubnetId' @::@ 'Maybe' 'Text'+--+-- * 'niTagSet' @::@ ['Tag']+--+-- * 'niVpcId' @::@ 'Maybe' 'Text'+--+networkInterface :: NetworkInterface+networkInterface = NetworkInterface+    { _niNetworkInterfaceId = Nothing+    , _niSubnetId           = Nothing+    , _niVpcId              = Nothing+    , _niAvailabilityZone   = Nothing+    , _niDescription        = Nothing+    , _niOwnerId            = Nothing+    , _niRequesterId        = Nothing+    , _niRequesterManaged   = Nothing+    , _niStatus             = Nothing+    , _niMacAddress         = Nothing+    , _niPrivateIpAddress   = Nothing+    , _niPrivateDnsName     = Nothing+    , _niSourceDestCheck    = Nothing+    , _niGroups             = mempty+    , _niAttachment         = Nothing+    , _niAssociation        = Nothing+    , _niTagSet             = mempty+    , _niPrivateIpAddresses = mempty+    }++-- | The association information for an Elastic IP associated with the network+-- interface.+niAssociation :: Lens' NetworkInterface (Maybe NetworkInterfaceAssociation)+niAssociation = lens _niAssociation (\s a -> s { _niAssociation = a })++-- | The network interface attachment.+niAttachment :: Lens' NetworkInterface (Maybe NetworkInterfaceAttachment)+niAttachment = lens _niAttachment (\s a -> s { _niAttachment = a })++-- | The Availability Zone.+niAvailabilityZone :: Lens' NetworkInterface (Maybe Text)+niAvailabilityZone =+    lens _niAvailabilityZone (\s a -> s { _niAvailabilityZone = a })++-- | A description.+niDescription :: Lens' NetworkInterface (Maybe Text)+niDescription = lens _niDescription (\s a -> s { _niDescription = a })++-- | Any security groups for the network interface.+niGroups :: Lens' NetworkInterface [GroupIdentifier]+niGroups = lens _niGroups (\s a -> s { _niGroups = a }) . _List++-- | The MAC address.+niMacAddress :: Lens' NetworkInterface (Maybe Text)+niMacAddress = lens _niMacAddress (\s a -> s { _niMacAddress = a })++-- | The ID of the network interface.+niNetworkInterfaceId :: Lens' NetworkInterface (Maybe Text)+niNetworkInterfaceId =+    lens _niNetworkInterfaceId (\s a -> s { _niNetworkInterfaceId = a })++-- | The AWS account ID of the owner of the network interface.+niOwnerId :: Lens' NetworkInterface (Maybe Text)+niOwnerId = lens _niOwnerId (\s a -> s { _niOwnerId = a })++-- | The private DNS name.+niPrivateDnsName :: Lens' NetworkInterface (Maybe Text)+niPrivateDnsName = lens _niPrivateDnsName (\s a -> s { _niPrivateDnsName = a })++-- | The IP address of the network interface within the subnet.+niPrivateIpAddress :: Lens' NetworkInterface (Maybe Text)+niPrivateIpAddress =+    lens _niPrivateIpAddress (\s a -> s { _niPrivateIpAddress = a })++-- | The private IP addresses associated with the network interface.+niPrivateIpAddresses :: Lens' NetworkInterface [NetworkInterfacePrivateIpAddress]+niPrivateIpAddresses =+    lens _niPrivateIpAddresses (\s a -> s { _niPrivateIpAddresses = a })+        . _List++-- | The ID of the entity that launched the instance on your behalf (for example,+-- AWS Management Console or Auto Scaling).+niRequesterId :: Lens' NetworkInterface (Maybe Text)+niRequesterId = lens _niRequesterId (\s a -> s { _niRequesterId = a })++-- | Indicates whether the network interface is being managed by AWS.+niRequesterManaged :: Lens' NetworkInterface (Maybe Bool)+niRequesterManaged =+    lens _niRequesterManaged (\s a -> s { _niRequesterManaged = a })++-- | Indicates whether traffic to or from the instance is validated.+niSourceDestCheck :: Lens' NetworkInterface (Maybe Bool)+niSourceDestCheck =+    lens _niSourceDestCheck (\s a -> s { _niSourceDestCheck = a })++-- | The status of the network interface.+niStatus :: Lens' NetworkInterface (Maybe NetworkInterfaceStatus)+niStatus = lens _niStatus (\s a -> s { _niStatus = a })++-- | The ID of the subnet.+niSubnetId :: Lens' NetworkInterface (Maybe Text)+niSubnetId = lens _niSubnetId (\s a -> s { _niSubnetId = a })++-- | Any tags assigned to the network interface.+niTagSet :: Lens' NetworkInterface [Tag]+niTagSet = lens _niTagSet (\s a -> s { _niTagSet = a }) . _List++-- | The ID of the VPC.+niVpcId :: Lens' NetworkInterface (Maybe Text)+niVpcId = lens _niVpcId (\s a -> s { _niVpcId = a })++instance FromXML NetworkInterface where+    parseXML x = NetworkInterface+        <$> x .@? "association"+        <*> x .@? "attachment"+        <*> x .@? "availabilityZone"+        <*> x .@? "description"+        <*> x .@? "groupSet" .!@ mempty+        <*> x .@? "macAddress"+        <*> x .@? "networkInterfaceId"+        <*> x .@? "ownerId"+        <*> x .@? "privateDnsName"+        <*> x .@? "privateIpAddress"+        <*> x .@? "privateIpAddressesSet" .!@ mempty+        <*> x .@? "requesterId"+        <*> x .@? "requesterManaged"+        <*> x .@? "sourceDestCheck"+        <*> x .@? "status"+        <*> x .@? "subnetId"+        <*> x .@? "tagSet" .!@ mempty+        <*> x .@? "vpcId"++instance ToQuery NetworkInterface where+    toQuery NetworkInterface{..} = mconcat+        [ "Association"           =? _niAssociation+        , "Attachment"            =? _niAttachment+        , "AvailabilityZone"      =? _niAvailabilityZone+        , "Description"           =? _niDescription+        , "GroupSet"              `toQueryList` _niGroups+        , "MacAddress"            =? _niMacAddress+        , "NetworkInterfaceId"    =? _niNetworkInterfaceId+        , "OwnerId"               =? _niOwnerId+        , "PrivateDnsName"        =? _niPrivateDnsName+        , "PrivateIpAddress"      =? _niPrivateIpAddress+        , "PrivateIpAddressesSet" `toQueryList` _niPrivateIpAddresses+        , "RequesterId"           =? _niRequesterId+        , "RequesterManaged"      =? _niRequesterManaged+        , "SourceDestCheck"       =? _niSourceDestCheck+        , "Status"                =? _niStatus+        , "SubnetId"              =? _niSubnetId+        , "TagSet"                `toQueryList` _niTagSet+        , "VpcId"                 =? _niVpcId+        ]++data TelemetryStatus+    = Down -- ^ DOWN+    | Up   -- ^ UP+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable TelemetryStatus++instance FromText TelemetryStatus where+    parser = takeLowerText >>= \case+        "down" -> pure Down+        "up"   -> pure Up+        e      -> fail $+            "Failure parsing TelemetryStatus from " ++ show e++instance ToText TelemetryStatus where+    toText = \case+        Down -> "DOWN"+        Up   -> "UP"++instance ToByteString TelemetryStatus+instance ToHeader     TelemetryStatus+instance ToQuery      TelemetryStatus++instance FromXML TelemetryStatus where+    parseXML = parseXMLText "TelemetryStatus"++data Subnet = Subnet+    { _s1AvailabilityZone        :: Text+    , _s1AvailableIpAddressCount :: Int+    , _s1CidrBlock               :: Text+    , _s1DefaultForAz            :: Bool+    , _s1MapPublicIpOnLaunch     :: Bool+    , _s1State                   :: SubnetState+    , _s1SubnetId                :: Text+    , _s1Tags                    :: List "item" Tag+    , _s1VpcId                   :: Text+    } deriving (Eq, Read, Show)++-- | 'Subnet' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 's1AvailabilityZone' @::@ 'Text'+--+-- * 's1AvailableIpAddressCount' @::@ 'Int'+--+-- * 's1CidrBlock' @::@ 'Text'+--+-- * 's1DefaultForAz' @::@ 'Bool'+--+-- * 's1MapPublicIpOnLaunch' @::@ 'Bool'+--+-- * 's1State' @::@ 'SubnetState'+--+-- * 's1SubnetId' @::@ 'Text'+--+-- * 's1Tags' @::@ ['Tag']+--+-- * 's1VpcId' @::@ 'Text'+--+subnet :: Text -- ^ 's1SubnetId'+       -> SubnetState -- ^ 's1State'+       -> Text -- ^ 's1VpcId'+       -> Text -- ^ 's1CidrBlock'+       -> Int -- ^ 's1AvailableIpAddressCount'+       -> Text -- ^ 's1AvailabilityZone'+       -> Bool -- ^ 's1DefaultForAz'+       -> Bool -- ^ 's1MapPublicIpOnLaunch'+       -> Subnet+subnet p1 p2 p3 p4 p5 p6 p7 p8 = Subnet+    { _s1SubnetId                = p1+    , _s1State                   = p2+    , _s1VpcId                   = p3+    , _s1CidrBlock               = p4+    , _s1AvailableIpAddressCount = p5+    , _s1AvailabilityZone        = p6+    , _s1DefaultForAz            = p7+    , _s1MapPublicIpOnLaunch     = p8+    , _s1Tags                    = mempty+    }++-- | The Availability Zone of the subnet.+s1AvailabilityZone :: Lens' Subnet Text+s1AvailabilityZone =+    lens _s1AvailabilityZone (\s a -> s { _s1AvailabilityZone = a })++-- | The number of unused IP addresses in the subnet. Note that the IP addresses+-- for any stopped instances are considered unavailable.+s1AvailableIpAddressCount :: Lens' Subnet Int+s1AvailableIpAddressCount =+    lens _s1AvailableIpAddressCount+        (\s a -> s { _s1AvailableIpAddressCount = a })++-- | The CIDR block assigned to the subnet.+s1CidrBlock :: Lens' Subnet Text+s1CidrBlock = lens _s1CidrBlock (\s a -> s { _s1CidrBlock = a })++-- | Indicates whether this is the default subnet for the Availability Zone.+s1DefaultForAz :: Lens' Subnet Bool+s1DefaultForAz = lens _s1DefaultForAz (\s a -> s { _s1DefaultForAz = a })++-- | Indicates whether instances launched in this subnet receive a public IP+-- address.+s1MapPublicIpOnLaunch :: Lens' Subnet Bool+s1MapPublicIpOnLaunch =+    lens _s1MapPublicIpOnLaunch (\s a -> s { _s1MapPublicIpOnLaunch = a })++-- | The current state of the subnet.+s1State :: Lens' Subnet SubnetState+s1State = lens _s1State (\s a -> s { _s1State = a })++-- | The ID of the subnet.+s1SubnetId :: Lens' Subnet Text+s1SubnetId = lens _s1SubnetId (\s a -> s { _s1SubnetId = a })++-- | Any tags assigned to the subnet.+s1Tags :: Lens' Subnet [Tag]+s1Tags = lens _s1Tags (\s a -> s { _s1Tags = a }) . _List++-- | The ID of the VPC the subnet is in.+s1VpcId :: Lens' Subnet Text+s1VpcId = lens _s1VpcId (\s a -> s { _s1VpcId = a })++instance FromXML Subnet where+    parseXML x = Subnet+        <$> x .@  "availabilityZone"+        <*> x .@  "availableIpAddressCount"+        <*> x .@  "cidrBlock"+        <*> x .@  "defaultForAz"+        <*> x .@  "mapPublicIpOnLaunch"+        <*> x .@  "state"+        <*> x .@  "subnetId"+        <*> x .@? "tagSet" .!@ mempty+        <*> x .@  "vpcId"++instance ToQuery Subnet where+    toQuery Subnet{..} = mconcat+        [ "AvailabilityZone"        =? _s1AvailabilityZone+        , "AvailableIpAddressCount" =? _s1AvailableIpAddressCount+        , "CidrBlock"               =? _s1CidrBlock+        , "DefaultForAz"            =? _s1DefaultForAz+        , "MapPublicIpOnLaunch"     =? _s1MapPublicIpOnLaunch+        , "State"                   =? _s1State+        , "SubnetId"                =? _s1SubnetId+        , "TagSet"                  `toQueryList` _s1Tags+        , "VpcId"                   =? _s1VpcId+        ]++data KeyPairInfo = KeyPairInfo+    { _kpiKeyFingerprint :: Maybe Text+    , _kpiKeyName        :: Maybe Text+    } deriving (Eq, Ord, Read, Show)++-- | 'KeyPairInfo' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'kpiKeyFingerprint' @::@ 'Maybe' 'Text'+--+-- * 'kpiKeyName' @::@ 'Maybe' 'Text'+--+keyPairInfo :: KeyPairInfo+keyPairInfo = KeyPairInfo+    { _kpiKeyName        = Nothing+    , _kpiKeyFingerprint = Nothing+    }++-- | If you used 'CreateKeyPair' to create the key pair, this is the SHA-1 digest of+-- the DER encoded private key. If you used 'ImportKeyPair' to provide AWS the+-- public key, this is the MD5 public key fingerprint as specified in section 4+-- of RFC4716.+kpiKeyFingerprint :: Lens' KeyPairInfo (Maybe Text)+kpiKeyFingerprint =+    lens _kpiKeyFingerprint (\s a -> s { _kpiKeyFingerprint = a })++-- | The name of the key pair.+kpiKeyName :: Lens' KeyPairInfo (Maybe Text)+kpiKeyName = lens _kpiKeyName (\s a -> s { _kpiKeyName = a })++instance FromXML KeyPairInfo where+    parseXML x = KeyPairInfo+        <$> x .@? "keyFingerprint"+        <*> x .@? "keyName"++instance ToQuery KeyPairInfo where+    toQuery KeyPairInfo{..} = mconcat+        [ "KeyFingerprint" =? _kpiKeyFingerprint+        , "KeyName"        =? _kpiKeyName+        ]++data LaunchPermissionModifications = LaunchPermissionModifications+    { _lpmAdd    :: List "item" LaunchPermission+    , _lpmRemove :: List "item" LaunchPermission+    } deriving (Eq, Read, Show)++-- | 'LaunchPermissionModifications' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lpmAdd' @::@ ['LaunchPermission']+--+-- * 'lpmRemove' @::@ ['LaunchPermission']+--+launchPermissionModifications :: LaunchPermissionModifications+launchPermissionModifications = LaunchPermissionModifications+    { _lpmAdd    = mempty+    , _lpmRemove = mempty+    }++-- | The AWS account ID to add to the list of launch permissions for the AMI.+lpmAdd :: Lens' LaunchPermissionModifications [LaunchPermission]+lpmAdd = lens _lpmAdd (\s a -> s { _lpmAdd = a }) . _List++-- | The AWS account ID to remove from the list of launch permissions for the AMI.+lpmRemove :: Lens' LaunchPermissionModifications [LaunchPermission]+lpmRemove = lens _lpmRemove (\s a -> s { _lpmRemove = a }) . _List++instance FromXML LaunchPermissionModifications where+    parseXML x = LaunchPermissionModifications+        <$> x .@? "Add" .!@ mempty+        <*> x .@? "Remove" .!@ mempty++instance ToQuery LaunchPermissionModifications where+    toQuery LaunchPermissionModifications{..} = mconcat+        [ "Add"    `toQueryList` _lpmAdd+        , "Remove" `toQueryList` _lpmRemove+        ]++data SnapshotState+    = SSCompleted -- ^ completed+    | SSError     -- ^ error+    | SSPending   -- ^ pending+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable SnapshotState++instance FromText SnapshotState where+    parser = takeLowerText >>= \case+        "completed" -> pure SSCompleted+        "error"     -> pure SSError+        "pending"   -> pure SSPending+        e           -> fail $+            "Failure parsing SnapshotState from " ++ show e++instance ToText SnapshotState where+    toText = \case+        SSCompleted -> "completed"+        SSError     -> "error"+        SSPending   -> "pending"++instance ToByteString SnapshotState+instance ToHeader     SnapshotState+instance ToQuery      SnapshotState++instance FromXML SnapshotState where+    parseXML = parseXMLText "SnapshotState"++data InstanceNetworkInterfaceAssociation = InstanceNetworkInterfaceAssociation+    { _iniaIpOwnerId     :: Maybe Text+    , _iniaPublicDnsName :: Maybe Text+    , _iniaPublicIp      :: Maybe Text+    } deriving (Eq, Ord, Read, Show)++-- | 'InstanceNetworkInterfaceAssociation' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'iniaIpOwnerId' @::@ 'Maybe' 'Text'+--+-- * 'iniaPublicDnsName' @::@ 'Maybe' 'Text'+--+-- * 'iniaPublicIp' @::@ 'Maybe' 'Text'+--+instanceNetworkInterfaceAssociation :: InstanceNetworkInterfaceAssociation+instanceNetworkInterfaceAssociation = InstanceNetworkInterfaceAssociation+    { _iniaPublicIp      = Nothing+    , _iniaPublicDnsName = Nothing+    , _iniaIpOwnerId     = Nothing+    }++-- | The ID of the owner of the Elastic IP address.+iniaIpOwnerId :: Lens' InstanceNetworkInterfaceAssociation (Maybe Text)+iniaIpOwnerId = lens _iniaIpOwnerId (\s a -> s { _iniaIpOwnerId = a })++-- | The public DNS name.+iniaPublicDnsName :: Lens' InstanceNetworkInterfaceAssociation (Maybe Text)+iniaPublicDnsName =+    lens _iniaPublicDnsName (\s a -> s { _iniaPublicDnsName = a })++-- | The public IP address or Elastic IP address bound to the network interface.+iniaPublicIp :: Lens' InstanceNetworkInterfaceAssociation (Maybe Text)+iniaPublicIp = lens _iniaPublicIp (\s a -> s { _iniaPublicIp = a })++instance FromXML InstanceNetworkInterfaceAssociation where+    parseXML x = InstanceNetworkInterfaceAssociation+        <$> x .@? "ipOwnerId"+        <*> x .@? "publicDnsName"+        <*> x .@? "publicIp"++instance ToQuery InstanceNetworkInterfaceAssociation where+    toQuery InstanceNetworkInterfaceAssociation{..} = mconcat+        [ "IpOwnerId"     =? _iniaIpOwnerId+        , "PublicDnsName" =? _iniaPublicDnsName+        , "PublicIp"      =? _iniaPublicIp+        ]++data DiskImageDetail = DiskImageDetail+    { _didBytes             :: Integer+    , _didFormat            :: DiskImageFormat+    , _didImportManifestUrl :: Text+    } deriving (Eq, Read, Show)++-- | 'DiskImageDetail' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'didBytes' @::@ 'Integer'+--+-- * 'didFormat' @::@ 'DiskImageFormat'+--+-- * 'didImportManifestUrl' @::@ 'Text'+--+diskImageDetail :: DiskImageFormat -- ^ 'didFormat'+                -> Integer -- ^ 'didBytes'+                -> Text -- ^ 'didImportManifestUrl'+                -> DiskImageDetail+diskImageDetail p1 p2 p3 = DiskImageDetail+    { _didFormat            = p1+    , _didBytes             = p2+    , _didImportManifestUrl = p3+    }++-- | The size of the disk image, in GiB.+didBytes :: Lens' DiskImageDetail Integer+didBytes = lens _didBytes (\s a -> s { _didBytes = a })++-- | The disk image format.+didFormat :: Lens' DiskImageDetail DiskImageFormat+didFormat = lens _didFormat (\s a -> s { _didFormat = a })++-- | A presigned URL for the import manifest stored in Amazon S3 and presented+-- here as an Amazon S3 presigned URL. For information about creating a+-- presigned URL for an Amazon S3 object, read the "Query String Request+-- Authentication Alternative" section of the <http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html Authenticating REST Requests> topic+-- in the /Amazon Simple Storage Service Developer Guide/.+didImportManifestUrl :: Lens' DiskImageDetail Text+didImportManifestUrl =+    lens _didImportManifestUrl (\s a -> s { _didImportManifestUrl = a })++instance FromXML DiskImageDetail where+    parseXML x = DiskImageDetail+        <$> x .@  "bytes"+        <*> x .@  "format"+        <*> x .@  "importManifestUrl"++instance ToQuery DiskImageDetail where+    toQuery DiskImageDetail{..} = mconcat+        [ "Bytes"             =? _didBytes+        , "Format"            =? _didFormat+        , "ImportManifestUrl" =? _didImportManifestUrl+        ]++data InstancePrivateIpAddress = InstancePrivateIpAddress+    { _ipiaAssociation      :: Maybe InstanceNetworkInterfaceAssociation+    , _ipiaPrimary          :: Maybe Bool+    , _ipiaPrivateDnsName   :: Maybe Text+    , _ipiaPrivateIpAddress :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'InstancePrivateIpAddress' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ipiaAssociation' @::@ 'Maybe' 'InstanceNetworkInterfaceAssociation'+--+-- * 'ipiaPrimary' @::@ 'Maybe' 'Bool'+--+-- * 'ipiaPrivateDnsName' @::@ 'Maybe' 'Text'+--+-- * 'ipiaPrivateIpAddress' @::@ 'Maybe' 'Text'+--+instancePrivateIpAddress :: InstancePrivateIpAddress+instancePrivateIpAddress = InstancePrivateIpAddress+    { _ipiaPrivateIpAddress = Nothing+    , _ipiaPrivateDnsName   = Nothing+    , _ipiaPrimary          = Nothing+    , _ipiaAssociation      = Nothing+    }++-- | The association information for an Elastic IP address for the network+-- interface.+ipiaAssociation :: Lens' InstancePrivateIpAddress (Maybe InstanceNetworkInterfaceAssociation)+ipiaAssociation = lens _ipiaAssociation (\s a -> s { _ipiaAssociation = a })++-- | Indicates whether this IP address is the primary private IP address of the+-- network interface.+ipiaPrimary :: Lens' InstancePrivateIpAddress (Maybe Bool)+ipiaPrimary = lens _ipiaPrimary (\s a -> s { _ipiaPrimary = a })++-- | The private DNS name.+ipiaPrivateDnsName :: Lens' InstancePrivateIpAddress (Maybe Text)+ipiaPrivateDnsName =+    lens _ipiaPrivateDnsName (\s a -> s { _ipiaPrivateDnsName = a })++-- | The private IP address of the network interface.+ipiaPrivateIpAddress :: Lens' InstancePrivateIpAddress (Maybe Text)+ipiaPrivateIpAddress =+    lens _ipiaPrivateIpAddress (\s a -> s { _ipiaPrivateIpAddress = a })++instance FromXML InstancePrivateIpAddress where+    parseXML x = InstancePrivateIpAddress+        <$> x .@? "association"+        <*> x .@? "primary"+        <*> x .@? "privateDnsName"+        <*> x .@? "privateIpAddress"++instance ToQuery InstancePrivateIpAddress where+    toQuery InstancePrivateIpAddress{..} = mconcat+        [ "Association"      =? _ipiaAssociation+        , "Primary"          =? _ipiaPrimary+        , "PrivateDnsName"   =? _ipiaPrivateDnsName+        , "PrivateIpAddress" =? _ipiaPrivateIpAddress+        ]++data CancelledSpotInstanceRequest = CancelledSpotInstanceRequest+    { _csiSpotInstanceRequestId :: Maybe Text+    , _csiState                 :: Maybe CancelSpotInstanceRequestState+    } deriving (Eq, Read, Show)++-- | 'CancelledSpotInstanceRequest' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'csiSpotInstanceRequestId' @::@ 'Maybe' 'Text'+--+-- * 'csiState' @::@ 'Maybe' 'CancelSpotInstanceRequestState'+--+cancelledSpotInstanceRequest :: CancelledSpotInstanceRequest+cancelledSpotInstanceRequest = CancelledSpotInstanceRequest+    { _csiSpotInstanceRequestId = Nothing+    , _csiState                 = Nothing+    }++-- | The ID of the Spot Instance request.+csiSpotInstanceRequestId :: Lens' CancelledSpotInstanceRequest (Maybe Text)+csiSpotInstanceRequestId =+    lens _csiSpotInstanceRequestId+        (\s a -> s { _csiSpotInstanceRequestId = a })++-- | The state of the Spot Instance request.+csiState :: Lens' CancelledSpotInstanceRequest (Maybe CancelSpotInstanceRequestState)+csiState = lens _csiState (\s a -> s { _csiState = a })++instance FromXML CancelledSpotInstanceRequest where+    parseXML x = CancelledSpotInstanceRequest+        <$> x .@? "spotInstanceRequestId"+        <*> x .@? "state"++instance ToQuery CancelledSpotInstanceRequest where+    toQuery CancelledSpotInstanceRequest{..} = mconcat+        [ "SpotInstanceRequestId" =? _csiSpotInstanceRequestId+        , "State"                 =? _csiState+        ]++newtype VpnConnectionOptionsSpecification = VpnConnectionOptionsSpecification+    { _vcosStaticRoutesOnly :: Maybe Bool+    } deriving (Eq, Ord, Read, Show)++-- | 'VpnConnectionOptionsSpecification' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'vcosStaticRoutesOnly' @::@ 'Maybe' 'Bool'+--+vpnConnectionOptionsSpecification :: VpnConnectionOptionsSpecification+vpnConnectionOptionsSpecification = VpnConnectionOptionsSpecification+    { _vcosStaticRoutesOnly = Nothing+    }++-- | Indicates whether the VPN connection uses static routes only. Static routes+-- must be used for devices that don't support BGP.+vcosStaticRoutesOnly :: Lens' VpnConnectionOptionsSpecification (Maybe Bool)+vcosStaticRoutesOnly =+    lens _vcosStaticRoutesOnly (\s a -> s { _vcosStaticRoutesOnly = a })++instance FromXML VpnConnectionOptionsSpecification where+    parseXML x = VpnConnectionOptionsSpecification+        <$> x .@? "staticRoutesOnly"++instance ToQuery VpnConnectionOptionsSpecification where+    toQuery VpnConnectionOptionsSpecification{..} = mconcat+        [ "StaticRoutesOnly" =? _vcosStaticRoutesOnly+        ]++data Address = Address+    { _aAllocationId            :: Maybe Text+    , _aAssociationId           :: Maybe Text+    , _aDomain                  :: Maybe DomainType+    , _aInstanceId              :: Maybe Text+    , _aNetworkInterfaceId      :: Maybe Text+    , _aNetworkInterfaceOwnerId :: Maybe Text+    , _aPrivateIpAddress        :: Maybe Text+    , _aPublicIp                :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'Address' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'aAllocationId' @::@ 'Maybe' 'Text'+--+-- * 'aAssociationId' @::@ 'Maybe' 'Text'+--+-- * 'aDomain' @::@ 'Maybe' 'DomainType'+--+-- * 'aInstanceId' @::@ 'Maybe' 'Text'+--+-- * 'aNetworkInterfaceId' @::@ 'Maybe' 'Text'+--+-- * 'aNetworkInterfaceOwnerId' @::@ 'Maybe' 'Text'+--+-- * 'aPrivateIpAddress' @::@ 'Maybe' 'Text'+--+-- * 'aPublicIp' @::@ 'Maybe' 'Text'+--+address :: Address+address = Address+    { _aInstanceId              = Nothing+    , _aPublicIp                = Nothing+    , _aAllocationId            = Nothing+    , _aAssociationId           = Nothing+    , _aDomain                  = Nothing+    , _aNetworkInterfaceId      = Nothing+    , _aNetworkInterfaceOwnerId = Nothing+    , _aPrivateIpAddress        = Nothing+    }++-- | The ID representing the allocation of the address for use with EC2-VPC.+aAllocationId :: Lens' Address (Maybe Text)+aAllocationId = lens _aAllocationId (\s a -> s { _aAllocationId = a })++-- | The ID representing the association of the address with an instance in a VPC.+aAssociationId :: Lens' Address (Maybe Text)+aAssociationId = lens _aAssociationId (\s a -> s { _aAssociationId = a })++-- | Indicates whether this Elastic IP address is for use with instances in+-- EC2-Classic ('standard') or instances in a VPC ('vpc').+aDomain :: Lens' Address (Maybe DomainType)+aDomain = lens _aDomain (\s a -> s { _aDomain = a })++-- | The ID of the instance that the address is associated with (if any).+aInstanceId :: Lens' Address (Maybe Text)+aInstanceId = lens _aInstanceId (\s a -> s { _aInstanceId = a })++-- | The ID of the network interface.+aNetworkInterfaceId :: Lens' Address (Maybe Text)+aNetworkInterfaceId =+    lens _aNetworkInterfaceId (\s a -> s { _aNetworkInterfaceId = a })++-- | The ID of the AWS account that owns the network interface.+aNetworkInterfaceOwnerId :: Lens' Address (Maybe Text)+aNetworkInterfaceOwnerId =+    lens _aNetworkInterfaceOwnerId+        (\s a -> s { _aNetworkInterfaceOwnerId = a })++-- | The private IP address associated with the Elastic IP address.+aPrivateIpAddress :: Lens' Address (Maybe Text)+aPrivateIpAddress =+    lens _aPrivateIpAddress (\s a -> s { _aPrivateIpAddress = a })++-- | The Elastic IP address.+aPublicIp :: Lens' Address (Maybe Text)+aPublicIp = lens _aPublicIp (\s a -> s { _aPublicIp = a })++instance FromXML Address where+    parseXML x = Address+        <$> x .@? "allocationId"+        <*> x .@? "associationId"+        <*> x .@? "domain"+        <*> x .@? "instanceId"+        <*> x .@? "networkInterfaceId"+        <*> x .@? "networkInterfaceOwnerId"+        <*> x .@? "privateIpAddress"+        <*> x .@? "publicIp"++instance ToQuery Address where+    toQuery Address{..} = mconcat+        [ "AllocationId"            =? _aAllocationId+        , "AssociationId"           =? _aAssociationId+        , "Domain"                  =? _aDomain+        , "InstanceId"              =? _aInstanceId+        , "NetworkInterfaceId"      =? _aNetworkInterfaceId+        , "NetworkInterfaceOwnerId" =? _aNetworkInterfaceOwnerId+        , "PrivateIpAddress"        =? _aPrivateIpAddress+        , "PublicIp"                =? _aPublicIp+        ]++data VolumeAttachmentState+    = VASAttached  -- ^ attached+    | VASAttaching -- ^ attaching+    | VASDetached  -- ^ detached+    | VASDetaching -- ^ detaching+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable VolumeAttachmentState++instance FromText VolumeAttachmentState where+    parser = takeLowerText >>= \case+        "attached"  -> pure VASAttached+        "attaching" -> pure VASAttaching+        "detached"  -> pure VASDetached+        "detaching" -> pure VASDetaching+        e           -> fail $+            "Failure parsing VolumeAttachmentState from " ++ show e++instance ToText VolumeAttachmentState where+    toText = \case+        VASAttached  -> "attached"+        VASAttaching -> "attaching"+        VASDetached  -> "detached"+        VASDetaching -> "detaching"++instance ToByteString VolumeAttachmentState+instance ToHeader     VolumeAttachmentState+instance ToQuery      VolumeAttachmentState++instance FromXML VolumeAttachmentState where+    parseXML = parseXMLText "VolumeAttachmentState"++data MovingAddressStatus = MovingAddressStatus+    { _masMoveStatus :: Maybe MoveStatus+    , _masPublicIp   :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'MovingAddressStatus' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'masMoveStatus' @::@ 'Maybe' 'MoveStatus'+--+-- * 'masPublicIp' @::@ 'Maybe' 'Text'+--+movingAddressStatus :: MovingAddressStatus+movingAddressStatus = MovingAddressStatus+    { _masPublicIp   = Nothing+    , _masMoveStatus = Nothing+    }++-- | The status of the Elastic IP address that's being moved to the EC2-VPC+-- platform, or restored to the EC2-Classic platform.+masMoveStatus :: Lens' MovingAddressStatus (Maybe MoveStatus)+masMoveStatus = lens _masMoveStatus (\s a -> s { _masMoveStatus = a })++-- | The Elastic IP address.+masPublicIp :: Lens' MovingAddressStatus (Maybe Text)+masPublicIp = lens _masPublicIp (\s a -> s { _masPublicIp = a })++instance FromXML MovingAddressStatus where+    parseXML x = MovingAddressStatus+        <$> x .@? "moveStatus"+        <*> x .@? "publicIp"++instance ToQuery MovingAddressStatus where+    toQuery MovingAddressStatus{..} = mconcat+        [ "MoveStatus" =? _masMoveStatus+        , "PublicIp"   =? _masPublicIp+        ]++data LaunchPermission = LaunchPermission+    { _lpGroup  :: Maybe PermissionGroup+    , _lpUserId :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'LaunchPermission' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lpGroup' @::@ 'Maybe' 'PermissionGroup'+--+-- * 'lpUserId' @::@ 'Maybe' 'Text'+--+launchPermission :: LaunchPermission+launchPermission = LaunchPermission+    { _lpUserId = Nothing+    , _lpGroup  = Nothing+    }++-- | The name of the group.+lpGroup :: Lens' LaunchPermission (Maybe PermissionGroup)+lpGroup = lens _lpGroup (\s a -> s { _lpGroup = a })++-- | The AWS account ID.+lpUserId :: Lens' LaunchPermission (Maybe Text)+lpUserId = lens _lpUserId (\s a -> s { _lpUserId = a })++instance FromXML LaunchPermission where+    parseXML x = LaunchPermission+        <$> x .@? "group"+        <*> x .@? "userId"++instance ToQuery LaunchPermission where+    toQuery LaunchPermission{..} = mconcat+        [ "Group"  =? _lpGroup+        , "UserId" =? _lpUserId+        ]++data RouteState+    = RSActive    -- ^ active+    | RSBlackhole -- ^ blackhole+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable RouteState++instance FromText RouteState where+    parser = takeLowerText >>= \case+        "active"    -> pure RSActive+        "blackhole" -> pure RSBlackhole+        e           -> fail $+            "Failure parsing RouteState from " ++ show e++instance ToText RouteState where+    toText = \case+        RSActive    -> "active"+        RSBlackhole -> "blackhole"++instance ToByteString RouteState+instance ToHeader     RouteState+instance ToQuery      RouteState++instance FromXML RouteState where+    parseXML = parseXMLText "RouteState"++data RouteTableAssociation = RouteTableAssociation+    { _rtaMain                    :: Maybe Bool+    , _rtaRouteTableAssociationId :: Maybe Text+    , _rtaRouteTableId            :: Maybe Text+    , _rtaSubnetId                :: Maybe Text+    } deriving (Eq, Ord, Read, Show)++-- | 'RouteTableAssociation' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rtaMain' @::@ 'Maybe' 'Bool'+--+-- * 'rtaRouteTableAssociationId' @::@ 'Maybe' 'Text'+--+-- * 'rtaRouteTableId' @::@ 'Maybe' 'Text'+--+-- * 'rtaSubnetId' @::@ 'Maybe' 'Text'+--+routeTableAssociation :: RouteTableAssociation+routeTableAssociation = RouteTableAssociation+    { _rtaRouteTableAssociationId = Nothing+    , _rtaRouteTableId            = Nothing+    , _rtaSubnetId                = Nothing+    , _rtaMain                    = Nothing+    }++-- | Indicates whether this is the main route table.+rtaMain :: Lens' RouteTableAssociation (Maybe Bool)+rtaMain = lens _rtaMain (\s a -> s { _rtaMain = a })++-- | The ID of the association between a route table and a subnet.+rtaRouteTableAssociationId :: Lens' RouteTableAssociation (Maybe Text)+rtaRouteTableAssociationId =+    lens _rtaRouteTableAssociationId+        (\s a -> s { _rtaRouteTableAssociationId = a })++-- | The ID of the route table.+rtaRouteTableId :: Lens' RouteTableAssociation (Maybe Text)+rtaRouteTableId = lens _rtaRouteTableId (\s a -> s { _rtaRouteTableId = a })++-- | The ID of the subnet.+rtaSubnetId :: Lens' RouteTableAssociation (Maybe Text)+rtaSubnetId = lens _rtaSubnetId (\s a -> s { _rtaSubnetId = a })++instance FromXML RouteTableAssociation where+    parseXML x = RouteTableAssociation+        <$> x .@? "main"+        <*> x .@? "routeTableAssociationId"+        <*> x .@? "routeTableId"+        <*> x .@? "subnetId"++instance ToQuery RouteTableAssociation where+    toQuery RouteTableAssociation{..} = mconcat+        [ "Main"                    =? _rtaMain+        , "RouteTableAssociationId" =? _rtaRouteTableAssociationId+        , "RouteTableId"            =? _rtaRouteTableId+        , "SubnetId"                =? _rtaSubnetId+        ]++data BundleTaskState+    = BTSBundling           -- ^ bundling+    | BTSCancelling         -- ^ cancelling+    | BTSComplete           -- ^ complete+    | BTSFailed             -- ^ failed+    | BTSPending            -- ^ pending+    | BTSStoring            -- ^ storing+    | BTSWaitingForShutdown -- ^ waiting-for-shutdown+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable BundleTaskState++instance FromText BundleTaskState where+    parser = takeLowerText >>= \case+        "bundling"             -> pure BTSBundling+        "cancelling"           -> pure BTSCancelling+        "complete"             -> pure BTSComplete+        "failed"               -> pure BTSFailed+        "pending"              -> pure BTSPending+        "storing"              -> pure BTSStoring+        "waiting-for-shutdown" -> pure BTSWaitingForShutdown+        e                      -> fail $+            "Failure parsing BundleTaskState from " ++ show e++instance ToText BundleTaskState where+    toText = \case+        BTSBundling           -> "bundling"+        BTSCancelling         -> "cancelling"+        BTSComplete           -> "complete"+        BTSFailed             -> "failed"+        BTSPending            -> "pending"+        BTSStoring            -> "storing"+        BTSWaitingForShutdown -> "waiting-for-shutdown"++instance ToByteString BundleTaskState+instance ToHeader     BundleTaskState+instance ToQuery      BundleTaskState++instance FromXML BundleTaskState where+    parseXML = parseXMLText "BundleTaskState"++data PortRange = PortRange+    { _prFrom :: Maybe Int+    , _prTo   :: Maybe Int+    } deriving (Eq, Ord, Read, Show)++-- | 'PortRange' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'prFrom' @::@ 'Maybe' 'Int'+--+-- * 'prTo' @::@ 'Maybe' 'Int'+--+portRange :: PortRange+portRange = PortRange+    { _prFrom = Nothing+    , _prTo   = Nothing+    }++-- | The first port in the range.+prFrom :: Lens' PortRange (Maybe Int)+prFrom = lens _prFrom (\s a -> s { _prFrom = a })++-- | The last port in the range.+prTo :: Lens' PortRange (Maybe Int)+prTo = lens _prTo (\s a -> s { _prTo = a })++instance FromXML PortRange where+    parseXML x = PortRange+        <$> x .@? "from"+        <*> x .@? "to"++instance ToQuery PortRange where+    toQuery PortRange{..} = mconcat+        [ "From" =? _prFrom+        , "To"   =? _prTo+        ]++data VpcAttributeName+    = EnableDnsHostnames -- ^ enableDnsHostnames+    | EnableDnsSupport   -- ^ enableDnsSupport+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable VpcAttributeName++instance FromText VpcAttributeName where+    parser = takeLowerText >>= \case+        "enablednshostnames" -> pure EnableDnsHostnames+        "enablednssupport"   -> pure EnableDnsSupport+        e                    -> fail $+            "Failure parsing VpcAttributeName from " ++ show e++instance ToText VpcAttributeName where+    toText = \case+        EnableDnsHostnames -> "enableDnsHostnames"+        EnableDnsSupport   -> "enableDnsSupport"++instance ToByteString VpcAttributeName+instance ToHeader     VpcAttributeName+instance ToQuery      VpcAttributeName++instance FromXML VpcAttributeName where+    parseXML = parseXMLText "VpcAttributeName"++data ReservedInstancesConfiguration = ReservedInstancesConfiguration+    { _ricAvailabilityZone :: Maybe Text+    , _ricInstanceCount    :: Maybe Int+    , _ricInstanceType     :: Maybe InstanceType+    , _ricPlatform         :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'ReservedInstancesConfiguration' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ricAvailabilityZone' @::@ 'Maybe' 'Text'+--+-- * 'ricInstanceCount' @::@ 'Maybe' 'Int'+--+-- * 'ricInstanceType' @::@ 'Maybe' 'InstanceType'+--+-- * 'ricPlatform' @::@ 'Maybe' 'Text'+--+reservedInstancesConfiguration :: ReservedInstancesConfiguration+reservedInstancesConfiguration = ReservedInstancesConfiguration+    { _ricAvailabilityZone = Nothing+    , _ricPlatform         = Nothing+    , _ricInstanceCount    = Nothing+    , _ricInstanceType     = Nothing+    }++-- | The Availability Zone for the modified Reserved Instances.+ricAvailabilityZone :: Lens' ReservedInstancesConfiguration (Maybe Text)+ricAvailabilityZone =+    lens _ricAvailabilityZone (\s a -> s { _ricAvailabilityZone = a })++-- | The number of modified Reserved Instances.+ricInstanceCount :: Lens' ReservedInstancesConfiguration (Maybe Int)+ricInstanceCount = lens _ricInstanceCount (\s a -> s { _ricInstanceCount = a })++-- | The instance type for the modified Reserved Instances.+ricInstanceType :: Lens' ReservedInstancesConfiguration (Maybe InstanceType)+ricInstanceType = lens _ricInstanceType (\s a -> s { _ricInstanceType = a })++-- | The network platform of the modified Reserved Instances, which is either+-- EC2-Classic or EC2-VPC.+ricPlatform :: Lens' ReservedInstancesConfiguration (Maybe Text)+ricPlatform = lens _ricPlatform (\s a -> s { _ricPlatform = a })++instance FromXML ReservedInstancesConfiguration where+    parseXML x = ReservedInstancesConfiguration+        <$> x .@? "availabilityZone"+        <*> x .@? "instanceCount"+        <*> x .@? "instanceType"+        <*> x .@? "platform"++instance ToQuery ReservedInstancesConfiguration where+    toQuery ReservedInstancesConfiguration{..} = mconcat+        [ "AvailabilityZone" =? _ricAvailabilityZone+        , "InstanceCount"    =? _ricInstanceCount+        , "InstanceType"     =? _ricInstanceType+        , "Platform"         =? _ricPlatform+        ]++data VolumeStatusDetails = VolumeStatusDetails+    { _vsdName   :: Maybe VolumeStatusName+    , _vsdStatus :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'VolumeStatusDetails' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'vsdName' @::@ 'Maybe' 'VolumeStatusName'+--+-- * 'vsdStatus' @::@ 'Maybe' 'Text'+--+volumeStatusDetails :: VolumeStatusDetails+volumeStatusDetails = VolumeStatusDetails+    { _vsdName   = Nothing+    , _vsdStatus = Nothing+    }++-- | The name of the volume status.+vsdName :: Lens' VolumeStatusDetails (Maybe VolumeStatusName)+vsdName = lens _vsdName (\s a -> s { _vsdName = a })++-- | The intended status of the volume status.+vsdStatus :: Lens' VolumeStatusDetails (Maybe Text)+vsdStatus = lens _vsdStatus (\s a -> s { _vsdStatus = a })++instance FromXML VolumeStatusDetails where+    parseXML x = VolumeStatusDetails+        <$> x .@? "name"+        <*> x .@? "status"++instance ToQuery VolumeStatusDetails where+    toQuery VolumeStatusDetails{..} = mconcat+        [ "Name"   =? _vsdName+        , "Status" =? _vsdStatus+        ]++data SpotInstanceState+    = SISActive    -- ^ active+    | SISCancelled -- ^ cancelled+    | SISClosed    -- ^ closed+    | SISFailed    -- ^ failed+    | SISOpen      -- ^ open+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable SpotInstanceState++instance FromText SpotInstanceState where+    parser = takeLowerText >>= \case+        "active"    -> pure SISActive+        "cancelled" -> pure SISCancelled+        "closed"    -> pure SISClosed+        "failed"    -> pure SISFailed+        "open"      -> pure SISOpen+        e           -> fail $+            "Failure parsing SpotInstanceState from " ++ show e++instance ToText SpotInstanceState where+    toText = \case+        SISActive    -> "active"+        SISCancelled -> "cancelled"+        SISClosed    -> "closed"+        SISFailed    -> "failed"+        SISOpen      -> "open"++instance ToByteString SpotInstanceState+instance ToHeader     SpotInstanceState+instance ToQuery      SpotInstanceState++instance FromXML SpotInstanceState where+    parseXML = parseXMLText "SpotInstanceState"++newtype VpnConnectionOptions = VpnConnectionOptions+    { _vcoStaticRoutesOnly :: Maybe Bool+    } deriving (Eq, Ord, Read, Show)++-- | 'VpnConnectionOptions' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'vcoStaticRoutesOnly' @::@ 'Maybe' 'Bool'+--+vpnConnectionOptions :: VpnConnectionOptions+vpnConnectionOptions = VpnConnectionOptions+    { _vcoStaticRoutesOnly = Nothing+    }++-- | Indicates whether the VPN connection uses static routes only. Static routes+-- must be used for devices that don't support BGP.+vcoStaticRoutesOnly :: Lens' VpnConnectionOptions (Maybe Bool)+vcoStaticRoutesOnly =+    lens _vcoStaticRoutesOnly (\s a -> s { _vcoStaticRoutesOnly = a })++instance FromXML VpnConnectionOptions where+    parseXML x = VpnConnectionOptions+        <$> x .@? "staticRoutesOnly"++instance ToQuery VpnConnectionOptions where+    toQuery VpnConnectionOptions{..} = mconcat+        [ "StaticRoutesOnly" =? _vcoStaticRoutesOnly+        ]++data UserIdGroupPair = UserIdGroupPair+    { _uigpGroupId   :: Maybe Text+    , _uigpGroupName :: Maybe Text+    , _uigpUserId    :: Maybe Text+    } deriving (Eq, Ord, Read, Show)++-- | 'UserIdGroupPair' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'uigpGroupId' @::@ 'Maybe' 'Text'+--+-- * 'uigpGroupName' @::@ 'Maybe' 'Text'+--+-- * 'uigpUserId' @::@ 'Maybe' 'Text'+--+userIdGroupPair :: UserIdGroupPair+userIdGroupPair = UserIdGroupPair+    { _uigpUserId    = Nothing+    , _uigpGroupName = Nothing+    , _uigpGroupId   = Nothing+    }++-- | The ID of the security group.+uigpGroupId :: Lens' UserIdGroupPair (Maybe Text)+uigpGroupId = lens _uigpGroupId (\s a -> s { _uigpGroupId = a })++-- | The name of the security group. In a request, use this parameter for a+-- security group in EC2-Classic or a default VPC only. For a security group in+-- a nondefault VPC, use 'GroupId'.+uigpGroupName :: Lens' UserIdGroupPair (Maybe Text)+uigpGroupName = lens _uigpGroupName (\s a -> s { _uigpGroupName = a })++-- | The ID of an AWS account. EC2-Classic only.+uigpUserId :: Lens' UserIdGroupPair (Maybe Text)+uigpUserId = lens _uigpUserId (\s a -> s { _uigpUserId = a })++instance FromXML UserIdGroupPair where+    parseXML x = UserIdGroupPair+        <$> x .@? "groupId"+        <*> x .@? "groupName"+        <*> x .@? "userId"++instance ToQuery UserIdGroupPair where+    toQuery UserIdGroupPair{..} = mconcat+        [ "GroupId"   =? _uigpGroupId+        , "GroupName" =? _uigpGroupName+        , "UserId"    =? _uigpUserId+        ]++data InstanceStatusSummary = InstanceStatusSummary+    { _issDetails :: List "item" InstanceStatusDetails+    , _issStatus  :: Maybe SummaryStatus+    } deriving (Eq, Read, Show)++-- | 'InstanceStatusSummary' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'issDetails' @::@ ['InstanceStatusDetails']+--+-- * 'issStatus' @::@ 'Maybe' 'SummaryStatus'+--+instanceStatusSummary :: InstanceStatusSummary+instanceStatusSummary = InstanceStatusSummary+    { _issStatus  = Nothing+    , _issDetails = mempty+    }++-- | The system instance health or application instance health.+issDetails :: Lens' InstanceStatusSummary [InstanceStatusDetails]+issDetails = lens _issDetails (\s a -> s { _issDetails = a }) . _List++-- | The status.+issStatus :: Lens' InstanceStatusSummary (Maybe SummaryStatus)+issStatus = lens _issStatus (\s a -> s { _issStatus = a })++instance FromXML InstanceStatusSummary where+    parseXML x = InstanceStatusSummary+        <$> x .@? "details" .!@ mempty+        <*> x .@? "status"++instance ToQuery InstanceStatusSummary where+    toQuery InstanceStatusSummary{..} = mconcat+        [ "Details" `toQueryList` _issDetails+        , "Status"  =? _issStatus+        ]++data SpotPlacement = SpotPlacement+    { _sp1AvailabilityZone :: Maybe Text+    , _sp1GroupName        :: Maybe Text+    } deriving (Eq, Ord, Read, Show)++-- | 'SpotPlacement' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'sp1AvailabilityZone' @::@ 'Maybe' 'Text'+--+-- * 'sp1GroupName' @::@ 'Maybe' 'Text'+--+spotPlacement :: SpotPlacement+spotPlacement = SpotPlacement+    { _sp1AvailabilityZone = Nothing+    , _sp1GroupName        = Nothing+    }++-- | The Availability Zone.+sp1AvailabilityZone :: Lens' SpotPlacement (Maybe Text)+sp1AvailabilityZone =+    lens _sp1AvailabilityZone (\s a -> s { _sp1AvailabilityZone = a })++-- | The name of the placement group (for cluster instances).+sp1GroupName :: Lens' SpotPlacement (Maybe Text)+sp1GroupName = lens _sp1GroupName (\s a -> s { _sp1GroupName = a })++instance FromXML SpotPlacement where+    parseXML x = SpotPlacement+        <$> x .@? "availabilityZone"+        <*> x .@? "groupName"++instance ToQuery SpotPlacement where+    toQuery SpotPlacement{..} = mconcat+        [ "AvailabilityZone" =? _sp1AvailabilityZone+        , "GroupName"        =? _sp1GroupName+        ]++data EbsInstanceBlockDeviceSpecification = EbsInstanceBlockDeviceSpecification+    { _eibdsDeleteOnTermination :: Maybe Bool+    , _eibdsVolumeId            :: Maybe Text+    } deriving (Eq, Ord, Read, Show)++-- | 'EbsInstanceBlockDeviceSpecification' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'eibdsDeleteOnTermination' @::@ 'Maybe' 'Bool'+--+-- * 'eibdsVolumeId' @::@ 'Maybe' 'Text'+--+ebsInstanceBlockDeviceSpecification :: EbsInstanceBlockDeviceSpecification+ebsInstanceBlockDeviceSpecification = EbsInstanceBlockDeviceSpecification+    { _eibdsVolumeId            = Nothing+    , _eibdsDeleteOnTermination = Nothing+    }++-- | Indicates whether the volume is deleted on instance termination.+eibdsDeleteOnTermination :: Lens' EbsInstanceBlockDeviceSpecification (Maybe Bool)+eibdsDeleteOnTermination =+    lens _eibdsDeleteOnTermination+        (\s a -> s { _eibdsDeleteOnTermination = a })++-- | The ID of the EBS volume.+eibdsVolumeId :: Lens' EbsInstanceBlockDeviceSpecification (Maybe Text)+eibdsVolumeId = lens _eibdsVolumeId (\s a -> s { _eibdsVolumeId = a })++instance FromXML EbsInstanceBlockDeviceSpecification where+    parseXML x = EbsInstanceBlockDeviceSpecification+        <$> x .@? "deleteOnTermination"+        <*> x .@? "volumeId"++instance ToQuery EbsInstanceBlockDeviceSpecification where+    toQuery EbsInstanceBlockDeviceSpecification{..} = mconcat+        [ "DeleteOnTermination" =? _eibdsDeleteOnTermination+        , "VolumeId"            =? _eibdsVolumeId+        ]++data NetworkAclAssociation = NetworkAclAssociation+    { _naaNetworkAclAssociationId :: Maybe Text+    , _naaNetworkAclId            :: Maybe Text+    , _naaSubnetId                :: Maybe Text+    } deriving (Eq, Ord, Read, Show)++-- | 'NetworkAclAssociation' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'naaNetworkAclAssociationId' @::@ 'Maybe' 'Text'+--+-- * 'naaNetworkAclId' @::@ 'Maybe' 'Text'+--+-- * 'naaSubnetId' @::@ 'Maybe' 'Text'+--+networkAclAssociation :: NetworkAclAssociation+networkAclAssociation = NetworkAclAssociation+    { _naaNetworkAclAssociationId = Nothing+    , _naaNetworkAclId            = Nothing+    , _naaSubnetId                = Nothing+    }++-- | The ID of the association between a network ACL and a subnet.+naaNetworkAclAssociationId :: Lens' NetworkAclAssociation (Maybe Text)+naaNetworkAclAssociationId =+    lens _naaNetworkAclAssociationId+        (\s a -> s { _naaNetworkAclAssociationId = a })++-- | The ID of the network ACL.+naaNetworkAclId :: Lens' NetworkAclAssociation (Maybe Text)+naaNetworkAclId = lens _naaNetworkAclId (\s a -> s { _naaNetworkAclId = a })++-- | The ID of the subnet.+naaSubnetId :: Lens' NetworkAclAssociation (Maybe Text)+naaSubnetId = lens _naaSubnetId (\s a -> s { _naaSubnetId = a })++instance FromXML NetworkAclAssociation where+    parseXML x = NetworkAclAssociation+        <$> x .@? "networkAclAssociationId"+        <*> x .@? "networkAclId"+        <*> x .@? "subnetId"++instance ToQuery NetworkAclAssociation where+    toQuery NetworkAclAssociation{..} = mconcat+        [ "NetworkAclAssociationId" =? _naaNetworkAclAssociationId+        , "NetworkAclId"            =? _naaNetworkAclId+        , "SubnetId"                =? _naaSubnetId+        ]++data BundleTask = BundleTask+    { _btBundleId        :: Text+    , _btBundleTaskError :: Maybe BundleTaskError+    , _btInstanceId      :: Text+    , _btProgress        :: Text+    , _btStartTime       :: ISO8601+    , _btState           :: BundleTaskState+    , _btStorage         :: Storage+    , _btUpdateTime      :: ISO8601+    } deriving (Eq, Read, Show)++-- | 'BundleTask' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'btBundleId' @::@ 'Text'+--+-- * 'btBundleTaskError' @::@ 'Maybe' 'BundleTaskError'+--+-- * 'btInstanceId' @::@ 'Text'+--+-- * 'btProgress' @::@ 'Text'+--+-- * 'btStartTime' @::@ 'UTCTime'+--+-- * 'btState' @::@ 'BundleTaskState'+--+-- * 'btStorage' @::@ 'Storage'+--+-- * 'btUpdateTime' @::@ 'UTCTime'+--+bundleTask :: Text -- ^ 'btInstanceId'+           -> Text -- ^ 'btBundleId'+           -> BundleTaskState -- ^ 'btState'+           -> UTCTime -- ^ 'btStartTime'+           -> UTCTime -- ^ 'btUpdateTime'+           -> Storage -- ^ 'btStorage'+           -> Text -- ^ 'btProgress'+           -> BundleTask+bundleTask p1 p2 p3 p4 p5 p6 p7 = BundleTask+    { _btInstanceId      = p1+    , _btBundleId        = p2+    , _btState           = p3+    , _btStartTime       = withIso _Time (const id) p4+    , _btUpdateTime      = withIso _Time (const id) p5+    , _btStorage         = p6+    , _btProgress        = p7+    , _btBundleTaskError = Nothing+    }++-- | The ID of the bundle task.+btBundleId :: Lens' BundleTask Text+btBundleId = lens _btBundleId (\s a -> s { _btBundleId = a })++-- | If the task fails, a description of the error.+btBundleTaskError :: Lens' BundleTask (Maybe BundleTaskError)+btBundleTaskError =+    lens _btBundleTaskError (\s a -> s { _btBundleTaskError = a })++-- | The ID of the instance associated with this bundle task.+btInstanceId :: Lens' BundleTask Text+btInstanceId = lens _btInstanceId (\s a -> s { _btInstanceId = a })++-- | The level of task completion, as a percent (for example, 20%).+btProgress :: Lens' BundleTask Text+btProgress = lens _btProgress (\s a -> s { _btProgress = a })++-- | The time this task started.+btStartTime :: Lens' BundleTask UTCTime+btStartTime = lens _btStartTime (\s a -> s { _btStartTime = a }) . _Time++-- | The state of the task.+btState :: Lens' BundleTask BundleTaskState+btState = lens _btState (\s a -> s { _btState = a })++-- | The Amazon S3 storage locations.+btStorage :: Lens' BundleTask Storage+btStorage = lens _btStorage (\s a -> s { _btStorage = a })++-- | The time of the most recent update for the task.+btUpdateTime :: Lens' BundleTask UTCTime+btUpdateTime = lens _btUpdateTime (\s a -> s { _btUpdateTime = a }) . _Time++instance FromXML BundleTask where+    parseXML x = BundleTask+        <$> x .@  "bundleId"+        <*> x .@? "error"+        <*> x .@  "instanceId"+        <*> x .@  "progress"+        <*> x .@  "startTime"+        <*> x .@  "state"+        <*> x .@  "storage"+        <*> x .@  "updateTime"++instance ToQuery BundleTask where+    toQuery BundleTask{..} = mconcat+        [ "BundleId"   =? _btBundleId+        , "Error"      =? _btBundleTaskError+        , "InstanceId" =? _btInstanceId+        , "Progress"   =? _btProgress+        , "StartTime"  =? _btStartTime+        , "State"      =? _btState+        , "Storage"    =? _btStorage+        , "UpdateTime" =? _btUpdateTime+        ]++data InstanceStatusEvent = InstanceStatusEvent+    { _iseCode        :: Maybe EventCode+    , _iseDescription :: Maybe Text+    , _iseNotAfter    :: Maybe ISO8601+    , _iseNotBefore   :: Maybe ISO8601+    } deriving (Eq, Read, Show)++-- | 'InstanceStatusEvent' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'iseCode' @::@ 'Maybe' 'EventCode'+--+-- * 'iseDescription' @::@ 'Maybe' 'Text'+--+-- * 'iseNotAfter' @::@ 'Maybe' 'UTCTime'+--+-- * 'iseNotBefore' @::@ 'Maybe' 'UTCTime'+--+instanceStatusEvent :: InstanceStatusEvent+instanceStatusEvent = InstanceStatusEvent+    { _iseCode        = Nothing+    , _iseDescription = Nothing+    , _iseNotBefore   = Nothing+    , _iseNotAfter    = Nothing+    }++-- | The event code.+iseCode :: Lens' InstanceStatusEvent (Maybe EventCode)+iseCode = lens _iseCode (\s a -> s { _iseCode = a })++-- | A description of the event.+--+-- After a scheduled event is completed, it can still be described for up to a+-- week. If the event has been completed, this description starts with the+-- following text: [Completed].+iseDescription :: Lens' InstanceStatusEvent (Maybe Text)+iseDescription = lens _iseDescription (\s a -> s { _iseDescription = a })++-- | The latest scheduled end time for the event.+iseNotAfter :: Lens' InstanceStatusEvent (Maybe UTCTime)+iseNotAfter = lens _iseNotAfter (\s a -> s { _iseNotAfter = a }) . mapping _Time++-- | The earliest scheduled start time for the event.+iseNotBefore :: Lens' InstanceStatusEvent (Maybe UTCTime)+iseNotBefore = lens _iseNotBefore (\s a -> s { _iseNotBefore = a }) . mapping _Time++instance FromXML InstanceStatusEvent where+    parseXML x = InstanceStatusEvent+        <$> x .@? "code"+        <*> x .@? "description"+        <*> x .@? "notAfter"+        <*> x .@? "notBefore"++instance ToQuery InstanceStatusEvent where+    toQuery InstanceStatusEvent{..} = mconcat+        [ "Code"        =? _iseCode+        , "Description" =? _iseDescription+        , "NotAfter"    =? _iseNotAfter+        , "NotBefore"   =? _iseNotBefore+        ]++data InstanceType+    = C1_Medium   -- ^ c1.medium+    | C1_XLarge   -- ^ c1.xlarge+    | C3_2XLarge  -- ^ c3.2xlarge+    | C3_4XLarge  -- ^ c3.4xlarge+    | C3_8XLarge  -- ^ c3.8xlarge+    | C3_Large    -- ^ c3.large+    | C3_XLarge   -- ^ c3.xlarge+    | C4_2XLarge  -- ^ c4.2xlarge+    | C4_4XLarge  -- ^ c4.4xlarge+    | C4_8XLarge  -- ^ c4.8xlarge+    | C4_Large    -- ^ c4.large+    | C4_XLarge   -- ^ c4.xlarge+    | CC1_4XLarge -- ^ cc1.4xlarge+    | CC2_8XLarge -- ^ cc2.8xlarge+    | CG1_4XLarge -- ^ cg1.4xlarge+    | CR1_8XLarge -- ^ cr1.8xlarge+    | D2_2XLarge  -- ^ d2.2xlarge+    | D2_4XLarge  -- ^ d2.4xlarge+    | D2_8XLarge  -- ^ d2.8xlarge+    | D2_XLarge   -- ^ d2.xlarge+    | G2_2XLarge  -- ^ g2.2xlarge+    | HI1_4XLarge -- ^ hi1.4xlarge+    | HS1_8XLarge -- ^ hs1.8xlarge+    | I2_2XLarge  -- ^ i2.2xlarge+    | I2_4XLarge  -- ^ i2.4xlarge+    | I2_8XLarge  -- ^ i2.8xlarge+    | I2_XLarge   -- ^ i2.xlarge+    | M1_Large    -- ^ m1.large+    | M1_Medium   -- ^ m1.medium+    | M1_Small    -- ^ m1.small+    | M1_XLarge   -- ^ m1.xlarge+    | M2_2XLarge  -- ^ m2.2xlarge+    | M2_4XLarge  -- ^ m2.4xlarge+    | M2_XLarge   -- ^ m2.xlarge+    | M3_2XLarge  -- ^ m3.2xlarge+    | M3_Large    -- ^ m3.large+    | M3_Medium   -- ^ m3.medium+    | M3_XLarge   -- ^ m3.xlarge+    | R3_2XLarge  -- ^ r3.2xlarge+    | R3_4XLarge  -- ^ r3.4xlarge+    | R3_8XLarge  -- ^ r3.8xlarge+    | R3_Large    -- ^ r3.large+    | R3_XLarge   -- ^ r3.xlarge+    | T1_Micro    -- ^ t1.micro+    | T2_Medium   -- ^ t2.medium+    | T2_Micro    -- ^ t2.micro+    | T2_Small    -- ^ t2.small+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable InstanceType++instance FromText InstanceType where+    parser = takeLowerText >>= \case+        "c1.medium"   -> pure C1_Medium+        "c1.xlarge"   -> pure C1_XLarge+        "c3.2xlarge"  -> pure C3_2XLarge+        "c3.4xlarge"  -> pure C3_4XLarge+        "c3.8xlarge"  -> pure C3_8XLarge+        "c3.large"    -> pure C3_Large+        "c3.xlarge"   -> pure C3_XLarge+        "c4.2xlarge"  -> pure C4_2XLarge+        "c4.4xlarge"  -> pure C4_4XLarge+        "c4.8xlarge"  -> pure C4_8XLarge+        "c4.large"    -> pure C4_Large+        "c4.xlarge"   -> pure C4_XLarge+        "cc1.4xlarge" -> pure CC1_4XLarge+        "cc2.8xlarge" -> pure CC2_8XLarge+        "cg1.4xlarge" -> pure CG1_4XLarge+        "cr1.8xlarge" -> pure CR1_8XLarge+        "d2.2xlarge"  -> pure D2_2XLarge+        "d2.4xlarge"  -> pure D2_4XLarge+        "d2.8xlarge"  -> pure D2_8XLarge+        "d2.xlarge"   -> pure D2_XLarge+        "g2.2xlarge"  -> pure G2_2XLarge+        "hi1.4xlarge" -> pure HI1_4XLarge+        "hs1.8xlarge" -> pure HS1_8XLarge+        "i2.2xlarge"  -> pure I2_2XLarge+        "i2.4xlarge"  -> pure I2_4XLarge+        "i2.8xlarge"  -> pure I2_8XLarge+        "i2.xlarge"   -> pure I2_XLarge+        "m1.large"    -> pure M1_Large+        "m1.medium"   -> pure M1_Medium+        "m1.small"    -> pure M1_Small+        "m1.xlarge"   -> pure M1_XLarge+        "m2.2xlarge"  -> pure M2_2XLarge+        "m2.4xlarge"  -> pure M2_4XLarge+        "m2.xlarge"   -> pure M2_XLarge+        "m3.2xlarge"  -> pure M3_2XLarge+        "m3.large"    -> pure M3_Large+        "m3.medium"   -> pure M3_Medium+        "m3.xlarge"   -> pure M3_XLarge+        "r3.2xlarge"  -> pure R3_2XLarge+        "r3.4xlarge"  -> pure R3_4XLarge+        "r3.8xlarge"  -> pure R3_8XLarge+        "r3.large"    -> pure R3_Large+        "r3.xlarge"   -> pure R3_XLarge+        "t1.micro"    -> pure T1_Micro+        "t2.medium"   -> pure T2_Medium+        "t2.micro"    -> pure T2_Micro+        "t2.small"    -> pure T2_Small+        e             -> fail $+            "Failure parsing InstanceType from " ++ show e++instance ToText InstanceType where+    toText = \case+        C1_Medium   -> "c1.medium"+        C1_XLarge   -> "c1.xlarge"+        C3_2XLarge  -> "c3.2xlarge"+        C3_4XLarge  -> "c3.4xlarge"+        C3_8XLarge  -> "c3.8xlarge"+        C3_Large    -> "c3.large"+        C3_XLarge   -> "c3.xlarge"+        C4_2XLarge  -> "c4.2xlarge"+        C4_4XLarge  -> "c4.4xlarge"+        C4_8XLarge  -> "c4.8xlarge"+        C4_Large    -> "c4.large"+        C4_XLarge   -> "c4.xlarge"+        CC1_4XLarge -> "cc1.4xlarge"+        CC2_8XLarge -> "cc2.8xlarge"+        CG1_4XLarge -> "cg1.4xlarge"+        CR1_8XLarge -> "cr1.8xlarge"+        D2_2XLarge  -> "d2.2xlarge"+        D2_4XLarge  -> "d2.4xlarge"+        D2_8XLarge  -> "d2.8xlarge"+        D2_XLarge   -> "d2.xlarge"+        G2_2XLarge  -> "g2.2xlarge"+        HI1_4XLarge -> "hi1.4xlarge"+        HS1_8XLarge -> "hs1.8xlarge"+        I2_2XLarge  -> "i2.2xlarge"+        I2_4XLarge  -> "i2.4xlarge"+        I2_8XLarge  -> "i2.8xlarge"+        I2_XLarge   -> "i2.xlarge"+        M1_Large    -> "m1.large"+        M1_Medium   -> "m1.medium"+        M1_Small    -> "m1.small"+        M1_XLarge   -> "m1.xlarge"+        M2_2XLarge  -> "m2.2xlarge"+        M2_4XLarge  -> "m2.4xlarge"+        M2_XLarge   -> "m2.xlarge"+        M3_2XLarge  -> "m3.2xlarge"+        M3_Large    -> "m3.large"+        M3_Medium   -> "m3.medium"+        M3_XLarge   -> "m3.xlarge"+        R3_2XLarge  -> "r3.2xlarge"+        R3_4XLarge  -> "r3.4xlarge"+        R3_8XLarge  -> "r3.8xlarge"+        R3_Large    -> "r3.large"+        R3_XLarge   -> "r3.xlarge"+        T1_Micro    -> "t1.micro"+        T2_Medium   -> "t2.medium"+        T2_Micro    -> "t2.micro"+        T2_Small    -> "t2.small"++instance ToByteString InstanceType+instance ToHeader     InstanceType+instance ToQuery      InstanceType++instance FromXML InstanceType where+    parseXML = parseXMLText "InstanceType"++data Route = Route+    { _rDestinationCidrBlock    :: Maybe Text+    , _rDestinationPrefixListId :: Maybe Text+    , _rGatewayId               :: Maybe Text+    , _rInstanceId              :: Maybe Text+    , _rInstanceOwnerId         :: Maybe Text+    , _rNetworkInterfaceId      :: Maybe Text+    , _rOrigin                  :: Maybe RouteOrigin+    , _rState                   :: Maybe RouteState+    , _rVpcPeeringConnectionId  :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'Route' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rDestinationCidrBlock' @::@ 'Maybe' 'Text'+--+-- * 'rDestinationPrefixListId' @::@ 'Maybe' 'Text'+--+-- * 'rGatewayId' @::@ 'Maybe' 'Text'+--+-- * 'rInstanceId' @::@ 'Maybe' 'Text'+--+-- * 'rInstanceOwnerId' @::@ 'Maybe' 'Text'+--+-- * 'rNetworkInterfaceId' @::@ 'Maybe' 'Text'+--+-- * 'rOrigin' @::@ 'Maybe' 'RouteOrigin'+--+-- * 'rState' @::@ 'Maybe' 'RouteState'+--+-- * 'rVpcPeeringConnectionId' @::@ 'Maybe' 'Text'+--+route :: Route+route = Route+    { _rDestinationCidrBlock    = Nothing+    , _rDestinationPrefixListId = Nothing+    , _rGatewayId               = Nothing+    , _rInstanceId              = Nothing+    , _rInstanceOwnerId         = Nothing+    , _rNetworkInterfaceId      = Nothing+    , _rVpcPeeringConnectionId  = Nothing+    , _rState                   = Nothing+    , _rOrigin                  = Nothing+    }++-- | The CIDR block used for the destination match.+rDestinationCidrBlock :: Lens' Route (Maybe Text)+rDestinationCidrBlock =+    lens _rDestinationCidrBlock (\s a -> s { _rDestinationCidrBlock = a })++-- | The prefix of the AWS service.+rDestinationPrefixListId :: Lens' Route (Maybe Text)+rDestinationPrefixListId =+    lens _rDestinationPrefixListId+        (\s a -> s { _rDestinationPrefixListId = a })++-- | The ID of a gateway attached to your VPC.+rGatewayId :: Lens' Route (Maybe Text)+rGatewayId = lens _rGatewayId (\s a -> s { _rGatewayId = a })++-- | The ID of a NAT instance in your VPC.+rInstanceId :: Lens' Route (Maybe Text)+rInstanceId = lens _rInstanceId (\s a -> s { _rInstanceId = a })++-- | The AWS account ID of the owner of the instance.+rInstanceOwnerId :: Lens' Route (Maybe Text)+rInstanceOwnerId = lens _rInstanceOwnerId (\s a -> s { _rInstanceOwnerId = a })++-- | The ID of the network interface.+rNetworkInterfaceId :: Lens' Route (Maybe Text)+rNetworkInterfaceId =+    lens _rNetworkInterfaceId (\s a -> s { _rNetworkInterfaceId = a })++-- | Describes how the route was created.+--+-- 'CreateRouteTable' indicates that route was automatically created when the+-- route table was created.  'CreateRoute' indicates that the route was manually+-- added to the route table.  'EnableVgwRoutePropagation' indicates that the route+-- was propagated by route propagation.+rOrigin :: Lens' Route (Maybe RouteOrigin)+rOrigin = lens _rOrigin (\s a -> s { _rOrigin = a })++-- | The state of the route. The 'blackhole' state indicates that the route's target+-- isn't available (for example, the specified gateway isn't attached to the+-- VPC, or the specified NAT instance has been terminated).+rState :: Lens' Route (Maybe RouteState)+rState = lens _rState (\s a -> s { _rState = a })++-- | The ID of the VPC peering connection.+rVpcPeeringConnectionId :: Lens' Route (Maybe Text)+rVpcPeeringConnectionId =+    lens _rVpcPeeringConnectionId (\s a -> s { _rVpcPeeringConnectionId = a })++instance FromXML Route where+    parseXML x = Route+        <$> x .@? "destinationCidrBlock"+        <*> x .@? "destinationPrefixListId"+        <*> x .@? "gatewayId"+        <*> x .@? "instanceId"+        <*> x .@? "instanceOwnerId"+        <*> x .@? "networkInterfaceId"+        <*> x .@? "origin"+        <*> x .@? "state"+        <*> x .@? "vpcPeeringConnectionId"++instance ToQuery Route where+    toQuery Route{..} = mconcat+        [ "DestinationCidrBlock"    =? _rDestinationCidrBlock+        , "DestinationPrefixListId" =? _rDestinationPrefixListId+        , "GatewayId"               =? _rGatewayId+        , "InstanceId"              =? _rInstanceId+        , "InstanceOwnerId"         =? _rInstanceOwnerId+        , "NetworkInterfaceId"      =? _rNetworkInterfaceId+        , "Origin"                  =? _rOrigin+        , "State"                   =? _rState+        , "VpcPeeringConnectionId"  =? _rVpcPeeringConnectionId+        ]++data SpotDatafeedSubscription = SpotDatafeedSubscription+    { _sdsBucket  :: Maybe Text+    , _sdsFault   :: Maybe SpotInstanceStateFault+    , _sdsOwnerId :: Maybe Text+    , _sdsPrefix  :: Maybe Text+    , _sdsState   :: Maybe DatafeedSubscriptionState+    } deriving (Eq, Read, Show)++-- | 'SpotDatafeedSubscription' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'sdsBucket' @::@ 'Maybe' 'Text'+--+-- * 'sdsFault' @::@ 'Maybe' 'SpotInstanceStateFault'+--+-- * 'sdsOwnerId' @::@ 'Maybe' 'Text'+--+-- * 'sdsPrefix' @::@ 'Maybe' 'Text'+--+-- * 'sdsState' @::@ 'Maybe' 'DatafeedSubscriptionState'+--+spotDatafeedSubscription :: SpotDatafeedSubscription+spotDatafeedSubscription = SpotDatafeedSubscription+    { _sdsOwnerId = Nothing+    , _sdsBucket  = Nothing+    , _sdsPrefix  = Nothing+    , _sdsState   = Nothing+    , _sdsFault   = Nothing+    }++-- | The Amazon S3 bucket where the Spot Instance data feed is located.+sdsBucket :: Lens' SpotDatafeedSubscription (Maybe Text)+sdsBucket = lens _sdsBucket (\s a -> s { _sdsBucket = a })++-- | The fault codes for the Spot Instance request, if any.+sdsFault :: Lens' SpotDatafeedSubscription (Maybe SpotInstanceStateFault)+sdsFault = lens _sdsFault (\s a -> s { _sdsFault = a })++-- | The AWS account ID of the account.+sdsOwnerId :: Lens' SpotDatafeedSubscription (Maybe Text)+sdsOwnerId = lens _sdsOwnerId (\s a -> s { _sdsOwnerId = a })++-- | The prefix that is prepended to data feed files.+sdsPrefix :: Lens' SpotDatafeedSubscription (Maybe Text)+sdsPrefix = lens _sdsPrefix (\s a -> s { _sdsPrefix = a })++-- | The state of the Spot Instance data feed subscription.+sdsState :: Lens' SpotDatafeedSubscription (Maybe DatafeedSubscriptionState)+sdsState = lens _sdsState (\s a -> s { _sdsState = a })++instance FromXML SpotDatafeedSubscription where+    parseXML x = SpotDatafeedSubscription+        <$> x .@? "bucket"+        <*> x .@? "fault"+        <*> x .@? "ownerId"+        <*> x .@? "prefix"+        <*> x .@? "state"++instance ToQuery SpotDatafeedSubscription where+    toQuery SpotDatafeedSubscription{..} = mconcat+        [ "Bucket"  =? _sdsBucket+        , "Fault"   =? _sdsFault+        , "OwnerId" =? _sdsOwnerId+        , "Prefix"  =? _sdsPrefix+        , "State"   =? _sdsState+        ]++newtype Storage = Storage+    { _sS3 :: Maybe S3Storage+    } deriving (Eq, Read, Show)++-- | 'Storage' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'sS3' @::@ 'Maybe' 'S3Storage'+--+storage :: Storage+storage = Storage+    { _sS3 = Nothing+    }++-- | An Amazon S3 storage location.+sS3 :: Lens' Storage (Maybe S3Storage)+sS3 = lens _sS3 (\s a -> s { _sS3 = a })++instance FromXML Storage where+    parseXML x = Storage+        <$> x .@? "S3"++instance ToQuery Storage where+    toQuery Storage{..} = mconcat+        [ "S3" =? _sS3+        ]++data SecurityGroup = SecurityGroup+    { _sgDescription         :: Text+    , _sgGroupId             :: Text+    , _sgGroupName           :: Text+    , _sgIpPermissions       :: List "item" IpPermission+    , _sgIpPermissionsEgress :: List "item" IpPermission+    , _sgOwnerId             :: Text+    , _sgTags                :: List "item" Tag+    , _sgVpcId               :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'SecurityGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'sgDescription' @::@ 'Text'+--+-- * 'sgGroupId' @::@ 'Text'+--+-- * 'sgGroupName' @::@ 'Text'+--+-- * 'sgIpPermissions' @::@ ['IpPermission']+--+-- * 'sgIpPermissionsEgress' @::@ ['IpPermission']+--+-- * 'sgOwnerId' @::@ 'Text'+--+-- * 'sgTags' @::@ ['Tag']+--+-- * 'sgVpcId' @::@ 'Maybe' 'Text'+--+securityGroup :: Text -- ^ 'sgOwnerId'+              -> Text -- ^ 'sgGroupName'+              -> Text -- ^ 'sgGroupId'+              -> Text -- ^ 'sgDescription'+              -> SecurityGroup+securityGroup p1 p2 p3 p4 = SecurityGroup+    { _sgOwnerId             = p1+    , _sgGroupName           = p2+    , _sgGroupId             = p3+    , _sgDescription         = p4+    , _sgIpPermissions       = mempty+    , _sgIpPermissionsEgress = mempty+    , _sgVpcId               = Nothing+    , _sgTags                = mempty+    }++-- | A description of the security group.+sgDescription :: Lens' SecurityGroup Text+sgDescription = lens _sgDescription (\s a -> s { _sgDescription = a })++-- | The ID of the security group.+sgGroupId :: Lens' SecurityGroup Text+sgGroupId = lens _sgGroupId (\s a -> s { _sgGroupId = a })++-- | The name of the security group.+sgGroupName :: Lens' SecurityGroup Text+sgGroupName = lens _sgGroupName (\s a -> s { _sgGroupName = a })++-- | One or more inbound rules associated with the security group.+sgIpPermissions :: Lens' SecurityGroup [IpPermission]+sgIpPermissions = lens _sgIpPermissions (\s a -> s { _sgIpPermissions = a }) . _List++-- | [EC2-VPC] One or more outbound rules associated with the security group.+sgIpPermissionsEgress :: Lens' SecurityGroup [IpPermission]+sgIpPermissionsEgress =+    lens _sgIpPermissionsEgress (\s a -> s { _sgIpPermissionsEgress = a })+        . _List++-- | The AWS account ID of the owner of the security group.+sgOwnerId :: Lens' SecurityGroup Text+sgOwnerId = lens _sgOwnerId (\s a -> s { _sgOwnerId = a })++-- | Any tags assigned to the security group.+sgTags :: Lens' SecurityGroup [Tag]+sgTags = lens _sgTags (\s a -> s { _sgTags = a }) . _List++-- | [EC2-VPC] The ID of the VPC for the security group.+sgVpcId :: Lens' SecurityGroup (Maybe Text)+sgVpcId = lens _sgVpcId (\s a -> s { _sgVpcId = a })++instance FromXML SecurityGroup where+    parseXML x = SecurityGroup+        <$> x .@  "groupDescription"+        <*> x .@  "groupId"+        <*> x .@  "groupName"+        <*> x .@? "ipPermissions" .!@ mempty+        <*> x .@? "ipPermissionsEgress" .!@ mempty+        <*> x .@  "ownerId"+        <*> x .@? "tagSet" .!@ mempty+        <*> x .@? "vpcId"++instance ToQuery SecurityGroup where+    toQuery SecurityGroup{..} = mconcat+        [ "GroupDescription"    =? _sgDescription+        , "GroupId"             =? _sgGroupId+        , "GroupName"           =? _sgGroupName+        , "IpPermissions"       `toQueryList` _sgIpPermissions+        , "IpPermissionsEgress" `toQueryList` _sgIpPermissionsEgress+        , "OwnerId"             =? _sgOwnerId+        , "TagSet"              `toQueryList` _sgTags+        , "VpcId"               =? _sgVpcId+        ]++data CancelSpotInstanceRequestState+    = CSIRSActive    -- ^ active+    | CSIRSCancelled -- ^ cancelled+    | CSIRSClosed    -- ^ closed+    | CSIRSCompleted -- ^ completed+    | CSIRSOpen      -- ^ open+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable CancelSpotInstanceRequestState++instance FromText CancelSpotInstanceRequestState where+    parser = takeLowerText >>= \case+        "active"    -> pure CSIRSActive+        "cancelled" -> pure CSIRSCancelled+        "closed"    -> pure CSIRSClosed+        "completed" -> pure CSIRSCompleted+        "open"      -> pure CSIRSOpen+        e           -> fail $+            "Failure parsing CancelSpotInstanceRequestState from " ++ show e++instance ToText CancelSpotInstanceRequestState where+    toText = \case+        CSIRSActive    -> "active"+        CSIRSCancelled -> "cancelled"+        CSIRSClosed    -> "closed"+        CSIRSCompleted -> "completed"+        CSIRSOpen      -> "open"++instance ToByteString CancelSpotInstanceRequestState+instance ToHeader     CancelSpotInstanceRequestState+instance ToQuery      CancelSpotInstanceRequestState++instance FromXML CancelSpotInstanceRequestState where+    parseXML = parseXMLText "CancelSpotInstanceRequestState"++data PlacementGroupState+    = PGSAvailable -- ^ available+    | PGSDeleted   -- ^ deleted+    | PGSDeleting  -- ^ deleting+    | PGSPending   -- ^ pending+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable PlacementGroupState++instance FromText PlacementGroupState where+    parser = takeLowerText >>= \case+        "available" -> pure PGSAvailable+        "deleted"   -> pure PGSDeleted+        "deleting"  -> pure PGSDeleting+        "pending"   -> pure PGSPending+        e           -> fail $+            "Failure parsing PlacementGroupState from " ++ show e++instance ToText PlacementGroupState where+    toText = \case+        PGSAvailable -> "available"+        PGSDeleted   -> "deleted"+        PGSDeleting  -> "deleting"+        PGSPending   -> "pending"++instance ToByteString PlacementGroupState+instance ToHeader     PlacementGroupState+instance ToQuery      PlacementGroupState++instance FromXML PlacementGroupState where+    parseXML = parseXMLText "PlacementGroupState"++data ReservedInstancesModificationResult = ReservedInstancesModificationResult+    { _rimrReservedInstancesId :: Maybe Text+    , _rimrTargetConfiguration :: Maybe ReservedInstancesConfiguration+    } deriving (Eq, Read, Show)++-- | 'ReservedInstancesModificationResult' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rimrReservedInstancesId' @::@ 'Maybe' 'Text'+--+-- * 'rimrTargetConfiguration' @::@ 'Maybe' 'ReservedInstancesConfiguration'+--+reservedInstancesModificationResult :: ReservedInstancesModificationResult+reservedInstancesModificationResult = ReservedInstancesModificationResult+    { _rimrReservedInstancesId = Nothing+    , _rimrTargetConfiguration = Nothing+    }++-- | The ID for the Reserved Instances that were created as part of the+-- modification request. This field is only available when the modification is+-- fulfilled.+rimrReservedInstancesId :: Lens' ReservedInstancesModificationResult (Maybe Text)+rimrReservedInstancesId =+    lens _rimrReservedInstancesId (\s a -> s { _rimrReservedInstancesId = a })++-- | The target Reserved Instances configurations supplied as part of the+-- modification request.+rimrTargetConfiguration :: Lens' ReservedInstancesModificationResult (Maybe ReservedInstancesConfiguration)+rimrTargetConfiguration =+    lens _rimrTargetConfiguration (\s a -> s { _rimrTargetConfiguration = a })++instance FromXML ReservedInstancesModificationResult where+    parseXML x = ReservedInstancesModificationResult+        <$> x .@? "reservedInstancesId"+        <*> x .@? "targetConfiguration"++instance ToQuery ReservedInstancesModificationResult where+    toQuery ReservedInstancesModificationResult{..} = mconcat+        [ "ReservedInstancesId" =? _rimrReservedInstancesId+        , "TargetConfiguration" =? _rimrTargetConfiguration+        ]++data InstanceBlockDeviceMappingSpecification = InstanceBlockDeviceMappingSpecification+    { _ibdmsDeviceName  :: Maybe Text+    , _ibdmsEbs         :: Maybe EbsInstanceBlockDeviceSpecification+    , _ibdmsNoDevice    :: Maybe Text+    , _ibdmsVirtualName :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'InstanceBlockDeviceMappingSpecification' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ibdmsDeviceName' @::@ 'Maybe' 'Text'+--+-- * 'ibdmsEbs' @::@ 'Maybe' 'EbsInstanceBlockDeviceSpecification'+--+-- * 'ibdmsNoDevice' @::@ 'Maybe' 'Text'+--+-- * 'ibdmsVirtualName' @::@ 'Maybe' 'Text'+--+instanceBlockDeviceMappingSpecification :: InstanceBlockDeviceMappingSpecification+instanceBlockDeviceMappingSpecification = InstanceBlockDeviceMappingSpecification+    { _ibdmsDeviceName  = Nothing+    , _ibdmsEbs         = Nothing+    , _ibdmsVirtualName = Nothing+    , _ibdmsNoDevice    = Nothing+    }++-- | The device name exposed to the instance (for example, '/dev/sdh' or 'xvdh').+ibdmsDeviceName :: Lens' InstanceBlockDeviceMappingSpecification (Maybe Text)+ibdmsDeviceName = lens _ibdmsDeviceName (\s a -> s { _ibdmsDeviceName = a })++-- | Parameters used to automatically set up EBS volumes when the instance is+-- launched.+ibdmsEbs :: Lens' InstanceBlockDeviceMappingSpecification (Maybe EbsInstanceBlockDeviceSpecification)+ibdmsEbs = lens _ibdmsEbs (\s a -> s { _ibdmsEbs = a })++-- | suppress the specified device included in the block device mapping.+ibdmsNoDevice :: Lens' InstanceBlockDeviceMappingSpecification (Maybe Text)+ibdmsNoDevice = lens _ibdmsNoDevice (\s a -> s { _ibdmsNoDevice = a })++-- | The virtual device name.+ibdmsVirtualName :: Lens' InstanceBlockDeviceMappingSpecification (Maybe Text)+ibdmsVirtualName = lens _ibdmsVirtualName (\s a -> s { _ibdmsVirtualName = a })++instance FromXML InstanceBlockDeviceMappingSpecification where+    parseXML x = InstanceBlockDeviceMappingSpecification+        <$> x .@? "deviceName"+        <*> x .@? "ebs"+        <*> x .@? "noDevice"+        <*> x .@? "virtualName"++instance ToQuery InstanceBlockDeviceMappingSpecification where+    toQuery InstanceBlockDeviceMappingSpecification{..} = mconcat+        [ "DeviceName"  =? _ibdmsDeviceName+        , "Ebs"         =? _ibdmsEbs+        , "NoDevice"    =? _ibdmsNoDevice+        , "VirtualName" =? _ibdmsVirtualName+        ]++data ExportEnvironment+    = Citrix    -- ^ citrix+    | Microsoft -- ^ microsoft+    | Vmware    -- ^ vmware+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable ExportEnvironment++instance FromText ExportEnvironment where+    parser = takeLowerText >>= \case+        "citrix"    -> pure Citrix+        "microsoft" -> pure Microsoft+        "vmware"    -> pure Vmware+        e           -> fail $+            "Failure parsing ExportEnvironment from " ++ show e++instance ToText ExportEnvironment where+    toText = \case+        Citrix    -> "citrix"+        Microsoft -> "microsoft"+        Vmware    -> "vmware"++instance ToByteString ExportEnvironment+instance ToHeader     ExportEnvironment+instance ToQuery      ExportEnvironment++instance FromXML ExportEnvironment where+    parseXML = parseXMLText "ExportEnvironment"++newtype UserData = UserData+    { _udData :: Maybe Text+    } deriving (Eq, Ord, Read, Show, Monoid)++-- | 'UserData' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'udData' @::@ 'Maybe' 'Text'+--+userData :: UserData+userData = UserData+    { _udData = Nothing+    }++-- | The Base64-encoded MIME user data for the instance.+udData :: Lens' UserData (Maybe Text)+udData = lens _udData (\s a -> s { _udData = a })++instance FromXML UserData where+    parseXML x = UserData+        <$> x .@? "data"++instance ToQuery UserData where+    toQuery UserData{..} = mconcat+        [ "Data" =? _udData+        ]++data VolumeAttachment = VolumeAttachment+    { _vaAttachTime          :: Maybe ISO8601+    , _vaDeleteOnTermination :: Maybe Bool+    , _vaDevice              :: Maybe Text+    , _vaInstanceId          :: Maybe Text+    , _vaState               :: Maybe VolumeAttachmentState+    , _vaVolumeId            :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'VolumeAttachment' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'vaAttachTime' @::@ 'Maybe' 'UTCTime'+--+-- * 'vaDeleteOnTermination' @::@ 'Maybe' 'Bool'+--+-- * 'vaDevice' @::@ 'Maybe' 'Text'+--+-- * 'vaInstanceId' @::@ 'Maybe' 'Text'+--+-- * 'vaState' @::@ 'Maybe' 'VolumeAttachmentState'+--+-- * 'vaVolumeId' @::@ 'Maybe' 'Text'+--+volumeAttachment :: VolumeAttachment+volumeAttachment = VolumeAttachment+    { _vaVolumeId            = Nothing+    , _vaInstanceId          = Nothing+    , _vaDevice              = Nothing+    , _vaState               = Nothing+    , _vaAttachTime          = Nothing+    , _vaDeleteOnTermination = Nothing+    }++-- | The time stamp when the attachment initiated.+vaAttachTime :: Lens' VolumeAttachment (Maybe UTCTime)+vaAttachTime = lens _vaAttachTime (\s a -> s { _vaAttachTime = a }) . mapping _Time++-- | Indicates whether the EBS volume is deleted on instance termination.+vaDeleteOnTermination :: Lens' VolumeAttachment (Maybe Bool)+vaDeleteOnTermination =+    lens _vaDeleteOnTermination (\s a -> s { _vaDeleteOnTermination = a })++-- | The device name.+vaDevice :: Lens' VolumeAttachment (Maybe Text)+vaDevice = lens _vaDevice (\s a -> s { _vaDevice = a })++-- | The ID of the instance.+vaInstanceId :: Lens' VolumeAttachment (Maybe Text)+vaInstanceId = lens _vaInstanceId (\s a -> s { _vaInstanceId = a })++-- | The attachment state of the volume.+vaState :: Lens' VolumeAttachment (Maybe VolumeAttachmentState)+vaState = lens _vaState (\s a -> s { _vaState = a })++-- | The ID of the volume.+vaVolumeId :: Lens' VolumeAttachment (Maybe Text)+vaVolumeId = lens _vaVolumeId (\s a -> s { _vaVolumeId = a })++instance FromXML VolumeAttachment where+    parseXML x = VolumeAttachment+        <$> x .@? "attachTime"+        <*> x .@? "deleteOnTermination"+        <*> x .@? "device"+        <*> x .@? "instanceId"+        <*> x .@? "status"+        <*> x .@? "volumeId"++instance ToQuery VolumeAttachment where+    toQuery VolumeAttachment{..} = mconcat+        [ "AttachTime"          =? _vaAttachTime+        , "DeleteOnTermination" =? _vaDeleteOnTermination+        , "Device"              =? _vaDevice+        , "InstanceId"          =? _vaInstanceId+        , "Status"              =? _vaState+        , "VolumeId"            =? _vaVolumeId+        ]++data CustomerGateway = CustomerGateway+    { _cgBgpAsn            :: Text+    , _cgCustomerGatewayId :: Text+    , _cgIpAddress         :: Text+    , _cgState             :: Text+    , _cgTags              :: List "item" Tag+    , _cgType              :: Text+    } deriving (Eq, Read, Show)++-- | 'CustomerGateway' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cgBgpAsn' @::@ 'Text'+--+-- * 'cgCustomerGatewayId' @::@ 'Text'+--+-- * 'cgIpAddress' @::@ 'Text'+--+-- * 'cgState' @::@ 'Text'+--+-- * 'cgTags' @::@ ['Tag']+--+-- * 'cgType' @::@ 'Text'+--+customerGateway :: Text -- ^ 'cgCustomerGatewayId'+                -> Text -- ^ 'cgState'+                -> Text -- ^ 'cgType'+                -> Text -- ^ 'cgIpAddress'+                -> Text -- ^ 'cgBgpAsn'+                -> CustomerGateway+customerGateway p1 p2 p3 p4 p5 = CustomerGateway+    { _cgCustomerGatewayId = p1+    , _cgState             = p2+    , _cgType              = p3+    , _cgIpAddress         = p4+    , _cgBgpAsn            = p5+    , _cgTags              = mempty+    }++-- | The customer gateway's Border Gateway Protocol (BGP) Autonomous System Number+-- (ASN).+cgBgpAsn :: Lens' CustomerGateway Text+cgBgpAsn = lens _cgBgpAsn (\s a -> s { _cgBgpAsn = a })++-- | The ID of the customer gateway.+cgCustomerGatewayId :: Lens' CustomerGateway Text+cgCustomerGatewayId =+    lens _cgCustomerGatewayId (\s a -> s { _cgCustomerGatewayId = a })++-- | The Internet-routable IP address of the customer gateway's outside interface.+cgIpAddress :: Lens' CustomerGateway Text+cgIpAddress = lens _cgIpAddress (\s a -> s { _cgIpAddress = a })++-- | The current state of the customer gateway ('pending | available | deleting |deleted').+cgState :: Lens' CustomerGateway Text+cgState = lens _cgState (\s a -> s { _cgState = a })++-- | Any tags assigned to the customer gateway.+cgTags :: Lens' CustomerGateway [Tag]+cgTags = lens _cgTags (\s a -> s { _cgTags = a }) . _List++-- | The type of VPN connection the customer gateway supports ('ipsec.1').+cgType :: Lens' CustomerGateway Text+cgType = lens _cgType (\s a -> s { _cgType = a })++instance FromXML CustomerGateway where+    parseXML x = CustomerGateway+        <$> x .@  "bgpAsn"+        <*> x .@  "customerGatewayId"+        <*> x .@  "ipAddress"+        <*> x .@  "state"+        <*> x .@? "tagSet" .!@ mempty+        <*> x .@  "type"++instance ToQuery CustomerGateway where+    toQuery CustomerGateway{..} = mconcat+        [ "BgpAsn"            =? _cgBgpAsn+        , "CustomerGatewayId" =? _cgCustomerGatewayId+        , "IpAddress"         =? _cgIpAddress+        , "State"             =? _cgState+        , "TagSet"            `toQueryList` _cgTags+        , "Type"              =? _cgType+        ]++data EbsInstanceBlockDevice = EbsInstanceBlockDevice+    { _eibdAttachTime          :: Maybe ISO8601+    , _eibdDeleteOnTermination :: Maybe Bool+    , _eibdStatus              :: Maybe AttachmentStatus+    , _eibdVolumeId            :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'EbsInstanceBlockDevice' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'eibdAttachTime' @::@ 'Maybe' 'UTCTime'+--+-- * 'eibdDeleteOnTermination' @::@ 'Maybe' 'Bool'+--+-- * 'eibdStatus' @::@ 'Maybe' 'AttachmentStatus'+--+-- * 'eibdVolumeId' @::@ 'Maybe' 'Text'+--+ebsInstanceBlockDevice :: EbsInstanceBlockDevice+ebsInstanceBlockDevice = EbsInstanceBlockDevice+    { _eibdVolumeId            = Nothing+    , _eibdStatus              = Nothing+    , _eibdAttachTime          = Nothing+    , _eibdDeleteOnTermination = Nothing+    }++-- | The time stamp when the attachment initiated.+eibdAttachTime :: Lens' EbsInstanceBlockDevice (Maybe UTCTime)+eibdAttachTime = lens _eibdAttachTime (\s a -> s { _eibdAttachTime = a }) . mapping _Time++-- | Indicates whether the volume is deleted on instance termination.+eibdDeleteOnTermination :: Lens' EbsInstanceBlockDevice (Maybe Bool)+eibdDeleteOnTermination =+    lens _eibdDeleteOnTermination (\s a -> s { _eibdDeleteOnTermination = a })++-- | The attachment state.+eibdStatus :: Lens' EbsInstanceBlockDevice (Maybe AttachmentStatus)+eibdStatus = lens _eibdStatus (\s a -> s { _eibdStatus = a })++-- | The ID of the EBS volume.+eibdVolumeId :: Lens' EbsInstanceBlockDevice (Maybe Text)+eibdVolumeId = lens _eibdVolumeId (\s a -> s { _eibdVolumeId = a })++instance FromXML EbsInstanceBlockDevice where+    parseXML x = EbsInstanceBlockDevice+        <$> x .@? "attachTime"+        <*> x .@? "deleteOnTermination"+        <*> x .@? "status"+        <*> x .@? "volumeId"++instance ToQuery EbsInstanceBlockDevice where+    toQuery EbsInstanceBlockDevice{..} = mconcat+        [ "AttachTime"          =? _eibdAttachTime+        , "DeleteOnTermination" =? _eibdDeleteOnTermination+        , "Status"              =? _eibdStatus+        , "VolumeId"            =? _eibdVolumeId+        ]++data ShutdownBehavior+    = Stop      -- ^ stop+    | Terminate -- ^ terminate+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable ShutdownBehavior++instance FromText ShutdownBehavior where+    parser = takeLowerText >>= \case+        "stop"      -> pure Stop+        "terminate" -> pure Terminate+        e           -> fail $+            "Failure parsing ShutdownBehavior from " ++ show e++instance ToText ShutdownBehavior where+    toText = \case+        Stop      -> "stop"+        Terminate -> "terminate"++instance ToByteString ShutdownBehavior+instance ToHeader     ShutdownBehavior+instance ToQuery      ShutdownBehavior++instance FromXML ShutdownBehavior where+    parseXML = parseXMLText "ShutdownBehavior"++data DiskImageDescription = DiskImageDescription+    { _did1Checksum          :: Maybe Text+    , _did1Format            :: DiskImageFormat+    , _did1ImportManifestUrl :: Text+    , _did1Size              :: Integer+    } deriving (Eq, Read, Show)++-- | 'DiskImageDescription' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'did1Checksum' @::@ 'Maybe' 'Text'+--+-- * 'did1Format' @::@ 'DiskImageFormat'+--+-- * 'did1ImportManifestUrl' @::@ 'Text'+--+-- * 'did1Size' @::@ 'Integer'+--+diskImageDescription :: DiskImageFormat -- ^ 'did1Format'+                     -> Integer -- ^ 'did1Size'+                     -> Text -- ^ 'did1ImportManifestUrl'+                     -> DiskImageDescription+diskImageDescription p1 p2 p3 = DiskImageDescription+    { _did1Format            = p1+    , _did1Size              = p2+    , _did1ImportManifestUrl = p3+    , _did1Checksum          = Nothing+    }++-- | The checksum computed for the disk image.+did1Checksum :: Lens' DiskImageDescription (Maybe Text)+did1Checksum = lens _did1Checksum (\s a -> s { _did1Checksum = a })++-- | The disk image format.+did1Format :: Lens' DiskImageDescription DiskImageFormat+did1Format = lens _did1Format (\s a -> s { _did1Format = a })++-- | A presigned URL for the import manifest stored in Amazon S3. For information+-- about creating a presigned URL for an Amazon S3 object, read the "Query+-- String Request Authentication Alternative" section of the <http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html Authenticating RESTRequests> topic in the /Amazon Simple Storage Service Developer Guide/.+did1ImportManifestUrl :: Lens' DiskImageDescription Text+did1ImportManifestUrl =+    lens _did1ImportManifestUrl (\s a -> s { _did1ImportManifestUrl = a })++-- | The size of the disk image, in GiB.+did1Size :: Lens' DiskImageDescription Integer+did1Size = lens _did1Size (\s a -> s { _did1Size = a })++instance FromXML DiskImageDescription where+    parseXML x = DiskImageDescription+        <$> x .@? "checksum"+        <*> x .@  "format"+        <*> x .@  "importManifestUrl"+        <*> x .@  "size"++instance ToQuery DiskImageDescription where+    toQuery DiskImageDescription{..} = mconcat+        [ "Checksum"          =? _did1Checksum+        , "Format"            =? _did1Format+        , "ImportManifestUrl" =? _did1ImportManifestUrl+        , "Size"              =? _did1Size+        ]++data DiskImageVolumeDescription = DiskImageVolumeDescription+    { _divdId   :: Text+    , _divdSize :: Maybe Integer+    } deriving (Eq, Ord, Read, Show)++-- | 'DiskImageVolumeDescription' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'divdId' @::@ 'Text'+--+-- * 'divdSize' @::@ 'Maybe' 'Integer'+--+diskImageVolumeDescription :: Text -- ^ 'divdId'+                           -> DiskImageVolumeDescription+diskImageVolumeDescription p1 = DiskImageVolumeDescription+    { _divdId   = p1+    , _divdSize = Nothing+    }++-- | The volume identifier.+divdId :: Lens' DiskImageVolumeDescription Text+divdId = lens _divdId (\s a -> s { _divdId = a })++-- | The size of the volume, in GiB.+divdSize :: Lens' DiskImageVolumeDescription (Maybe Integer)+divdSize = lens _divdSize (\s a -> s { _divdSize = a })++instance FromXML DiskImageVolumeDescription where+    parseXML x = DiskImageVolumeDescription+        <$> x .@  "id"+        <*> x .@? "size"++instance ToQuery DiskImageVolumeDescription where+    toQuery DiskImageVolumeDescription{..} = mconcat+        [ "Id"   =? _divdId+        , "Size" =? _divdSize+        ]++newtype Monitoring = Monitoring+    { _mState :: Maybe MonitoringState+    } deriving (Eq, Read, Show)++-- | 'Monitoring' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'mState' @::@ 'Maybe' 'MonitoringState'+--+monitoring :: Monitoring+monitoring = Monitoring+    { _mState = Nothing+    }++-- | Indicates whether monitoring is enabled for the instance.+mState :: Lens' Monitoring (Maybe MonitoringState)+mState = lens _mState (\s a -> s { _mState = a })++instance FromXML Monitoring where+    parseXML x = Monitoring+        <$> x .@? "state"++instance ToQuery Monitoring where+    toQuery Monitoring{..} = mconcat+        [ "State" =? _mState+        ]++data SubnetState+    = SubnetStateAvailable -- ^ available+    | SubnetStatePending   -- ^ pending+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable SubnetState++instance FromText SubnetState where+    parser = takeLowerText >>= \case+        "available" -> pure SubnetStateAvailable+        "pending"   -> pure SubnetStatePending+        e           -> fail $+            "Failure parsing SubnetState from " ++ show e++instance ToText SubnetState where+    toText = \case+        SubnetStateAvailable -> "available"+        SubnetStatePending   -> "pending"++instance ToByteString SubnetState+instance ToHeader     SubnetState+instance ToQuery      SubnetState++instance FromXML SubnetState where+    parseXML = parseXMLText "SubnetState"++data CancelSpotFleetRequestsSuccessItem = CancelSpotFleetRequestsSuccessItem+    { _csfrsiCurrentSpotFleetRequestState  :: BatchState+    , _csfrsiPreviousSpotFleetRequestState :: BatchState+    , _csfrsiSpotFleetRequestId            :: Text+    } deriving (Eq, Read, Show)++-- | 'CancelSpotFleetRequestsSuccessItem' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'csfrsiCurrentSpotFleetRequestState' @::@ 'BatchState'+--+-- * 'csfrsiPreviousSpotFleetRequestState' @::@ 'BatchState'+--+-- * 'csfrsiSpotFleetRequestId' @::@ 'Text'+--+cancelSpotFleetRequestsSuccessItem :: Text -- ^ 'csfrsiSpotFleetRequestId'+                                   -> BatchState -- ^ 'csfrsiCurrentSpotFleetRequestState'+                                   -> BatchState -- ^ 'csfrsiPreviousSpotFleetRequestState'+                                   -> CancelSpotFleetRequestsSuccessItem+cancelSpotFleetRequestsSuccessItem p1 p2 p3 = CancelSpotFleetRequestsSuccessItem+    { _csfrsiSpotFleetRequestId            = p1+    , _csfrsiCurrentSpotFleetRequestState  = p2+    , _csfrsiPreviousSpotFleetRequestState = p3+    }++-- | The current state of the Spot fleet request.+csfrsiCurrentSpotFleetRequestState :: Lens' CancelSpotFleetRequestsSuccessItem BatchState+csfrsiCurrentSpotFleetRequestState =+    lens _csfrsiCurrentSpotFleetRequestState+        (\s a -> s { _csfrsiCurrentSpotFleetRequestState = a })++-- | The previous state of the Spot fleet request.+csfrsiPreviousSpotFleetRequestState :: Lens' CancelSpotFleetRequestsSuccessItem BatchState+csfrsiPreviousSpotFleetRequestState =+    lens _csfrsiPreviousSpotFleetRequestState+        (\s a -> s { _csfrsiPreviousSpotFleetRequestState = a })++-- | The ID of the Spot fleet request.+csfrsiSpotFleetRequestId :: Lens' CancelSpotFleetRequestsSuccessItem Text+csfrsiSpotFleetRequestId =+    lens _csfrsiSpotFleetRequestId+        (\s a -> s { _csfrsiSpotFleetRequestId = a })++instance FromXML CancelSpotFleetRequestsSuccessItem where+    parseXML x = CancelSpotFleetRequestsSuccessItem+        <$> x .@  "currentSpotFleetRequestState"+        <*> x .@  "previousSpotFleetRequestState"+        <*> x .@  "spotFleetRequestId"++instance ToQuery CancelSpotFleetRequestsSuccessItem where+    toQuery CancelSpotFleetRequestsSuccessItem{..} = mconcat+        [ "CurrentSpotFleetRequestState"  =? _csfrsiCurrentSpotFleetRequestState+        , "PreviousSpotFleetRequestState" =? _csfrsiPreviousSpotFleetRequestState+        , "SpotFleetRequestId"            =? _csfrsiSpotFleetRequestId+        ]++data ContainerFormat+    = Ova -- ^ ova+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable ContainerFormat++instance FromText ContainerFormat where+    parser = takeLowerText >>= \case+        "ova" -> pure Ova+        e     -> fail $+            "Failure parsing ContainerFormat from " ++ show e++instance ToText ContainerFormat where+    toText Ova = "ova"++instance ToByteString ContainerFormat+instance ToHeader     ContainerFormat+instance ToQuery      ContainerFormat++instance FromXML ContainerFormat where+    parseXML = parseXMLText "ContainerFormat"++newtype AvailabilityZoneMessage = AvailabilityZoneMessage+    { _azmMessage :: Maybe Text+    } deriving (Eq, Ord, Read, Show, Monoid)++-- | 'AvailabilityZoneMessage' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'azmMessage' @::@ 'Maybe' 'Text'+--+availabilityZoneMessage :: AvailabilityZoneMessage+availabilityZoneMessage = AvailabilityZoneMessage+    { _azmMessage = Nothing+    }++-- | The message about the Availability Zone.+azmMessage :: Lens' AvailabilityZoneMessage (Maybe Text)+azmMessage = lens _azmMessage (\s a -> s { _azmMessage = a })++instance FromXML AvailabilityZoneMessage where+    parseXML x = AvailabilityZoneMessage+        <$> x .@? "message"++instance ToQuery AvailabilityZoneMessage where+    toQuery AvailabilityZoneMessage{..} = mconcat+        [ "Message" =? _azmMessage+        ]++data VpcAttachment = VpcAttachment+    { _va1State :: Maybe AttachmentStatus+    , _va1VpcId :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'VpcAttachment' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'va1State' @::@ 'Maybe' 'AttachmentStatus'+--+-- * 'va1VpcId' @::@ 'Maybe' 'Text'+--+vpcAttachment :: VpcAttachment+vpcAttachment = VpcAttachment+    { _va1VpcId = Nothing+    , _va1State = Nothing+    }++-- | The current state of the attachment.+va1State :: Lens' VpcAttachment (Maybe AttachmentStatus)+va1State = lens _va1State (\s a -> s { _va1State = a })++-- | The ID of the VPC.+va1VpcId :: Lens' VpcAttachment (Maybe Text)+va1VpcId = lens _va1VpcId (\s a -> s { _va1VpcId = a })++instance FromXML VpcAttachment where+    parseXML x = VpcAttachment+        <$> x .@? "state"+        <*> x .@? "vpcId"++instance ToQuery VpcAttachment where+    toQuery VpcAttachment{..} = mconcat+        [ "State" =? _va1State+        , "VpcId" =? _va1VpcId+        ]++data EventType+    = Error              -- ^ error+    | FleetRequestChange -- ^ fleetRequestChange+    | InstanceChange     -- ^ instanceChange+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable EventType++instance FromText EventType where+    parser = takeLowerText >>= \case+        "error"              -> pure Error+        "fleetrequestchange" -> pure FleetRequestChange+        "instancechange"     -> pure InstanceChange+        e                    -> fail $+            "Failure parsing EventType from " ++ show e++instance ToText EventType where+    toText = \case+        Error              -> "error"+        FleetRequestChange -> "fleetRequestChange"+        InstanceChange     -> "instanceChange"++instance ToByteString EventType+instance ToHeader     EventType+instance ToQuery      EventType++instance FromXML EventType where+    parseXML = parseXMLText "EventType"++data InstanceBlockDeviceMapping = InstanceBlockDeviceMapping+    { _ibdmDeviceName :: Maybe Text+    , _ibdmEbs        :: Maybe EbsInstanceBlockDevice+    } deriving (Eq, Read, Show)++-- | 'InstanceBlockDeviceMapping' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ibdmDeviceName' @::@ 'Maybe' 'Text'+--+-- * 'ibdmEbs' @::@ 'Maybe' 'EbsInstanceBlockDevice'+--+instanceBlockDeviceMapping :: InstanceBlockDeviceMapping+instanceBlockDeviceMapping = InstanceBlockDeviceMapping+    { _ibdmDeviceName = Nothing+    , _ibdmEbs        = Nothing+    }++-- | The device name exposed to the instance (for example, '/dev/sdh' or 'xvdh').+ibdmDeviceName :: Lens' InstanceBlockDeviceMapping (Maybe Text)+ibdmDeviceName = lens _ibdmDeviceName (\s a -> s { _ibdmDeviceName = a })++-- | Parameters used to automatically set up EBS volumes when the instance is+-- launched.+ibdmEbs :: Lens' InstanceBlockDeviceMapping (Maybe EbsInstanceBlockDevice)+ibdmEbs = lens _ibdmEbs (\s a -> s { _ibdmEbs = a })++instance FromXML InstanceBlockDeviceMapping where+    parseXML x = InstanceBlockDeviceMapping+        <$> x .@? "deviceName"+        <*> x .@? "ebs"++instance ToQuery InstanceBlockDeviceMapping where+    toQuery InstanceBlockDeviceMapping{..} = mconcat+        [ "DeviceName" =? _ibdmDeviceName+        , "Ebs"        =? _ibdmEbs+        ]++data StatusType+    = STFailed           -- ^ failed+    | STInsufficientData -- ^ insufficient-data+    | STPassed           -- ^ passed+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable StatusType++instance FromText StatusType where+    parser = takeLowerText >>= \case+        "failed"            -> pure STFailed+        "insufficient-data" -> pure STInsufficientData+        "passed"            -> pure STPassed+        e                   -> fail $+            "Failure parsing StatusType from " ++ show e++instance ToText StatusType where+    toText = \case+        STFailed           -> "failed"+        STInsufficientData -> "insufficient-data"+        STPassed           -> "passed"++instance ToByteString StatusType+instance ToHeader     StatusType+instance ToQuery      StatusType++instance FromXML StatusType where+    parseXML = parseXMLText "StatusType"++data ExportToS3TaskSpecification = ExportToS3TaskSpecification+    { _etstsContainerFormat :: Maybe ContainerFormat+    , _etstsDiskImageFormat :: Maybe DiskImageFormat+    , _etstsS3Bucket        :: Maybe Text+    , _etstsS3Prefix        :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'ExportToS3TaskSpecification' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'etstsContainerFormat' @::@ 'Maybe' 'ContainerFormat'+--+-- * 'etstsDiskImageFormat' @::@ 'Maybe' 'DiskImageFormat'+--+-- * 'etstsS3Bucket' @::@ 'Maybe' 'Text'+--+-- * 'etstsS3Prefix' @::@ 'Maybe' 'Text'+--+exportToS3TaskSpecification :: ExportToS3TaskSpecification+exportToS3TaskSpecification = ExportToS3TaskSpecification+    { _etstsDiskImageFormat = Nothing+    , _etstsContainerFormat = Nothing+    , _etstsS3Bucket        = Nothing+    , _etstsS3Prefix        = Nothing+    }++-- | The container format used to combine disk images with metadata (such as OVF).+-- If absent, only the disk image is exported.+etstsContainerFormat :: Lens' ExportToS3TaskSpecification (Maybe ContainerFormat)+etstsContainerFormat =+    lens _etstsContainerFormat (\s a -> s { _etstsContainerFormat = a })++-- | The format for the exported image.+etstsDiskImageFormat :: Lens' ExportToS3TaskSpecification (Maybe DiskImageFormat)+etstsDiskImageFormat =+    lens _etstsDiskImageFormat (\s a -> s { _etstsDiskImageFormat = a })++-- | The S3 bucket for the destination image. The destination bucket must exist+-- and grant WRITE and READ_ACP permissions to the AWS account 'vm-import-export@amazon.com'.+etstsS3Bucket :: Lens' ExportToS3TaskSpecification (Maybe Text)+etstsS3Bucket = lens _etstsS3Bucket (\s a -> s { _etstsS3Bucket = a })++-- | The image is written to a single object in the S3 bucket at the S3 key+-- s3prefix + exportTaskId + '.' + diskImageFormat.+etstsS3Prefix :: Lens' ExportToS3TaskSpecification (Maybe Text)+etstsS3Prefix = lens _etstsS3Prefix (\s a -> s { _etstsS3Prefix = a })++instance FromXML ExportToS3TaskSpecification where+    parseXML x = ExportToS3TaskSpecification+        <$> x .@? "containerFormat"+        <*> x .@? "diskImageFormat"+        <*> x .@? "s3Bucket"+        <*> x .@? "s3Prefix"++instance ToQuery ExportToS3TaskSpecification where+    toQuery ExportToS3TaskSpecification{..} = mconcat+        [ "ContainerFormat" =? _etstsContainerFormat+        , "DiskImageFormat" =? _etstsDiskImageFormat+        , "S3Bucket"        =? _etstsS3Bucket+        , "S3Prefix"        =? _etstsS3Prefix+        ]++data CancelBatchErrorCode+    = FleetRequestIdDoesNotExist        -- ^ fleetRequestIdDoesNotExist+    | FleetRequestIdMalformed           -- ^ fleetRequestIdMalformed+    | FleetRequestNotInCancellableState -- ^ fleetRequestNotInCancellableState+    | UnexpectedError                   -- ^ unexpectedError+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable CancelBatchErrorCode++instance FromText CancelBatchErrorCode where+    parser = takeLowerText >>= \case+        "fleetrequestiddoesnotexist"        -> pure FleetRequestIdDoesNotExist+        "fleetrequestidmalformed"           -> pure FleetRequestIdMalformed+        "fleetrequestnotincancellablestate" -> pure FleetRequestNotInCancellableState+        "unexpectederror"                   -> pure UnexpectedError+        e                                   -> fail $+            "Failure parsing CancelBatchErrorCode from " ++ show e++instance ToText CancelBatchErrorCode where+    toText = \case+        FleetRequestIdDoesNotExist        -> "fleetRequestIdDoesNotExist"+        FleetRequestIdMalformed           -> "fleetRequestIdMalformed"+        FleetRequestNotInCancellableState -> "fleetRequestNotInCancellableState"+        UnexpectedError                   -> "unexpectedError"++instance ToByteString CancelBatchErrorCode+instance ToHeader     CancelBatchErrorCode+instance ToQuery      CancelBatchErrorCode++instance FromXML CancelBatchErrorCode where+    parseXML = parseXMLText "CancelBatchErrorCode"++newtype PrefixListId = PrefixListId+    { _pliPrefixListId :: Maybe Text+    } deriving (Eq, Ord, Read, Show, Monoid)++-- | 'PrefixListId' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'pliPrefixListId' @::@ 'Maybe' 'Text'+--+prefixListId :: PrefixListId+prefixListId = PrefixListId+    { _pliPrefixListId = Nothing+    }++-- | The ID of the prefix.+pliPrefixListId :: Lens' PrefixListId (Maybe Text)+pliPrefixListId = lens _pliPrefixListId (\s a -> s { _pliPrefixListId = a })++instance FromXML PrefixListId where+    parseXML x = PrefixListId+        <$> x .@? "prefixListId"++instance ToQuery PrefixListId where+    toQuery PrefixListId{..} = mconcat+        [ "PrefixListId" =? _pliPrefixListId+        ]++data NetworkInterfaceAttribute+    = Attachment      -- ^ attachment+    | Description     -- ^ description+    | GroupSet        -- ^ groupSet+    | SourceDestCheck -- ^ sourceDestCheck+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable NetworkInterfaceAttribute++instance FromText NetworkInterfaceAttribute where+    parser = takeLowerText >>= \case+        "attachment"      -> pure Attachment+        "description"     -> pure Description+        "groupset"        -> pure GroupSet+        "sourcedestcheck" -> pure SourceDestCheck+        e                 -> fail $+            "Failure parsing NetworkInterfaceAttribute from " ++ show e++instance ToText NetworkInterfaceAttribute where+    toText = \case+        Attachment      -> "attachment"+        Description     -> "description"+        GroupSet        -> "groupSet"+        SourceDestCheck -> "sourceDestCheck"++instance ToByteString NetworkInterfaceAttribute+instance ToHeader     NetworkInterfaceAttribute+instance ToQuery      NetworkInterfaceAttribute++instance FromXML NetworkInterfaceAttribute where+    parseXML = parseXMLText "NetworkInterfaceAttribute"++data ImageTypeValues+    = Kernel  -- ^ kernel+    | Machine -- ^ machine+    | Ramdisk -- ^ ramdisk+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable ImageTypeValues++instance FromText ImageTypeValues where+    parser = takeLowerText >>= \case+        "kernel"  -> pure Kernel+        "machine" -> pure Machine+        "ramdisk" -> pure Ramdisk+        e         -> fail $+            "Failure parsing ImageTypeValues from " ++ show e++instance ToText ImageTypeValues where+    toText = \case+        Kernel  -> "kernel"+        Machine -> "machine"+        Ramdisk -> "ramdisk"++instance ToByteString ImageTypeValues+instance ToHeader     ImageTypeValues+instance ToQuery      ImageTypeValues++instance FromXML ImageTypeValues where+    parseXML = parseXMLText "ImageTypeValues"++data InstanceExportDetails = InstanceExportDetails+    { _iedInstanceId        :: Maybe Text+    , _iedTargetEnvironment :: Maybe ExportEnvironment+    } deriving (Eq, Read, Show)++-- | 'InstanceExportDetails' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'iedInstanceId' @::@ 'Maybe' 'Text'+--+-- * 'iedTargetEnvironment' @::@ 'Maybe' 'ExportEnvironment'+--+instanceExportDetails :: InstanceExportDetails+instanceExportDetails = InstanceExportDetails+    { _iedInstanceId        = Nothing+    , _iedTargetEnvironment = Nothing+    }++-- | The ID of the resource being exported.+iedInstanceId :: Lens' InstanceExportDetails (Maybe Text)+iedInstanceId = lens _iedInstanceId (\s a -> s { _iedInstanceId = a })++-- | The target virtualization environment.+iedTargetEnvironment :: Lens' InstanceExportDetails (Maybe ExportEnvironment)+iedTargetEnvironment =+    lens _iedTargetEnvironment (\s a -> s { _iedTargetEnvironment = a })++instance FromXML InstanceExportDetails where+    parseXML x = InstanceExportDetails+        <$> x .@? "instanceId"+        <*> x .@? "targetEnvironment"++instance ToQuery InstanceExportDetails where+    toQuery InstanceExportDetails{..} = mconcat+        [ "InstanceId"        =? _iedInstanceId+        , "TargetEnvironment" =? _iedTargetEnvironment+        ]++data SnapshotAttributeName+    = SANCreateVolumePermission -- ^ createVolumePermission+    | SANProductCodes           -- ^ productCodes+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable SnapshotAttributeName++instance FromText SnapshotAttributeName where+    parser = takeLowerText >>= \case+        "createvolumepermission" -> pure SANCreateVolumePermission+        "productcodes"           -> pure SANProductCodes+        e                        -> fail $+            "Failure parsing SnapshotAttributeName from " ++ show e++instance ToText SnapshotAttributeName where+    toText = \case+        SANCreateVolumePermission -> "createVolumePermission"+        SANProductCodes           -> "productCodes"++instance ToByteString SnapshotAttributeName+instance ToHeader     SnapshotAttributeName+instance ToQuery      SnapshotAttributeName++instance FromXML SnapshotAttributeName where+    parseXML = parseXMLText "SnapshotAttributeName"++data AvailabilityZone = AvailabilityZone+    { _azMessages   :: List "item" AvailabilityZoneMessage+    , _azRegionName :: Maybe Text+    , _azState      :: Maybe AvailabilityZoneState+    , _azZoneName   :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'AvailabilityZone' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'azMessages' @::@ ['AvailabilityZoneMessage']+--+-- * 'azRegionName' @::@ 'Maybe' 'Text'+--+-- * 'azState' @::@ 'Maybe' 'AvailabilityZoneState'+--+-- * 'azZoneName' @::@ 'Maybe' 'Text'+--+availabilityZone :: AvailabilityZone+availabilityZone = AvailabilityZone+    { _azZoneName   = Nothing+    , _azState      = Nothing+    , _azRegionName = Nothing+    , _azMessages   = mempty+    }++-- | Any messages about the Availability Zone.+azMessages :: Lens' AvailabilityZone [AvailabilityZoneMessage]+azMessages = lens _azMessages (\s a -> s { _azMessages = a }) . _List++-- | The name of the region.+azRegionName :: Lens' AvailabilityZone (Maybe Text)+azRegionName = lens _azRegionName (\s a -> s { _azRegionName = a })++-- | The state of the Availability Zone ('available' | 'impaired' | 'unavailable').+azState :: Lens' AvailabilityZone (Maybe AvailabilityZoneState)+azState = lens _azState (\s a -> s { _azState = a })++-- | The name of the Availability Zone.+azZoneName :: Lens' AvailabilityZone (Maybe Text)+azZoneName = lens _azZoneName (\s a -> s { _azZoneName = a })++instance FromXML AvailabilityZone where+    parseXML x = AvailabilityZone+        <$> x .@? "messageSet" .!@ mempty+        <*> x .@? "regionName"+        <*> x .@? "zoneState"+        <*> x .@? "zoneName"++instance ToQuery AvailabilityZone where+    toQuery AvailabilityZone{..} = mconcat+        [ "MessageSet" `toQueryList` _azMessages+        , "RegionName" =? _azRegionName+        , "ZoneState"  =? _azState+        , "ZoneName"   =? _azZoneName+        ]++data HistoryRecord = HistoryRecord+    { _hrEventInformation :: EventInformation+    , _hrEventType        :: EventType+    , _hrTimestamp        :: ISO8601+    } deriving (Eq, Read, Show)++-- | 'HistoryRecord' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'hrEventInformation' @::@ 'EventInformation'+--+-- * 'hrEventType' @::@ 'EventType'+--+-- * 'hrTimestamp' @::@ 'UTCTime'+--+historyRecord :: UTCTime -- ^ 'hrTimestamp'+              -> EventType -- ^ 'hrEventType'+              -> EventInformation -- ^ 'hrEventInformation'+              -> HistoryRecord+historyRecord p1 p2 p3 = HistoryRecord+    { _hrTimestamp        = withIso _Time (const id) p1+    , _hrEventType        = p2+    , _hrEventInformation = p3+    }++-- | Information about the event.+hrEventInformation :: Lens' HistoryRecord EventInformation+hrEventInformation =+    lens _hrEventInformation (\s a -> s { _hrEventInformation = a })++-- | The event type.+--+-- 'error' - Indicates an error with the Spot fleet request.+--+-- 'fleetRequestChange' - Indicates a change in the status or configuration of+-- the Spot fleet request.+--+-- 'instanceChange' - Indicates that an instance was launched or terminated.+--+--+hrEventType :: Lens' HistoryRecord EventType+hrEventType = lens _hrEventType (\s a -> s { _hrEventType = a })++-- | The date and time of the event, in UTC format (for example, /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z).+hrTimestamp :: Lens' HistoryRecord UTCTime+hrTimestamp = lens _hrTimestamp (\s a -> s { _hrTimestamp = a }) . _Time++instance FromXML HistoryRecord where+    parseXML x = HistoryRecord+        <$> x .@  "eventInformation"+        <*> x .@  "eventType"+        <*> x .@  "timestamp"++instance ToQuery HistoryRecord where+    toQuery HistoryRecord{..} = mconcat+        [ "EventInformation" =? _hrEventInformation+        , "EventType"        =? _hrEventType+        , "Timestamp"        =? _hrTimestamp+        ]++data ImportImageTask = ImportImageTask+    { _iitArchitecture    :: Maybe Text+    , _iitDescription     :: Maybe Text+    , _iitHypervisor      :: Maybe Text+    , _iitImageId         :: Maybe Text+    , _iitImportTaskId    :: Maybe Text+    , _iitLicenseType     :: Maybe Text+    , _iitPlatform        :: Maybe Text+    , _iitProgress        :: Maybe Text+    , _iitSnapshotDetails :: List "item" SnapshotDetail+    , _iitStatus          :: Maybe Text+    , _iitStatusMessage   :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'ImportImageTask' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'iitArchitecture' @::@ 'Maybe' 'Text'+--+-- * 'iitDescription' @::@ 'Maybe' 'Text'+--+-- * 'iitHypervisor' @::@ 'Maybe' 'Text'+--+-- * 'iitImageId' @::@ 'Maybe' 'Text'+--+-- * 'iitImportTaskId' @::@ 'Maybe' 'Text'+--+-- * 'iitLicenseType' @::@ 'Maybe' 'Text'+--+-- * 'iitPlatform' @::@ 'Maybe' 'Text'+--+-- * 'iitProgress' @::@ 'Maybe' 'Text'+--+-- * 'iitSnapshotDetails' @::@ ['SnapshotDetail']+--+-- * 'iitStatus' @::@ 'Maybe' 'Text'+--+-- * 'iitStatusMessage' @::@ 'Maybe' 'Text'+--+importImageTask :: ImportImageTask+importImageTask = ImportImageTask+    { _iitImportTaskId    = Nothing+    , _iitArchitecture    = Nothing+    , _iitLicenseType     = Nothing+    , _iitPlatform        = Nothing+    , _iitHypervisor      = Nothing+    , _iitDescription     = Nothing+    , _iitSnapshotDetails = mempty+    , _iitImageId         = Nothing+    , _iitProgress        = Nothing+    , _iitStatusMessage   = Nothing+    , _iitStatus          = Nothing+    }++-- | The architecture of the virtual machine.+--+-- Valid values: 'i386' | 'x86_64'+iitArchitecture :: Lens' ImportImageTask (Maybe Text)+iitArchitecture = lens _iitArchitecture (\s a -> s { _iitArchitecture = a })++-- | A description of the import task.+iitDescription :: Lens' ImportImageTask (Maybe Text)+iitDescription = lens _iitDescription (\s a -> s { _iitDescription = a })++-- | The target hypervisor for the import task.+--+-- Valid values: 'xen'+iitHypervisor :: Lens' ImportImageTask (Maybe Text)+iitHypervisor = lens _iitHypervisor (\s a -> s { _iitHypervisor = a })++-- | The ID of the Amazon Machine Image (AMI) of the imported virtual machine.+iitImageId :: Lens' ImportImageTask (Maybe Text)+iitImageId = lens _iitImageId (\s a -> s { _iitImageId = a })++-- | The ID of the import image task.+iitImportTaskId :: Lens' ImportImageTask (Maybe Text)+iitImportTaskId = lens _iitImportTaskId (\s a -> s { _iitImportTaskId = a })++-- | The license type of the virtual machine.+iitLicenseType :: Lens' ImportImageTask (Maybe Text)+iitLicenseType = lens _iitLicenseType (\s a -> s { _iitLicenseType = a })++-- | The description string for the import image task.+iitPlatform :: Lens' ImportImageTask (Maybe Text)+iitPlatform = lens _iitPlatform (\s a -> s { _iitPlatform = a })++-- | The percentage of progress of the import image task.+iitProgress :: Lens' ImportImageTask (Maybe Text)+iitProgress = lens _iitProgress (\s a -> s { _iitProgress = a })++-- | Information about the snapshots.+iitSnapshotDetails :: Lens' ImportImageTask [SnapshotDetail]+iitSnapshotDetails =+    lens _iitSnapshotDetails (\s a -> s { _iitSnapshotDetails = a })+        . _List++-- | A brief status for the import image task.+iitStatus :: Lens' ImportImageTask (Maybe Text)+iitStatus = lens _iitStatus (\s a -> s { _iitStatus = a })++-- | A descriptive status message for the import image task.+iitStatusMessage :: Lens' ImportImageTask (Maybe Text)+iitStatusMessage = lens _iitStatusMessage (\s a -> s { _iitStatusMessage = a })++instance FromXML ImportImageTask where+    parseXML x = ImportImageTask+        <$> x .@? "architecture"+        <*> x .@? "description"+        <*> x .@? "hypervisor"+        <*> x .@? "imageId"+        <*> x .@? "importTaskId"+        <*> x .@? "licenseType"+        <*> x .@? "platform"+        <*> x .@? "progress"+        <*> x .@? "snapshotDetailSet" .!@ mempty+        <*> x .@? "status"+        <*> x .@? "statusMessage"++instance ToQuery ImportImageTask where+    toQuery ImportImageTask{..} = mconcat+        [ "Architecture"      =? _iitArchitecture+        , "Description"       =? _iitDescription+        , "Hypervisor"        =? _iitHypervisor+        , "ImageId"           =? _iitImageId+        , "ImportTaskId"      =? _iitImportTaskId+        , "LicenseType"       =? _iitLicenseType+        , "Platform"          =? _iitPlatform+        , "Progress"          =? _iitProgress+        , "SnapshotDetailSet" `toQueryList` _iitSnapshotDetails+        , "Status"            =? _iitStatus+        , "StatusMessage"     =? _iitStatusMessage+        ]++data VpnState+    = VpnStateAvailable -- ^ available+    | VpnStateDeleted   -- ^ deleted+    | VpnStateDeleting  -- ^ deleting+    | VpnStatePending   -- ^ pending+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable VpnState++instance FromText VpnState where+    parser = takeLowerText >>= \case+        "available" -> pure VpnStateAvailable+        "deleted"   -> pure VpnStateDeleted+        "deleting"  -> pure VpnStateDeleting+        "pending"   -> pure VpnStatePending+        e           -> fail $+            "Failure parsing VpnState from " ++ show e++instance ToText VpnState where+    toText = \case+        VpnStateAvailable -> "available"+        VpnStateDeleted   -> "deleted"+        VpnStateDeleting  -> "deleting"+        VpnStatePending   -> "pending"++instance ToByteString VpnState+instance ToHeader     VpnState+instance ToQuery      VpnState++instance FromXML VpnState where+    parseXML = parseXMLText "VpnState"++data RouteTable = RouteTable+    { _rtAssociations    :: List "item" RouteTableAssociation+    , _rtPropagatingVgws :: List "item" PropagatingVgw+    , _rtRouteTableId    :: Maybe Text+    , _rtRoutes          :: List "item" Route+    , _rtTags            :: List "item" Tag+    , _rtVpcId           :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'RouteTable' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rtAssociations' @::@ ['RouteTableAssociation']+--+-- * 'rtPropagatingVgws' @::@ ['PropagatingVgw']+--+-- * 'rtRouteTableId' @::@ 'Maybe' 'Text'+--+-- * 'rtRoutes' @::@ ['Route']+--+-- * 'rtTags' @::@ ['Tag']+--+-- * 'rtVpcId' @::@ 'Maybe' 'Text'+--+routeTable :: RouteTable+routeTable = RouteTable+    { _rtRouteTableId    = Nothing+    , _rtVpcId           = Nothing+    , _rtRoutes          = mempty+    , _rtAssociations    = mempty+    , _rtTags            = mempty+    , _rtPropagatingVgws = mempty+    }++-- | The associations between the route table and one or more subnets.+rtAssociations :: Lens' RouteTable [RouteTableAssociation]+rtAssociations = lens _rtAssociations (\s a -> s { _rtAssociations = a }) . _List++-- | Any virtual private gateway (VGW) propagating routes.+rtPropagatingVgws :: Lens' RouteTable [PropagatingVgw]+rtPropagatingVgws =+    lens _rtPropagatingVgws (\s a -> s { _rtPropagatingVgws = a })+        . _List++-- | The ID of the route table.+rtRouteTableId :: Lens' RouteTable (Maybe Text)+rtRouteTableId = lens _rtRouteTableId (\s a -> s { _rtRouteTableId = a })++-- | The routes in the route table.+rtRoutes :: Lens' RouteTable [Route]+rtRoutes = lens _rtRoutes (\s a -> s { _rtRoutes = a }) . _List++-- | Any tags assigned to the route table.+rtTags :: Lens' RouteTable [Tag]+rtTags = lens _rtTags (\s a -> s { _rtTags = a }) . _List++-- | The ID of the VPC.+rtVpcId :: Lens' RouteTable (Maybe Text)+rtVpcId = lens _rtVpcId (\s a -> s { _rtVpcId = a })++instance FromXML RouteTable where+    parseXML x = RouteTable+        <$> x .@? "associationSet" .!@ mempty+        <*> x .@? "propagatingVgwSet" .!@ mempty+        <*> x .@? "routeTableId"+        <*> x .@? "routeSet" .!@ mempty+        <*> x .@? "tagSet" .!@ mempty+        <*> x .@? "vpcId"++instance ToQuery RouteTable where+    toQuery RouteTable{..} = mconcat+        [ "AssociationSet"    `toQueryList` _rtAssociations+        , "PropagatingVgwSet" `toQueryList` _rtPropagatingVgws+        , "RouteTableId"      =? _rtRouteTableId+        , "RouteSet"          `toQueryList` _rtRoutes+        , "TagSet"            `toQueryList` _rtTags+        , "VpcId"             =? _rtVpcId+        ]++data UserBucket = UserBucket+    { _ubS3Bucket :: Maybe Text+    , _ubS3Key    :: Maybe Text+    } deriving (Eq, Ord, Read, Show)++-- | 'UserBucket' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ubS3Bucket' @::@ 'Maybe' 'Text'+--+-- * 'ubS3Key' @::@ 'Maybe' 'Text'+--+userBucket :: UserBucket+userBucket = UserBucket+    { _ubS3Bucket = Nothing+    , _ubS3Key    = Nothing+    }++-- | The name of the S3 bucket where the disk image is located.+ubS3Bucket :: Lens' UserBucket (Maybe Text)+ubS3Bucket = lens _ubS3Bucket (\s a -> s { _ubS3Bucket = a })++-- | The key for the disk image.+ubS3Key :: Lens' UserBucket (Maybe Text)+ubS3Key = lens _ubS3Key (\s a -> s { _ubS3Key = a })++instance FromXML UserBucket where+    parseXML x = UserBucket+        <$> x .@? "S3Bucket"+        <*> x .@? "S3Key"++instance ToQuery UserBucket where+    toQuery UserBucket{..} = mconcat+        [ "S3Bucket" =? _ubS3Bucket+        , "S3Key"    =? _ubS3Key+        ]++data HypervisorType+    = Ovm -- ^ ovm+    | Xen -- ^ xen+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable HypervisorType++instance FromText HypervisorType where+    parser = takeLowerText >>= \case+        "ovm" -> pure Ovm+        "xen" -> pure Xen+        e     -> fail $+            "Failure parsing HypervisorType from " ++ show e++instance ToText HypervisorType where+    toText = \case+        Ovm -> "ovm"+        Xen -> "xen"++instance ToByteString HypervisorType+instance ToHeader     HypervisorType+instance ToQuery      HypervisorType++instance FromXML HypervisorType where+    parseXML = parseXMLText "HypervisorType"++data CancelSpotFleetRequestsErrorItem = CancelSpotFleetRequestsErrorItem+    { _csfreiError              :: CancelSpotFleetRequestsError+    , _csfreiSpotFleetRequestId :: Text+    } deriving (Eq, Read, Show)++-- | 'CancelSpotFleetRequestsErrorItem' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'csfreiError' @::@ 'CancelSpotFleetRequestsError'+--+-- * 'csfreiSpotFleetRequestId' @::@ 'Text'+--+cancelSpotFleetRequestsErrorItem :: Text -- ^ 'csfreiSpotFleetRequestId'+                                 -> CancelSpotFleetRequestsError -- ^ 'csfreiError'+                                 -> CancelSpotFleetRequestsErrorItem+cancelSpotFleetRequestsErrorItem p1 p2 = CancelSpotFleetRequestsErrorItem+    { _csfreiSpotFleetRequestId = p1+    , _csfreiError              = p2+    }++-- | The error.+csfreiError :: Lens' CancelSpotFleetRequestsErrorItem CancelSpotFleetRequestsError+csfreiError = lens _csfreiError (\s a -> s { _csfreiError = a })++-- | The ID of the Spot fleet request.+csfreiSpotFleetRequestId :: Lens' CancelSpotFleetRequestsErrorItem Text+csfreiSpotFleetRequestId =+    lens _csfreiSpotFleetRequestId+        (\s a -> s { _csfreiSpotFleetRequestId = a })++instance FromXML CancelSpotFleetRequestsErrorItem where+    parseXML x = CancelSpotFleetRequestsErrorItem+        <$> x .@  "error"+        <*> x .@  "spotFleetRequestId"++instance ToQuery CancelSpotFleetRequestsErrorItem where+    toQuery CancelSpotFleetRequestsErrorItem{..} = mconcat+        [ "Error"              =? _csfreiError+        , "SpotFleetRequestId" =? _csfreiSpotFleetRequestId+        ]++data InstanceStatusDetails = InstanceStatusDetails+    { _isdImpairedSince :: Maybe ISO8601+    , _isdName          :: Maybe StatusName+    , _isdStatus        :: Maybe StatusType+    } deriving (Eq, Read, Show)++-- | 'InstanceStatusDetails' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'isdImpairedSince' @::@ 'Maybe' 'UTCTime'+--+-- * 'isdName' @::@ 'Maybe' 'StatusName'+--+-- * 'isdStatus' @::@ 'Maybe' 'StatusType'+--+instanceStatusDetails :: InstanceStatusDetails+instanceStatusDetails = InstanceStatusDetails+    { _isdName          = Nothing+    , _isdStatus        = Nothing+    , _isdImpairedSince = Nothing+    }++-- | The time when a status check failed. For an instance that was launched and+-- impaired, this is the time when the instance was launched.+isdImpairedSince :: Lens' InstanceStatusDetails (Maybe UTCTime)+isdImpairedSince = lens _isdImpairedSince (\s a -> s { _isdImpairedSince = a }) . mapping _Time++-- | The type of instance status.+isdName :: Lens' InstanceStatusDetails (Maybe StatusName)+isdName = lens _isdName (\s a -> s { _isdName = a })++-- | The status.+isdStatus :: Lens' InstanceStatusDetails (Maybe StatusType)+isdStatus = lens _isdStatus (\s a -> s { _isdStatus = a })++instance FromXML InstanceStatusDetails where+    parseXML x = InstanceStatusDetails+        <$> x .@? "impairedSince"+        <*> x .@? "name"+        <*> x .@? "status"++instance ToQuery InstanceStatusDetails where+    toQuery InstanceStatusDetails{..} = mconcat+        [ "ImpairedSince" =? _isdImpairedSince+        , "Name"          =? _isdName+        , "Status"        =? _isdStatus+        ]++data IamInstanceProfile = IamInstanceProfile+    { _iipArn :: Maybe Text+    , _iipId  :: Maybe Text+    } deriving (Eq, Ord, Read, Show)++-- | 'IamInstanceProfile' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'iipArn' @::@ 'Maybe' 'Text'+--+-- * 'iipId' @::@ 'Maybe' 'Text'+--+iamInstanceProfile :: IamInstanceProfile+iamInstanceProfile = IamInstanceProfile+    { _iipArn = Nothing+    , _iipId  = Nothing+    }++-- | The Amazon Resource Name (ARN) of the instance profile.+iipArn :: Lens' IamInstanceProfile (Maybe Text)+iipArn = lens _iipArn (\s a -> s { _iipArn = a })++-- | The ID of the instance profile.+iipId :: Lens' IamInstanceProfile (Maybe Text)+iipId = lens _iipId (\s a -> s { _iipId = a })++instance FromXML IamInstanceProfile where+    parseXML x = IamInstanceProfile+        <$> x .@? "arn"+        <*> x .@? "id"++instance ToQuery IamInstanceProfile where+    toQuery IamInstanceProfile{..} = mconcat+        [ "Arn" =? _iipArn+        , "Id"  =? _iipId+        ]++data UnsuccessfulItem = UnsuccessfulItem+    { _uiError      :: UnsuccessfulItemError+    , _uiResourceId :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'UnsuccessfulItem' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'uiError' @::@ 'UnsuccessfulItemError'+--+-- * 'uiResourceId' @::@ 'Maybe' 'Text'+--+unsuccessfulItem :: UnsuccessfulItemError -- ^ 'uiError'+                 -> UnsuccessfulItem+unsuccessfulItem p1 = UnsuccessfulItem+    { _uiError      = p1+    , _uiResourceId = Nothing+    }++-- | Information about the error.+uiError :: Lens' UnsuccessfulItem UnsuccessfulItemError+uiError = lens _uiError (\s a -> s { _uiError = a })++-- | The ID of the resource.+uiResourceId :: Lens' UnsuccessfulItem (Maybe Text)+uiResourceId = lens _uiResourceId (\s a -> s { _uiResourceId = a })++instance FromXML UnsuccessfulItem where+    parseXML x = UnsuccessfulItem+        <$> x .@  "error"+        <*> x .@? "resourceId"++instance ToQuery UnsuccessfulItem where+    toQuery UnsuccessfulItem{..} = mconcat+        [ "Error"      =? _uiError+        , "ResourceId" =? _uiResourceId+        ]++data InternetGatewayAttachment = InternetGatewayAttachment+    { _igaState :: AttachmentStatus+    , _igaVpcId :: Text+    } deriving (Eq, Read, Show)++-- | 'InternetGatewayAttachment' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'igaState' @::@ 'AttachmentStatus'+--+-- * 'igaVpcId' @::@ 'Text'+--+internetGatewayAttachment :: Text -- ^ 'igaVpcId'+                          -> AttachmentStatus -- ^ 'igaState'+                          -> InternetGatewayAttachment+internetGatewayAttachment p1 p2 = InternetGatewayAttachment+    { _igaVpcId = p1+    , _igaState = p2+    }++-- | The current state of the attachment.+igaState :: Lens' InternetGatewayAttachment AttachmentStatus+igaState = lens _igaState (\s a -> s { _igaState = a })++-- | The ID of the VPC.+igaVpcId :: Lens' InternetGatewayAttachment Text+igaVpcId = lens _igaVpcId (\s a -> s { _igaVpcId = a })++instance FromXML InternetGatewayAttachment where+    parseXML x = InternetGatewayAttachment+        <$> x .@  "state"+        <*> x .@  "vpcId"++instance ToQuery InternetGatewayAttachment where+    toQuery InternetGatewayAttachment{..} = mconcat+        [ "State" =? _igaState+        , "VpcId" =? _igaVpcId+        ]++data AddressStatus+    = InClassic      -- ^ InClassic+    | InVpc          -- ^ InVpc+    | MoveInProgress -- ^ MoveInProgress+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable AddressStatus++instance FromText AddressStatus where+    parser = takeLowerText >>= \case+        "inclassic"      -> pure InClassic+        "invpc"          -> pure InVpc+        "moveinprogress" -> pure MoveInProgress+        e                -> fail $+            "Failure parsing AddressStatus from " ++ show e++instance ToText AddressStatus where+    toText = \case+        InClassic      -> "InClassic"+        InVpc          -> "InVpc"+        MoveInProgress -> "MoveInProgress"++instance ToByteString AddressStatus+instance ToHeader     AddressStatus+instance ToQuery      AddressStatus++instance FromXML AddressStatus where+    parseXML = parseXMLText "AddressStatus"++data ReservedInstanceState+    = RISActive         -- ^ active+    | RISPaymentFailed  -- ^ payment-failed+    | RISPaymentPending -- ^ payment-pending+    | RISRetired        -- ^ retired+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable ReservedInstanceState++instance FromText ReservedInstanceState where+    parser = takeLowerText >>= \case+        "active"          -> pure RISActive+        "payment-failed"  -> pure RISPaymentFailed+        "payment-pending" -> pure RISPaymentPending+        "retired"         -> pure RISRetired+        e                 -> fail $+            "Failure parsing ReservedInstanceState from " ++ show e++instance ToText ReservedInstanceState where+    toText = \case+        RISActive         -> "active"+        RISPaymentFailed  -> "payment-failed"+        RISPaymentPending -> "payment-pending"+        RISRetired        -> "retired"++instance ToByteString ReservedInstanceState+instance ToHeader     ReservedInstanceState+instance ToQuery      ReservedInstanceState++instance FromXML ReservedInstanceState where+    parseXML = parseXMLText "ReservedInstanceState"++data InstanceAttributeName+    = IANInstanceBlockDeviceMapping                -- ^ blockDeviceMapping+    | IANInstanceDisableApiTermination             -- ^ disableApiTermination+    | IANInstanceEbsOptimized                      -- ^ ebsOptimized+    | IANInstanceGroupSet                          -- ^ groupSet+    | IANInstanceInstanceInitiatedShutdownBehavior -- ^ instanceInitiatedShutdownBehavior+    | IANInstanceInstanceType                      -- ^ instanceType+    | IANInstanceKernel                            -- ^ kernel+    | IANInstanceProductCodes                      -- ^ productCodes+    | IANInstanceRamdisk                           -- ^ ramdisk+    | IANInstanceRootDeviceName                    -- ^ rootDeviceName+    | IANInstanceSourceDestCheck                   -- ^ sourceDestCheck+    | IANInstanceSriovNetSupport                   -- ^ sriovNetSupport+    | IANInstanceUserData                          -- ^ userData+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable InstanceAttributeName++instance FromText InstanceAttributeName where+    parser = takeLowerText >>= \case+        "blockdevicemapping"                -> pure IANInstanceBlockDeviceMapping+        "disableapitermination"             -> pure IANInstanceDisableApiTermination+        "ebsoptimized"                      -> pure IANInstanceEbsOptimized+        "groupset"                          -> pure IANInstanceGroupSet+        "instanceinitiatedshutdownbehavior" -> pure IANInstanceInstanceInitiatedShutdownBehavior+        "instancetype"                      -> pure IANInstanceInstanceType+        "kernel"                            -> pure IANInstanceKernel+        "productcodes"                      -> pure IANInstanceProductCodes+        "ramdisk"                           -> pure IANInstanceRamdisk+        "rootdevicename"                    -> pure IANInstanceRootDeviceName+        "sourcedestcheck"                   -> pure IANInstanceSourceDestCheck+        "sriovnetsupport"                   -> pure IANInstanceSriovNetSupport+        "userdata"                          -> pure IANInstanceUserData+        e                                   -> fail $+            "Failure parsing InstanceAttributeName from " ++ show e++instance ToText InstanceAttributeName where+    toText = \case+        IANInstanceBlockDeviceMapping                -> "blockDeviceMapping"+        IANInstanceDisableApiTermination             -> "disableApiTermination"+        IANInstanceEbsOptimized                      -> "ebsOptimized"+        IANInstanceGroupSet                          -> "groupSet"+        IANInstanceInstanceInitiatedShutdownBehavior -> "instanceInitiatedShutdownBehavior"+        IANInstanceInstanceType                      -> "instanceType"+        IANInstanceKernel                            -> "kernel"+        IANInstanceProductCodes                      -> "productCodes"+        IANInstanceRamdisk                           -> "ramdisk"+        IANInstanceRootDeviceName                    -> "rootDeviceName"+        IANInstanceSourceDestCheck                   -> "sourceDestCheck"+        IANInstanceSriovNetSupport                   -> "sriovNetSupport"+        IANInstanceUserData                          -> "userData"++instance ToByteString InstanceAttributeName+instance ToHeader     InstanceAttributeName+instance ToQuery      InstanceAttributeName++instance FromXML InstanceAttributeName where+    parseXML = parseXMLText "InstanceAttributeName"++data IpPermission = IpPermission+    { _ipFromPort         :: Maybe Int+    , _ipIpProtocol       :: Text+    , _ipIpRanges         :: List "item" IpRange+    , _ipPrefixListIds    :: List "item" PrefixListId+    , _ipToPort           :: Maybe Int+    , _ipUserIdGroupPairs :: List "item" UserIdGroupPair+    } deriving (Eq, Read, Show)++-- | 'IpPermission' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ipFromPort' @::@ 'Maybe' 'Int'+--+-- * 'ipIpProtocol' @::@ 'Text'+--+-- * 'ipIpRanges' @::@ ['IpRange']+--+-- * 'ipPrefixListIds' @::@ ['PrefixListId']+--+-- * 'ipToPort' @::@ 'Maybe' 'Int'+--+-- * 'ipUserIdGroupPairs' @::@ ['UserIdGroupPair']+--+ipPermission :: Text -- ^ 'ipIpProtocol'+             -> IpPermission+ipPermission p1 = IpPermission+    { _ipIpProtocol       = p1+    , _ipFromPort         = Nothing+    , _ipToPort           = Nothing+    , _ipUserIdGroupPairs = mempty+    , _ipIpRanges         = mempty+    , _ipPrefixListIds    = mempty+    }++-- | The start of port range for the TCP and UDP protocols, or an ICMP type+-- number. A value of '-1' indicates all ICMP types.+ipFromPort :: Lens' IpPermission (Maybe Int)+ipFromPort = lens _ipFromPort (\s a -> s { _ipFromPort = a })++-- | The protocol.+--+-- When you call 'DescribeSecurityGroups', the protocol value returned is the+-- number. Exception: For TCP, UDP, and ICMP, the value returned is the name+-- (for example, 'tcp', 'udp', or 'icmp'). For a list of protocol numbers, see <http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml Protocol Numbers>. (VPC only) When you call 'AuthorizeSecurityGroupIngress', you can use '-1' to+-- specify all.+ipIpProtocol :: Lens' IpPermission Text+ipIpProtocol = lens _ipIpProtocol (\s a -> s { _ipIpProtocol = a })++-- | One or more IP ranges.+ipIpRanges :: Lens' IpPermission [IpRange]+ipIpRanges = lens _ipIpRanges (\s a -> s { _ipIpRanges = a }) . _List++-- | (Valid for 'AuthorizeSecurityGroupEgress', 'RevokeSecurityGroupEgress' and 'DescribeSecurityGroups' only) One or more prefix list IDs for an AWS service. In an 'AuthorizeSecurityGroupEgress' request, this is the AWS service that you want to access through a VPC+-- endpoint from instances associated with the security group.+ipPrefixListIds :: Lens' IpPermission [PrefixListId]+ipPrefixListIds = lens _ipPrefixListIds (\s a -> s { _ipPrefixListIds = a }) . _List++-- | The end of port range for the TCP and UDP protocols, or an ICMP code. A value+-- of '-1' indicates all ICMP codes for the specified ICMP type.+ipToPort :: Lens' IpPermission (Maybe Int)+ipToPort = lens _ipToPort (\s a -> s { _ipToPort = a })++-- | One or more security group and AWS account ID pairs.+ipUserIdGroupPairs :: Lens' IpPermission [UserIdGroupPair]+ipUserIdGroupPairs =+    lens _ipUserIdGroupPairs (\s a -> s { _ipUserIdGroupPairs = a })+        . _List++instance FromXML IpPermission where+    parseXML x = IpPermission+        <$> x .@? "fromPort"+        <*> x .@  "ipProtocol"+        <*> x .@? "ipRanges" .!@ mempty+        <*> x .@? "prefixListIds" .!@ mempty+        <*> x .@? "toPort"+        <*> x .@? "groups" .!@ mempty++instance ToQuery IpPermission where+    toQuery IpPermission{..} = mconcat+        [ "FromPort"      =? _ipFromPort+        , "IpProtocol"    =? _ipIpProtocol+        , "IpRanges"      `toQueryList` _ipIpRanges+        , "PrefixListIds" `toQueryList` _ipPrefixListIds+        , "ToPort"        =? _ipToPort+        , "Groups"        `toQueryList` _ipUserIdGroupPairs+        ]++data ConversionTaskState+    = CTSActive     -- ^ active+    | CTSCancelled  -- ^ cancelled+    | CTSCancelling -- ^ cancelling+    | CTSCompleted  -- ^ completed+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable ConversionTaskState++instance FromText ConversionTaskState where+    parser = takeLowerText >>= \case+        "active"     -> pure CTSActive+        "cancelled"  -> pure CTSCancelled+        "cancelling" -> pure CTSCancelling+        "completed"  -> pure CTSCompleted+        e            -> fail $+            "Failure parsing ConversionTaskState from " ++ show e++instance ToText ConversionTaskState where+    toText = \case+        CTSActive     -> "active"+        CTSCancelled  -> "cancelled"+        CTSCancelling -> "cancelling"+        CTSCompleted  -> "completed"++instance ToByteString ConversionTaskState+instance ToHeader     ConversionTaskState+instance ToQuery      ConversionTaskState++instance FromXML ConversionTaskState where+    parseXML = parseXMLText "ConversionTaskState"++data DiskImage = DiskImage+    { _diDescription :: Maybe Text+    , _diImage       :: Maybe DiskImageDetail+    , _diVolume      :: Maybe VolumeDetail+    } deriving (Eq, Read, Show)++-- | 'DiskImage' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'diDescription' @::@ 'Maybe' 'Text'+--+-- * 'diImage' @::@ 'Maybe' 'DiskImageDetail'+--+-- * 'diVolume' @::@ 'Maybe' 'VolumeDetail'+--+diskImage :: DiskImage+diskImage = DiskImage+    { _diImage       = Nothing+    , _diDescription = Nothing+    , _diVolume      = Nothing+    }++-- | A description of the disk image.+diDescription :: Lens' DiskImage (Maybe Text)+diDescription = lens _diDescription (\s a -> s { _diDescription = a })++-- | Information about the disk image.+diImage :: Lens' DiskImage (Maybe DiskImageDetail)+diImage = lens _diImage (\s a -> s { _diImage = a })++-- | Information about the volume.+diVolume :: Lens' DiskImage (Maybe VolumeDetail)+diVolume = lens _diVolume (\s a -> s { _diVolume = a })++instance FromXML DiskImage where+    parseXML x = DiskImage+        <$> x .@? "Description"+        <*> x .@? "Image"+        <*> x .@? "Volume"++instance ToQuery DiskImage where+    toQuery DiskImage{..} = mconcat+        [ "Description" =? _diDescription+        , "Image"       =? _diImage+        , "Volume"      =? _diVolume+        ]++data Tenancy+    = Dedicated -- ^ dedicated+    | Default'  -- ^ default+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable Tenancy++instance FromText Tenancy where+    parser = takeLowerText >>= \case+        "dedicated" -> pure Dedicated+        "default"   -> pure Default'+        e           -> fail $+            "Failure parsing Tenancy from " ++ show e++instance ToText Tenancy where+    toText = \case+        Dedicated -> "dedicated"+        Default'  -> "default"++instance ToByteString Tenancy+instance ToHeader     Tenancy+instance ToQuery      Tenancy++instance FromXML Tenancy where+    parseXML = parseXMLText "Tenancy"++data UnsuccessfulItemError = UnsuccessfulItemError+    { _uieCode    :: Text+    , _uieMessage :: Text+    } deriving (Eq, Ord, Read, Show)++-- | 'UnsuccessfulItemError' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'uieCode' @::@ 'Text'+--+-- * 'uieMessage' @::@ 'Text'+--+unsuccessfulItemError :: Text -- ^ 'uieCode'+                      -> Text -- ^ 'uieMessage'+                      -> UnsuccessfulItemError+unsuccessfulItemError p1 p2 = UnsuccessfulItemError+    { _uieCode    = p1+    , _uieMessage = p2+    }++-- | The error code.+uieCode :: Lens' UnsuccessfulItemError Text+uieCode = lens _uieCode (\s a -> s { _uieCode = a })++-- | The error message accompanying the error code.+uieMessage :: Lens' UnsuccessfulItemError Text+uieMessage = lens _uieMessage (\s a -> s { _uieMessage = a })++instance FromXML UnsuccessfulItemError where+    parseXML x = UnsuccessfulItemError+        <$> x .@  "code"+        <*> x .@  "message"++instance ToQuery UnsuccessfulItemError where+    toQuery UnsuccessfulItemError{..} = mconcat+        [ "Code"    =? _uieCode+        , "Message" =? _uieMessage+        ]++data VpcPeeringConnectionStateReason = VpcPeeringConnectionStateReason+    { _vpcsrCode    :: Maybe Text+    , _vpcsrMessage :: Maybe Text+    } deriving (Eq, Ord, Read, Show)++-- | 'VpcPeeringConnectionStateReason' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'vpcsrCode' @::@ 'Maybe' 'Text'+--+-- * 'vpcsrMessage' @::@ 'Maybe' 'Text'+--+vpcPeeringConnectionStateReason :: VpcPeeringConnectionStateReason+vpcPeeringConnectionStateReason = VpcPeeringConnectionStateReason+    { _vpcsrCode    = Nothing+    , _vpcsrMessage = Nothing+    }++-- | The status of the VPC peering connection.+vpcsrCode :: Lens' VpcPeeringConnectionStateReason (Maybe Text)+vpcsrCode = lens _vpcsrCode (\s a -> s { _vpcsrCode = a })++-- | A message that provides more information about the status, if applicable.+vpcsrMessage :: Lens' VpcPeeringConnectionStateReason (Maybe Text)+vpcsrMessage = lens _vpcsrMessage (\s a -> s { _vpcsrMessage = a })++instance FromXML VpcPeeringConnectionStateReason where+    parseXML x = VpcPeeringConnectionStateReason+        <$> x .@? "code"+        <*> x .@? "message"++instance ToQuery VpcPeeringConnectionStateReason where+    toQuery VpcPeeringConnectionStateReason{..} = mconcat+        [ "Code"    =? _vpcsrCode+        , "Message" =? _vpcsrMessage+        ]++data IamInstanceProfileSpecification = IamInstanceProfileSpecification+    { _iipsArn  :: Maybe Text+    , _iipsName :: Maybe Text+    } deriving (Eq, Ord, Read, Show)++-- | 'IamInstanceProfileSpecification' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'iipsArn' @::@ 'Maybe' 'Text'+--+-- * 'iipsName' @::@ 'Maybe' 'Text'+--+iamInstanceProfileSpecification :: IamInstanceProfileSpecification+iamInstanceProfileSpecification = IamInstanceProfileSpecification+    { _iipsArn  = Nothing+    , _iipsName = Nothing+    }++-- | The Amazon Resource Name (ARN) of the instance profile.+iipsArn :: Lens' IamInstanceProfileSpecification (Maybe Text)+iipsArn = lens _iipsArn (\s a -> s { _iipsArn = a })++-- | The name of the instance profile.+iipsName :: Lens' IamInstanceProfileSpecification (Maybe Text)+iipsName = lens _iipsName (\s a -> s { _iipsName = a })++instance FromXML IamInstanceProfileSpecification where+    parseXML x = IamInstanceProfileSpecification+        <$> x .@? "arn"+        <*> x .@? "name"++instance ToQuery IamInstanceProfileSpecification where+    toQuery IamInstanceProfileSpecification{..} = mconcat+        [ "Arn"  =? _iipsArn+        , "Name" =? _iipsName+        ]++data ImportVolumeTaskDetails = ImportVolumeTaskDetails+    { _ivtdAvailabilityZone :: Text+    , _ivtdBytesConverted   :: Integer+    , _ivtdDescription      :: Maybe Text+    , _ivtdImage            :: DiskImageDescription+    , _ivtdVolume           :: DiskImageVolumeDescription+    } deriving (Eq, Read, Show)++-- | 'ImportVolumeTaskDetails' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ivtdAvailabilityZone' @::@ 'Text'+--+-- * 'ivtdBytesConverted' @::@ 'Integer'+--+-- * 'ivtdDescription' @::@ 'Maybe' 'Text'+--+-- * 'ivtdImage' @::@ 'DiskImageDescription'+--+-- * 'ivtdVolume' @::@ 'DiskImageVolumeDescription'+--+importVolumeTaskDetails :: Integer -- ^ 'ivtdBytesConverted'+                        -> Text -- ^ 'ivtdAvailabilityZone'+                        -> DiskImageDescription -- ^ 'ivtdImage'+                        -> DiskImageVolumeDescription -- ^ 'ivtdVolume'+                        -> ImportVolumeTaskDetails+importVolumeTaskDetails p1 p2 p3 p4 = ImportVolumeTaskDetails+    { _ivtdBytesConverted   = p1+    , _ivtdAvailabilityZone = p2+    , _ivtdImage            = p3+    , _ivtdVolume           = p4+    , _ivtdDescription      = Nothing+    }++-- | The Availability Zone where the resulting volume will reside.+ivtdAvailabilityZone :: Lens' ImportVolumeTaskDetails Text+ivtdAvailabilityZone =+    lens _ivtdAvailabilityZone (\s a -> s { _ivtdAvailabilityZone = a })++-- | The number of bytes converted so far.+ivtdBytesConverted :: Lens' ImportVolumeTaskDetails Integer+ivtdBytesConverted =+    lens _ivtdBytesConverted (\s a -> s { _ivtdBytesConverted = a })++-- | The description you provided when starting the import volume task.+ivtdDescription :: Lens' ImportVolumeTaskDetails (Maybe Text)+ivtdDescription = lens _ivtdDescription (\s a -> s { _ivtdDescription = a })++-- | The image.+ivtdImage :: Lens' ImportVolumeTaskDetails DiskImageDescription+ivtdImage = lens _ivtdImage (\s a -> s { _ivtdImage = a })++-- | The volume.+ivtdVolume :: Lens' ImportVolumeTaskDetails DiskImageVolumeDescription+ivtdVolume = lens _ivtdVolume (\s a -> s { _ivtdVolume = a })++instance FromXML ImportVolumeTaskDetails where+    parseXML x = ImportVolumeTaskDetails+        <$> x .@  "availabilityZone"+        <*> x .@  "bytesConverted"+        <*> x .@? "description"+        <*> x .@  "image"+        <*> x .@  "volume"++instance ToQuery ImportVolumeTaskDetails where+    toQuery ImportVolumeTaskDetails{..} = mconcat+        [ "AvailabilityZone" =? _ivtdAvailabilityZone+        , "BytesConverted"   =? _ivtdBytesConverted+        , "Description"      =? _ivtdDescription+        , "Image"            =? _ivtdImage+        , "Volume"           =? _ivtdVolume+        ]++data PlacementStrategy+    = Cluster -- ^ cluster+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable PlacementStrategy++instance FromText PlacementStrategy where+    parser = takeLowerText >>= \case+        "cluster" -> pure Cluster+        e         -> fail $+            "Failure parsing PlacementStrategy from " ++ show e++instance ToText PlacementStrategy where+    toText Cluster = "cluster"++instance ToByteString PlacementStrategy+instance ToHeader     PlacementStrategy+instance ToQuery      PlacementStrategy++instance FromXML PlacementStrategy where+    parseXML = parseXMLText "PlacementStrategy"++data InstanceNetworkInterface = InstanceNetworkInterface+    { _iniAssociation        :: Maybe InstanceNetworkInterfaceAssociation+    , _iniAttachment         :: Maybe InstanceNetworkInterfaceAttachment+    , _iniDescription        :: Maybe Text+    , _iniGroups             :: List "item" GroupIdentifier+    , _iniMacAddress         :: Maybe Text+    , _iniNetworkInterfaceId :: Maybe Text+    , _iniOwnerId            :: Maybe Text+    , _iniPrivateDnsName     :: Maybe Text+    , _iniPrivateIpAddress   :: Maybe Text+    , _iniPrivateIpAddresses :: List "item" InstancePrivateIpAddress+    , _iniSourceDestCheck    :: Maybe Bool+    , _iniStatus             :: Maybe NetworkInterfaceStatus+    , _iniSubnetId           :: Maybe Text+    , _iniVpcId              :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'InstanceNetworkInterface' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'iniAssociation' @::@ 'Maybe' 'InstanceNetworkInterfaceAssociation'+--+-- * 'iniAttachment' @::@ 'Maybe' 'InstanceNetworkInterfaceAttachment'+--+-- * 'iniDescription' @::@ 'Maybe' 'Text'+--+-- * 'iniGroups' @::@ ['GroupIdentifier']+--+-- * 'iniMacAddress' @::@ 'Maybe' 'Text'+--+-- * 'iniNetworkInterfaceId' @::@ 'Maybe' 'Text'+--+-- * 'iniOwnerId' @::@ 'Maybe' 'Text'+--+-- * 'iniPrivateDnsName' @::@ 'Maybe' 'Text'+--+-- * 'iniPrivateIpAddress' @::@ 'Maybe' 'Text'+--+-- * 'iniPrivateIpAddresses' @::@ ['InstancePrivateIpAddress']+--+-- * 'iniSourceDestCheck' @::@ 'Maybe' 'Bool'+--+-- * 'iniStatus' @::@ 'Maybe' 'NetworkInterfaceStatus'+--+-- * 'iniSubnetId' @::@ 'Maybe' 'Text'+--+-- * 'iniVpcId' @::@ 'Maybe' 'Text'+--+instanceNetworkInterface :: InstanceNetworkInterface+instanceNetworkInterface = InstanceNetworkInterface+    { _iniNetworkInterfaceId = Nothing+    , _iniSubnetId           = Nothing+    , _iniVpcId              = Nothing+    , _iniDescription        = Nothing+    , _iniOwnerId            = Nothing+    , _iniStatus             = Nothing+    , _iniMacAddress         = Nothing+    , _iniPrivateIpAddress   = Nothing+    , _iniPrivateDnsName     = Nothing+    , _iniSourceDestCheck    = Nothing+    , _iniGroups             = mempty+    , _iniAttachment         = Nothing+    , _iniAssociation        = Nothing+    , _iniPrivateIpAddresses = mempty+    }++-- | The association information for an Elastic IP associated with the network+-- interface.+iniAssociation :: Lens' InstanceNetworkInterface (Maybe InstanceNetworkInterfaceAssociation)+iniAssociation = lens _iniAssociation (\s a -> s { _iniAssociation = a })++-- | The network interface attachment.+iniAttachment :: Lens' InstanceNetworkInterface (Maybe InstanceNetworkInterfaceAttachment)+iniAttachment = lens _iniAttachment (\s a -> s { _iniAttachment = a })++-- | The description.+iniDescription :: Lens' InstanceNetworkInterface (Maybe Text)+iniDescription = lens _iniDescription (\s a -> s { _iniDescription = a })++-- | One or more security groups.+iniGroups :: Lens' InstanceNetworkInterface [GroupIdentifier]+iniGroups = lens _iniGroups (\s a -> s { _iniGroups = a }) . _List++-- | The MAC address.+iniMacAddress :: Lens' InstanceNetworkInterface (Maybe Text)+iniMacAddress = lens _iniMacAddress (\s a -> s { _iniMacAddress = a })++-- | The ID of the network interface.+iniNetworkInterfaceId :: Lens' InstanceNetworkInterface (Maybe Text)+iniNetworkInterfaceId =+    lens _iniNetworkInterfaceId (\s a -> s { _iniNetworkInterfaceId = a })++-- | The ID of the AWS account that created the network interface.+iniOwnerId :: Lens' InstanceNetworkInterface (Maybe Text)+iniOwnerId = lens _iniOwnerId (\s a -> s { _iniOwnerId = a })++-- | The private DNS name.+iniPrivateDnsName :: Lens' InstanceNetworkInterface (Maybe Text)+iniPrivateDnsName =+    lens _iniPrivateDnsName (\s a -> s { _iniPrivateDnsName = a })++-- | The IP address of the network interface within the subnet.+iniPrivateIpAddress :: Lens' InstanceNetworkInterface (Maybe Text)+iniPrivateIpAddress =+    lens _iniPrivateIpAddress (\s a -> s { _iniPrivateIpAddress = a })++-- | The private IP addresses associated with the network interface.+iniPrivateIpAddresses :: Lens' InstanceNetworkInterface [InstancePrivateIpAddress]+iniPrivateIpAddresses =+    lens _iniPrivateIpAddresses (\s a -> s { _iniPrivateIpAddresses = a })+        . _List++-- | Indicates whether to validate network traffic to or from this network+-- interface.+iniSourceDestCheck :: Lens' InstanceNetworkInterface (Maybe Bool)+iniSourceDestCheck =+    lens _iniSourceDestCheck (\s a -> s { _iniSourceDestCheck = a })++-- | The status of the network interface.+iniStatus :: Lens' InstanceNetworkInterface (Maybe NetworkInterfaceStatus)+iniStatus = lens _iniStatus (\s a -> s { _iniStatus = a })++-- | The ID of the subnet.+iniSubnetId :: Lens' InstanceNetworkInterface (Maybe Text)+iniSubnetId = lens _iniSubnetId (\s a -> s { _iniSubnetId = a })++-- | The ID of the VPC.+iniVpcId :: Lens' InstanceNetworkInterface (Maybe Text)+iniVpcId = lens _iniVpcId (\s a -> s { _iniVpcId = a })++instance FromXML InstanceNetworkInterface where+    parseXML x = InstanceNetworkInterface+        <$> x .@? "association"+        <*> x .@? "attachment"+        <*> x .@? "description"+        <*> x .@? "groupSet" .!@ mempty+        <*> x .@? "macAddress"+        <*> x .@? "networkInterfaceId"+        <*> x .@? "ownerId"+        <*> x .@? "privateDnsName"+        <*> x .@? "privateIpAddress"+        <*> x .@? "privateIpAddressesSet" .!@ mempty+        <*> x .@? "sourceDestCheck"+        <*> x .@? "status"+        <*> x .@? "subnetId"+        <*> x .@? "vpcId"++instance ToQuery InstanceNetworkInterface where+    toQuery InstanceNetworkInterface{..} = mconcat+        [ "Association"           =? _iniAssociation+        , "Attachment"            =? _iniAttachment+        , "Description"           =? _iniDescription+        , "GroupSet"              `toQueryList` _iniGroups+        , "MacAddress"            =? _iniMacAddress+        , "NetworkInterfaceId"    =? _iniNetworkInterfaceId+        , "OwnerId"               =? _iniOwnerId+        , "PrivateDnsName"        =? _iniPrivateDnsName+        , "PrivateIpAddress"      =? _iniPrivateIpAddress+        , "PrivateIpAddressesSet" `toQueryList` _iniPrivateIpAddresses+        , "SourceDestCheck"       =? _iniSourceDestCheck+        , "Status"                =? _iniStatus+        , "SubnetId"              =? _iniSubnetId+        , "VpcId"                 =? _iniVpcId+        ]++data VolumeStatusAction = VolumeStatusAction+    { _vsaCode        :: Maybe Text+    , _vsaDescription :: Maybe Text+    , _vsaEventId     :: Maybe Text+    , _vsaEventType   :: Maybe Text+    } deriving (Eq, Ord, Read, Show)++-- | 'VolumeStatusAction' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'vsaCode' @::@ 'Maybe' 'Text'+--+-- * 'vsaDescription' @::@ 'Maybe' 'Text'+--+-- * 'vsaEventId' @::@ 'Maybe' 'Text'+--+-- * 'vsaEventType' @::@ 'Maybe' 'Text'+--+volumeStatusAction :: VolumeStatusAction+volumeStatusAction = VolumeStatusAction+    { _vsaCode        = Nothing+    , _vsaDescription = Nothing+    , _vsaEventType   = Nothing+    , _vsaEventId     = Nothing+    }++-- | The code identifying the operation, for example, 'enable-volume-io'.+vsaCode :: Lens' VolumeStatusAction (Maybe Text)+vsaCode = lens _vsaCode (\s a -> s { _vsaCode = a })++-- | A description of the operation.+vsaDescription :: Lens' VolumeStatusAction (Maybe Text)+vsaDescription = lens _vsaDescription (\s a -> s { _vsaDescription = a })++-- | The ID of the event associated with this operation.+vsaEventId :: Lens' VolumeStatusAction (Maybe Text)+vsaEventId = lens _vsaEventId (\s a -> s { _vsaEventId = a })++-- | The event type associated with this operation.+vsaEventType :: Lens' VolumeStatusAction (Maybe Text)+vsaEventType = lens _vsaEventType (\s a -> s { _vsaEventType = a })++instance FromXML VolumeStatusAction where+    parseXML x = VolumeStatusAction+        <$> x .@? "code"+        <*> x .@? "description"+        <*> x .@? "eventId"+        <*> x .@? "eventType"++instance ToQuery VolumeStatusAction where+    toQuery VolumeStatusAction{..} = mconcat+        [ "Code"        =? _vsaCode+        , "Description" =? _vsaDescription+        , "EventId"     =? _vsaEventId+        , "EventType"   =? _vsaEventType+        ]++data VpcPeeringConnectionVpcInfo = VpcPeeringConnectionVpcInfo+    { _vpcviCidrBlock :: Maybe Text+    , _vpcviOwnerId   :: Maybe Text+    , _vpcviVpcId     :: Maybe Text+    } deriving (Eq, Ord, Read, Show)++-- | 'VpcPeeringConnectionVpcInfo' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'vpcviCidrBlock' @::@ 'Maybe' 'Text'+--+-- * 'vpcviOwnerId' @::@ 'Maybe' 'Text'+--+-- * 'vpcviVpcId' @::@ 'Maybe' 'Text'+--+vpcPeeringConnectionVpcInfo :: VpcPeeringConnectionVpcInfo+vpcPeeringConnectionVpcInfo = VpcPeeringConnectionVpcInfo+    { _vpcviCidrBlock = Nothing+    , _vpcviOwnerId   = Nothing+    , _vpcviVpcId     = Nothing+    }++-- | The CIDR block for the VPC.+vpcviCidrBlock :: Lens' VpcPeeringConnectionVpcInfo (Maybe Text)+vpcviCidrBlock = lens _vpcviCidrBlock (\s a -> s { _vpcviCidrBlock = a })++-- | The AWS account ID of the VPC owner.+vpcviOwnerId :: Lens' VpcPeeringConnectionVpcInfo (Maybe Text)+vpcviOwnerId = lens _vpcviOwnerId (\s a -> s { _vpcviOwnerId = a })++-- | The ID of the VPC.+vpcviVpcId :: Lens' VpcPeeringConnectionVpcInfo (Maybe Text)+vpcviVpcId = lens _vpcviVpcId (\s a -> s { _vpcviVpcId = a })++instance FromXML VpcPeeringConnectionVpcInfo where+    parseXML x = VpcPeeringConnectionVpcInfo+        <$> x .@? "cidrBlock"+        <*> x .@? "ownerId"+        <*> x .@? "vpcId"++instance ToQuery VpcPeeringConnectionVpcInfo where+    toQuery VpcPeeringConnectionVpcInfo{..} = mconcat+        [ "CidrBlock" =? _vpcviCidrBlock+        , "OwnerId"   =? _vpcviOwnerId+        , "VpcId"     =? _vpcviVpcId+        ]++data UserBucketDetails = UserBucketDetails+    { _ubdS3Bucket :: Maybe Text+    , _ubdS3Key    :: Maybe Text+    } deriving (Eq, Ord, Read, Show)++-- | 'UserBucketDetails' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ubdS3Bucket' @::@ 'Maybe' 'Text'+--+-- * 'ubdS3Key' @::@ 'Maybe' 'Text'+--+userBucketDetails :: UserBucketDetails+userBucketDetails = UserBucketDetails+    { _ubdS3Bucket = Nothing+    , _ubdS3Key    = Nothing+    }++-- | The S3 bucket from which the disk image was created.+ubdS3Bucket :: Lens' UserBucketDetails (Maybe Text)+ubdS3Bucket = lens _ubdS3Bucket (\s a -> s { _ubdS3Bucket = a })++-- | The key from which the disk image was created.+ubdS3Key :: Lens' UserBucketDetails (Maybe Text)+ubdS3Key = lens _ubdS3Key (\s a -> s { _ubdS3Key = a })++instance FromXML UserBucketDetails where+    parseXML x = UserBucketDetails+        <$> x .@? "s3Bucket"+        <*> x .@? "s3Key"++instance ToQuery UserBucketDetails where+    toQuery UserBucketDetails{..} = mconcat+        [ "S3Bucket" =? _ubdS3Bucket+        , "S3Key"    =? _ubdS3Key+        ]++data ReservedInstanceLimitPrice = ReservedInstanceLimitPrice+    { _rilpAmount       :: Maybe Double+    , _rilpCurrencyCode :: Maybe CurrencyCodeValues+    } deriving (Eq, Read, Show)++-- | 'ReservedInstanceLimitPrice' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rilpAmount' @::@ 'Maybe' 'Double'+--+-- * 'rilpCurrencyCode' @::@ 'Maybe' 'CurrencyCodeValues'+--+reservedInstanceLimitPrice :: ReservedInstanceLimitPrice+reservedInstanceLimitPrice = ReservedInstanceLimitPrice+    { _rilpAmount       = Nothing+    , _rilpCurrencyCode = Nothing+    }++-- | Used for Reserved Instance Marketplace offerings. Specifies the limit price+-- on the total order (instanceCount * price).+rilpAmount :: Lens' ReservedInstanceLimitPrice (Maybe Double)+rilpAmount = lens _rilpAmount (\s a -> s { _rilpAmount = a })++-- | The currency in which the 'limitPrice' amount is specified. At this time, the+-- only supported currency is 'USD'.+rilpCurrencyCode :: Lens' ReservedInstanceLimitPrice (Maybe CurrencyCodeValues)+rilpCurrencyCode = lens _rilpCurrencyCode (\s a -> s { _rilpCurrencyCode = a })++instance FromXML ReservedInstanceLimitPrice where+    parseXML x = ReservedInstanceLimitPrice+        <$> x .@? "amount"+        <*> x .@? "currencyCode"++instance ToQuery ReservedInstanceLimitPrice where+    toQuery ReservedInstanceLimitPrice{..} = mconcat+        [ "Amount"       =? _rilpAmount+        , "CurrencyCode" =? _rilpCurrencyCode+        ]++data Vpc = Vpc+    { _vpcCidrBlock       :: Text+    , _vpcDhcpOptionsId   :: Text+    , _vpcInstanceTenancy :: Tenancy+    , _vpcIsDefault       :: Bool+    , _vpcState           :: VpcState+    , _vpcTags            :: List "item" Tag+    , _vpcVpcId           :: Text+    } deriving (Eq, Read, Show)++-- | 'Vpc' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'vpcCidrBlock' @::@ 'Text'+--+-- * 'vpcDhcpOptionsId' @::@ 'Text'+--+-- * 'vpcInstanceTenancy' @::@ 'Tenancy'+--+-- * 'vpcIsDefault' @::@ 'Bool'+--+-- * 'vpcState' @::@ 'VpcState'+--+-- * 'vpcTags' @::@ ['Tag']+--+-- * 'vpcVpcId' @::@ 'Text'+--+vpc :: Text -- ^ 'vpcVpcId'+    -> VpcState -- ^ 'vpcState'+    -> Text -- ^ 'vpcCidrBlock'+    -> Text -- ^ 'vpcDhcpOptionsId'+    -> Tenancy -- ^ 'vpcInstanceTenancy'+    -> Bool -- ^ 'vpcIsDefault'+    -> Vpc+vpc p1 p2 p3 p4 p5 p6 = Vpc+    { _vpcVpcId           = p1+    , _vpcState           = p2+    , _vpcCidrBlock       = p3+    , _vpcDhcpOptionsId   = p4+    , _vpcInstanceTenancy = p5+    , _vpcIsDefault       = p6+    , _vpcTags            = mempty+    }++-- | The CIDR block for the VPC.+vpcCidrBlock :: Lens' Vpc Text+vpcCidrBlock = lens _vpcCidrBlock (\s a -> s { _vpcCidrBlock = a })++-- | The ID of the set of DHCP options you've associated with the VPC (or 'default'+-- if the default options are associated with the VPC).+vpcDhcpOptionsId :: Lens' Vpc Text+vpcDhcpOptionsId = lens _vpcDhcpOptionsId (\s a -> s { _vpcDhcpOptionsId = a })++-- | The allowed tenancy of instances launched into the VPC.+vpcInstanceTenancy :: Lens' Vpc Tenancy+vpcInstanceTenancy =+    lens _vpcInstanceTenancy (\s a -> s { _vpcInstanceTenancy = a })++-- | Indicates whether the VPC is the default VPC.+vpcIsDefault :: Lens' Vpc Bool+vpcIsDefault = lens _vpcIsDefault (\s a -> s { _vpcIsDefault = a })++-- | The current state of the VPC.+vpcState :: Lens' Vpc VpcState+vpcState = lens _vpcState (\s a -> s { _vpcState = a })++-- | Any tags assigned to the VPC.+vpcTags :: Lens' Vpc [Tag]+vpcTags = lens _vpcTags (\s a -> s { _vpcTags = a }) . _List++-- | The ID of the VPC.+vpcVpcId :: Lens' Vpc Text+vpcVpcId = lens _vpcVpcId (\s a -> s { _vpcVpcId = a })++instance FromXML Vpc where+    parseXML x = Vpc+        <$> x .@  "cidrBlock"+        <*> x .@  "dhcpOptionsId"+        <*> x .@  "instanceTenancy"+        <*> x .@  "isDefault"+        <*> x .@  "state"+        <*> x .@? "tagSet" .!@ mempty+        <*> x .@  "vpcId"++instance ToQuery Vpc where+    toQuery Vpc{..} = mconcat+        [ "CidrBlock"       =? _vpcCidrBlock+        , "DhcpOptionsId"   =? _vpcDhcpOptionsId+        , "InstanceTenancy" =? _vpcInstanceTenancy+        , "IsDefault"       =? _vpcIsDefault+        , "State"           =? _vpcState+        , "TagSet"          `toQueryList` _vpcTags+        , "VpcId"           =? _vpcVpcId+        ]++data ImageDiskContainer = ImageDiskContainer+    { _idcDescription :: Maybe Text+    , _idcDeviceName  :: Maybe Text+    , _idcFormat      :: Maybe Text+    , _idcSnapshotId  :: Maybe Text+    , _idcUrl         :: Maybe Text+    , _idcUserBucket  :: Maybe UserBucket+    } deriving (Eq, Read, Show)++-- | 'ImageDiskContainer' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'idcDescription' @::@ 'Maybe' 'Text'+--+-- * 'idcDeviceName' @::@ 'Maybe' 'Text'+--+-- * 'idcFormat' @::@ 'Maybe' 'Text'+--+-- * 'idcSnapshotId' @::@ 'Maybe' 'Text'+--+-- * 'idcUrl' @::@ 'Maybe' 'Text'+--+-- * 'idcUserBucket' @::@ 'Maybe' 'UserBucket'+--+imageDiskContainer :: ImageDiskContainer+imageDiskContainer = ImageDiskContainer+    { _idcDescription = Nothing+    , _idcFormat      = Nothing+    , _idcUrl         = Nothing+    , _idcUserBucket  = Nothing+    , _idcDeviceName  = Nothing+    , _idcSnapshotId  = Nothing+    }++-- | The description of the disk image.+idcDescription :: Lens' ImageDiskContainer (Maybe Text)+idcDescription = lens _idcDescription (\s a -> s { _idcDescription = a })++-- | The block device mapping for the disk.+idcDeviceName :: Lens' ImageDiskContainer (Maybe Text)+idcDeviceName = lens _idcDeviceName (\s a -> s { _idcDeviceName = a })++-- | The format of the disk image being imported.+--+-- Valid values: 'RAW' | 'VHD' | 'VMDK' | 'OVA'+idcFormat :: Lens' ImageDiskContainer (Maybe Text)+idcFormat = lens _idcFormat (\s a -> s { _idcFormat = a })++-- | The ID of the EBS snapshot to be used for importing the snapshot.+idcSnapshotId :: Lens' ImageDiskContainer (Maybe Text)+idcSnapshotId = lens _idcSnapshotId (\s a -> s { _idcSnapshotId = a })++-- | The URL to the Amazon S3-based disk image being imported. The URL can either+-- be a https URL (https://..) or an Amazon S3 URL (s3://..)+idcUrl :: Lens' ImageDiskContainer (Maybe Text)+idcUrl = lens _idcUrl (\s a -> s { _idcUrl = a })++-- | The S3 bucket for the disk image.+idcUserBucket :: Lens' ImageDiskContainer (Maybe UserBucket)+idcUserBucket = lens _idcUserBucket (\s a -> s { _idcUserBucket = a })++instance FromXML ImageDiskContainer where+    parseXML x = ImageDiskContainer+        <$> x .@? "Description"+        <*> x .@? "DeviceName"+        <*> x .@? "Format"+        <*> x .@? "SnapshotId"+        <*> x .@? "Url"+        <*> x .@? "UserBucket"++instance ToQuery ImageDiskContainer where+    toQuery ImageDiskContainer{..} = mconcat+        [ "Description" =? _idcDescription+        , "DeviceName"  =? _idcDeviceName+        , "Format"      =? _idcFormat+        , "SnapshotId"  =? _idcSnapshotId+        , "Url"         =? _idcUrl+        , "UserBucket"  =? _idcUserBucket+        ]++data InstanceStatus = InstanceStatus+    { _isAvailabilityZone :: Maybe Text+    , _isEvents           :: List "item" InstanceStatusEvent+    , _isInstanceId       :: Maybe Text+    , _isInstanceState    :: Maybe InstanceState+    , _isInstanceStatus   :: Maybe InstanceStatusSummary+    , _isSystemStatus     :: Maybe InstanceStatusSummary+    } deriving (Eq, Read, Show)++-- | 'InstanceStatus' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'isAvailabilityZone' @::@ 'Maybe' 'Text'+--+-- * 'isEvents' @::@ ['InstanceStatusEvent']+--+-- * 'isInstanceId' @::@ 'Maybe' 'Text'+--+-- * 'isInstanceState' @::@ 'Maybe' 'InstanceState'+--+-- * 'isInstanceStatus' @::@ 'Maybe' 'InstanceStatusSummary'+--+-- * 'isSystemStatus' @::@ 'Maybe' 'InstanceStatusSummary'+--+instanceStatus :: InstanceStatus+instanceStatus = InstanceStatus+    { _isInstanceId       = Nothing+    , _isAvailabilityZone = Nothing+    , _isEvents           = mempty+    , _isInstanceState    = Nothing+    , _isSystemStatus     = Nothing+    , _isInstanceStatus   = Nothing+    }++-- | The Availability Zone of the instance.+isAvailabilityZone :: Lens' InstanceStatus (Maybe Text)+isAvailabilityZone =+    lens _isAvailabilityZone (\s a -> s { _isAvailabilityZone = a })++-- | Any scheduled events associated with the instance.+isEvents :: Lens' InstanceStatus [InstanceStatusEvent]+isEvents = lens _isEvents (\s a -> s { _isEvents = a }) . _List++-- | The ID of the instance.+isInstanceId :: Lens' InstanceStatus (Maybe Text)+isInstanceId = lens _isInstanceId (\s a -> s { _isInstanceId = a })++-- | The intended state of the instance. 'DescribeInstanceStatus' requires that an+-- instance be in the 'running' state.+isInstanceState :: Lens' InstanceStatus (Maybe InstanceState)+isInstanceState = lens _isInstanceState (\s a -> s { _isInstanceState = a })++-- | Reports impaired functionality that stems from issues internal to the+-- instance, such as impaired reachability.+isInstanceStatus :: Lens' InstanceStatus (Maybe InstanceStatusSummary)+isInstanceStatus = lens _isInstanceStatus (\s a -> s { _isInstanceStatus = a })++-- | Reports impaired functionality that stems from issues related to the systems+-- that support an instance, such as hardware failures and network connectivity+-- problems.+isSystemStatus :: Lens' InstanceStatus (Maybe InstanceStatusSummary)+isSystemStatus = lens _isSystemStatus (\s a -> s { _isSystemStatus = a })++instance FromXML InstanceStatus where+    parseXML x = InstanceStatus+        <$> x .@? "availabilityZone"+        <*> x .@? "eventsSet" .!@ mempty+        <*> x .@? "instanceId"+        <*> x .@? "instanceState"+        <*> x .@? "instanceStatus"+        <*> x .@? "systemStatus"++instance ToQuery InstanceStatus where+    toQuery InstanceStatus{..} = mconcat+        [ "AvailabilityZone" =? _isAvailabilityZone+        , "EventsSet"        `toQueryList` _isEvents+        , "InstanceId"       =? _isInstanceId+        , "InstanceState"    =? _isInstanceState+        , "InstanceStatus"   =? _isInstanceStatus+        , "SystemStatus"     =? _isSystemStatus+        ]++data ArchitectureValues+    = I386  -- ^ i386+    | X8664 -- ^ x86_64+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable ArchitectureValues++instance FromText ArchitectureValues where+    parser = takeLowerText >>= \case+        "i386"   -> pure I386+        "x86_64" -> pure X8664+        e        -> fail $+            "Failure parsing ArchitectureValues from " ++ show e++instance ToText ArchitectureValues where+    toText = \case+        I386  -> "i386"+        X8664 -> "x86_64"++instance ToByteString ArchitectureValues+instance ToHeader     ArchitectureValues+instance ToQuery      ArchitectureValues++instance FromXML ArchitectureValues where+    parseXML = parseXMLText "ArchitectureValues"++data ReportInstanceReasonCodes+    = InstanceStuckInState     -- ^ instance-stuck-in-state+    | NotAcceptingCredentials  -- ^ not-accepting-credentials+    | Other                    -- ^ other+    | PasswordNotAvailable     -- ^ password-not-available+    | PerformanceEbsVolume     -- ^ performance-ebs-volume+    | PerformanceInstanceStore -- ^ performance-instance-store+    | PerformanceNetwork       -- ^ performance-network+    | PerformanceOther         -- ^ performance-other+    | Unresponsive             -- ^ unresponsive+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable ReportInstanceReasonCodes++instance FromText ReportInstanceReasonCodes where+    parser = takeLowerText >>= \case+        "instance-stuck-in-state"    -> pure InstanceStuckInState+        "not-accepting-credentials"  -> pure NotAcceptingCredentials+        "other"                      -> pure Other+        "password-not-available"     -> pure PasswordNotAvailable+        "performance-ebs-volume"     -> pure PerformanceEbsVolume+        "performance-instance-store" -> pure PerformanceInstanceStore+        "performance-network"        -> pure PerformanceNetwork+        "performance-other"          -> pure PerformanceOther+        "unresponsive"               -> pure Unresponsive+        e                            -> fail $+            "Failure parsing ReportInstanceReasonCodes from " ++ show e++instance ToText ReportInstanceReasonCodes where+    toText = \case+        InstanceStuckInState     -> "instance-stuck-in-state"+        NotAcceptingCredentials  -> "not-accepting-credentials"+        Other                    -> "other"+        PasswordNotAvailable     -> "password-not-available"+        PerformanceEbsVolume     -> "performance-ebs-volume"+        PerformanceInstanceStore -> "performance-instance-store"+        PerformanceNetwork       -> "performance-network"+        PerformanceOther         -> "performance-other"+        Unresponsive             -> "unresponsive"++instance ToByteString ReportInstanceReasonCodes+instance ToHeader     ReportInstanceReasonCodes+instance ToQuery      ReportInstanceReasonCodes++instance FromXML ReportInstanceReasonCodes where+    parseXML = parseXMLText "ReportInstanceReasonCodes"++data MoveStatus+    = MovingToVpc        -- ^ movingToVpc+    | RestoringToClassic -- ^ restoringToClassic+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable MoveStatus++instance FromText MoveStatus where+    parser = takeLowerText >>= \case+        "movingtovpc"        -> pure MovingToVpc+        "restoringtoclassic" -> pure RestoringToClassic+        e                    -> fail $+            "Failure parsing MoveStatus from " ++ show e++instance ToText MoveStatus where+    toText = \case+        MovingToVpc        -> "movingToVpc"+        RestoringToClassic -> "restoringToClassic"++instance ToByteString MoveStatus+instance ToHeader     MoveStatus+instance ToQuery      MoveStatus++instance FromXML MoveStatus where+    parseXML = parseXMLText "MoveStatus"++data EbsBlockDevice = EbsBlockDevice+    { _ebdDeleteOnTermination :: Maybe Bool+    , _ebdEncrypted           :: Maybe Bool+    , _ebdIops                :: Maybe Int+    , _ebdSnapshotId          :: Maybe Text+    , _ebdVolumeSize          :: Maybe Int+    , _ebdVolumeType          :: Maybe VolumeType+    } deriving (Eq, Read, Show)++-- | 'EbsBlockDevice' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ebdDeleteOnTermination' @::@ 'Maybe' 'Bool'+--+-- * 'ebdEncrypted' @::@ 'Maybe' 'Bool'+--+-- * 'ebdIops' @::@ 'Maybe' 'Int'+--+-- * 'ebdSnapshotId' @::@ 'Maybe' 'Text'+--+-- * 'ebdVolumeSize' @::@ 'Maybe' 'Int'+--+-- * 'ebdVolumeType' @::@ 'Maybe' 'VolumeType'+--+ebsBlockDevice :: EbsBlockDevice+ebsBlockDevice = EbsBlockDevice+    { _ebdSnapshotId          = Nothing+    , _ebdVolumeSize          = Nothing+    , _ebdDeleteOnTermination = Nothing+    , _ebdVolumeType          = Nothing+    , _ebdIops                = Nothing+    , _ebdEncrypted           = Nothing+    }++-- | Indicates whether the EBS volume is deleted on instance termination.+ebdDeleteOnTermination :: Lens' EbsBlockDevice (Maybe Bool)+ebdDeleteOnTermination =+    lens _ebdDeleteOnTermination (\s a -> s { _ebdDeleteOnTermination = a })++-- | Indicates whether the EBS volume is encrypted. Encrypted Amazon EBS volumes+-- may only be attached to instances that support Amazon EBS encryption.+ebdEncrypted :: Lens' EbsBlockDevice (Maybe Bool)+ebdEncrypted = lens _ebdEncrypted (\s a -> s { _ebdEncrypted = a })++-- | The number of I/O operations per second (IOPS) that the volume supports. For+-- Provisioned IOPS (SSD) volumes, this represents the number of IOPS that are+-- provisioned for the volume. For General Purpose (SSD) volumes, this+-- represents the baseline performance of the volume and the rate at which the+-- volume accumulates I/O credits for bursting. For more information on General+-- Purpose (SSD) baseline performance, I/O credits, and bursting, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html Amazon EBSVolume Types> in the /Amazon Elastic Compute Cloud User Guide/.+--+-- Constraint: Range is 100 to 20000 for Provisioned IOPS (SSD) volumes and 3+-- to 10000 for General Purpose (SSD) volumes.+--+-- Condition: This parameter is required for requests to create 'io1' volumes; it+-- is not used in requests to create 'standard' or 'gp2' volumes.+ebdIops :: Lens' EbsBlockDevice (Maybe Int)+ebdIops = lens _ebdIops (\s a -> s { _ebdIops = a })++-- | The ID of the snapshot.+ebdSnapshotId :: Lens' EbsBlockDevice (Maybe Text)+ebdSnapshotId = lens _ebdSnapshotId (\s a -> s { _ebdSnapshotId = a })++-- | The size of the volume, in GiB.+--+-- Constraints: '1-1024' for 'standard' volumes, '1-16384' for 'gp2' volumes, and '4-16384' for 'io1' volumes. If you specify a snapshot, the volume size must be equal to+-- or larger than the snapshot size.+--+-- Default: If you're creating the volume from a snapshot and don't specify a+-- volume size, the default is the snapshot size.+ebdVolumeSize :: Lens' EbsBlockDevice (Maybe Int)+ebdVolumeSize = lens _ebdVolumeSize (\s a -> s { _ebdVolumeSize = a })++-- | The volume type. 'gp2' for General Purpose (SSD) volumes, 'io1' for Provisioned+-- IOPS (SSD) volumes, and 'standard' for Magnetic volumes.+--+-- Default: 'standard'+ebdVolumeType :: Lens' EbsBlockDevice (Maybe VolumeType)+ebdVolumeType = lens _ebdVolumeType (\s a -> s { _ebdVolumeType = a })++instance FromXML EbsBlockDevice where+    parseXML x = EbsBlockDevice+        <$> x .@? "deleteOnTermination"+        <*> x .@? "encrypted"+        <*> x .@? "iops"+        <*> x .@? "snapshotId"+        <*> x .@? "volumeSize"+        <*> x .@? "volumeType"++instance ToQuery EbsBlockDevice where+    toQuery EbsBlockDevice{..} = mconcat+        [ "DeleteOnTermination" =? _ebdDeleteOnTermination+        , "Encrypted"           =? _ebdEncrypted+        , "Iops"                =? _ebdIops+        , "SnapshotId"          =? _ebdSnapshotId+        , "VolumeSize"          =? _ebdVolumeSize+        , "VolumeType"          =? _ebdVolumeType+        ]++data AccountAttribute = AccountAttribute+    { _aaAttributeName   :: Maybe Text+    , _aaAttributeValues :: List "item" AccountAttributeValue+    } deriving (Eq, Read, Show)++-- | 'AccountAttribute' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'aaAttributeName' @::@ 'Maybe' 'Text'+--+-- * 'aaAttributeValues' @::@ ['AccountAttributeValue']+--+accountAttribute :: AccountAttribute+accountAttribute = AccountAttribute+    { _aaAttributeName   = Nothing+    , _aaAttributeValues = mempty+    }++-- | The name of the account attribute.+aaAttributeName :: Lens' AccountAttribute (Maybe Text)+aaAttributeName = lens _aaAttributeName (\s a -> s { _aaAttributeName = a })++-- | One or more values for the account attribute.+aaAttributeValues :: Lens' AccountAttribute [AccountAttributeValue]+aaAttributeValues =+    lens _aaAttributeValues (\s a -> s { _aaAttributeValues = a })+        . _List++instance FromXML AccountAttribute where+    parseXML x = AccountAttribute+        <$> x .@? "attributeName"+        <*> x .@? "attributeValueSet" .!@ mempty++instance ToQuery AccountAttribute where+    toQuery AccountAttribute{..} = mconcat+        [ "AttributeName"     =? _aaAttributeName+        , "AttributeValueSet" `toQueryList` _aaAttributeValues+        ]++data SnapshotDetail = SnapshotDetail+    { _sdDescription   :: Maybe Text+    , _sdDeviceName    :: Maybe Text+    , _sdDiskImageSize :: Maybe Double+    , _sdFormat        :: Maybe Text+    , _sdProgress      :: Maybe Text+    , _sdSnapshotId    :: Maybe Text+    , _sdStatus        :: Maybe Text+    , _sdStatusMessage :: Maybe Text+    , _sdUrl           :: Maybe Text+    , _sdUserBucket    :: Maybe UserBucketDetails+    } deriving (Eq, Read, Show)++-- | 'SnapshotDetail' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'sdDescription' @::@ 'Maybe' 'Text'+--+-- * 'sdDeviceName' @::@ 'Maybe' 'Text'+--+-- * 'sdDiskImageSize' @::@ 'Maybe' 'Double'+--+-- * 'sdFormat' @::@ 'Maybe' 'Text'+--+-- * 'sdProgress' @::@ 'Maybe' 'Text'+--+-- * 'sdSnapshotId' @::@ 'Maybe' 'Text'+--+-- * 'sdStatus' @::@ 'Maybe' 'Text'+--+-- * 'sdStatusMessage' @::@ 'Maybe' 'Text'+--+-- * 'sdUrl' @::@ 'Maybe' 'Text'+--+-- * 'sdUserBucket' @::@ 'Maybe' 'UserBucketDetails'+--+snapshotDetail :: SnapshotDetail+snapshotDetail = SnapshotDetail+    { _sdDiskImageSize = Nothing+    , _sdDescription   = Nothing+    , _sdFormat        = Nothing+    , _sdUrl           = Nothing+    , _sdUserBucket    = Nothing+    , _sdDeviceName    = Nothing+    , _sdSnapshotId    = Nothing+    , _sdProgress      = Nothing+    , _sdStatusMessage = Nothing+    , _sdStatus        = Nothing+    }++-- | A description for the snapshot.+sdDescription :: Lens' SnapshotDetail (Maybe Text)+sdDescription = lens _sdDescription (\s a -> s { _sdDescription = a })++-- | The block device mapping for the snapshot.+sdDeviceName :: Lens' SnapshotDetail (Maybe Text)+sdDeviceName = lens _sdDeviceName (\s a -> s { _sdDeviceName = a })++-- | The size of the disk in the snapshot, in GiB.+sdDiskImageSize :: Lens' SnapshotDetail (Maybe Double)+sdDiskImageSize = lens _sdDiskImageSize (\s a -> s { _sdDiskImageSize = a })++-- | The format of the disk image from which the snapshot is created.+sdFormat :: Lens' SnapshotDetail (Maybe Text)+sdFormat = lens _sdFormat (\s a -> s { _sdFormat = a })++-- | The percentage of progress for the task.+sdProgress :: Lens' SnapshotDetail (Maybe Text)+sdProgress = lens _sdProgress (\s a -> s { _sdProgress = a })++-- | The snapshot ID of the disk being imported.+sdSnapshotId :: Lens' SnapshotDetail (Maybe Text)+sdSnapshotId = lens _sdSnapshotId (\s a -> s { _sdSnapshotId = a })++-- | A brief status of the snapshot creation.+sdStatus :: Lens' SnapshotDetail (Maybe Text)+sdStatus = lens _sdStatus (\s a -> s { _sdStatus = a })++-- | A detailed status message for the snapshot creation.+sdStatusMessage :: Lens' SnapshotDetail (Maybe Text)+sdStatusMessage = lens _sdStatusMessage (\s a -> s { _sdStatusMessage = a })++-- | The URL used to access the disk image.+sdUrl :: Lens' SnapshotDetail (Maybe Text)+sdUrl = lens _sdUrl (\s a -> s { _sdUrl = a })++sdUserBucket :: Lens' SnapshotDetail (Maybe UserBucketDetails)+sdUserBucket = lens _sdUserBucket (\s a -> s { _sdUserBucket = a })++instance FromXML SnapshotDetail where+    parseXML x = SnapshotDetail+        <$> x .@? "description"+        <*> x .@? "deviceName"+        <*> x .@? "diskImageSize"+        <*> x .@? "format"+        <*> x .@? "progress"+        <*> x .@? "snapshotId"+        <*> x .@? "status"+        <*> x .@? "statusMessage"+        <*> x .@? "url"+        <*> x .@? "userBucket"++instance ToQuery SnapshotDetail where+    toQuery SnapshotDetail{..} = mconcat+        [ "Description"   =? _sdDescription+        , "DeviceName"    =? _sdDeviceName+        , "DiskImageSize" =? _sdDiskImageSize+        , "Format"        =? _sdFormat+        , "Progress"      =? _sdProgress+        , "SnapshotId"    =? _sdSnapshotId+        , "Status"        =? _sdStatus+        , "StatusMessage" =? _sdStatusMessage+        , "Url"           =? _sdUrl+        , "UserBucket"    =? _sdUserBucket+        ]++data PriceSchedule = PriceSchedule+    { _psActive       :: Maybe Bool+    , _psCurrencyCode :: Maybe CurrencyCodeValues+    , _psPrice        :: Maybe Double+    , _psTerm         :: Maybe Integer+    } deriving (Eq, Read, Show)++-- | 'PriceSchedule' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'psActive' @::@ 'Maybe' 'Bool'+--+-- * 'psCurrencyCode' @::@ 'Maybe' 'CurrencyCodeValues'+--+-- * 'psPrice' @::@ 'Maybe' 'Double'+--+-- * 'psTerm' @::@ 'Maybe' 'Integer'+--+priceSchedule :: PriceSchedule+priceSchedule = PriceSchedule+    { _psTerm         = Nothing+    , _psPrice        = Nothing+    , _psCurrencyCode = Nothing+    , _psActive       = Nothing+    }++-- | The current price schedule, as determined by the term remaining for the+-- Reserved Instance in the listing.+--+-- A specific price schedule is always in effect, but only one price schedule+-- can be active at any time. Take, for example, a Reserved Instance listing+-- that has five months remaining in its term. When you specify price schedules+-- for five months and two months, this means that schedule 1, covering the+-- first three months of the remaining term, will be active during months 5, 4,+-- and 3. Then schedule 2, covering the last two months of the term, will be+-- active for months 2 and 1.+psActive :: Lens' PriceSchedule (Maybe Bool)+psActive = lens _psActive (\s a -> s { _psActive = a })++-- | The currency for transacting the Reserved Instance resale. At this time, the+-- only supported currency is 'USD'.+psCurrencyCode :: Lens' PriceSchedule (Maybe CurrencyCodeValues)+psCurrencyCode = lens _psCurrencyCode (\s a -> s { _psCurrencyCode = a })++-- | The fixed price for the term.+psPrice :: Lens' PriceSchedule (Maybe Double)+psPrice = lens _psPrice (\s a -> s { _psPrice = a })++-- | The number of months remaining in the reservation. For example, 2 is the+-- second to the last month before the capacity reservation expires.+psTerm :: Lens' PriceSchedule (Maybe Integer)+psTerm = lens _psTerm (\s a -> s { _psTerm = a })++instance FromXML PriceSchedule where+    parseXML x = PriceSchedule+        <$> x .@? "active"+        <*> x .@? "currencyCode"+        <*> x .@? "price"+        <*> x .@? "term"++instance ToQuery PriceSchedule where+    toQuery PriceSchedule{..} = mconcat+        [ "Active"       =? _psActive+        , "CurrencyCode" =? _psCurrencyCode+        , "Price"        =? _psPrice+        , "Term"         =? _psTerm+        ]++data DeviceType+    = Ebs           -- ^ ebs+    | InstanceStore -- ^ instance-store+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable DeviceType++instance FromText DeviceType where+    parser = takeLowerText >>= \case+        "ebs"            -> pure Ebs+        "instance-store" -> pure InstanceStore+        e                -> fail $+            "Failure parsing DeviceType from " ++ show e++instance ToText DeviceType where+    toText = \case+        Ebs           -> "ebs"+        InstanceStore -> "instance-store"++instance ToByteString DeviceType+instance ToHeader     DeviceType+instance ToQuery      DeviceType++instance FromXML DeviceType where+    parseXML = parseXMLText "DeviceType"++data DomainType+    = DTStandard -- ^ standard+    | DTVpc      -- ^ vpc+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable DomainType++instance FromText DomainType where+    parser = takeLowerText >>= \case+        "standard" -> pure DTStandard+        "vpc"      -> pure DTVpc+        e          -> fail $+            "Failure parsing DomainType from " ++ show e++instance ToText DomainType where+    toText = \case+        DTStandard -> "standard"+        DTVpc      -> "vpc"++instance ToByteString DomainType+instance ToHeader     DomainType+instance ToQuery      DomainType++instance FromXML DomainType where+    parseXML = parseXMLText "DomainType"++data Region = Region+    { _rEndpoint   :: Maybe Text+    , _rRegionName :: Maybe Text+    } deriving (Eq, Ord, Read, Show)++-- | 'Region' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rEndpoint' @::@ 'Maybe' 'Text'+--+-- * 'rRegionName' @::@ 'Maybe' 'Text'+--+region :: Region+region = Region+    { _rRegionName = Nothing+    , _rEndpoint   = Nothing+    }++-- | The region service endpoint.+rEndpoint :: Lens' Region (Maybe Text)+rEndpoint = lens _rEndpoint (\s a -> s { _rEndpoint = a })++-- | The name of the region.+rRegionName :: Lens' Region (Maybe Text)+rRegionName = lens _rRegionName (\s a -> s { _rRegionName = a })++instance FromXML Region where+    parseXML x = Region+        <$> x .@? "regionEndpoint"+        <*> x .@? "regionName"++instance ToQuery Region where+    toQuery Region{..} = mconcat+        [ "RegionEndpoint" =? _rEndpoint+        , "RegionName"     =? _rRegionName+        ]++newtype PropagatingVgw = PropagatingVgw+    { _pvGatewayId :: Maybe Text+    } deriving (Eq, Ord, Read, Show, Monoid)++-- | 'PropagatingVgw' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'pvGatewayId' @::@ 'Maybe' 'Text'+--+propagatingVgw :: PropagatingVgw+propagatingVgw = PropagatingVgw+    { _pvGatewayId = Nothing+    }++-- | The ID of the virtual private gateway (VGW).+pvGatewayId :: Lens' PropagatingVgw (Maybe Text)+pvGatewayId = lens _pvGatewayId (\s a -> s { _pvGatewayId = a })++instance FromXML PropagatingVgw where+    parseXML x = PropagatingVgw+        <$> x .@? "gatewayId"++instance ToQuery PropagatingVgw where+    toQuery PropagatingVgw{..} = mconcat+        [ "GatewayId" =? _pvGatewayId+        ]++data OfferingTypeValues+    = AllUpfront        -- ^ All Upfront+    | HeavyUtilization  -- ^ Heavy Utilization+    | LightUtilization  -- ^ Light Utilization+    | MediumUtilization -- ^ Medium Utilization+    | NoUpfront         -- ^ No Upfront+    | PartialUpfront    -- ^ Partial Upfront+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable OfferingTypeValues++instance FromText OfferingTypeValues where+    parser = takeLowerText >>= \case+        "all upfront"        -> pure AllUpfront+        "heavy utilization"  -> pure HeavyUtilization+        "light utilization"  -> pure LightUtilization+        "medium utilization" -> pure MediumUtilization+        "no upfront"         -> pure NoUpfront+        "partial upfront"    -> pure PartialUpfront+        e                    -> fail $+            "Failure parsing OfferingTypeValues from " ++ show e++instance ToText OfferingTypeValues where+    toText = \case+        AllUpfront        -> "All Upfront"+        HeavyUtilization  -> "Heavy Utilization"+        LightUtilization  -> "Light Utilization"+        MediumUtilization -> "Medium Utilization"+        NoUpfront         -> "No Upfront"+        PartialUpfront    -> "Partial Upfront"++instance ToByteString OfferingTypeValues+instance ToHeader     OfferingTypeValues+instance ToQuery      OfferingTypeValues++instance FromXML OfferingTypeValues where+    parseXML = parseXMLText "OfferingTypeValues"++data VpnGateway = VpnGateway+    { _vgAvailabilityZone :: Maybe Text+    , _vgState            :: Maybe VpnState+    , _vgTags             :: List "item" Tag+    , _vgType             :: Maybe GatewayType+    , _vgVpcAttachments   :: List "item" VpcAttachment+    , _vgVpnGatewayId     :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'VpnGateway' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'vgAvailabilityZone' @::@ 'Maybe' 'Text'+--+-- * 'vgState' @::@ 'Maybe' 'VpnState'+--+-- * 'vgTags' @::@ ['Tag']+--+-- * 'vgType' @::@ 'Maybe' 'GatewayType'+--+-- * 'vgVpcAttachments' @::@ ['VpcAttachment']+--+-- * 'vgVpnGatewayId' @::@ 'Maybe' 'Text'+--+vpnGateway :: VpnGateway+vpnGateway = VpnGateway+    { _vgVpnGatewayId     = Nothing+    , _vgState            = Nothing+    , _vgType             = Nothing+    , _vgAvailabilityZone = Nothing+    , _vgVpcAttachments   = mempty+    , _vgTags             = mempty+    }++-- | The Availability Zone where the virtual private gateway was created.+vgAvailabilityZone :: Lens' VpnGateway (Maybe Text)+vgAvailabilityZone =+    lens _vgAvailabilityZone (\s a -> s { _vgAvailabilityZone = a })++-- | The current state of the virtual private gateway.+vgState :: Lens' VpnGateway (Maybe VpnState)+vgState = lens _vgState (\s a -> s { _vgState = a })++-- | Any tags assigned to the virtual private gateway.+vgTags :: Lens' VpnGateway [Tag]+vgTags = lens _vgTags (\s a -> s { _vgTags = a }) . _List++-- | The type of VPN connection the virtual private gateway supports.+vgType :: Lens' VpnGateway (Maybe GatewayType)+vgType = lens _vgType (\s a -> s { _vgType = a })++-- | Any VPCs attached to the virtual private gateway.+vgVpcAttachments :: Lens' VpnGateway [VpcAttachment]+vgVpcAttachments = lens _vgVpcAttachments (\s a -> s { _vgVpcAttachments = a }) . _List++-- | The ID of the virtual private gateway.+vgVpnGatewayId :: Lens' VpnGateway (Maybe Text)+vgVpnGatewayId = lens _vgVpnGatewayId (\s a -> s { _vgVpnGatewayId = a })++instance FromXML VpnGateway where+    parseXML x = VpnGateway+        <$> x .@? "availabilityZone"+        <*> x .@? "state"+        <*> x .@? "tagSet" .!@ mempty+        <*> x .@? "type"+        <*> x .@? "attachments" .!@ mempty+        <*> x .@? "vpnGatewayId"++instance ToQuery VpnGateway where+    toQuery VpnGateway{..} = mconcat+        [ "AvailabilityZone" =? _vgAvailabilityZone+        , "State"            =? _vgState+        , "TagSet"           `toQueryList` _vgTags+        , "Type"             =? _vgType+        , "Attachments"      `toQueryList` _vgVpcAttachments+        , "VpnGatewayId"     =? _vgVpnGatewayId+        ]++data EventInformation = EventInformation+    { _eiEventDescription :: Maybe Text+    , _eiEventSubType     :: Maybe Text+    , _eiInstanceId       :: Maybe Text+    } deriving (Eq, Ord, Read, Show)++-- | 'EventInformation' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'eiEventDescription' @::@ 'Maybe' 'Text'+--+-- * 'eiEventSubType' @::@ 'Maybe' 'Text'+--+-- * 'eiInstanceId' @::@ 'Maybe' 'Text'+--+eventInformation :: EventInformation+eventInformation = EventInformation+    { _eiInstanceId       = Nothing+    , _eiEventSubType     = Nothing+    , _eiEventDescription = Nothing+    }++-- | The description of the event.+eiEventDescription :: Lens' EventInformation (Maybe Text)+eiEventDescription =+    lens _eiEventDescription (\s a -> s { _eiEventDescription = a })++-- | The event.+--+-- The following are the 'error' events.+--+-- 'iamFleetRoleInvalid' - Spot fleet did not have the required permissions+-- either to launch or terminate an instance.+--+-- 'spotFleetRequestConfigurationInvalid' - The configuration is not valid. For+-- more information, see the description.   'spotInstanceCountLimitExceeded' -+-- You've reached the limit on the number of Spot Instances that you can launch.+--+-- The following are the 'fleetRequestChange' events.+--+-- 'active' - The Spot fleet has been validated and Amazon EC2 is attempting to+-- maintain the target number of running Spot Instances.+--+-- 'cancelled' - The Spot fleet is canceled and has no running Spot Instances.+-- The Spot fleet will be deleted two days after its instances were terminated.+--+-- 'cancelled_running' - The Spot fleet is canceled and will not launch+-- additional Spot Instances, but its existing Spot Instances will continue to+-- run until they are interrupted or terminated.+--+-- 'cancelled_terminating' - The Spot fleet is canceled and its Spot Instances+-- are terminating.+--+-- 'expired' - The Spot fleet request has expired. A subsequent event indicates+-- that the instances were terminated, if the request was created with 'terminateInstancesWithExpiration' set.+--+-- 'price_update' - The bid price for a launch configuration was adjusted+-- because it was too high. This change is permanent.+--+-- 'submitted' - The Spot fleet request is being evaluated and Amazon EC2 is+-- preparing to launch the target number of Spot Instances.+--+-- The following are the 'instanceChange' events.+--+-- 'launched' - A bid was fulfilled and a new instance was launched.+--+-- 'terminated' - An instance was terminated by the user.+--+--+eiEventSubType :: Lens' EventInformation (Maybe Text)+eiEventSubType = lens _eiEventSubType (\s a -> s { _eiEventSubType = a })++-- | The ID of the instance. This information is available only for 'instanceChange'+-- events.+eiInstanceId :: Lens' EventInformation (Maybe Text)+eiInstanceId = lens _eiInstanceId (\s a -> s { _eiInstanceId = a })++instance FromXML EventInformation where+    parseXML x = EventInformation+        <$> x .@? "eventDescription"+        <*> x .@? "eventSubType"+        <*> x .@? "instanceId"++instance ToQuery EventInformation where+    toQuery EventInformation{..} = mconcat+        [ "EventDescription" =? _eiEventDescription+        , "EventSubType"     =? _eiEventSubType+        , "InstanceId"       =? _eiInstanceId+        ]++data Filter = Filter+    { _fName   :: Text+    , _fValues :: List "item" Text+    } deriving (Eq, Ord, Read, Show)++-- | 'Filter' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'fName' @::@ 'Text'+--+-- * 'fValues' @::@ ['Text']+--+filter' :: Text -- ^ 'fName'+        -> Filter+filter' p1 = Filter+    { _fName   = p1+    , _fValues = mempty+    }++-- | The name of the filter. Filter names are case-sensitive.+fName :: Lens' Filter Text+fName = lens _fName (\s a -> s { _fName = a })++-- | One or more filter values. Filter values are case-sensitive.+fValues :: Lens' Filter [Text]+fValues = lens _fValues (\s a -> s { _fValues = a }) . _List++instance FromXML Filter where+    parseXML x = Filter+        <$> x .@  "Name"+        <*> x .@? "Value" .!@ mempty++instance ToQuery Filter where+    toQuery Filter{..} = mconcat+        [ "Name"  =? _fName+        , "Value" `toQueryList` _fValues+        ]++data VolumeType+    = Gp2      -- ^ gp2+    | Io1      -- ^ io1+    | Standard -- ^ standard+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable VolumeType++instance FromText VolumeType where+    parser = takeLowerText >>= \case+        "gp2"      -> pure Gp2+        "io1"      -> pure Io1+        "standard" -> pure Standard+        e          -> fail $+            "Failure parsing VolumeType from " ++ show e++instance ToText VolumeType where+    toText = \case+        Gp2      -> "gp2"+        Io1      -> "io1"+        Standard -> "standard"++instance ToByteString VolumeType+instance ToHeader     VolumeType+instance ToQuery      VolumeType++instance FromXML VolumeType where+    parseXML = parseXMLText "VolumeType"++data InstanceStateChange = InstanceStateChange+    { _iscCurrentState  :: Maybe InstanceState+    , _iscInstanceId    :: Maybe Text+    , _iscPreviousState :: Maybe InstanceState+    } deriving (Eq, Read, Show)++-- | 'InstanceStateChange' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'iscCurrentState' @::@ 'Maybe' 'InstanceState'+--+-- * 'iscInstanceId' @::@ 'Maybe' 'Text'+--+-- * 'iscPreviousState' @::@ 'Maybe' 'InstanceState'+--+instanceStateChange :: InstanceStateChange+instanceStateChange = InstanceStateChange+    { _iscInstanceId    = Nothing+    , _iscCurrentState  = Nothing+    , _iscPreviousState = Nothing+    }++-- | The current state of the instance.+iscCurrentState :: Lens' InstanceStateChange (Maybe InstanceState)+iscCurrentState = lens _iscCurrentState (\s a -> s { _iscCurrentState = a })++-- | The ID of the instance.+iscInstanceId :: Lens' InstanceStateChange (Maybe Text)+iscInstanceId = lens _iscInstanceId (\s a -> s { _iscInstanceId = a })++-- | The previous state of the instance.+iscPreviousState :: Lens' InstanceStateChange (Maybe InstanceState)+iscPreviousState = lens _iscPreviousState (\s a -> s { _iscPreviousState = a })++instance FromXML InstanceStateChange where+    parseXML x = InstanceStateChange+        <$> x .@? "currentState"+        <*> x .@? "instanceId"+        <*> x .@? "previousState"++instance ToQuery InstanceStateChange where+    toQuery InstanceStateChange{..} = mconcat+        [ "CurrentState"  =? _iscCurrentState+        , "InstanceId"    =? _iscInstanceId+        , "PreviousState" =? _iscPreviousState+        ]++data NetworkAcl = NetworkAcl+    { _naAssociations :: List "item" NetworkAclAssociation+    , _naEntries      :: List "item" NetworkAclEntry+    , _naIsDefault    :: Maybe Bool+    , _naNetworkAclId :: Maybe Text+    , _naTags         :: List "item" Tag+    , _naVpcId        :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'NetworkAcl' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'naAssociations' @::@ ['NetworkAclAssociation']+--+-- * 'naEntries' @::@ ['NetworkAclEntry']+--+-- * 'naIsDefault' @::@ 'Maybe' 'Bool'+--+-- * 'naNetworkAclId' @::@ 'Maybe' 'Text'+--+-- * 'naTags' @::@ ['Tag']+--+-- * 'naVpcId' @::@ 'Maybe' 'Text'+--+networkAcl :: NetworkAcl+networkAcl = NetworkAcl+    { _naNetworkAclId = Nothing+    , _naVpcId        = Nothing+    , _naIsDefault    = Nothing+    , _naEntries      = mempty+    , _naAssociations = mempty+    , _naTags         = mempty+    }++-- | Any associations between the network ACL and one or more subnets+naAssociations :: Lens' NetworkAcl [NetworkAclAssociation]+naAssociations = lens _naAssociations (\s a -> s { _naAssociations = a }) . _List++-- | One or more entries (rules) in the network ACL.+naEntries :: Lens' NetworkAcl [NetworkAclEntry]+naEntries = lens _naEntries (\s a -> s { _naEntries = a }) . _List++-- | Indicates whether this is the default network ACL for the VPC.+naIsDefault :: Lens' NetworkAcl (Maybe Bool)+naIsDefault = lens _naIsDefault (\s a -> s { _naIsDefault = a })++-- | The ID of the network ACL.+naNetworkAclId :: Lens' NetworkAcl (Maybe Text)+naNetworkAclId = lens _naNetworkAclId (\s a -> s { _naNetworkAclId = a })++-- | Any tags assigned to the network ACL.+naTags :: Lens' NetworkAcl [Tag]+naTags = lens _naTags (\s a -> s { _naTags = a }) . _List++-- | The ID of the VPC for the network ACL.+naVpcId :: Lens' NetworkAcl (Maybe Text)+naVpcId = lens _naVpcId (\s a -> s { _naVpcId = a })++instance FromXML NetworkAcl where+    parseXML x = NetworkAcl+        <$> x .@? "associationSet" .!@ mempty+        <*> x .@? "entrySet" .!@ mempty+        <*> x .@? "default"+        <*> x .@? "networkAclId"+        <*> x .@? "tagSet" .!@ mempty+        <*> x .@? "vpcId"++instance ToQuery NetworkAcl where+    toQuery NetworkAcl{..} = mconcat+        [ "AssociationSet" `toQueryList` _naAssociations+        , "EntrySet"       `toQueryList` _naEntries+        , "Default"        =? _naIsDefault+        , "NetworkAclId"   =? _naNetworkAclId+        , "TagSet"         `toQueryList` _naTags+        , "VpcId"          =? _naVpcId+        ]++data ImageState+    = ISAvailable    -- ^ available+    | ISDeregistered -- ^ deregistered+    | ISError        -- ^ error+    | ISFailed       -- ^ failed+    | ISInvalid      -- ^ invalid+    | ISPending      -- ^ pending+    | ISTransient    -- ^ transient+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable ImageState++instance FromText ImageState where+    parser = takeLowerText >>= \case+        "available"    -> pure ISAvailable+        "deregistered" -> pure ISDeregistered+        "error"        -> pure ISError+        "failed"       -> pure ISFailed+        "invalid"      -> pure ISInvalid+        "pending"      -> pure ISPending+        "transient"    -> pure ISTransient+        e              -> fail $+            "Failure parsing ImageState from " ++ show e++instance ToText ImageState where+    toText = \case+        ISAvailable    -> "available"+        ISDeregistered -> "deregistered"+        ISError        -> "error"+        ISFailed       -> "failed"+        ISInvalid      -> "invalid"+        ISPending      -> "pending"+        ISTransient    -> "transient"++instance ToByteString ImageState+instance ToHeader     ImageState+instance ToQuery      ImageState++instance FromXML ImageState where+    parseXML = parseXMLText "ImageState"++data GatewayType+    = Ipsec1 -- ^ ipsec.1+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable GatewayType++instance FromText GatewayType where+    parser = takeLowerText >>= \case+        "ipsec.1" -> pure Ipsec1+        e         -> fail $+            "Failure parsing GatewayType from " ++ show e++instance ToText GatewayType where+    toText Ipsec1 = "ipsec.1"++instance ToByteString GatewayType+instance ToHeader     GatewayType+instance ToQuery      GatewayType++instance FromXML GatewayType where+    parseXML = parseXMLText "GatewayType"++data InstanceNetworkInterfaceAttachment = InstanceNetworkInterfaceAttachment+    { _iniaAttachTime          :: Maybe ISO8601+    , _iniaAttachmentId        :: Maybe Text+    , _iniaDeleteOnTermination :: Maybe Bool+    , _iniaDeviceIndex         :: Maybe Int+    , _iniaStatus              :: Maybe AttachmentStatus+    } deriving (Eq, Read, Show)++-- | 'InstanceNetworkInterfaceAttachment' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'iniaAttachTime' @::@ 'Maybe' 'UTCTime'+--+-- * 'iniaAttachmentId' @::@ 'Maybe' 'Text'+--+-- * 'iniaDeleteOnTermination' @::@ 'Maybe' 'Bool'+--+-- * 'iniaDeviceIndex' @::@ 'Maybe' 'Int'+--+-- * 'iniaStatus' @::@ 'Maybe' 'AttachmentStatus'+--+instanceNetworkInterfaceAttachment :: InstanceNetworkInterfaceAttachment+instanceNetworkInterfaceAttachment = InstanceNetworkInterfaceAttachment+    { _iniaAttachmentId        = Nothing+    , _iniaDeviceIndex         = Nothing+    , _iniaStatus              = Nothing+    , _iniaAttachTime          = Nothing+    , _iniaDeleteOnTermination = Nothing+    }++-- | The time stamp when the attachment initiated.+iniaAttachTime :: Lens' InstanceNetworkInterfaceAttachment (Maybe UTCTime)+iniaAttachTime = lens _iniaAttachTime (\s a -> s { _iniaAttachTime = a }) . mapping _Time++-- | The ID of the network interface attachment.+iniaAttachmentId :: Lens' InstanceNetworkInterfaceAttachment (Maybe Text)+iniaAttachmentId = lens _iniaAttachmentId (\s a -> s { _iniaAttachmentId = a })++-- | Indicates whether the network interface is deleted when the instance is+-- terminated.+iniaDeleteOnTermination :: Lens' InstanceNetworkInterfaceAttachment (Maybe Bool)+iniaDeleteOnTermination =+    lens _iniaDeleteOnTermination (\s a -> s { _iniaDeleteOnTermination = a })++-- | The index of the device on the instance for the network interface attachment.+iniaDeviceIndex :: Lens' InstanceNetworkInterfaceAttachment (Maybe Int)+iniaDeviceIndex = lens _iniaDeviceIndex (\s a -> s { _iniaDeviceIndex = a })++-- | The attachment state.+iniaStatus :: Lens' InstanceNetworkInterfaceAttachment (Maybe AttachmentStatus)+iniaStatus = lens _iniaStatus (\s a -> s { _iniaStatus = a })++instance FromXML InstanceNetworkInterfaceAttachment where+    parseXML x = InstanceNetworkInterfaceAttachment+        <$> x .@? "attachTime"+        <*> x .@? "attachmentId"+        <*> x .@? "deleteOnTermination"+        <*> x .@? "deviceIndex"+        <*> x .@? "status"++instance ToQuery InstanceNetworkInterfaceAttachment where+    toQuery InstanceNetworkInterfaceAttachment{..} = mconcat+        [ "AttachTime"          =? _iniaAttachTime+        , "AttachmentId"        =? _iniaAttachmentId+        , "DeleteOnTermination" =? _iniaDeleteOnTermination+        , "DeviceIndex"         =? _iniaDeviceIndex+        , "Status"              =? _iniaStatus+        ]++newtype AttributeBooleanValue = AttributeBooleanValue+    { _abvValue :: Maybe Bool+    } deriving (Eq, Ord, Read, Show)++-- | 'AttributeBooleanValue' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'abvValue' @::@ 'Maybe' 'Bool'+--+attributeBooleanValue :: AttributeBooleanValue+attributeBooleanValue = AttributeBooleanValue+    { _abvValue = Nothing+    }++-- | Valid values are 'true' or 'false'.+abvValue :: Lens' AttributeBooleanValue (Maybe Bool)+abvValue = lens _abvValue (\s a -> s { _abvValue = a })++instance FromXML AttributeBooleanValue where+    parseXML x = AttributeBooleanValue+        <$> x .@? "value"++instance ToQuery AttributeBooleanValue where+    toQuery AttributeBooleanValue{..} = mconcat+        [ "Value" =? _abvValue+        ]++data RecurringCharge = RecurringCharge+    { _rcAmount    :: Maybe Double+    , _rcFrequency :: Maybe RecurringChargeFrequency+    } deriving (Eq, Read, Show)++-- | 'RecurringCharge' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rcAmount' @::@ 'Maybe' 'Double'+--+-- * 'rcFrequency' @::@ 'Maybe' 'RecurringChargeFrequency'+--+recurringCharge :: RecurringCharge+recurringCharge = RecurringCharge+    { _rcFrequency = Nothing+    , _rcAmount    = Nothing+    }++-- | The amount of the recurring charge.+rcAmount :: Lens' RecurringCharge (Maybe Double)+rcAmount = lens _rcAmount (\s a -> s { _rcAmount = a })++-- | The frequency of the recurring charge.+rcFrequency :: Lens' RecurringCharge (Maybe RecurringChargeFrequency)+rcFrequency = lens _rcFrequency (\s a -> s { _rcFrequency = a })++instance FromXML RecurringCharge where+    parseXML x = RecurringCharge+        <$> x .@? "amount"+        <*> x .@? "frequency"++instance ToQuery RecurringCharge where+    toQuery RecurringCharge{..} = mconcat+        [ "Amount"    =? _rcAmount+        , "Frequency" =? _rcFrequency+        ]++data NewDhcpConfiguration = NewDhcpConfiguration+    { _ndcKey    :: Maybe Text+    , _ndcValues :: List "item" Text+    } deriving (Eq, Ord, Read, Show)++-- | 'NewDhcpConfiguration' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ndcKey' @::@ 'Maybe' 'Text'+--+-- * 'ndcValues' @::@ ['Text']+--+newDhcpConfiguration :: NewDhcpConfiguration+newDhcpConfiguration = NewDhcpConfiguration+    { _ndcKey    = Nothing+    , _ndcValues = mempty+    }++ndcKey :: Lens' NewDhcpConfiguration (Maybe Text)+ndcKey = lens _ndcKey (\s a -> s { _ndcKey = a })++ndcValues :: Lens' NewDhcpConfiguration [Text]+ndcValues = lens _ndcValues (\s a -> s { _ndcValues = a }) . _List++instance FromXML NewDhcpConfiguration where+    parseXML x = NewDhcpConfiguration+        <$> x .@? "key"+        <*> x .@? "Value" .!@ mempty++instance ToQuery NewDhcpConfiguration where+    toQuery NewDhcpConfiguration{..} = mconcat+        [ "Key"   =? _ndcKey+        , "Value" `toQueryList` _ndcValues+        ]++data StateReason = StateReason+    { _srCode    :: Maybe Text+    , _srMessage :: Maybe Text+    } deriving (Eq, Ord, Read, Show)++-- | 'StateReason' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'srCode' @::@ 'Maybe' 'Text'+--+-- * 'srMessage' @::@ 'Maybe' 'Text'+--+stateReason :: StateReason+stateReason = StateReason+    { _srCode    = Nothing+    , _srMessage = Nothing+    }++-- | The reason code for the state change.+srCode :: Lens' StateReason (Maybe Text)+srCode = lens _srCode (\s a -> s { _srCode = a })++-- | The message for the state change.+--+-- 'Server.SpotInstanceTermination': A Spot Instance was terminated due to an+-- increase in the market price.+--+-- 'Server.InternalError': An internal error occurred during instance launch,+-- resulting in termination.+--+-- 'Server.InsufficientInstanceCapacity': There was insufficient instance+-- capacity to satisfy the launch request.+--+-- 'Client.InternalError': A client error caused the instance to terminate on+-- launch.+--+-- 'Client.InstanceInitiatedShutdown': The instance was shut down using the 'shutdown -h' command from the instance.+--+-- 'Client.UserInitiatedShutdown': The instance was shut down using the Amazon+-- EC2 API.+--+-- 'Client.VolumeLimitExceeded': The volume limit was exceeded.+--+-- 'Client.InvalidSnapshot.NotFound': The specified snapshot was not found.+--+--+srMessage :: Lens' StateReason (Maybe Text)+srMessage = lens _srMessage (\s a -> s { _srMessage = a })++instance FromXML StateReason where+    parseXML x = StateReason+        <$> x .@? "code"+        <*> x .@? "message"++instance ToQuery StateReason where+    toQuery StateReason{..} = mconcat+        [ "Code"    =? _srCode+        , "Message" =? _srMessage+        ]++data MonitoringState+    = MSDisabled  -- ^ disabled+    | MSDisabling -- ^ disabling+    | MSEnabled   -- ^ enabled+    | MSPending   -- ^ pending+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable MonitoringState++instance FromText MonitoringState where+    parser = takeLowerText >>= \case+        "disabled"  -> pure MSDisabled+        "disabling" -> pure MSDisabling+        "enabled"   -> pure MSEnabled+        "pending"   -> pure MSPending+        e           -> fail $+            "Failure parsing MonitoringState from " ++ show e++instance ToText MonitoringState where+    toText = \case+        MSDisabled  -> "disabled"+        MSDisabling -> "disabling"+        MSEnabled   -> "enabled"+        MSPending   -> "pending"++instance ToByteString MonitoringState+instance ToHeader     MonitoringState+instance ToQuery      MonitoringState++instance FromXML MonitoringState where+    parseXML = parseXMLText "MonitoringState"++newtype ReservedInstancesId = ReservedInstancesId+    { _riiReservedInstancesId :: Maybe Text+    } deriving (Eq, Ord, Read, Show, Monoid)++-- | 'ReservedInstancesId' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'riiReservedInstancesId' @::@ 'Maybe' 'Text'+--+reservedInstancesId :: ReservedInstancesId+reservedInstancesId = ReservedInstancesId+    { _riiReservedInstancesId = Nothing+    }++-- | The ID of the Reserved Instance.+riiReservedInstancesId :: Lens' ReservedInstancesId (Maybe Text)+riiReservedInstancesId =+    lens _riiReservedInstancesId (\s a -> s { _riiReservedInstancesId = a })++instance FromXML ReservedInstancesId where+    parseXML x = ReservedInstancesId+        <$> x .@? "reservedInstancesId"++instance ToQuery ReservedInstancesId where+    toQuery ReservedInstancesId{..} = mconcat+        [ "ReservedInstancesId" =? _riiReservedInstancesId+        ]++data StatusName+    = Reachability -- ^ reachability+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable StatusName++instance FromText StatusName where+    parser = takeLowerText >>= \case+        "reachability" -> pure Reachability+        e              -> fail $+            "Failure parsing StatusName from " ++ show e++instance ToText StatusName where+    toText Reachability = "reachability"++instance ToByteString StatusName+instance ToHeader     StatusName+instance ToQuery      StatusName++instance FromXML StatusName where+    parseXML = parseXMLText "StatusName"++data InternetGateway = InternetGateway+    { _igAttachments       :: List "item" InternetGatewayAttachment+    , _igInternetGatewayId :: Text+    , _igTags              :: List "item" Tag+    } deriving (Eq, Read, Show)++-- | 'InternetGateway' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'igAttachments' @::@ ['InternetGatewayAttachment']+--+-- * 'igInternetGatewayId' @::@ 'Text'+--+-- * 'igTags' @::@ ['Tag']+--+internetGateway :: Text -- ^ 'igInternetGatewayId'+                -> InternetGateway+internetGateway p1 = InternetGateway+    { _igInternetGatewayId = p1+    , _igAttachments       = mempty+    , _igTags              = mempty+    }++-- | Any VPCs attached to the Internet gateway.+igAttachments :: Lens' InternetGateway [InternetGatewayAttachment]+igAttachments = lens _igAttachments (\s a -> s { _igAttachments = a }) . _List++-- | The ID of the Internet gateway.+igInternetGatewayId :: Lens' InternetGateway Text+igInternetGatewayId =+    lens _igInternetGatewayId (\s a -> s { _igInternetGatewayId = a })++-- | Any tags assigned to the Internet gateway.+igTags :: Lens' InternetGateway [Tag]+igTags = lens _igTags (\s a -> s { _igTags = a }) . _List++instance FromXML InternetGateway where+    parseXML x = InternetGateway+        <$> x .@? "attachmentSet" .!@ mempty+        <*> x .@  "internetGatewayId"+        <*> x .@? "tagSet" .!@ mempty++instance ToQuery InternetGateway where+    toQuery InternetGateway{..} = mconcat+        [ "AttachmentSet"     `toQueryList` _igAttachments+        , "InternetGatewayId" =? _igInternetGatewayId+        , "TagSet"            `toQueryList` _igTags+        ]++data VolumeStatusName+    = IoEnabled     -- ^ io-enabled+    | IoPerformance -- ^ io-performance+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable VolumeStatusName++instance FromText VolumeStatusName where+    parser = takeLowerText >>= \case+        "io-enabled"     -> pure IoEnabled+        "io-performance" -> pure IoPerformance+        e                -> fail $+            "Failure parsing VolumeStatusName from " ++ show e++instance ToText VolumeStatusName where+    toText = \case+        IoEnabled     -> "io-enabled"+        IoPerformance -> "io-performance"++instance ToByteString VolumeStatusName+instance ToHeader     VolumeStatusName+instance ToQuery      VolumeStatusName++instance FromXML VolumeStatusName where+    parseXML = parseXMLText "VolumeStatusName"++data VolumeAttributeName+    = AutoEnableIO -- ^ autoEnableIO+    | ProductCodes -- ^ productCodes+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable VolumeAttributeName++instance FromText VolumeAttributeName where+    parser = takeLowerText >>= \case+        "autoenableio" -> pure AutoEnableIO+        "productcodes" -> pure ProductCodes+        e              -> fail $+            "Failure parsing VolumeAttributeName from " ++ show e++instance ToText VolumeAttributeName where+    toText = \case+        AutoEnableIO -> "autoEnableIO"+        ProductCodes -> "productCodes"++instance ToByteString VolumeAttributeName+instance ToHeader     VolumeAttributeName+instance ToQuery      VolumeAttributeName++instance FromXML VolumeAttributeName where+    parseXML = parseXMLText "VolumeAttributeName"++data ImportInstanceTaskDetails = ImportInstanceTaskDetails+    { _iitdDescription :: Maybe Text+    , _iitdInstanceId  :: Maybe Text+    , _iitdPlatform    :: Maybe PlatformValues+    , _iitdVolumes     :: List "item" ImportInstanceVolumeDetailItem+    } deriving (Eq, Read, Show)++-- | 'ImportInstanceTaskDetails' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'iitdDescription' @::@ 'Maybe' 'Text'+--+-- * 'iitdInstanceId' @::@ 'Maybe' 'Text'+--+-- * 'iitdPlatform' @::@ 'Maybe' 'PlatformValues'+--+-- * 'iitdVolumes' @::@ ['ImportInstanceVolumeDetailItem']+--+importInstanceTaskDetails :: ImportInstanceTaskDetails+importInstanceTaskDetails = ImportInstanceTaskDetails+    { _iitdVolumes     = mempty+    , _iitdInstanceId  = Nothing+    , _iitdPlatform    = Nothing+    , _iitdDescription = Nothing+    }++-- | A description of the task.+iitdDescription :: Lens' ImportInstanceTaskDetails (Maybe Text)+iitdDescription = lens _iitdDescription (\s a -> s { _iitdDescription = a })++-- | The ID of the instance.+iitdInstanceId :: Lens' ImportInstanceTaskDetails (Maybe Text)+iitdInstanceId = lens _iitdInstanceId (\s a -> s { _iitdInstanceId = a })++-- | The instance operating system.+iitdPlatform :: Lens' ImportInstanceTaskDetails (Maybe PlatformValues)+iitdPlatform = lens _iitdPlatform (\s a -> s { _iitdPlatform = a })++-- | One or more volumes.+iitdVolumes :: Lens' ImportInstanceTaskDetails [ImportInstanceVolumeDetailItem]+iitdVolumes = lens _iitdVolumes (\s a -> s { _iitdVolumes = a }) . _List++instance FromXML ImportInstanceTaskDetails where+    parseXML x = ImportInstanceTaskDetails+        <$> x .@? "description"+        <*> x .@? "instanceId"+        <*> x .@? "platform"+        <*> x .@? "volumes" .!@ mempty++instance ToQuery ImportInstanceTaskDetails where+    toQuery ImportInstanceTaskDetails{..} = mconcat+        [ "Description" =? _iitdDescription+        , "InstanceId"  =? _iitdInstanceId+        , "Platform"    =? _iitdPlatform+        , "Volumes"     `toQueryList` _iitdVolumes+        ]++data PlacementGroup = PlacementGroup+    { _pgGroupName :: Maybe Text+    , _pgState     :: Maybe PlacementGroupState+    , _pgStrategy  :: Maybe PlacementStrategy+    } deriving (Eq, Read, Show)++-- | 'PlacementGroup' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'pgGroupName' @::@ 'Maybe' 'Text'+--+-- * 'pgState' @::@ 'Maybe' 'PlacementGroupState'+--+-- * 'pgStrategy' @::@ 'Maybe' 'PlacementStrategy'+--+placementGroup :: PlacementGroup+placementGroup = PlacementGroup+    { _pgGroupName = Nothing+    , _pgStrategy  = Nothing+    , _pgState     = Nothing+    }++-- | The name of the placement group.+pgGroupName :: Lens' PlacementGroup (Maybe Text)+pgGroupName = lens _pgGroupName (\s a -> s { _pgGroupName = a })++-- | The state of the placement group.+pgState :: Lens' PlacementGroup (Maybe PlacementGroupState)+pgState = lens _pgState (\s a -> s { _pgState = a })++-- | The placement strategy.+pgStrategy :: Lens' PlacementGroup (Maybe PlacementStrategy)+pgStrategy = lens _pgStrategy (\s a -> s { _pgStrategy = a })++instance FromXML PlacementGroup where+    parseXML x = PlacementGroup+        <$> x .@? "groupName"+        <*> x .@? "state"+        <*> x .@? "strategy"++instance ToQuery PlacementGroup where+    toQuery PlacementGroup{..} = mconcat+        [ "GroupName" =? _pgGroupName+        , "State"     =? _pgState+        , "Strategy"  =? _pgStrategy+        ]++data ProductCode = ProductCode+    { _pcProductCodeId   :: Maybe Text+    , _pcProductCodeType :: Maybe ProductCodeValues+    } deriving (Eq, Read, Show)++-- | 'ProductCode' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'pcProductCodeId' @::@ 'Maybe' 'Text'+--+-- * 'pcProductCodeType' @::@ 'Maybe' 'ProductCodeValues'+--+productCode :: ProductCode+productCode = ProductCode+    { _pcProductCodeId   = Nothing+    , _pcProductCodeType = Nothing+    }++-- | The product code.+pcProductCodeId :: Lens' ProductCode (Maybe Text)+pcProductCodeId = lens _pcProductCodeId (\s a -> s { _pcProductCodeId = a })++-- | The type of product code.+pcProductCodeType :: Lens' ProductCode (Maybe ProductCodeValues)+pcProductCodeType =+    lens _pcProductCodeType (\s a -> s { _pcProductCodeType = a })++instance FromXML ProductCode where+    parseXML x = ProductCode+        <$> x .@? "productCode"+        <*> x .@? "type"++instance ToQuery ProductCode where+    toQuery ProductCode{..} = mconcat+        [ "ProductCode" =? _pcProductCodeId+        , "Type"        =? _pcProductCodeType+        ]++data ListingStatus+    = ListingStatusActive    -- ^ active+    | ListingStatusCancelled -- ^ cancelled+    | ListingStatusClosed    -- ^ closed+    | ListingStatusPending   -- ^ pending+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable ListingStatus++instance FromText ListingStatus where+    parser = takeLowerText >>= \case+        "active"    -> pure ListingStatusActive+        "cancelled" -> pure ListingStatusCancelled+        "closed"    -> pure ListingStatusClosed+        "pending"   -> pure ListingStatusPending+        e           -> fail $+            "Failure parsing ListingStatus from " ++ show e++instance ToText ListingStatus where+    toText = \case+        ListingStatusActive    -> "active"+        ListingStatusCancelled -> "cancelled"+        ListingStatusClosed    -> "closed"+        ListingStatusPending   -> "pending"++instance ToByteString ListingStatus+instance ToHeader     ListingStatus+instance ToQuery      ListingStatus++instance FromXML ListingStatus where+    parseXML = parseXMLText "ListingStatus"++newtype IpRange = IpRange+    { _irCidrIp :: Text+    } deriving (Eq, Ord, Read, Show, Monoid, IsString)++-- | 'IpRange' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'irCidrIp' @::@ 'Text'+--+ipRange :: Text -- ^ 'irCidrIp'+        -> IpRange+ipRange p1 = IpRange+    { _irCidrIp = p1+    }++-- | The CIDR range. You can either specify a CIDR range or a source security+-- group, not both.+irCidrIp :: Lens' IpRange Text+irCidrIp = lens _irCidrIp (\s a -> s { _irCidrIp = a })++instance FromXML IpRange where+    parseXML x = IpRange+        <$> x .@  "cidrIp"++instance ToQuery IpRange where+    toQuery IpRange{..} = mconcat+        [ "CidrIp" =? _irCidrIp+        ]++data VolumeStatusInfoStatus+    = VSISImpaired         -- ^ impaired+    | VSISInsufficientData -- ^ insufficient-data+    | VSISOk               -- ^ ok+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable VolumeStatusInfoStatus++instance FromText VolumeStatusInfoStatus where+    parser = takeLowerText >>= \case+        "impaired"          -> pure VSISImpaired+        "insufficient-data" -> pure VSISInsufficientData+        "ok"                -> pure VSISOk+        e                   -> fail $+            "Failure parsing VolumeStatusInfoStatus from " ++ show e++instance ToText VolumeStatusInfoStatus where+    toText = \case+        VSISImpaired         -> "impaired"+        VSISInsufficientData -> "insufficient-data"+        VSISOk               -> "ok"++instance ToByteString VolumeStatusInfoStatus+instance ToHeader     VolumeStatusInfoStatus+instance ToQuery      VolumeStatusInfoStatus++instance FromXML VolumeStatusInfoStatus where+    parseXML = parseXMLText "VolumeStatusInfoStatus"++newtype AccountAttributeValue = AccountAttributeValue+    { _aavAttributeValue :: Maybe Text+    } deriving (Eq, Ord, Read, Show, Monoid)++-- | 'AccountAttributeValue' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'aavAttributeValue' @::@ 'Maybe' 'Text'+--+accountAttributeValue :: AccountAttributeValue+accountAttributeValue = AccountAttributeValue+    { _aavAttributeValue = Nothing+    }++-- | The value of the attribute.+aavAttributeValue :: Lens' AccountAttributeValue (Maybe Text)+aavAttributeValue =+    lens _aavAttributeValue (\s a -> s { _aavAttributeValue = a })++instance FromXML AccountAttributeValue where+    parseXML x = AccountAttributeValue+        <$> x .@? "attributeValue"++instance ToQuery AccountAttributeValue where+    toQuery AccountAttributeValue{..} = mconcat+        [ "AttributeValue" =? _aavAttributeValue+        ]++data SnapshotDiskContainer = SnapshotDiskContainer+    { _sdcDescription :: Maybe Text+    , _sdcFormat      :: Maybe Text+    , _sdcUrl         :: Maybe Text+    , _sdcUserBucket  :: Maybe UserBucket+    } deriving (Eq, Read, Show)++-- | 'SnapshotDiskContainer' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'sdcDescription' @::@ 'Maybe' 'Text'+--+-- * 'sdcFormat' @::@ 'Maybe' 'Text'+--+-- * 'sdcUrl' @::@ 'Maybe' 'Text'+--+-- * 'sdcUserBucket' @::@ 'Maybe' 'UserBucket'+--+snapshotDiskContainer :: SnapshotDiskContainer+snapshotDiskContainer = SnapshotDiskContainer+    { _sdcDescription = Nothing+    , _sdcFormat      = Nothing+    , _sdcUrl         = Nothing+    , _sdcUserBucket  = Nothing+    }++-- | The description of the disk image being imported.+sdcDescription :: Lens' SnapshotDiskContainer (Maybe Text)+sdcDescription = lens _sdcDescription (\s a -> s { _sdcDescription = a })++-- | The format of the disk image being imported.+--+-- Valid values: 'RAW' | 'VHD' | 'VMDK' | 'OVA'+sdcFormat :: Lens' SnapshotDiskContainer (Maybe Text)+sdcFormat = lens _sdcFormat (\s a -> s { _sdcFormat = a })++-- | The URL to the Amazon S3-based disk image being imported. It can either be a+-- https URL (https://..) or an Amazon S3 URL (s3://..).+sdcUrl :: Lens' SnapshotDiskContainer (Maybe Text)+sdcUrl = lens _sdcUrl (\s a -> s { _sdcUrl = a })++sdcUserBucket :: Lens' SnapshotDiskContainer (Maybe UserBucket)+sdcUserBucket = lens _sdcUserBucket (\s a -> s { _sdcUserBucket = a })++instance FromXML SnapshotDiskContainer where+    parseXML x = SnapshotDiskContainer+        <$> x .@? "Description"+        <*> x .@? "Format"+        <*> x .@? "Url"+        <*> x .@? "UserBucket"++instance ToQuery SnapshotDiskContainer where+    toQuery SnapshotDiskContainer{..} = mconcat+        [ "Description" =? _sdcDescription+        , "Format"      =? _sdcFormat+        , "Url"         =? _sdcUrl+        , "UserBucket"  =? _sdcUserBucket+        ]++data RIProductDescription+    = RIPDLinuxUNIX          -- ^ Linux/UNIX+    | RIPDLinuxUNIXAmazonVPC -- ^ Linux/UNIX (Amazon VPC)+    | RIPDWindows            -- ^ Windows+    | RIPDWindowsAmazonVPC   -- ^ Windows (Amazon VPC)+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable RIProductDescription++instance FromText RIProductDescription where+    parser = takeLowerText >>= \case+        "linux/unix"              -> pure RIPDLinuxUNIX+        "linux/unix (amazon vpc)" -> pure RIPDLinuxUNIXAmazonVPC+        "windows"                 -> pure RIPDWindows+        "windows (amazon vpc)"    -> pure RIPDWindowsAmazonVPC+        e                         -> fail $+            "Failure parsing RIProductDescription from " ++ show e++instance ToText RIProductDescription where+    toText = \case+        RIPDLinuxUNIX          -> "Linux/UNIX"+        RIPDLinuxUNIXAmazonVPC -> "Linux/UNIX (Amazon VPC)"+        RIPDWindows            -> "Windows"+        RIPDWindowsAmazonVPC   -> "Windows (Amazon VPC)"++instance ToByteString RIProductDescription+instance ToHeader     RIProductDescription+instance ToQuery      RIProductDescription++instance FromXML RIProductDescription where+    parseXML = parseXMLText "RIProductDescription"++data ReservedInstancesOffering = ReservedInstancesOffering+    { _rioAvailabilityZone            :: Maybe Text+    , _rioCurrencyCode                :: Maybe CurrencyCodeValues+    , _rioDuration                    :: Maybe Integer+    , _rioFixedPrice                  :: Maybe Double+    , _rioInstanceTenancy             :: Maybe Tenancy+    , _rioInstanceType                :: Maybe InstanceType+    , _rioMarketplace                 :: Maybe Bool+    , _rioOfferingType                :: Maybe OfferingTypeValues+    , _rioPricingDetails              :: List "item" PricingDetail+    , _rioProductDescription          :: Maybe RIProductDescription+    , _rioRecurringCharges            :: List "item" RecurringCharge+    , _rioReservedInstancesOfferingId :: Maybe Text+    , _rioUsagePrice                  :: Maybe Double+    } deriving (Eq, Read, Show)++-- | 'ReservedInstancesOffering' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rioAvailabilityZone' @::@ 'Maybe' 'Text'+--+-- * 'rioCurrencyCode' @::@ 'Maybe' 'CurrencyCodeValues'+--+-- * 'rioDuration' @::@ 'Maybe' 'Integer'+--+-- * 'rioFixedPrice' @::@ 'Maybe' 'Double'+--+-- * 'rioInstanceTenancy' @::@ 'Maybe' 'Tenancy'+--+-- * 'rioInstanceType' @::@ 'Maybe' 'InstanceType'+--+-- * 'rioMarketplace' @::@ 'Maybe' 'Bool'+--+-- * 'rioOfferingType' @::@ 'Maybe' 'OfferingTypeValues'+--+-- * 'rioPricingDetails' @::@ ['PricingDetail']+--+-- * 'rioProductDescription' @::@ 'Maybe' 'RIProductDescription'+--+-- * 'rioRecurringCharges' @::@ ['RecurringCharge']+--+-- * 'rioReservedInstancesOfferingId' @::@ 'Maybe' 'Text'+--+-- * 'rioUsagePrice' @::@ 'Maybe' 'Double'+--+reservedInstancesOffering :: ReservedInstancesOffering+reservedInstancesOffering = ReservedInstancesOffering+    { _rioReservedInstancesOfferingId = Nothing+    , _rioInstanceType                = Nothing+    , _rioAvailabilityZone            = Nothing+    , _rioDuration                    = Nothing+    , _rioUsagePrice                  = Nothing+    , _rioFixedPrice                  = Nothing+    , _rioProductDescription          = Nothing+    , _rioInstanceTenancy             = Nothing+    , _rioCurrencyCode                = Nothing+    , _rioOfferingType                = Nothing+    , _rioRecurringCharges            = mempty+    , _rioMarketplace                 = Nothing+    , _rioPricingDetails              = mempty+    }++-- | The Availability Zone in which the Reserved Instance can be used.+rioAvailabilityZone :: Lens' ReservedInstancesOffering (Maybe Text)+rioAvailabilityZone =+    lens _rioAvailabilityZone (\s a -> s { _rioAvailabilityZone = a })++-- | The currency of the Reserved Instance offering you are purchasing. It's+-- specified using ISO 4217 standard currency codes. At this time, the only+-- supported currency is 'USD'.+rioCurrencyCode :: Lens' ReservedInstancesOffering (Maybe CurrencyCodeValues)+rioCurrencyCode = lens _rioCurrencyCode (\s a -> s { _rioCurrencyCode = a })++-- | The duration of the Reserved Instance, in seconds.+rioDuration :: Lens' ReservedInstancesOffering (Maybe Integer)+rioDuration = lens _rioDuration (\s a -> s { _rioDuration = a })++-- | The purchase price of the Reserved Instance.+rioFixedPrice :: Lens' ReservedInstancesOffering (Maybe Double)+rioFixedPrice = lens _rioFixedPrice (\s a -> s { _rioFixedPrice = a })++-- | The tenancy of the reserved instance.+rioInstanceTenancy :: Lens' ReservedInstancesOffering (Maybe Tenancy)+rioInstanceTenancy =+    lens _rioInstanceTenancy (\s a -> s { _rioInstanceTenancy = a })++-- | The instance type on which the Reserved Instance can be used.+rioInstanceType :: Lens' ReservedInstancesOffering (Maybe InstanceType)+rioInstanceType = lens _rioInstanceType (\s a -> s { _rioInstanceType = a })++-- | Indicates whether the offering is available through the Reserved Instance+-- Marketplace (resale) or AWS. If it's a Reserved Instance Marketplace+-- offering, this is 'true'.+rioMarketplace :: Lens' ReservedInstancesOffering (Maybe Bool)+rioMarketplace = lens _rioMarketplace (\s a -> s { _rioMarketplace = a })++-- | The Reserved Instance offering type.+rioOfferingType :: Lens' ReservedInstancesOffering (Maybe OfferingTypeValues)+rioOfferingType = lens _rioOfferingType (\s a -> s { _rioOfferingType = a })++-- | The pricing details of the Reserved Instance offering.+rioPricingDetails :: Lens' ReservedInstancesOffering [PricingDetail]+rioPricingDetails =+    lens _rioPricingDetails (\s a -> s { _rioPricingDetails = a })+        . _List++-- | The Reserved Instance description.+rioProductDescription :: Lens' ReservedInstancesOffering (Maybe RIProductDescription)+rioProductDescription =+    lens _rioProductDescription (\s a -> s { _rioProductDescription = a })++-- | The recurring charge tag assigned to the resource.+rioRecurringCharges :: Lens' ReservedInstancesOffering [RecurringCharge]+rioRecurringCharges =+    lens _rioRecurringCharges (\s a -> s { _rioRecurringCharges = a })+        . _List++-- | The ID of the Reserved Instance offering.+rioReservedInstancesOfferingId :: Lens' ReservedInstancesOffering (Maybe Text)+rioReservedInstancesOfferingId =+    lens _rioReservedInstancesOfferingId+        (\s a -> s { _rioReservedInstancesOfferingId = a })++-- | The usage price of the Reserved Instance, per hour.+rioUsagePrice :: Lens' ReservedInstancesOffering (Maybe Double)+rioUsagePrice = lens _rioUsagePrice (\s a -> s { _rioUsagePrice = a })++instance FromXML ReservedInstancesOffering where+    parseXML x = ReservedInstancesOffering+        <$> x .@? "availabilityZone"+        <*> x .@? "currencyCode"+        <*> x .@? "duration"+        <*> x .@? "fixedPrice"+        <*> x .@? "instanceTenancy"+        <*> x .@? "instanceType"+        <*> x .@? "marketplace"+        <*> x .@? "offeringType"+        <*> x .@? "pricingDetailsSet" .!@ mempty+        <*> x .@? "productDescription"+        <*> x .@? "recurringCharges" .!@ mempty+        <*> x .@? "reservedInstancesOfferingId"+        <*> x .@? "usagePrice"++instance ToQuery ReservedInstancesOffering where+    toQuery ReservedInstancesOffering{..} = mconcat+        [ "AvailabilityZone"            =? _rioAvailabilityZone+        , "CurrencyCode"                =? _rioCurrencyCode+        , "Duration"                    =? _rioDuration+        , "FixedPrice"                  =? _rioFixedPrice+        , "InstanceTenancy"             =? _rioInstanceTenancy+        , "InstanceType"                =? _rioInstanceType+        , "Marketplace"                 =? _rioMarketplace+        , "OfferingType"                =? _rioOfferingType+        , "PricingDetailsSet"           `toQueryList` _rioPricingDetails+        , "ProductDescription"          =? _rioProductDescription+        , "RecurringCharges"            `toQueryList` _rioRecurringCharges+        , "ReservedInstancesOfferingId" =? _rioReservedInstancesOfferingId+        , "UsagePrice"                  =? _rioUsagePrice+        ]++data ReservedInstances = ReservedInstances+    { _ri1AvailabilityZone    :: Maybe Text+    , _ri1CurrencyCode        :: Maybe CurrencyCodeValues+    , _ri1Duration            :: Maybe Integer+    , _ri1End                 :: Maybe ISO8601+    , _ri1FixedPrice          :: Maybe Double+    , _ri1InstanceCount       :: Maybe Int+    , _ri1InstanceTenancy     :: Maybe Tenancy+    , _ri1InstanceType        :: Maybe InstanceType+    , _ri1OfferingType        :: Maybe OfferingTypeValues+    , _ri1ProductDescription  :: Maybe RIProductDescription+    , _ri1RecurringCharges    :: List "item" RecurringCharge+    , _ri1ReservedInstancesId :: Maybe Text+    , _ri1Start               :: Maybe ISO8601+    , _ri1State               :: Maybe ReservedInstanceState+    , _ri1Tags                :: List "item" Tag+    , _ri1UsagePrice          :: Maybe Double+    } deriving (Eq, Read, Show)++-- | 'ReservedInstances' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ri1AvailabilityZone' @::@ 'Maybe' 'Text'+--+-- * 'ri1CurrencyCode' @::@ 'Maybe' 'CurrencyCodeValues'+--+-- * 'ri1Duration' @::@ 'Maybe' 'Integer'+--+-- * 'ri1End' @::@ 'Maybe' 'UTCTime'+--+-- * 'ri1FixedPrice' @::@ 'Maybe' 'Double'+--+-- * 'ri1InstanceCount' @::@ 'Maybe' 'Int'+--+-- * 'ri1InstanceTenancy' @::@ 'Maybe' 'Tenancy'+--+-- * 'ri1InstanceType' @::@ 'Maybe' 'InstanceType'+--+-- * 'ri1OfferingType' @::@ 'Maybe' 'OfferingTypeValues'+--+-- * 'ri1ProductDescription' @::@ 'Maybe' 'RIProductDescription'+--+-- * 'ri1RecurringCharges' @::@ ['RecurringCharge']+--+-- * 'ri1ReservedInstancesId' @::@ 'Maybe' 'Text'+--+-- * 'ri1Start' @::@ 'Maybe' 'UTCTime'+--+-- * 'ri1State' @::@ 'Maybe' 'ReservedInstanceState'+--+-- * 'ri1Tags' @::@ ['Tag']+--+-- * 'ri1UsagePrice' @::@ 'Maybe' 'Double'+--+reservedInstances :: ReservedInstances+reservedInstances = ReservedInstances+    { _ri1ReservedInstancesId = Nothing+    , _ri1InstanceType        = Nothing+    , _ri1AvailabilityZone    = Nothing+    , _ri1Start               = Nothing+    , _ri1End                 = Nothing+    , _ri1Duration            = Nothing+    , _ri1UsagePrice          = Nothing+    , _ri1FixedPrice          = Nothing+    , _ri1InstanceCount       = Nothing+    , _ri1ProductDescription  = Nothing+    , _ri1State               = Nothing+    , _ri1Tags                = mempty+    , _ri1InstanceTenancy     = Nothing+    , _ri1CurrencyCode        = Nothing+    , _ri1OfferingType        = Nothing+    , _ri1RecurringCharges    = mempty+    }++-- | The Availability Zone in which the Reserved Instance can be used.+ri1AvailabilityZone :: Lens' ReservedInstances (Maybe Text)+ri1AvailabilityZone =+    lens _ri1AvailabilityZone (\s a -> s { _ri1AvailabilityZone = a })++-- | The currency of the Reserved Instance. It's specified using ISO 4217 standard+-- currency codes. At this time, the only supported currency is 'USD'.+ri1CurrencyCode :: Lens' ReservedInstances (Maybe CurrencyCodeValues)+ri1CurrencyCode = lens _ri1CurrencyCode (\s a -> s { _ri1CurrencyCode = a })++-- | The duration of the Reserved Instance, in seconds.+ri1Duration :: Lens' ReservedInstances (Maybe Integer)+ri1Duration = lens _ri1Duration (\s a -> s { _ri1Duration = a })++-- | The time when the Reserved Instance expires.+ri1End :: Lens' ReservedInstances (Maybe UTCTime)+ri1End = lens _ri1End (\s a -> s { _ri1End = a }) . mapping _Time++-- | The purchase price of the Reserved Instance.+ri1FixedPrice :: Lens' ReservedInstances (Maybe Double)+ri1FixedPrice = lens _ri1FixedPrice (\s a -> s { _ri1FixedPrice = a })++-- | The number of Reserved Instances purchased.+ri1InstanceCount :: Lens' ReservedInstances (Maybe Int)+ri1InstanceCount = lens _ri1InstanceCount (\s a -> s { _ri1InstanceCount = a })++-- | The tenancy of the reserved instance.+ri1InstanceTenancy :: Lens' ReservedInstances (Maybe Tenancy)+ri1InstanceTenancy =+    lens _ri1InstanceTenancy (\s a -> s { _ri1InstanceTenancy = a })++-- | The instance type on which the Reserved Instance can be used.+ri1InstanceType :: Lens' ReservedInstances (Maybe InstanceType)+ri1InstanceType = lens _ri1InstanceType (\s a -> s { _ri1InstanceType = a })++-- | The Reserved Instance offering type.+ri1OfferingType :: Lens' ReservedInstances (Maybe OfferingTypeValues)+ri1OfferingType = lens _ri1OfferingType (\s a -> s { _ri1OfferingType = a })++-- | The Reserved Instance description.+ri1ProductDescription :: Lens' ReservedInstances (Maybe RIProductDescription)+ri1ProductDescription =+    lens _ri1ProductDescription (\s a -> s { _ri1ProductDescription = a })++-- | The recurring charge tag assigned to the resource.+ri1RecurringCharges :: Lens' ReservedInstances [RecurringCharge]+ri1RecurringCharges =+    lens _ri1RecurringCharges (\s a -> s { _ri1RecurringCharges = a })+        . _List++-- | The ID of the Reserved Instance.+ri1ReservedInstancesId :: Lens' ReservedInstances (Maybe Text)+ri1ReservedInstancesId =+    lens _ri1ReservedInstancesId (\s a -> s { _ri1ReservedInstancesId = a })++-- | The date and time the Reserved Instance started.+ri1Start :: Lens' ReservedInstances (Maybe UTCTime)+ri1Start = lens _ri1Start (\s a -> s { _ri1Start = a }) . mapping _Time++-- | The state of the Reserved Instance purchase.+ri1State :: Lens' ReservedInstances (Maybe ReservedInstanceState)+ri1State = lens _ri1State (\s a -> s { _ri1State = a })++-- | Any tags assigned to the resource.+ri1Tags :: Lens' ReservedInstances [Tag]+ri1Tags = lens _ri1Tags (\s a -> s { _ri1Tags = a }) . _List++-- | The usage price of the Reserved Instance, per hour.+ri1UsagePrice :: Lens' ReservedInstances (Maybe Double)+ri1UsagePrice = lens _ri1UsagePrice (\s a -> s { _ri1UsagePrice = a })++instance FromXML ReservedInstances where+    parseXML x = ReservedInstances+        <$> x .@? "availabilityZone"+        <*> x .@? "currencyCode"+        <*> x .@? "duration"+        <*> x .@? "end"+        <*> x .@? "fixedPrice"+        <*> x .@? "instanceCount"+        <*> x .@? "instanceTenancy"+        <*> x .@? "instanceType"+        <*> x .@? "offeringType"+        <*> x .@? "productDescription"+        <*> x .@? "recurringCharges" .!@ mempty+        <*> x .@? "reservedInstancesId"+        <*> x .@? "start"+        <*> x .@? "state"+        <*> x .@? "tagSet" .!@ mempty+        <*> x .@? "usagePrice"++instance ToQuery ReservedInstances where+    toQuery ReservedInstances{..} = mconcat+        [ "AvailabilityZone"    =? _ri1AvailabilityZone+        , "CurrencyCode"        =? _ri1CurrencyCode+        , "Duration"            =? _ri1Duration+        , "End"                 =? _ri1End+        , "FixedPrice"          =? _ri1FixedPrice+        , "InstanceCount"       =? _ri1InstanceCount+        , "InstanceTenancy"     =? _ri1InstanceTenancy+        , "InstanceType"        =? _ri1InstanceType+        , "OfferingType"        =? _ri1OfferingType+        , "ProductDescription"  =? _ri1ProductDescription+        , "RecurringCharges"    `toQueryList` _ri1RecurringCharges+        , "ReservedInstancesId" =? _ri1ReservedInstancesId+        , "Start"               =? _ri1Start+        , "State"               =? _ri1State+        , "TagSet"              `toQueryList` _ri1Tags+        , "UsagePrice"          =? _ri1UsagePrice+        ]++data DatafeedSubscriptionState+    = DSSActive   -- ^ Active+    | DSSInactive -- ^ Inactive+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable DatafeedSubscriptionState++instance FromText DatafeedSubscriptionState where+    parser = takeLowerText >>= \case+        "active"   -> pure DSSActive+        "inactive" -> pure DSSInactive+        e          -> fail $+            "Failure parsing DatafeedSubscriptionState from " ++ show e++instance ToText DatafeedSubscriptionState where+    toText = \case+        DSSActive   -> "Active"+        DSSInactive -> "Inactive"++instance ToByteString DatafeedSubscriptionState+instance ToHeader     DatafeedSubscriptionState+instance ToQuery      DatafeedSubscriptionState++instance FromXML DatafeedSubscriptionState where+    parseXML = parseXMLText "DatafeedSubscriptionState"++data ExportTaskState+    = ETSActive     -- ^ active+    | ETSCancelled  -- ^ cancelled+    | ETSCancelling -- ^ cancelling+    | ETSCompleted  -- ^ completed+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable ExportTaskState++instance FromText ExportTaskState where+    parser = takeLowerText >>= \case+        "active"     -> pure ETSActive+        "cancelled"  -> pure ETSCancelled+        "cancelling" -> pure ETSCancelling+        "completed"  -> pure ETSCompleted+        e            -> fail $+            "Failure parsing ExportTaskState from " ++ show e++instance ToText ExportTaskState where+    toText = \case+        ETSActive     -> "active"+        ETSCancelled  -> "cancelled"+        ETSCancelling -> "cancelling"+        ETSCompleted  -> "completed"++instance ToByteString ExportTaskState+instance ToHeader     ExportTaskState+instance ToQuery      ExportTaskState++instance FromXML ExportTaskState where+    parseXML = parseXMLText "ExportTaskState"++data ProductCodeValues+    = Devpay      -- ^ devpay+    | Marketplace -- ^ marketplace+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable ProductCodeValues++instance FromText ProductCodeValues where+    parser = takeLowerText >>= \case+        "devpay"      -> pure Devpay+        "marketplace" -> pure Marketplace+        e             -> fail $+            "Failure parsing ProductCodeValues from " ++ show e++instance ToText ProductCodeValues where+    toText = \case+        Devpay      -> "devpay"+        Marketplace -> "marketplace"++instance ToByteString ProductCodeValues+instance ToHeader     ProductCodeValues+instance ToQuery      ProductCodeValues++instance FromXML ProductCodeValues where+    parseXML = parseXMLText "ProductCodeValues"++data VpnConnection = VpnConnection+    { _vcCustomerGatewayConfiguration :: Text+    , _vcCustomerGatewayId            :: Text+    , _vcOptions                      :: Maybe VpnConnectionOptions+    , _vcRoutes                       :: List "item" VpnStaticRoute+    , _vcState                        :: VpnState+    , _vcTags                         :: List "item" Tag+    , _vcType                         :: GatewayType+    , _vcVgwTelemetry                 :: List "item" VgwTelemetry+    , _vcVpnConnectionId              :: Text+    , _vcVpnGatewayId                 :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'VpnConnection' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'vcCustomerGatewayConfiguration' @::@ 'Text'+--+-- * 'vcCustomerGatewayId' @::@ 'Text'+--+-- * 'vcOptions' @::@ 'Maybe' 'VpnConnectionOptions'+--+-- * 'vcRoutes' @::@ ['VpnStaticRoute']+--+-- * 'vcState' @::@ 'VpnState'+--+-- * 'vcTags' @::@ ['Tag']+--+-- * 'vcType' @::@ 'GatewayType'+--+-- * 'vcVgwTelemetry' @::@ ['VgwTelemetry']+--+-- * 'vcVpnConnectionId' @::@ 'Text'+--+-- * 'vcVpnGatewayId' @::@ 'Maybe' 'Text'+--+vpnConnection :: Text -- ^ 'vcVpnConnectionId'+              -> VpnState -- ^ 'vcState'+              -> Text -- ^ 'vcCustomerGatewayConfiguration'+              -> GatewayType -- ^ 'vcType'+              -> Text -- ^ 'vcCustomerGatewayId'+              -> VpnConnection+vpnConnection p1 p2 p3 p4 p5 = VpnConnection+    { _vcVpnConnectionId              = p1+    , _vcState                        = p2+    , _vcCustomerGatewayConfiguration = p3+    , _vcType                         = p4+    , _vcCustomerGatewayId            = p5+    , _vcVpnGatewayId                 = Nothing+    , _vcTags                         = mempty+    , _vcVgwTelemetry                 = mempty+    , _vcOptions                      = Nothing+    , _vcRoutes                       = mempty+    }++-- | The configuration information for the VPN connection's customer gateway (in+-- the native XML format). This element is always present in the 'CreateVpnConnection' response; however, it's present in the 'DescribeVpnConnections' response only+-- if the VPN connection is in the 'pending' or 'available' state.+vcCustomerGatewayConfiguration :: Lens' VpnConnection Text+vcCustomerGatewayConfiguration =+    lens _vcCustomerGatewayConfiguration+        (\s a -> s { _vcCustomerGatewayConfiguration = a })++-- | The ID of the customer gateway at your end of the VPN connection.+vcCustomerGatewayId :: Lens' VpnConnection Text+vcCustomerGatewayId =+    lens _vcCustomerGatewayId (\s a -> s { _vcCustomerGatewayId = a })++-- | The VPN connection options.+vcOptions :: Lens' VpnConnection (Maybe VpnConnectionOptions)+vcOptions = lens _vcOptions (\s a -> s { _vcOptions = a })++-- | The static routes associated with the VPN connection.+vcRoutes :: Lens' VpnConnection [VpnStaticRoute]+vcRoutes = lens _vcRoutes (\s a -> s { _vcRoutes = a }) . _List++-- | The current state of the VPN connection.+vcState :: Lens' VpnConnection VpnState+vcState = lens _vcState (\s a -> s { _vcState = a })++-- | Any tags assigned to the VPN connection.+vcTags :: Lens' VpnConnection [Tag]+vcTags = lens _vcTags (\s a -> s { _vcTags = a }) . _List++-- | The type of VPN connection.+vcType :: Lens' VpnConnection GatewayType+vcType = lens _vcType (\s a -> s { _vcType = a })++-- | Information about the VPN tunnel.+vcVgwTelemetry :: Lens' VpnConnection [VgwTelemetry]+vcVgwTelemetry = lens _vcVgwTelemetry (\s a -> s { _vcVgwTelemetry = a }) . _List++-- | The ID of the VPN connection.+vcVpnConnectionId :: Lens' VpnConnection Text+vcVpnConnectionId =+    lens _vcVpnConnectionId (\s a -> s { _vcVpnConnectionId = a })++-- | The ID of the virtual private gateway at the AWS side of the VPN connection.+vcVpnGatewayId :: Lens' VpnConnection (Maybe Text)+vcVpnGatewayId = lens _vcVpnGatewayId (\s a -> s { _vcVpnGatewayId = a })++instance FromXML VpnConnection where+    parseXML x = VpnConnection+        <$> x .@  "customerGatewayConfiguration"+        <*> x .@  "customerGatewayId"+        <*> x .@? "options"+        <*> x .@? "routes" .!@ mempty+        <*> x .@  "state"+        <*> x .@? "tagSet" .!@ mempty+        <*> x .@  "type"+        <*> x .@? "vgwTelemetry" .!@ mempty+        <*> x .@  "vpnConnectionId"+        <*> x .@? "vpnGatewayId"++instance ToQuery VpnConnection where+    toQuery VpnConnection{..} = mconcat+        [ "CustomerGatewayConfiguration" =? _vcCustomerGatewayConfiguration+        , "CustomerGatewayId"            =? _vcCustomerGatewayId+        , "Options"                      =? _vcOptions+        , "Routes"                       `toQueryList` _vcRoutes+        , "State"                        =? _vcState+        , "TagSet"                       `toQueryList` _vcTags+        , "Type"                         =? _vcType+        , "VgwTelemetry"                 `toQueryList` _vcVgwTelemetry+        , "VpnConnectionId"              =? _vcVpnConnectionId+        , "VpnGatewayId"                 =? _vcVpnGatewayId+        ]++data InstanceState = InstanceState+    { _isCode :: Int+    , _isName :: InstanceStateName+    } deriving (Eq, Read, Show)++-- | 'InstanceState' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'isCode' @::@ 'Int'+--+-- * 'isName' @::@ 'InstanceStateName'+--+instanceState :: Int -- ^ 'isCode'+              -> InstanceStateName -- ^ 'isName'+              -> InstanceState+instanceState p1 p2 = InstanceState+    { _isCode = p1+    , _isName = p2+    }++-- | The low byte represents the state. The high byte is an opaque internal value+-- and should be ignored.+--+-- '0' : 'pending'+--+-- '16' : 'running'+--+-- '32' : 'shutting-down'+--+-- '48' : 'terminated'+--+-- '64' : 'stopping'+--+-- '80' : 'stopped'+--+--+isCode :: Lens' InstanceState Int+isCode = lens _isCode (\s a -> s { _isCode = a })++-- | The current state of the instance.+isName :: Lens' InstanceState InstanceStateName+isName = lens _isName (\s a -> s { _isName = a })++instance FromXML InstanceState where+    parseXML x = InstanceState+        <$> x .@  "code"+        <*> x .@  "name"++instance ToQuery InstanceState where+    toQuery InstanceState{..} = mconcat+        [ "Code" =? _isCode+        , "Name" =? _isName+        ]++data VpcEndpoint = VpcEndpoint+    { _veCreationTimestamp :: Maybe ISO8601+    , _vePolicyDocument    :: Maybe Text+    , _veRouteTableIds     :: List "item" Text+    , _veServiceName       :: Maybe Text+    , _veState             :: Maybe State+    , _veVpcEndpointId     :: Maybe Text+    , _veVpcId             :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'VpcEndpoint' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'veCreationTimestamp' @::@ 'Maybe' 'UTCTime'+--+-- * 'vePolicyDocument' @::@ 'Maybe' 'Text'+--+-- * 'veRouteTableIds' @::@ ['Text']+--+-- * 'veServiceName' @::@ 'Maybe' 'Text'+--+-- * 'veState' @::@ 'Maybe' 'State'+--+-- * 'veVpcEndpointId' @::@ 'Maybe' 'Text'+--+-- * 'veVpcId' @::@ 'Maybe' 'Text'+--+vpcEndpoint :: VpcEndpoint+vpcEndpoint = VpcEndpoint+    { _veVpcEndpointId     = Nothing+    , _veVpcId             = Nothing+    , _veServiceName       = Nothing+    , _veState             = Nothing+    , _vePolicyDocument    = Nothing+    , _veRouteTableIds     = mempty+    , _veCreationTimestamp = Nothing+    }++-- | The date and time the VPC endpoint was created.+veCreationTimestamp :: Lens' VpcEndpoint (Maybe UTCTime)+veCreationTimestamp =+    lens _veCreationTimestamp (\s a -> s { _veCreationTimestamp = a })+        . mapping _Time++-- | The policy document associated with the endpoint.+vePolicyDocument :: Lens' VpcEndpoint (Maybe Text)+vePolicyDocument = lens _vePolicyDocument (\s a -> s { _vePolicyDocument = a })++-- | One or more route tables associated with the endpoint.+veRouteTableIds :: Lens' VpcEndpoint [Text]+veRouteTableIds = lens _veRouteTableIds (\s a -> s { _veRouteTableIds = a }) . _List++-- | The name of the AWS service to which the endpoint is associated.+veServiceName :: Lens' VpcEndpoint (Maybe Text)+veServiceName = lens _veServiceName (\s a -> s { _veServiceName = a })++-- | The state of the VPC endpoint.+veState :: Lens' VpcEndpoint (Maybe State)+veState = lens _veState (\s a -> s { _veState = a })++-- | The ID of the VPC endpoint.+veVpcEndpointId :: Lens' VpcEndpoint (Maybe Text)+veVpcEndpointId = lens _veVpcEndpointId (\s a -> s { _veVpcEndpointId = a })++-- | The ID of the VPC to which the endpoint is associated.+veVpcId :: Lens' VpcEndpoint (Maybe Text)+veVpcId = lens _veVpcId (\s a -> s { _veVpcId = a })++instance FromXML VpcEndpoint where+    parseXML x = VpcEndpoint+        <$> x .@? "creationTimestamp"+        <*> x .@? "policyDocument"+        <*> x .@? "routeTableIdSet" .!@ mempty+        <*> x .@? "serviceName"+        <*> x .@? "state"+        <*> x .@? "vpcEndpointId"+        <*> x .@? "vpcId"++instance ToQuery VpcEndpoint where+    toQuery VpcEndpoint{..} = mconcat+        [ "CreationTimestamp" =? _veCreationTimestamp+        , "PolicyDocument"    =? _vePolicyDocument+        , "RouteTableIdSet"   `toQueryList` _veRouteTableIds+        , "ServiceName"       =? _veServiceName+        , "State"             =? _veState+        , "VpcEndpointId"     =? _veVpcEndpointId+        , "VpcId"             =? _veVpcId+        ]++data ClientData = ClientData+    { _cdComment     :: Maybe Text+    , _cdUploadEnd   :: Maybe ISO8601+    , _cdUploadSize  :: Maybe Double+    , _cdUploadStart :: Maybe ISO8601+    } deriving (Eq, Ord, Read, Show)++-- | 'ClientData' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cdComment' @::@ 'Maybe' 'Text'+--+-- * 'cdUploadEnd' @::@ 'Maybe' 'UTCTime'+--+-- * 'cdUploadSize' @::@ 'Maybe' 'Double'+--+-- * 'cdUploadStart' @::@ 'Maybe' 'UTCTime'+--+clientData :: ClientData+clientData = ClientData+    { _cdUploadStart = Nothing+    , _cdUploadEnd   = Nothing+    , _cdUploadSize  = Nothing+    , _cdComment     = Nothing+    }++-- | A user-defined comment about the disk upload.+cdComment :: Lens' ClientData (Maybe Text)+cdComment = lens _cdComment (\s a -> s { _cdComment = a })++-- | The time that the disk upload ends.+cdUploadEnd :: Lens' ClientData (Maybe UTCTime)+cdUploadEnd = lens _cdUploadEnd (\s a -> s { _cdUploadEnd = a }) . mapping _Time++-- | The size of the uploaded disk image, in GiB.+cdUploadSize :: Lens' ClientData (Maybe Double)+cdUploadSize = lens _cdUploadSize (\s a -> s { _cdUploadSize = a })++-- | The time that the disk upload starts.+cdUploadStart :: Lens' ClientData (Maybe UTCTime)+cdUploadStart = lens _cdUploadStart (\s a -> s { _cdUploadStart = a }) . mapping _Time++instance FromXML ClientData where+    parseXML x = ClientData+        <$> x .@? "Comment"+        <*> x .@? "UploadEnd"+        <*> x .@? "UploadSize"+        <*> x .@? "UploadStart"++instance ToQuery ClientData where+    toQuery ClientData{..} = mconcat+        [ "Comment"     =? _cdComment+        , "UploadEnd"   =? _cdUploadEnd+        , "UploadSize"  =? _cdUploadSize+        , "UploadStart" =? _cdUploadStart+        ]++data Placement = Placement+    { _pAvailabilityZone :: Maybe Text+    , _pGroupName        :: Maybe Text+    , _pTenancy          :: Maybe Tenancy+    } deriving (Eq, Read, Show)++-- | 'Placement' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'pAvailabilityZone' @::@ 'Maybe' 'Text'+--+-- * 'pGroupName' @::@ 'Maybe' 'Text'+--+-- * 'pTenancy' @::@ 'Maybe' 'Tenancy'+--+placement :: Placement+placement = Placement+    { _pAvailabilityZone = Nothing+    , _pGroupName        = Nothing+    , _pTenancy          = Nothing+    }++-- | The Availability Zone of the instance.+pAvailabilityZone :: Lens' Placement (Maybe Text)+pAvailabilityZone =+    lens _pAvailabilityZone (\s a -> s { _pAvailabilityZone = a })++-- | The name of the placement group the instance is in (for cluster compute+-- instances).+pGroupName :: Lens' Placement (Maybe Text)+pGroupName = lens _pGroupName (\s a -> s { _pGroupName = a })++-- | The tenancy of the instance (if the instance is running in a VPC). An+-- instance with a tenancy of 'dedicated' runs on single-tenant hardware.+pTenancy :: Lens' Placement (Maybe Tenancy)+pTenancy = lens _pTenancy (\s a -> s { _pTenancy = a })++instance FromXML Placement where+    parseXML x = Placement+        <$> x .@? "availabilityZone"+        <*> x .@? "groupName"+        <*> x .@? "tenancy"++instance ToQuery Placement where+    toQuery Placement{..} = mconcat+        [ "AvailabilityZone" =? _pAvailabilityZone+        , "GroupName"        =? _pGroupName+        , "Tenancy"          =? _pTenancy+        ]++data EventCode+    = InstanceReboot     -- ^ instance-reboot+    | InstanceRetirement -- ^ instance-retirement+    | InstanceStop       -- ^ instance-stop+    | SystemMaintenance  -- ^ system-maintenance+    | SystemReboot       -- ^ system-reboot+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable EventCode++instance FromText EventCode where+    parser = takeLowerText >>= \case+        "instance-reboot"     -> pure InstanceReboot+        "instance-retirement" -> pure InstanceRetirement+        "instance-stop"       -> pure InstanceStop+        "system-maintenance"  -> pure SystemMaintenance+        "system-reboot"       -> pure SystemReboot+        e                     -> fail $+            "Failure parsing EventCode from " ++ show e++instance ToText EventCode where+    toText = \case+        InstanceReboot     -> "instance-reboot"+        InstanceRetirement -> "instance-retirement"+        InstanceStop       -> "instance-stop"+        SystemMaintenance  -> "system-maintenance"+        SystemReboot       -> "system-reboot"++instance ToByteString EventCode+instance ToHeader     EventCode+instance ToQuery      EventCode++instance FromXML EventCode where+    parseXML = parseXMLText "EventCode"++data SpotInstanceType+    = OneTime    -- ^ one-time+    | Persistent -- ^ persistent+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable SpotInstanceType++instance FromText SpotInstanceType where+    parser = takeLowerText >>= \case+        "one-time"   -> pure OneTime+        "persistent" -> pure Persistent+        e            -> fail $+            "Failure parsing SpotInstanceType from " ++ show e++instance ToText SpotInstanceType where+    toText = \case+        OneTime    -> "one-time"+        Persistent -> "persistent"++instance ToByteString SpotInstanceType+instance ToHeader     SpotInstanceType+instance ToQuery      SpotInstanceType++instance FromXML SpotInstanceType where+    parseXML = parseXMLText "SpotInstanceType"++data VpcPeeringConnection = VpcPeeringConnection+    { _vpc1AccepterVpcInfo        :: Maybe VpcPeeringConnectionVpcInfo+    , _vpc1ExpirationTime         :: Maybe ISO8601+    , _vpc1RequesterVpcInfo       :: Maybe VpcPeeringConnectionVpcInfo+    , _vpc1Status                 :: Maybe VpcPeeringConnectionStateReason+    , _vpc1Tags                   :: List "item" Tag+    , _vpc1VpcPeeringConnectionId :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'VpcPeeringConnection' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'vpc1AccepterVpcInfo' @::@ 'Maybe' 'VpcPeeringConnectionVpcInfo'+--+-- * 'vpc1ExpirationTime' @::@ 'Maybe' 'UTCTime'+--+-- * 'vpc1RequesterVpcInfo' @::@ 'Maybe' 'VpcPeeringConnectionVpcInfo'+--+-- * 'vpc1Status' @::@ 'Maybe' 'VpcPeeringConnectionStateReason'+--+-- * 'vpc1Tags' @::@ ['Tag']+--+-- * 'vpc1VpcPeeringConnectionId' @::@ 'Maybe' 'Text'+--+vpcPeeringConnection :: VpcPeeringConnection+vpcPeeringConnection = VpcPeeringConnection+    { _vpc1AccepterVpcInfo        = Nothing+    , _vpc1ExpirationTime         = Nothing+    , _vpc1RequesterVpcInfo       = Nothing+    , _vpc1Status                 = Nothing+    , _vpc1Tags                   = mempty+    , _vpc1VpcPeeringConnectionId = Nothing+    }++-- | The information of the peer VPC.+vpc1AccepterVpcInfo :: Lens' VpcPeeringConnection (Maybe VpcPeeringConnectionVpcInfo)+vpc1AccepterVpcInfo =+    lens _vpc1AccepterVpcInfo (\s a -> s { _vpc1AccepterVpcInfo = a })++-- | The time that an unaccepted VPC peering connection will expire.+vpc1ExpirationTime :: Lens' VpcPeeringConnection (Maybe UTCTime)+vpc1ExpirationTime =+    lens _vpc1ExpirationTime (\s a -> s { _vpc1ExpirationTime = a })+        . mapping _Time++-- | The information of the requester VPC.+vpc1RequesterVpcInfo :: Lens' VpcPeeringConnection (Maybe VpcPeeringConnectionVpcInfo)+vpc1RequesterVpcInfo =+    lens _vpc1RequesterVpcInfo (\s a -> s { _vpc1RequesterVpcInfo = a })++-- | The status of the VPC peering connection.+vpc1Status :: Lens' VpcPeeringConnection (Maybe VpcPeeringConnectionStateReason)+vpc1Status = lens _vpc1Status (\s a -> s { _vpc1Status = a })++-- | Any tags assigned to the resource.+vpc1Tags :: Lens' VpcPeeringConnection [Tag]+vpc1Tags = lens _vpc1Tags (\s a -> s { _vpc1Tags = a }) . _List++-- | The ID of the VPC peering connection.+vpc1VpcPeeringConnectionId :: Lens' VpcPeeringConnection (Maybe Text)+vpc1VpcPeeringConnectionId =+    lens _vpc1VpcPeeringConnectionId+        (\s a -> s { _vpc1VpcPeeringConnectionId = a })++instance FromXML VpcPeeringConnection where+    parseXML x = VpcPeeringConnection+        <$> x .@? "accepterVpcInfo"+        <*> x .@? "expirationTime"+        <*> x .@? "requesterVpcInfo"+        <*> x .@? "status"+        <*> x .@? "tagSet" .!@ mempty+        <*> x .@? "vpcPeeringConnectionId"++instance ToQuery VpcPeeringConnection where+    toQuery VpcPeeringConnection{..} = mconcat+        [ "AccepterVpcInfo"        =? _vpc1AccepterVpcInfo+        , "ExpirationTime"         =? _vpc1ExpirationTime+        , "RequesterVpcInfo"       =? _vpc1RequesterVpcInfo+        , "Status"                 =? _vpc1Status+        , "TagSet"                 `toQueryList` _vpc1Tags+        , "VpcPeeringConnectionId" =? _vpc1VpcPeeringConnectionId+        ]++data S3Storage = S3Storage+    { _ssAWSAccessKeyId        :: Maybe Text+    , _ssBucket                :: Maybe Text+    , _ssPrefix                :: Maybe Text+    , _ssUploadPolicy          :: Maybe Base64+    , _ssUploadPolicySignature :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'S3Storage' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ssAWSAccessKeyId' @::@ 'Maybe' 'Text'+--+-- * 'ssBucket' @::@ 'Maybe' 'Text'+--+-- * 'ssPrefix' @::@ 'Maybe' 'Text'+--+-- * 'ssUploadPolicy' @::@ 'Maybe' 'Base64'+--+-- * 'ssUploadPolicySignature' @::@ 'Maybe' 'Text'+--+s3Storage :: S3Storage+s3Storage = S3Storage+    { _ssBucket                = Nothing+    , _ssPrefix                = Nothing+    , _ssAWSAccessKeyId        = Nothing+    , _ssUploadPolicy          = Nothing+    , _ssUploadPolicySignature = Nothing+    }++-- | The access key ID of the owner of the bucket. Before you specify a value for+-- your access key ID, review and follow the guidance in <http://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html Best Practices forManaging AWS Access Keys>.+ssAWSAccessKeyId :: Lens' S3Storage (Maybe Text)+ssAWSAccessKeyId = lens _ssAWSAccessKeyId (\s a -> s { _ssAWSAccessKeyId = a })++-- | The bucket in which to store the AMI. You can specify a bucket that you+-- already own or a new bucket that Amazon EC2 creates on your behalf. If you+-- specify a bucket that belongs to someone else, Amazon EC2 returns an error.+ssBucket :: Lens' S3Storage (Maybe Text)+ssBucket = lens _ssBucket (\s a -> s { _ssBucket = a })++-- | The beginning of the file name of the AMI.+ssPrefix :: Lens' S3Storage (Maybe Text)+ssPrefix = lens _ssPrefix (\s a -> s { _ssPrefix = a })++-- | A Base64-encoded Amazon S3 upload policy that gives Amazon EC2 permission to+-- upload items into Amazon S3 on your behalf.+ssUploadPolicy :: Lens' S3Storage (Maybe Base64)+ssUploadPolicy = lens _ssUploadPolicy (\s a -> s { _ssUploadPolicy = a })++-- | The signature of the Base64 encoded JSON document.+ssUploadPolicySignature :: Lens' S3Storage (Maybe Text)+ssUploadPolicySignature =+    lens _ssUploadPolicySignature (\s a -> s { _ssUploadPolicySignature = a })++instance FromXML S3Storage where+    parseXML x = S3Storage+        <$> x .@? "AWSAccessKeyId"+        <*> x .@? "bucket"+        <*> x .@? "prefix"+        <*> x .@? "uploadPolicy"+        <*> x .@? "uploadPolicySignature"++instance ToQuery S3Storage where+    toQuery S3Storage{..} = mconcat+        [ "AWSAccessKeyId"        =? _ssAWSAccessKeyId+        , "Bucket"                =? _ssBucket+        , "Prefix"                =? _ssPrefix+        , "UploadPolicy"          =? _ssUploadPolicy+        , "UploadPolicySignature" =? _ssUploadPolicySignature+        ]++data VgwTelemetry = VgwTelemetry+    { _vtAcceptedRouteCount :: Maybe Int+    , _vtLastStatusChange   :: Maybe ISO8601+    , _vtOutsideIpAddress   :: Maybe Text+    , _vtStatus             :: Maybe TelemetryStatus+    , _vtStatusMessage      :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'VgwTelemetry' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'vtAcceptedRouteCount' @::@ 'Maybe' 'Int'+--+-- * 'vtLastStatusChange' @::@ 'Maybe' 'UTCTime'+--+-- * 'vtOutsideIpAddress' @::@ 'Maybe' 'Text'+--+-- * 'vtStatus' @::@ 'Maybe' 'TelemetryStatus'+--+-- * 'vtStatusMessage' @::@ 'Maybe' 'Text'+--+vgwTelemetry :: VgwTelemetry+vgwTelemetry = VgwTelemetry+    { _vtOutsideIpAddress   = Nothing+    , _vtStatus             = Nothing+    , _vtLastStatusChange   = Nothing+    , _vtStatusMessage      = Nothing+    , _vtAcceptedRouteCount = Nothing+    }++-- | The number of accepted routes.+vtAcceptedRouteCount :: Lens' VgwTelemetry (Maybe Int)+vtAcceptedRouteCount =+    lens _vtAcceptedRouteCount (\s a -> s { _vtAcceptedRouteCount = a })++-- | The date and time of the last change in status.+vtLastStatusChange :: Lens' VgwTelemetry (Maybe UTCTime)+vtLastStatusChange =+    lens _vtLastStatusChange (\s a -> s { _vtLastStatusChange = a })+        . mapping _Time++-- | The Internet-routable IP address of the virtual private gateway's outside+-- interface.+vtOutsideIpAddress :: Lens' VgwTelemetry (Maybe Text)+vtOutsideIpAddress =+    lens _vtOutsideIpAddress (\s a -> s { _vtOutsideIpAddress = a })++-- | The status of the VPN tunnel.+vtStatus :: Lens' VgwTelemetry (Maybe TelemetryStatus)+vtStatus = lens _vtStatus (\s a -> s { _vtStatus = a })++-- | If an error occurs, a description of the error.+vtStatusMessage :: Lens' VgwTelemetry (Maybe Text)+vtStatusMessage = lens _vtStatusMessage (\s a -> s { _vtStatusMessage = a })++instance FromXML VgwTelemetry where+    parseXML x = VgwTelemetry+        <$> x .@? "acceptedRouteCount"+        <*> x .@? "lastStatusChange"+        <*> x .@? "outsideIpAddress"+        <*> x .@? "status"+        <*> x .@? "statusMessage"++instance ToQuery VgwTelemetry where+    toQuery VgwTelemetry{..} = mconcat+        [ "AcceptedRouteCount" =? _vtAcceptedRouteCount+        , "LastStatusChange"   =? _vtLastStatusChange+        , "OutsideIpAddress"   =? _vtOutsideIpAddress+        , "Status"             =? _vtStatus+        , "StatusMessage"      =? _vtStatusMessage+        ]++data VpnStaticRoute = VpnStaticRoute+    { _vsrDestinationCidrBlock :: Maybe Text+    , _vsrSource               :: Maybe VpnStaticRouteSource+    , _vsrState                :: Maybe VpnState+    } deriving (Eq, Read, Show)++-- | 'VpnStaticRoute' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'vsrDestinationCidrBlock' @::@ 'Maybe' 'Text'+--+-- * 'vsrSource' @::@ 'Maybe' 'VpnStaticRouteSource'+--+-- * 'vsrState' @::@ 'Maybe' 'VpnState'+--+vpnStaticRoute :: VpnStaticRoute+vpnStaticRoute = VpnStaticRoute+    { _vsrDestinationCidrBlock = Nothing+    , _vsrSource               = Nothing+    , _vsrState                = Nothing+    }++-- | The CIDR block associated with the local subnet of the customer data center.+vsrDestinationCidrBlock :: Lens' VpnStaticRoute (Maybe Text)+vsrDestinationCidrBlock =+    lens _vsrDestinationCidrBlock (\s a -> s { _vsrDestinationCidrBlock = a })++-- | Indicates how the routes were provided.+vsrSource :: Lens' VpnStaticRoute (Maybe VpnStaticRouteSource)+vsrSource = lens _vsrSource (\s a -> s { _vsrSource = a })++-- | The current state of the static route.+vsrState :: Lens' VpnStaticRoute (Maybe VpnState)+vsrState = lens _vsrState (\s a -> s { _vsrState = a })++instance FromXML VpnStaticRoute where+    parseXML x = VpnStaticRoute+        <$> x .@? "destinationCidrBlock"+        <*> x .@? "source"+        <*> x .@? "state"++instance ToQuery VpnStaticRoute where+    toQuery VpnStaticRoute{..} = mconcat+        [ "DestinationCidrBlock" =? _vsrDestinationCidrBlock+        , "Source"               =? _vsrSource+        , "State"                =? _vsrState+        ]++data InstanceStateName+    = ISNPending      -- ^ pending+    | ISNRunning      -- ^ running+    | ISNShuttingDown -- ^ shutting-down+    | ISNStopped      -- ^ stopped+    | ISNStopping     -- ^ stopping+    | ISNTerminated   -- ^ terminated+      deriving (Eq, Ord, Read, Show, Generic, Enum)++instance Hashable InstanceStateName++instance FromText InstanceStateName where+    parser = takeLowerText >>= \case+        "pending"       -> pure ISNPending+        "running"       -> pure ISNRunning+        "shutting-down" -> pure ISNShuttingDown+        "stopped"       -> pure ISNStopped+        "stopping"      -> pure ISNStopping+        "terminated"    -> pure ISNTerminated+        e               -> fail $+            "Failure parsing InstanceStateName from " ++ show e++instance ToText InstanceStateName where+    toText = \case+        ISNPending      -> "pending"+        ISNRunning      -> "running"+        ISNShuttingDown -> "shutting-down"+        ISNStopped      -> "stopped"+        ISNStopping     -> "stopping"+        ISNTerminated   -> "terminated"++instance ToByteString InstanceStateName+instance ToHeader     InstanceStateName+instance ToQuery      InstanceStateName++instance FromXML InstanceStateName where+    parseXML = parseXMLText "InstanceStateName"++data Instance = Instance+    { _i1AmiLaunchIndex        :: Int+    , _i1Architecture          :: ArchitectureValues+    , _i1BlockDeviceMappings   :: List "item" InstanceBlockDeviceMapping+    , _i1ClientToken           :: Maybe Text+    , _i1EbsOptimized          :: Bool+    , _i1Hypervisor            :: HypervisorType+    , _i1IamInstanceProfile    :: Maybe IamInstanceProfile+    , _i1ImageId               :: Text+    , _i1InstanceId            :: Text+    , _i1InstanceLifecycle     :: Maybe InstanceLifecycleType+    , _i1InstanceType          :: InstanceType+    , _i1KernelId              :: Maybe Text+    , _i1KeyName               :: Maybe Text+    , _i1LaunchTime            :: ISO8601+    , _i1Monitoring            :: Monitoring+    , _i1NetworkInterfaces     :: List "item" InstanceNetworkInterface+    , _i1Placement             :: Placement+    , _i1Platform              :: Maybe PlatformValues+    , _i1PrivateDnsName        :: Maybe Text+    , _i1PrivateIpAddress      :: Maybe Text+    , _i1ProductCodes          :: List "item" ProductCode+    , _i1PublicDnsName         :: Maybe Text+    , _i1PublicIpAddress       :: Maybe Text+    , _i1RamdiskId             :: Maybe Text+    , _i1RootDeviceName        :: Maybe Text+    , _i1RootDeviceType        :: DeviceType+    , _i1SecurityGroups        :: List "item" GroupIdentifier+    , _i1SourceDestCheck       :: Maybe Bool+    , _i1SpotInstanceRequestId :: Maybe Text+    , _i1SriovNetSupport       :: Maybe Text+    , _i1State                 :: InstanceState+    , _i1StateReason           :: Maybe StateReason+    , _i1StateTransitionReason :: Maybe Text+    , _i1SubnetId              :: Maybe Text+    , _i1Tags                  :: List "item" Tag+    , _i1VirtualizationType    :: VirtualizationType+    , _i1VpcId                 :: Maybe Text+    } deriving (Eq, Read, Show)++-- | 'Instance' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'i1AmiLaunchIndex' @::@ 'Int'+--+-- * 'i1Architecture' @::@ 'ArchitectureValues'+--+-- * 'i1BlockDeviceMappings' @::@ ['InstanceBlockDeviceMapping']+--+-- * 'i1ClientToken' @::@ 'Maybe' 'Text'+--+-- * 'i1EbsOptimized' @::@ 'Bool'+--+-- * 'i1Hypervisor' @::@ 'HypervisorType'+--+-- * 'i1IamInstanceProfile' @::@ 'Maybe' 'IamInstanceProfile'+--+-- * 'i1ImageId' @::@ 'Text'+--+-- * 'i1InstanceId' @::@ 'Text'+--+-- * 'i1InstanceLifecycle' @::@ 'Maybe' 'InstanceLifecycleType'+--+-- * 'i1InstanceType' @::@ 'InstanceType'+--+-- * 'i1KernelId' @::@ 'Maybe' 'Text'+--+-- * 'i1KeyName' @::@ 'Maybe' 'Text'+--+-- * 'i1LaunchTime' @::@ 'UTCTime'+--+-- * 'i1Monitoring' @::@ 'Monitoring'+--+-- * 'i1NetworkInterfaces' @::@ ['InstanceNetworkInterface']+--+-- * 'i1Placement' @::@ 'Placement'+--+-- * 'i1Platform' @::@ 'Maybe' 'PlatformValues'+--+-- * 'i1PrivateDnsName' @::@ 'Maybe' 'Text'+--+-- * 'i1PrivateIpAddress' @::@ 'Maybe' 'Text'+--+-- * 'i1ProductCodes' @::@ ['ProductCode']+--+-- * 'i1PublicDnsName' @::@ 'Maybe' 'Text'+--+-- * 'i1PublicIpAddress' @::@ 'Maybe' 'Text'+--+-- * 'i1RamdiskId' @::@ 'Maybe' 'Text'+--+-- * 'i1RootDeviceName' @::@ 'Maybe' 'Text'+--+-- * 'i1RootDeviceType' @::@ 'DeviceType'+--+-- * 'i1SecurityGroups' @::@ ['GroupIdentifier']+--+-- * 'i1SourceDestCheck' @::@ 'Maybe' 'Bool'+--+-- * 'i1SpotInstanceRequestId' @::@ 'Maybe' 'Text'+--+-- * 'i1SriovNetSupport' @::@ 'Maybe' 'Text'+--+-- * 'i1State' @::@ 'InstanceState'+--+-- * 'i1StateReason' @::@ 'Maybe' 'StateReason'+--+-- * 'i1StateTransitionReason' @::@ 'Maybe' 'Text'+--+-- * 'i1SubnetId' @::@ 'Maybe' 'Text'+--+-- * 'i1Tags' @::@ ['Tag']+--+-- * 'i1VirtualizationType' @::@ 'VirtualizationType'+--+-- * 'i1VpcId' @::@ 'Maybe' 'Text'+--+instance' :: Text -- ^ 'i1InstanceId'+          -> Text -- ^ 'i1ImageId'+          -> InstanceState -- ^ 'i1State'+          -> Int -- ^ 'i1AmiLaunchIndex'+          -> InstanceType -- ^ 'i1InstanceType'+          -> UTCTime -- ^ 'i1LaunchTime'+          -> Placement -- ^ 'i1Placement'+          -> Monitoring -- ^ 'i1Monitoring'+          -> ArchitectureValues -- ^ 'i1Architecture'+          -> DeviceType -- ^ 'i1RootDeviceType'+          -> VirtualizationType -- ^ 'i1VirtualizationType'+          -> HypervisorType -- ^ 'i1Hypervisor'+          -> Bool -- ^ 'i1EbsOptimized'+          -> Instance+instance' p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 = Instance+    { _i1InstanceId            = p1+    , _i1ImageId               = p2+    , _i1State                 = p3+    , _i1AmiLaunchIndex        = p4+    , _i1InstanceType          = p5+    , _i1LaunchTime            = withIso _Time (const id) p6+    , _i1Placement             = p7+    , _i1Monitoring            = p8+    , _i1Architecture          = p9+    , _i1RootDeviceType        = p10+    , _i1VirtualizationType    = p11+    , _i1Hypervisor            = p12+    , _i1EbsOptimized          = p13+    , _i1PrivateDnsName        = Nothing+    , _i1PublicDnsName         = Nothing+    , _i1StateTransitionReason = Nothing+    , _i1KeyName               = Nothing+    , _i1ProductCodes          = mempty+    , _i1KernelId              = Nothing+    , _i1RamdiskId             = Nothing+    , _i1Platform              = Nothing+    , _i1SubnetId              = Nothing+    , _i1VpcId                 = Nothing+    , _i1PrivateIpAddress      = Nothing+    , _i1PublicIpAddress       = Nothing+    , _i1StateReason           = Nothing+    , _i1RootDeviceName        = Nothing+    , _i1BlockDeviceMappings   = mempty+    , _i1InstanceLifecycle     = Nothing+    , _i1SpotInstanceRequestId = Nothing+    , _i1ClientToken           = Nothing+    , _i1Tags                  = mempty+    , _i1SecurityGroups        = mempty+    , _i1SourceDestCheck       = Nothing+    , _i1NetworkInterfaces     = mempty+    , _i1IamInstanceProfile    = Nothing+    , _i1SriovNetSupport       = Nothing+    }++-- | The AMI launch index, which can be used to find this instance in the launch+-- group.+i1AmiLaunchIndex :: Lens' Instance Int+i1AmiLaunchIndex = lens _i1AmiLaunchIndex (\s a -> s { _i1AmiLaunchIndex = a })++-- | The architecture of the image.+i1Architecture :: Lens' Instance ArchitectureValues+i1Architecture = lens _i1Architecture (\s a -> s { _i1Architecture = a })++-- | Any block device mapping entries for the instance.+i1BlockDeviceMappings :: Lens' Instance [InstanceBlockDeviceMapping]+i1BlockDeviceMappings =+    lens _i1BlockDeviceMappings (\s a -> s { _i1BlockDeviceMappings = a })+        . _List++-- | The idempotency token you provided when you launched the instance.+i1ClientToken :: Lens' Instance (Maybe Text)+i1ClientToken = lens _i1ClientToken (\s a -> s { _i1ClientToken = a })++-- | Indicates whether the instance is optimized for EBS I/O. This optimization+-- provides dedicated throughput to Amazon EBS and an optimized configuration+-- stack to provide optimal I/O performance. This optimization isn't available+-- with all instance types. Additional usage charges apply when using an EBS+-- Optimized instance.+i1EbsOptimized :: Lens' Instance Bool+i1EbsOptimized = lens _i1EbsOptimized (\s a -> s { _i1EbsOptimized = a })++-- | The hypervisor type of the instance.+i1Hypervisor :: Lens' Instance HypervisorType+i1Hypervisor = lens _i1Hypervisor (\s a -> s { _i1Hypervisor = a })++-- | The IAM instance profile associated with the instance.+i1IamInstanceProfile :: Lens' Instance (Maybe IamInstanceProfile)+i1IamInstanceProfile =+    lens _i1IamInstanceProfile (\s a -> s { _i1IamInstanceProfile = a })++-- | The ID of the AMI used to launch the instance.+i1ImageId :: Lens' Instance Text+i1ImageId = lens _i1ImageId (\s a -> s { _i1ImageId = a })++-- | The ID of the instance.+i1InstanceId :: Lens' Instance Text+i1InstanceId = lens _i1InstanceId (\s a -> s { _i1InstanceId = a })++-- | Indicates whether this is a Spot Instance.+i1InstanceLifecycle :: Lens' Instance (Maybe InstanceLifecycleType)+i1InstanceLifecycle =+    lens _i1InstanceLifecycle (\s a -> s { _i1InstanceLifecycle = a })++-- | The instance type.+i1InstanceType :: Lens' Instance InstanceType+i1InstanceType = lens _i1InstanceType (\s a -> s { _i1InstanceType = a })++-- | The kernel associated with this instance.+i1KernelId :: Lens' Instance (Maybe Text)+i1KernelId = lens _i1KernelId (\s a -> s { _i1KernelId = a })++-- | The name of the key pair, if this instance was launched with an associated+-- key pair.+i1KeyName :: Lens' Instance (Maybe Text)+i1KeyName = lens _i1KeyName (\s a -> s { _i1KeyName = a })++-- | The time the instance was launched.+i1LaunchTime :: Lens' Instance UTCTime+i1LaunchTime = lens _i1LaunchTime (\s a -> s { _i1LaunchTime = a }) . _Time++-- | The monitoring information for the instance.+i1Monitoring :: Lens' Instance Monitoring+i1Monitoring = lens _i1Monitoring (\s a -> s { _i1Monitoring = a })++-- | [EC2-VPC] One or more network interfaces for the instance.+i1NetworkInterfaces :: Lens' Instance [InstanceNetworkInterface]+i1NetworkInterfaces =+    lens _i1NetworkInterfaces (\s a -> s { _i1NetworkInterfaces = a })+        . _List++-- | The location where the instance launched.+i1Placement :: Lens' Instance Placement+i1Placement = lens _i1Placement (\s a -> s { _i1Placement = a })++-- | The value is 'Windows' for Windows instances; otherwise blank.+i1Platform :: Lens' Instance (Maybe PlatformValues)+i1Platform = lens _i1Platform (\s a -> s { _i1Platform = a })++-- | The private DNS name assigned to the instance. This DNS name can only be used+-- inside the Amazon EC2 network. This name is not available until the instance+-- enters the 'running' state.+i1PrivateDnsName :: Lens' Instance (Maybe Text)+i1PrivateDnsName = lens _i1PrivateDnsName (\s a -> s { _i1PrivateDnsName = a })++-- | The private IP address assigned to the instance.+i1PrivateIpAddress :: Lens' Instance (Maybe Text)+i1PrivateIpAddress =+    lens _i1PrivateIpAddress (\s a -> s { _i1PrivateIpAddress = a })++-- | The product codes attached to this instance.+i1ProductCodes :: Lens' Instance [ProductCode]+i1ProductCodes = lens _i1ProductCodes (\s a -> s { _i1ProductCodes = a }) . _List++-- | The public DNS name assigned to the instance. This name is not available+-- until the instance enters the 'running' state.+i1PublicDnsName :: Lens' Instance (Maybe Text)+i1PublicDnsName = lens _i1PublicDnsName (\s a -> s { _i1PublicDnsName = a })++-- | The public IP address assigned to the instance.+i1PublicIpAddress :: Lens' Instance (Maybe Text)+i1PublicIpAddress =+    lens _i1PublicIpAddress (\s a -> s { _i1PublicIpAddress = a })++-- | The RAM disk associated with this instance.+i1RamdiskId :: Lens' Instance (Maybe Text)+i1RamdiskId = lens _i1RamdiskId (\s a -> s { _i1RamdiskId = a })++-- | The root device name (for example, '/dev/sda1' or '/dev/xvda').+i1RootDeviceName :: Lens' Instance (Maybe Text)+i1RootDeviceName = lens _i1RootDeviceName (\s a -> s { _i1RootDeviceName = a })++-- | The root device type used by the AMI. The AMI can use an EBS volume or an+-- instance store volume.+i1RootDeviceType :: Lens' Instance DeviceType+i1RootDeviceType = lens _i1RootDeviceType (\s a -> s { _i1RootDeviceType = a })++-- | One or more security groups for the instance.+i1SecurityGroups :: Lens' Instance [GroupIdentifier]+i1SecurityGroups = lens _i1SecurityGroups (\s a -> s { _i1SecurityGroups = a }) . _List++-- | Specifies whether to enable an instance launched in a VPC to perform NAT.+-- This controls whether source/destination checking is enabled on the instance.+-- A value of 'true' means checking is enabled, and 'false' means checking is+-- disabled. The value must be 'false' for the instance to perform NAT. For more+-- information, see <http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html NAT Instances> in the /Amazon Virtual Private Cloud User Guide/.+i1SourceDestCheck :: Lens' Instance (Maybe Bool)+i1SourceDestCheck =+    lens _i1SourceDestCheck (\s a -> s { _i1SourceDestCheck = a })++-- | The ID of the Spot Instance request.+i1SpotInstanceRequestId :: Lens' Instance (Maybe Text)+i1SpotInstanceRequestId =+    lens _i1SpotInstanceRequestId (\s a -> s { _i1SpotInstanceRequestId = a })++-- | Specifies whether enhanced networking is enabled.+i1SriovNetSupport :: Lens' Instance (Maybe Text)+i1SriovNetSupport =+    lens _i1SriovNetSupport (\s a -> s { _i1SriovNetSupport = a })++-- | The current state of the instance.+i1State :: Lens' Instance InstanceState+i1State = lens _i1State (\s a -> s { _i1State = a })++-- | The reason for the most recent state transition.+i1StateReason :: Lens' Instance (Maybe StateReason)+i1StateReason = lens _i1StateReason (\s a -> s { _i1StateReason = a })++-- | The reason for the most recent state transition. This might be an empty+-- string.+i1StateTransitionReason :: Lens' Instance (Maybe Text)+i1StateTransitionReason =+    lens _i1StateTransitionReason (\s a -> s { _i1StateTransitionReason = a })++-- | The ID of the subnet in which the instance is running.+i1SubnetId :: Lens' Instance (Maybe Text)+i1SubnetId = lens _i1SubnetId (\s a -> s { _i1SubnetId = a })++-- | Any tags assigned to the instance.+i1Tags :: Lens' Instance [Tag]+i1Tags = lens _i1Tags (\s a -> s { _i1Tags = a }) . _List++-- | The virtualization type of the instance.+i1VirtualizationType :: Lens' Instance VirtualizationType+i1VirtualizationType =+    lens _i1VirtualizationType (\s a -> s { _i1VirtualizationType = a })++-- | The ID of the VPC in which the instance is running.+i1VpcId :: Lens' Instance (Maybe Text)+i1VpcId = lens _i1VpcId (\s a -> s { _i1VpcId = a })++instance FromXML Instance where+    parseXML x = Instance+        <$> x .@  "amiLaunchIndex"+        <*> x .@  "architecture"+        <*> x .@? "blockDeviceMapping" .!@ mempty+        <*> x .@? "clientToken"+        <*> x .@  "ebsOptimized"+        <*> x .@  "hypervisor"+        <*> x .@? "iamInstanceProfile"+        <*> x .@  "imageId"+        <*> x .@  "instanceId"+        <*> x .@? "instanceLifecycle"+        <*> x .@  "instanceType"+        <*> x .@? "kernelId"+        <*> x .@? "keyName"+        <*> x .@  "launchTime"+        <*> x .@  "monitoring"+        <*> x .@? "networkInterfaceSet" .!@ mempty+        <*> x .@  "placement"+        <*> x .@? "platform"+        <*> x .@? "privateDnsName"+        <*> x .@? "privateIpAddress"+        <*> x .@? "productCodes" .!@ mempty+        <*> x .@? "dnsName"+        <*> x .@? "ipAddress"+        <*> x .@? "ramdiskId"+        <*> x .@? "rootDeviceName"+        <*> x .@  "rootDeviceType"+        <*> x .@? "groupSet" .!@ mempty+        <*> x .@? "sourceDestCheck"+        <*> x .@? "spotInstanceRequestId"+        <*> x .@? "sriovNetSupport"+        <*> x .@  "instanceState"+        <*> x .@? "stateReason"+        <*> x .@? "reason"+        <*> x .@? "subnetId"+        <*> x .@? "tagSet" .!@ mempty+        <*> x .@  "virtualizationType"+        <*> x .@? "vpcId"++instance ToQuery Instance where+    toQuery Instance{..} = mconcat+        [ "AmiLaunchIndex"        =? _i1AmiLaunchIndex+        , "Architecture"          =? _i1Architecture+        , "BlockDeviceMapping"    `toQueryList` _i1BlockDeviceMappings+        , "ClientToken"           =? _i1ClientToken+        , "EbsOptimized"          =? _i1EbsOptimized+        , "Hypervisor"            =? _i1Hypervisor+        , "IamInstanceProfile"    =? _i1IamInstanceProfile+        , "ImageId"               =? _i1ImageId+        , "InstanceId"            =? _i1InstanceId+        , "InstanceLifecycle"     =? _i1InstanceLifecycle+        , "InstanceType"          =? _i1InstanceType+        , "KernelId"              =? _i1KernelId+        , "KeyName"               =? _i1KeyName+        , "LaunchTime"            =? _i1LaunchTime+        , "Monitoring"            =? _i1Monitoring+        , "NetworkInterfaceSet"   `toQueryList` _i1NetworkInterfaces+        , "Placement"             =? _i1Placement+        , "Platform"              =? _i1Platform+        , "PrivateDnsName"        =? _i1PrivateDnsName+        , "PrivateIpAddress"      =? _i1PrivateIpAddress+        , "ProductCodes"          `toQueryList` _i1ProductCodes+        , "DnsName"               =? _i1PublicDnsName+        , "IpAddress"             =? _i1PublicIpAddress+        , "RamdiskId"             =? _i1RamdiskId+        , "RootDeviceName"        =? _i1RootDeviceName+        , "RootDeviceType"        =? _i1RootDeviceType+        , "GroupSet"              `toQueryList` _i1SecurityGroups+        , "SourceDestCheck"       =? _i1SourceDestCheck+        , "SpotInstanceRequestId" =? _i1SpotInstanceRequestId+        , "SriovNetSupport"       =? _i1SriovNetSupport+        , "InstanceState"         =? _i1State+        , "StateReason"           =? _i1StateReason+        , "Reason"                =? _i1StateTransitionReason+        , "SubnetId"              =? _i1SubnetId+        , "TagSet"                `toQueryList` _i1Tags+        , "VirtualizationType"    =? _i1VirtualizationType+        , "VpcId"                 =? _i1VpcId+        ]++data ExportTask = ExportTask+    { _etDescription           :: Text+    , _etExportTaskId          :: Text+    , _etExportToS3Task        :: ExportToS3Task+    , _etInstanceExportDetails :: InstanceExportDetails+    , _etState                 :: ExportTaskState+    , _etStatusMessage         :: Text+    } deriving (Eq, Read, Show)++-- | 'ExportTask' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'etDescription' @::@ 'Text'+--+-- * 'etExportTaskId' @::@ 'Text'+--+-- * 'etExportToS3Task' @::@ 'ExportToS3Task'+--+-- * 'etInstanceExportDetails' @::@ 'InstanceExportDetails'+--+-- * 'etState' @::@ 'ExportTaskState'+--+-- * 'etStatusMessage' @::@ 'Text'+--+exportTask :: Text -- ^ 'etExportTaskId'+           -> Text -- ^ 'etDescription'+           -> ExportTaskState -- ^ 'etState'+           -> Text -- ^ 'etStatusMessage'+           -> InstanceExportDetails -- ^ 'etInstanceExportDetails'+           -> ExportToS3Task -- ^ 'etExportToS3Task'+           -> ExportTask+exportTask p1 p2 p3 p4 p5 p6 = ExportTask+    { _etExportTaskId          = p1+    , _etDescription           = p2+    , _etState                 = p3+    , _etStatusMessage         = p4+    , _etInstanceExportDetails = p5+    , _etExportToS3Task        = p6+    }++-- | A description of the resource being exported.+etDescription :: Lens' ExportTask Text+etDescription = lens _etDescription (\s a -> s { _etDescription = a })++-- | The ID of the export task.+etExportTaskId :: Lens' ExportTask Text+etExportTaskId = lens _etExportTaskId (\s a -> s { _etExportTaskId = a })++-- | Information about the export task.+etExportToS3Task :: Lens' ExportTask ExportToS3Task+etExportToS3Task = lens _etExportToS3Task (\s a -> s { _etExportToS3Task = a })++-- | Information about the instance to export.+etInstanceExportDetails :: Lens' ExportTask InstanceExportDetails+etInstanceExportDetails =+    lens _etInstanceExportDetails (\s a -> s { _etInstanceExportDetails = a })++-- | The state of the export task. etState :: Lens' ExportTask ExportTaskState etState = lens _etState (\s a -> s { _etState = a }) 
gen/Network/AWS/EC2/UnmonitorInstances.hs view
@@ -23,7 +23,7 @@ -- Derived from AWS service descriptions, licensed under Apache 2.0.  -- | Disables monitoring for a running instance. For more information about--- monitoring instances, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-cloudwatch.html Monitoring Your Instances and Volumes> in the /AmazonElastic Compute Cloud User Guide for Linux/.+-- monitoring instances, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-cloudwatch.html Monitoring Your Instances and Volumes> in the /AmazonElastic Compute Cloud User Guide/. -- -- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-UnmonitorInstances.html> module Network.AWS.EC2.UnmonitorInstances@@ -68,6 +68,9 @@     , _uiInstanceIds = mempty     } +-- | 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'. uiDryRun :: Lens' UnmonitorInstances (Maybe Bool) uiDryRun = lens _uiDryRun (\s a -> s { _uiDryRun = a }) 
gen/Network/AWS/EC2/Waiters.hs view
@@ -121,6 +121,17 @@         ]     } +instanceExists :: Wait DescribeInstances+instanceExists = Wait+    { _waitName      = "InstanceExists"+    , _waitAttempts  = 40+    , _waitDelay     = 5+    , _waitAcceptors =+        [ matchStatus 200 AcceptSuccess+        , matchError "InvalidInstanceIDNotFound" AcceptRetry+        ]+    }+ instanceRunning :: Wait DescribeInstances instanceRunning = Wait     { _waitName      = "InstanceRunning"@@ -196,7 +207,7 @@     , _waitAttempts  = 40     , _waitDelay     = 15     , _waitAcceptors =-        [ matchAll Completed AcceptSuccess+        [ matchAll SSCompleted AcceptSuccess             (folding (concatOf dsrSnapshots) . sState)         ]     }@@ -226,7 +237,7 @@     , _waitAttempts  = 40     , _waitDelay     = 15     , _waitAcceptors =-        [ matchAll SSAvailable AcceptSuccess+        [ matchAll SubnetStateAvailable AcceptSuccess             (folding (concatOf dsrSubnets) . s1State)         ]     }@@ -263,6 +274,7 @@     , _waitAcceptors =         [ matchAll VSDeleted AcceptSuccess             (folding (concatOf dvrVolumes) . vState)+        , matchError "InvalidVolumeNotFound" AcceptSuccess         ]     } 
src/Network/AWS/EC2/Internal.hs view
@@ -15,12 +15,12 @@  module Network.AWS.EC2.Internal where -import GHC.Generics-import Network.AWS.Error-import Network.AWS.Prelude+import           GHC.Generics+import           Network.AWS.Error+import           Network.AWS.Prelude  data Message = Message-    { _msgCode    :: ErrorCode+    { _msgCode    :: Maybe ErrorCode     , _msgMessage :: Text     } deriving (Eq, Ord, Show, Generic) @@ -32,7 +32,7 @@         <$> x .@ "Code"         <*> x .@ "Message" -msgCode :: Lens' Message ErrorCode+msgCode :: Lens' Message (Maybe ErrorCode) msgCode = lens _msgCode (\s x -> s { _msgCode = x })  msgMessage :: Lens' Message Text