Lambda에서 Chatwork에 메시지 게시

4500 단어 Chatwork람다AWS
SNS를 통해 Chatwork에 메시지를 던질 수 없을까 생각했습니다만, 이것 Lambda로 좋지 않아? 라고 생각해 보았습니다. 모처럼 Preview도 다녔고.

Lambda function은 다음과 같은 느낌입니다.

lambda-chatwork.js
var request = require('request');

exports.handler = function(event, context) {
  var msg = event.msg;

  var room_id = 'ルームID';
  var options = {
    url: 'https://api.chatwork.com/v2/rooms/' + room_id +'/messages',
    headers: {
      'X-ChatWorkToken': '自身のAPIトークン'
    },
    form : {body : msg},
    useQuerystring: true
  };

  request.post(options, function (err, res, body) {
    if (!err && res.statusCode == 200) {
      context.done(null, body);
    }else{
      context.done('error', err);
    }
  });
};


https 모듈에서는 작동하지 않았으므로 request를 사용하고 있습니다. request의 모듈을 포함하여 zip으로 올려야합니다.

invoke-async 명령으로 호출합니다.
aws lambda  invoke-async \
--function-name lambda-chatwork \
--region us-east-1 \
--invoke-args input.txt

input.txt
{
  "msg": "Hello Chatwork API & Lambda!!!"
}

그래서, 갈 수있었습니다. (여러 사정에 의해 이름 부분 지우고 있습니다...)



사용하는 장면으로서는, 서버로 에러 검지했을 때에, 에러 로그를 Chatwork에 던지려고 생각하고 있습니다. 우선, 할 수 있었던 것만으로 맞습니까? 사용법인지 잘 모르겠습니다.
그러나 SNS의 HTTP 알림은 요청 헤더를 변경할 수 없으므로 Chatwork API와 같이 요청 헤더에 토큰을 포함해야하는 경우 사용하기가 어렵습니다.
그래서, 그러한 경우에 통지 부분을 Lambda에 외출해 실행하는 것은 있을까라고 생각했습니다.

좋은 웹페이지 즐겨찾기