-
Notifications
You must be signed in to change notification settings - Fork 0
/
template.json
124 lines (124 loc) · 4.2 KB
/
template.json
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
{
"AWSTemplateFormatVersion": "2010-09-09",
"Transform": "AWS::Serverless-2016-10-31",
"Resources": {
"HttpApi": {
"Type": "AWS::Serverless::HttpApi"
},
"HttpHandler": {
"Type": "AWS::Serverless::Function",
"Properties": {
"FunctionName": "HttpHandler",
"Handler": "bootstrap.is.real.handler",
"Runtime": "provided.al2",
"CodeUri": "./http_handler",
"Events": {
"HttpApiEvent": {
"Type": "HttpApi",
"Properties": {
"ApiId": {"Ref": "HttpApi"}
}
}
},
"Environment": {
"Variables": {
"DispatchMessageTopic": {"Ref": "MessageDispatcher"},
"MessageStoreTable": {"Ref": "MessageStore"}
}
}
}
},
"MessageDispatcher": {
"Type": "AWS::SNS::Topic"
},
"MessageHandler": {
"Type": "AWS::Serverless::Function",
"Properties": {
"FunctionName": "MessageHandler",
"Handler": "bootstrap.is.real.handler",
"Runtime": "provided.al2",
"CodeUri": "./message_handler",
"Events": {
"SNSEvent": {
"Type": "SNS",
"Properties": {
"Topic": {"Ref": "MessageDispatcher"}
}
}
},
"Environment": {
"Variables": {
"MessageStoreTable": {"Ref": "MessageStore"}
}
}
}
},
"MessageStore": {
"Type": "AWS::Serverless::SimpleTable",
"Properties": {
"PrimaryKey": {
"Name": "message_id",
"Type": "String"
}
}
},
"HttpApiToFunctionConnector": {
"Type": "AWS::Serverless::Connector",
"Properties": {
"Source": {"Id": "HttpApi"},
"Destination": {"Id": "HttpHandler"},
"Permissions": ["Write"]
}
},
"HttpHandlerToMessageDispatcherConnector": {
"Type": "AWS::Serverless::Connector",
"Properties": {
"Source": {"Id": "HttpHandler"},
"Destination": {"Id": "MessageDispatcher"},
"Permissions": ["Write"]
}
},
"MessageTopicToFunctionConnector": {
"Type": "AWS::Serverless::Connector",
"Properties": {
"Source": {"Id": "MessageDispatcher"},
"Destination": {"Id": "MessageHandler"},
"Permissions": ["Write"]
}
},
"MessageFunctionToStoreConnector": {
"Type": "AWS::Serverless::Connector",
"Properties": {
"Source": {"Id": "MessageHandler"},
"Destination": {"Id": "MessageStore"},
"Permissions": ["Read", "Write"]
}
},
"HttpHandlerToStoreConnector": {
"Type": "AWS::Serverless::Connector",
"Properties": {
"Source": {"Id": "HttpHandler"},
"Destination": {"Id": "MessageStore"},
"Permissions": ["Read"]
}
}
},
"Outputs": {
"HttpApiUrl": {
"Description": "URL of API endpoint",
"Value": {"Fn::Sub": "https://${HttpApi}.execute-api.${AWS::Region}.${AWS::URLSuffix}/"}
},
"HttpApiId": {
"Description": "ID of HTTP API",
"Value": {"Ref": "HttpApi"}
},
"MessageDispatcherTopic": {
"Description": "SNS topic used to dispatch message commands to the backend",
"Value": {"Ref": "MessageDispatcher"}
},
"MessageStoreTable": {
"Description": "Message store table",
"Value": {"Ref": "MessageStore"}
}
}
}