{
    "AWSTemplateFormatVersion":"2010-09-09", 
    "Description":"AES - Flowlogs - Kickoff Stack.  **Attention** This template creates AWS resources that will incur charges on your account.",
    "Resources":{
        "s3sqs":{
                "Type" : "AWS::CloudFormation::Stack",
                "Properties" : {
                    "TemplateURL" : "https://s3-us-east-2.amazonaws.com/search-sa-log-solutions/flowlogs/templates/json/flowlogs-aes-s3-sqs"
                }            
        },
        "network": {
            "Type" : "AWS::CloudFormation::Stack",
            "Properties" : {
                "TemplateURL" : "https://s3-us-east-2.amazonaws.com/search-sa-log-solutions/flowlogs/templates/json/flowlogs-aes-network",
                "Parameters" : {
                    "EnvironmentTag" : {"Fn::Select":["4",{"Fn::Split":["-",{"Fn::Select":["2",{"Fn::Split":["/",{"Ref":"AWS::StackId"}]}]}]}]},
                    "CIDRPrefix" : "10.1"
                }
            }            
        },
        "slr":{
            "Type" : "AWS::CloudFormation::Stack",
            "Properties" : {
                "TemplateURL" : "https://s3-us-east-2.amazonaws.com/search-sa-log-solutions/flowlogs/templates/json/flowlogs-aes-slr",
                "Parameters" : {
                    "NetworkStackName" : { "Fn::GetAtt" : [ "network", "Outputs.StackName" ] }
                }
            } 	
	    },
        "endpoint": {
            "Type" : "AWS::CloudFormation::Stack",
            "Properties" : {
                "TemplateURL" : "https://s3-us-east-2.amazonaws.com/search-sa-log-solutions/flowlogs/templates/json/flowlogs-aes-endpoints",
                "Parameters" : {
                    "NetworkStackName" : { "Fn::GetAtt" : [ "network", "Outputs.StackName" ] },
		    "FlowLogsDataEncryptedS3BucketARN" : { "Fn::GetAtt" : [ "s3sqs", "Outputs.FlowLogsBucketARN" ] }
                }
            }            
        },
	"cognito" : {
            "Type" : "AWS::CloudFormation::Stack",
            "Properties" : {
                "TemplateURL" : "https://s3-us-east-2.amazonaws.com/search-sa-log-solutions/flowlogs/templates/json/flowlogs-aes-cognito2",
                "Parameters" : {
                    "NetworkStackName" : { "Fn::GetAtt" : [ "network", "Outputs.StackName" ] }
                }
            } 	
	},
        "elasticsearch" : {
            "Type" : "AWS::CloudFormation::Stack",
            "Properties" : {
                "TemplateURL" : "https://s3-us-east-2.amazonaws.com/search-sa-log-solutions/flowlogs/templates/json/flowlogs-aes-domain",
                "Parameters" : {
                    "NetworkStackName" : { "Fn::GetAtt" : [ "network", "Outputs.StackName" ] },
                    "ElasticsearchDomainName" : {"Fn::Join":["",["flow-lab-",{"Fn::Select":["4",{"Fn::Split":["-",{"Fn::Select":["2",{"Fn::Split":["/",{"Ref":"AWS::StackId"}]}]}]}]}]]},
		    "AuthRoleARN": { "Fn::GetAtt" : [ "cognito", "Outputs.AuthRoleARN" ] } 
                }
            }            
        },
	"flowlogs":{
            "Type" : "AWS::CloudFormation::Stack",
	    "DependsOn":"elasticsearch",
            "Properties" : {
                "TemplateURL" : "https://s3-us-east-2.amazonaws.com/search-sa-log-solutions/flowlogs/templates/json/flowlogs-aes-flowlog",
                "Parameters" : {
                    "NetworkStackName" : { "Fn::GetAtt" : [ "network", "Outputs.StackName" ] },
		    "FlowLogsS3ARN" : { "Fn::GetAtt" : [ "s3sqs", "Outputs.FlowLogsBucketARN" ] }
                }
            }  	
	},
	"proxy" : {
            "Type" : "AWS::CloudFormation::Stack",
            "Properties" : {
                "TemplateURL" : "https://s3-us-east-2.amazonaws.com/search-sa-log-solutions/flowlogs/templates/json/flowlogs-aes-kibana-proxy",
                "Parameters" : {
                    "NetworkStackName" : { "Fn::GetAtt" : [ "network", "Outputs.StackName" ] },
                    "ElasticsearchEndpoint" : { "Fn::GetAtt" : [ "elasticsearch", "Outputs.ElasticsearchEndpoint" ] },
                    "CognitoUserPoolEndpoint" : { "Fn::GetAtt" : [ "cognito", "Outputs.CognitoUserPoolEndpoint" ] }
                }
            }                                      
	}
    },
    "Outputs":{
        "KibanaProxyURL":{
            "Description":"Kibana Proxy URL.",
            "Value": { "Fn::GetAtt" : [ "proxy", "Outputs.KibanaProxyURL" ] },       
            "Export" : { "Name" : {"Fn::Sub": "${AWS::StackName}-KibanaProxyURL" }}
	},
	"CognitoUser":{
            "Description":"This is the cognito user.",
            "Value": { "Fn::GetAtt" : [ "cognito", "Outputs.CognitoUser" ] },
            "Export" : { "Name" : {"Fn::Sub": "${AWS::StackName}-CognitoUser" }}
	},
	"CognitoPassword":{
            "Description":"This is the cognito password.",
            "Value": { "Fn::GetAtt" : [ "cognito", "Outputs.CognitoPassword" ] },
            "Export" : { "Name" : {"Fn::Sub": "${AWS::StackName}-CognitoPassword" }}
	}	
    }
}     
