-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp-sam.json
132 lines (132 loc) · 2.93 KB
/
app-sam.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
125
126
127
128
129
130
131
132
{
"AWSTemplateFormatVersion": "2010-09-09",
"Transform": "AWS::Serverless-2016-10-31",
"Parameters": {
"ExportName": {
"Type": "String",
"Default": "Function::CloudWatch-Alarm-To-Slack::Arn"
},
"UnencryptedHookUrl": {
"Type": "String",
"Default": ""
},
"KmsEncryptedHookUrl": {
"Type": "String",
"Default": ""
},
"SlackChannel": {
"Type": "String",
"Default": ""
},
"SlackUsername": {
"Type": "String",
"Default": "Slack-CloudWatch-Bot"
},
"EmojiIcon": {
"Type": "String",
"Default": ":robot_face:"
},
"OrgIcon": {
"Type": "String",
"Default": ""
},
"OrgName": {
"Type": "String",
"Default": ""
}
},
"Resources": {
"Topic": {
"Type": "AWS::SNS::Topic",
"Properties": {
"DisplayName": {
"Fn::Sub": "${AWS::StackName}-topic"
}
}
},
"LambdaErrorAlarm": {
"Type": "AWS::CloudWatch::Alarm",
"Properties": {
"AlarmName": {
"Fn::Sub": "${AWS::StackName}-lambda-errors"
},
"MetricName": "Errors",
"Namespace": "AWS/Lambda",
"Statistic": "Sum",
"Threshold": 1,
"Period": 60,
"EvaluationPeriods": 1,
"ComparisonOperator": "GreaterThanOrEqualToThreshold",
"TreatMissingData": "notBreaching",
"AlarmActions": [
{
"Ref": "Topic"
}
]
}
},
"CloudWatchFunction": {
"Type": "AWS::Serverless::Function",
"Properties": {
"FunctionName": {
"Ref": "AWS::StackName"
},
"Runtime": "nodejs22.x",
"Handler": "lambda.handler",
"Timeout": 60,
"MemorySize": 192,
"CodeUri": "build",
"Environment": {
"Variables": {
"UNENCRYPTED_HOOK_URL": {
"Fn::Sub": "${UnencryptedHookUrl}"
},
"KMS_ENCRYPTED_HOOK_URL": {
"Fn::Sub": "${KmsEncryptedHookUrl}"
},
"SLACK_CHANNEL": {
"Fn::Sub": "${SlackChannel}"
},
"SLACK_USERNAME": {
"Fn::Sub": "${SlackUsername}"
},
"EMOJI_ICON": {
"Fn::Sub": "${EmojiIcon}"
},
"ORG_ICON": {
"Fn::Sub": "${OrgIcon}"
},
"ORG_NAME": {
"Fn::Sub": "${OrgName}"
}
}
},
"Events": {
"NotificationTopic": {
"Type": "SNS",
"Properties": {
"Topic": {
"Ref": "Topic"
}
}
}
}
}
}
},
"Outputs": {
"FunctionArn": {
"Value": {
"Fn::GetAtt": [
"CloudWatchFunction",
"Arn"
]
},
"Export": {
"Name": {
"Fn::Sub": "${ExportName}"
}
}
}
}
}