· 9 years ago · Sep 16, 2016, 07:00 PM
1{-# LANGUAGE OverloadedStrings #-}
2
3import Data.HashMap.Strict (toList)
4import Control.Monad.Trans.Resource (runResourceT)
5import Control.Monad.IO.Class (MonadIO, liftIO)
6import Control.Lens ((&),(.~),(^.),(?~))
7import Data.ByteString (pack)
8import Network.AWS (runAWS, send, LogLevel (Debug), Logger, Region (Oregon), newLogger)
9import Network.AWS.SQS
10import Network.AWS.Auth
11import Network.AWS.Env
12import System.IO (stdout)
13import qualified Data.Map as M
14
15run :: IO ()
16run = do
17 putStrLn versionOutput
18 let queueUrl = "https://sqs.us-west-2.amazonaws.com/877422789438/dev-search"
19 env <- buildAwsEnv
20 r <- liftIO $ runResourceT $ runAWS env $ send $
21 getQueueAttributes queueUrl & gqaAttributeNames .~ attributes
22 print $ M.fromList $ toList $ r ^. gqarsAttributes
23
24attributes :: [QueueAttributeName]
25attributes =
26 [ ApproximateNumberOfMessages
27 , ApproximateNumberOfMessagesDelayed
28 , ApproximateNumberOfMessagesNotVisible
29 , CreatedTimestamp
30 , DelaySeconds
31 , LastModifiedTimestamp
32 , MaximumMessageSize
33 , MessageRetentionPeriod
34 , Policy
35 , QueueARN
36 , ReceiveMessageWaitTimeSeconds
37 , RedrivePolicy
38 , VisibilityTimeout
39 ]
40
41buildAwsEnv :: IO Env
42buildAwsEnv = do
43 logger <- newLogger Debug stdout
44 env <- newEnv Oregon $ FromKeys
45 (AccessKey "TODO")
46 (SecretKey "TODO")
47 return $ envWithLog logger env
48 where
49 envWithLog :: Logger -> Env -> Env
50 envWithLog logger env = env & envLogger .~ logger