module AWS.EC2
(
EC2
, runEC2
, setRegion
, module AWS.EC2.Instance
, module AWS.EC2.Image
, module AWS.EC2.Volume
, module AWS.EC2.Snapshot
, module AWS.EC2.Address
, module AWS.EC2.KeyPair
, module AWS.EC2.SecurityGroup
, module AWS.EC2.Region
, module AWS.EC2.AvailabilityZone
, module AWS.EC2.Tag
, module AWS.EC2.VPC
, module AWS.EC2.Subnets
, module AWS.EC2.Acl
, module AWS.EC2.RouteTable
) where
import Data.Conduit
import Control.Monad.Trans.Control (MonadBaseControl)
import qualified Control.Monad.State as State
import Data.Text (Text)
import AWS.Util
import AWS.Class
import AWS.EC2.Internal
import AWS.EC2.Types
import qualified AWS.EC2.Util as Util
import AWS.EC2.Image
import AWS.EC2.Region
import AWS.EC2.AvailabilityZone
import AWS.EC2.Instance
import AWS.EC2.Address
import AWS.EC2.Tag
import AWS.EC2.Snapshot
import AWS.EC2.Volume
import AWS.EC2.KeyPair
import AWS.EC2.SecurityGroup
import AWS.EC2.VPC
import AWS.EC2.Subnets
import AWS.EC2.Acl
import AWS.EC2.RouteTable
setRegion
:: (MonadResource m, MonadBaseControl IO m)
=> Text
-> EC2 m ()
setRegion name = do
region <- Util.head $ describeRegions [name] []
ctx <- State.get
maybe
(fail "region not found")
(\r -> State.put ctx { endpoint = f r })
region
where
f = textToBS . regionEndpoint