Skip to content

Commit c1b73db

Browse files
committed
initial commit
1 parent cf49085 commit c1b73db

File tree

6 files changed

+381
-0
lines changed

6 files changed

+381
-0
lines changed

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
.DS_Store
2+
node_modules
3+
npm-debug.log
4+
yarn-error.log

.jshintrc

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
{
2+
/*
3+
* ENVIRONMENTS
4+
* ============
5+
*/
6+
7+
// Define globals exposed by modern browsers.
8+
"browser": false,
9+
10+
// Define globals exposed by jQuery.
11+
"jquery": false,
12+
13+
// Define globals exposed by Node.js.
14+
"node": true,
15+
16+
"esversion": 9,
17+
18+
/*
19+
* ENFORCING OPTIONS
20+
* =================
21+
*/
22+
23+
// Force all variable names to use either camelCase style or UPPER_CASE
24+
// with underscores.
25+
"camelcase": true,
26+
27+
// Prohibit use of == and != in favor of === and !==.
28+
"eqeqeq": true,
29+
30+
// Enforce tab width of 2 spaces.
31+
"indent": 4,
32+
33+
// Prohibit use of a variable before it is defined.
34+
"latedef": true,
35+
36+
// Require capitalized names for constructor functions.
37+
"newcap": true,
38+
39+
// Enforce use of single quotation marks for strings.
40+
"quotmark": "single",
41+
42+
// Enforce placing 'use strict' at the top function scope
43+
"strict": true,
44+
45+
// Prohibit use of explicitly undeclared variables.
46+
"undef": true,
47+
48+
// Warn when variables are defined but never used.
49+
"unused": true,
50+
51+
/*
52+
* RELAXING OPTIONS
53+
* ================
54+
*/
55+
56+
// Suppress warnings about == null comparisons.
57+
"eqnull": true,
58+
59+
/*
60+
* IGNORE THE FOLLOWING GLOBALS
61+
* ============================
62+
*/
63+
"globals": {
64+
}
65+
}

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# ecs-deploy-watchguard
2+
3+
Post a Slack notifications to a channel when an AWS ECS task goes into STOPPED status.

index.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
'use strict';
2+
3+
const { IncomingWebhook } = require('@slack/webhook');
4+
5+
if(! process.env.SLACK_WEBHOOK_URL) {
6+
console.error('Missing required environment variable SLACK_WEBHOOK_URL');
7+
process.exit(3);
8+
}
9+
10+
const webhookUrl = process.env.SLACK_WEBHOOK_URL;
11+
const webhook = new IncomingWebhook(webhookUrl);
12+
13+
exports.handler = async (event, context) => {
14+
const account = event.account;
15+
const region = event.region;
16+
const service = event.detail.group;
17+
const lastStatus = event.detail.lastStatus;
18+
const stoppedReason = event.detail.stoppedReason;
19+
20+
if(lastStatus === "STOPPED") {
21+
const message = `_[${account}]_ **${service}** in ${region} is **STOPPED**. Reason: ${stoppedReason}. Please investigate.`;
22+
console.error(message);
23+
24+
(async () => {
25+
await webhook.send({
26+
text: message
27+
});
28+
})();
29+
} else {
30+
console.log(`[${account}] ${service} in ${region} is ${lastStatus}`);
31+
}
32+
};

package.json

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"name": "ecs-deploy-watchguard",
3+
"version": "1.0.0",
4+
"description": "Post a Slack notifications to a channel when an AWS ECS task goes into STOPPED status",
5+
"repository": {
6+
"type": "git"
7+
},
8+
"main": "index.js",
9+
"scripts": {
10+
"lint": "jshint --exclude ./node_modules .",
11+
"test": "echo \"Error: no test specified\" && exit 1"
12+
},
13+
"author": "Justin Keller",
14+
"license": "UNLICENSED",
15+
"engines": {
16+
"node": "12.16.1"
17+
},
18+
"dependencies": {
19+
"@slack/webhook": "^5.0.3"
20+
},
21+
"devDependencies": {
22+
"jshint": "2.11.0"
23+
}
24+
}

yarn.lock

