stratosphere 0.2.0 → 0.2.1
raw patch · 35 files changed
+2043/−233 lines, 35 filesdep +hashablenew-component:exe:apigw-lambda-dynamodbnew-component:exe:apigw-lambda-s3
Dependencies added: hashable
Files
- CHANGELOG.md +9/−1
- examples/api-gateway-lambda.hs +0/−193
- examples/apigw-lambda-dynamodb.hs +338/−0
- examples/apigw-lambda-s3.hs +189/−0
- examples/s3-copy.hs +3/−2
- examples/simple-lambda.hs +3/−2
- library-gen/Stratosphere/ResourceProperties/APIGatewayDeploymentStageDescriptionMethodSetting.hs +5/−5
- library-gen/Stratosphere/ResourceProperties/ApiGatewayIntegration.hs +8/−7
- library-gen/Stratosphere/ResourceProperties/ApiGatewayStageMethodSetting.hs +6/−6
- library-gen/Stratosphere/ResourceProperties/ApiGatewayUsagePlanQuotaSettings.hs +3/−3
- library-gen/Stratosphere/ResourceProperties/DynamoDBAttributeDefinition.hs +52/−0
- library-gen/Stratosphere/ResourceProperties/DynamoDBGlobalSecondaryIndex.hs +69/−0
- library-gen/Stratosphere/ResourceProperties/DynamoDBKeySchema.hs +59/−0
- library-gen/Stratosphere/ResourceProperties/DynamoDBLocalSecondaryIndex.hs +66/−0
- library-gen/Stratosphere/ResourceProperties/DynamoDBProjectionObject.hs +57/−0
- library-gen/Stratosphere/ResourceProperties/DynamoDBProvisionedThroughput.hs +57/−0
- library-gen/Stratosphere/ResourceProperties/DynamoDBStreamSpecification.hs +45/−0
- library-gen/Stratosphere/ResourceProperties/SNSTopicSubscription.hs +54/−0
- library-gen/Stratosphere/ResourceProperties/SQSRedrivePolicy.hs +50/−0
- library-gen/Stratosphere/Resources.hs +54/−0
- library-gen/Stratosphere/Resources/ApiGatewayMethod.hs +7/−6
- library-gen/Stratosphere/Resources/DynamoDBTable.hs +108/−0
- library-gen/Stratosphere/Resources/EventsRule.hs +95/−0
- library-gen/Stratosphere/Resources/LambdaAlias.hs +70/−0
- library-gen/Stratosphere/Resources/LambdaFunction.hs +4/−3
- library-gen/Stratosphere/Resources/LambdaVersion.hs +63/−0
- library-gen/Stratosphere/Resources/SNSSubscription.hs +59/−0
- library-gen/Stratosphere/Resources/SNSTopic.hs +58/−0
- library-gen/Stratosphere/Resources/SNSTopicPolicy.hs +52/−0
- library-gen/Stratosphere/Resources/SQSQueue.hs +101/−0
- library-gen/Stratosphere/Resources/SQSQueuePolicy.hs +51/−0
- library/Stratosphere.hs +2/−0
- library/Stratosphere/Check.hs +34/−0
- library/Stratosphere/Types.hs +161/−2
- stratosphere.cabal +51/−3
CHANGELOG.md view
@@ -1,6 +1,14 @@ # Change Log -## Unreleased+## 0.2.1++* Added Dynamo DB table resources (@ababkin)+* Fix the Python docs scraper mishandling the `required` value in some cases,+ and also missing some properties of resources (@amar47shah)+* Added a ton of SNS and SQS resources (@ababkin)+* Added a experimental checker for duplicate resource names (@amar47shah)++## 0.2.0 * Breaking change: The `DependsOn` property previously allowed lists of `Val Text`, when in fact CloudFormation only accepts literal `Text` values. The
− examples/api-gateway-lambda.hs
@@ -1,193 +0,0 @@-{-# LANGUAGE OverloadedLists #-}-{-# LANGUAGE OverloadedStrings #-}--module Main where--import Control.Lens-import Data.Aeson (Value (Array), object)-import qualified Data.ByteString.Lazy.Char8 as B-import Data.Text (Text)-import Stratosphere----- to curl the endpoint: (substitute your APIGW deployment URL)--- curl -v -X POST -H "Content-Type: application/json" -d "{\"description\": \"test task\"}" "https://t04rmwbtgj.execute-api.us-east-1.amazonaws.com/v1/stack"--main :: IO ()-main = B.putStrLn $ encodeTemplate myTemplate--myTemplate :: Template-myTemplate = template- [ role- , incomingS3Bucket- , lambda- , permission- , apiGWRestApi- , apiGWResource- , apiGWMethod- , apiGWDeployment- ]- & description ?~ "Simple api gateway attached to a lambda that writes the request body to a S3 object"- & formatVersion ?~ "2010-09-09"--apiGWRestApi :: Resource-apiGWRestApi = (resource "ApiGWRestApi" $- ApiGatewayRestApiProperties $- apiGatewayRestApi- "myApi"- )--apiGWResource :: Resource-apiGWResource = (resource "ApiGWResource" $- ApiGatewayResourceProperties $- apiGatewayResource- (GetAtt "ApiGWRestApi" "RootResourceId")- "stack"- (toRef apiGWRestApi)- )- & dependsOn ?~ deps [ apiGWRestApi ]--apiGWMethod :: Resource-apiGWMethod = (resource "ApiGWMethod" $- ApiGatewayMethodProperties $- apiGatewayMethod- "NONE"- "POST"- (toRef apiGWResource)- (toRef apiGWRestApi)- & agmeIntegration ?~ integration- & agmeMethodResponses ?~ [ methodResponse ]- )- & dependsOn ?~ deps [- apiGWRestApi- , apiGWResource- , lambda- ]-- where- integration = apiGatewayIntegration "AWS"- & agiIntegrationHttpMethod ?~ "POST"- & agiUri ?~ (Join "" [- "arn:aws:apigateway:"- , Ref "AWS::Region"- , ":lambda:path/2015-03-31/functions/"- , GetAtt "WriteS3ObjectLambda" "Arn"- , "/invocations"])- & agiIntegrationResponses ?~ [ integrationResponse ]- & agiPassthroughBehavior ?~ "NEVER"- & agiRequestTemplates ?~ [ ("application/json", "{\"body\": $input.body}") ]-- integrationResponse = apiGatewayIntegrationResponse- & agirResponseTemplates ?~ [ ("application/json", "$input.json('$.body')") ]- & agirStatusCode ?~ "200"-- methodResponse = apiGatewayMethodResponse "200"--apiGWDeployment :: Resource-apiGWDeployment = (resource "ApiGWDeployment" $- ApiGatewayDeploymentProperties $- apiGatewayDeployment- (toRef apiGWRestApi)- & agdStageName ?~ "v1"- )- & dependsOn ?~ deps [- apiGWRestApi- , apiGWMethod- ]--lambda :: Resource-lambda = (resource "WriteS3ObjectLambda" $- LambdaFunctionProperties $- lambdaFunction- lambdaCode- "index.handler"- (GetAtt "IAMRole" "Arn")- "nodejs4.3"- & lfFunctionName ?~ "writeS3Object"- )- & dependsOn ?~ deps [ role ]-- where- lambdaCode :: LambdaFunctionCode- lambdaCode = lambdaFunctionCode- & lfcZipFile ?~ code-- code :: Val Text- code = "\- \ var AWS = require('aws-sdk');\n\- \ var s3 = new AWS.S3({apiVersion: '2006-03-01'});\n\- \ exports.handler = function(event, context, callback) {\n\- \ console.log(JSON.stringify(event));\n\- \ s3.putObject({Bucket: \"stratosphere-api-gateway-lambda-incoming\", Key: \"content.json\", ContentType: \"application/json\", Body: JSON.stringify(event.body)}, function(err){\n\- \ if (err) { \n\- \ console.log(\"Error:\", err); \n\- \ callback(err) \n\- \ } else { \n\- \ callback(null, {\"body\": event.body});\n\- \ } \n\- \ });\n\- \ }\n\- \ "--role :: Resource-role = resource "IAMRole" $- IAMRoleProperties $- iamRole rolePolicyDocumentObject- & iamrPolicies ?~ [ executePolicy ]- & iamrRoleName ?~ "MyLambdaBasicExecutionRole"- & iamrPath ?~ "/"-- where- executePolicy =- iamPolicies- [ ("Version", "2012-10-17")- , ("Statement", statement)- ]- "MyLambdaExecutionPolicy"-- where- statement = object- [ ("Effect", "Allow")- , ("Action", actions)- , ("Resource", "*")- ]-- actions = Array- [ "logs:CreateLogGroup"- , "logs:CreateLogStream"- , "logs:PutLogEvents"- , "s3:PutObject"- ]--- rolePolicyDocumentObject =- [ ("Version", "2012-10-17")- , ("Statement", statement)- ]-- where- statement = object- [ ("Effect", "Allow")- , ("Principal", principal)- , ("Action", "sts:AssumeRole")- ]-- principal = object- [ ("Service", "lambda.amazonaws.com") ]--incomingS3Bucket :: Resource-incomingS3Bucket = resource "IncomingBucket" $- BucketProperties $- bucket- & bBucketName ?~ "stratosphere-api-gateway-lambda-incoming"--permission :: Resource-permission = resource "LambdaPermission" $- LambdaPermissionProperties $- lambdaPermission- "lambda:*"- (GetAtt "WriteS3ObjectLambda" "Arn")- "apigateway.amazonaws.com"--deps :: [Resource] -> [Text]-deps = map (\d -> d ^. resName)
+ examples/apigw-lambda-dynamodb.hs view
@@ -0,0 +1,338 @@+{-# LANGUAGE OverloadedLists #-}+{-# LANGUAGE OverloadedStrings #-}++module Main where++import Control.Lens+import Data.Aeson (Value (Array), object)+import qualified Data.ByteString.Lazy.Char8 as B+import Data.Text (Text)+import Stratosphere+++-- to curl the endpoints: (substitute your APIGW deployment URL)+-- curl -v -X POST -H "Content-Type: application/json" -d "{\"property\": 3}" "https://k99jn3an8a.execute-api.us-east-1.amazonaws.com/v1/thing"+-- curl -v "https://k99jn3an8a.execute-api.us-east-1.amazonaws.com/v1/thing"++main :: IO ()+main = B.putStrLn $ encodeTemplate myTemplate++myTemplate :: Template+myTemplate = template+ [ readLambdaRole+ , writeLambdaRole+ , readLambda+ , writeLambda+ , readLambdaPermission+ , writeLambdaPermission+ , dynamoDbTable+ , apiGWRestApi+ , apiGWResource+ , getMethod+ , postMethod+ , apiGWDeployment+ ]+ & description ?~ "Simple restful API gateway attached to a Lambda that reads from and writes the request body to a DynamoDB table"+ & formatVersion ?~ "2010-09-09"++apiGWRestApi :: Resource+apiGWRestApi = (resource "ApiGWRestApi" $+ ApiGatewayRestApiProperties $+ apiGatewayRestApi+ "myApi"+ )++apiGWResource :: Resource+apiGWResource = (resource "ApiGWResource" $+ ApiGatewayResourceProperties $+ apiGatewayResource+ (GetAtt "ApiGWRestApi" "RootResourceId")+ "thing"+ (toRef apiGWRestApi)+ )++getMethod :: Resource+getMethod = (resource "ApiGWGetMethod" $+ ApiGatewayMethodProperties $+ apiGatewayMethod+ NONE+ GET+ (toRef apiGWResource)+ (toRef apiGWRestApi)+ & agmeIntegration ?~ integration+ & agmeMethodResponses ?~ [ methodResponse ]+ )+ & dependsOn ?~ deps [+ readLambdaPermission+ ]++ where+ integration = apiGatewayIntegration AWS+ & agiIntegrationHttpMethod ?~ POST+ & agiUri ?~ (Join "" [+ "arn:aws:apigateway:"+ , Ref "AWS::Region"+ , ":lambda:path/2015-03-31/functions/"+ , GetAtt "ReadTableLambda" "Arn"+ , "/invocations"])+ & agiIntegrationResponses ?~ [ integrationResponse ]+ & agiPassthroughBehavior ?~ WHEN_NO_TEMPLATES+ & agiRequestTemplates ?~ [ ]++ integrationResponse = apiGatewayIntegrationResponse+ & agirResponseTemplates ?~ [ ("application/json", "$input.json('$.body')") ]+ & agirStatusCode ?~ "200"++ methodResponse = apiGatewayMethodResponse "200"+++postMethod :: Resource+postMethod = (resource "ApiGWPutMethod" $+ ApiGatewayMethodProperties $+ apiGatewayMethod+ NONE+ POST+ (toRef apiGWResource)+ (toRef apiGWRestApi)+ & agmeIntegration ?~ integration+ & agmeMethodResponses ?~ [ methodResponse ]+ )+ & dependsOn ?~ deps [+ writeLambdaPermission+ ]++ where+ integration = apiGatewayIntegration AWS+ & agiIntegrationHttpMethod ?~ POST+ & agiUri ?~ (Join "" [+ "arn:aws:apigateway:"+ , Ref "AWS::Region"+ , ":lambda:path/2015-03-31/functions/"+ , GetAtt "WriteTableLambda" "Arn"+ , "/invocations"])+ & agiIntegrationResponses ?~ [ integrationResponse ]+ & agiPassthroughBehavior ?~ WHEN_NO_TEMPLATES+ & agiRequestTemplates ?~ [ ("application/json", "{\"body\": $input.body}") ]++ integrationResponse = apiGatewayIntegrationResponse+ & agirResponseTemplates ?~ [ ("application/json", "$input.json('$.body')") ]+ & agirStatusCode ?~ "200"++ methodResponse = apiGatewayMethodResponse "200"++apiGWDeployment :: Resource+apiGWDeployment = (resource "ApiGWDeployment" $+ ApiGatewayDeploymentProperties $+ apiGatewayDeployment+ (toRef apiGWRestApi)+ & agdStageName ?~ "v1"+ )+ & dependsOn ?~ deps [+ apiGWResource+ , getMethod+ , postMethod+ ]++readLambda :: Resource+readLambda = (resource "ReadTableLambda" $+ LambdaFunctionProperties $+ lambdaFunction+ lambdaCode+ "index.handler"+ (GetAtt "ReadLambdaRole" "Arn")+ NodeJS43+ & lfFunctionName ?~ "readTable"+ )++ where+ lambdaCode :: LambdaFunctionCode+ lambdaCode = lambdaFunctionCode+ & lfcZipFile ?~ code++ code :: Val Text+ code = "\+ \ var AWS = require('aws-sdk');\n\+ \ var awsConfig = { region: 'us-east-1' }; \n\+ \ AWS.config.apiVersions = { dynamodb: '2012-08-10' }; \n\+ \ var dynamoDoc = new AWS.DynamoDB.DocumentClient(awsConfig); \n\+ \ exports.handler = function(event, context, callback) {\n\+ \ console.log(JSON.stringify(event));\n\+ \ var params = { TableName : 'stratosphere-dynamodb-table', Key: { Id: 'abc123' } }; \n\+ \ dynamoDoc.get(params, function(err, data) { \n\+ \ if (err) { \n\+ \ console.log(\"Error:\", err); \n\+ \ callback(err) \n\+ \ } else { \n\+ \ callback(null, {\"body\": data.Item.Data});\n\+ \ } \n\+ \ });\n\+ \ }\n\+ \ "+++writeLambda :: Resource+writeLambda = (resource "WriteTableLambda" $+ LambdaFunctionProperties $+ lambdaFunction+ lambdaCode+ "index.handler"+ (GetAtt "WriteLambdaRole" "Arn")+ NodeJS43+ & lfFunctionName ?~ "writeTable"+ )++ where+ lambdaCode :: LambdaFunctionCode+ lambdaCode = lambdaFunctionCode+ & lfcZipFile ?~ code++ code :: Val Text+ code = "\+ \ var AWS = require('aws-sdk');\n\+ \ var awsConfig = { region: 'us-east-1' }; \n\+ \ AWS.config.apiVersions = { dynamodb: '2012-08-10' }; \n\+ \ var dynamoDoc = new AWS.DynamoDB.DocumentClient(awsConfig); \n\+ \ exports.handler = function(event, context, callback) {\n\+ \ console.log(JSON.stringify(event));\n\+ \ var params = { TableName : 'stratosphere-dynamodb-table', Item: { Id: 'abc123', Data: event.body } }; \n\+ \ dynamoDoc.put(params, function(err, data) { \n\+ \ if (err) { \n\+ \ console.log(\"Error:\", err); \n\+ \ callback(err) \n\+ \ } else { \n\+ \ callback(null, {\"body\": 'success!'});\n\+ \ } \n\+ \ });\n\+ \ }\n\+ \ "++readLambdaRole :: Resource+readLambdaRole = resource "ReadLambdaRole" $+ IAMRoleProperties $+ iamRole rolePolicyDocumentObject+ & iamrPolicies ?~ [ executePolicy ]+ & iamrRoleName ?~ "ReadLambdaRole"+ & iamrPath ?~ "/"++ where+ executePolicy =+ iamPolicies+ [ ("Version", "2012-10-17")+ , ("Statement", statement)+ ]+ "MyLambdaExecutionPolicy"++ where+ statement = object+ [ ("Effect", "Allow")+ , ("Action", actions)+ , ("Resource", "*")+ ]++ actions = Array+ [ "logs:CreateLogGroup"+ , "logs:CreateLogStream"+ , "logs:PutLogEvents"+ , "dynamodb:GetItem"+ ]+++ rolePolicyDocumentObject =+ [ ("Version", "2012-10-17")+ , ("Statement", statement)+ ]++ where+ statement = object+ [ ("Effect", "Allow")+ , ("Principal", principal)+ , ("Action", "sts:AssumeRole")+ ]++ principal = object+ [ ("Service", "lambda.amazonaws.com") ]++writeLambdaRole :: Resource+writeLambdaRole = resource "WriteLambdaRole" $+ IAMRoleProperties $+ iamRole rolePolicyDocumentObject+ & iamrPolicies ?~ [ executePolicy ]+ & iamrRoleName ?~ "WriteLambdaRole"+ & iamrPath ?~ "/"++ where+ executePolicy =+ iamPolicies+ [ ("Version", "2012-10-17")+ , ("Statement", statement)+ ]+ "MyLambdaExecutionPolicy"++ where+ statement = object+ [ ("Effect", "Allow")+ , ("Action", actions)+ , ("Resource", "*")+ ]++ actions = Array+ [ "logs:CreateLogGroup"+ , "logs:CreateLogStream"+ , "logs:PutLogEvents"+ , "dynamodb:PutItem"+ ]+++ rolePolicyDocumentObject =+ [ ("Version", "2012-10-17")+ , ("Statement", statement)+ ]++ where+ statement = object+ [ ("Effect", "Allow")+ , ("Principal", principal)+ , ("Action", "sts:AssumeRole")+ ]++ principal = object+ [ ("Service", "lambda.amazonaws.com") ]++readLambdaPermission :: Resource+readLambdaPermission = resource "ReadLambdaPermission" $+ LambdaPermissionProperties $+ lambdaPermission+ "lambda:*"+ (GetAtt "ReadTableLambda" "Arn")+ "apigateway.amazonaws.com"++writeLambdaPermission :: Resource+writeLambdaPermission = resource "WriteLambdaPermission" $+ LambdaPermissionProperties $+ lambdaPermission+ "lambda:*"+ (GetAtt "WriteTableLambda" "Arn")+ "apigateway.amazonaws.com"++dynamoDbTable :: Resource+dynamoDbTable = resource "Table" $+ DynamoDBTableProperties $+ dynamoDBTable+ attributeDefinitions+ keySchema+ provisionedThroughput+ & ddbtTableName ?~ "stratosphere-dynamodb-table"++ where+ attributeDefinitions = [+ dynamoDBAttributeDefinition "Id" S+ ]+ keySchema = [+ dynamoDBKeySchema "Id" HASH+ ]+ provisionedThroughput =+ dynamoDBProvisionedThroughput (Literal 1) (Literal 1)++deps :: [Resource] -> [Text]+deps = map (\d -> d ^. resName)+
+ examples/apigw-lambda-s3.hs view
@@ -0,0 +1,189 @@+{-# LANGUAGE OverloadedLists #-}+{-# LANGUAGE OverloadedStrings #-}++module Main where++import Control.Lens+import Data.Aeson (Value (Array), object)+import qualified Data.ByteString.Lazy.Char8 as B+import Data.Text (Text)+import Stratosphere+++-- to curl the endpoint: (substitute your APIGW deployment URL)+-- curl -v -X POST -H "Content-Type: application/json" -d "{\"property\": 3}" "https://t04rmwbtgj.execute-api.us-east-1.amazonaws.com/v1/thing"++main :: IO ()+main = B.putStrLn $ encodeTemplate myTemplate++myTemplate :: Template+myTemplate = template+ [ role+ , incomingS3Bucket+ , lambda+ , permission+ , apiGWRestApi+ , apiGWResource+ , apiGWMethod+ , apiGWDeployment+ ]+ & description ?~ "Simple api gateway attached to a lambda that writes the request body to a S3 object"+ & formatVersion ?~ "2010-09-09"++apiGWRestApi :: Resource+apiGWRestApi = (resource "ApiGWRestApi" $+ ApiGatewayRestApiProperties $+ apiGatewayRestApi+ "myApi"+ )++apiGWResource :: Resource+apiGWResource = (resource "ApiGWResource" $+ ApiGatewayResourceProperties $+ apiGatewayResource+ (GetAtt "ApiGWRestApi" "RootResourceId")+ "thing"+ (toRef apiGWRestApi)+ )++apiGWMethod :: Resource+apiGWMethod = (resource "ApiGWMethod" $+ ApiGatewayMethodProperties $+ apiGatewayMethod+ NONE+ POST+ (toRef apiGWResource)+ (toRef apiGWRestApi)+ & agmeIntegration ?~ integration+ & agmeMethodResponses ?~ [ methodResponse ]+ )+ & dependsOn ?~ deps [+ permission+ ]++ where+ integration = apiGatewayIntegration AWS+ & agiIntegrationHttpMethod ?~ POST+ & agiUri ?~ (Join "" [+ "arn:aws:apigateway:"+ , Ref "AWS::Region"+ , ":lambda:path/2015-03-31/functions/"+ , GetAtt "WriteS3ObjectLambda" "Arn"+ , "/invocations"])+ & agiIntegrationResponses ?~ [ integrationResponse ]+ & agiPassthroughBehavior ?~ WHEN_NO_TEMPLATES+ & agiRequestTemplates ?~ [ ("application/json", "{\"body\": $input.body}") ]++ integrationResponse = apiGatewayIntegrationResponse+ & agirResponseTemplates ?~ [ ("application/json", "$input.json('$.body')") ]+ & agirStatusCode ?~ "200"++ methodResponse = apiGatewayMethodResponse "200"++apiGWDeployment :: Resource+apiGWDeployment = (resource "ApiGWDeployment" $+ ApiGatewayDeploymentProperties $+ apiGatewayDeployment+ (toRef apiGWRestApi)+ & agdStageName ?~ "v1"+ )+ & dependsOn ?~ deps [+ apiGWResource+ , apiGWMethod+ ]++lambda :: Resource+lambda = (resource "WriteS3ObjectLambda" $+ LambdaFunctionProperties $+ lambdaFunction+ lambdaCode+ "index.handler"+ (GetAtt "IAMRole" "Arn")+ NodeJS43+ & lfFunctionName ?~ "writeS3Object"+ )++ where+ lambdaCode :: LambdaFunctionCode+ lambdaCode = lambdaFunctionCode+ & lfcZipFile ?~ code++ code :: Val Text+ code = "\+ \ var AWS = require('aws-sdk');\n\+ \ var s3 = new AWS.S3({apiVersion: '2006-03-01'});\n\+ \ exports.handler = function(event, context, callback) {\n\+ \ console.log(JSON.stringify(event));\n\+ \ s3.putObject({Bucket: \"stratosphere-api-gateway-lambda-incoming\", Key: \"content.json\", ContentType: \"application/json\", Body: JSON.stringify(event.body)}, function(err){\n\+ \ if (err) { \n\+ \ console.log(\"Error:\", err); \n\+ \ callback(err) \n\+ \ } else { \n\+ \ callback(null, {\"body\": event.body});\n\+ \ } \n\+ \ });\n\+ \ }\n\+ \ "++role :: Resource+role = resource "IAMRole" $+ IAMRoleProperties $+ iamRole rolePolicyDocumentObject+ & iamrPolicies ?~ [ executePolicy ]+ & iamrRoleName ?~ "MyLambdaBasicExecutionRole"+ & iamrPath ?~ "/"++ where+ executePolicy =+ iamPolicies+ [ ("Version", "2012-10-17")+ , ("Statement", statement)+ ]+ "MyLambdaExecutionPolicy"++ where+ statement = object+ [ ("Effect", "Allow")+ , ("Action", actions)+ , ("Resource", "*")+ ]++ actions = Array+ [ "logs:CreateLogGroup"+ , "logs:CreateLogStream"+ , "logs:PutLogEvents"+ , "s3:PutObject"+ ]+++ rolePolicyDocumentObject =+ [ ("Version", "2012-10-17")+ , ("Statement", statement)+ ]++ where+ statement = object+ [ ("Effect", "Allow")+ , ("Principal", principal)+ , ("Action", "sts:AssumeRole")+ ]++ principal = object+ [ ("Service", "lambda.amazonaws.com") ]++incomingS3Bucket :: Resource+incomingS3Bucket = resource "IncomingBucket" $+ BucketProperties $+ bucket+ & bBucketName ?~ "stratosphere-api-gateway-lambda-incoming"++permission :: Resource+permission = resource "LambdaPermission" $+ LambdaPermissionProperties $+ lambdaPermission+ "lambda:*"+ (GetAtt "WriteS3ObjectLambda" "Arn")+ "apigateway.amazonaws.com"++deps :: [Resource] -> [Text]+deps = map (\d -> d ^. resName)
examples/s3-copy.hs view
@@ -4,11 +4,12 @@ module Main where import Control.Lens+import Data.Aeson (Value (Array), object) import qualified Data.ByteString.Lazy.Char8 as B import Data.Text (Text) import Stratosphere-import Data.Aeson (object, Value(Array)) + main :: IO () main = B.putStrLn $ encodeTemplate myTemplate @@ -25,7 +26,7 @@ lambdaCode "index.handler" (GetAtt "IAMRole" "Arn")- "nodejs4.3"+ NodeJS43 & lfFunctionName ?~ "copyS3Object" ) & dependsOn ?~ [ role ^. resName ]
examples/simple-lambda.hs view
@@ -4,11 +4,12 @@ module Main where import Control.Lens+import Data.Aeson (Value (Array), object) import qualified Data.ByteString.Lazy.Char8 as B import Data.Text (Text) import Stratosphere-import Data.Aeson (object, Value(Array)) + main :: IO () main = B.putStrLn $ encodeTemplate myTemplate @@ -27,7 +28,7 @@ lambdaCode "index.handler" (GetAtt "IAMRole" "Arn")- "nodejs4.3"+ NodeJS43 ) & dependsOn ?~ [ role ^. resName ]
library-gen/Stratosphere/ResourceProperties/APIGatewayDeploymentStageDescriptionMethodSetting.hs view
@@ -14,7 +14,7 @@ import GHC.Generics import Stratosphere.Values-+import Stratosphere.Types -- | Full data type definition for -- APIGatewayDeploymentStageDescriptionMethodSetting. See@@ -26,8 +26,8 @@ , _aPIGatewayDeploymentStageDescriptionMethodSettingCacheTtlInSeconds :: Maybe (Val Integer') , _aPIGatewayDeploymentStageDescriptionMethodSettingCachingEnabled :: Maybe (Val Bool') , _aPIGatewayDeploymentStageDescriptionMethodSettingDataTraceEnabled :: Maybe (Val Bool')- , _aPIGatewayDeploymentStageDescriptionMethodSettingHttpMethod :: Maybe (Val Text)- , _aPIGatewayDeploymentStageDescriptionMethodSettingLoggingLevel :: Maybe (Val Text)+ , _aPIGatewayDeploymentStageDescriptionMethodSettingHttpMethod :: Maybe HttpMethod+ , _aPIGatewayDeploymentStageDescriptionMethodSettingLoggingLevel :: Maybe LoggingLevel , _aPIGatewayDeploymentStageDescriptionMethodSettingMetricsEnabled :: Maybe (Val Bool') , _aPIGatewayDeploymentStageDescriptionMethodSettingResourcePath :: Maybe (Val Text) , _aPIGatewayDeploymentStageDescriptionMethodSettingThrottlingBurstLimit :: Maybe (Val Integer')@@ -80,12 +80,12 @@ apigdsdmsDataTraceEnabled = lens _aPIGatewayDeploymentStageDescriptionMethodSettingDataTraceEnabled (\s a -> s { _aPIGatewayDeploymentStageDescriptionMethodSettingDataTraceEnabled = a }) -- | The HTTP method.-apigdsdmsHttpMethod :: Lens' APIGatewayDeploymentStageDescriptionMethodSetting (Maybe (Val Text))+apigdsdmsHttpMethod :: Lens' APIGatewayDeploymentStageDescriptionMethodSetting (Maybe HttpMethod) apigdsdmsHttpMethod = lens _aPIGatewayDeploymentStageDescriptionMethodSettingHttpMethod (\s a -> s { _aPIGatewayDeploymentStageDescriptionMethodSettingHttpMethod = a }) -- | The logging level for this method. For valid values, see the loggingLevel -- property of the Stage resource in the Amazon API Gateway API Reference.-apigdsdmsLoggingLevel :: Lens' APIGatewayDeploymentStageDescriptionMethodSetting (Maybe (Val Text))+apigdsdmsLoggingLevel :: Lens' APIGatewayDeploymentStageDescriptionMethodSetting (Maybe LoggingLevel) apigdsdmsLoggingLevel = lens _aPIGatewayDeploymentStageDescriptionMethodSettingLoggingLevel (\s a -> s { _aPIGatewayDeploymentStageDescriptionMethodSettingLoggingLevel = a }) -- | Indicates whether Amazon CloudWatch metrics are enabled for methods in
library-gen/Stratosphere/ResourceProperties/ApiGatewayIntegration.hs view
@@ -15,6 +15,7 @@ import Stratosphere.Values import Stratosphere.ResourceProperties.ApiGatewayIntegrationResponse+import Stratosphere.Types -- | Full data type definition for ApiGatewayIntegration. See -- 'apiGatewayIntegration' for a more convenient constructor.@@ -23,12 +24,12 @@ { _apiGatewayIntegrationCacheKeyParameters :: Maybe [Val Text] , _apiGatewayIntegrationCacheNamespace :: Maybe (Val Text) , _apiGatewayIntegrationCredentials :: Maybe (Val Text)- , _apiGatewayIntegrationIntegrationHttpMethod :: Maybe (Val Text)+ , _apiGatewayIntegrationIntegrationHttpMethod :: Maybe HttpMethod , _apiGatewayIntegrationIntegrationResponses :: Maybe [ApiGatewayIntegrationResponse]- , _apiGatewayIntegrationPassthroughBehavior :: Maybe (Val Text)+ , _apiGatewayIntegrationPassthroughBehavior :: Maybe PassthroughBehavior , _apiGatewayIntegrationRequestParameters :: Maybe Object , _apiGatewayIntegrationRequestTemplates :: Maybe Object- , _apiGatewayIntegrationType :: Val Text+ , _apiGatewayIntegrationType :: ApiBackendType , _apiGatewayIntegrationUri :: Maybe (Val Text) } deriving (Show, Generic) @@ -41,7 +42,7 @@ -- | Constructor for 'ApiGatewayIntegration' containing required fields as -- arguments. apiGatewayIntegration- :: Val Text -- ^ 'agiType'+ :: ApiBackendType -- ^ 'agiType' -> ApiGatewayIntegration apiGatewayIntegration typearg = ApiGatewayIntegration@@ -77,7 +78,7 @@ agiCredentials = lens _apiGatewayIntegrationCredentials (\s a -> s { _apiGatewayIntegrationCredentials = a }) -- | The integration's HTTP method type.-agiIntegrationHttpMethod :: Lens' ApiGatewayIntegration (Maybe (Val Text))+agiIntegrationHttpMethod :: Lens' ApiGatewayIntegration (Maybe HttpMethod) agiIntegrationHttpMethod = lens _apiGatewayIntegrationIntegrationHttpMethod (\s a -> s { _apiGatewayIntegrationIntegrationHttpMethod = a }) -- | The response that API Gateway provides after a method's back end@@ -92,7 +93,7 @@ -- behavior depends on the request's Content-Type header and whether you -- defined a mapping template for it. For more information and valid values, -- see the passthroughBehavior field in the API Gateway API Reference.-agiPassthroughBehavior :: Lens' ApiGatewayIntegration (Maybe (Val Text))+agiPassthroughBehavior :: Lens' ApiGatewayIntegration (Maybe PassthroughBehavior) agiPassthroughBehavior = lens _apiGatewayIntegrationPassthroughBehavior (\s a -> s { _apiGatewayIntegrationPassthroughBehavior = a }) -- | The request parameters that API Gateway sends with the back-end request.@@ -119,7 +120,7 @@ -- | The type of back end your method is running, such as HTTP, AWS, or MOCK. -- For valid values, see the type property in the Amazon API Gateway REST API -- Reference.-agiType :: Lens' ApiGatewayIntegration (Val Text)+agiType :: Lens' ApiGatewayIntegration ApiBackendType agiType = lens _apiGatewayIntegrationType (\s a -> s { _apiGatewayIntegrationType = a }) -- | The integration's Uniform Resource Identifier (URI). If you specify HTTP
library-gen/Stratosphere/ResourceProperties/ApiGatewayStageMethodSetting.hs view
@@ -14,7 +14,7 @@ import GHC.Generics import Stratosphere.Values-+import Stratosphere.Types -- | Full data type definition for ApiGatewayStageMethodSetting. See -- 'apiGatewayStageMethodSetting' for a more convenient constructor.@@ -24,8 +24,8 @@ , _apiGatewayStageMethodSettingCacheTtlInSeconds :: Maybe (Val Integer') , _apiGatewayStageMethodSettingCachingEnabled :: Maybe (Val Bool') , _apiGatewayStageMethodSettingDataTraceEnabled :: Maybe (Val Bool')- , _apiGatewayStageMethodSettingHttpMethod :: Val Text- , _apiGatewayStageMethodSettingLoggingLevel :: Maybe (Val Text)+ , _apiGatewayStageMethodSettingHttpMethod :: HttpMethod+ , _apiGatewayStageMethodSettingLoggingLevel :: Maybe LoggingLevel , _apiGatewayStageMethodSettingMetricsEnabled :: Maybe (Val Bool') , _apiGatewayStageMethodSettingResourcePath :: Val Text , _apiGatewayStageMethodSettingThrottlingBurstLimit :: Maybe (Val Integer')@@ -41,7 +41,7 @@ -- | Constructor for 'ApiGatewayStageMethodSetting' containing required fields -- as arguments. apiGatewayStageMethodSetting- :: Val Text -- ^ 'agsmsHttpMethod'+ :: HttpMethod -- ^ 'agsmsHttpMethod' -> Val Text -- ^ 'agsmsResourcePath' -> ApiGatewayStageMethodSetting apiGatewayStageMethodSetting httpMethodarg resourcePatharg =@@ -78,12 +78,12 @@ agsmsDataTraceEnabled = lens _apiGatewayStageMethodSettingDataTraceEnabled (\s a -> s { _apiGatewayStageMethodSettingDataTraceEnabled = a }) -- | The HTTP method.-agsmsHttpMethod :: Lens' ApiGatewayStageMethodSetting (Val Text)+agsmsHttpMethod :: Lens' ApiGatewayStageMethodSetting HttpMethod agsmsHttpMethod = lens _apiGatewayStageMethodSettingHttpMethod (\s a -> s { _apiGatewayStageMethodSettingHttpMethod = a }) -- | The logging level for this method. For valid values, see the loggingLevel -- property of the Stage resource in the Amazon API Gateway API Reference.-agsmsLoggingLevel :: Lens' ApiGatewayStageMethodSetting (Maybe (Val Text))+agsmsLoggingLevel :: Lens' ApiGatewayStageMethodSetting (Maybe LoggingLevel) agsmsLoggingLevel = lens _apiGatewayStageMethodSettingLoggingLevel (\s a -> s { _apiGatewayStageMethodSettingLoggingLevel = a }) -- | Indicates whether Amazon CloudWatch metrics are enabled for methods in
library-gen/Stratosphere/ResourceProperties/ApiGatewayUsagePlanQuotaSettings.hs view
@@ -14,7 +14,7 @@ import GHC.Generics import Stratosphere.Values-+import Stratosphere.Types -- | Full data type definition for ApiGatewayUsagePlanQuotaSettings. See -- 'apiGatewayUsagePlanQuotaSettings' for a more convenient constructor.@@ -22,7 +22,7 @@ ApiGatewayUsagePlanQuotaSettings { _apiGatewayUsagePlanQuotaSettingsLimit :: Maybe (Val Integer') , _apiGatewayUsagePlanQuotaSettingsOffset :: Maybe (Val Integer')- , _apiGatewayUsagePlanQuotaSettingsPeriod :: Maybe (Val Text)+ , _apiGatewayUsagePlanQuotaSettingsPeriod :: Maybe Period } deriving (Show, Generic) instance ToJSON ApiGatewayUsagePlanQuotaSettings where@@ -57,5 +57,5 @@ -- | The time period for which the maximum limit of requests applies, such as -- DAY or WEEK. For valid values, see the period property for the UsagePlan -- resource in the Amazon API Gateway REST API Reference.-agupqsPeriod :: Lens' ApiGatewayUsagePlanQuotaSettings (Maybe (Val Text))+agupqsPeriod :: Lens' ApiGatewayUsagePlanQuotaSettings (Maybe Period) agupqsPeriod = lens _apiGatewayUsagePlanQuotaSettingsPeriod (\s a -> s { _apiGatewayUsagePlanQuotaSettingsPeriod = a })
+ library-gen/Stratosphere/ResourceProperties/DynamoDBAttributeDefinition.hs view
@@ -0,0 +1,52 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE OverloadedStrings #-}++-- | A list of attribute definitions for the AWS::DynamoDB::Table resource.+-- Each element is composed of an AttributeName and AttributeType.++module Stratosphere.ResourceProperties.DynamoDBAttributeDefinition where++import Control.Lens+import Data.Aeson+import Data.Aeson.Types+import Data.Text+import GHC.Generics++import Stratosphere.Values+import Stratosphere.Types++-- | Full data type definition for DynamoDBAttributeDefinition. See+-- 'dynamoDBAttributeDefinition' for a more convenient constructor.+data DynamoDBAttributeDefinition =+ DynamoDBAttributeDefinition+ { _dynamoDBAttributeDefinitionAttributeName :: Val Text+ , _dynamoDBAttributeDefinitionAttributeType :: AttributeType+ } deriving (Show, Generic)++instance ToJSON DynamoDBAttributeDefinition where+ toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 28, omitNothingFields = True }++instance FromJSON DynamoDBAttributeDefinition where+ parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 28, omitNothingFields = True }++-- | Constructor for 'DynamoDBAttributeDefinition' containing required fields+-- as arguments.+dynamoDBAttributeDefinition+ :: Val Text -- ^ 'ddbadAttributeName'+ -> AttributeType -- ^ 'ddbadAttributeType'+ -> DynamoDBAttributeDefinition+dynamoDBAttributeDefinition attributeNamearg attributeTypearg =+ DynamoDBAttributeDefinition+ { _dynamoDBAttributeDefinitionAttributeName = attributeNamearg+ , _dynamoDBAttributeDefinitionAttributeType = attributeTypearg+ }++-- | The name of an attribute. Attribute names can be 1 – 255 characters long+-- and have no character restrictions.+ddbadAttributeName :: Lens' DynamoDBAttributeDefinition (Val Text)+ddbadAttributeName = lens _dynamoDBAttributeDefinitionAttributeName (\s a -> s { _dynamoDBAttributeDefinitionAttributeName = a })++-- | The data type for the attribute. You can specify S for string data, N for+-- numeric data, or B for binary data.+ddbadAttributeType :: Lens' DynamoDBAttributeDefinition AttributeType+ddbadAttributeType = lens _dynamoDBAttributeDefinitionAttributeType (\s a -> s { _dynamoDBAttributeDefinitionAttributeType = a })
+ library-gen/Stratosphere/ResourceProperties/DynamoDBGlobalSecondaryIndex.hs view
@@ -0,0 +1,69 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE OverloadedStrings #-}++-- | Describes global secondary indexes for the AWS::DynamoDB::Table resource.++module Stratosphere.ResourceProperties.DynamoDBGlobalSecondaryIndex where++import Control.Lens+import Data.Aeson+import Data.Aeson.Types+import Data.Text+import GHC.Generics++import Stratosphere.Values+import Stratosphere.ResourceProperties.DynamoDBKeySchema+import Stratosphere.ResourceProperties.DynamoDBProjectionObject+import Stratosphere.ResourceProperties.DynamoDBProvisionedThroughput++-- | Full data type definition for DynamoDBGlobalSecondaryIndex. See+-- 'dynamoDBGlobalSecondaryIndex' for a more convenient constructor.+data DynamoDBGlobalSecondaryIndex =+ DynamoDBGlobalSecondaryIndex+ { _dynamoDBGlobalSecondaryIndexIndexName :: Val Text+ , _dynamoDBGlobalSecondaryIndexKeySchema :: [DynamoDBKeySchema]+ , _dynamoDBGlobalSecondaryIndexProjection :: DynamoDBProjectionObject+ , _dynamoDBGlobalSecondaryIndexProvisionedThroughput :: DynamoDBProvisionedThroughput+ } deriving (Show, Generic)++instance ToJSON DynamoDBGlobalSecondaryIndex where+ toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 29, omitNothingFields = True }++instance FromJSON DynamoDBGlobalSecondaryIndex where+ parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 29, omitNothingFields = True }++-- | Constructor for 'DynamoDBGlobalSecondaryIndex' containing required fields+-- as arguments.+dynamoDBGlobalSecondaryIndex+ :: Val Text -- ^ 'ddbgsiIndexName'+ -> [DynamoDBKeySchema] -- ^ 'ddbgsiKeySchema'+ -> DynamoDBProjectionObject -- ^ 'ddbgsiProjection'+ -> DynamoDBProvisionedThroughput -- ^ 'ddbgsiProvisionedThroughput'+ -> DynamoDBGlobalSecondaryIndex+dynamoDBGlobalSecondaryIndex indexNamearg keySchemaarg projectionarg provisionedThroughputarg =+ DynamoDBGlobalSecondaryIndex+ { _dynamoDBGlobalSecondaryIndexIndexName = indexNamearg+ , _dynamoDBGlobalSecondaryIndexKeySchema = keySchemaarg+ , _dynamoDBGlobalSecondaryIndexProjection = projectionarg+ , _dynamoDBGlobalSecondaryIndexProvisionedThroughput = provisionedThroughputarg+ }++-- | The name of the global secondary index. The index name can be 3 – 255+-- characters long and have no character restrictions.+ddbgsiIndexName :: Lens' DynamoDBGlobalSecondaryIndex (Val Text)+ddbgsiIndexName = lens _dynamoDBGlobalSecondaryIndexIndexName (\s a -> s { _dynamoDBGlobalSecondaryIndexIndexName = a })++-- | The complete index key schema for the global secondary index, which+-- consists of one or more pairs of attribute names and key types.+ddbgsiKeySchema :: Lens' DynamoDBGlobalSecondaryIndex [DynamoDBKeySchema]+ddbgsiKeySchema = lens _dynamoDBGlobalSecondaryIndexKeySchema (\s a -> s { _dynamoDBGlobalSecondaryIndexKeySchema = a })++-- | Attributes that are copied (projected) from the source table into the+-- index. These attributes are in addition to the primary key attributes and+-- index key attributes, which are automatically projected.+ddbgsiProjection :: Lens' DynamoDBGlobalSecondaryIndex DynamoDBProjectionObject+ddbgsiProjection = lens _dynamoDBGlobalSecondaryIndexProjection (\s a -> s { _dynamoDBGlobalSecondaryIndexProjection = a })++-- | The provisioned throughput settings for the index.+ddbgsiProvisionedThroughput :: Lens' DynamoDBGlobalSecondaryIndex DynamoDBProvisionedThroughput+ddbgsiProvisionedThroughput = lens _dynamoDBGlobalSecondaryIndexProvisionedThroughput (\s a -> s { _dynamoDBGlobalSecondaryIndexProvisionedThroughput = a })
+ library-gen/Stratosphere/ResourceProperties/DynamoDBKeySchema.hs view
@@ -0,0 +1,59 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE OverloadedStrings #-}++-- | Describes a primary key for the AWS::DynamoDB::Table resource or a key+-- schema for an index. Each element is composed of an AttributeName and+-- KeyType. For the primary key of an Amazon DynamoDB table that consists of+-- only a hash attribute, specify one element with a KeyType of HASH. For the+-- primary key of an Amazon DynamoDB table that consists of a hash and range+-- attributes, specify two elements: one with a KeyType of HASH and one with a+-- KeyType of RANGE. For a complete discussion of DynamoDB primary keys, see+-- Primary Key in the Amazon DynamoDB Developer Guide.++module Stratosphere.ResourceProperties.DynamoDBKeySchema where++import Control.Lens+import Data.Aeson+import Data.Aeson.Types+import Data.Text+import GHC.Generics++import Stratosphere.Values+import Stratosphere.Types++-- | Full data type definition for DynamoDBKeySchema. See 'dynamoDBKeySchema'+-- for a more convenient constructor.+data DynamoDBKeySchema =+ DynamoDBKeySchema+ { _dynamoDBKeySchemaAttributeName :: Val Text+ , _dynamoDBKeySchemaKeyType :: KeyType+ } deriving (Show, Generic)++instance ToJSON DynamoDBKeySchema where+ toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 18, omitNothingFields = True }++instance FromJSON DynamoDBKeySchema where+ parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 18, omitNothingFields = True }++-- | Constructor for 'DynamoDBKeySchema' containing required fields as+-- arguments.+dynamoDBKeySchema+ :: Val Text -- ^ 'ddbksAttributeName'+ -> KeyType -- ^ 'ddbksKeyType'+ -> DynamoDBKeySchema+dynamoDBKeySchema attributeNamearg keyTypearg =+ DynamoDBKeySchema+ { _dynamoDBKeySchemaAttributeName = attributeNamearg+ , _dynamoDBKeySchemaKeyType = keyTypearg+ }++-- | The attribute name that is used as the primary key for this table.+-- Primary key element names can be 1 – 255 characters long and have no+-- character restrictions.+ddbksAttributeName :: Lens' DynamoDBKeySchema (Val Text)+ddbksAttributeName = lens _dynamoDBKeySchemaAttributeName (\s a -> s { _dynamoDBKeySchemaAttributeName = a })++-- | Represents the attribute data, consisting of the data type and the+-- attribute value itself. You can specify HASH or RANGE.+ddbksKeyType :: Lens' DynamoDBKeySchema KeyType+ddbksKeyType = lens _dynamoDBKeySchemaKeyType (\s a -> s { _dynamoDBKeySchemaKeyType = a })
+ library-gen/Stratosphere/ResourceProperties/DynamoDBLocalSecondaryIndex.hs view
@@ -0,0 +1,66 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE OverloadedStrings #-}++-- | Describes local secondary indexes for the AWS::DynamoDB::Table resource.+-- Each index is scoped to a given hash key value. Tables with one or more+-- local secondary indexes are subject to an item collection size limit, where+-- the amount of data within a given item collection cannot exceed 10 GB.++module Stratosphere.ResourceProperties.DynamoDBLocalSecondaryIndex where++import Control.Lens+import Data.Aeson+import Data.Aeson.Types+import Data.Text+import GHC.Generics++import Stratosphere.Values+import Stratosphere.ResourceProperties.DynamoDBKeySchema+import Stratosphere.ResourceProperties.DynamoDBProjectionObject++-- | Full data type definition for DynamoDBLocalSecondaryIndex. See+-- 'dynamoDBLocalSecondaryIndex' for a more convenient constructor.+data DynamoDBLocalSecondaryIndex =+ DynamoDBLocalSecondaryIndex+ { _dynamoDBLocalSecondaryIndexIndexName :: Val Text+ , _dynamoDBLocalSecondaryIndexKeySchema :: [DynamoDBKeySchema]+ , _dynamoDBLocalSecondaryIndexProjection :: DynamoDBProjectionObject+ } deriving (Show, Generic)++instance ToJSON DynamoDBLocalSecondaryIndex where+ toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 28, omitNothingFields = True }++instance FromJSON DynamoDBLocalSecondaryIndex where+ parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 28, omitNothingFields = True }++-- | Constructor for 'DynamoDBLocalSecondaryIndex' containing required fields+-- as arguments.+dynamoDBLocalSecondaryIndex+ :: Val Text -- ^ 'ddblsiIndexName'+ -> [DynamoDBKeySchema] -- ^ 'ddblsiKeySchema'+ -> DynamoDBProjectionObject -- ^ 'ddblsiProjection'+ -> DynamoDBLocalSecondaryIndex+dynamoDBLocalSecondaryIndex indexNamearg keySchemaarg projectionarg =+ DynamoDBLocalSecondaryIndex+ { _dynamoDBLocalSecondaryIndexIndexName = indexNamearg+ , _dynamoDBLocalSecondaryIndexKeySchema = keySchemaarg+ , _dynamoDBLocalSecondaryIndexProjection = projectionarg+ }++-- | The name of the local secondary index. The index name can be 3 – 255+-- characters long and have no character restrictions.+ddblsiIndexName :: Lens' DynamoDBLocalSecondaryIndex (Val Text)+ddblsiIndexName = lens _dynamoDBLocalSecondaryIndexIndexName (\s a -> s { _dynamoDBLocalSecondaryIndexIndexName = a })++-- | The complete index key schema for the local secondary index, which+-- consists of one or more pairs of attribute names and key types. For local+-- secondary indexes, the hash key must be the same as that of the source+-- table.+ddblsiKeySchema :: Lens' DynamoDBLocalSecondaryIndex [DynamoDBKeySchema]+ddblsiKeySchema = lens _dynamoDBLocalSecondaryIndexKeySchema (\s a -> s { _dynamoDBLocalSecondaryIndexKeySchema = a })++-- | Attributes that are copied (projected) from the source table into the+-- index. These attributes are additions to the primary key attributes and+-- index key attributes, which are automatically projected.+ddblsiProjection :: Lens' DynamoDBLocalSecondaryIndex DynamoDBProjectionObject+ddblsiProjection = lens _dynamoDBLocalSecondaryIndexProjection (\s a -> s { _dynamoDBLocalSecondaryIndexProjection = a })
+ library-gen/Stratosphere/ResourceProperties/DynamoDBProjectionObject.hs view
@@ -0,0 +1,57 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE OverloadedStrings #-}++-- | Attributes that are copied (projected) from the source table into the+-- index. These attributes are additions to the primary key attributes and+-- index key attributes, which are automatically projected.++module Stratosphere.ResourceProperties.DynamoDBProjectionObject where++import Control.Lens+import Data.Aeson+import Data.Aeson.Types+import Data.Text+import GHC.Generics++import Stratosphere.Values+import Stratosphere.Types++-- | Full data type definition for DynamoDBProjectionObject. See+-- 'dynamoDBProjectionObject' for a more convenient constructor.+data DynamoDBProjectionObject =+ DynamoDBProjectionObject+ { _dynamoDBProjectionObjectNonKeyAttributes :: Maybe [Val Text]+ , _dynamoDBProjectionObjectProjectionType :: Maybe ProjectionType+ } deriving (Show, Generic)++instance ToJSON DynamoDBProjectionObject where+ toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 25, omitNothingFields = True }++instance FromJSON DynamoDBProjectionObject where+ parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 25, omitNothingFields = True }++-- | Constructor for 'DynamoDBProjectionObject' containing required fields as+-- arguments.+dynamoDBProjectionObject+ :: DynamoDBProjectionObject+dynamoDBProjectionObject =+ DynamoDBProjectionObject+ { _dynamoDBProjectionObjectNonKeyAttributes = Nothing+ , _dynamoDBProjectionObjectProjectionType = Nothing+ }++-- | The non-key attribute names that are projected into the index. For local+-- secondary indexes, the total count of NonKeyAttributes summed across all of+-- the local secondary indexes must not exceed 20. If you project the same+-- attribute into two different indexes, this counts as two distinct+-- attributes in determining the total.+ddbpoNonKeyAttributes :: Lens' DynamoDBProjectionObject (Maybe [Val Text])+ddbpoNonKeyAttributes = lens _dynamoDBProjectionObjectNonKeyAttributes (\s a -> s { _dynamoDBProjectionObjectNonKeyAttributes = a })++-- | The set of attributes that are projected into the index: Only the index+-- and primary keys are projected into the index. Only the specified table+-- attributes are projected into the index. The list of projected attributes+-- are in NonKeyAttributes. All of the table attributes are projected into the+-- index.+ddbpoProjectionType :: Lens' DynamoDBProjectionObject (Maybe ProjectionType)+ddbpoProjectionType = lens _dynamoDBProjectionObjectProjectionType (\s a -> s { _dynamoDBProjectionObjectProjectionType = a })
+ library-gen/Stratosphere/ResourceProperties/DynamoDBProvisionedThroughput.hs view
@@ -0,0 +1,57 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE OverloadedStrings #-}++-- | Describes a set of provisioned throughput values for an+-- AWS::DynamoDB::Table resource. DynamoDB uses these capacity units to+-- allocate sufficient resources to provide the requested throughput. For a+-- complete discussion of DynamoDB provisioned throughput values, see+-- Specifying Read and Write Requirements in the DynamoDB Developer Guide.++module Stratosphere.ResourceProperties.DynamoDBProvisionedThroughput where++import Control.Lens+import Data.Aeson+import Data.Aeson.Types+import Data.Text+import GHC.Generics++import Stratosphere.Values+++-- | Full data type definition for DynamoDBProvisionedThroughput. See+-- 'dynamoDBProvisionedThroughput' for a more convenient constructor.+data DynamoDBProvisionedThroughput =+ DynamoDBProvisionedThroughput+ { _dynamoDBProvisionedThroughputReadCapacityUnits :: Val Integer'+ , _dynamoDBProvisionedThroughputWriteCapacityUnits :: Val Integer'+ } deriving (Show, Generic)++instance ToJSON DynamoDBProvisionedThroughput where+ toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 30, omitNothingFields = True }++instance FromJSON DynamoDBProvisionedThroughput where+ parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 30, omitNothingFields = True }++-- | Constructor for 'DynamoDBProvisionedThroughput' containing required+-- fields as arguments.+dynamoDBProvisionedThroughput+ :: Val Integer' -- ^ 'ddbptReadCapacityUnits'+ -> Val Integer' -- ^ 'ddbptWriteCapacityUnits'+ -> DynamoDBProvisionedThroughput+dynamoDBProvisionedThroughput readCapacityUnitsarg writeCapacityUnitsarg =+ DynamoDBProvisionedThroughput+ { _dynamoDBProvisionedThroughputReadCapacityUnits = readCapacityUnitsarg+ , _dynamoDBProvisionedThroughputWriteCapacityUnits = writeCapacityUnitsarg+ }++-- | Sets the desired minimum number of consistent reads of items (up to 1KB+-- in size) per second for the specified table before Amazon DynamoDB balances+-- the load.+ddbptReadCapacityUnits :: Lens' DynamoDBProvisionedThroughput (Val Integer')+ddbptReadCapacityUnits = lens _dynamoDBProvisionedThroughputReadCapacityUnits (\s a -> s { _dynamoDBProvisionedThroughputReadCapacityUnits = a })++-- | Sets the desired minimum number of consistent writes of items (up to 1KB+-- in size) per second for the specified table before Amazon DynamoDB balances+-- the load.+ddbptWriteCapacityUnits :: Lens' DynamoDBProvisionedThroughput (Val Integer')+ddbptWriteCapacityUnits = lens _dynamoDBProvisionedThroughputWriteCapacityUnits (\s a -> s { _dynamoDBProvisionedThroughputWriteCapacityUnits = a })
+ library-gen/Stratosphere/ResourceProperties/DynamoDBStreamSpecification.hs view
@@ -0,0 +1,45 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE OverloadedStrings #-}++-- | StreamSpecification is a property of the AWS::DynamoDB::Table resource+-- that defines the settings of a DynamoDB table's stream.++module Stratosphere.ResourceProperties.DynamoDBStreamSpecification where++import Control.Lens+import Data.Aeson+import Data.Aeson.Types+import Data.Text+import GHC.Generics++import Stratosphere.Values+import Stratosphere.Types++-- | Full data type definition for DynamoDBStreamSpecification. See+-- 'dynamoDBStreamSpecification' for a more convenient constructor.+data DynamoDBStreamSpecification =+ DynamoDBStreamSpecification+ { _dynamoDBStreamSpecificationStreamViewType :: StreamViewType+ } deriving (Show, Generic)++instance ToJSON DynamoDBStreamSpecification where+ toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 28, omitNothingFields = True }++instance FromJSON DynamoDBStreamSpecification where+ parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 28, omitNothingFields = True }++-- | Constructor for 'DynamoDBStreamSpecification' containing required fields+-- as arguments.+dynamoDBStreamSpecification+ :: StreamViewType -- ^ 'ddbssStreamViewType'+ -> DynamoDBStreamSpecification+dynamoDBStreamSpecification streamViewTypearg =+ DynamoDBStreamSpecification+ { _dynamoDBStreamSpecificationStreamViewType = streamViewTypearg+ }++-- | Determines the information that the stream captures when an item in the+-- table is modified. For valid values, see StreamSpecification in the Amazon+-- DynamoDB API Reference.+ddbssStreamViewType :: Lens' DynamoDBStreamSpecification StreamViewType+ddbssStreamViewType = lens _dynamoDBStreamSpecificationStreamViewType (\s a -> s { _dynamoDBStreamSpecificationStreamViewType = a })
+ library-gen/Stratosphere/ResourceProperties/SNSTopicSubscription.hs view
@@ -0,0 +1,54 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE OverloadedStrings #-}++-- | Subscription is an embedded property of the AWS::SNS::Topic resource that+-- describes the subscription endpoints for an Amazon Simple Notification+-- Service (Amazon SNS) topic.++module Stratosphere.ResourceProperties.SNSTopicSubscription where++import Control.Lens+import Data.Aeson+import Data.Aeson.Types+import Data.Text+import GHC.Generics++import Stratosphere.Values+import Stratosphere.Types++-- | Full data type definition for SNSTopicSubscription. See+-- 'snsTopicSubscription' for a more convenient constructor.+data SNSTopicSubscription =+ SNSTopicSubscription+ { _sNSTopicSubscriptionEndpoint :: Val Text+ , _sNSTopicSubscriptionProtocol :: SNSProtocol+ } deriving (Show, Generic)++instance ToJSON SNSTopicSubscription where+ toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 21, omitNothingFields = True }++instance FromJSON SNSTopicSubscription where+ parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 21, omitNothingFields = True }++-- | Constructor for 'SNSTopicSubscription' containing required fields as+-- arguments.+snsTopicSubscription+ :: Val Text -- ^ 'snstsEndpoint'+ -> SNSProtocol -- ^ 'snstsProtocol'+ -> SNSTopicSubscription+snsTopicSubscription endpointarg protocolarg =+ SNSTopicSubscription+ { _sNSTopicSubscriptionEndpoint = endpointarg+ , _sNSTopicSubscriptionProtocol = protocolarg+ }++-- | The subscription's endpoint (format depends on the protocol). For more+-- information, see the Subscribe Endpoint parameter in the Amazon Simple+-- Notification Service API Reference.+snstsEndpoint :: Lens' SNSTopicSubscription (Val Text)+snstsEndpoint = lens _sNSTopicSubscriptionEndpoint (\s a -> s { _sNSTopicSubscriptionEndpoint = a })++-- | The subscription's protocol. For more information, see the Subscribe+-- Protocol parameter in the Amazon Simple Notification Service API Reference.+snstsProtocol :: Lens' SNSTopicSubscription SNSProtocol+snstsProtocol = lens _sNSTopicSubscriptionProtocol (\s a -> s { _sNSTopicSubscriptionProtocol = a })
+ library-gen/Stratosphere/ResourceProperties/SQSRedrivePolicy.hs view
@@ -0,0 +1,50 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE OverloadedStrings #-}++-- | The RedrivePolicy type is a property of the AWS::SQS::Queue resource.++module Stratosphere.ResourceProperties.SQSRedrivePolicy where++import Control.Lens+import Data.Aeson+import Data.Aeson.Types+import Data.Text+import GHC.Generics++import Stratosphere.Values+++-- | Full data type definition for SQSRedrivePolicy. See 'sqsRedrivePolicy'+-- for a more convenient constructor.+data SQSRedrivePolicy =+ SQSRedrivePolicy+ { _sQSRedrivePolicydeadLetterTargetArn :: Val Text+ , _sQSRedrivePolicymaxReceiveCount :: Maybe (Val Integer')+ } deriving (Show, Generic)++instance ToJSON SQSRedrivePolicy where+ toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 17, omitNothingFields = True }++instance FromJSON SQSRedrivePolicy where+ parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 17, omitNothingFields = True }++-- | Constructor for 'SQSRedrivePolicy' containing required fields as+-- arguments.+sqsRedrivePolicy+ :: Val Text -- ^ 'sqsrpdeadLetterTargetArn'+ -> SQSRedrivePolicy+sqsRedrivePolicy deadLetterTargetArnarg =+ SQSRedrivePolicy+ { _sQSRedrivePolicydeadLetterTargetArn = deadLetterTargetArnarg+ , _sQSRedrivePolicymaxReceiveCount = Nothing+ }++-- | The Amazon Resource Name (ARN) of the dead letter queue to which the+-- messages are sent to after the maxReceiveCount value has been exceeded.+sqsrpdeadLetterTargetArn :: Lens' SQSRedrivePolicy (Val Text)+sqsrpdeadLetterTargetArn = lens _sQSRedrivePolicydeadLetterTargetArn (\s a -> s { _sQSRedrivePolicydeadLetterTargetArn = a })++-- | The number of times a message is delivered to the source queue before+-- being sent to the dead letter queue.+sqsrpmaxReceiveCount :: Lens' SQSRedrivePolicy (Maybe (Val Integer'))+sqsrpmaxReceiveCount = lens _sQSRedrivePolicymaxReceiveCount (\s a -> s { _sQSRedrivePolicymaxReceiveCount = a })
library-gen/Stratosphere/Resources.hs view
@@ -59,16 +59,20 @@ import Stratosphere.Resources.DBSecurityGroupIngress as X import Stratosphere.Resources.DBSubnetGroup as X import Stratosphere.Resources.DeliveryStream as X+import Stratosphere.Resources.DynamoDBTable as X import Stratosphere.Resources.EC2Instance as X import Stratosphere.Resources.EIP as X import Stratosphere.Resources.EIPAssociation as X+import Stratosphere.Resources.EventsRule as X import Stratosphere.Resources.Group as X import Stratosphere.Resources.IAMRole as X import Stratosphere.Resources.InstanceProfile as X import Stratosphere.Resources.InternetGateway as X import Stratosphere.Resources.KinesisStream as X+import Stratosphere.Resources.LambdaAlias as X import Stratosphere.Resources.LambdaFunction as X import Stratosphere.Resources.LambdaPermission as X+import Stratosphere.Resources.LambdaVersion as X import Stratosphere.Resources.LaunchConfiguration as X import Stratosphere.Resources.LifecycleHook as X import Stratosphere.Resources.LoadBalancer as X@@ -82,6 +86,11 @@ import Stratosphere.Resources.Route as X import Stratosphere.Resources.RouteTable as X import Stratosphere.Resources.S3BucketPolicy as X+import Stratosphere.Resources.SNSSubscription as X+import Stratosphere.Resources.SNSTopic as X+import Stratosphere.Resources.SNSTopicPolicy as X+import Stratosphere.Resources.SQSQueue as X+import Stratosphere.Resources.SQSQueuePolicy as X import Stratosphere.Resources.ScalingPolicy as X import Stratosphere.Resources.ScheduledAction as X import Stratosphere.Resources.SecurityGroup as X@@ -119,6 +128,13 @@ import Stratosphere.ResourceProperties.AutoScalingTags as X import Stratosphere.ResourceProperties.ConnectionDrainingPolicy as X import Stratosphere.ResourceProperties.ConnectionSettings as X+import Stratosphere.ResourceProperties.DynamoDBAttributeDefinition as X+import Stratosphere.ResourceProperties.DynamoDBGlobalSecondaryIndex as X+import Stratosphere.ResourceProperties.DynamoDBKeySchema as X+import Stratosphere.ResourceProperties.DynamoDBLocalSecondaryIndex as X+import Stratosphere.ResourceProperties.DynamoDBProjectionObject as X+import Stratosphere.ResourceProperties.DynamoDBProvisionedThroughput as X+import Stratosphere.ResourceProperties.DynamoDBStreamSpecification as X import Stratosphere.ResourceProperties.EBSBlockDevice as X import Stratosphere.ResourceProperties.EC2BlockDeviceMapping as X import Stratosphere.ResourceProperties.EC2MountPoint as X@@ -169,6 +185,8 @@ import Stratosphere.ResourceProperties.S3WebsiteRedirectRule as X import Stratosphere.ResourceProperties.S3WebsiteRoutingRuleCondition as X import Stratosphere.ResourceProperties.S3WebsiteRoutingRules as X+import Stratosphere.ResourceProperties.SNSTopicSubscription as X+import Stratosphere.ResourceProperties.SQSRedrivePolicy as X import Stratosphere.ResourceProperties.SecurityGroupEgressRule as X import Stratosphere.ResourceProperties.SecurityGroupIngressRule as X import Stratosphere.ResourceProperties.StepAdjustments as X@@ -204,16 +222,20 @@ | DBSecurityGroupIngressProperties DBSecurityGroupIngress | DBSubnetGroupProperties DBSubnetGroup | DeliveryStreamProperties DeliveryStream+ | DynamoDBTableProperties DynamoDBTable | EC2InstanceProperties EC2Instance | EIPProperties EIP | EIPAssociationProperties EIPAssociation+ | EventsRuleProperties EventsRule | GroupProperties Group | IAMRoleProperties IAMRole | InstanceProfileProperties InstanceProfile | InternetGatewayProperties InternetGateway | KinesisStreamProperties KinesisStream+ | LambdaAliasProperties LambdaAlias | LambdaFunctionProperties LambdaFunction | LambdaPermissionProperties LambdaPermission+ | LambdaVersionProperties LambdaVersion | LaunchConfigurationProperties LaunchConfiguration | LifecycleHookProperties LifecycleHook | LoadBalancerProperties LoadBalancer@@ -227,6 +249,11 @@ | RouteProperties Route | RouteTableProperties RouteTable | S3BucketPolicyProperties S3BucketPolicy+ | SNSSubscriptionProperties SNSSubscription+ | SNSTopicProperties SNSTopic+ | SNSTopicPolicyProperties SNSTopicPolicy+ | SQSQueueProperties SQSQueue+ | SQSQueuePolicyProperties SQSQueuePolicy | ScalingPolicyProperties ScalingPolicy | ScheduledActionProperties ScheduledAction | SecurityGroupProperties SecurityGroup@@ -333,12 +360,16 @@ [ "Type" .= ("AWS::RDS::DBSubnetGroup" :: String), "Properties" .= toJSON x] resourcePropertiesJSON (DeliveryStreamProperties x) = [ "Type" .= ("AWS::KinesisFirehose::DeliveryStream" :: String), "Properties" .= toJSON x]+resourcePropertiesJSON (DynamoDBTableProperties x) =+ [ "Type" .= ("AWS::DynamoDB::Table" :: String), "Properties" .= toJSON x] resourcePropertiesJSON (EC2InstanceProperties x) = [ "Type" .= ("AWS::EC2::Instance" :: String), "Properties" .= toJSON x] resourcePropertiesJSON (EIPProperties x) = [ "Type" .= ("AWS::EC2::EIP" :: String), "Properties" .= toJSON x] resourcePropertiesJSON (EIPAssociationProperties x) = [ "Type" .= ("AWS::EC2::EIPAssociation" :: String), "Properties" .= toJSON x]+resourcePropertiesJSON (EventsRuleProperties x) =+ [ "Type" .= ("AWS::Events::Rule" :: String), "Properties" .= toJSON x] resourcePropertiesJSON (GroupProperties x) = [ "Type" .= ("AWS::IAM::Group" :: String), "Properties" .= toJSON x] resourcePropertiesJSON (IAMRoleProperties x) =@@ -349,10 +380,14 @@ [ "Type" .= ("AWS::EC2::InternetGateway" :: String), "Properties" .= toJSON x] resourcePropertiesJSON (KinesisStreamProperties x) = [ "Type" .= ("AWS::Kinesis::Stream" :: String), "Properties" .= toJSON x]+resourcePropertiesJSON (LambdaAliasProperties x) =+ [ "Type" .= ("AWS::Lambda::Alias" :: String), "Properties" .= toJSON x] resourcePropertiesJSON (LambdaFunctionProperties x) = [ "Type" .= ("AWS::Lambda::Function" :: String), "Properties" .= toJSON x] resourcePropertiesJSON (LambdaPermissionProperties x) = [ "Type" .= ("AWS::Lambda::Permission" :: String), "Properties" .= toJSON x]+resourcePropertiesJSON (LambdaVersionProperties x) =+ [ "Type" .= ("AWS::Lambda::Version" :: String), "Properties" .= toJSON x] resourcePropertiesJSON (LaunchConfigurationProperties x) = [ "Type" .= ("AWS::AutoScaling::LaunchConfiguration" :: String), "Properties" .= toJSON x] resourcePropertiesJSON (LifecycleHookProperties x) =@@ -379,6 +414,16 @@ [ "Type" .= ("AWS::EC2::RouteTable" :: String), "Properties" .= toJSON x] resourcePropertiesJSON (S3BucketPolicyProperties x) = [ "Type" .= ("AWS::S3::BucketPolicy" :: String), "Properties" .= toJSON x]+resourcePropertiesJSON (SNSSubscriptionProperties x) =+ [ "Type" .= ("AWS::SNS::Subscription" :: String), "Properties" .= toJSON x]+resourcePropertiesJSON (SNSTopicProperties x) =+ [ "Type" .= ("AWS::SNS::Topic" :: String), "Properties" .= toJSON x]+resourcePropertiesJSON (SNSTopicPolicyProperties x) =+ [ "Type" .= ("AWS::SNS::TopicPolicy" :: String), "Properties" .= toJSON x]+resourcePropertiesJSON (SQSQueueProperties x) =+ [ "Type" .= ("AWS::SQS::Queue" :: String), "Properties" .= toJSON x]+resourcePropertiesJSON (SQSQueuePolicyProperties x) =+ [ "Type" .= ("AWS::SQS::QueuePolicy" :: String), "Properties" .= toJSON x] resourcePropertiesJSON (ScalingPolicyProperties x) = [ "Type" .= ("AWS::AutoScaling::ScalingPolicy" :: String), "Properties" .= toJSON x] resourcePropertiesJSON (ScheduledActionProperties x) =@@ -436,16 +481,20 @@ "AWS::RDS::DBSecurityGroupIngress" -> DBSecurityGroupIngressProperties <$> (o .: "Properties") "AWS::RDS::DBSubnetGroup" -> DBSubnetGroupProperties <$> (o .: "Properties") "AWS::KinesisFirehose::DeliveryStream" -> DeliveryStreamProperties <$> (o .: "Properties")+ "AWS::DynamoDB::Table" -> DynamoDBTableProperties <$> (o .: "Properties") "AWS::EC2::Instance" -> EC2InstanceProperties <$> (o .: "Properties") "AWS::EC2::EIP" -> EIPProperties <$> (o .: "Properties") "AWS::EC2::EIPAssociation" -> EIPAssociationProperties <$> (o .: "Properties")+ "AWS::Events::Rule" -> EventsRuleProperties <$> (o .: "Properties") "AWS::IAM::Group" -> GroupProperties <$> (o .: "Properties") "AWS::IAM::Role" -> IAMRoleProperties <$> (o .: "Properties") "AWS::IAM::InstanceProfile" -> InstanceProfileProperties <$> (o .: "Properties") "AWS::EC2::InternetGateway" -> InternetGatewayProperties <$> (o .: "Properties") "AWS::Kinesis::Stream" -> KinesisStreamProperties <$> (o .: "Properties")+ "AWS::Lambda::Alias" -> LambdaAliasProperties <$> (o .: "Properties") "AWS::Lambda::Function" -> LambdaFunctionProperties <$> (o .: "Properties") "AWS::Lambda::Permission" -> LambdaPermissionProperties <$> (o .: "Properties")+ "AWS::Lambda::Version" -> LambdaVersionProperties <$> (o .: "Properties") "AWS::AutoScaling::LaunchConfiguration" -> LaunchConfigurationProperties <$> (o .: "Properties") "AWS::AutoScaling::LifecycleHook" -> LifecycleHookProperties <$> (o .: "Properties") "AWS::ElasticLoadBalancing::LoadBalancer" -> LoadBalancerProperties <$> (o .: "Properties")@@ -459,6 +508,11 @@ "AWS::EC2::Route" -> RouteProperties <$> (o .: "Properties") "AWS::EC2::RouteTable" -> RouteTableProperties <$> (o .: "Properties") "AWS::S3::BucketPolicy" -> S3BucketPolicyProperties <$> (o .: "Properties")+ "AWS::SNS::Subscription" -> SNSSubscriptionProperties <$> (o .: "Properties")+ "AWS::SNS::Topic" -> SNSTopicProperties <$> (o .: "Properties")+ "AWS::SNS::TopicPolicy" -> SNSTopicPolicyProperties <$> (o .: "Properties")+ "AWS::SQS::Queue" -> SQSQueueProperties <$> (o .: "Properties")+ "AWS::SQS::QueuePolicy" -> SQSQueuePolicyProperties <$> (o .: "Properties") "AWS::AutoScaling::ScalingPolicy" -> ScalingPolicyProperties <$> (o .: "Properties") "AWS::AutoScaling::ScheduledAction" -> ScheduledActionProperties <$> (o .: "Properties") "AWS::EC2::SecurityGroup" -> SecurityGroupProperties <$> (o .: "Properties")
library-gen/Stratosphere/Resources/ApiGatewayMethod.hs view
@@ -16,15 +16,16 @@ import Stratosphere.Values import Stratosphere.ResourceProperties.ApiGatewayIntegration import Stratosphere.ResourceProperties.ApiGatewayMethodResponse+import Stratosphere.Types -- | Full data type definition for ApiGatewayMethod. See 'apiGatewayMethod' -- for a more convenient constructor. data ApiGatewayMethod = ApiGatewayMethod { _apiGatewayMethodApiKeyRequired :: Maybe (Val Bool')- , _apiGatewayMethodAuthorizationType :: Val Text+ , _apiGatewayMethodAuthorizationType :: AuthorizationType , _apiGatewayMethodAuthorizerId :: Maybe (Val Text)- , _apiGatewayMethodHttpMethod :: Val Text+ , _apiGatewayMethodHttpMethod :: HttpMethod , _apiGatewayMethodIntegration :: Maybe ApiGatewayIntegration , _apiGatewayMethodMethodResponses :: Maybe [ApiGatewayMethodResponse] , _apiGatewayMethodRequestModels :: Maybe Object@@ -42,8 +43,8 @@ -- | Constructor for 'ApiGatewayMethod' containing required fields as -- arguments. apiGatewayMethod- :: Val Text -- ^ 'agmeAuthorizationType'- -> Val Text -- ^ 'agmeHttpMethod'+ :: AuthorizationType -- ^ 'agmeAuthorizationType'+ -> HttpMethod -- ^ 'agmeHttpMethod' -> Val Text -- ^ 'agmeResourceId' -> Val Text -- ^ 'agmeRestApiId' -> ApiGatewayMethod@@ -66,7 +67,7 @@ agmeApiKeyRequired = lens _apiGatewayMethodApiKeyRequired (\s a -> s { _apiGatewayMethodApiKeyRequired = a }) -- | The method's authorization type.-agmeAuthorizationType :: Lens' ApiGatewayMethod (Val Text)+agmeAuthorizationType :: Lens' ApiGatewayMethod AuthorizationType agmeAuthorizationType = lens _apiGatewayMethodAuthorizationType (\s a -> s { _apiGatewayMethodAuthorizationType = a }) -- | The identifier of the authorizer to use on this method. If you specify@@ -75,7 +76,7 @@ agmeAuthorizerId = lens _apiGatewayMethodAuthorizerId (\s a -> s { _apiGatewayMethodAuthorizerId = a }) -- | The HTTP method that clients will use to call this method.-agmeHttpMethod :: Lens' ApiGatewayMethod (Val Text)+agmeHttpMethod :: Lens' ApiGatewayMethod HttpMethod agmeHttpMethod = lens _apiGatewayMethodHttpMethod (\s a -> s { _apiGatewayMethodHttpMethod = a }) -- | The back-end system that the method calls when it receives a request.
+ library-gen/Stratosphere/Resources/DynamoDBTable.hs view
@@ -0,0 +1,108 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE OverloadedStrings #-}++-- | Creates a DynamoDB table.++module Stratosphere.Resources.DynamoDBTable where++import Control.Lens+import Data.Aeson+import Data.Aeson.Types+import Data.Text+import GHC.Generics++import Stratosphere.Values+import Stratosphere.ResourceProperties.DynamoDBAttributeDefinition+import Stratosphere.ResourceProperties.DynamoDBGlobalSecondaryIndex+import Stratosphere.ResourceProperties.DynamoDBKeySchema+import Stratosphere.ResourceProperties.DynamoDBLocalSecondaryIndex+import Stratosphere.ResourceProperties.DynamoDBProvisionedThroughput+import Stratosphere.ResourceProperties.DynamoDBStreamSpecification++-- | Full data type definition for DynamoDBTable. See 'dynamoDBTable' for a+-- more convenient constructor.+data DynamoDBTable =+ DynamoDBTable+ { _dynamoDBTableAttributeDefinitions :: [DynamoDBAttributeDefinition]+ , _dynamoDBTableGlobalSecondaryIndexes :: Maybe [DynamoDBGlobalSecondaryIndex]+ , _dynamoDBTableKeySchema :: [DynamoDBKeySchema]+ , _dynamoDBTableLocalSecondaryIndexes :: Maybe [DynamoDBLocalSecondaryIndex]+ , _dynamoDBTableProvisionedThroughput :: DynamoDBProvisionedThroughput+ , _dynamoDBTableStreamSpecification :: Maybe DynamoDBStreamSpecification+ , _dynamoDBTableTableName :: Maybe (Val Text)+ } deriving (Show, Generic)++instance ToJSON DynamoDBTable where+ toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 14, omitNothingFields = True }++instance FromJSON DynamoDBTable where+ parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 14, omitNothingFields = True }++-- | Constructor for 'DynamoDBTable' containing required fields as arguments.+dynamoDBTable+ :: [DynamoDBAttributeDefinition] -- ^ 'ddbtAttributeDefinitions'+ -> [DynamoDBKeySchema] -- ^ 'ddbtKeySchema'+ -> DynamoDBProvisionedThroughput -- ^ 'ddbtProvisionedThroughput'+ -> DynamoDBTable+dynamoDBTable attributeDefinitionsarg keySchemaarg provisionedThroughputarg =+ DynamoDBTable+ { _dynamoDBTableAttributeDefinitions = attributeDefinitionsarg+ , _dynamoDBTableGlobalSecondaryIndexes = Nothing+ , _dynamoDBTableKeySchema = keySchemaarg+ , _dynamoDBTableLocalSecondaryIndexes = Nothing+ , _dynamoDBTableProvisionedThroughput = provisionedThroughputarg+ , _dynamoDBTableStreamSpecification = Nothing+ , _dynamoDBTableTableName = Nothing+ }++-- | A list of AttributeName and AttributeType objects that describe the key+-- schema for the table and indexes.+ddbtAttributeDefinitions :: Lens' DynamoDBTable [DynamoDBAttributeDefinition]+ddbtAttributeDefinitions = lens _dynamoDBTableAttributeDefinitions (\s a -> s { _dynamoDBTableAttributeDefinitions = a })++-- | Global secondary indexes to be created on the table. You can create up to+-- 5 global secondary indexes. Important If you update a table to include a+-- new global secondary index, AWS CloudFormation initiates the index creation+-- and then proceeds with the stack update. AWS CloudFormation doesn't wait+-- for the index to complete creation because the backfilling phase can take a+-- long time, depending on the size of the table. You cannot use the index or+-- update the table until the index's status is ACTIVE. You can track its+-- status by using the DynamoDB DescribeTable command. If you add or delete an+-- index during an update, we recommend that you don't update any other+-- resources. If your stack fails to update and is rolled back while adding a+-- new index, you must manually delete the index.+ddbtGlobalSecondaryIndexes :: Lens' DynamoDBTable (Maybe [DynamoDBGlobalSecondaryIndex])+ddbtGlobalSecondaryIndexes = lens _dynamoDBTableGlobalSecondaryIndexes (\s a -> s { _dynamoDBTableGlobalSecondaryIndexes = a })++-- | Specifies the attributes that make up the primary key for the table. The+-- attributes in the KeySchema property must also be defined in the+-- AttributeDefinitions property.+ddbtKeySchema :: Lens' DynamoDBTable [DynamoDBKeySchema]+ddbtKeySchema = lens _dynamoDBTableKeySchema (\s a -> s { _dynamoDBTableKeySchema = a })++-- | Local secondary indexes to be created on the table. You can create up to+-- 5 local secondary indexes. Each index is scoped to a given hash key value.+-- The size of each hash key can be up to 10 gigabytes.+ddbtLocalSecondaryIndexes :: Lens' DynamoDBTable (Maybe [DynamoDBLocalSecondaryIndex])+ddbtLocalSecondaryIndexes = lens _dynamoDBTableLocalSecondaryIndexes (\s a -> s { _dynamoDBTableLocalSecondaryIndexes = a })++-- | Throughput for the specified table, consisting of values for+-- ReadCapacityUnits and WriteCapacityUnits. For more information about the+-- contents of a provisioned throughput structure, see DynamoDB Provisioned+-- Throughput.+ddbtProvisionedThroughput :: Lens' DynamoDBTable DynamoDBProvisionedThroughput+ddbtProvisionedThroughput = lens _dynamoDBTableProvisionedThroughput (\s a -> s { _dynamoDBTableProvisionedThroughput = a })++-- | The settings for the DynamoDB table stream, which capture changes to+-- items stored in the table.+ddbtStreamSpecification :: Lens' DynamoDBTable (Maybe DynamoDBStreamSpecification)+ddbtStreamSpecification = lens _dynamoDBTableStreamSpecification (\s a -> s { _dynamoDBTableStreamSpecification = a })++-- | A name for the table. If you don't specify a name, AWS CloudFormation+-- generates a unique physical ID and uses that ID for the table name. For+-- more information, see Name Type. Important If you specify a name, you+-- cannot do updates that require this resource to be replaced. You can still+-- do updates that require no or some interruption. If you must replace the+-- resource, specify a new name.+ddbtTableName :: Lens' DynamoDBTable (Maybe (Val Text))+ddbtTableName = lens _dynamoDBTableTableName (\s a -> s { _dynamoDBTableTableName = a })
+ library-gen/Stratosphere/Resources/EventsRule.hs view
@@ -0,0 +1,95 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE OverloadedStrings #-}++-- | The AWS::Events::Rule resource creates a rule that matches incoming+-- Amazon CloudWatch Events (CloudWatch Events) events and routes them to one+-- or more targets for processing. For more information, see Using CloudWatch+-- Events in the Amazon CloudWatch User Guide.++module Stratosphere.Resources.EventsRule where++import Control.Lens+import Data.Aeson+import Data.Aeson.Types+import Data.Text+import GHC.Generics++import Stratosphere.Values+import Stratosphere.Types++-- | Full data type definition for EventsRule. See 'eventsRule' for a more+-- convenient constructor.+data EventsRule =+ EventsRule+ { _eventsRuleDescription :: Maybe (Val Text)+ , _eventsRuleEventPattern :: Maybe Object+ , _eventsRuleName :: Maybe (Val Text)+ , _eventsRuleRoleArn :: Maybe (Val Text)+ , _eventsRuleScheduleExpression :: Maybe (Val Text)+ , _eventsRuleState :: Maybe EnabledState+ , _eventsRuleTargets :: Maybe [Object]+ } deriving (Show, Generic)++instance ToJSON EventsRule where+ toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 11, omitNothingFields = True }++instance FromJSON EventsRule where+ parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 11, omitNothingFields = True }++-- | Constructor for 'EventsRule' containing required fields as arguments.+eventsRule+ :: EventsRule+eventsRule =+ EventsRule+ { _eventsRuleDescription = Nothing+ , _eventsRuleEventPattern = Nothing+ , _eventsRuleName = Nothing+ , _eventsRuleRoleArn = Nothing+ , _eventsRuleScheduleExpression = Nothing+ , _eventsRuleState = Nothing+ , _eventsRuleTargets = Nothing+ }++-- | A description of the rule's purpose.+erDescription :: Lens' EventsRule (Maybe (Val Text))+erDescription = lens _eventsRuleDescription (\s a -> s { _eventsRuleDescription = a })++-- | Describes which events CloudWatch Events routes to the specified target.+-- These routed events are matched events. For more information, see Events+-- and Event Patterns in the Amazon CloudWatch User Guide.+erEventPattern :: Lens' EventsRule (Maybe Object)+erEventPattern = lens _eventsRuleEventPattern (\s a -> s { _eventsRuleEventPattern = a })++-- | A name for the rule. If you don't specify a name, AWS CloudFormation+-- generates a unique physical ID and uses that ID for the rule name. For more+-- information, see Name Type. Important If you specify a name, you cannot do+-- updates that require this resource to be replaced. You can still do updates+-- that require no or some interruption. If you must replace the resource,+-- specify a new name.+erName :: Lens' EventsRule (Maybe (Val Text))+erName = lens _eventsRuleName (\s a -> s { _eventsRuleName = a })++-- | The Amazon Resource Name (ARN) of the AWS Identity and Access Management+-- (IAM) role that grants CloudWatch Events permission to make calls to target+-- services, such as AWS Lambda (Lambda) or Amazon Kinesis streams.+erRoleArn :: Lens' EventsRule (Maybe (Val Text))+erRoleArn = lens _eventsRuleRoleArn (\s a -> s { _eventsRuleRoleArn = a })++-- | The schedule or rate (frequency) that determines when CloudWatch Events+-- runs the rule. For more information, see Schedule Expression Syntax for+-- Rules in the Amazon CloudWatch User Guide.+erScheduleExpression :: Lens' EventsRule (Maybe (Val Text))+erScheduleExpression = lens _eventsRuleScheduleExpression (\s a -> s { _eventsRuleScheduleExpression = a })++-- | Indicates whether the rule is enabled. For valid values, see the State+-- parameter for the PutRule action in the Amazon CloudWatch Events API+-- Reference.+erState :: Lens' EventsRule (Maybe EnabledState)+erState = lens _eventsRuleState (\s a -> s { _eventsRuleState = a })++-- | The resources, such as Lambda functions or Amazon Kinesis streams, that+-- CloudWatch Events routes events to and invokes when the rule is triggered.+-- For information about valid targets, see the PutTargets action in the+-- Amazon CloudWatch Events API Reference.+erTargets :: Lens' EventsRule (Maybe [Object])+erTargets = lens _eventsRuleTargets (\s a -> s { _eventsRuleTargets = a })
+ library-gen/Stratosphere/Resources/LambdaAlias.hs view
@@ -0,0 +1,70 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE OverloadedStrings #-}++-- | The AWS::Lambda::Alias resource creates an alias that points to the+-- version of an AWS Lambda (Lambda) function that you specify. Use aliases+-- when you want to control which version of your function other services or+-- applications invoke. Those services or applications can use your function's+-- alias so that they don't need to be updated whenever you release a new+-- version of your function. For more information, see Introduction to AWS+-- Lambda Aliases in the AWS Lambda Developer Guide.++module Stratosphere.Resources.LambdaAlias where++import Control.Lens+import Data.Aeson+import Data.Aeson.Types+import Data.Text+import GHC.Generics++import Stratosphere.Values+++-- | Full data type definition for LambdaAlias. See 'lambdaAlias' for a more+-- convenient constructor.+data LambdaAlias =+ LambdaAlias+ { _lambdaAliasDescription :: Maybe (Val Text)+ , _lambdaAliasFunctionName :: Val Text+ , _lambdaAliasFunctionVersion :: Val Text+ , _lambdaAliasName :: Val Text+ } deriving (Show, Generic)++instance ToJSON LambdaAlias where+ toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 12, omitNothingFields = True }++instance FromJSON LambdaAlias where+ parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 12, omitNothingFields = True }++-- | Constructor for 'LambdaAlias' containing required fields as arguments.+lambdaAlias+ :: Val Text -- ^ 'laFunctionName'+ -> Val Text -- ^ 'laFunctionVersion'+ -> Val Text -- ^ 'laName'+ -> LambdaAlias+lambdaAlias functionNamearg functionVersionarg namearg =+ LambdaAlias+ { _lambdaAliasDescription = Nothing+ , _lambdaAliasFunctionName = functionNamearg+ , _lambdaAliasFunctionVersion = functionVersionarg+ , _lambdaAliasName = namearg+ }++-- | Information about the alias, such as its purpose or the Lambda function+-- that is associated with it.+laDescription :: Lens' LambdaAlias (Maybe (Val Text))+laDescription = lens _lambdaAliasDescription (\s a -> s { _lambdaAliasDescription = a })++-- | The Lambda function that you want to associate with this alias. You can+-- specify the function's name or its Amazon Resource Name (ARN).+laFunctionName :: Lens' LambdaAlias (Val Text)+laFunctionName = lens _lambdaAliasFunctionName (\s a -> s { _lambdaAliasFunctionName = a })++-- | The version of the Lambda function that you want to associate with this+-- alias.+laFunctionVersion :: Lens' LambdaAlias (Val Text)+laFunctionVersion = lens _lambdaAliasFunctionVersion (\s a -> s { _lambdaAliasFunctionVersion = a })++-- | A name for the alias.+laName :: Lens' LambdaAlias (Val Text)+laName = lens _lambdaAliasName (\s a -> s { _lambdaAliasName = a })
library-gen/Stratosphere/Resources/LambdaFunction.hs view
@@ -16,6 +16,7 @@ import Stratosphere.Values import Stratosphere.ResourceProperties.LambdaFunctionCode import Stratosphere.ResourceProperties.LambdaFunctionVPCConfig+import Stratosphere.Types -- | Full data type definition for LambdaFunction. See 'lambdaFunction' for a -- more convenient constructor.@@ -27,7 +28,7 @@ , _lambdaFunctionHandler :: Val Text , _lambdaFunctionMemorySize :: Maybe (Val Integer') , _lambdaFunctionRole :: Val Text- , _lambdaFunctionRuntime :: Val Text+ , _lambdaFunctionRuntime :: Runtime , _lambdaFunctionTimeout :: Maybe (Val Integer') , _lambdaFunctionVpcConfig :: Maybe LambdaFunctionVPCConfig } deriving (Show, Generic)@@ -43,7 +44,7 @@ :: LambdaFunctionCode -- ^ 'lfCode' -> Val Text -- ^ 'lfHandler' -> Val Text -- ^ 'lfRole'- -> Val Text -- ^ 'lfRuntime'+ -> Runtime -- ^ 'lfRuntime' -> LambdaFunction lambdaFunction codearg handlerarg rolearg runtimearg = LambdaFunction@@ -105,7 +106,7 @@ -- | The runtime environment for the Lambda function that you are uploading. -- For valid values, see the Runtime property in the AWS Lambda Developer -- Guide.-lfRuntime :: Lens' LambdaFunction (Val Text)+lfRuntime :: Lens' LambdaFunction Runtime lfRuntime = lens _lambdaFunctionRuntime (\s a -> s { _lambdaFunctionRuntime = a }) -- | The function execution time (in seconds) after which Lambda terminates
+ library-gen/Stratosphere/Resources/LambdaVersion.hs view
@@ -0,0 +1,63 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE OverloadedStrings #-}++-- | The AWS::Lambda::Version resource publishes a specified version of an AWS+-- Lambda (Lambda) function. When publishing a new version of your function,+-- Lambda copies the latest version of your function. For more information,+-- see Introduction to AWS Lambda Versioning in the AWS Lambda Developer+-- Guide.++module Stratosphere.Resources.LambdaVersion where++import Control.Lens+import Data.Aeson+import Data.Aeson.Types+import Data.Text+import GHC.Generics++import Stratosphere.Values+++-- | Full data type definition for LambdaVersion. See 'lambdaVersion' for a+-- more convenient constructor.+data LambdaVersion =+ LambdaVersion+ { _lambdaVersionCodeSha256 :: Maybe (Val Text)+ , _lambdaVersionDescription :: Maybe (Val Text)+ , _lambdaVersionFunctionName :: Val Text+ } deriving (Show, Generic)++instance ToJSON LambdaVersion where+ toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 14, omitNothingFields = True }++instance FromJSON LambdaVersion where+ parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 14, omitNothingFields = True }++-- | Constructor for 'LambdaVersion' containing required fields as arguments.+lambdaVersion+ :: Val Text -- ^ 'lvFunctionName'+ -> LambdaVersion+lambdaVersion functionNamearg =+ LambdaVersion+ { _lambdaVersionCodeSha256 = Nothing+ , _lambdaVersionDescription = Nothing+ , _lambdaVersionFunctionName = functionNamearg+ }++-- | The SHA-256 hash of the deployment package that you want to publish. This+-- value must match the SHA-256 hash of the $LATEST version of the function.+-- Specify this property to validate that you are publishing the correct+-- package.+lvCodeSha256 :: Lens' LambdaVersion (Maybe (Val Text))+lvCodeSha256 = lens _lambdaVersionCodeSha256 (\s a -> s { _lambdaVersionCodeSha256 = a })++-- | A description of the version you are publishing. If you don't specify a+-- value, Lambda copies the description from the $LATEST version of the+-- function.+lvDescription :: Lens' LambdaVersion (Maybe (Val Text))+lvDescription = lens _lambdaVersionDescription (\s a -> s { _lambdaVersionDescription = a })++-- | The Lambda function for which you want to publish a version. You can+-- specify the function's name or its Amazon Resource Name (ARN).+lvFunctionName :: Lens' LambdaVersion (Val Text)+lvFunctionName = lens _lambdaVersionFunctionName (\s a -> s { _lambdaVersionFunctionName = a })
+ library-gen/Stratosphere/Resources/SNSSubscription.hs view
@@ -0,0 +1,59 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE OverloadedStrings #-}++-- | The AWS::SNS::Subscription resource subscribes an endpoint to an Amazon+-- Simple Notification Service (Amazon SNS) topic. The owner of the endpoint+-- must confirm the subscription before Amazon SNS creates the subscription.++module Stratosphere.Resources.SNSSubscription where++import Control.Lens+import Data.Aeson+import Data.Aeson.Types+import Data.Text+import GHC.Generics++import Stratosphere.Values+import Stratosphere.Types++-- | Full data type definition for SNSSubscription. See 'snsSubscription' for+-- a more convenient constructor.+data SNSSubscription =+ SNSSubscription+ { _sNSSubscriptionEndpoint :: Maybe (Val Text)+ , _sNSSubscriptionProtocol :: Maybe SNSProtocol+ , _sNSSubscriptionTopicArn :: Maybe (Val Text)+ } deriving (Show, Generic)++instance ToJSON SNSSubscription where+ toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 16, omitNothingFields = True }++instance FromJSON SNSSubscription where+ parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 16, omitNothingFields = True }++-- | Constructor for 'SNSSubscription' containing required fields as+-- arguments.+snsSubscription+ :: SNSSubscription+snsSubscription =+ SNSSubscription+ { _sNSSubscriptionEndpoint = Nothing+ , _sNSSubscriptionProtocol = Nothing+ , _sNSSubscriptionTopicArn = Nothing+ }++-- | The endpoint that receives notifications from the Amazon SNS topic. The+-- endpoint value depends on the protocol that you specify. For more+-- information, see the Subscribe Endpoint parameter in the Amazon Simple+-- Notification Service API Reference.+snssEndpoint :: Lens' SNSSubscription (Maybe (Val Text))+snssEndpoint = lens _sNSSubscriptionEndpoint (\s a -> s { _sNSSubscriptionEndpoint = a })++-- | The subscription's protocol. For more information, see the Subscribe+-- Protocol parameter in the Amazon Simple Notification Service API Reference.+snssProtocol :: Lens' SNSSubscription (Maybe SNSProtocol)+snssProtocol = lens _sNSSubscriptionProtocol (\s a -> s { _sNSSubscriptionProtocol = a })++-- | The Amazon Resource Name (ARN) of the topic to subscribe to.+snssTopicArn :: Lens' SNSSubscription (Maybe (Val Text))+snssTopicArn = lens _sNSSubscriptionTopicArn (\s a -> s { _sNSSubscriptionTopicArn = a })
+ library-gen/Stratosphere/Resources/SNSTopic.hs view
@@ -0,0 +1,58 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE OverloadedStrings #-}++-- | The AWS::SNS::Topic type creates an Amazon Simple Notification Service+-- (Amazon SNS) topic.++module Stratosphere.Resources.SNSTopic where++import Control.Lens+import Data.Aeson+import Data.Aeson.Types+import Data.Text+import GHC.Generics++import Stratosphere.Values+import Stratosphere.ResourceProperties.SNSTopicSubscription++-- | Full data type definition for SNSTopic. See 'snsTopic' for a more+-- convenient constructor.+data SNSTopic =+ SNSTopic+ { _sNSTopicDisplayName :: Maybe (Val Text)+ , _sNSTopicSubscription :: Maybe [SNSTopicSubscription]+ , _sNSTopicTopicName :: Maybe (Val Text)+ } deriving (Show, Generic)++instance ToJSON SNSTopic where+ toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 9, omitNothingFields = True }++instance FromJSON SNSTopic where+ parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 9, omitNothingFields = True }++-- | Constructor for 'SNSTopic' containing required fields as arguments.+snsTopic+ :: SNSTopic+snsTopic =+ SNSTopic+ { _sNSTopicDisplayName = Nothing+ , _sNSTopicSubscription = Nothing+ , _sNSTopicTopicName = Nothing+ }++-- | A developer-defined string that can be used to identify this SNS topic.+snstDisplayName :: Lens' SNSTopic (Maybe (Val Text))+snstDisplayName = lens _sNSTopicDisplayName (\s a -> s { _sNSTopicDisplayName = a })++-- | The SNS subscriptions (endpoints) for this topic.+snstSubscription :: Lens' SNSTopic (Maybe [SNSTopicSubscription])+snstSubscription = lens _sNSTopicSubscription (\s a -> s { _sNSTopicSubscription = a })++-- | A name for the topic. If you don't specify a name, AWS CloudFormation+-- generates a unique physical ID and uses that ID for the topic name. For+-- more information, see Name Type. Important If you specify a name, you+-- cannot do updates that require this resource to be replaced. You can still+-- do updates that require no or some interruption. If you must replace the+-- resource, specify a new name.+snstTopicName :: Lens' SNSTopic (Maybe (Val Text))+snstTopicName = lens _sNSTopicTopicName (\s a -> s { _sNSTopicTopicName = a })
+ library-gen/Stratosphere/Resources/SNSTopicPolicy.hs view
@@ -0,0 +1,52 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE OverloadedStrings #-}++-- | The AWS::SNS::TopicPolicy resource associates Amazon SNS topics with a+-- policy.++module Stratosphere.Resources.SNSTopicPolicy where++import Control.Lens+import Data.Aeson+import Data.Aeson.Types+import Data.Text+import GHC.Generics++import Stratosphere.Values+++-- | Full data type definition for SNSTopicPolicy. See 'snsTopicPolicy' for a+-- more convenient constructor.+data SNSTopicPolicy =+ SNSTopicPolicy+ { _sNSTopicPolicyPolicyDocument :: Object+ , _sNSTopicPolicyTopics :: [String]+ } deriving (Show, Generic)++instance ToJSON SNSTopicPolicy where+ toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 15, omitNothingFields = True }++instance FromJSON SNSTopicPolicy where+ parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 15, omitNothingFields = True }++-- | Constructor for 'SNSTopicPolicy' containing required fields as arguments.+snsTopicPolicy+ :: Object -- ^ 'snstpPolicyDocument'+ -> [String] -- ^ 'snstpTopics'+ -> SNSTopicPolicy+snsTopicPolicy policyDocumentarg topicsarg =+ SNSTopicPolicy+ { _sNSTopicPolicyPolicyDocument = policyDocumentarg+ , _sNSTopicPolicyTopics = topicsarg+ }++-- | A policy document that contains permissions to add to the specified SNS+-- topics.+snstpPolicyDocument :: Lens' SNSTopicPolicy Object+snstpPolicyDocument = lens _sNSTopicPolicyPolicyDocument (\s a -> s { _sNSTopicPolicyPolicyDocument = a })++-- | The Amazon Resource Names (ARN) of the topics to which you want to add+-- the policy. You can use the Ref function to specify an AWS::SNS::Topic+-- resource.+snstpTopics :: Lens' SNSTopicPolicy [String]+snstpTopics = lens _sNSTopicPolicyTopics (\s a -> s { _sNSTopicPolicyTopics = a })
+ library-gen/Stratosphere/Resources/SQSQueue.hs view
@@ -0,0 +1,101 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE OverloadedStrings #-}++-- | The AWS::SQS::Queue type creates an Amazon SQS queue.++module Stratosphere.Resources.SQSQueue where++import Control.Lens+import Data.Aeson+import Data.Aeson.Types+import Data.Text+import GHC.Generics++import Stratosphere.Values+import Stratosphere.ResourceProperties.SQSRedrivePolicy++-- | Full data type definition for SQSQueue. See 'sqsQueue' for a more+-- convenient constructor.+data SQSQueue =+ SQSQueue+ { _sQSQueueDelaySeconds :: Maybe (Val Integer')+ , _sQSQueueMaximumMessageSize :: Maybe (Val Integer')+ , _sQSQueueMessageRetentionPeriod :: Maybe (Val Integer')+ , _sQSQueueQueueName :: Maybe (Val Text)+ , _sQSQueueReceiveMessageWaitTimeSeconds :: Maybe (Val Integer')+ , _sQSQueueRedrivePolicy :: Maybe SQSRedrivePolicy+ , _sQSQueueVisibilityTimeout :: Maybe (Val Integer')+ } deriving (Show, Generic)++instance ToJSON SQSQueue where+ toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 9, omitNothingFields = True }++instance FromJSON SQSQueue where+ parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 9, omitNothingFields = True }++-- | Constructor for 'SQSQueue' containing required fields as arguments.+sqsQueue+ :: SQSQueue+sqsQueue =+ SQSQueue+ { _sQSQueueDelaySeconds = Nothing+ , _sQSQueueMaximumMessageSize = Nothing+ , _sQSQueueMessageRetentionPeriod = Nothing+ , _sQSQueueQueueName = Nothing+ , _sQSQueueReceiveMessageWaitTimeSeconds = Nothing+ , _sQSQueueRedrivePolicy = Nothing+ , _sQSQueueVisibilityTimeout = Nothing+ }++-- | The time in seconds that the delivery of all messages in the queue will+-- be delayed. You can specify an integer value of 0 to 900 (15 minutes). The+-- default value is 0.+sqsqDelaySeconds :: Lens' SQSQueue (Maybe (Val Integer'))+sqsqDelaySeconds = lens _sQSQueueDelaySeconds (\s a -> s { _sQSQueueDelaySeconds = a })++-- | The limit of how many bytes a message can contain before Amazon SQS+-- rejects it. You can specify an integer value from 1024 bytes (1 KiB) to+-- 262144 bytes (256 KiB). The default value is 262144 (256 KiB).+sqsqMaximumMessageSize :: Lens' SQSQueue (Maybe (Val Integer'))+sqsqMaximumMessageSize = lens _sQSQueueMaximumMessageSize (\s a -> s { _sQSQueueMaximumMessageSize = a })++-- | The number of seconds Amazon SQS retains a message. You can specify an+-- integer value from 60 seconds (1 minute) to 1209600 seconds (14 days). The+-- default value is 345600 seconds (4 days).+sqsqMessageRetentionPeriod :: Lens' SQSQueue (Maybe (Val Integer'))+sqsqMessageRetentionPeriod = lens _sQSQueueMessageRetentionPeriod (\s a -> s { _sQSQueueMessageRetentionPeriod = a })++-- | A name for the queue. If you don't specify a name, AWS CloudFormation+-- generates a unique physical ID and uses that ID for the queue name. For+-- more information, see Name Type. Important If you specify a name, you+-- cannot do updates that require this resource to be replaced. You can still+-- do updates that require no or some interruption. If you must replace the+-- resource, specify a new name.+sqsqQueueName :: Lens' SQSQueue (Maybe (Val Text))+sqsqQueueName = lens _sQSQueueQueueName (\s a -> s { _sQSQueueQueueName = a })++-- | Specifies the duration, in seconds, that the ReceiveMessage action call+-- waits until a message is in the queue in order to include it in the+-- response, as opposed to returning an empty response if a message is not yet+-- available. You can specify an integer from 1 to 20. The short polling is+-- used as the default or when you specify 0 for this property. For more+-- information, see Amazon SQS Long Poll.+sqsqReceiveMessageWaitTimeSeconds :: Lens' SQSQueue (Maybe (Val Integer'))+sqsqReceiveMessageWaitTimeSeconds = lens _sQSQueueReceiveMessageWaitTimeSeconds (\s a -> s { _sQSQueueReceiveMessageWaitTimeSeconds = a })++-- | Specifies an existing dead letter queue to receive messages after the+-- source queue (this queue) fails to process a message a specified number of+-- times.+sqsqRedrivePolicy :: Lens' SQSQueue (Maybe SQSRedrivePolicy)+sqsqRedrivePolicy = lens _sQSQueueRedrivePolicy (\s a -> s { _sQSQueueRedrivePolicy = a })++-- | The length of time during which a message will be unavailable once a+-- message is delivered from the queue. This blocks other components from+-- receiving the same message and gives the initial component time to process+-- and delete the message from the queue. Values must be from 0 to 43200+-- seconds (12 hours). If no value is specified, the default value of 30+-- seconds will be used. For more information about SQS Queue visibility+-- timeouts, see Visibility Timeout in the Amazon Simple Queue Service+-- Developer Guide.+sqsqVisibilityTimeout :: Lens' SQSQueue (Maybe (Val Integer'))+sqsqVisibilityTimeout = lens _sQSQueueVisibilityTimeout (\s a -> s { _sQSQueueVisibilityTimeout = a })
+ library-gen/Stratosphere/Resources/SQSQueuePolicy.hs view
@@ -0,0 +1,51 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE OverloadedStrings #-}++-- | The AWS::SQS::QueuePolicy type applies a policy to SQS queues.+-- AWS::SQS::QueuePolicy Snippet: Declaring an Amazon SQS Policy++module Stratosphere.Resources.SQSQueuePolicy where++import Control.Lens+import Data.Aeson+import Data.Aeson.Types+import Data.Text+import GHC.Generics++import Stratosphere.Values+++-- | Full data type definition for SQSQueuePolicy. See 'sqsQueuePolicy' for a+-- more convenient constructor.+data SQSQueuePolicy =+ SQSQueuePolicy+ { _sQSQueuePolicyPolicyDocument :: Object+ , _sQSQueuePolicyQueues :: [Val Text]+ } deriving (Show, Generic)++instance ToJSON SQSQueuePolicy where+ toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 15, omitNothingFields = True }++instance FromJSON SQSQueuePolicy where+ parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 15, omitNothingFields = True }++-- | Constructor for 'SQSQueuePolicy' containing required fields as arguments.+sqsQueuePolicy+ :: Object -- ^ 'sqsqpPolicyDocument'+ -> [Val Text] -- ^ 'sqsqpQueues'+ -> SQSQueuePolicy+sqsQueuePolicy policyDocumentarg queuesarg =+ SQSQueuePolicy+ { _sQSQueuePolicyPolicyDocument = policyDocumentarg+ , _sQSQueuePolicyQueues = queuesarg+ }++-- | A policy document containing permissions to add to the specified SQS+-- queues.+sqsqpPolicyDocument :: Lens' SQSQueuePolicy Object+sqsqpPolicyDocument = lens _sQSQueuePolicyPolicyDocument (\s a -> s { _sQSQueuePolicyPolicyDocument = a })++-- | The URLs of the queues to which you want to add the policy. You can use+-- the Ref function to specify an AWS::SQS::Queue resource.+sqsqpQueues :: Lens' SQSQueuePolicy [Val Text]+sqsqpQueues = lens _sQSQueuePolicyQueues (\s a -> s { _sQSQueuePolicyQueues = a })
library/Stratosphere.hs view
@@ -22,6 +22,7 @@ , module Stratosphere.Template , module Stratosphere.Values , module Stratosphere.Types+ , module Stratosphere.Check , module Control.Lens ) where @@ -32,6 +33,7 @@ import Stratosphere.Template import Stratosphere.Values import Stratosphere.Types+import Stratosphere.Check {-# ANN module "HLint: ignore Use import/export shortcut" #-}
+ library/Stratosphere/Check.hs view
@@ -0,0 +1,34 @@+-- | `Stratosphere.Check` exports functions to catch errors+-- that would be too expensive or unwieldy to encode in types.+--+-- Stability: Experimental++module Stratosphere.Check+ ( duplicateProperties+ ) where++import Data.Hashable (Hashable)+import qualified Data.HashMap.Strict as HM+import qualified Data.Text as T++import Stratosphere.Resources (resourceResName, unResources)+import Stratosphere.Template (Template, templateResources)++data DuplicateProperty = DuplicateProperty T.Text deriving Show++duplicateProperties :: Template -> [DuplicateProperty]+duplicateProperties =+ map DuplicateProperty+ . duplicates+ . map resourceResName+ . unResources+ . templateResources++duplicates :: (Foldable f, Eq a, Hashable a) => f a -> [a]+duplicates =+ HM.keys . HM.filter (> one) . foldr (insertByAdding one) HM.empty+ where one :: Int+ one = 1++insertByAdding :: (Eq k, Hashable k, Num v) => v -> k -> HM.HashMap k v -> HM.HashMap k v+insertByAdding = flip $ HM.insertWith (+)
library/Stratosphere/Types.hs view
@@ -5,7 +5,20 @@ -- | Module for hand-written types that are used in generated modules. module Stratosphere.Types- ( CannedACL (..)+ ( EnabledState (..)+ , AuthorizationType (..)+ , HttpMethod (..)+ , LoggingLevel (..)+ , ApiBackendType (..)+ , Period (..)+ , AttributeType (..)+ , KeyType (..)+ , ProjectionType (..)+ , StreamViewType (..)+ , SNSProtocol (..)+ , Runtime (..)+ , PassthroughBehavior (..)+ , CannedACL (..) , KinesisFirehoseS3CompressionFormat(..) , KinesisFirehoseElasticsearchS3BackupMode(..) , KinesisFirehoseNoEncryptionConfig(..)@@ -15,6 +28,153 @@ import Data.Text (unpack) import GHC.Generics ++data EnabledState+ = ENABLED+ | DISABLED+ deriving (Show, Read, Eq, Generic, FromJSON, ToJSON)++data AuthorizationType+ = NONE+ | AWS_IAM+ | CUSTOM+ deriving (Show, Read, Eq, Generic, FromJSON, ToJSON)++data HttpMethod+ = GET+ | POST+ | PUT+ | HEAD+ | DELETE+ | OPTIONS+ deriving (Show, Read, Eq, Generic, FromJSON, ToJSON)++data LoggingLevel+ = OFF+ | ERROR+ | INFO+ deriving (Show, Read, Eq, Generic, FromJSON, ToJSON)++data ApiBackendType+ = HTTP+ | AWS+ | MOCK+ | HTTP_PROXY+ | AWS_PROXY+ deriving (Show, Read, Eq, Generic, FromJSON, ToJSON)++data Period+ = DAY+ | WEEK+ | MONTH+ deriving (Show, Read, Eq, Generic, FromJSON, ToJSON)++data AttributeType+ = S+ | N+ | B+ deriving (Show, Read, Eq, Generic, FromJSON, ToJSON)++data KeyType+ = HASH+ | RANGE+ deriving (Show, Read, Eq, Generic, FromJSON, ToJSON)+++data ProjectionType+ = ProjectKeysOnly+ | ProjectIncluded+ | ProjectAll+ deriving (Show, Read, Eq, Generic)++instance FromJSON ProjectionType where+ parseJSON = withText "ProjectionType" parse+ where+ parse "KEYS_ONLY" = pure ProjectKeysOnly+ parse "INCLUDE" = pure ProjectIncluded+ parse "ALL" = pure ProjectAll+ parse projectionType = fail ("Unexpected projection type " ++ unpack projectionType)++instance ToJSON ProjectionType where+ toJSON ProjectKeysOnly = String "KEYS_ONLY"+ toJSON ProjectIncluded = String "INCLUDE"+ toJSON ProjectAll = String "ALL"+++data StreamViewType+ = KEYS_ONLY+ | NEW_IMAGE+ | OLD_IMAGE+ | NEW_AND_OLD_IMAGES+ deriving (Show, Read, Eq, Generic, FromJSON, ToJSON)++data SNSProtocol+ = SnsHttp+ | SnsHttps+ | SnsEmail+ | SnsEmailJson+ | SnsSms+ | SnsSqs+ | SnsApplication+ | SnsLambda+ deriving (Show, Read, Eq, Generic)+++instance FromJSON SNSProtocol where+ parseJSON = withText "SNSProtocol" parse+ where+ parse "http" = pure SnsHttp+ parse "https" = pure SnsHttps+ parse "email" = pure SnsEmail+ parse "email-json" = pure SnsEmailJson+ parse "sms" = pure SnsSms+ parse "sqs" = pure SnsSqs+ parse "application" = pure SnsApplication+ parse "lambda" = pure SnsLambda+ parse protocol = fail ("Unexpected SNS protocol " ++ unpack protocol)++instance ToJSON SNSProtocol where+ toJSON SnsHttp = String "http"+ toJSON SnsHttps = String "https"+ toJSON SnsEmail = String "email"+ toJSON SnsEmailJson = String "email-json"+ toJSON SnsSms = String "sms"+ toJSON SnsSqs = String "sqs"+ toJSON SnsApplication = String "application"+ toJSON SnsLambda = String "lambda"+++data Runtime+ = NodeJS+ | NodeJS43+ | Java8+ | Python27+ deriving (Show, Read, Eq, Generic)++instance FromJSON Runtime where+ parseJSON = withText "Runtime" parse+ where+ parse "nodejs" = pure NodeJS+ parse "nodejs4.3" = pure NodeJS43+ parse "java8" = pure Java8+ parse "python2.7" = pure Python27+ parse runtime = fail ("Unexpected Runtime " ++ unpack runtime)++instance ToJSON Runtime where+ toJSON NodeJS = String "nodejs"+ toJSON NodeJS43 = String "nodejs4.3"+ toJSON Java8 = String "java8"+ toJSON Python27 = String "python2.7"+++-- | See:+-- https://docs.aws.amazon.com/apigateway/api-reference/link-relation/integration-put/#passthroughBehavior+data PassthroughBehavior+ = WHEN_NO_MATCH+ | WHEN_NO_TEMPLATES+ | NEVER+ deriving (Show, Read, Eq, Generic, FromJSON, ToJSON)+ -- | Amazon S3 supports a set of predefined grants, known as canned ACLs. Each -- canned ACL has a predefined a set of grantees and permissions. The following -- table lists the set of canned ACLs and the associated predefined grants.@@ -30,7 +190,6 @@ | PublicRead | PublicReadWrite deriving (Show, Read, Eq, Generic, FromJSON, ToJSON)- -- | See: -- http://docs.aws.amazon.com/firehose/latest/APIReference/API_S3DestinationConfiguration.html
stratosphere.cabal view
@@ -3,7 +3,7 @@ -- see: https://github.com/sol/hpack name: stratosphere-version: 0.2.0+version: 0.2.1 synopsis: EDSL for AWS CloudFormation description: EDSL for AWS CloudFormation category: AWS, Cloud@@ -40,12 +40,14 @@ , aeson >= 0.11 , aeson-pretty >= 0.8 , bytestring+ , hashable , lens >= 4.5 , template-haskell >= 2.0 , text >= 1.1 , unordered-containers >= 0.2 exposed-modules: Stratosphere+ Stratosphere.Check Stratosphere.Helpers Stratosphere.Outputs Stratosphere.Parameters@@ -78,6 +80,13 @@ Stratosphere.ResourceProperties.AutoScalingTags Stratosphere.ResourceProperties.ConnectionDrainingPolicy Stratosphere.ResourceProperties.ConnectionSettings+ Stratosphere.ResourceProperties.DynamoDBAttributeDefinition+ Stratosphere.ResourceProperties.DynamoDBGlobalSecondaryIndex+ Stratosphere.ResourceProperties.DynamoDBKeySchema+ Stratosphere.ResourceProperties.DynamoDBLocalSecondaryIndex+ Stratosphere.ResourceProperties.DynamoDBProjectionObject+ Stratosphere.ResourceProperties.DynamoDBProvisionedThroughput+ Stratosphere.ResourceProperties.DynamoDBStreamSpecification Stratosphere.ResourceProperties.EBSBlockDevice Stratosphere.ResourceProperties.EC2BlockDeviceMapping Stratosphere.ResourceProperties.EC2MountPoint@@ -130,6 +139,8 @@ Stratosphere.ResourceProperties.S3WebsiteRoutingRules Stratosphere.ResourceProperties.SecurityGroupEgressRule Stratosphere.ResourceProperties.SecurityGroupIngressRule+ Stratosphere.ResourceProperties.SNSTopicSubscription+ Stratosphere.ResourceProperties.SQSRedrivePolicy Stratosphere.ResourceProperties.StepAdjustments Stratosphere.ResourceProperties.UserLoginProfile Stratosphere.Resources@@ -152,16 +163,20 @@ Stratosphere.Resources.DBSecurityGroupIngress Stratosphere.Resources.DBSubnetGroup Stratosphere.Resources.DeliveryStream+ Stratosphere.Resources.DynamoDBTable Stratosphere.Resources.EC2Instance Stratosphere.Resources.EIP Stratosphere.Resources.EIPAssociation+ Stratosphere.Resources.EventsRule Stratosphere.Resources.Group Stratosphere.Resources.IAMRole Stratosphere.Resources.InstanceProfile Stratosphere.Resources.InternetGateway Stratosphere.Resources.KinesisStream+ Stratosphere.Resources.LambdaAlias Stratosphere.Resources.LambdaFunction Stratosphere.Resources.LambdaPermission+ Stratosphere.Resources.LambdaVersion Stratosphere.Resources.LaunchConfiguration Stratosphere.Resources.LifecycleHook Stratosphere.Resources.LoadBalancer@@ -180,6 +195,11 @@ Stratosphere.Resources.SecurityGroup Stratosphere.Resources.SecurityGroupEgress Stratosphere.Resources.SecurityGroupIngress+ Stratosphere.Resources.SNSSubscription+ Stratosphere.Resources.SNSTopic+ Stratosphere.Resources.SNSTopicPolicy+ Stratosphere.Resources.SQSQueue+ Stratosphere.Resources.SQSQueuePolicy Stratosphere.Resources.Stack Stratosphere.Resources.Subnet Stratosphere.Resources.SubnetRouteTableAssociation@@ -193,8 +213,8 @@ Stratosphere.Resources.VPCGatewayAttachment default-language: Haskell2010 -executable api-gateway-lambda- main-is: api-gateway-lambda.hs+executable apigw-lambda-dynamodb+ main-is: apigw-lambda-dynamodb.hs hs-source-dirs: examples ghc-options: -Wall@@ -203,6 +223,7 @@ , aeson >= 0.11 , aeson-pretty >= 0.8 , bytestring+ , hashable , lens >= 4.5 , template-haskell >= 2.0 , text >= 1.1@@ -212,6 +233,26 @@ buildable: False default-language: Haskell2010 +executable apigw-lambda-s3+ main-is: apigw-lambda-s3.hs+ hs-source-dirs:+ examples+ ghc-options: -Wall+ build-depends:+ base >= 4.8 && < 5+ , aeson >= 0.11+ , aeson-pretty >= 0.8+ , bytestring+ , hashable+ , lens >= 4.5+ , template-haskell >= 2.0+ , text >= 1.1+ , unordered-containers >= 0.2+ , stratosphere+ if flag(library-only)+ buildable: False+ default-language: Haskell2010+ executable auto-scaling-group main-is: auto-scaling-group.hs hs-source-dirs:@@ -222,6 +263,7 @@ , aeson >= 0.11 , aeson-pretty >= 0.8 , bytestring+ , hashable , lens >= 4.5 , template-haskell >= 2.0 , text >= 1.1@@ -241,6 +283,7 @@ , aeson >= 0.11 , aeson-pretty >= 0.8 , bytestring+ , hashable , lens >= 4.5 , template-haskell >= 2.0 , text >= 1.1@@ -260,6 +303,7 @@ , aeson >= 0.11 , aeson-pretty >= 0.8 , bytestring+ , hashable , lens >= 4.5 , template-haskell >= 2.0 , text >= 1.1@@ -279,6 +323,7 @@ , aeson >= 0.11 , aeson-pretty >= 0.8 , bytestring+ , hashable , lens >= 4.5 , template-haskell >= 2.0 , text >= 1.1@@ -298,6 +343,7 @@ , aeson >= 0.11 , aeson-pretty >= 0.8 , bytestring+ , hashable , lens >= 4.5 , template-haskell >= 2.0 , text >= 1.1@@ -317,6 +363,7 @@ , aeson >= 0.11 , aeson-pretty >= 0.8 , bytestring+ , hashable , lens >= 4.5 , template-haskell >= 2.0 , text >= 1.1@@ -338,6 +385,7 @@ , aeson >= 0.11 , aeson-pretty >= 0.8 , bytestring+ , hashable , lens >= 4.5 , template-haskell >= 2.0 , text >= 1.1