LoginSignup
14
7

More than 5 years have passed since last update.

AWS Lambdaで退勤時刻を知らせ打刻を促す

Last updated at Posted at 2016-12-26

概要

AWS Lambdaを使って月~金の19:00にSlackへ退勤時刻を通知し、打刻を促すメッセージを投稿する。

AWS Lambdaでの定期実行

チュートリアル: スケジュールされたイベントでの AWS Lambda の使用を参考にすると実現できそうなので、このチュートリアルを参考に進めます。

Lambda関数を作成

  • Select blueprintで「lambda-canary」を選択します。

lambda_1.png

  • Configure triggersの各項目を記入します。
    • Schedule expressionの記入方法についてはこちらを参考に指定。

lambda_2.png

  • Lambda function handler and roleでは、Role*Policy templatesなどはチュートリアルに沿って入力していきます。

lambda_3.png

  • Nextをクリックし、Reviewで設定を確認後「Create function」をクリックしLambda関数を作成します。

Lambda 関数をテスト

  • 作成した関数を選択し、 Testを選択します。
  • ダイアログが表示されるので、 Sample event templateから Scheduled Eventを選択し、 Save and testをクリックします。
  • Execution resultセクションで成否を確認します。

lambda_4.png

Slackへ通知するコードを書く

Environment variablesにSlackのAPI tokenをSLACK_API_TOKENとして登録し、process.env.SLACK_API_TOKENで参照します。

var https = require('https');
var qs = require('querystring');

exports.handler = (event, context, callback) => {

    var query = qs.stringify({
        'token': process.env.SLACK_API_TOKEN,
        'channel': "CHANNEL_NAME",
        'text': "@horie 退勤しましょう!\nhttps://hoge.html",
        'mrkdwn': true,
        'link_names': 1
      });

    var options = {
        host: 'slack.com',
        port: '443',
        path: '/api/chat.postMessage?' + query,
        method: 'POST',
        headers: {
            'Content-Type': 'application/json; charset=utf-8"'
        }
    };

    var req = https.request(options, function(res) {
        res.setEncoding('utf8');
        res.on('data', function(res) {
            callback(null, res);
        });
    });
    req.on('error', (e) => {
        callback(null, 'error' + e.message);
    });
    req.write('');
    req.end();
};

Testで関数を実行すると以下のようにSlackに通知されます。

lambda_5.png

問題が無ければCloudWatch Events - ScheduleをEnableにして完了です。

lambda_6.png

まとめ

  • AWS Lambdaを利用することでサーバーレスで退勤時刻の通知と打刻を促してみました。
  • 打刻を忘れないようにしましょう!

参考

14
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
7