やりたいこと
- アプリケーションログ内でERRORを、CloudWatch Logsのメトリクスを利用してキャッチ
- Amazon SNSへ通知を流す
- Lambdaでメッセージの整形をしてSlackでアプリケーションログのERROR内容を通知する
現状
上記の1, 2まではできているのですが、
LambdaでアプリケーションログのERROR内容を取得できなくて困っています。
Amazon SNSでは、ERRORが存在したということしか判断できていません。
なお、ERRORが存在しているということをSlackに通知することはできています。
どのようにすれば、ERROR内容を取得できるのかがわからず困っております。
わかる方、ご教授のほど、よろしくお願いいたします!!
Lambdaの使用言語はNode.js 6.10です。
現在のLambdaのコード
node
1console.log('Loading function'); 2 3const https = require('https'); 4const url = require('url'); 5const slack_url = process.env.hooks; 6const slack_req_opts = url.parse(slack_url); 7slack_req_opts.method = 'POST'; 8slack_req_opts.headers = {'Content-Type': 'application/json'}; 9 10exports.handler = function(event, context) { 11 (event.Records || []).forEach(function (rec) { 12 if (rec.Sns) { 13 var req = https.request(slack_req_opts, function (res) { 14 if (res.statusCode === 200) { 15 context.succeed('posted to slack'); 16 } else { 17 context.fail('status code: ' + res.statusCode); 18 } 19 }); 20 21 req.on('error', function(e) { 22 console.log('problem with request: ' + e.message); 23 context.fail(e.message); 24 }); 25 26 var message = JSON.parse(rec.Sns.Message); 27 var status = message.NewStateValue; 28 if (status === "ALARM") { 29 status = ":exclamation: " + status; 30 } 31 if (status === "OK") { 32 status = ":+1: " + status; 33 } 34 var str = "*" + 35 status + 36 ": " + 37 message.AlarmDescription + 38 "*" + 39 "\n" + 40 message.NewStateReason; 41 42 req.write(JSON.stringify({text: str})); 43 44 req.end(); 45 } 46 }); 47};
こちらを参考(丸々コピー)しました。
追記
KMSを利用する方法があるようですが、基本的に利用しない方法で、今回は実装したいと思っています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。