[英]Unable to get helper function to work in AWS lambda nodejs
[英]Unable to get Instance from AWS lambda function Nodejs
我創建了一個 SNS 主題,一個雲監視事件(用於在任何實例狀態更改時觸發警報)和一個 lambda 函數,用於在觸發任何此類事件時向 3rd 方應用程序發送通知。
以下是我的 Lambda 代碼 -:
var https = require('https');
var util = require('util');
exports.handler = function(event, context) {
console.log(JSON.stringify(event, null, 2));
console.log('From SNS:', event.Records[0].Sns.Message);
var message = event.Records[0].Sns.Message;
var postData = {
"text": message
};
var options = {
method: 'POST',
hostname: 'hooks.slack.com',
port: 443,
path: process.env.CHAT_API_PATH
};
var req = https.request(options, function(res) {
res.setEncoding('utf8');
res.on('data', function (chunk) {
context.done(null);
});
});
req.on('error', function(e) {
console.log('problem with request: ' + e.message);
});
req.write(util.format("%j", postData));
req.end();
};
上面的代碼成功觸發了第 3 方應用程序(在 Slack 頻道上說)上的通知消息,並在任何實例狀態更改時顯示如下消息 -:
{"version":"0","id":"c15cd3c9-d0aa-ca2e-71bb-c9b892c562c7","detail-type":"EC2 Instance State-change Notification","source":"aws.ec2","account":"288468818145","time":"2021-07-14T07:05:31Z","region":"us-east-1","resources":["arn:aws:ec2:us-east-1:288468818145:instance/i-0a3305ab8922ad61a"],"detail":{"instance-id":"i-0a3305ab8922ad61a","state":"stopping"}}
唯一的問題是,我只想在通知消息中顯示我的實例的“實例 ID”和“狀態”,並希望我的 lambda 只傳遞這些值怎么辦?
PS -:我不想在 cloudwatch 目標中觸摸 SNS,即通過“輸入轉換器”來格式化我的消息,而是想純粹從 Lambda 處理它。
進一步研究后,通過在cloudwatch目標的“Input Transformer”中添加json組件得到了方法。
這將簡單地從 cloudwatch 警報消息中提取實例 id 和狀態,並將其傳遞給 SNS,后者進一步進入現有的 lambda 函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.