Lines changed: 253 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,253 @@
1+
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2+
# yarn lockfile v1
3+
4+
5+
"@slack/types@^1.2.1":
6+
version "1.7.0"
7+
resolved "https://registry.yarnpkg.com/@slack/types/-/types-1.7.0.tgz#0a00b60bc6703c1413edd823dcb0f829d16457ed"
8+
integrity sha512-aigLPmTO513JxeFyeII/74y+S5jU39tabDWPsZyMHJWCYqK3vCkRvV73NL+Ay+Tq5RC2NgSmkedk1wvQJ6oXLg==
9+
10+
"@slack/webhook@^5.0.3":
11+
version "5.0.3"
12+
resolved "https://registry.yarnpkg.com/@slack/webhook/-/webhook-5.0.3.tgz#2205cba9a8d49d2ae84ca93f11ab4a1dba2f963b"
13+
integrity sha512-51vnejJ2zABNumPVukOLyerpHQT39/Lt0TYFtOEz/N2X77bPofOgfPj2atB3etaM07mxWHLT9IRJ4Zuqx38DkQ==
14+
dependencies:
15+
"@slack/types" "^1.2.1"
16+
"@types/node" ">=8.9.0"
17+
axios "^0.19.0"
18+
19+
"@types/node@>=8.9.0":
20+
version "14.0.23"
21+
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.23.tgz#676fa0883450ed9da0bb24156213636290892806"
22+
integrity sha512-Z4U8yDAl5TFkmYsZdFPdjeMa57NOvnaf1tljHzhouaPEp7LCj2JKkejpI1ODviIAQuW4CcQmxkQ77rnLsOOoKw==
23+
24+
axios@^0.19.0:
25+
version "0.19.2"
26+
resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27"
27+
integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==
28+
dependencies:
29+
follow-redirects "1.5.10"
30+
31+
balanced-match@^1.0.0:
32+
version "1.0.0"
33+
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
34+
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
35+
36+
brace-expansion@^1.1.7:
37+
version "1.1.11"
38+
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
39+
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
40+
dependencies:
41+
balanced-match "^1.0.0"
42+
concat-map "0.0.1"
43+
44+
cli@~1.0.0:
45+
version "1.0.1"
46+
resolved "https://registry.yarnpkg.com/cli/-/cli-1.0.1.tgz#22817534f24bfa4950c34d532d48ecbc621b8c14"
47+
integrity sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=
48+
dependencies:
49+
exit "0.1.2"
50+
glob "^7.1.1"
51+
52+
concat-map@0.0.1:
53+
version "0.0.1"
54+
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
55+
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
56+
57+
console-browserify@1.1.x:
58+
version "1.1.0"
59+
resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
60+
integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=
61+
dependencies:
62+
date-now "^0.1.4"
63+
64+
core-util-is@~1.0.0:
65+
version "1.0.2"
66+
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
67+
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
68+
69+
date-now@^0.1.4:
70+
version "0.1.4"
71+
resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
72+
integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=
73+
74+
debug@=3.1.0:
75+
version "3.1.0"
76+
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
77+
integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
78+
dependencies:
79+
ms "2.0.0"
80+
81+
dom-serializer@0:
82+
version "0.2.2"
83+
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51"
84+
integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==
85+
dependencies:
86+
domelementtype "^2.0.1"
87+
entities "^2.0.0"
88+
89+
domelementtype@1:
90+
version "1.3.1"
91+
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
92+
integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
93+
94+
domelementtype@^2.0.1:
95+
version "2.0.1"
96+
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d"
97+
integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==
98+
99+
domhandler@2.3:
100+
version "2.3.0"
101+
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738"
102+
integrity sha1-LeWaCCLVAn+r/28DLCsloqir5zg=
103+
dependencies:
104+
domelementtype "1"
105+
106+
domutils@1.5:
107+
version "1.5.1"
108+
resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
109+
integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=
110+
dependencies:
111+
dom-serializer "0"
112+
domelementtype "1"
113+
114+
entities@1.0:
115+
version "1.0.0"
116+
resolved "https://registry.yarnpkg.com/entities/-/entities-1.0.0.tgz#b2987aa3821347fcde642b24fdfc9e4fb712bf26"
117+
integrity sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=
118+
119+
entities@^2.0.0:
120+
version "2.0.3"
121+
resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f"
122+
integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==
123+
124+
exit@0.1.2, exit@0.1.x:
125+
version "0.1.2"
126+
resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
127+
integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=
128+
129+
follow-redirects@1.5.10:
130+
version "1.5.10"
131+
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a"
132+
integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==
133+
dependencies:
134+
debug "=3.1.0"
135+
136+
fs.realpath@^1.0.0:
137+
version "1.0.0"
138+
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
139+
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
140+
141+
glob@^7.1.1:
142+
version "7.1.6"
143+
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
144+
integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
145+
dependencies:
146+
fs.realpath "^1.0.0"
147+
inflight "^1.0.4"
148+
inherits "2"
149+
minimatch "^3.0.4"
150+
once "^1.3.0"
151+
path-is-absolute "^1.0.0"
152+
153+
htmlparser2@3.8.x:
154+
version "3.8.3"
155+
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.8.3.tgz#996c28b191516a8be86501a7d79757e5c70c1068"
156+
integrity sha1-mWwosZFRaovoZQGn15dX5ccMEGg=
157+
dependencies:
158+
domelementtype "1"
159+
domhandler "2.3"
160+
domutils "1.5"
161+
entities "1.0"
162+
readable-stream "1.1"
163+
164+
inflight@^1.0.4:
165+
version "1.0.6"
166+
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
167+
integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
168+
dependencies:
169+
once "^1.3.0"
170+
wrappy "1"
171+
172+
inherits@2, inherits@~2.0.1:
173+
version "2.0.4"
174+
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
175+
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
176+
177+
isarray@0.0.1:
178+
version "0.0.1"
179+
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
180+
integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
181+
182+
jshint@2.11.0:
183+
version "2.11.0"
184+
resolved "https://registry.yarnpkg.com/jshint/-/jshint-2.11.0.tgz#7f3d99820b8b653eaaec7015a563b2d8101cbbc8"
185+
integrity sha512-ooaD/hrBPhu35xXW4gn+o3SOuzht73gdBuffgJzrZBJZPGgGiiTvJEgTyxFvBO2nz0+X1G6etF8SzUODTlLY6Q==
186+
dependencies:
187+
cli "~1.0.0"
188+
console-browserify "1.1.x"
189+
exit "0.1.x"
190+
htmlparser2 "3.8.x"
191+
lodash "~4.17.11"
192+
minimatch "~3.0.2"
193+
shelljs "0.3.x"
194+
strip-json-comments "1.0.x"
195+
196+
lodash@~4.17.11:
197+
version "4.17.19"
198+
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b"
199+
integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==
200+
201+
minimatch@^3.0.4, minimatch@~3.0.2:
202+
version "3.0.4"
203+
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
204+
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
205+
dependencies:
206+
brace-expansion "^1.1.7"
207+
208+
ms@2.0.0:
209+
version "2.0.0"
210+
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
211+
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
212+
213+
once@^1.3.0:
214+
version "1.4.0"
215+
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
216+
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
217+
dependencies:
218+
wrappy "1"
219+
220+
path-is-absolute@^1.0.0:
221+
version "1.0.1"
222+
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
223+
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
224+
225+
readable-stream@1.1:
226+
version "1.1.13"
227+
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e"
228+
integrity sha1-9u73ZPUUyJ4rniMUanW6EGdW0j4=
229+
dependencies:
230+
core-util-is "~1.0.0"
231+
inherits "~2.0.1"
232+
isarray "0.0.1"
233+
string_decoder "~0.10.x"
234+
235+
shelljs@0.3.x:
236+
version "0.3.0"
237+
resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.3.0.tgz#3596e6307a781544f591f37da618360f31db57b1"
238+
integrity sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=
239+
240+
string_decoder@~0.10.x:
241+
version "0.10.31"
242+
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
243+
integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
244+
245+
strip-json-comments@1.0.x:
246+
version "1.0.4"
247+
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91"
248+
integrity sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=
249+
250+
wrappy@1:
251+
version "1.0.2"
252+
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
253+
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=

0 commit comments

Comments
 (0)