🙆♀️
Jamf PROのWebhook通知をLambda経由でSlackに流す
Jamf PROのWebhook機能知っていましたか?
わたしは最近知りました。
プロファイル外れた端末とか検知したいよねーって話していて、調べたらWebhook機能があることを知りました。
ウキウキで、SlackのWebhookをJamfに設定したら全然通知が流れませんでした😕
※ちなみに、PCでプロファイル外れた端末はSmartComputerGroupのLast Check-in
で一定時間経ったなどで検知するしかなさそうです
※SlackのWebhookの作成方法は割愛します
API GatewayをトリガーにLamda経由で整形する必要がありました
この記事を参考にしました。
Node.js 18.x
を選択
ランタイムは他はデフォルトのままです。
API Gatewayをトリガーに設定
ソースはこんな感じになりました
import https from 'https';
const GOOD_EVENTS = [
'JSSStartup',
];
const DANGER_EVENTS = [
'JSSShutdown',
];
export const handler = async(event) => {
const body = JSON.parse(event.body);
const event_name = body.webhook.name;
const event_category = body.webhook.webhookEvent;
const user_name = body.event.realName || 'No username';
const user_email = body.event.emailAddress || 'No email';
const serial_number = body.event.serialNumber;
const event_color = GOOD_EVENTS.includes(event_category) ? 'good' : DANGER_EVENTS.includes(event_category) ? 'danger' : 'warning';
const post_data = JSON.stringify({
'attachments': [
{
'color': event_color,
'fields': [
{
'title': `${event_name}`,
'value': `シリアル番号: ${serial_number}\n氏名: ${user_name}\nメールアドレス: ${user_email}`,
'short': false
}
],
}
]
});
const post_options = {
host: 'hooks.slack.com',
port: '443',
path: '/services/SLACK_WEB_HOOK_ID',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': Buffer.byteLength(post_data)
}
};
const req = https.request(post_options, (res) => {
let responseData = '';
res.on('data', (chunk) => {
responseData += chunk;
});
res.on('end', () => {
console.log(responseData);
});
});
req.on('error', (error) => {
console.error(error);
});
req.write(post_data);
req.end();
return {
statusCode: 200,
body: JSON.stringify({ message: 'Success' }),
};
};
GOOD_EVENTS
、DANGER_EVENTS
に適宜イベント名を足してください!
実際の通知
Webhookをインストールしたチャンネルに、りんごちゃんがお知らせしてくれるようになりました!
※通知テストはInventoryCompleted
やComputerCheckIn
などがオススメ
Discussion