aws-sdk 0.6.0.0 → 0.7.0.0
raw patch · 29 files changed
+1170/−651 lines, 29 filesdep +HUnitdep +aws-sdkdep ~conduitPVP ok
version bump matches the API change (PVP)
Dependencies added: HUnit, aws-sdk
Dependency ranges changed: conduit
API changes (from Hackage documentation)
- AWS.EC2: AAEC2Instance :: Text -> Text -> AssociateAddressRequest
- AWS.EC2: AAVPCInstance :: Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Bool -> AssociateAddressRequest
- AWS.EC2: DAEC2 :: Text -> DisassociateAddressRequest
- AWS.EC2: DAVPC :: Text -> DisassociateAddressRequest
- AWS.EC2: aaec2InstanceId :: AssociateAddressRequest -> Text
- AWS.EC2: aaec2PublicIp :: AssociateAddressRequest -> Text
- AWS.EC2: aavpcAllocationId :: AssociateAddressRequest -> Text
- AWS.EC2: aavpcAllowReassociation :: AssociateAddressRequest -> Maybe Bool
- AWS.EC2: aavpcInstanceId :: AssociateAddressRequest -> Maybe Text
- AWS.EC2: aavpcNetworkInterfaceId :: AssociateAddressRequest -> Maybe Text
- AWS.EC2: aavpcPrivateIpAddress :: AssociateAddressRequest -> Maybe Text
- AWS.EC2.Types: AAEC2Instance :: Text -> Text -> AssociateAddressRequest
- AWS.EC2.Types: AAVPCInstance :: Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Bool -> AssociateAddressRequest
- AWS.EC2.Types: AllocateAddressResponse :: Text -> AddressDomain -> Maybe Text -> AllocateAddressResponse
- AWS.EC2.Types: AsirAttached :: AttachmentSetItemResponseStatus
- AWS.EC2.Types: AsirAttaching :: AttachmentSetItemResponseStatus
- AWS.EC2.Types: AsirDetached :: AttachmentSetItemResponseStatus
- AWS.EC2.Types: AsirDetaching :: AttachmentSetItemResponseStatus
- AWS.EC2.Types: BlockDeviceMappingParamEBS :: Text -> Maybe Bool -> EbsSource -> Maybe Bool -> Maybe VolumeType -> BlockDeviceMappingParam
- AWS.EC2.Types: DAEC2 :: Text -> DisassociateAddressRequest
- AWS.EC2.Types: DAVPC :: Text -> DisassociateAddressRequest
- AWS.EC2.Types: Devpay :: ProductCodeType
- AWS.EC2.Types: EBS :: RootDeviceType
- AWS.EC2.Types: EbsSnapshotId :: Text -> EbsSource
- AWS.EC2.Types: EbsVolumeSize :: Int -> EbsSource
- AWS.EC2.Types: GroupId :: Text -> SecurityGroupRequest
- AWS.EC2.Types: GroupName :: Text -> SecurityGroupRequest
- AWS.EC2.Types: HVM :: VirtualizationType
- AWS.EC2.Types: IABlockDeviceMapping :: [InstanceBlockDeviceMapping] -> InstanceAttribute
- AWS.EC2.Types: IADisableApiTermination :: Bool -> InstanceAttribute
- AWS.EC2.Types: IAEbsOptimized :: Bool -> InstanceAttribute
- AWS.EC2.Types: IAGroupSet :: [Text] -> InstanceAttribute
- AWS.EC2.Types: IAInstanceType :: Text -> InstanceAttribute
- AWS.EC2.Types: IAKernelId :: (Maybe Text) -> InstanceAttribute
- AWS.EC2.Types: IAProductCodes :: [ProductCode] -> InstanceAttribute
- AWS.EC2.Types: IARBlockDeviceMapping :: InstanceAttributeRequest
- AWS.EC2.Types: IARDisableApiTermination :: InstanceAttributeRequest
- AWS.EC2.Types: IAREbsOptimized :: InstanceAttributeRequest
- AWS.EC2.Types: IARGroupSet :: InstanceAttributeRequest
- AWS.EC2.Types: IARInstanceType :: InstanceAttributeRequest
- AWS.EC2.Types: IARKernelId :: InstanceAttributeRequest
- AWS.EC2.Types: IARProductCodes :: InstanceAttributeRequest
- AWS.EC2.Types: IARRamdiskId :: InstanceAttributeRequest
- AWS.EC2.Types: IARRootDeviceName :: InstanceAttributeRequest
- AWS.EC2.Types: IARShutdownBehavior :: InstanceAttributeRequest
- AWS.EC2.Types: IARSourceDestCheck :: InstanceAttributeRequest
- AWS.EC2.Types: IARUserData :: InstanceAttributeRequest
- AWS.EC2.Types: IARamdiskId :: (Maybe Text) -> InstanceAttribute
- AWS.EC2.Types: IARootDeviceName :: (Maybe Text) -> InstanceAttribute
- AWS.EC2.Types: IAShutdownBehavior :: ShutdownBehavior -> InstanceAttribute
- AWS.EC2.Types: IASourceDestCheck :: (Maybe Bool) -> InstanceAttribute
- AWS.EC2.Types: IAUserData :: (Maybe Text) -> InstanceAttribute
- AWS.EC2.Types: IO1 :: Int -> VolumeType
- AWS.EC2.Types: ImageAvailable :: ImageState
- AWS.EC2.Types: ImageFailed :: ImageState
- AWS.EC2.Types: ImagePending :: ImageState
- AWS.EC2.Types: InstanceEbsBlockDevice :: Text -> AttachmentSetItemResponseStatus -> UTCTime -> Bool -> InstanceEbsBlockDevice
- AWS.EC2.Types: InstanceReboot :: InstanceStatusEventCode
- AWS.EC2.Types: InstanceRetirement :: InstanceStatusEventCode
- AWS.EC2.Types: InstanceStatusImpaired :: InstanceStatusTypeStatus
- AWS.EC2.Types: InstanceStatusInsufficientData :: InstanceStatusTypeStatus
- AWS.EC2.Types: InstanceStatusNotApplicable :: InstanceStatusTypeStatus
- AWS.EC2.Types: InstanceStatusOK :: InstanceStatusTypeStatus
- AWS.EC2.Types: InstanceStop :: InstanceStatusEventCode
- AWS.EC2.Types: InstanceStore :: RootDeviceType
- AWS.EC2.Types: Kernel :: ImageType
- AWS.EC2.Types: MIAPBlockDeviceMapping :: [BlockDeviceMappingParam] -> ModifyInstanceAttributeRequest
- AWS.EC2.Types: MIAPDisableApiTermination :: Bool -> ModifyInstanceAttributeRequest
- AWS.EC2.Types: MIAPEbsOptimized :: Bool -> ModifyInstanceAttributeRequest
- AWS.EC2.Types: MIAPGroupSet :: [Text] -> ModifyInstanceAttributeRequest
- AWS.EC2.Types: MIAPInstanceType :: Text -> ModifyInstanceAttributeRequest
- AWS.EC2.Types: MIAPKernelId :: Text -> ModifyInstanceAttributeRequest
- AWS.EC2.Types: MIAPRamdiskId :: Text -> ModifyInstanceAttributeRequest
- AWS.EC2.Types: MIAPRootDeviceName :: Text -> ModifyInstanceAttributeRequest
- AWS.EC2.Types: MIAPShutdownBehavior :: ShutdownBehavior -> ModifyInstanceAttributeRequest
- AWS.EC2.Types: MIAPSourceDestCheck :: Bool -> ModifyInstanceAttributeRequest
- AWS.EC2.Types: MIAPUserData :: Text -> ModifyInstanceAttributeRequest
- AWS.EC2.Types: Machine :: ImageType
- AWS.EC2.Types: Marketplace :: ProductCodeType
- AWS.EC2.Types: OVM :: Hypervisor
- AWS.EC2.Types: Other :: Platform
- AWS.EC2.Types: Paravirtual :: VirtualizationType
- AWS.EC2.Types: Pending :: InstanceState
- AWS.EC2.Types: RIAPKernel :: ResetInstanceAttributeRequest
- AWS.EC2.Types: RIAPRamdisk :: ResetInstanceAttributeRequest
- AWS.EC2.Types: RIAPSourceDestCheck :: ResetInstanceAttributeRequest
- AWS.EC2.Types: RamDisk :: ImageType
- AWS.EC2.Types: Running :: InstanceState
- AWS.EC2.Types: SBStop :: ShutdownBehavior
- AWS.EC2.Types: SBTerminate :: ShutdownBehavior
- AWS.EC2.Types: SSCompleted :: SnapshotStatus
- AWS.EC2.Types: SSError :: SnapshotStatus
- AWS.EC2.Types: SSPending :: SnapshotStatus
- AWS.EC2.Types: ShuttingDown :: InstanceState
- AWS.EC2.Types: Standard :: VolumeType
- AWS.EC2.Types: Stopped :: InstanceState
- AWS.EC2.Types: Stopping :: InstanceState
- AWS.EC2.Types: SubnetAvailable :: SubnetState
- AWS.EC2.Types: SubnetPending :: SubnetState
- AWS.EC2.Types: SystemReboot :: InstanceStatusEventCode
- AWS.EC2.Types: Terminated :: InstanceState
- AWS.EC2.Types: UnknownState :: Int -> InstanceState
- AWS.EC2.Types: VAAutoEnableIO :: Bool -> VolumeAttribute
- AWS.EC2.Types: VAProductCodes :: [ProductCode] -> VolumeAttribute
- AWS.EC2.Types: VARAutoEnableIO :: VolumeAttributeRequest
- AWS.EC2.Types: VARProductCodes :: VolumeAttributeRequest
- AWS.EC2.Types: VCSAvailable :: VpnConnectionState
- AWS.EC2.Types: VCSDeleted :: VpnConnectionState
- AWS.EC2.Types: VCSDeleting :: VpnConnectionState
- AWS.EC2.Types: VCSPending :: VpnConnectionState
- AWS.EC2.Types: VSIImpaired :: VolumeStatusInfoStatus
- AWS.EC2.Types: VSIInsufficientData :: VolumeStatusInfoStatus
- AWS.EC2.Types: VSIOK :: VolumeStatusInfoStatus
- AWS.EC2.Types: VSRSAvailable :: VpnStaticRouteState
- AWS.EC2.Types: VSRSDeleted :: VpnStaticRouteState
- AWS.EC2.Types: VSRSDeleting :: VpnStaticRouteState
- AWS.EC2.Types: VSRSPending :: VpnStaticRouteState
- AWS.EC2.Types: VSRStatic :: VpnStaticRouteSource
- AWS.EC2.Types: VTTSDown :: VpnTunnelTelemetryStatus
- AWS.EC2.Types: VTTSUp :: VpnTunnelTelemetryStatus
- AWS.EC2.Types: VolAvailable :: VolumeState
- AWS.EC2.Types: VolCreating :: VolumeState
- AWS.EC2.Types: VolDeleted :: VolumeState
- AWS.EC2.Types: VolDeleting :: VolumeState
- AWS.EC2.Types: VolError :: VolumeState
- AWS.EC2.Types: VolInUse :: VolumeState
- AWS.EC2.Types: Windows :: Platform
- AWS.EC2.Types: Xen :: Hypervisor
- AWS.EC2.Types: aaec2InstanceId :: AssociateAddressRequest -> Text
- AWS.EC2.Types: aaec2PublicIp :: AssociateAddressRequest -> Text
- AWS.EC2.Types: aavpcAllocationId :: AssociateAddressRequest -> Text
- AWS.EC2.Types: aavpcAllowReassociation :: AssociateAddressRequest -> Maybe Bool
- AWS.EC2.Types: aavpcInstanceId :: AssociateAddressRequest -> Maybe Text
- AWS.EC2.Types: aavpcNetworkInterfaceId :: AssociateAddressRequest -> Maybe Text
- AWS.EC2.Types: aavpcPrivateIpAddress :: AssociateAddressRequest -> Maybe Text
- AWS.EC2.Types: addrAllocationId :: Address -> Maybe Text
- AWS.EC2.Types: addrAssociationId :: Address -> Maybe Text
- AWS.EC2.Types: addrDomain :: Address -> AddressDomain
- AWS.EC2.Types: addrInstanceId :: Address -> Maybe Text
- AWS.EC2.Types: addrNetworkInterfaceId :: Address -> Maybe Text
- AWS.EC2.Types: addrNetworkInterfaceOwnerId :: Address -> Maybe Text
- AWS.EC2.Types: addrPrivateIpAddress :: Address -> Maybe Text
- AWS.EC2.Types: addrPublicIp :: Address -> Text
- AWS.EC2.Types: alaAllocationId :: AllocateAddressResponse -> Maybe Text
- AWS.EC2.Types: alaDomain :: AllocateAddressResponse -> AddressDomain
- AWS.EC2.Types: alaPublicIp :: AllocateAddressResponse -> Text
- AWS.EC2.Types: amiLaunchIndex :: Instance -> Text
- AWS.EC2.Types: asirAttachTime :: AttachmentSetItemResponse -> UTCTime
- AWS.EC2.Types: asirDeleteOnTermination :: AttachmentSetItemResponse -> Maybe Bool
- AWS.EC2.Types: asirDevice :: AttachmentSetItemResponse -> Text
- AWS.EC2.Types: asirInstanceId :: AttachmentSetItemResponse -> Text
- AWS.EC2.Types: asirStatus :: AttachmentSetItemResponse -> AttachmentSetItemResponseStatus
- AWS.EC2.Types: asirVolumeId :: AttachmentSetItemResponse -> Text
- AWS.EC2.Types: bdmpEbsDeleteOnTermination :: BlockDeviceMappingParam -> Maybe Bool
- AWS.EC2.Types: bdmpEbsDeviceName :: BlockDeviceMappingParam -> Text
- AWS.EC2.Types: bdmpEbsNoDevice :: BlockDeviceMappingParam -> Maybe Bool
- AWS.EC2.Types: bdmpEbsSource :: BlockDeviceMappingParam -> EbsSource
- AWS.EC2.Types: bdmpEbsVolumeType :: BlockDeviceMappingParam -> Maybe VolumeType
- AWS.EC2.Types: bdmpIsDeviceName :: BlockDeviceMappingParam -> Text
- AWS.EC2.Types: bdmpIsNoDevice :: BlockDeviceMappingParam -> Maybe Bool
- AWS.EC2.Types: bdmpIsVirtualName :: BlockDeviceMappingParam -> Maybe Text
- AWS.EC2.Types: blockDeviceMappings :: Image -> [BlockDeviceMapping]
- AWS.EC2.Types: cfsAvailabilityZone :: CreateVolumeRequest -> Text
- AWS.EC2.Types: cfsSize :: CreateVolumeRequest -> Maybe Int
- AWS.EC2.Types: cfsSnapshotId :: CreateVolumeRequest -> Text
- AWS.EC2.Types: cfsVolumeType :: CreateVolumeRequest -> Maybe VolumeType
- AWS.EC2.Types: clientToken :: Instance -> Text
- AWS.EC2.Types: cnvAvailabilityZone :: CreateVolumeRequest -> Text
- AWS.EC2.Types: cnvSize :: CreateVolumeRequest -> Int
- AWS.EC2.Types: cnvVolumeType :: CreateVolumeRequest -> Maybe VolumeType
- AWS.EC2.Types: coInstanceId :: ConsoleOutput -> Text
- AWS.EC2.Types: coOutput :: ConsoleOutput -> Text
- AWS.EC2.Types: coTimestamp :: ConsoleOutput -> UTCTime
- AWS.EC2.Types: csrAvailabilityZone :: CreateSubnetRequest -> Maybe Text
- AWS.EC2.Types: csrCidrBlock :: CreateSubnetRequest -> Text
- AWS.EC2.Types: csrVpcId :: CreateSubnetRequest -> Text
- AWS.EC2.Types: customerGateway :: CustomerGateway -> [ResourceTag]
- AWS.EC2.Types: data AllocateAddressResponse
- AWS.EC2.Types: data InstanceEbsBlockDevice
- AWS.EC2.Types: deviceName :: BlockDeviceMapping -> Text
- AWS.EC2.Types: dnsName :: Instance -> Text
- AWS.EC2.Types: ebs :: BlockDeviceMapping -> Maybe EbsBlockDevice
- AWS.EC2.Types: ebsOptimized :: Instance -> Bool
- AWS.EC2.Types: groupSet :: Reservation -> [Group]
- AWS.EC2.Types: iAssociation :: InstancePrivateIpAddress -> Maybe NetworkInterfaceAssociation
- AWS.EC2.Types: iPrimary :: InstancePrivateIpAddress -> Bool
- AWS.EC2.Types: iPrivateIpAddress :: InstancePrivateIpAddress -> Text
- AWS.EC2.Types: iipArn :: IamInstanceProfile -> Text
- AWS.EC2.Types: iipId :: IamInstanceProfile -> Text
- AWS.EC2.Types: iniAssociation :: InstanceNetworkInterface -> Maybe NetworkInterfaceAssociation
- AWS.EC2.Types: iniAttachment :: InstanceNetworkInterface -> NetworkInterfaceAttachment
- AWS.EC2.Types: iniDescription :: InstanceNetworkInterface -> Text
- AWS.EC2.Types: iniGroupSet :: InstanceNetworkInterface -> [Group]
- AWS.EC2.Types: iniOwnerId :: InstanceNetworkInterface -> Text
- AWS.EC2.Types: iniPrivateDnsName :: InstanceNetworkInterface -> Maybe Text
- AWS.EC2.Types: iniPrivateIpAddress :: InstanceNetworkInterface -> Text
- AWS.EC2.Types: iniPrivateIpAddressSet :: InstanceNetworkInterface -> [InstancePrivateIpAddress]
- AWS.EC2.Types: iniSourceDestCheck :: InstanceNetworkInterface -> Bool
- AWS.EC2.Types: iniStatus :: InstanceNetworkInterface -> Text
- AWS.EC2.Types: iniSubnetId :: InstanceNetworkInterface -> Text
- AWS.EC2.Types: iniVpcId :: InstanceNetworkInterface -> Text
- AWS.EC2.Types: instance Default VolumeType
- AWS.EC2.Types: instance Eq AllocateAddressResponse
- AWS.EC2.Types: instance Eq InstanceEbsBlockDevice
- AWS.EC2.Types: instance Show AllocateAddressResponse
- AWS.EC2.Types: instance Show InstanceEbsBlockDevice
- AWS.EC2.Types: instanceDeviceName :: InstanceBlockDeviceMapping -> Text
- AWS.EC2.Types: instanceEbs :: InstanceBlockDeviceMapping -> InstanceEbsBlockDevice
- AWS.EC2.Types: instanceEbsAttachTime :: InstanceEbsBlockDevice -> UTCTime
- AWS.EC2.Types: instanceEbsDeleteOnTermination :: InstanceEbsBlockDevice -> Bool
- AWS.EC2.Types: instanceEbsState :: InstanceEbsBlockDevice -> AttachmentSetItemResponseStatus
- AWS.EC2.Types: instanceEbsVolumeId :: InstanceEbsBlockDevice -> Text
- AWS.EC2.Types: instanceSet :: Reservation -> [Instance]
- AWS.EC2.Types: ipAddress :: Instance -> Maybe Text
- AWS.EC2.Types: ippFromPort :: IpPermission -> Maybe Int
- AWS.EC2.Types: ippGroups :: IpPermission -> [UserIdGroupPair]
- AWS.EC2.Types: ippIpProtocol :: IpPermission -> Text
- AWS.EC2.Types: ippIpRanges :: IpPermission -> [IpRange]
- AWS.EC2.Types: ippToPort :: IpPermission -> Maybe Int
- AWS.EC2.Types: iprCidrIp :: IpRange -> Text
- AWS.EC2.Types: isAvailabilityZone :: InstanceStatus -> Text
- AWS.EC2.Types: isEventsSet :: InstanceStatus -> [InstanceStatusEvent]
- AWS.EC2.Types: isInstanceId :: InstanceStatus -> Text
- AWS.EC2.Types: isInstanceState :: InstanceStatus -> InstanceState
- AWS.EC2.Types: isInstanceStatus :: InstanceStatus -> InstanceStatusType
- AWS.EC2.Types: isPublic :: Image -> Bool
- AWS.EC2.Types: isSystemStatus :: InstanceStatus -> InstanceStatusType
- AWS.EC2.Types: iscCurrentState :: InstanceStateChange -> InstanceState
- AWS.EC2.Types: iscInstanceId :: InstanceStateChange -> Text
- AWS.EC2.Types: iscPreviousState :: InstanceStateChange -> InstanceState
- AWS.EC2.Types: isdDetails :: InstanceStatusType -> [InstanceStatusDetail]
- AWS.EC2.Types: isdStatus :: InstanceStatusType -> InstanceStatusTypeStatus
- AWS.EC2.Types: isddImpairedSince :: InstanceStatusDetail -> Maybe UTCTime
- AWS.EC2.Types: isddName :: InstanceStatusDetail -> InstanceStatusDetailName
- AWS.EC2.Types: isddStatus :: InstanceStatusDetail -> InstanceStatusDetailStatus
- AWS.EC2.Types: iseCode :: InstanceStatusEvent -> InstanceStatusEventCode
- AWS.EC2.Types: iseDescription :: InstanceStatusEvent -> Text
- AWS.EC2.Types: iseNotAfter :: InstanceStatusEvent -> Maybe UTCTime
- AWS.EC2.Types: iseNotBefore :: InstanceStatusEvent -> Maybe UTCTime
- AWS.EC2.Types: kernelId :: Image -> Maybe Text
- AWS.EC2.Types: keyFingerprint :: KeyPair -> Text
- AWS.EC2.Types: keyName :: KeyPair -> Text
- AWS.EC2.Types: launchTime :: Instance -> UTCTime
- AWS.EC2.Types: messageSet :: AvailabilityZone -> [AvailabilityZoneMessage]
- AWS.EC2.Types: niasIpOwnerId :: NetworkInterfaceAssociation -> Text
- AWS.EC2.Types: niasPublicIp :: NetworkInterfaceAssociation -> Text
- AWS.EC2.Types: niatAttachTime :: NetworkInterfaceAttachment -> UTCTime
- AWS.EC2.Types: niatAttachmentId :: NetworkInterfaceAttachment -> Text
- AWS.EC2.Types: niatDeleteOnTermination :: NetworkInterfaceAttachment -> Bool
- AWS.EC2.Types: niatDeviceIndex :: NetworkInterfaceAttachment -> Int
- AWS.EC2.Types: niatStatus :: NetworkInterfaceAttachment -> Text
- AWS.EC2.Types: nipDeleteOnTermination :: NetworkInterfaceParam -> Maybe Bool
- AWS.EC2.Types: nipDescription :: NetworkInterfaceParam -> Maybe Text
- AWS.EC2.Types: nipDeviceIndex :: NetworkInterfaceParam -> Maybe Text
- AWS.EC2.Types: nipInterfaceId :: NetworkInterfaceParam -> Maybe Text
- AWS.EC2.Types: nipPrivateIpAddresses :: NetworkInterfaceParam -> [Text]
- AWS.EC2.Types: nipSecurityGroupIds :: NetworkInterfaceParam -> [Text]
- AWS.EC2.Types: nipSubnetId :: NetworkInterfaceParam -> Maybe Text
- AWS.EC2.Types: ownerId :: Reservation -> Text
- AWS.EC2.Types: pcCode :: ProductCode -> Text
- AWS.EC2.Types: pcType :: ProductCode -> ProductCodeType
- AWS.EC2.Types: pdInstanceId :: PasswordData -> Text
- AWS.EC2.Types: pdPasswordData :: PasswordData -> Text
- AWS.EC2.Types: pdTimestamp :: PasswordData -> UTCTime
- AWS.EC2.Types: privateDnsName :: Instance -> Text
- AWS.EC2.Types: privateIpAddress :: Instance -> Maybe Text
- AWS.EC2.Types: rDestinationCidrBlock :: Route -> Text
- AWS.EC2.Types: rGatewayId :: Route -> Maybe Text
- AWS.EC2.Types: rInstanceId :: Route -> Maybe Text
- AWS.EC2.Types: rInstanceOwnerId :: Route -> Maybe Text
- AWS.EC2.Types: rNetworkInterfaceId :: Route -> Maybe Text
- AWS.EC2.Types: rOrigin :: Route -> Maybe RouteOrigin
- AWS.EC2.Types: rState :: Route -> RouteState
- AWS.EC2.Types: ramdiskId :: Image -> Maybe Text
- AWS.EC2.Types: reason :: Instance -> Text
- AWS.EC2.Types: requesterId :: Reservation -> Maybe Text
- AWS.EC2.Types: resourceKey :: ResourceTag -> Text
- AWS.EC2.Types: resourceValue :: ResourceTag -> Maybe Text
- AWS.EC2.Types: riAvailabilityZone :: RunInstancesRequest -> Maybe Text
- AWS.EC2.Types: riBlockDeviceMappings :: RunInstancesRequest -> [BlockDeviceMappingParam]
- AWS.EC2.Types: riClientToken :: RunInstancesRequest -> Maybe Text
- AWS.EC2.Types: riDisableApiTermination :: RunInstancesRequest -> Maybe Bool
- AWS.EC2.Types: riEbsOptimized :: RunInstancesRequest -> Maybe Bool
- AWS.EC2.Types: riIamInstanceProfile :: RunInstancesRequest -> Maybe IamInstanceProfile
- AWS.EC2.Types: riImageId :: RunInstancesRequest -> Text
- AWS.EC2.Types: riInstanceType :: RunInstancesRequest -> Maybe Text
- AWS.EC2.Types: riKernelId :: RunInstancesRequest -> Maybe Text
- AWS.EC2.Types: riKeyName :: RunInstancesRequest -> Maybe Text
- AWS.EC2.Types: riMaxCount :: RunInstancesRequest -> Int
- AWS.EC2.Types: riMinCount :: RunInstancesRequest -> Int
- AWS.EC2.Types: riMonitoringEnabled :: RunInstancesRequest -> Maybe Bool
- AWS.EC2.Types: riNetworkInterface :: RunInstancesRequest -> [NetworkInterfaceParam]
- AWS.EC2.Types: riPlacementGroup :: RunInstancesRequest -> Maybe Text
- AWS.EC2.Types: riPrivateIpAddresses :: RunInstancesRequest -> [Text]
- AWS.EC2.Types: riRamdiskId :: RunInstancesRequest -> Maybe Text
- AWS.EC2.Types: riSecurityGroupIds :: RunInstancesRequest -> [Text]
- AWS.EC2.Types: riSecurityGroups :: RunInstancesRequest -> [Text]
- AWS.EC2.Types: riShutdownBehavior :: RunInstancesRequest -> Maybe ShutdownBehavior
- AWS.EC2.Types: riSubnetId :: RunInstancesRequest -> Maybe Text
- AWS.EC2.Types: riTenancy :: RunInstancesRequest -> Maybe Text
- AWS.EC2.Types: riUserData :: RunInstancesRequest -> Maybe ByteString
- AWS.EC2.Types: rirArchitecture :: RegisterImageRequest -> Maybe Text
- AWS.EC2.Types: rirBlockDeviceMappings :: RegisterImageRequest -> [BlockDeviceMappingParam]
- AWS.EC2.Types: rirDescription :: RegisterImageRequest -> Maybe Text
- AWS.EC2.Types: rirImageLocation :: RegisterImageRequest -> Maybe Text
- AWS.EC2.Types: rirKernelId :: RegisterImageRequest -> Maybe Text
- AWS.EC2.Types: rirName :: RegisterImageRequest -> Text
- AWS.EC2.Types: rirRamdiskId :: RegisterImageRequest -> Maybe Text
- AWS.EC2.Types: rirRootDeviceName :: RegisterImageRequest -> Maybe Text
- AWS.EC2.Types: rtAssociationSet :: RouteTable -> [RouteTableAssociation]
- AWS.EC2.Types: rtPropagatingVgw :: RouteTable -> Maybe PropagatingVgw
- AWS.EC2.Types: rtRouteSet :: RouteTable -> [Route]
- AWS.EC2.Types: rtRouteTableId :: RouteTable -> Text
- AWS.EC2.Types: rtTagSet :: RouteTable -> [ResourceTag]
- AWS.EC2.Types: rtVpcId :: RouteTable -> Text
- AWS.EC2.Types: rtaMain :: RouteTableAssociation -> Maybe Bool
- AWS.EC2.Types: rtaRouteTableAssociationId :: RouteTableAssociation -> Text
- AWS.EC2.Types: rtaRouteTableId :: RouteTableAssociation -> Text
- AWS.EC2.Types: rtaSubnetId :: RouteTableAssociation -> Maybe Text
- AWS.EC2.Types: sgGroupDescription :: SecurityGroup -> Text
- AWS.EC2.Types: sgGroupId :: SecurityGroup -> Text
- AWS.EC2.Types: sgGroupName :: SecurityGroup -> Text
- AWS.EC2.Types: sgIpPermissions :: SecurityGroup -> [IpPermission]
- AWS.EC2.Types: sgIpPermissionsEgress :: SecurityGroup -> [IpPermission]
- AWS.EC2.Types: sgOwnerId :: SecurityGroup -> Text
- AWS.EC2.Types: sgTagSet :: SecurityGroup -> [ResourceTag]
- AWS.EC2.Types: sgVpcId :: SecurityGroup -> Maybe Text
- AWS.EC2.Types: snAvailableIpAddressCount :: Subnet -> Int
- AWS.EC2.Types: snCAvailabilityZone :: Subnet -> Text
- AWS.EC2.Types: snCidrBlock :: Subnet -> Text
- AWS.EC2.Types: snState :: Subnet -> SubnetState
- AWS.EC2.Types: snSubnetId :: Subnet -> Text
- AWS.EC2.Types: snTagSet :: Subnet -> [ResourceTag]
- AWS.EC2.Types: snVpicId :: Subnet -> Text
- AWS.EC2.Types: sourceDestCheck :: Instance -> Maybe Bool
- AWS.EC2.Types: spotInstanceRequestId :: Instance -> Maybe Text
- AWS.EC2.Types: ssDescription :: Snapshot -> Text
- AWS.EC2.Types: ssOwnerAlias :: Snapshot -> Maybe Text
- AWS.EC2.Types: ssOwnerId :: Snapshot -> Text
- AWS.EC2.Types: ssProgress :: Snapshot -> Text
- AWS.EC2.Types: ssStartTime :: Snapshot -> UTCTime
- AWS.EC2.Types: ssStatus :: Snapshot -> SnapshotStatus
- AWS.EC2.Types: ssTagSet :: Snapshot -> [ResourceTag]
- AWS.EC2.Types: ssVolumeId :: Snapshot -> Text
- AWS.EC2.Types: ssVolumeSize :: Snapshot -> Int
- AWS.EC2.Types: staticRoutesOnly :: VpnConnectionOptionsRequest -> Bool
- AWS.EC2.Types: tenancy :: Placement -> Text
- AWS.EC2.Types: uigpGroupId :: UserIdGroupPair -> Text
- AWS.EC2.Types: uigpGroupName :: UserIdGroupPair -> Maybe Text
- AWS.EC2.Types: uigpUserId :: UserIdGroupPair -> Maybe Text
- AWS.EC2.Types: vcCustomerGatewayConfiguration :: VpnConnection -> Text
- AWS.EC2.Types: vcCustomerGatewayId :: VpnConnection -> Text
- AWS.EC2.Types: vcOptions :: VpnConnection -> Maybe VpnConnectionOptionsRequest
- AWS.EC2.Types: vcRoutes :: VpnConnection -> Maybe VpnStaticRoute
- AWS.EC2.Types: vcState :: VpnConnection -> VpnConnectionState
- AWS.EC2.Types: vcTagSet :: VpnConnection -> [ResourceTag]
- AWS.EC2.Types: vcType :: VpnConnection -> Text
- AWS.EC2.Types: vcVgwTelemetry :: VpnConnection -> [VpnTunnelTelemetry]
- AWS.EC2.Types: vcVpnGatewayId :: VpnConnection -> Text
- AWS.EC2.Types: virtualName :: BlockDeviceMapping -> Maybe Text
- AWS.EC2.Types: volAttachmentSet :: Volume -> [AttachmentSetItemResponse]
- AWS.EC2.Types: volAvailabilityZone :: Volume -> Text
- AWS.EC2.Types: volCreateTime :: Volume -> UTCTime
- AWS.EC2.Types: volSize :: Volume -> Int
- AWS.EC2.Types: volSnapshotId :: Volume -> Maybe Text
- AWS.EC2.Types: volStatus :: Volume -> VolumeState
- AWS.EC2.Types: volTagSet :: Volume -> [ResourceTag]
- AWS.EC2.Types: volVolumeType :: Volume -> VolumeType
- AWS.EC2.Types: vpcGroupSet :: Instance -> [Group]
- AWS.EC2.Types: vsaCode :: VolumeStatusAction -> Text
- AWS.EC2.Types: vsaDescription :: VolumeStatusAction -> Text
- AWS.EC2.Types: vsaEventId :: VolumeStatusAction -> Text
- AWS.EC2.Types: vsaEventType :: VolumeStatusAction -> Text
- AWS.EC2.Types: vsdName :: VolumeStatusDetail -> Text
- AWS.EC2.Types: vsdStatus :: VolumeStatusDetail -> Text
- AWS.EC2.Types: vseDescription :: VolumeStatusEvent -> Text
- AWS.EC2.Types: vseEventId :: VolumeStatusEvent -> Text
- AWS.EC2.Types: vseEventType :: VolumeStatusEvent -> Text
- AWS.EC2.Types: vseNotAfter :: VolumeStatusEvent -> Maybe UTCTime
- AWS.EC2.Types: vseNotBefore :: VolumeStatusEvent -> Maybe UTCTime
- AWS.EC2.Types: vsiDetails :: VolumeStatusInfo -> [VolumeStatusDetail]
- AWS.EC2.Types: vsiStatus :: VolumeStatusInfo -> VolumeStatusInfoStatus
- AWS.EC2.Types: vsrDestinationCidrBlock :: VpnStaticRoute -> Text
- AWS.EC2.Types: vsrSource :: VpnStaticRoute -> VpnStaticRouteSource
- AWS.EC2.Types: vsrState :: VpnStaticRoute -> VpnStaticRouteState
- AWS.EC2.Types: vstActionSet :: VolumeStatus -> [VolumeStatusAction]
- AWS.EC2.Types: vstAvailabilityZone :: VolumeStatus -> Text
- AWS.EC2.Types: vstEventSet :: VolumeStatus -> [VolumeStatusEvent]
- AWS.EC2.Types: vstVolumeId :: VolumeStatus -> Text
- AWS.EC2.Types: vstVolumeStatus :: VolumeStatus -> VolumeStatusInfo
- AWS.EC2.Types: vttAcceptRouteCount :: VpnTunnelTelemetry -> Int
- AWS.EC2.Types: vttLastStatusChange :: VpnTunnelTelemetry -> UTCTime
- AWS.EC2.Types: vttOutsideIpAddress :: VpnTunnelTelemetry -> Text
- AWS.EC2.Types: vttStatus :: VpnTunnelTelemetry -> VpnTunnelTelemetryStatus
- AWS.EC2.Types: vttStatusMessage :: VpnTunnelTelemetry -> Text
+ AWS: loadCredentialFromFile :: FilePath -> IO Credential
+ AWS.CloudWatch: apiVersion :: ByteString
+ AWS.CloudWatch: getMetricStatistics :: (MonadBaseControl IO m, MonadResource m) => [DimensionFilter] -> UTCTime -> UTCTime -> Text -> Text -> Int -> [Statistic] -> Maybe Text -> CloudWatch m ([Datapoint], Text)
+ AWS.CloudWatch: listMetrics :: (MonadBaseControl IO m, MonadResource m) => [DimensionFilter] -> Maybe Text -> Maybe Text -> Maybe Text -> CloudWatch m [Metric]
+ AWS.CloudWatch: runCloudWatch :: MonadIO m => Credential -> CloudWatch m a -> m a
+ AWS.CloudWatch: setRegion :: (MonadBaseControl IO m, MonadResource m) => Text -> CloudWatch m ()
+ AWS.CloudWatch: type CloudWatch m a = AWS AWSContext m a
+ AWS.CloudWatch.Types: Datapoint :: UTCTime -> Maybe Double -> Text -> Maybe Double -> Maybe Double -> Maybe Double -> Maybe Double -> Datapoint
+ AWS.CloudWatch.Types: Dimension :: Text -> Text -> Dimension
+ AWS.CloudWatch.Types: Metric :: [Dimension] -> Text -> Text -> Metric
+ AWS.CloudWatch.Types: StatisticAverage :: Statistic
+ AWS.CloudWatch.Types: StatisticMaximum :: Statistic
+ AWS.CloudWatch.Types: StatisticMinimum :: Statistic
+ AWS.CloudWatch.Types: StatisticSampleCount :: Statistic
+ AWS.CloudWatch.Types: StatisticSum :: Statistic
+ AWS.CloudWatch.Types: allStatistics :: [Statistic]
+ AWS.CloudWatch.Types: data Datapoint
+ AWS.CloudWatch.Types: data Dimension
+ AWS.CloudWatch.Types: data Metric
+ AWS.CloudWatch.Types: data Statistic
+ AWS.CloudWatch.Types: datapointAverage :: Datapoint -> Maybe Double
+ AWS.CloudWatch.Types: datapointMaximum :: Datapoint -> Maybe Double
+ AWS.CloudWatch.Types: datapointMinimum :: Datapoint -> Maybe Double
+ AWS.CloudWatch.Types: datapointSampleCount :: Datapoint -> Maybe Double
+ AWS.CloudWatch.Types: datapointSum :: Datapoint -> Maybe Double
+ AWS.CloudWatch.Types: datapointTimestamp :: Datapoint -> UTCTime
+ AWS.CloudWatch.Types: datapointUnit :: Datapoint -> Text
+ AWS.CloudWatch.Types: dimensionName :: Dimension -> Text
+ AWS.CloudWatch.Types: dimensionValue :: Dimension -> Text
+ AWS.CloudWatch.Types: instance Eq Datapoint
+ AWS.CloudWatch.Types: instance Eq Dimension
+ AWS.CloudWatch.Types: instance Eq Metric
+ AWS.CloudWatch.Types: instance Eq Statistic
+ AWS.CloudWatch.Types: instance Show Datapoint
+ AWS.CloudWatch.Types: instance Show Dimension
+ AWS.CloudWatch.Types: instance Show Metric
+ AWS.CloudWatch.Types: instance Show Statistic
+ AWS.CloudWatch.Types: metricDimensions :: Metric -> [Dimension]
+ AWS.CloudWatch.Types: metricName :: Metric -> Text
+ AWS.CloudWatch.Types: metricNameSpace :: Metric -> Text
+ AWS.CloudWatch.Types: type DimensionFilter = (Text, Text)
+ AWS.EC2: AssociateAddressRequestEc2 :: Text -> Text -> AssociateAddressRequest
+ AWS.EC2: AssociateAddressRequestVpc :: Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Bool -> AssociateAddressRequest
+ AWS.EC2: DisassociateAddressRequestEc2 :: Text -> DisassociateAddressRequest
+ AWS.EC2: DisassociateAddressRequestVpc :: Text -> DisassociateAddressRequest
+ AWS.EC2: associateAddressRequestEc2InstanceId :: AssociateAddressRequest -> Text
+ AWS.EC2: associateAddressRequestEc2PublicIp :: AssociateAddressRequest -> Text
+ AWS.EC2: associateAddressRequestVpcAllocationId :: AssociateAddressRequest -> Text
+ AWS.EC2: associateAddressRequestVpcAllowReassociation :: AssociateAddressRequest -> Maybe Bool
+ AWS.EC2: associateAddressRequestVpcInstanceId :: AssociateAddressRequest -> Maybe Text
+ AWS.EC2: associateAddressRequestVpcNetworkInterfaceId :: AssociateAddressRequest -> Maybe Text
+ AWS.EC2: associateAddressRequestVpcPrivateIpAddress :: AssociateAddressRequest -> Maybe Text
+ AWS.EC2: describeImageAttribute :: (MonadResource m, MonadBaseControl IO m) => Text -> AMIAttribute -> EC2 m AMIAttributeDescription
+ AWS.EC2.Types: AMIAttributeDescription :: Text -> [LaunchPermissionItem] -> [ProductCodeItem] -> Maybe Text -> Maybe Text -> Maybe Text -> [BlockDeviceMapping] -> AMIAttributeDescription
+ AWS.EC2.Types: AMIBlockDeviceMapping :: AMIAttribute
+ AWS.EC2.Types: AMIDescription :: AMIAttribute
+ AWS.EC2.Types: AMIKernel :: AMIAttribute
+ AWS.EC2.Types: AMILaunchPermission :: AMIAttribute
+ AWS.EC2.Types: AMIProductCodes :: AMIAttribute
+ AWS.EC2.Types: AMIRamdisk :: AMIAttribute
+ AWS.EC2.Types: AllocateAddress :: Text -> AddressDomain -> Maybe Text -> AllocateAddress
+ AWS.EC2.Types: AssociateAddressRequestEc2 :: Text -> Text -> AssociateAddressRequest
+ AWS.EC2.Types: AssociateAddressRequestVpc :: Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Bool -> AssociateAddressRequest
+ AWS.EC2.Types: AttachmentSetItemResponseStatusAttached :: AttachmentSetItemResponseStatus
+ AWS.EC2.Types: AttachmentSetItemResponseStatusAttaching :: AttachmentSetItemResponseStatus
+ AWS.EC2.Types: AttachmentSetItemResponseStatusDetached :: AttachmentSetItemResponseStatus
+ AWS.EC2.Types: AttachmentSetItemResponseStatusDetaching :: AttachmentSetItemResponseStatus
+ AWS.EC2.Types: BlockDeviceMappingParamEbs :: Text -> Maybe Bool -> EbsSource -> Maybe Bool -> Maybe VolumeType -> BlockDeviceMappingParam
+ AWS.EC2.Types: DisassociateAddressRequestEc2 :: Text -> DisassociateAddressRequest
+ AWS.EC2.Types: DisassociateAddressRequestVpc :: Text -> DisassociateAddressRequest
+ AWS.EC2.Types: EbsInstanceBlockDevice :: Text -> AttachmentSetItemResponseStatus -> UTCTime -> Bool -> EbsInstanceBlockDevice
+ AWS.EC2.Types: EbsSourceSnapshotId :: Text -> EbsSource
+ AWS.EC2.Types: EbsSourceVolumeSize :: Int -> EbsSource
+ AWS.EC2.Types: HypervisorOVM :: Hypervisor
+ AWS.EC2.Types: HypervisorXen :: Hypervisor
+ AWS.EC2.Types: ImageStateAvailable :: ImageState
+ AWS.EC2.Types: ImageStateFailed :: ImageState
+ AWS.EC2.Types: ImageStatePending :: ImageState
+ AWS.EC2.Types: ImageTypeKernel :: ImageType
+ AWS.EC2.Types: ImageTypeMachine :: ImageType
+ AWS.EC2.Types: ImageTypeRamDisk :: ImageType
+ AWS.EC2.Types: InstanceAttributeBlockDeviceMapping :: [InstanceBlockDeviceMapping] -> InstanceAttribute
+ AWS.EC2.Types: InstanceAttributeDisableApiTermination :: Bool -> InstanceAttribute
+ AWS.EC2.Types: InstanceAttributeEbsOptimized :: Bool -> InstanceAttribute
+ AWS.EC2.Types: InstanceAttributeGroupSet :: [Text] -> InstanceAttribute
+ AWS.EC2.Types: InstanceAttributeInstanceType :: Text -> InstanceAttribute
+ AWS.EC2.Types: InstanceAttributeKernelId :: (Maybe Text) -> InstanceAttribute
+ AWS.EC2.Types: InstanceAttributeProductCodes :: [ProductCode] -> InstanceAttribute
+ AWS.EC2.Types: InstanceAttributeRamdiskId :: (Maybe Text) -> InstanceAttribute
+ AWS.EC2.Types: InstanceAttributeRequestBlockDeviceMapping :: InstanceAttributeRequest
+ AWS.EC2.Types: InstanceAttributeRequestDisableApiTermination :: InstanceAttributeRequest
+ AWS.EC2.Types: InstanceAttributeRequestEbsOptimized :: InstanceAttributeRequest
+ AWS.EC2.Types: InstanceAttributeRequestGroupSet :: InstanceAttributeRequest
+ AWS.EC2.Types: InstanceAttributeRequestInstanceType :: InstanceAttributeRequest
+ AWS.EC2.Types: InstanceAttributeRequestKernelId :: InstanceAttributeRequest
+ AWS.EC2.Types: InstanceAttributeRequestProductCodes :: InstanceAttributeRequest
+ AWS.EC2.Types: InstanceAttributeRequestRamdiskId :: InstanceAttributeRequest
+ AWS.EC2.Types: InstanceAttributeRequestRootDeviceName :: InstanceAttributeRequest
+ AWS.EC2.Types: InstanceAttributeRequestShutdownBehavior :: InstanceAttributeRequest
+ AWS.EC2.Types: InstanceAttributeRequestSourceDestCheck :: InstanceAttributeRequest
+ AWS.EC2.Types: InstanceAttributeRequestUserData :: InstanceAttributeRequest
+ AWS.EC2.Types: InstanceAttributeRootDeviceName :: (Maybe Text) -> InstanceAttribute
+ AWS.EC2.Types: InstanceAttributeShutdownBehavior :: ShutdownBehavior -> InstanceAttribute
+ AWS.EC2.Types: InstanceAttributeSourceDestCheck :: (Maybe Bool) -> InstanceAttribute
+ AWS.EC2.Types: InstanceAttributeUserData :: (Maybe Text) -> InstanceAttribute
+ AWS.EC2.Types: InstanceStatePending :: InstanceState
+ AWS.EC2.Types: InstanceStateRunning :: InstanceState
+ AWS.EC2.Types: InstanceStateShuttingDown :: InstanceState
+ AWS.EC2.Types: InstanceStateStopped :: InstanceState
+ AWS.EC2.Types: InstanceStateStopping :: InstanceState
+ AWS.EC2.Types: InstanceStateTerminated :: InstanceState
+ AWS.EC2.Types: InstanceStateUnknown :: Int -> InstanceState
+ AWS.EC2.Types: InstanceStatusEventCodeInstanceReboot :: InstanceStatusEventCode
+ AWS.EC2.Types: InstanceStatusEventCodeInstanceRetirement :: InstanceStatusEventCode
+ AWS.EC2.Types: InstanceStatusEventCodeInstanceStop :: InstanceStatusEventCode
+ AWS.EC2.Types: InstanceStatusEventCodeSystemReboot :: InstanceStatusEventCode
+ AWS.EC2.Types: InstanceStatusTypeStatusImpaired :: InstanceStatusTypeStatus
+ AWS.EC2.Types: InstanceStatusTypeStatusInsufficientData :: InstanceStatusTypeStatus
+ AWS.EC2.Types: InstanceStatusTypeStatusNotApplicable :: InstanceStatusTypeStatus
+ AWS.EC2.Types: InstanceStatusTypeStatusOK :: InstanceStatusTypeStatus
+ AWS.EC2.Types: LaunchPermissionItem :: Text -> Text -> LaunchPermissionItem
+ AWS.EC2.Types: ModifyInstanceAttributeRequestBlockDeviceMapping :: [BlockDeviceMappingParam] -> ModifyInstanceAttributeRequest
+ AWS.EC2.Types: ModifyInstanceAttributeRequestDisableApiTermination :: Bool -> ModifyInstanceAttributeRequest
+ AWS.EC2.Types: ModifyInstanceAttributeRequestEbsOptimized :: Bool -> ModifyInstanceAttributeRequest
+ AWS.EC2.Types: ModifyInstanceAttributeRequestGroupSet :: [Text] -> ModifyInstanceAttributeRequest
+ AWS.EC2.Types: ModifyInstanceAttributeRequestInstanceType :: Text -> ModifyInstanceAttributeRequest
+ AWS.EC2.Types: ModifyInstanceAttributeRequestKernelId :: Text -> ModifyInstanceAttributeRequest
+ AWS.EC2.Types: ModifyInstanceAttributeRequestRamdiskId :: Text -> ModifyInstanceAttributeRequest
+ AWS.EC2.Types: ModifyInstanceAttributeRequestRootDeviceName :: Text -> ModifyInstanceAttributeRequest
+ AWS.EC2.Types: ModifyInstanceAttributeRequestShutdownBehavior :: ShutdownBehavior -> ModifyInstanceAttributeRequest
+ AWS.EC2.Types: ModifyInstanceAttributeRequestSourceDestCheck :: Bool -> ModifyInstanceAttributeRequest
+ AWS.EC2.Types: ModifyInstanceAttributeRequestUserData :: Text -> ModifyInstanceAttributeRequest
+ AWS.EC2.Types: PlatformOther :: Platform
+ AWS.EC2.Types: PlatformWindows :: Platform
+ AWS.EC2.Types: ProductCodeDevpay :: ProductCodeType
+ AWS.EC2.Types: ProductCodeItem :: Text -> ProductCodeItem
+ AWS.EC2.Types: ProductCodeMarketplace :: ProductCodeType
+ AWS.EC2.Types: ResetInstanceAttributeRequestKernel :: ResetInstanceAttributeRequest
+ AWS.EC2.Types: ResetInstanceAttributeRequestRamdisk :: ResetInstanceAttributeRequest
+ AWS.EC2.Types: ResetInstanceAttributeRequestSourceDestCheck :: ResetInstanceAttributeRequest
+ AWS.EC2.Types: RootDeviceTypeEBS :: RootDeviceType
+ AWS.EC2.Types: RootDeviceTypeInstanceStore :: RootDeviceType
+ AWS.EC2.Types: SecurityGroupRequestGroupId :: Text -> SecurityGroupRequest
+ AWS.EC2.Types: SecurityGroupRequestGroupName :: Text -> SecurityGroupRequest
+ AWS.EC2.Types: ShutdownBehaviorStop :: ShutdownBehavior
+ AWS.EC2.Types: ShutdownBehaviorTerminate :: ShutdownBehavior
+ AWS.EC2.Types: SnapshotCompleted :: SnapshotStatus
+ AWS.EC2.Types: SnapshotError :: SnapshotStatus
+ AWS.EC2.Types: SnapshotPending :: SnapshotStatus
+ AWS.EC2.Types: SubnetStateAvailable :: SubnetState
+ AWS.EC2.Types: SubnetStatePending :: SubnetState
+ AWS.EC2.Types: VirtualizationTypeHVM :: VirtualizationType
+ AWS.EC2.Types: VirtualizationTypeParavirtual :: VirtualizationType
+ AWS.EC2.Types: VolumeAttributeAutoEnableIO :: Bool -> VolumeAttribute
+ AWS.EC2.Types: VolumeAttributeProductCodes :: [ProductCode] -> VolumeAttribute
+ AWS.EC2.Types: VolumeAttributeRequestAutoEnableIO :: VolumeAttributeRequest
+ AWS.EC2.Types: VolumeAttributeRequestProductCodes :: VolumeAttributeRequest
+ AWS.EC2.Types: VolumeStateAvailable :: VolumeState
+ AWS.EC2.Types: VolumeStateCreating :: VolumeState
+ AWS.EC2.Types: VolumeStateDeleted :: VolumeState
+ AWS.EC2.Types: VolumeStateDeleting :: VolumeState
+ AWS.EC2.Types: VolumeStateError :: VolumeState
+ AWS.EC2.Types: VolumeStateInUse :: VolumeState
+ AWS.EC2.Types: VolumeStatusInfoStatusImpaired :: VolumeStatusInfoStatus
+ AWS.EC2.Types: VolumeStatusInfoStatusInsufficientData :: VolumeStatusInfoStatus
+ AWS.EC2.Types: VolumeStatusInfoStatusOK :: VolumeStatusInfoStatus
+ AWS.EC2.Types: VolumeTypeIO1 :: Int -> VolumeType
+ AWS.EC2.Types: VolumeTypeStandard :: VolumeType
+ AWS.EC2.Types: VpnConnectionStateAvailable :: VpnConnectionState
+ AWS.EC2.Types: VpnConnectionStateDeleted :: VpnConnectionState
+ AWS.EC2.Types: VpnConnectionStateDeleting :: VpnConnectionState
+ AWS.EC2.Types: VpnConnectionStatePending :: VpnConnectionState
+ AWS.EC2.Types: VpnStaticRouteSourceStatic :: VpnStaticRouteSource
+ AWS.EC2.Types: VpnStaticRouteStateAvailable :: VpnStaticRouteState
+ AWS.EC2.Types: VpnStaticRouteStateDeleted :: VpnStaticRouteState
+ AWS.EC2.Types: VpnStaticRouteStateDeleting :: VpnStaticRouteState
+ AWS.EC2.Types: VpnStaticRouteStatePending :: VpnStaticRouteState
+ AWS.EC2.Types: VpnTunnelTelemetryStatusDown :: VpnTunnelTelemetryStatus
+ AWS.EC2.Types: VpnTunnelTelemetryStatusUp :: VpnTunnelTelemetryStatus
+ AWS.EC2.Types: addressAllocationId :: Address -> Maybe Text
+ AWS.EC2.Types: addressAssociationId :: Address -> Maybe Text
+ AWS.EC2.Types: addressDomain :: Address -> AddressDomain
+ AWS.EC2.Types: addressInstanceId :: Address -> Maybe Text
+ AWS.EC2.Types: addressNetworkInterfaceId :: Address -> Maybe Text
+ AWS.EC2.Types: addressNetworkInterfaceOwnerId :: Address -> Maybe Text
+ AWS.EC2.Types: addressPrivateIpAddress :: Address -> Maybe Text
+ AWS.EC2.Types: addressPublicIp :: Address -> Text
+ AWS.EC2.Types: allocateAddressAllocationId :: AllocateAddress -> Maybe Text
+ AWS.EC2.Types: allocateAddressDomain :: AllocateAddress -> AddressDomain
+ AWS.EC2.Types: allocateAddressPublicIp :: AllocateAddress -> Text
+ AWS.EC2.Types: amiAttributeDescriptionBlockDeviceMapping :: AMIAttributeDescription -> [BlockDeviceMapping]
+ AWS.EC2.Types: amiAttributeDescriptionDescription :: AMIAttributeDescription -> Maybe Text
+ AWS.EC2.Types: amiAttributeDescriptionImageId :: AMIAttributeDescription -> Text
+ AWS.EC2.Types: amiAttributeDescriptionKernel :: AMIAttributeDescription -> Maybe Text
+ AWS.EC2.Types: amiAttributeDescriptionLaunchPermission :: AMIAttributeDescription -> [LaunchPermissionItem]
+ AWS.EC2.Types: amiAttributeDescriptionProductCodes :: AMIAttributeDescription -> [ProductCodeItem]
+ AWS.EC2.Types: amiAttributeDescriptionRamdisk :: AMIAttributeDescription -> Maybe Text
+ AWS.EC2.Types: associateAddressRequestEc2InstanceId :: AssociateAddressRequest -> Text
+ AWS.EC2.Types: associateAddressRequestEc2PublicIp :: AssociateAddressRequest -> Text
+ AWS.EC2.Types: associateAddressRequestVpcAllocationId :: AssociateAddressRequest -> Text
+ AWS.EC2.Types: associateAddressRequestVpcAllowReassociation :: AssociateAddressRequest -> Maybe Bool
+ AWS.EC2.Types: associateAddressRequestVpcInstanceId :: AssociateAddressRequest -> Maybe Text
+ AWS.EC2.Types: associateAddressRequestVpcNetworkInterfaceId :: AssociateAddressRequest -> Maybe Text
+ AWS.EC2.Types: associateAddressRequestVpcPrivateIpAddress :: AssociateAddressRequest -> Maybe Text
+ AWS.EC2.Types: attachmentSetItemResponseAttachTime :: AttachmentSetItemResponse -> UTCTime
+ AWS.EC2.Types: attachmentSetItemResponseDeleteOnTermination :: AttachmentSetItemResponse -> Maybe Bool
+ AWS.EC2.Types: attachmentSetItemResponseDevice :: AttachmentSetItemResponse -> Text
+ AWS.EC2.Types: attachmentSetItemResponseInstanceId :: AttachmentSetItemResponse -> Text
+ AWS.EC2.Types: attachmentSetItemResponseStatus :: AttachmentSetItemResponse -> AttachmentSetItemResponseStatus
+ AWS.EC2.Types: attachmentSetItemResponseVolumeId :: AttachmentSetItemResponse -> Text
+ AWS.EC2.Types: blockDeviceMappingDeviceName :: BlockDeviceMapping -> Text
+ AWS.EC2.Types: blockDeviceMappingEbs :: BlockDeviceMapping -> Maybe EbsBlockDevice
+ AWS.EC2.Types: blockDeviceMappingParamEbsDeleteOnTermination :: BlockDeviceMappingParam -> Maybe Bool
+ AWS.EC2.Types: blockDeviceMappingParamEbsDeviceName :: BlockDeviceMappingParam -> Text
+ AWS.EC2.Types: blockDeviceMappingParamEbsNoDevice :: BlockDeviceMappingParam -> Maybe Bool
+ AWS.EC2.Types: blockDeviceMappingParamEbsSource :: BlockDeviceMappingParam -> EbsSource
+ AWS.EC2.Types: blockDeviceMappingParamEbsVolumeType :: BlockDeviceMappingParam -> Maybe VolumeType
+ AWS.EC2.Types: blockDeviceMappingParamInstanceStoreDeviceName :: BlockDeviceMappingParam -> Text
+ AWS.EC2.Types: blockDeviceMappingParamInstanceStoreNoDevice :: BlockDeviceMappingParam -> Maybe Bool
+ AWS.EC2.Types: blockDeviceMappingParamInstanceStoreVirtualName :: BlockDeviceMappingParam -> Maybe Text
+ AWS.EC2.Types: blockDeviceMappingVirtualName :: BlockDeviceMapping -> Maybe Text
+ AWS.EC2.Types: consoleOutputInstanceId :: ConsoleOutput -> Text
+ AWS.EC2.Types: consoleOutputOutput :: ConsoleOutput -> Text
+ AWS.EC2.Types: consoleOutputTimestamp :: ConsoleOutput -> UTCTime
+ AWS.EC2.Types: createFromSnapshotAvailabilityZone :: CreateVolumeRequest -> Text
+ AWS.EC2.Types: createFromSnapshotSize :: CreateVolumeRequest -> Maybe Int
+ AWS.EC2.Types: createFromSnapshotSnapshotId :: CreateVolumeRequest -> Text
+ AWS.EC2.Types: createFromSnapshotVolumeType :: CreateVolumeRequest -> Maybe VolumeType
+ AWS.EC2.Types: createNewVolumeAvailabilityZone :: CreateVolumeRequest -> Text
+ AWS.EC2.Types: createNewVolumeSize :: CreateVolumeRequest -> Int
+ AWS.EC2.Types: createNewVolumeVolumeType :: CreateVolumeRequest -> Maybe VolumeType
+ AWS.EC2.Types: createSubnetRequestAvailabilityZone :: CreateSubnetRequest -> Maybe Text
+ AWS.EC2.Types: createSubnetRequestCidrBlock :: CreateSubnetRequest -> Text
+ AWS.EC2.Types: createSubnetRequestVpcId :: CreateSubnetRequest -> Text
+ AWS.EC2.Types: customerGatewayTagSet :: CustomerGateway -> [ResourceTag]
+ AWS.EC2.Types: data AMIAttribute
+ AWS.EC2.Types: data AMIAttributeDescription
+ AWS.EC2.Types: data AllocateAddress
+ AWS.EC2.Types: data EbsInstanceBlockDevice
+ AWS.EC2.Types: data LaunchPermissionItem
+ AWS.EC2.Types: data ProductCodeItem
+ AWS.EC2.Types: ebsInstanceBlockDeviceAttachTime :: EbsInstanceBlockDevice -> UTCTime
+ AWS.EC2.Types: ebsInstanceBlockDeviceDeleteOnTermination :: EbsInstanceBlockDevice -> Bool
+ AWS.EC2.Types: ebsInstanceBlockDeviceState :: EbsInstanceBlockDevice -> AttachmentSetItemResponseStatus
+ AWS.EC2.Types: ebsInstanceBlockDeviceVolumeId :: EbsInstanceBlockDevice -> Text
+ AWS.EC2.Types: iamInstanceProfileArn :: IamInstanceProfile -> Text
+ AWS.EC2.Types: iamInstanceProfileId :: IamInstanceProfile -> Text
+ AWS.EC2.Types: imageBlockDeviceMappings :: Image -> [BlockDeviceMapping]
+ AWS.EC2.Types: imageIsPublic :: Image -> Bool
+ AWS.EC2.Types: imageKernelId :: Image -> Maybe Text
+ AWS.EC2.Types: imageRamdiskId :: Image -> Maybe Text
+ AWS.EC2.Types: instance Eq AMIAttribute
+ AWS.EC2.Types: instance Eq AMIAttributeDescription
+ AWS.EC2.Types: instance Eq AllocateAddress
+ AWS.EC2.Types: instance Eq EbsInstanceBlockDevice
+ AWS.EC2.Types: instance Eq LaunchPermissionItem
+ AWS.EC2.Types: instance Eq ProductCodeItem
+ AWS.EC2.Types: instance Show AMIAttribute
+ AWS.EC2.Types: instance Show AMIAttributeDescription
+ AWS.EC2.Types: instance Show AllocateAddress
+ AWS.EC2.Types: instance Show EbsInstanceBlockDevice
+ AWS.EC2.Types: instance Show LaunchPermissionItem
+ AWS.EC2.Types: instance Show ProductCodeItem
+ AWS.EC2.Types: instanceAmiLaunchIndex :: Instance -> Text
+ AWS.EC2.Types: instanceBlockDeviceMappingDeviceName :: InstanceBlockDeviceMapping -> Text
+ AWS.EC2.Types: instanceBlockDeviceMappingEbs :: InstanceBlockDeviceMapping -> EbsInstanceBlockDevice
+ AWS.EC2.Types: instanceClientToken :: Instance -> Text
+ AWS.EC2.Types: instanceDnsName :: Instance -> Text
+ AWS.EC2.Types: instanceEbsOptimized :: Instance -> Bool
+ AWS.EC2.Types: instanceIpAddress :: Instance -> Maybe Text
+ AWS.EC2.Types: instanceLaunchTime :: Instance -> UTCTime
+ AWS.EC2.Types: instanceNetworkInterfaceAssociation :: InstanceNetworkInterface -> Maybe NetworkInterfaceAssociation
+ AWS.EC2.Types: instanceNetworkInterfaceAttachment :: InstanceNetworkInterface -> NetworkInterfaceAttachment
+ AWS.EC2.Types: instanceNetworkInterfaceDescription :: InstanceNetworkInterface -> Text
+ AWS.EC2.Types: instanceNetworkInterfaceGroupSet :: InstanceNetworkInterface -> [Group]
+ AWS.EC2.Types: instanceNetworkInterfaceOwnerId :: InstanceNetworkInterface -> Text
+ AWS.EC2.Types: instanceNetworkInterfacePrivateDnsName :: InstanceNetworkInterface -> Maybe Text
+ AWS.EC2.Types: instanceNetworkInterfacePrivateIpAddress :: InstanceNetworkInterface -> Text
+ AWS.EC2.Types: instanceNetworkInterfacePrivateIpAddressSet :: InstanceNetworkInterface -> [InstancePrivateIpAddress]
+ AWS.EC2.Types: instanceNetworkInterfaceSourceDestCheck :: InstanceNetworkInterface -> Bool
+ AWS.EC2.Types: instanceNetworkInterfaceStatus :: InstanceNetworkInterface -> Text
+ AWS.EC2.Types: instanceNetworkInterfaceSubnetId :: InstanceNetworkInterface -> Text
+ AWS.EC2.Types: instanceNetworkInterfaceVpcId :: InstanceNetworkInterface -> Text
+ AWS.EC2.Types: instancePrivateDnsName :: Instance -> Text
+ AWS.EC2.Types: instancePrivateIpAddress :: Instance -> Maybe Text
+ AWS.EC2.Types: instancePrivateIpAddressAddress :: InstancePrivateIpAddress -> Text
+ AWS.EC2.Types: instancePrivateIpAddressAssociation :: InstancePrivateIpAddress -> Maybe NetworkInterfaceAssociation
+ AWS.EC2.Types: instancePrivateIpAddressPrimary :: InstancePrivateIpAddress -> Bool
+ AWS.EC2.Types: instanceReason :: Instance -> Text
+ AWS.EC2.Types: instanceSourceDestCheck :: Instance -> Maybe Bool
+ AWS.EC2.Types: instanceSpotInstanceRequestId :: Instance -> Maybe Text
+ AWS.EC2.Types: instanceStateChangeCurrentState :: InstanceStateChange -> InstanceState
+ AWS.EC2.Types: instanceStateChangeInstanceId :: InstanceStateChange -> Text
+ AWS.EC2.Types: instanceStateChangePreviousState :: InstanceStateChange -> InstanceState
+ AWS.EC2.Types: instanceStatusAvailabilityZone :: InstanceStatus -> Text
+ AWS.EC2.Types: instanceStatusDetailImpairedSince :: InstanceStatusDetail -> Maybe UTCTime
+ AWS.EC2.Types: instanceStatusDetailName :: InstanceStatusDetail -> InstanceStatusDetailName
+ AWS.EC2.Types: instanceStatusDetailStatus :: InstanceStatusDetail -> InstanceStatusDetailStatus
+ AWS.EC2.Types: instanceStatusEventCode :: InstanceStatusEvent -> InstanceStatusEventCode
+ AWS.EC2.Types: instanceStatusEventDescription :: InstanceStatusEvent -> Text
+ AWS.EC2.Types: instanceStatusEventNotAfter :: InstanceStatusEvent -> Maybe UTCTime
+ AWS.EC2.Types: instanceStatusEventNotBefore :: InstanceStatusEvent -> Maybe UTCTime
+ AWS.EC2.Types: instanceStatusEventsSet :: InstanceStatus -> [InstanceStatusEvent]
+ AWS.EC2.Types: instanceStatusInstanceId :: InstanceStatus -> Text
+ AWS.EC2.Types: instanceStatusInstanceState :: InstanceStatus -> InstanceState
+ AWS.EC2.Types: instanceStatusInstanceStatus :: InstanceStatus -> InstanceStatusType
+ AWS.EC2.Types: instanceStatusSystemStatus :: InstanceStatus -> InstanceStatusType
+ AWS.EC2.Types: instanceStatusTypeDetails :: InstanceStatusType -> [InstanceStatusDetail]
+ AWS.EC2.Types: instanceStatusTypeStatus :: InstanceStatusType -> InstanceStatusTypeStatus
+ AWS.EC2.Types: instanceSubnetId :: Instance -> Maybe Text
+ AWS.EC2.Types: instancevpcGroupSet :: Instance -> [Group]
+ AWS.EC2.Types: ipPermissionFromPort :: IpPermission -> Maybe Int
+ AWS.EC2.Types: ipPermissionGroups :: IpPermission -> [UserIdGroupPair]
+ AWS.EC2.Types: ipPermissionIpProtocol :: IpPermission -> Text
+ AWS.EC2.Types: ipPermissionIpRanges :: IpPermission -> [IpRange]
+ AWS.EC2.Types: ipPermissionToPort :: IpPermission -> Maybe Int
+ AWS.EC2.Types: ipRangeCidrIp :: IpRange -> Text
+ AWS.EC2.Types: keyPairFingerprint :: KeyPair -> Text
+ AWS.EC2.Types: keyPairName :: KeyPair -> Text
+ AWS.EC2.Types: launchPermissionItemGroup :: LaunchPermissionItem -> Text
+ AWS.EC2.Types: launchPermissionUserId :: LaunchPermissionItem -> Text
+ AWS.EC2.Types: networkInterfaceAssociationIpOwnerId :: NetworkInterfaceAssociation -> Text
+ AWS.EC2.Types: networkInterfaceAssociationPublicIp :: NetworkInterfaceAssociation -> Text
+ AWS.EC2.Types: networkInterfaceAttachmentAttachTime :: NetworkInterfaceAttachment -> UTCTime
+ AWS.EC2.Types: networkInterfaceAttachmentDeleteOnTermination :: NetworkInterfaceAttachment -> Bool
+ AWS.EC2.Types: networkInterfaceAttachmentDeviceIndex :: NetworkInterfaceAttachment -> Int
+ AWS.EC2.Types: networkInterfaceAttachmentId :: NetworkInterfaceAttachment -> Text
+ AWS.EC2.Types: networkInterfaceAttachmentStatus :: NetworkInterfaceAttachment -> Text
+ AWS.EC2.Types: networkInterfaceParamDeleteOnTermination :: NetworkInterfaceParam -> Maybe Bool
+ AWS.EC2.Types: networkInterfaceParamDescription :: NetworkInterfaceParam -> Maybe Text
+ AWS.EC2.Types: networkInterfaceParamDeviceIndex :: NetworkInterfaceParam -> Maybe Text
+ AWS.EC2.Types: networkInterfaceParamInterfaceId :: NetworkInterfaceParam -> Maybe Text
+ AWS.EC2.Types: networkInterfaceParamPrivateIpAddresses :: NetworkInterfaceParam -> [Text]
+ AWS.EC2.Types: networkInterfaceParamSecurityGroupIds :: NetworkInterfaceParam -> [Text]
+ AWS.EC2.Types: networkInterfaceParamSubnetId :: NetworkInterfaceParam -> Maybe Text
+ AWS.EC2.Types: passwordDataInstanceId :: PasswordData -> Text
+ AWS.EC2.Types: passwordDataPasswordData :: PasswordData -> Text
+ AWS.EC2.Types: passwordDataTimestamp :: PasswordData -> UTCTime
+ AWS.EC2.Types: placementTenancy :: Placement -> Text
+ AWS.EC2.Types: productCodeCode :: ProductCode -> Text
+ AWS.EC2.Types: productCodeItemProductCode :: ProductCodeItem -> Text
+ AWS.EC2.Types: productCodeType :: ProductCode -> ProductCodeType
+ AWS.EC2.Types: registerImageRequestArchitecture :: RegisterImageRequest -> Maybe Text
+ AWS.EC2.Types: registerImageRequestBlockDeviceMappings :: RegisterImageRequest -> [BlockDeviceMappingParam]
+ AWS.EC2.Types: registerImageRequestDescription :: RegisterImageRequest -> Maybe Text
+ AWS.EC2.Types: registerImageRequestImageLocation :: RegisterImageRequest -> Maybe Text
+ AWS.EC2.Types: registerImageRequestKernelId :: RegisterImageRequest -> Maybe Text
+ AWS.EC2.Types: registerImageRequestName :: RegisterImageRequest -> Text
+ AWS.EC2.Types: registerImageRequestRamdiskId :: RegisterImageRequest -> Maybe Text
+ AWS.EC2.Types: registerImageRequestRootDeviceName :: RegisterImageRequest -> Maybe Text
+ AWS.EC2.Types: reservationGroupSet :: Reservation -> [Group]
+ AWS.EC2.Types: reservationInstanceSet :: Reservation -> [Instance]
+ AWS.EC2.Types: reservationOwnerId :: Reservation -> Text
+ AWS.EC2.Types: reservationRequesterId :: Reservation -> Maybe Text
+ AWS.EC2.Types: resourceTagKey :: ResourceTag -> Text
+ AWS.EC2.Types: resourceTagValue :: ResourceTag -> Maybe Text
+ AWS.EC2.Types: routeDestinationCidrBlock :: Route -> Text
+ AWS.EC2.Types: routeGatewayId :: Route -> Maybe Text
+ AWS.EC2.Types: routeInstanceId :: Route -> Maybe Text
+ AWS.EC2.Types: routeInstanceOwnerId :: Route -> Maybe Text
+ AWS.EC2.Types: routeNetworkInterfaceId :: Route -> Maybe Text
+ AWS.EC2.Types: routeOrigin :: Route -> Maybe RouteOrigin
+ AWS.EC2.Types: routeState :: Route -> RouteState
+ AWS.EC2.Types: routeTableAssociationId :: RouteTableAssociation -> Text
+ AWS.EC2.Types: routeTableAssociationMain :: RouteTableAssociation -> Maybe Bool
+ AWS.EC2.Types: routeTableAssociationRouteTableId :: RouteTableAssociation -> Text
+ AWS.EC2.Types: routeTableAssociationSet :: RouteTable -> [RouteTableAssociation]
+ AWS.EC2.Types: routeTableAssociationSubnetId :: RouteTableAssociation -> Maybe Text
+ AWS.EC2.Types: routeTableId :: RouteTable -> Text
+ AWS.EC2.Types: routeTablePropagatingVgw :: RouteTable -> Maybe PropagatingVgw
+ AWS.EC2.Types: routeTableRouteSet :: RouteTable -> [Route]
+ AWS.EC2.Types: routeTableTagSet :: RouteTable -> [ResourceTag]
+ AWS.EC2.Types: routeTableVpcId :: RouteTable -> Text
+ AWS.EC2.Types: runInstancesRequestAvailabilityZone :: RunInstancesRequest -> Maybe Text
+ AWS.EC2.Types: runInstancesRequestBlockDeviceMappings :: RunInstancesRequest -> [BlockDeviceMappingParam]
+ AWS.EC2.Types: runInstancesRequestClientToken :: RunInstancesRequest -> Maybe Text
+ AWS.EC2.Types: runInstancesRequestDisableApiTermination :: RunInstancesRequest -> Maybe Bool
+ AWS.EC2.Types: runInstancesRequestEbsOptimized :: RunInstancesRequest -> Maybe Bool
+ AWS.EC2.Types: runInstancesRequestIamInstanceProfile :: RunInstancesRequest -> Maybe IamInstanceProfile
+ AWS.EC2.Types: runInstancesRequestImageId :: RunInstancesRequest -> Text
+ AWS.EC2.Types: runInstancesRequestInstanceType :: RunInstancesRequest -> Maybe Text
+ AWS.EC2.Types: runInstancesRequestKernelId :: RunInstancesRequest -> Maybe Text
+ AWS.EC2.Types: runInstancesRequestKeyName :: RunInstancesRequest -> Maybe Text
+ AWS.EC2.Types: runInstancesRequestMaxCount :: RunInstancesRequest -> Int
+ AWS.EC2.Types: runInstancesRequestMinCount :: RunInstancesRequest -> Int
+ AWS.EC2.Types: runInstancesRequestMonitoringEnabled :: RunInstancesRequest -> Maybe Bool
+ AWS.EC2.Types: runInstancesRequestNetworkInterface :: RunInstancesRequest -> [NetworkInterfaceParam]
+ AWS.EC2.Types: runInstancesRequestPlacementGroup :: RunInstancesRequest -> Maybe Text
+ AWS.EC2.Types: runInstancesRequestPrivateIpAddress :: RunInstancesRequest -> Maybe Text
+ AWS.EC2.Types: runInstancesRequestRamdiskId :: RunInstancesRequest -> Maybe Text
+ AWS.EC2.Types: runInstancesRequestSecurityGroupIds :: RunInstancesRequest -> [Text]
+ AWS.EC2.Types: runInstancesRequestSecurityGroups :: RunInstancesRequest -> [Text]
+ AWS.EC2.Types: runInstancesRequestShutdownBehavior :: RunInstancesRequest -> Maybe ShutdownBehavior
+ AWS.EC2.Types: runInstancesRequestSubnetId :: RunInstancesRequest -> Maybe Text
+ AWS.EC2.Types: runInstancesRequestTenancy :: RunInstancesRequest -> Maybe Text
+ AWS.EC2.Types: runInstancesRequestUserData :: RunInstancesRequest -> Maybe ByteString
+ AWS.EC2.Types: securityGroupDescription :: SecurityGroup -> Text
+ AWS.EC2.Types: securityGroupId :: SecurityGroup -> Text
+ AWS.EC2.Types: securityGroupIpPermissions :: SecurityGroup -> [IpPermission]
+ AWS.EC2.Types: securityGroupIpPermissionsEgress :: SecurityGroup -> [IpPermission]
+ AWS.EC2.Types: securityGroupName :: SecurityGroup -> Text
+ AWS.EC2.Types: securityGroupOwnerId :: SecurityGroup -> Text
+ AWS.EC2.Types: securityGroupTagSet :: SecurityGroup -> [ResourceTag]
+ AWS.EC2.Types: securityGroupVpcId :: SecurityGroup -> Maybe Text
+ AWS.EC2.Types: snapshotDescription :: Snapshot -> Text
+ AWS.EC2.Types: snapshotOwnerAlias :: Snapshot -> Maybe Text
+ AWS.EC2.Types: snapshotOwnerId :: Snapshot -> Text
+ AWS.EC2.Types: snapshotProgress :: Snapshot -> Text
+ AWS.EC2.Types: snapshotStartTime :: Snapshot -> UTCTime
+ AWS.EC2.Types: snapshotStatus :: Snapshot -> SnapshotStatus
+ AWS.EC2.Types: snapshotTagSet :: Snapshot -> [ResourceTag]
+ AWS.EC2.Types: snapshotVolumeId :: Snapshot -> Text
+ AWS.EC2.Types: snapshotVolumeSize :: Snapshot -> Int
+ AWS.EC2.Types: subnetAvailabilityZone :: Subnet -> Text
+ AWS.EC2.Types: subnetAvailableIpAddressCount :: Subnet -> Int
+ AWS.EC2.Types: subnetCidrBlock :: Subnet -> Text
+ AWS.EC2.Types: subnetState :: Subnet -> SubnetState
+ AWS.EC2.Types: subnetTagSet :: Subnet -> [ResourceTag]
+ AWS.EC2.Types: subnetVpicId :: Subnet -> Text
+ AWS.EC2.Types: userIdGroupPairGroupId :: UserIdGroupPair -> Text
+ AWS.EC2.Types: userIdGroupPairGroupName :: UserIdGroupPair -> Maybe Text
+ AWS.EC2.Types: userIdGroupPairUserId :: UserIdGroupPair -> Maybe Text
+ AWS.EC2.Types: volumeAttachmentSet :: Volume -> [AttachmentSetItemResponse]
+ AWS.EC2.Types: volumeAvailabilityZone :: Volume -> Text
+ AWS.EC2.Types: volumeCreateTime :: Volume -> UTCTime
+ AWS.EC2.Types: volumeSize :: Volume -> Int
+ AWS.EC2.Types: volumeSnapshotId :: Volume -> Maybe Text
+ AWS.EC2.Types: volumeStatus :: Volume -> VolumeState
+ AWS.EC2.Types: volumeStatusActionCode :: VolumeStatusAction -> Text
+ AWS.EC2.Types: volumeStatusActionDescription :: VolumeStatusAction -> Text
+ AWS.EC2.Types: volumeStatusActionEventId :: VolumeStatusAction -> Text
+ AWS.EC2.Types: volumeStatusActionEventType :: VolumeStatusAction -> Text
+ AWS.EC2.Types: volumeStatusActionSet :: VolumeStatus -> [VolumeStatusAction]
+ AWS.EC2.Types: volumeStatusAvailabilityZone :: VolumeStatus -> Text
+ AWS.EC2.Types: volumeStatusDetailName :: VolumeStatusDetail -> Text
+ AWS.EC2.Types: volumeStatusDetailStatus :: VolumeStatusDetail -> Text
+ AWS.EC2.Types: volumeStatusEventDescription :: VolumeStatusEvent -> Text
+ AWS.EC2.Types: volumeStatusEventId :: VolumeStatusEvent -> Text
+ AWS.EC2.Types: volumeStatusEventNotAfter :: VolumeStatusEvent -> Maybe UTCTime
+ AWS.EC2.Types: volumeStatusEventNotBefore :: VolumeStatusEvent -> Maybe UTCTime
+ AWS.EC2.Types: volumeStatusEventSet :: VolumeStatus -> [VolumeStatusEvent]
+ AWS.EC2.Types: volumeStatusEventType :: VolumeStatusEvent -> Text
+ AWS.EC2.Types: volumeStatusInfoDetails :: VolumeStatusInfo -> [VolumeStatusDetail]
+ AWS.EC2.Types: volumeStatusInfoStatus :: VolumeStatusInfo -> VolumeStatusInfoStatus
+ AWS.EC2.Types: volumeStatusVolumeId :: VolumeStatus -> Text
+ AWS.EC2.Types: volumeStatusVolumeStatus :: VolumeStatus -> VolumeStatusInfo
+ AWS.EC2.Types: volumeTagSet :: Volume -> [ResourceTag]
+ AWS.EC2.Types: volumeVolumeType :: Volume -> VolumeType
+ AWS.EC2.Types: vpnConnectionCustomerGatewayConfiguration :: VpnConnection -> Text
+ AWS.EC2.Types: vpnConnectionCustomerGatewayId :: VpnConnection -> Text
+ AWS.EC2.Types: vpnConnectionOptions :: VpnConnection -> Maybe VpnConnectionOptionsRequest
+ AWS.EC2.Types: vpnConnectionOptionsRequestStaticRoutesOnly :: VpnConnectionOptionsRequest -> Bool
+ AWS.EC2.Types: vpnConnectionRoutes :: VpnConnection -> Maybe VpnStaticRoute
+ AWS.EC2.Types: vpnConnectionState :: VpnConnection -> VpnConnectionState
+ AWS.EC2.Types: vpnConnectionTagSet :: VpnConnection -> [ResourceTag]
+ AWS.EC2.Types: vpnConnectionType :: VpnConnection -> Text
+ AWS.EC2.Types: vpnConnectionVgwTelemetry :: VpnConnection -> [VpnTunnelTelemetry]
+ AWS.EC2.Types: vpnConnectionVpnGatewayId :: VpnConnection -> Text
+ AWS.EC2.Types: vpnStaticRouteDestinationCidrBlock :: VpnStaticRoute -> Text
+ AWS.EC2.Types: vpnStaticRouteSource :: VpnStaticRoute -> VpnStaticRouteSource
+ AWS.EC2.Types: vpnStaticRouteState :: VpnStaticRoute -> VpnStaticRouteState
+ AWS.EC2.Types: vpnTunnelTelemetryAcceptRouteCount :: VpnTunnelTelemetry -> Int
+ AWS.EC2.Types: vpnTunnelTelemetryLastStatusChange :: VpnTunnelTelemetry -> UTCTime
+ AWS.EC2.Types: vpnTunnelTelemetryOutsideIpAddress :: VpnTunnelTelemetry -> Text
+ AWS.EC2.Types: vpnTunnelTelemetryStatus :: VpnTunnelTelemetry -> VpnTunnelTelemetryStatus
+ AWS.EC2.Types: vpnTunnelTelemetryStatusMessage :: VpnTunnelTelemetry -> Text
+ AWS.EC2.Types: zoneMessageSet :: AvailabilityZone -> [AvailabilityZoneMessage]
+ AWS.EC2.Util: findTag :: Text -> [ResourceTag] -> Maybe ResourceTag
- AWS.EC2: allocateAddress :: (MonadResource m, MonadBaseControl IO m) => Bool -> EC2 m AllocateAddressResponse
+ AWS.EC2: allocateAddress :: (MonadResource m, MonadBaseControl IO m) => Bool -> EC2 m AllocateAddress
- AWS.EC2.Types: InstanceBlockDeviceMapping :: Text -> InstanceEbsBlockDevice -> InstanceBlockDeviceMapping
+ AWS.EC2.Types: InstanceBlockDeviceMapping :: Text -> EbsInstanceBlockDevice -> InstanceBlockDeviceMapping
- AWS.EC2.Types: RunInstancesRequest :: Text -> Int -> Int -> Maybe Text -> [Text] -> [Text] -> Maybe ByteString -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> [BlockDeviceMappingParam] -> Maybe Bool -> Maybe Text -> Maybe Bool -> Maybe ShutdownBehavior -> [Text] -> Maybe Text -> [NetworkInterfaceParam] -> Maybe IamInstanceProfile -> Maybe Bool -> RunInstancesRequest
+ AWS.EC2.Types: RunInstancesRequest :: Text -> Int -> Int -> Maybe Text -> [Text] -> [Text] -> Maybe ByteString -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> [BlockDeviceMappingParam] -> Maybe Bool -> Maybe Text -> Maybe Bool -> Maybe ShutdownBehavior -> Maybe Text -> Maybe Text -> [NetworkInterfaceParam] -> Maybe IamInstanceProfile -> Maybe Bool -> RunInstancesRequest
- AWS.EC2.Types: subnetId :: Instance -> Maybe Text
+ AWS.EC2.Types: subnetId :: Subnet -> Text
Files
- AWS.hs +2/−1
- AWS/CloudWatch.hs +46/−0
- AWS/CloudWatch/Internal.hs +34/−0
- AWS/CloudWatch/Metric.hs +86/−0
- AWS/CloudWatch/Types.hs +48/−0
- AWS/EC2/Address.hs +11/−8
- AWS/EC2/Convert.hs +133/−51
- AWS/EC2/Image.hs +66/−20
- AWS/EC2/Instance.hs +136/−102
- AWS/EC2/Internal.hs +1/−1
- AWS/EC2/KeyPair.hs +0/−1
- AWS/EC2/Params.hs +6/−5
- AWS/EC2/Query.hs +5/−4
- AWS/EC2/RouteTable.hs +2/−2
- AWS/EC2/SecurityGroup.hs +19/−13
- AWS/EC2/Snapshot.hs +1/−1
- AWS/EC2/Subnets.hs +1/−1
- AWS/EC2/Tag.hs +3/−3
- AWS/EC2/Types.hs +446/−383
- AWS/EC2/Util.hs +11/−0
- AWS/EC2/VPC.hs +4/−4
- AWS/EC2/Volume.hs +16/−11
- AWS/ELB/Internal.hs +0/−8
- AWS/Lib/Parser.hs +7/−1
- AWS/Lib/Query.hs +32/−6
- AWS/Util.hs +14/−0
- Tests/Main.hs +24/−0
- aws-sdk.cabal +16/−4
- tests/main.hs +0/−21
AWS.hs view
@@ -32,8 +32,9 @@ module AWS ( -- * Credentials Credential- , loadCredential , newCredential+ , loadCredential+ , loadCredentialFromFile -- * Environment , AWS , AWSException(..)
+ AWS/CloudWatch.hs view
@@ -0,0 +1,46 @@+{-# LANGUAGE FlexibleContexts, RankNTypes #-}++module AWS.CloudWatch+ ( -- * CloudWatch Environment+ CloudWatch+ , runCloudWatch+ , setRegion+ , apiVersion+ -- * Metric+ , module AWS.CloudWatch.Metric+ ) where++import Data.Text (Text)+import Data.Conduit+import Control.Monad.Trans.Control (MonadBaseControl)+import Control.Monad.IO.Class (MonadIO)+import qualified Control.Monad.State as State+import qualified Network.HTTP.Conduit as HTTP+import Data.Monoid ((<>))++import AWS.Class+import AWS.Util++import AWS+import AWS.CloudWatch.Internal+import AWS.CloudWatch.Metric++initialCloudWatchContext :: HTTP.Manager -> AWSContext+initialCloudWatchContext mgr = AWSContext+ { manager = mgr+ , endpoint = "monitoring.amazonaws.com"+ , lastRequestId = Nothing+ }++runCloudWatch :: MonadIO m => Credential -> CloudWatch m a -> m a+runCloudWatch = runAWS initialCloudWatchContext++setRegion+ :: (MonadBaseControl IO m, MonadResource m)+ => Text -> CloudWatch m ()+setRegion region = do+ ctx <- State.get+ State.put+ ctx { endpoint =+ "monitoring." <> textToBS region <> ".amazonaws.com"+ }
+ AWS/CloudWatch/Internal.hs view
@@ -0,0 +1,34 @@+{-# LANGUAGE FlexibleContexts, RankNTypes #-}++module AWS.CloudWatch.Internal+ where++import Data.ByteString (ByteString)+import Data.Text (Text)+import Data.Conduit+import Control.Monad.Trans.Control (MonadBaseControl)+import Data.Monoid ((<>))+import Data.XML.Types (Event(..))++import AWS.Class+import AWS.Lib.Query+import AWS.Lib.Parser++apiVersion :: ByteString+apiVersion = "2010-08-01"++type CloudWatch m a = AWS AWSContext m a++cloudWatchQuery+ :: (MonadBaseControl IO m, MonadResource m)+ => ByteString -- ^ Action+ -> [QueryParam]+ -> GLSink Event m a+ -> CloudWatch m a+cloudWatchQuery = commonQuery apiVersion++elements :: MonadThrow m+ => Text+ -> GLSink Event m a+ -> GLSink Event m [a]+elements name f = element (name <> "s") $ listConsumer name f
+ AWS/CloudWatch/Metric.hs view
@@ -0,0 +1,86 @@+{-# LANGUAGE FlexibleContexts, RankNTypes #-}++module AWS.CloudWatch.Metric+ ( listMetrics+ , getMetricStatistics+ ) where++import Data.Text (Text)+import Data.Time (UTCTime)+import Data.Conduit+import Control.Monad.Trans.Control (MonadBaseControl)+import Control.Applicative++import AWS.Util+import AWS.CloudWatch.Internal+import AWS.Lib.Query+import AWS.Lib.Parser+import AWS.CloudWatch.Types++dimensionFilterParams :: [DimensionFilter] -> QueryParam+dimensionFilterParams filters =+ StructArrayParams "Dimensions.member" $ map f filters+ where+ f (k, v) = [("Name", k), ("Value", v)]++listMetrics+ :: (MonadBaseControl IO m, MonadResource m)+ => [DimensionFilter] -- ^ Dimensions+ -> Maybe Text -- ^ MetricName+ -> Maybe Text -- ^ Namespace+ -> Maybe Text -- ^ NextToken+ -> CloudWatch m [Metric]+listMetrics ds mn ns nt = cloudWatchQuery "ListMetrics" params $+ members "Metrics" $ Metric+ <$> members "Dimensions" (Dimension+ <$> getT "Name"+ <*> getT "Value"+ )+ <*> getT "MetricName"+ <*> getT "Namespace"+ where+ params =+ dimensionFilterParams ds :+ maybeParams+ [ ("MetricName", mn)+ , ("Namespace", ns)+ , ("NextToken", nt)+ ]++getMetricStatistics+ :: (MonadBaseControl IO m, MonadResource m)+ => [DimensionFilter]+ -> UTCTime -- ^ StartTime+ -> UTCTime -- ^ EndTime+ -> Text -- ^ MetricName+ -> Text -- ^ Namespace+ -> Int -- ^ Period+ -> [Statistic] -- ^ Statistics+ -> Maybe Text -- ^ Unit+ -> CloudWatch m ([Datapoint], Text) -- ^ Datapoints and Label+getMetricStatistics ds start end mn ns pe sts unit =+ cloudWatchQuery "GetMetricStatistics" params $ (,)+ <$> members "Datapoints" (Datapoint+ <$> getF "Timestamp" textToTime+ <*> getM "SampleCount" (textToDouble <$>)+ <*> getT "Unit"+ <*> getM "Minimum" (textToDouble <$>)+ <*> getM "Maximum" (textToDouble <$>)+ <*> getM "Sum" (textToDouble <$>)+ <*> getM "Average" (textToDouble <$>)+ )+ <*> getT "Label"+ where+ params = dimensionFilterParams ds :+ [ ValueParam "StartTime" $ timeToText start+ , ValueParam "EndTime" $ timeToText end+ , ValueParam "MetricName" mn+ , ValueParam "Namespace" ns+ , ValueParam "Period" $ toText pe+ , ArrayParams "Statistics.member" $ map s sts+ ] ++ maybeParams [("Unit", unit)]+ s StatisticAverage = "Average"+ s StatisticSum = "Sum"+ s StatisticSampleCount = "SampleCount"+ s StatisticMaximum = "Maximum"+ s StatisticMinimum = "Minimum"
+ AWS/CloudWatch/Types.hs view
@@ -0,0 +1,48 @@+module AWS.CloudWatch.Types+ where++import Data.Text (Text)+import Data.Time (UTCTime)++data Metric = Metric+ { metricDimensions :: [Dimension]+ , metricName :: Text+ , metricNameSpace :: Text+ }+ deriving (Show, Eq)++data Dimension = Dimension+ { dimensionName :: Text+ , dimensionValue :: Text+ }+ deriving (Show, Eq)++type DimensionFilter = (Text, Text)++data Datapoint = Datapoint+ { datapointTimestamp :: UTCTime+ , datapointSampleCount :: Maybe Double+ , datapointUnit :: Text+ , datapointMinimum :: Maybe Double+ , datapointMaximum :: Maybe Double+ , datapointSum :: Maybe Double+ , datapointAverage :: Maybe Double+ }+ deriving (Show, Eq)++data Statistic+ = StatisticAverage+ | StatisticSum+ | StatisticSampleCount+ | StatisticMaximum+ | StatisticMinimum+ deriving (Show, Eq)++allStatistics :: [Statistic]+allStatistics =+ [ StatisticAverage+ , StatisticSum+ , StatisticSampleCount+ , StatisticMaximum+ , StatisticMinimum+ ]
AWS/EC2/Address.hs view
@@ -45,7 +45,7 @@ addressSet = itemConduit "addressesSet" $ Address <$> getT "publicIp" <*> getMT "allocationId"- <*> getM "domain" addressDomain+ <*> getM "domain" addressDomain' <*> getMT "instanceId" <*> getMT "associationId" <*> getMT "networkInterfaceId"@@ -58,12 +58,12 @@ allocateAddress :: (MonadResource m, MonadBaseControl IO m) => Bool -- ^ is VPC?- -> EC2 m AllocateAddressResponse+ -> EC2 m AllocateAddress allocateAddress isVpc = do ec2Query "AllocateAddress" params $- AllocateAddressResponse+ AllocateAddress <$> getT "publicIp"- <*> getM "domain" addressDomain+ <*> getM "domain" addressDomain' <*> getMT "allocationId" where params = if isVpc then [ValueParam "Domain" "vpc"] else []@@ -99,11 +99,12 @@ associateAddressParam :: AssociateAddressRequest -> [QueryParam]-associateAddressParam (AAEC2Instance ip iid) =+associateAddressParam (AssociateAddressRequestEc2 ip iid) = [ ValueParam "PublicIp" ip , ValueParam "InstanceId" iid ]-associateAddressParam (AAVPCInstance aid iid nid pip ar) =+associateAddressParam+ (AssociateAddressRequestVpc aid iid nid pip ar) = [ ValueParam "AllocationId" aid ] ++ maybeParams [ ("InstanceId", iid)@@ -120,5 +121,7 @@ ec2Query "DisassociateAddress" (p param) $ getF "return" textToBool where- p (DAEC2 pip) = [ValueParam "PublicIp" pip]- p (DAVPC aid) = [ValueParam "AssociationId" aid]+ p (DisassociateAddressRequestEc2 pip)+ = [ValueParam "PublicIp" pip]+ p (DisassociateAddressRequestVpc aid)+ = [ValueParam "AssociationId" aid]
AWS/EC2/Convert.hs view
@@ -9,59 +9,83 @@ import AWS.Lib.Convert import AWS.EC2.Types -mkConvertFunc "imageState" ''ImageState ["available", "pending", "failed"]+mkConvertFunc+ "imageState"+ ''ImageState+ ["available", "pending", "failed"] -mkConvertFunc "productCodeType" ''ProductCodeType ["devpay", "marketplace"]+mkConvertFunc+ "productCodeType'"+ ''ProductCodeType+ ["devpay", "marketplace"] -mkConvertFunc "imageType" ''ImageType ["machine", "kernel", "ramdisk"]+mkConvertFunc+ "imageType"+ ''ImageType+ ["machine", "kernel", "ramdisk"] platform :: Maybe Text -> Platform-platform Nothing = Other+platform Nothing = PlatformOther platform (Just t)- | t == "windows" = Windows- | otherwise = Other+ | t == "windows" = PlatformWindows+ | otherwise = PlatformOther -mkConvertFunc "rootDeviceType" ''RootDeviceType ["ebs", "instance-store"]+mkConvertFunc+ "rootDeviceType"+ ''RootDeviceType+ ["ebs", "instance-store"] volumeType :: Text -> Maybe Int -> VolumeType-volumeType t Nothing | t == "standard" = Standard-volumeType t (Just i) | t == "io1" = IO1 i+volumeType t Nothing | t == "standard" = VolumeTypeStandard+volumeType t (Just i) | t == "io1" = VolumeTypeIO1 i volumeType t _ = err "volume type" t -mkConvertFunc "virtualizationType" ''VirtualizationType ["paravirtual", "hvm"]+mkConvertFunc+ "virtualizationType"+ ''VirtualizationType ["paravirtual", "hvm"] mkConvertFunc "hypervisor" ''Hypervisor ["ovm", "xen"] -mkConvertFunc "instanceStatusEventCode"- ''InstanceStatusEventCode- ["instance-reboot", "instance-stop", "system-reboot", "instance-retirement"]+mkConvertFunc+ "instanceStatusEventCode'"+ ''InstanceStatusEventCode+ [ "instance-reboot"+ , "instance-stop"+ , "system-reboot"+ , "instance-retirement"+ ] -mkConvertFunc "instanceStatusTypeStatus"- ''InstanceStatusTypeStatus- ["ok", "impaired", "insufficient-data", "not-applicable"]+mkConvertFunc+ "instanceStatusTypeStatus'"+ ''InstanceStatusTypeStatus+ ["ok", "impaired", "insufficient-data", "not-applicable"] instanceStateCodes :: [(Int, InstanceState)] instanceStateCodes =- [ (0, Pending)- , (16, Running)- , (32, ShuttingDown)- , (48, Terminated)- , (64, Stopping)- , (80, Stopped)+ [ (0, InstanceStatePending)+ , (16, InstanceStateRunning)+ , (32, InstanceStateShuttingDown)+ , (48, InstanceStateTerminated)+ , (64, InstanceStateStopping)+ , (80, InstanceStateStopped) ] codeToState :: Int -> InstanceState-codeToState code = case lookup code instanceStateCodes of- Nothing -> UnknownState code- Just st -> st+codeToState code = maybe+ (InstanceStateUnknown code)+ id+ (lookup code instanceStateCodes) -mkConvertFunc "instanceMonitoringState" ''InstanceMonitoringState ["disabled", "enabled", "pending"]+mkConvertFunc+ "instanceMonitoringState"+ ''InstanceMonitoringState+ ["disabled", "enabled", "pending"] mkConvertFunc "architecture" ''Architecture ["i386", "x86_64"] -addressDomain :: Maybe Text -> AddressDomain-addressDomain Nothing = AddressDomainStandard-addressDomain (Just t)+addressDomain' :: Maybe Text -> AddressDomain+addressDomain' Nothing = AddressDomainStandard+addressDomain' (Just t) | t == "standard" = AddressDomainStandard | t == "vpc" = AddressDomainVPC | otherwise = err "address domain" t@@ -71,25 +95,50 @@ | t == "true" = EC2Success | otherwise = EC2Error t -mkConvertFunc "snapshotStatus" ''SnapshotStatus ["pending", "completed", "error"]+mkConvertFunc+ "snapshotStatus'"+ ''SnapshotStatus+ ["pending", "completed", "error"] -mkConvertFunc "volumeStatus"- ''VolumeState- ["creating", "available", "in-use", "deleting", "deleted", "error"]+mkConvertFunc+ "volumeStatus'"+ ''VolumeState+ [ "creating"+ , "available"+ , "in-use"+ , "deleting"+ , "deleted"+ , "error"] -mkConvertFunc "attachmentSetItemResponseStatus"- ''AttachmentSetItemResponseStatus- ["attaching", "attached", "detaching", "detached"]+mkConvertFunc+ "attachmentSetItemResponseStatus'"+ ''AttachmentSetItemResponseStatus+ ["attaching", "attached", "detaching", "detached"] -mkConvertFunc "shutdownBehavior" ''ShutdownBehavior ["stop", "terminate"]+mkConvertFunc+ "shutdownBehavior"+ ''ShutdownBehavior+ ["stop", "terminate"] -mkConvertFunc "vpnConnectionState" ''VpnConnectionState ["pending", "available", "deleting", "deleted"]+mkConvertFunc+ "vpnConnectionState'"+ ''VpnConnectionState+ ["pending", "available", "deleting", "deleted"] -mkConvertFunc "vpnTunnelTelemetryStatus" ''VpnTunnelTelemetryStatus ["UP", "DOWN"]+mkConvertFunc+ "vpnTunnelTelemetryStatus'"+ ''VpnTunnelTelemetryStatus+ ["UP", "DOWN"] -mkConvertFunc "vpnStaticRouteSource" ''VpnStaticRouteSource ["Static"]+mkConvertFunc+ "vpnStaticRouteSource'"+ ''VpnStaticRouteSource+ ["Static"] -mkConvertFunc "vpnStaticRouteState" ''VpnStaticRouteState ["pending", "available", "deleting", "deleted"]+mkConvertFunc+ "vpnStaticRouteState'"+ ''VpnStaticRouteState+ ["pending", "available", "deleting", "deleted"] instanceLifecycle :: Maybe Text -> InstanceLifecycle instanceLifecycle Nothing = LifecycleNone@@ -97,22 +146,55 @@ | t == "spot" = LifecycleSpot | otherwise = err "lifecycle" t -mkConvertFunc "subnetState" ''SubnetState ["pending", "available"]+mkConvertFunc+ "subnetState'"+ ''SubnetState+ ["pending", "available"] -mkConvertFunc "volumeStatusInfoStatus" ''VolumeStatusInfoStatus ["ok", "impaired", "insufficient-data"]+mkConvertFunc+ "volumeStatusInfoStatus'"+ ''VolumeStatusInfoStatus+ ["ok", "impaired", "insufficient-data"] -mkConvertFunc "networkAclRuleAction" ''NetworkAclRuleAction ["allow", "deny"]+mkConvertFunc+ "networkAclRuleAction"+ ''NetworkAclRuleAction+ ["allow", "deny"] -mkConvertFunc "routeState" ''RouteState ["active", "blackhole"]+mkConvertFunc+ "routeState'"+ ''RouteState+ ["active", "blackhole"] -mkConvertFunc "routeOrigin" ''RouteOrigin ["CreateRouteTable", "CreateRoute", "EnableVgwRoutePropagation"]+mkConvertFunc+ "routeOrigin'"+ ''RouteOrigin+ [ "CreateRouteTable"+ , "CreateRoute"+ , "EnableVgwRoutePropagation"+ ] -mkConvertFunc "vpcState'" ''VpcState ["pending", "available"]+mkConvertFunc+ "vpcState'"+ ''VpcState+ ["pending", "available"] -mkConvertFunc "vpnGatewayState'" ''VpnGatewayState ["pending", "available", "deleting", "deleted"]+mkConvertFunc+ "vpnGatewayState'"+ ''VpnGatewayState+ ["pending", "available", "deleting", "deleted"] -mkConvertFunc "attachmentState'" ''AttachmentState ["attaching", "attached", "detaching", "detached"]+mkConvertFunc+ "attachmentState'"+ ''AttachmentState+ ["attaching", "attached", "detaching", "detached"] -mkConvertFunc "customerGatewayState'" ''CustomerGatewayState ["pending", "available", "deleting", "deleted"]+mkConvertFunc+ "customerGatewayState'"+ ''CustomerGatewayState+ ["pending", "available", "deleting", "deleted"] -mkConvertFunc "internetGatewayAttachmentState'" ''InternetGatewayAttachmentState ["attaching", "attached", "detaching", "detached", "available"]+mkConvertFunc+ "internetGatewayAttachmentState'"+ ''InternetGatewayAttachmentState+ ["attaching", "attached", "detaching", "detached", "available"]
AWS/EC2/Image.hs view
@@ -5,14 +5,17 @@ , createImage , registerImage , deregisterImage+ , describeImageAttribute ) where import Data.Text (Text)+import qualified Data.Text as T import Data.XML.Types (Event) import Data.Conduit import Control.Monad.Trans.Control (MonadBaseControl) import Control.Applicative+import Control.Monad (join) import AWS.EC2.Convert import AWS.EC2.Internal@@ -62,22 +65,25 @@ <*> itemsSet "billingProducts" (getT "billingProduct") <*> getF "rootDeviceType" rootDeviceType <*> getMT "rootDeviceName"- <*> itemsSet "blockDeviceMapping" (- BlockDeviceMapping- <$> getT "deviceName"- <*> getMT "virtualName"- <*> elementM "ebs" (- EbsBlockDevice- <$> getMT "snapshotId"- <*> getF "volumeSize" textToInt- <*> getF "deleteOnTermination" textToBool- <*> volumeTypeSink- )- )+ <*> blockDeviceMappingSink <*> getF "virtualizationType" virtualizationType <*> resourceTagSink <*> getF "hypervisor" hypervisor +blockDeviceMappingSink :: MonadThrow m => GLSink Event m [BlockDeviceMapping]+blockDeviceMappingSink = itemsSet "blockDeviceMapping" (+ BlockDeviceMapping+ <$> getT "deviceName"+ <*> getMT "virtualName"+ <*> elementM "ebs" (+ EbsBlockDevice+ <$> getMT "snapshotId"+ <*> getF "volumeSize" textToInt+ <*> getF "deleteOnTermination" textToBool+ <*> volumeTypeSink+ )+ )+ createImage :: (MonadResource m, MonadBaseControl IO m) => Text -- ^ InstanceId@@ -104,15 +110,22 @@ registerImage req = ec2Query "RegisterImage" params $ getT "imageId" where- params = [ValueParam "Name" $ rirName req]- ++ [blockDeviceMappingParams $ rirBlockDeviceMappings req]+ params = [ValueParam "Name" $ registerImageRequestName req]+ ++ [blockDeviceMappingParams+ $ registerImageRequestBlockDeviceMappings req] ++ maybeParams- [ ("ImageLocation", rirImageLocation req)- , ("Description", rirDescription req)- , ("Architecture", rirArchitecture req)- , ("KernelId", rirKernelId req)- , ("RamdiskId", rirRamdiskId req)- , ("RootDeviceName", rirRootDeviceName req)+ [ ("ImageLocation"+ , registerImageRequestImageLocation req+ )+ , ("Description", registerImageRequestDescription req)+ , ("Architecture"+ , registerImageRequestArchitecture req+ )+ , ("KernelId", registerImageRequestKernelId req)+ , ("RamdiskId", registerImageRequestRamdiskId req)+ , ("RootDeviceName"+ , registerImageRequestRootDeviceName req+ ) ] deregisterImage@@ -123,3 +136,36 @@ ec2Query "DeregisterImage" params returnBool where params = [ValueParam "ImageId" iid]++describeImageAttribute+ :: (MonadResource m, MonadBaseControl IO m)+ => Text -- ^ ImageId+ -> AMIAttribute -- ^ Attribute+ -> EC2 m AMIAttributeDescription+describeImageAttribute iid attr =+ ec2Query "DescribeImageAttribute" params $ AMIAttributeDescription+ <$> getT "imageId"+ <*> itemsSet "launchPermission"+ (LaunchPermissionItem+ <$> getT "group"+ <*> getT "userId")+ <*> itemsSet "productCodes"+ (ProductCodeItem+ <$> getT "productCode")+ <*> getMMT "kernel"+ <*> getMMT "ramdisk"+ <*> getMMT "description"+ <*> blockDeviceMappingSink+ where+ getMMT name = join <$> elementM name (getMT "value")+ params = [ ValueParam "ImageId" iid+ , ValueParam "Attribute" param+ ]+ param :: Text+ param | attr == AMIDescription = "description"+ | attr == AMIKernel = "kernel"+ | attr == AMIRamdisk = "ramdisk"+ | attr == AMILaunchPermission = "launchPermission"+ | attr == AMIProductCodes = "productCodes"+ | attr == AMIBlockDeviceMapping = "blockDeviceMapping"+ | otherwise = err "AMIAttribute" $ T.pack $ show attr
AWS/EC2/Instance.hs view
@@ -120,9 +120,9 @@ InstanceBlockDeviceMapping <$> getT "deviceName" <*> element "ebs" (- InstanceEbsBlockDevice+ EbsInstanceBlockDevice <$> getT "volumeId"- <*> getF "status" attachmentSetItemResponseStatus+ <*> getF "status" attachmentSetItemResponseStatus' <*> getF "attachTime" textToTime <*> getF "deleteOnTermination" textToBool )@@ -201,7 +201,7 @@ <*> getT "availabilityZone" <*> itemsSet "eventsSet" ( InstanceStatusEvent- <$> getF "code" instanceStatusEventCode+ <$> getF "code" instanceStatusEventCode' <*> getT "description" <*> getM "notBefore" (textToTime <$>) <*> getM "notAfter" (textToTime <$>)@@ -214,7 +214,7 @@ => Text -> GLSink Event m InstanceStatusType instanceStatusTypeSink name = element name $ InstanceStatusType- <$> getF "status" instanceStatusTypeStatus+ <$> getF "status" instanceStatusTypeStatus' <*> itemsSet "details" ( InstanceStatusDetail <$> getT "name"@@ -295,35 +295,65 @@ ec2Query "RunInstances" params reservationSink where params =- [ ValueParam "ImageId" $ riImageId param- , ValueParam "MinCount" $ toText $ riMinCount param- , ValueParam "MaxCount" $ toText $ riMaxCount param- , ArrayParams "SecurityGroupId" $ riSecurityGroupIds param- , ArrayParams "SecurityGroup" $ riSecurityGroups param- , blockDeviceMappingParams $ riBlockDeviceMappings param+ [ ValueParam "ImageId" $ runInstancesRequestImageId param+ , ValueParam "MinCount"+ $ toText $ runInstancesRequestMinCount param+ , ValueParam "MaxCount"+ $ toText $ runInstancesRequestMaxCount param+ , ArrayParams "SecurityGroupId"+ $ runInstancesRequestSecurityGroupIds param+ , ArrayParams "SecurityGroup"+ $ runInstancesRequestSecurityGroups param+ , blockDeviceMappingParams+ $ runInstancesRequestBlockDeviceMappings param ] ++ maybeParams- [ ("KeyName", riKeyName param)- , ("UserData", bsToText <$> riUserData param)- , ("InstanceType", riInstanceType param)- , ("Placement.AvailabilityZone",- riAvailabilityZone param)- , ("Placement.GroupName", riPlacementGroup param)- , ("Placement.Tenancy", riTenancy param)- , ("KernelId", riKernelId param)- , ("RamdiskId", riRamdiskId param)- , ("Monitoring.Enabled",- boolToText <$> riMonitoringEnabled param)- , ("SubnetId", riSubnetId param)- , ("DisableApiTermination",- boolToText <$> riDisableApiTermination param)- , ("InstanceInitiatedShutdownBehavior",- sbToText <$> riShutdownBehavior param)- , ("ClientToken", riClientToken param)- , ("IamInstanceProfile.Arn",- iipArn <$> riIamInstanceProfile param)- , ("IamInstanceProfile.Name",- iipId <$> riIamInstanceProfile param)- , ("EbsOptimized", boolToText <$> riEbsOptimized param)+ [ ("KeyName", runInstancesRequestKeyName param)+ , ("UserData"+ , bsToText <$> runInstancesRequestUserData param+ )+ , ("InstanceType"+ , runInstancesRequestInstanceType param+ )+ , ("Placement.AvailabilityZone"+ , runInstancesRequestAvailabilityZone param+ )+ , ("Placement.GroupName"+ , runInstancesRequestPlacementGroup param+ )+ , ("Placement.Tenancy"+ , runInstancesRequestTenancy param+ )+ , ("KernelId", runInstancesRequestKernelId param)+ , ("RamdiskId", runInstancesRequestRamdiskId param)+ , ("Monitoring.Enabled"+ , boolToText+ <$> runInstancesRequestMonitoringEnabled param+ )+ , ("SubnetId", runInstancesRequestSubnetId param)+ , ("DisableApiTermination"+ , boolToText+ <$> runInstancesRequestDisableApiTermination param+ )+ , ("InstanceInitiatedShutdownBehavior"+ , sbToText+ <$> runInstancesRequestShutdownBehavior param+ )+ , ("PrivateIpAddress"+ , runInstancesRequestPrivateIpAddress param+ )+ , ("ClientToken", runInstancesRequestClientToken param)+ , ("IamInstanceProfile.Arn"+ , iamInstanceProfileArn+ <$> runInstancesRequestIamInstanceProfile param+ )+ , ("IamInstanceProfile.Name"+ , iamInstanceProfileId+ <$> runInstancesRequestIamInstanceProfile param+ )+ , ("EbsOptimized"+ , boolToText+ <$> runInstancesRequestEbsOptimized param+ ) ] -- | RunInstances parameter utility@@ -334,34 +364,33 @@ -> RunInstancesRequest defaultRunInstancesRequest iid minCount maxCount = RunInstancesRequest- { riImageId = iid- , riMinCount = minCount- , riMaxCount = maxCount- , riKeyName = Nothing- , riSecurityGroupIds = []- , riSecurityGroups = []- , riUserData = Nothing- , riInstanceType = Nothing- , riAvailabilityZone = Nothing- , riPlacementGroup = Nothing- , riTenancy = Nothing- , riKernelId = Nothing- , riRamdiskId = Nothing- , riBlockDeviceMappings = []- , riMonitoringEnabled = Nothing- , riSubnetId = Nothing- , riDisableApiTermination = Nothing- , riShutdownBehavior = Nothing- , riPrivateIpAddresses = []- , riClientToken = Nothing- , riNetworkInterface = []- , riIamInstanceProfile = Nothing- , riEbsOptimized = Nothing- }+ iid+ minCount+ maxCount+ Nothing+ []+ []+ Nothing+ Nothing+ Nothing+ Nothing+ Nothing+ Nothing+ Nothing+ []+ Nothing+ Nothing+ Nothing+ Nothing+ Nothing+ Nothing+ []+ Nothing+ Nothing sbToText :: ShutdownBehavior -> Text-sbToText SBStop = "stop"-sbToText SBTerminate = "terminate"+sbToText ShutdownBehaviorStop = "stop"+sbToText ShutdownBehaviorTerminate = "terminate" ------------------------------------------------------------ -- GetConsoleOutput@@ -405,48 +434,53 @@ [ ValueParam "InstanceId" iid , ValueParam "Attribute" str ]- f IARBlockDeviceMapping = instanceBlockDeviceMappingsSink- >>= return . IABlockDeviceMapping- f IARProductCodes =- productCodeSink >>= return . IAProductCodes- f IARGroupSet =- (itemsSet str $ getT "groupId") >>= return . IAGroupSet+ f InstanceAttributeRequestBlockDeviceMapping = instanceBlockDeviceMappingsSink+ >>= return . InstanceAttributeBlockDeviceMapping+ f InstanceAttributeRequestProductCodes =+ productCodeSink >>= return . InstanceAttributeProductCodes+ f InstanceAttributeRequestGroupSet =+ (itemsSet str $ getT "groupId")+ >>= return . InstanceAttributeGroupSet f req = valueSink str (fromJust $ Map.lookup req h) h = Map.fromList- [ (IARInstanceType, IAInstanceType . fromJust)- , (IARKernelId, IAKernelId)- , (IARRamdiskId, IARamdiskId)- , (IARUserData, IAUserData)- , (IARDisableApiTermination,- IADisableApiTermination . textToBool . fromJust)- , (IARShutdownBehavior,- IAShutdownBehavior . shutdownBehavior . fromJust)- , (IARRootDeviceName, IARootDeviceName)- , (IARSourceDestCheck,- IASourceDestCheck . (textToBool <$>))- , (IAREbsOptimized, IAEbsOptimized . textToBool . fromJust)+ [ (InstanceAttributeRequestInstanceType,+ InstanceAttributeInstanceType . fromJust)+ , (InstanceAttributeRequestKernelId, InstanceAttributeKernelId)+ , (InstanceAttributeRequestRamdiskId, InstanceAttributeRamdiskId)+ , (InstanceAttributeRequestUserData, InstanceAttributeUserData)+ , (InstanceAttributeRequestDisableApiTermination,+ InstanceAttributeDisableApiTermination+ . textToBool . fromJust)+ , (InstanceAttributeRequestShutdownBehavior,+ InstanceAttributeShutdownBehavior+ . shutdownBehavior . fromJust)+ , (InstanceAttributeRequestRootDeviceName, InstanceAttributeRootDeviceName)+ , (InstanceAttributeRequestSourceDestCheck,+ InstanceAttributeSourceDestCheck . (textToBool <$>))+ , (InstanceAttributeRequestEbsOptimized,+ InstanceAttributeEbsOptimized . textToBool . fromJust) ] valueSink name val = (element name $ getMT "value") >>= return . val iar :: InstanceAttributeRequest -> Text-iar IARInstanceType = "instanceType"-iar IARKernelId = "kernel"-iar IARRamdiskId = "ramdisk"-iar IARUserData = "userData"-iar IARDisableApiTermination = "disableApiTermination"-iar IARShutdownBehavior = "instanceInitiatedShutdownBehavior"-iar IARRootDeviceName = "rootDeviceName"-iar IARBlockDeviceMapping = "blockDeviceMapping"-iar IARSourceDestCheck = "sourceDestCheck"-iar IARGroupSet = "groupSet"-iar IARProductCodes = "productCodes"-iar IAREbsOptimized = "ebsOptimized"+iar InstanceAttributeRequestInstanceType = "instanceType"+iar InstanceAttributeRequestKernelId = "kernel"+iar InstanceAttributeRequestRamdiskId = "ramdisk"+iar InstanceAttributeRequestUserData = "userData"+iar InstanceAttributeRequestDisableApiTermination = "disableApiTermination"+iar InstanceAttributeRequestShutdownBehavior = "instanceInitiatedShutdownBehavior"+iar InstanceAttributeRequestRootDeviceName = "rootDeviceName"+iar InstanceAttributeRequestBlockDeviceMapping = "blockDeviceMapping"+iar InstanceAttributeRequestSourceDestCheck = "sourceDestCheck"+iar InstanceAttributeRequestGroupSet = "groupSet"+iar InstanceAttributeRequestProductCodes = "productCodes"+iar InstanceAttributeRequestEbsOptimized = "ebsOptimized" riap :: ResetInstanceAttributeRequest -> Text-riap RIAPKernel = "kernel"-riap RIAPRamdisk = "ramdisk"-riap RIAPSourceDestCheck = "sourceDestCheck"+riap ResetInstanceAttributeRequestKernel = "kernel"+riap ResetInstanceAttributeRequestRamdisk = "ramdisk"+riap ResetInstanceAttributeRequestSourceDestCheck = "sourceDestCheck" resetInstanceAttribute :: (MonadResource m, MonadBaseControl IO m)@@ -473,26 +507,26 @@ params = ValueParam "InstanceId" iid:concatMap miap attrs miap :: ModifyInstanceAttributeRequest -> [QueryParam]-miap (MIAPInstanceType a) =+miap (ModifyInstanceAttributeRequestInstanceType a) = [ValueParam "InstanceType.Value" a]-miap (MIAPKernelId a) =+miap (ModifyInstanceAttributeRequestKernelId a) = [ValueParam "Kernel.Value" a]-miap (MIAPRamdiskId a) =+miap (ModifyInstanceAttributeRequestRamdiskId a) = [ValueParam "Ramdisk.Value" a]-miap (MIAPUserData a) =+miap (ModifyInstanceAttributeRequestUserData a) = [ValueParam "UserData.Value" a]-miap (MIAPDisableApiTermination a) =+miap (ModifyInstanceAttributeRequestDisableApiTermination a) = [ValueParam "DisableApiTermination.Value" $ toText a]-miap (MIAPShutdownBehavior a) =+miap (ModifyInstanceAttributeRequestShutdownBehavior a) = [ValueParam "InstanceInitiatedShutdownBehavior.Value" $ sbToText a]-miap (MIAPRootDeviceName a) =+miap (ModifyInstanceAttributeRequestRootDeviceName a) = [ValueParam "RootDeviceName" a]-miap (MIAPBlockDeviceMapping a) =+miap (ModifyInstanceAttributeRequestBlockDeviceMapping a) = [blockDeviceMappingParams a]-miap (MIAPSourceDestCheck a) =+miap (ModifyInstanceAttributeRequestSourceDestCheck a) = [ValueParam "SourceDestCheck.Value" $ toText a]-miap (MIAPGroupSet a) =+miap (ModifyInstanceAttributeRequestGroupSet a) = [ArrayParams "GroupId" a]-miap (MIAPEbsOptimized a) =+miap (ModifyInstanceAttributeRequestEbsOptimized a) = [ValueParam "EbsOptimized" $ toText a]
AWS/EC2/Internal.hs view
@@ -56,7 +56,7 @@ productCodeSink = itemsSet "productCodes" $ ProductCode <$> getT "productCode"- <*> getF "type" productCodeType+ <*> getF "type" productCodeType' stateReasonSink :: MonadThrow m => GLSink Event m (Maybe StateReason)
AWS/EC2/KeyPair.hs view
@@ -18,7 +18,6 @@ import AWS.EC2.Types import AWS.EC2.Query import AWS.Lib.Parser-import AWS.Util describeKeyPairs :: (MonadResource m, MonadBaseControl IO m)
AWS/EC2/Params.hs view
@@ -12,7 +12,7 @@ blockDeviceMappingParams = StructArrayParams "BlockDeviceMapping" . map kvs where- kvs (BlockDeviceMappingParamEBS name dev src dot vtype) = + kvs (BlockDeviceMappingParamEbs name dev src dot vtype) = [ ("DeviceName", name) , ebsSource src ] ++ vtparam vtype ++ (uncurry f =<<@@ -25,14 +25,15 @@ , ("VirtualName", vname) ]) - ebsSource (EbsSnapshotId sid) = ("Ebs.SnapshotId", sid)- ebsSource (EbsVolumeSize size) =+ ebsSource (EbsSourceSnapshotId sid) = ("Ebs.SnapshotId", sid)+ ebsSource (EbsSourceVolumeSize size) = ("Ebs.VolumeSize", T.pack $ show size) f n = maybe [] (\a -> [(n, a)]) vtparam Nothing = []- vtparam (Just Standard) = [("Ebs.VolumeType", "standard")]- vtparam (Just (IO1 iops)) =+ vtparam (Just VolumeTypeStandard) =+ [("Ebs.VolumeType", "standard")]+ vtparam (Just (VolumeTypeIO1 iops)) = [ ("Ebs.VolumeType", "io1") , ("Ebs.Iops", T.pack $ show iops) ]
AWS/EC2/Query.hs view
@@ -9,6 +9,7 @@ #endif , ec2Delete , module AWS.Lib.Query+ , apiVersion ) where import Data.ByteString (ByteString)@@ -38,8 +39,8 @@ import qualified Data.Conduit.Binary as CB #endif -ec2Version :: ByteString-ec2Version = "2012-10-01"+apiVersion :: ByteString+apiVersion = "2012-10-01" sinkRequestId :: MonadThrow m => GLSink Event m Text@@ -95,7 +96,7 @@ cred <- Reader.ask ctx <- State.get (src1, rid) <- lift $ do- response <- requestQuery cred ctx action params' ec2Version sinkError+ response <- requestQuery cred ctx action params' apiVersion sinkError res <- response $=+ XmlP.parseBytes XmlP.def res $$++ sinkRequestId State.put ctx{lastRequestId = Just rid}@@ -117,7 +118,7 @@ cred <- Reader.ask ctx <- State.get lift $ do- response <- requestQuery cred ctx action params ec2Version sinkError+ response <- requestQuery cred ctx action params apiVersion sinkError (res, _) <- unwrapResumable response res $$ CB.sinkFile "debug.txt" >>= fail "debug" #endif
AWS/EC2/RouteTable.hs view
@@ -57,8 +57,8 @@ <*> getMT "instanceId" <*> getMT "instanceOwnerId" <*> getMT "networkInterfaceId"- <*> getF "state" routeState- <*> getM "origin" (routeOrigin <$>)+ <*> getF "state" routeState'+ <*> getM "origin" (routeOrigin' <$>) routeTableAssociationSink :: MonadThrow m => GLSink Event m [RouteTableAssociation]
AWS/EC2/SecurityGroup.hs view
@@ -87,8 +87,8 @@ $ getF "return" textToBool p :: SecurityGroupRequest -> QueryParam-p (GroupId t) = ValueParam "GroupId" t-p (GroupName t) = ValueParam "GroupName" t+p (SecurityGroupRequestGroupId t) = ValueParam "GroupId" t+p (SecurityGroupRequestGroupName t) = ValueParam "GroupName" t -- | not tested authorizeSecurityGroupIngress@@ -107,7 +107,7 @@ -> EC2 m Bool authorizeSecurityGroupEgress gid = securityGroupQuery "AuthorizeSecurityGroupEgress"- $ GroupId gid+ $ SecurityGroupRequestGroupId gid -- | not tested revokeSecurityGroupIngress@@ -126,7 +126,7 @@ -> EC2 m Bool revokeSecurityGroupEgress gid = securityGroupQuery "RevokeSecurityGroupEgress"- $ GroupId gid+ $ SecurityGroupRequestGroupId gid securityGroupQuery :: (MonadResource m, MonadBaseControl IO m)@@ -145,23 +145,29 @@ ipPermissionParam :: Int -> IpPermission -> [QueryParam] ipPermissionParam num ipp =- [ValueParam (pre <> ".IpProtocol") $ ippIpProtocol ipp]+ [ValueParam (pre <> ".IpProtocol") $+ ipPermissionIpProtocol ipp] ++ (uncurry (mk pre) =<<- [ (".FromPort", toText <$> ippFromPort ipp)- , (".ToPort", toText <$> ippToPort ipp)+ [ (".FromPort", toText <$> ipPermissionFromPort ipp)+ , (".ToPort", toText <$> ipPermissionToPort ipp) ])- ++ map (uncurry ipr) (zip intstr $ ippIpRanges ipp)- ++ concatMap (uncurry grp) (zip intstr $ ippGroups ipp)+ ++ map+ (uncurry ipr)+ (zip intstr $ ipPermissionIpRanges ipp)+ ++ concatMap+ (uncurry grp)+ (zip intstr $ ipPermissionGroups ipp) where pre = "IpPermissions." <> toText num mk h name = maybe [] (\a -> [ValueParam (h <> name) a]) grph n = pre <> ".Groups." <> toText n grp n g = - [ ValueParam (grph n <> ".GroupId") $ uigpGroupId g+ [ ValueParam (grph n <> ".GroupId") $+ userIdGroupPairGroupId g ] ++ (uncurry (mk (grph n)) =<<- [ (".UserId", uigpUserId g)- , (".GroupName", uigpGroupName g)+ [ (".UserId", userIdGroupPairUserId g)+ , (".GroupName", userIdGroupPairGroupName g) ]) ipr n r = ValueParam (pre <> ".IPRanges." <> toText n <> ".CidrIp")- $ iprCidrIp r+ $ ipRangeCidrIp r
AWS/EC2/Snapshot.hs view
@@ -43,7 +43,7 @@ snapshotSink = Snapshot <$> getT "snapshotId" <*> getT "volumeId"- <*> getF "status" snapshotStatus+ <*> getF "status" snapshotStatus' <*> getF "startTime" textToTime <*> getT "progress" <*> getT "ownerId"
AWS/EC2/Subnets.hs view
@@ -40,7 +40,7 @@ => GLSink Event m Subnet subnetSink = Subnet <$> getT "subnetId"- <*> getF "state" subnetState+ <*> getF "state" subnetState' <*> getT "vpcId" <*> getT "cidrBlock" <*> getF "availableIpAddressCount" textToInt
AWS/EC2/Tag.hs view
@@ -35,7 +35,7 @@ createTags :: (MonadResource m, MonadBaseControl IO m) => [Text] -- ^ ResourceId (instance-id, image-id,..)- -> [(Text, Text)]+ -> [(Text, Text)] -- ^ (Key, Value) -> EC2 m Bool createTags rids kvs = ec2Query "CreateTags" params returnBool@@ -61,7 +61,7 @@ ++ concatMap (uncurry tagParam) (zip ([1..]::[Int]) tags) tagParam n tag = [ ValueParam ("Tag." <> toText n <> ".Key")- $ resourceKey tag ]+ $ resourceTagKey tag ] ++ maybe [] (\a -> [ValueParam ("Tag." <> toText n <> ".Value") a])- (resourceValue tag)+ (resourceTagValue tag)
AWS/EC2/Types.hs view
@@ -1,7 +1,9 @@ module AWS.EC2.Types ( Address(..) , AddressDomain(..)- , AllocateAddressResponse(..)+ , AllocateAddress(..)+ , AMIAttribute(..)+ , AMIAttributeDescription(..) , Architecture(..) , AssociateAddressRequest(..) , Attachment(..)@@ -20,6 +22,7 @@ , CustomerGatewayState(..) , DisassociateAddressRequest(..) , EbsBlockDevice(..)+ , EbsInstanceBlockDevice(..) , EbsSource(..) , EC2Return(..) , Group(..)@@ -33,7 +36,6 @@ , InstanceAttribute(..) , InstanceAttributeRequest(..) , InstanceBlockDeviceMapping(..)- , InstanceEbsBlockDevice(..) , InstanceLifecycle(..) , InstanceMonitoringState(..) , InstanceNetworkInterface(..)@@ -52,6 +54,7 @@ , IpRange(..) , KeyPair(..) , ModifyInstanceAttributeRequest(..)+ , LaunchPermissionItem(..) , NetworkAcl(..) , NetworkAclAssociation(..) , NetworkAclEntry(..)@@ -65,6 +68,7 @@ , Platform(..) , PortRange(..) , ProductCode(..)+ , ProductCodeItem(..) , ProductCodeType(..) , Region(..) , RegisterImageRequest(..)@@ -117,7 +121,6 @@ , InternetGatewayAttachmentState(..) ) where -import Data.Default (Default(..)) import Data.Text (Text) import Data.ByteString (ByteString) import Data.Time (UTCTime)@@ -127,12 +130,12 @@ , imageLocation :: Text , imageImageState :: ImageState , imageOwnerId :: Text- , isPublic :: Bool+ , imageIsPublic :: Bool , imageProductCodes :: [ProductCode] , imageArchitecture :: Text , imageImageType :: ImageType- , kernelId :: Maybe Text- , ramdiskId :: Maybe Text+ , imageKernelId :: Maybe Text+ , imageRamdiskId :: Maybe Text , imagePlatform :: Platform , imageStateReason :: Maybe StateReason , imageViridianEnabled :: Maybe Bool@@ -142,38 +145,72 @@ , imageBillingProducts :: [Text] , imageRootDeviceType :: RootDeviceType , imageRootDeviceName :: Maybe Text- , blockDeviceMappings :: [BlockDeviceMapping]+ , imageBlockDeviceMappings :: [BlockDeviceMapping] , imageVirtualizationType :: VirtualizationType , imageTagSet :: [ResourceTag] , imageHypervisor :: Hypervisor } deriving (Show, Eq) +data AMIAttribute+ = AMIDescription+ | AMIKernel+ | AMIRamdisk+ | AMILaunchPermission+ | AMIProductCodes+ | AMIBlockDeviceMapping+ deriving (Show, Eq)++data AMIAttributeDescription = AMIAttributeDescription+ { amiAttributeDescriptionImageId :: Text+ , amiAttributeDescriptionLaunchPermission :: [LaunchPermissionItem]+ , amiAttributeDescriptionProductCodes :: [ProductCodeItem]+ , amiAttributeDescriptionKernel :: Maybe Text+ , amiAttributeDescriptionRamdisk :: Maybe Text+ , amiAttributeDescriptionDescription :: Maybe Text+ , amiAttributeDescriptionBlockDeviceMapping :: [BlockDeviceMapping]+ }+ deriving (Show, Eq)++data LaunchPermissionItem = LaunchPermissionItem+ { launchPermissionItemGroup :: Text+ , launchPermissionUserId :: Text+ }+ deriving (Show, Eq)+ data ImageState- = ImageAvailable- | ImagePending- | ImageFailed+ = ImageStateAvailable+ | ImageStatePending+ | ImageStateFailed deriving (Show, Eq) data ProductCode = ProductCode- { pcCode :: Text- , pcType :: ProductCodeType+ { productCodeCode :: Text+ , productCodeType :: ProductCodeType } deriving (Show, Eq) -data ProductCodeType = Devpay- | Marketplace+data ProductCodeItem = ProductCodeItem+ { productCodeItemProductCode :: Text+ } deriving (Show, Eq) -data ImageType = Machine- | Kernel- | RamDisk+data ProductCodeType+ = ProductCodeDevpay+ | ProductCodeMarketplace deriving (Show, Eq) -data Platform = Windows- | Other+data ImageType+ = ImageTypeMachine+ | ImageTypeKernel+ | ImageTypeRamDisk deriving (Show, Eq) +data Platform+ = PlatformWindows+ | PlatformOther+ deriving (Show, Eq)+ data StateReason = StateReason { stateReasonCode :: Text , stateReasonMessage :: Text@@ -181,14 +218,14 @@ deriving (Show, Eq) data RootDeviceType- = EBS- | InstanceStore+ = RootDeviceTypeEBS+ | RootDeviceTypeInstanceStore deriving (Show, Eq) data BlockDeviceMapping = BlockDeviceMapping- { deviceName :: Text- , virtualName :: Maybe Text- , ebs :: Maybe EbsBlockDevice+ { blockDeviceMappingDeviceName :: Text+ , blockDeviceMappingVirtualName :: Maybe Text+ , blockDeviceMappingEbs :: Maybe EbsBlockDevice } deriving (Show, Eq) @@ -200,26 +237,25 @@ } deriving (Show, Eq) -data VolumeType = Standard- | IO1 Int+data VolumeType+ = VolumeTypeStandard+ | VolumeTypeIO1 Int deriving (Show, Eq) -instance Default VolumeType- where- def = Standard--data VirtualizationType = Paravirtual- | HVM+data VirtualizationType+ = VirtualizationTypeParavirtual+ | VirtualizationTypeHVM deriving (Show, Eq) data ResourceTag = ResourceTag- { resourceKey :: Text- , resourceValue :: Maybe Text+ { resourceTagKey :: Text+ , resourceTagValue :: Maybe Text } deriving (Show, Eq) -data Hypervisor = OVM- | Xen+data Hypervisor+ = HypervisorOVM+ | HypervisorXen deriving (Show, Eq) data Region = Region@@ -232,7 +268,7 @@ { zoneName :: Text , zoneState :: Text , zoneRegionName :: Text- , messageSet :: [AvailabilityZoneMessage]+ , zoneMessageSet :: [AvailabilityZoneMessage] } deriving (Show, Eq) @@ -240,10 +276,10 @@ data Reservation = Reservation { reservationId :: Text- , ownerId :: Text- , groupSet :: [Group]- , instanceSet :: [Instance]- , requesterId :: Maybe Text+ , reservationOwnerId :: Text+ , reservationGroupSet :: [Group]+ , reservationInstanceSet :: [Instance]+ , reservationRequesterId :: Maybe Text } deriving (Show, Eq) @@ -251,84 +287,84 @@ { instanceId :: Text , instanceImageId :: Text , instanceState :: InstanceState- , privateDnsName :: Text- , dnsName :: Text- , reason :: Text+ , instancePrivateDnsName :: Text+ , instanceDnsName :: Text+ , instanceReason :: Text , instanceKeyName :: Maybe Text- , amiLaunchIndex :: Text+ , instanceAmiLaunchIndex :: Text , instanceProductCodes :: [ProductCode] , instanceType :: Text- , launchTime :: UTCTime+ , instanceLaunchTime :: UTCTime , instancePlacement :: Placement , instanceKernelId :: Maybe Text , instanceRamdiskId :: Maybe Text , instancePlatform :: Maybe Text , instanceMonitoring :: InstanceMonitoringState- , subnetId :: Maybe Text+ , instanceSubnetId :: Maybe Text , instanceVpcId :: Maybe Text- , privateIpAddress :: Maybe Text- , ipAddress :: Maybe Text- , sourceDestCheck :: Maybe Bool- , vpcGroupSet :: [Group]+ , instancePrivateIpAddress :: Maybe Text+ , instanceIpAddress :: Maybe Text+ , instanceSourceDestCheck :: Maybe Bool+ , instancevpcGroupSet :: [Group] , instanceStateReason :: Maybe StateReason , instanceArchitecture :: Architecture , instanceRootDeviceType :: RootDeviceType , instanceRootDeviceName :: Maybe Text , instanceBlockDeviceMappings :: [InstanceBlockDeviceMapping] , instanceInstanceLifecycle :: InstanceLifecycle- , spotInstanceRequestId :: Maybe Text+ , instanceSpotInstanceRequestId :: Maybe Text , instanceVirtualizationType :: VirtualizationType- , clientToken :: Text+ , instanceClientToken :: Text , instanceTagSet :: [ResourceTag] , instanceHypervisor :: Hypervisor , instanceNetworkInterfaceSet :: [InstanceNetworkInterface] , instanceIamInstanceProfile :: Maybe IamInstanceProfile- , ebsOptimized :: Bool -- default: false+ , instanceEbsOptimized :: Bool -- default: false } deriving (Show, Eq) data InstanceStatus = InstanceStatus- { isInstanceId :: Text- , isAvailabilityZone :: Text- , isEventsSet :: [InstanceStatusEvent]- , isInstanceState :: InstanceState- , isSystemStatus :: InstanceStatusType- , isInstanceStatus :: InstanceStatusType+ { instanceStatusInstanceId :: Text+ , instanceStatusAvailabilityZone :: Text+ , instanceStatusEventsSet :: [InstanceStatusEvent]+ , instanceStatusInstanceState :: InstanceState+ , instanceStatusSystemStatus :: InstanceStatusType+ , instanceStatusInstanceStatus :: InstanceStatusType } deriving (Show, Eq) data InstanceStatusEvent = InstanceStatusEvent- { iseCode :: InstanceStatusEventCode- , iseDescription :: Text- , iseNotBefore :: Maybe UTCTime- , iseNotAfter :: Maybe UTCTime+ { instanceStatusEventCode :: InstanceStatusEventCode+ , instanceStatusEventDescription :: Text+ , instanceStatusEventNotBefore :: Maybe UTCTime+ , instanceStatusEventNotAfter :: Maybe UTCTime } deriving (Show, Eq) data InstanceStatusEventCode- = InstanceReboot- | InstanceStop- | SystemReboot- | InstanceRetirement+ = InstanceStatusEventCodeInstanceReboot+ | InstanceStatusEventCodeInstanceStop+ | InstanceStatusEventCodeSystemReboot+ | InstanceStatusEventCodeInstanceRetirement deriving (Show, Eq) data InstanceStatusType = InstanceStatusType- { isdStatus :: InstanceStatusTypeStatus- , isdDetails :: [InstanceStatusDetail]+ { instanceStatusTypeStatus :: InstanceStatusTypeStatus+ , instanceStatusTypeDetails :: [InstanceStatusDetail] } deriving (Show, Eq) data InstanceStatusTypeStatus- = InstanceStatusOK- | InstanceStatusImpaired- | InstanceStatusInsufficientData- | InstanceStatusNotApplicable+ = InstanceStatusTypeStatusOK+ | InstanceStatusTypeStatusImpaired+ | InstanceStatusTypeStatusInsufficientData+ | InstanceStatusTypeStatusNotApplicable deriving (Show, Eq) data InstanceStatusDetail = InstanceStatusDetail- { isddName :: InstanceStatusDetailName- , isddStatus :: InstanceStatusDetailStatus- , isddImpairedSince :: Maybe UTCTime+ { instanceStatusDetailName :: InstanceStatusDetailName+ , instanceStatusDetailStatus :: InstanceStatusDetailStatus+ , instanceStatusDetailImpairedSince :: Maybe UTCTime } deriving (Show, Eq) @@ -343,19 +379,19 @@ deriving (Show, Eq) data InstanceState- = Pending- | Running- | ShuttingDown- | Terminated- | Stopping- | Stopped- | UnknownState Int+ = InstanceStatePending+ | InstanceStateRunning+ | InstanceStateShuttingDown+ | InstanceStateTerminated+ | InstanceStateStopping+ | InstanceStateStopped+ | InstanceStateUnknown Int deriving (Show, Eq) data Placement = Placement { placementAvailabilityZone :: Text , placementGroupName :: Text- , tenancy :: Text+ , placementTenancy :: Text } deriving (Show, Eq) @@ -368,106 +404,111 @@ data Architecture = I386 | X86_64 deriving (Show, Eq) data InstanceBlockDeviceMapping = InstanceBlockDeviceMapping- { instanceDeviceName :: Text- , instanceEbs :: InstanceEbsBlockDevice+ { instanceBlockDeviceMappingDeviceName :: Text+ , instanceBlockDeviceMappingEbs :: EbsInstanceBlockDevice } deriving (Show, Eq) -data InstanceEbsBlockDevice = InstanceEbsBlockDevice- { instanceEbsVolumeId :: Text- , instanceEbsState :: AttachmentSetItemResponseStatus- , instanceEbsAttachTime :: UTCTime- , instanceEbsDeleteOnTermination :: Bool+data EbsInstanceBlockDevice = EbsInstanceBlockDevice+ { ebsInstanceBlockDeviceVolumeId :: Text+ , ebsInstanceBlockDeviceState :: AttachmentSetItemResponseStatus+ , ebsInstanceBlockDeviceAttachTime :: UTCTime+ , ebsInstanceBlockDeviceDeleteOnTermination :: Bool } deriving (Show, Eq) -data InstanceLifecycle = LifecycleSpot | LifecycleNone+data InstanceLifecycle+ = LifecycleSpot+ | LifecycleNone deriving (Show, Eq) data InstanceNetworkInterface = InstanceNetworkInterface { instanceNetworkInterfaceId :: Text- , iniSubnetId :: Text- , iniVpcId :: Text- , iniDescription :: Text- , iniOwnerId :: Text- , iniStatus :: Text- , iniPrivateIpAddress :: Text- , iniPrivateDnsName :: Maybe Text- , iniSourceDestCheck :: Bool- , iniGroupSet :: [Group]- , iniAttachment :: NetworkInterfaceAttachment- , iniAssociation :: Maybe NetworkInterfaceAssociation- , iniPrivateIpAddressSet :: [InstancePrivateIpAddress]+ , instanceNetworkInterfaceSubnetId :: Text+ , instanceNetworkInterfaceVpcId :: Text+ , instanceNetworkInterfaceDescription :: Text+ , instanceNetworkInterfaceOwnerId :: Text+ , instanceNetworkInterfaceStatus :: Text+ , instanceNetworkInterfacePrivateIpAddress :: Text+ , instanceNetworkInterfacePrivateDnsName :: Maybe Text+ , instanceNetworkInterfaceSourceDestCheck :: Bool+ , instanceNetworkInterfaceGroupSet :: [Group]+ , instanceNetworkInterfaceAttachment+ :: NetworkInterfaceAttachment+ , instanceNetworkInterfaceAssociation+ :: Maybe NetworkInterfaceAssociation+ , instanceNetworkInterfacePrivateIpAddressSet+ :: [InstancePrivateIpAddress] } deriving (Show, Eq) data NetworkInterfaceAttachment = NetworkInterfaceAttachment- { niatAttachmentId :: Text- , niatDeviceIndex :: Int- , niatStatus :: Text- , niatAttachTime :: UTCTime- , niatDeleteOnTermination :: Bool+ { networkInterfaceAttachmentId :: Text+ , networkInterfaceAttachmentDeviceIndex :: Int+ , networkInterfaceAttachmentStatus :: Text+ , networkInterfaceAttachmentAttachTime :: UTCTime+ , networkInterfaceAttachmentDeleteOnTermination :: Bool } deriving (Show, Eq) data NetworkInterfaceAssociation = NetworkInterfaceAssociation- { niasPublicIp :: Text- , niasIpOwnerId :: Text+ { networkInterfaceAssociationPublicIp :: Text+ , networkInterfaceAssociationIpOwnerId :: Text } deriving (Show, Eq) data InstancePrivateIpAddress = InstancePrivateIpAddress- { iPrivateIpAddress :: Text- , iPrimary :: Bool- , iAssociation :: Maybe NetworkInterfaceAssociation+ { instancePrivateIpAddressAddress :: Text+ , instancePrivateIpAddressPrimary :: Bool+ , instancePrivateIpAddressAssociation :: Maybe NetworkInterfaceAssociation } deriving (Show, Eq) data IamInstanceProfile = IamInstanceProfile- { iipArn :: Text- , iipId :: Text+ { iamInstanceProfileArn :: Text+ , iamInstanceProfileId :: Text } deriving (Show, Eq) data ShutdownBehavior- = SBStop- | SBTerminate+ = ShutdownBehaviorStop+ | ShutdownBehaviorTerminate deriving (Show, Eq) data InstanceAttribute- = IAInstanceType Text- | IAKernelId (Maybe Text)- | IARamdiskId (Maybe Text)- | IAUserData (Maybe Text)- | IADisableApiTermination Bool- | IAShutdownBehavior ShutdownBehavior- | IARootDeviceName (Maybe Text)- | IABlockDeviceMapping [InstanceBlockDeviceMapping]- | IASourceDestCheck (Maybe Bool)- | IAGroupSet [Text]- | IAProductCodes [ProductCode]- | IAEbsOptimized Bool+ = InstanceAttributeInstanceType Text+ | InstanceAttributeKernelId (Maybe Text)+ | InstanceAttributeRamdiskId (Maybe Text)+ | InstanceAttributeUserData (Maybe Text)+ | InstanceAttributeDisableApiTermination Bool+ | InstanceAttributeShutdownBehavior ShutdownBehavior+ | InstanceAttributeRootDeviceName (Maybe Text)+ | InstanceAttributeBlockDeviceMapping [InstanceBlockDeviceMapping]+ | InstanceAttributeSourceDestCheck (Maybe Bool)+ | InstanceAttributeGroupSet [Text]+ | InstanceAttributeProductCodes [ProductCode]+ | InstanceAttributeEbsOptimized Bool deriving (Show, Eq) data Address = Address- { addrPublicIp :: Text- , addrAllocationId :: Maybe Text- , addrDomain :: AddressDomain- , addrInstanceId :: Maybe Text- , addrAssociationId :: Maybe Text- , addrNetworkInterfaceId :: Maybe Text- , addrNetworkInterfaceOwnerId :: Maybe Text- , addrPrivateIpAddress :: Maybe Text+ { addressPublicIp :: Text+ , addressAllocationId :: Maybe Text+ , addressDomain :: AddressDomain+ , addressInstanceId :: Maybe Text+ , addressAssociationId :: Maybe Text+ , addressNetworkInterfaceId :: Maybe Text+ , addressNetworkInterfaceOwnerId :: Maybe Text+ , addressPrivateIpAddress :: Maybe Text } deriving (Show, Eq) data AddressDomain = AddressDomainStandard | AddressDomainVPC deriving (Show, Eq) -data AllocateAddressResponse = AllocateAddressResponse- { alaPublicIp :: Text- , alaDomain :: AddressDomain- , alaAllocationId :: Maybe Text+data AllocateAddress = AllocateAddress+ { allocateAddressPublicIp :: Text+ , allocateAddressDomain :: AddressDomain+ , allocateAddressAllocationId :: Maybe Text } deriving (Show, Eq) @@ -483,395 +524,416 @@ deriving (Show, Eq) data InstanceStateChange = InstanceStateChange- { iscInstanceId :: Text- , iscCurrentState :: InstanceState- , iscPreviousState :: InstanceState+ { instanceStateChangeInstanceId :: Text+ , instanceStateChangeCurrentState :: InstanceState+ , instanceStateChangePreviousState :: InstanceState } deriving (Show, Eq) data ConsoleOutput = ConsoleOutput- { coInstanceId :: Text- , coTimestamp :: UTCTime -- ^ The time the data was last updated.- , coOutput :: Text+ { consoleOutputInstanceId :: Text+ , consoleOutputTimestamp :: UTCTime+ -- ^ The time the data was last updated.+ , consoleOutputOutput :: Text } deriving (Show, Eq) data PasswordData = PasswordData- { pdInstanceId :: Text- , pdTimestamp :: UTCTime -- ^ The time the data was last updated.- , pdPasswordData :: Text+ { passwordDataInstanceId :: Text+ , passwordDataTimestamp :: UTCTime+ -- ^ The time the data was last updated.+ , passwordDataPasswordData :: Text } deriving (Show, Eq) data Snapshot = Snapshot { snapshotId :: Text- , ssVolumeId :: Text- , ssStatus :: SnapshotStatus- , ssStartTime :: UTCTime- , ssProgress :: Text- , ssOwnerId :: Text- , ssVolumeSize :: Int- , ssDescription :: Text- , ssOwnerAlias :: Maybe Text- , ssTagSet :: [ResourceTag]+ , snapshotVolumeId :: Text+ , snapshotStatus :: SnapshotStatus+ , snapshotStartTime :: UTCTime+ , snapshotProgress :: Text+ , snapshotOwnerId :: Text+ , snapshotVolumeSize :: Int+ , snapshotDescription :: Text+ , snapshotOwnerAlias :: Maybe Text+ , snapshotTagSet :: [ResourceTag] } deriving (Show, Eq) -data SnapshotStatus = SSPending | SSCompleted | SSError+data SnapshotStatus+ = SnapshotPending+ | SnapshotCompleted+ | SnapshotError deriving (Show, Eq) data Volume = Volume { volumeId :: Text- , volSize :: Int- , volSnapshotId :: Maybe Text- , volAvailabilityZone :: Text- , volStatus :: VolumeState- , volCreateTime :: UTCTime- , volAttachmentSet :: [AttachmentSetItemResponse]- , volTagSet :: [ResourceTag]- , volVolumeType :: VolumeType+ , volumeSize :: Int+ , volumeSnapshotId :: Maybe Text+ , volumeAvailabilityZone :: Text+ , volumeStatus :: VolumeState+ , volumeCreateTime :: UTCTime+ , volumeAttachmentSet :: [AttachmentSetItemResponse]+ , volumeTagSet :: [ResourceTag]+ , volumeVolumeType :: VolumeType } deriving (Show, Eq) data VolumeState- = VolCreating- | VolAvailable- | VolInUse- | VolDeleting- | VolDeleted- | VolError+ = VolumeStateCreating+ | VolumeStateAvailable+ | VolumeStateInUse+ | VolumeStateDeleting+ | VolumeStateDeleted+ | VolumeStateError deriving (Show, Eq) data AttachmentSetItemResponse = AttachmentSetItemResponse- { asirVolumeId :: Text- , asirInstanceId :: Text- , asirDevice :: Text- , asirStatus :: AttachmentSetItemResponseStatus- , asirAttachTime :: UTCTime- , asirDeleteOnTermination :: Maybe Bool+ { attachmentSetItemResponseVolumeId :: Text+ , attachmentSetItemResponseInstanceId :: Text+ , attachmentSetItemResponseDevice :: Text+ , attachmentSetItemResponseStatus+ :: AttachmentSetItemResponseStatus+ , attachmentSetItemResponseAttachTime :: UTCTime+ , attachmentSetItemResponseDeleteOnTermination :: Maybe Bool } deriving (Show, Eq) data AttachmentSetItemResponseStatus- = AsirAttaching- | AsirAttached- | AsirDetaching- | AsirDetached+ = AttachmentSetItemResponseStatusAttaching+ | AttachmentSetItemResponseStatusAttached+ | AttachmentSetItemResponseStatusDetaching+ | AttachmentSetItemResponseStatusDetached deriving (Show, Eq) data KeyPair = KeyPair- { keyName :: Text- , keyFingerprint :: Text+ { keyPairName :: Text+ , keyPairFingerprint :: Text } deriving (Show, Eq) data SecurityGroup = SecurityGroup- { sgOwnerId :: Text- , sgGroupId :: Text- , sgGroupName :: Text- , sgGroupDescription :: Text- , sgVpcId :: Maybe Text- , sgIpPermissions :: [IpPermission]- , sgIpPermissionsEgress :: [IpPermission]- , sgTagSet :: [ResourceTag]+ { securityGroupOwnerId :: Text+ , securityGroupId :: Text+ , securityGroupName :: Text+ , securityGroupDescription :: Text+ , securityGroupVpcId :: Maybe Text+ , securityGroupIpPermissions :: [IpPermission]+ , securityGroupIpPermissionsEgress :: [IpPermission]+ , securityGroupTagSet :: [ResourceTag] } deriving (Show, Eq) data IpPermission = IpPermission- { ippIpProtocol :: Text- , ippFromPort :: Maybe Int- , ippToPort :: Maybe Int- , ippGroups :: [UserIdGroupPair]- , ippIpRanges :: [IpRange]+ { ipPermissionIpProtocol :: Text+ , ipPermissionFromPort :: Maybe Int+ , ipPermissionToPort :: Maybe Int+ , ipPermissionGroups :: [UserIdGroupPair]+ , ipPermissionIpRanges :: [IpRange] } deriving (Show, Eq) data UserIdGroupPair = UserIdGroupPair- { uigpUserId :: Maybe Text- , uigpGroupId :: Text- , uigpGroupName :: Maybe Text+ { userIdGroupPairUserId :: Maybe Text+ , userIdGroupPairGroupId :: Text+ , userIdGroupPairGroupName :: Maybe Text } deriving (Show, Eq) data IpRange = IpRange- { iprCidrIp :: Text+ { ipRangeCidrIp :: Text } deriving (Show, Eq) data BlockDeviceMappingParam- = BlockDeviceMappingParamEBS- { bdmpEbsDeviceName :: Text- , bdmpEbsNoDevice :: Maybe Bool- , bdmpEbsSource :: EbsSource- , bdmpEbsDeleteOnTermination :: Maybe Bool- , bdmpEbsVolumeType :: Maybe VolumeType+ = BlockDeviceMappingParamEbs+ { blockDeviceMappingParamEbsDeviceName :: Text+ , blockDeviceMappingParamEbsNoDevice :: Maybe Bool+ , blockDeviceMappingParamEbsSource :: EbsSource+ , blockDeviceMappingParamEbsDeleteOnTermination+ :: Maybe Bool+ , blockDeviceMappingParamEbsVolumeType :: Maybe VolumeType } | BlockDeviceMappingParamInstanceStore- { bdmpIsDeviceName :: Text- , bdmpIsNoDevice :: Maybe Bool- , bdmpIsVirtualName :: Maybe Text+ { blockDeviceMappingParamInstanceStoreDeviceName :: Text+ , blockDeviceMappingParamInstanceStoreNoDevice+ :: Maybe Bool+ , blockDeviceMappingParamInstanceStoreVirtualName+ :: Maybe Text } deriving (Show, Eq) data EbsSource- = EbsSnapshotId Text- | EbsVolumeSize Int+ = EbsSourceSnapshotId Text+ | EbsSourceVolumeSize Int deriving (Show, Eq) data NetworkInterfaceParam = NetworkInterfaceParam- { nipInterfaceId :: Maybe Text- , nipDeviceIndex :: Maybe Text- , nipSubnetId :: Maybe Text- , nipDescription :: Maybe Text- , nipPrivateIpAddresses :: [Text]- , nipSecurityGroupIds :: [Text]- , nipDeleteOnTermination :: Maybe Bool+ { networkInterfaceParamInterfaceId :: Maybe Text+ , networkInterfaceParamDeviceIndex :: Maybe Text+ , networkInterfaceParamSubnetId :: Maybe Text+ , networkInterfaceParamDescription :: Maybe Text+ , networkInterfaceParamPrivateIpAddresses :: [Text]+ , networkInterfaceParamSecurityGroupIds :: [Text]+ , networkInterfaceParamDeleteOnTermination :: Maybe Bool } deriving (Show, Eq) data VpnConnection = VpnConnection { vpnConnectionId :: Text- , vcState :: VpnConnectionState- , vcCustomerGatewayConfiguration :: Text- , vcType :: Text- , vcCustomerGatewayId :: Text- , vcVpnGatewayId :: Text- , vcTagSet :: [ResourceTag]- , vcVgwTelemetry :: [VpnTunnelTelemetry]- , vcOptions :: Maybe VpnConnectionOptionsRequest- , vcRoutes :: Maybe VpnStaticRoute+ , vpnConnectionState :: VpnConnectionState+ , vpnConnectionCustomerGatewayConfiguration :: Text+ , vpnConnectionType :: Text+ , vpnConnectionCustomerGatewayId :: Text+ , vpnConnectionVpnGatewayId :: Text+ , vpnConnectionTagSet :: [ResourceTag]+ , vpnConnectionVgwTelemetry :: [VpnTunnelTelemetry]+ , vpnConnectionOptions :: Maybe VpnConnectionOptionsRequest+ , vpnConnectionRoutes :: Maybe VpnStaticRoute } deriving (Show, Eq) data VpnConnectionState- = VCSPending- | VCSAvailable- | VCSDeleting- | VCSDeleted+ = VpnConnectionStatePending+ | VpnConnectionStateAvailable+ | VpnConnectionStateDeleting+ | VpnConnectionStateDeleted deriving (Show, Eq) data VpnTunnelTelemetry = VpnTunnelTelemetry- { vttOutsideIpAddress :: Text- , vttStatus :: VpnTunnelTelemetryStatus- , vttLastStatusChange :: UTCTime- , vttStatusMessage :: Text- , vttAcceptRouteCount :: Int+ { vpnTunnelTelemetryOutsideIpAddress :: Text+ , vpnTunnelTelemetryStatus :: VpnTunnelTelemetryStatus+ , vpnTunnelTelemetryLastStatusChange :: UTCTime+ , vpnTunnelTelemetryStatusMessage :: Text+ , vpnTunnelTelemetryAcceptRouteCount :: Int } deriving (Show, Eq) data VpnTunnelTelemetryStatus- = VTTSUp- | VTTSDown+ = VpnTunnelTelemetryStatusUp+ | VpnTunnelTelemetryStatusDown deriving (Show, Eq) data VpnConnectionOptionsRequest = VpnConnectionOptionsRequest- { staticRoutesOnly :: Bool+ { vpnConnectionOptionsRequestStaticRoutesOnly :: Bool } deriving (Show, Eq) data VpnStaticRoute = VpnStaticRoute- { vsrDestinationCidrBlock :: Text- , vsrSource :: VpnStaticRouteSource- , vsrState :: VpnStaticRouteState+ { vpnStaticRouteDestinationCidrBlock :: Text+ , vpnStaticRouteSource :: VpnStaticRouteSource+ , vpnStaticRouteState :: VpnStaticRouteState } deriving (Show, Eq) -data VpnStaticRouteSource = VSRStatic+data VpnStaticRouteSource = VpnStaticRouteSourceStatic deriving (Show, Eq) data VpnStaticRouteState- = VSRSPending- | VSRSAvailable- | VSRSDeleting- | VSRSDeleted+ = VpnStaticRouteStatePending+ | VpnStaticRouteStateAvailable+ | VpnStaticRouteStateDeleting+ | VpnStaticRouteStateDeleted deriving (Show, Eq) data RunInstancesRequest = RunInstancesRequest- { riImageId :: Text -- ^ Required- , riMinCount :: Int -- ^ Required- , riMaxCount :: Int -- ^ Required- , riKeyName :: Maybe Text- , riSecurityGroupIds :: [Text]+ { runInstancesRequestImageId :: Text -- ^ Required+ , runInstancesRequestMinCount :: Int -- ^ Required+ , runInstancesRequestMaxCount :: Int -- ^ Required+ , runInstancesRequestKeyName :: Maybe Text+ , runInstancesRequestSecurityGroupIds :: [Text] -- ^ SecurityGroupIds (Required for VPC; optional for EC2)- , riSecurityGroups :: [Text]+ , runInstancesRequestSecurityGroups :: [Text] -- ^ SecurityGroups (Only for EC2; either id or name is accepted)- , riUserData :: Maybe ByteString+ , runInstancesRequestUserData :: Maybe ByteString -- ^ UserData (Base64-encoded MIME user data)- , riInstanceType :: Maybe Text- , riAvailabilityZone :: Maybe Text- , riPlacementGroup :: Maybe Text- , riTenancy :: Maybe Text- , riKernelId :: Maybe Text- , riRamdiskId :: Maybe Text- , riBlockDeviceMappings :: [BlockDeviceMappingParam]- , riMonitoringEnabled :: Maybe Bool- , riSubnetId :: Maybe Text- , riDisableApiTermination :: Maybe Bool- , riShutdownBehavior :: Maybe ShutdownBehavior- , riPrivateIpAddresses :: [Text] -- ^ XXX: not implemented- , riClientToken :: Maybe Text- , riNetworkInterface :: [NetworkInterfaceParam] -- ^ XXX: not implemented- , riIamInstanceProfile :: Maybe IamInstanceProfile- , riEbsOptimized :: Maybe Bool+ , runInstancesRequestInstanceType :: Maybe Text+ , runInstancesRequestAvailabilityZone :: Maybe Text+ , runInstancesRequestPlacementGroup :: Maybe Text+ , runInstancesRequestTenancy :: Maybe Text+ , runInstancesRequestKernelId :: Maybe Text+ , runInstancesRequestRamdiskId :: Maybe Text+ , runInstancesRequestBlockDeviceMappings+ :: [BlockDeviceMappingParam]+ , runInstancesRequestMonitoringEnabled :: Maybe Bool+ , runInstancesRequestSubnetId :: Maybe Text+ , runInstancesRequestDisableApiTermination :: Maybe Bool+ , runInstancesRequestShutdownBehavior+ :: Maybe ShutdownBehavior+ , runInstancesRequestPrivateIpAddress :: Maybe Text+ , runInstancesRequestClientToken :: Maybe Text+ , runInstancesRequestNetworkInterface+ :: [NetworkInterfaceParam] -- ^ XXX: not implemented+ , runInstancesRequestIamInstanceProfile+ :: Maybe IamInstanceProfile+ , runInstancesRequestEbsOptimized :: Maybe Bool } deriving (Show, Eq) data InstanceAttributeRequest- = IARInstanceType- | IARKernelId- | IARRamdiskId- | IARUserData- | IARDisableApiTermination- | IARShutdownBehavior- | IARRootDeviceName- | IARBlockDeviceMapping- | IARSourceDestCheck- | IARGroupSet- | IARProductCodes- | IAREbsOptimized+ = InstanceAttributeRequestInstanceType+ | InstanceAttributeRequestKernelId+ | InstanceAttributeRequestRamdiskId+ | InstanceAttributeRequestUserData+ | InstanceAttributeRequestDisableApiTermination+ | InstanceAttributeRequestShutdownBehavior+ | InstanceAttributeRequestRootDeviceName+ | InstanceAttributeRequestBlockDeviceMapping+ | InstanceAttributeRequestSourceDestCheck+ | InstanceAttributeRequestGroupSet+ | InstanceAttributeRequestProductCodes+ | InstanceAttributeRequestEbsOptimized deriving (Show, Eq, Ord) data ResetInstanceAttributeRequest- = RIAPKernel- | RIAPRamdisk- | RIAPSourceDestCheck+ = ResetInstanceAttributeRequestKernel+ | ResetInstanceAttributeRequestRamdisk+ | ResetInstanceAttributeRequestSourceDestCheck deriving (Show, Eq) data ModifyInstanceAttributeRequest- = MIAPInstanceType Text- | MIAPKernelId Text- | MIAPRamdiskId Text- | MIAPUserData Text- | MIAPDisableApiTermination Bool- | MIAPShutdownBehavior ShutdownBehavior- | MIAPRootDeviceName Text- | MIAPBlockDeviceMapping [BlockDeviceMappingParam]- | MIAPSourceDestCheck Bool- | MIAPGroupSet [Text]- | MIAPEbsOptimized Bool+ = ModifyInstanceAttributeRequestInstanceType Text+ | ModifyInstanceAttributeRequestKernelId Text+ | ModifyInstanceAttributeRequestRamdiskId Text+ | ModifyInstanceAttributeRequestUserData Text+ | ModifyInstanceAttributeRequestDisableApiTermination Bool+ | ModifyInstanceAttributeRequestShutdownBehavior+ ShutdownBehavior+ | ModifyInstanceAttributeRequestRootDeviceName Text+ | ModifyInstanceAttributeRequestBlockDeviceMapping+ [BlockDeviceMappingParam]+ | ModifyInstanceAttributeRequestSourceDestCheck Bool+ | ModifyInstanceAttributeRequestGroupSet [Text]+ | ModifyInstanceAttributeRequestEbsOptimized Bool deriving (Show, Eq) data RegisterImageRequest = RegisterImageRequest- { rirName :: Text- , rirImageLocation :: Maybe Text- , rirDescription :: Maybe Text- , rirArchitecture :: Maybe Text- , rirKernelId :: Maybe Text- , rirRamdiskId :: Maybe Text- , rirRootDeviceName :: Maybe Text- , rirBlockDeviceMappings :: [BlockDeviceMappingParam]+ { registerImageRequestName :: Text+ , registerImageRequestImageLocation :: Maybe Text+ , registerImageRequestDescription :: Maybe Text+ , registerImageRequestArchitecture :: Maybe Text+ , registerImageRequestKernelId :: Maybe Text+ , registerImageRequestRamdiskId :: Maybe Text+ , registerImageRequestRootDeviceName :: Maybe Text+ , registerImageRequestBlockDeviceMappings+ :: [BlockDeviceMappingParam] } deriving (Show, Eq) data CreateVolumeRequest = CreateNewVolume- { cnvSize :: Int- , cnvAvailabilityZone :: Text- , cnvVolumeType :: Maybe VolumeType+ { createNewVolumeSize :: Int+ , createNewVolumeAvailabilityZone :: Text+ , createNewVolumeVolumeType :: Maybe VolumeType } | CreateFromSnapshot- { cfsSnapshotId :: Text- , cfsAvailabilityZone :: Text- , cfsSize :: Maybe Int- , cfsVolumeType :: Maybe VolumeType+ { createFromSnapshotSnapshotId :: Text+ , createFromSnapshotAvailabilityZone :: Text+ , createFromSnapshotSize :: Maybe Int+ , createFromSnapshotVolumeType :: Maybe VolumeType } deriving (Show, Eq) data AssociateAddressRequest- = AAEC2Instance- { aaec2PublicIp :: Text- , aaec2InstanceId :: Text+ = AssociateAddressRequestEc2+ { associateAddressRequestEc2PublicIp :: Text+ , associateAddressRequestEc2InstanceId :: Text }- | AAVPCInstance- { aavpcAllocationId :: Text- , aavpcInstanceId :: Maybe Text- , aavpcNetworkInterfaceId :: Maybe Text- , aavpcPrivateIpAddress :: Maybe Text- , aavpcAllowReassociation :: Maybe Bool+ | AssociateAddressRequestVpc+ { associateAddressRequestVpcAllocationId :: Text+ , associateAddressRequestVpcInstanceId :: Maybe Text+ , associateAddressRequestVpcNetworkInterfaceId+ :: Maybe Text+ , associateAddressRequestVpcPrivateIpAddress :: Maybe Text+ , associateAddressRequestVpcAllowReassociation+ :: Maybe Bool } deriving (Show, Eq) data DisassociateAddressRequest- = DAEC2 Text -- ^ PublicIp for EC2- | DAVPC Text -- ^ AssociationId for VPC+ = DisassociateAddressRequestEc2 Text -- ^ PublicIp for EC2+ | DisassociateAddressRequestVpc Text+ -- ^ AssociationId for VPC deriving (Show, Eq) -data SecurityGroupRequest = GroupId Text | GroupName Text+data SecurityGroupRequest+ = SecurityGroupRequestGroupId Text+ | SecurityGroupRequestGroupName Text deriving (Show, Eq) data Subnet = Subnet- { snSubnetId :: Text- , snState :: SubnetState- , snVpicId :: Text- , snCidrBlock :: Text- , snAvailableIpAddressCount :: Int- , snCAvailabilityZone :: Text- , snTagSet :: [ResourceTag]+ { subnetId :: Text+ , subnetState :: SubnetState+ , subnetVpicId :: Text+ , subnetCidrBlock :: Text+ , subnetAvailableIpAddressCount :: Int+ , subnetAvailabilityZone :: Text+ , subnetTagSet :: [ResourceTag] } deriving (Show, Eq) -data SubnetState = SubnetPending | SubnetAvailable+data SubnetState = SubnetStatePending | SubnetStateAvailable deriving (Show, Eq) data CreateSubnetRequest = CreateSubnetRequest- { csrVpcId :: Text- , csrCidrBlock :: Text- , csrAvailabilityZone :: Maybe Text+ { createSubnetRequestVpcId :: Text+ , createSubnetRequestCidrBlock :: Text+ , createSubnetRequestAvailabilityZone :: Maybe Text } deriving (Show, Eq) data VolumeStatus = VolumeStatus- { vstVolumeId :: Text- , vstAvailabilityZone :: Text- , vstVolumeStatus :: VolumeStatusInfo- , vstEventSet :: [VolumeStatusEvent]- , vstActionSet :: [VolumeStatusAction]+ { volumeStatusVolumeId :: Text+ , volumeStatusAvailabilityZone :: Text+ , volumeStatusVolumeStatus :: VolumeStatusInfo+ , volumeStatusEventSet :: [VolumeStatusEvent]+ , volumeStatusActionSet :: [VolumeStatusAction] } deriving (Show, Eq) data VolumeStatusInfo = VolumeStatusInfo- { vsiStatus :: VolumeStatusInfoStatus- , vsiDetails :: [VolumeStatusDetail]+ { volumeStatusInfoStatus :: VolumeStatusInfoStatus+ , volumeStatusInfoDetails :: [VolumeStatusDetail] } deriving (Show, Eq) data VolumeStatusInfoStatus- = VSIOK- | VSIImpaired- | VSIInsufficientData+ = VolumeStatusInfoStatusOK+ | VolumeStatusInfoStatusImpaired+ | VolumeStatusInfoStatusInsufficientData deriving (Show, Eq) data VolumeStatusDetail = VolumeStatusDetail- { vsdName :: Text- , vsdStatus :: Text+ { volumeStatusDetailName :: Text+ , volumeStatusDetailStatus :: Text } deriving (Show, Eq) data VolumeStatusEvent = VolumeStatusEvent- { vseEventType :: Text- , vseEventId :: Text- , vseDescription :: Text- , vseNotBefore :: Maybe UTCTime- , vseNotAfter :: Maybe UTCTime+ { volumeStatusEventType :: Text+ , volumeStatusEventId :: Text+ , volumeStatusEventDescription :: Text+ , volumeStatusEventNotBefore :: Maybe UTCTime+ , volumeStatusEventNotAfter :: Maybe UTCTime } deriving (Show, Eq) data VolumeStatusAction = VolumeStatusAction- { vsaCode :: Text- , vsaEventType :: Text- , vsaEventId :: Text- , vsaDescription :: Text+ { volumeStatusActionCode :: Text+ , volumeStatusActionEventType :: Text+ , volumeStatusActionEventId :: Text+ , volumeStatusActionDescription :: Text } deriving (Show, Eq) data VolumeAttribute- = VAAutoEnableIO Bool- | VAProductCodes [ProductCode]+ = VolumeAttributeAutoEnableIO Bool+ | VolumeAttributeProductCodes [ProductCode] deriving (Show, Eq) data VolumeAttributeRequest- = VARAutoEnableIO- | VARProductCodes+ = VolumeAttributeRequestAutoEnableIO+ | VolumeAttributeRequestProductCodes deriving (Show, Eq) data NetworkAcl = NetworkAcl@@ -922,7 +984,8 @@ data NetworkAclEntryRequest = NetworkAclEntryRequest { networkAclEntryRequestNetworkAclId :: Text , networkAclEntryRequestRuleNumber :: Int- , networkAclEntryRequestProtocol :: Int -- ^ Protocol Number <http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml>+ , networkAclEntryRequestProtocol :: Int+ -- ^ Protocol Number <http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml> , networkAclEntryRequestRuleAction :: NetworkAclRuleAction , networkAclEntryRequestEgress :: Bool , networkAclEntryRequestCidrBlock :: Text@@ -932,23 +995,23 @@ deriving (Show, Eq) data RouteTable = RouteTable- { rtRouteTableId :: Text- , rtVpcId :: Text- , rtRouteSet :: [Route]- , rtAssociationSet :: [RouteTableAssociation]- , rtPropagatingVgw :: Maybe PropagatingVgw- , rtTagSet :: [ResourceTag]+ { routeTableId :: Text+ , routeTableVpcId :: Text+ , routeTableRouteSet :: [Route]+ , routeTableAssociationSet :: [RouteTableAssociation]+ , routeTablePropagatingVgw :: Maybe PropagatingVgw+ , routeTableTagSet :: [ResourceTag] } deriving (Show, Eq) data Route = Route- { rDestinationCidrBlock :: Text- , rGatewayId :: Maybe Text- , rInstanceId :: Maybe Text- , rInstanceOwnerId :: Maybe Text- , rNetworkInterfaceId :: Maybe Text- , rState :: RouteState- , rOrigin :: Maybe RouteOrigin+ { routeDestinationCidrBlock :: Text+ , routeGatewayId :: Maybe Text+ , routeInstanceId :: Maybe Text+ , routeInstanceOwnerId :: Maybe Text+ , routeNetworkInterfaceId :: Maybe Text+ , routeState :: RouteState+ , routeOrigin :: Maybe RouteOrigin } deriving (Show, Eq) @@ -962,10 +1025,10 @@ deriving (Show, Eq) data RouteTableAssociation = RouteTableAssociation- { rtaRouteTableAssociationId :: Text- , rtaRouteTableId :: Text- , rtaSubnetId :: Maybe Text- , rtaMain :: Maybe Bool+ { routeTableAssociationId :: Text+ , routeTableAssociationRouteTableId :: Text+ , routeTableAssociationSubnetId :: Maybe Text+ , routeTableAssociationMain :: Maybe Bool } deriving (Show, Eq) @@ -1022,7 +1085,7 @@ , customerGatewayType :: Text , customerGatewayIpAddress :: Text , customerGatewayBgpAsn :: Int- , customerGateway :: [ResourceTag]+ , customerGatewayTagSet :: [ResourceTag] } deriving (Show, Eq)
AWS/EC2/Util.hs view
@@ -7,6 +7,7 @@ , eachp , wait , count+ , findTag ) where import Data.Conduit@@ -20,8 +21,10 @@ import qualified Data.Text as T import Control.Applicative import Control.Parallel (par)+import Data.List (find) import AWS.EC2.Internal+import AWS.EC2.Types (ResourceTag(resourceTagKey)) list :: Monad m@@ -100,3 +103,11 @@ else do liftIO $ CC.threadDelay 5 wait f g rid++findTag+ :: Text -- ^ resourceKey+ -> [ResourceTag] -- ^ TagSet+ -> Maybe ResourceTag+findTag key tags = find f tags+ where+ f t = resourceTagKey t == key
AWS/EC2/VPC.hs view
@@ -133,7 +133,7 @@ <$> do a <- getT "vpnConnectionId" traceShow a $ return a- <*> getF "state" vpnConnectionState+ <*> getF "state" vpnConnectionState' <*> getT "customerGatewayConfiguration" <*> getT "type" <*> getT "customerGatewayId"@@ -142,7 +142,7 @@ <*> itemsSet "vgwTelemetry" (VpnTunnelTelemetry <$> getT "outsideIpAddress"- <*> getF "status" vpnTunnelTelemetryStatus+ <*> getF "status" vpnTunnelTelemetryStatus' <*> getF "lastStatusChange" textToTime <*> getT "statusMessage" <*> getF "acceptedRouteCount" textToInt@@ -154,8 +154,8 @@ <*> elementM "routes" (VpnStaticRoute <$> getT "destinationCidrBlock"- <*> getF "source" vpnStaticRouteSource- <*> getF "state" vpnStaticRouteState+ <*> getF "source" vpnStaticRouteSource'+ <*> getF "state" vpnStaticRouteState' ) ------------------------------------------------------------
AWS/EC2/Volume.hs view
@@ -10,6 +10,7 @@ , describeVolumeAttribute , modifyVolumeAttribute ) where+ import Data.Text (Text) import Data.XML.Types (Event)@@ -45,7 +46,7 @@ <*> getF "size" textToInt <*> getMT "snapshotId" <*> getT "availabilityZone"- <*> getF "status" volumeStatus+ <*> getF "status" volumeStatus' <*> getF "createTime" textToTime <*> itemsSet "attachmentSet" attachmentSink <*> resourceTagSink@@ -56,13 +57,14 @@ <$> getT "volumeId" <*> getT "instanceId" <*> getT "device"- <*> getF "status" attachmentSetItemResponseStatus+ <*> getF "status" attachmentSetItemResponseStatus' <*> getF "attachTime" textToTime <*> getM "deleteOnTermination" (textToBool <$>) volumeTypeParam :: VolumeType -> [QueryParam]-volumeTypeParam Standard = [ValueParam "VolumeType" "standard"]-volumeTypeParam (IO1 iops) =+volumeTypeParam VolumeTypeStandard =+ [ValueParam "VolumeType" "standard"]+volumeTypeParam (VolumeTypeIO1 iops) = [ ValueParam "VolumeType" "io1" , ValueParam "Iops" $ toText iops ]@@ -147,7 +149,7 @@ <$> getT "volumeId" <*> getT "availabilityZone" <*> element "volumeStatus" (VolumeStatusInfo- <$> getF "status" volumeStatusInfoStatus+ <$> getF "status" volumeStatusInfoStatus' <*> itemsSet "details" (VolumeStatusDetail <$> getT "name" <*> getT "status"@@ -204,14 +206,17 @@ [ ValueParam "VolumeId" vid , ValueParam "Attribute" $ s attr ]- s VARAutoEnableIO = "autoEnableIO"- s VARProductCodes = "productCodes"+ s VolumeAttributeRequestAutoEnableIO = "autoEnableIO"+ s VolumeAttributeRequestProductCodes = "productCodes" volumeAttributeSink :: MonadThrow m => VolumeAttributeRequest -> GLSink Event m VolumeAttribute-volumeAttributeSink VARAutoEnableIO =- VAAutoEnableIO <$> getF "autoEnableIO" textToBool-volumeAttributeSink VARProductCodes =- VAProductCodes <$> productCodeSink+volumeAttributeSink VolumeAttributeRequestAutoEnableIO+ = VolumeAttributeAutoEnableIO+ <$> element "autoEnableIO"+ (getF "value" textToBool)+volumeAttributeSink VolumeAttributeRequestProductCodes+ = VolumeAttributeProductCodes+ <$> productCodeSink
AWS/ELB/Internal.hs view
@@ -4,14 +4,12 @@ where import Data.ByteString (ByteString)-import Data.Text (Text) import Data.Conduit import Control.Monad.Trans.Control (MonadBaseControl) import Data.XML.Types (Event(..)) import AWS.Class import AWS.Lib.Query-import AWS.Lib.Parser apiVersion :: ByteString apiVersion = "2012-06-01"@@ -25,9 +23,3 @@ -> GLSink Event m a -> AWS AWSContext m a elbQuery = commonQuery apiVersion--members :: MonadThrow m- => Text- -> GLSink Event m a- -> GLSink Event m [a]-members name f = element name $ listConsumer "member" f
AWS/Lib/Parser.hs view
@@ -103,7 +103,7 @@ => Text -> Pipe Event Event o u m a -> Pipe Event Event o u m a-element name inner = XML.force "parse error" $ elementM name inner+element name inner = XML.force ("parse error:" ++ T.unpack name) $ elementM name inner tagContentM :: MonadThrow m => Text@@ -153,3 +153,9 @@ <*> getT "Message" rid <- getT "RequestId" lift $ monadThrow $ ClientError status c m rid++members :: MonadThrow m+ => Text+ -> GLSink Event m a+ -> GLSink Event m [a]+members name f = element name $ listConsumer "member" f
AWS/Lib/Query.hs view
@@ -1,11 +1,15 @@-{-# LANGUAGE FlexibleContexts, RankNTypes #-}+{-# LANGUAGE FlexibleContexts, RankNTypes, CPP #-} +#define DEBUG module AWS.Lib.Query ( requestQuery , QueryParam(..) , Filter , maybeParams , commonQuery+#ifdef DEBUG+ , debugQuery+#endif ) where import Data.ByteString (ByteString)@@ -32,13 +36,16 @@ import Data.Text (Text) import qualified Control.Monad.State as State import qualified Control.Monad.Reader as Reader---import qualified Data.Conduit.Binary as CB import AWS.Class import AWS.Util import AWS.Credential import AWS.Lib.Parser +#ifdef DEBUG+import qualified Data.Conduit.Binary as CB+#endif+ type Filter = (Text, [Text]) data QueryParam@@ -86,7 +93,6 @@ toArrayParams (ArrayParams name params) = Map.fromList [ (textToBS name <> "." <> bsShow i, textToBS param) | (i, param) <- zip ([1..]::[Int]) params- ] toArrayParams (FilterParams kvs) = Map.fromList . concat . map f1 $ zip ([1..]::[Int]) kvs@@ -100,7 +106,7 @@ Map.singleton (textToBS k) (textToBS v) toArrayParams (StructArrayParams name vss) = Map.fromList l where- bsName = textToBS name+ bsName = textToBS name struct n (k, v) = (n <> "." <> textToBS k, textToBS v) l = mconcat [ map (struct (bsName <> "." <> bsShow i)) kvs@@ -160,7 +166,6 @@ let req = request { HTTP.checkStatus = checkStatus' } response <- HTTP.http req mgr let body = HTTP.responseBody response--- body $$+- CB.sinkFile "debug.txt" >> fail "debug" let st = H.statusCode $ HTTP.responseStatus response if st < 400 then return body@@ -184,8 +189,29 @@ ctx <- State.get cred <- Reader.ask rs <- lift $ requestQuery cred ctx action params apiVersion sinkError--- lift $ rs $$+- CB.sinkFile "debug.txt" >> fail "debug" (res, rid) <- lift $ rs $$+- XmlP.parseBytes XmlP.def =$ sinkResponse (bsToText action) sink State.put ctx { lastRequestId = Just rid } return res++#ifdef DEBUG+debugQuery+ :: (MonadBaseControl IO m, MonadResource m)+ => ByteString -- ^ apiVersion+ -> ByteString -- ^ Action+ -> [QueryParam]+ -> AWS AWSContext m a+debugQuery ver action params = do+ ctx <- State.get+ cred <- Reader.ask+ let mgr = manager ctx+ let ep = endpoint ctx+ time <- liftIO getCurrentTime+ let url = mkUrl ep cred time action params ver+ liftIO $ print url+ request <- liftIO $ HTTP.parseUrl (BSC.unpack url)+ let req = request { HTTP.checkStatus = checkStatus' }+ response <- lift $ HTTP.http req mgr+ lift $ HTTP.responseBody response $$+- CB.sinkFile "debug.txt"+ fail "debug"+#endif
AWS/Util.hs view
@@ -10,6 +10,7 @@ import Data.Time (UTCTime) import qualified Data.Time as Time import qualified Data.Time.Parse as TP+import System.Locale (defaultTimeLocale) toS :: BSL.ByteString -> ByteString toS = BS.concat . BSL.toChunks@@ -35,12 +36,25 @@ fst (TR.signed TR.decimal t) +textToDouble :: Fractional a => Text -> a+textToDouble t = either+ (const $ error "not double value")+ fst+ (TR.signed TR.rational t)+ textToTime :: Text -> UTCTime textToTime = Time.localTimeToUTC Time.utc . maybe (error "time format error.") fst . TP.strptime fmt . T.unpack+ where+ fmt = "%FT%T"++timeToText :: UTCTime -> Text+timeToText+ = T.pack+ . Time.formatTime defaultTimeLocale fmt where fmt = "%FT%T"
+ Tests/Main.hs view
@@ -0,0 +1,24 @@+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE NoMonomorphismRestriction #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}++module Main where++import AWSTests.EC2Tests++main :: IO ()+main = do+ runInstanceTests+ runVpcTests+ runAddressTests+ runSnapshotTests+ runImageTests+ runSubnetsTests+ runVolumeTests+ runSecurityGroupTests+ runRouteTableTests+ runRegionTests+ runInstanceTests+ runAvailabilityZoneTests+ runTagTests+ runKeyPairTests
aws-sdk.cabal view
@@ -1,5 +1,5 @@ name: aws-sdk-version: 0.6.0.0+version: 0.7.0.0 synopsis: AWS SDK for Haskell description: An AWS(Amazon Web Services) liblary for Haskell. license: BSD3@@ -23,6 +23,8 @@ , AWS.RDS.Types , AWS.ELB , AWS.ELB.Types+ , AWS.CloudWatch+ , AWS.CloudWatch.Types other-modules: AWS.Util , AWS.Credential , AWS.Class , AWS.EC2.Internal@@ -50,6 +52,8 @@ , AWS.RDS.DBInstance , AWS.ELB.Internal , AWS.ELB.LoadBalancer+ , AWS.CloudWatch.Internal+ , AWS.CloudWatch.Metric ghc-options: -Wall -fno-warn-unused-do-bind extensions: OverloadedStrings@@ -81,13 +85,21 @@ test-suite test type: exitcode-stdio-1.0- main-is: main.hs- hs-source-dirs: tests+ main-is: Main.hs+ hs-source-dirs: Tests ghc-options: -Wall -threaded-+ extensions: OverloadedStrings build-depends: base+ , aws-sdk+ , conduit+ , text+ , monad-control+ , transformers+ , http-conduit , hspec , QuickCheck+ , hspec+ , HUnit source-repository head type: git
− tests/main.hs
@@ -1,21 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE NoMonomorphismRestriction #-}-{-# OPTIONS_GHC -fno-warn-orphans #-}--module Main where--import Test.Hspec (hspec)--import PropExample-import SpecExample--main :: IO ()-main = do- propTest- specTest--specTest :: IO ()-specTest = hspec normalSpecs--propTest :: IO ()-propTest = hspec propSpecs