-
Notifications
You must be signed in to change notification settings - Fork 7
/
template.yaml
140 lines (133 loc) · 5.66 KB
/
template.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: Template to create AWS BikeNow demo
Parameters:
EnvironmentName:
Description: Environment stage name
Type: String
Default: demo
BikeStationStatusUrl:
Description: URL for retrieving Citi Bike station data
Type: String
Default: https://gbfs.citibikenyc.com/gbfs/en/station_status.json
BikeStationDetailUrl:
Description: URL for retrieving Citi Bike station meta data
Type: String
Default: https://gbfs.citibikenyc.com/gbfs/en/station_information.json
StationStatusTable:
Description: DynamoDB table name where we store bike station status
Type: String
Default: station_status
StationDetailTable:
Description: DynamoDB table name where we store bike station details
Type: String
Default: station_detail
ElasticsearchDomainName:
Description: Amazon Elasticsearch domain name
Type: String
Default: bikenow
GlueDatabaseName:
Description: Name of AWS Glue database
Type: String
Default: bikenow_db
RedshiftDbName:
Description: Name of Redshift database
Type: String
Default: bikenowdw
AuroraDbName:
Description: Name of Amazon Aurora database
Type: String
Default: bikenowrds
Resources:
# -------------------------------- INITIALIZE AND COPY ARTIFACTS
ApplicationInitialize:
Type: AWS::Serverless::Application
Properties:
Location: templates/setup-template.yaml
# -------------------------------- NETWORK STACK
ApplicationNetwork:
Type: AWS::Serverless::Application
Properties:
Location: templates/network-template.yaml
# -------------------------------- DATABASE STACK
ApplicationDatabase:
Type: AWS::Serverless::Application
Properties:
Location: templates/database-template.yaml
Parameters:
EnvironmentName: !Ref EnvironmentName
BikeStationStatusUrl: !Ref BikeStationStatusUrl
BikeStationDetailUrl: !Ref BikeStationDetailUrl
StationStatusTable: !Ref StationStatusTable
StationDetailTable: !Ref StationDetailTable
ElasticsearchDomainName: !Ref ElasticsearchDomainName
VpcId: !GetAtt ApplicationNetwork.Outputs.VPC
SubnetsPrivate: !GetAtt ApplicationNetwork.Outputs.SubnetsPrivate
AuroraDbName: !Ref AuroraDbName
# -------------------------------- ANALYTICS STACK
ApplicationAnalytics:
Type: AWS::Serverless::Application
Properties:
Location: templates/analytics-template.yaml
Parameters:
GlueDatabaseName: !Ref GlueDatabaseName
StationStatusStreamArn: !GetAtt ApplicationDatabase.Outputs.StreamTableStationStatusArn
StationDetailStreamArn: !GetAtt ApplicationDatabase.Outputs.StreamTableStationDetailArn
StationReviewStreamArn: !GetAtt ApplicationDatabase.Outputs.StreamTableReviewArn
RedshiftVPC: !GetAtt ApplicationNetwork.Outputs.VPC
RedshiftSubnets: !GetAtt ApplicationNetwork.Outputs.SubnetsPrivate
RedshiftAZ: !GetAtt ApplicationNetwork.Outputs.AZA
RedshiftDbName: !Ref RedshiftDbName
ArtifactsBucket: !GetAtt ApplicationInitialize.Outputs.ArtifactsBucket
# -------------------------------- AI/ML STACK
ApplicationAIML:
Type: AWS::Serverless::Application
Properties:
Location: templates/aiml-template.yaml
Parameters:
ArtifactsBucket: !GetAtt ApplicationInitialize.Outputs.ArtifactsBucket
DataLakeS3Bucket: !GetAtt ApplicationAnalytics.Outputs.DataLakeS3Bucket
GlueEndpointName: !GetAtt ApplicationAnalytics.Outputs.GlueEndpointName
EnvironmentName: !Ref EnvironmentName
# -------------------------------- CODE PIPELINE STACK
ApplicationCodeBuild:
Type: AWS::Serverless::Application
Properties:
Location: templates/codebuild-template.yaml
Parameters:
EnvironmentName: !Ref EnvironmentName
S3BucketWeb: !GetAtt ApplicationDatabase.Outputs.S3BucketWeb
ApiDatabase: !GetAtt ApplicationDatabase.Outputs.ApiGatewayWebId
ApiAiml: !GetAtt ApplicationAIML.Outputs.ApiGatewayModelId
CognitoUserPool: !GetAtt ApplicationDatabase.Outputs.CognitoUserPoolId
CognitoUserPoolClient: !GetAtt ApplicationDatabase.Outputs.CognitoAppClientId
CognityIdentityPool: !GetAtt ApplicationDatabase.Outputs.CognityIdentityPoolId
WebsiteCDN: !GetAtt ApplicationDatabase.Outputs.WebsiteCDN
Outputs:
BikenowApiUrl:
Value: !Sub 'https://${ApplicationDatabase.Outputs.ApiGatewayWebId}.execute-api.${AWS::Region}.amazonaws.com/${EnvironmentName}'
Description: URL of BikeNow purpose-built database demo API Gateway
AimlApiUrl:
Value: !Sub 'https://${ApplicationAIML.Outputs.ApiGatewayModelId}.execute-api.${AWS::Region}.amazonaws.com/${EnvironmentName}'
Description: URL of BikeNow AI/ML demo API Gateway
CognitoUserPoolId:
Value: !GetAtt ApplicationDatabase.Outputs.CognitoUserPoolId
Description: Cognito user pool ID
CognitoAppClientId:
Value: !GetAtt ApplicationDatabase.Outputs.CognitoAppClientId
Description: Cognito application client ID
CognityIdentityPoolId:
Value: !GetAtt ApplicationDatabase.Outputs.CognityIdentityPoolId
Description: Cognity identity pool ID
WebsiteURL:
Value: !GetAtt ApplicationDatabase.Outputs.WebsiteURL
Description: The URL for the web application
PrivateSubnet:
Value: !GetAtt ApplicationNetwork.Outputs.SubnetAPrivate
Description: Private subnet
RedshiftSecurityGroup:
Value: !GetAtt ApplicationAnalytics.Outputs.RedshiftSecurityGroup
Description: Security Group for Redshift cluster
DbSecurityGroup:
Value: !GetAtt ApplicationDatabase.Outputs.DbSecurityGroup
Description: Security Group for Aurora database