MCPcopy Index your code
hub / github.com/assertible/lambda-cloudwatch-slack / handleCodePipeline

Function handleCodePipeline

index.js:137–194  ·  view source on GitHub ↗
(event, context)

Source from the content-addressed store, hash-verified

135};
136
137var handleCodePipeline = function(event, context) {
138 var subject = "AWS CodePipeline Notification";
139 var timestamp = (new Date(event.Records[0].Sns.Timestamp)).getTime()/1000;
140 var snsSubject = event.Records[0].Sns.Subject;
141 var message;
142 var fields = [];
143 var color = "warning";
144 var changeType = "";
145
146 try {
147 message = JSON.parse(event.Records[0].Sns.Message);
148 detailType = message['detail-type'];
149
150 if(detailType === "CodePipeline Pipeline Execution State Change"){
151 changeType = "";
152 } else if(detailType === "CodePipeline Stage Execution State Change"){
153 changeType = "STAGE " + message.detail.stage;
154 } else if(detailType === "CodePipeline Action Execution State Change"){
155 changeType = "ACTION";
156 }
157
158 if(message.detail.state === "SUCCEEDED"){
159 color = "good";
160 } else if(message.detail.state === "FAILED"){
161 color = "danger";
162 }
163 header = message.detail.state + ": CodePipeline " + changeType;
164 fields.push({ "title": "Message", "value": header, "short": false });
165 fields.push({ "title": "Pipeline", "value": message.detail.pipeline, "short": true });
166 fields.push({ "title": "Region", "value": message.region, "short": true });
167 fields.push({
168 "title": "Status Link",
169 "value": "https://console.aws.amazon.com/codepipeline/home?region=" + message.region + "#/view/" + message.detail.pipeline,
170 "short": false
171 });
172 }
173 catch(e) {
174 color = "good";
175 message = event.Records[0].Sns.Message;
176 header = message.detail.state + ": CodePipeline " + message.detail.pipeline;
177 fields.push({ "title": "Message", "value": header, "short": false });
178 fields.push({ "title": "Detail", "value": message, "short": false });
179 }
180
181
182 var slackMessage = {
183 text: "*" + subject + "*",
184 attachments: [
185 {
186 "color": color,
187 "fields": fields,
188 "ts": timestamp
189 }
190 ]
191 };
192
193 return _.merge(slackMessage, baseSlackMessage);
194};

Callers 1

processEventFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected