AWS Cloud9 で 作成した AWS Lambda 関数で kintone Webhook 通知を受信する


AWS Cloud9 で作成した Lambda 関数に、kintone の Webhook 通知を投げて結果を確認してみます。

AWS Cloud9 であらかじめ作成した Lambda関数(blue print)を元に進めます。
ここまでの作業は AWS Cloud9 で AWS Lambda を開発する環境を構築してみる を参考にしてください。

前提条件

  • Cloud9 環境作成済み
  • CodeCommit 環境作成済み
  • API Gateway 環境作成済み
  • AWS Lambda 環境作成済み

kintone Webhook の設定

作成した blue print そのままのコードの Lambda関数に、Webhook通知を投げてみます。

Webhook 通知の設定

アプリの設定を変更する → 設定タブ → Webhook を選択します。

Webhookの設定値を入力します。
Webhook URL には、作成した Lambda関数に紐付けた API Gateway の エンドポイントを入力します。

ステータスの更新通知を有効にしたら、プロセス管理を有効化しておきます。

アプリを更新します。

Webhook 通知のテスト

レコードの追加、編集、削除、コメントの書き込み、ステータスの更新を順番にテストしてみます。

レコードの追加

アプリにてレコードを新規作成して保存します。

kintone Webhookログの確認

アプリの設定→Webhook→Webhookログでログを確認します。

監査ログも確認します。

Cloud Watch ログの確認

AWS Cloud Watch ログを確認します。

kintone のレコードが確認できます。

Lambda関数

index.js
"use strict";
let sc; // Status code
let result = "";
exports.handler = function(event, context, callback) {
    console.log(event);
    const kintonePost = JSON.parse(event.body);
    console.log(kintonePost);
    sc = 200;
    result = "kintone POST success!";
    const response = {
      statusCode: sc,
      headers: { "Content-type": "application/json" },
      body: JSON.stringify( result )
    };
   callback(null, response);
};

kintone Webhook で受信した POST リクエストをそのままログに出力しています。
callback で kintone に ステータスコードを返しています。

API Gateway で 取得した kintone の Webhook リクエストは、ハンドラ関数の event 変数に入ってきます。

kintone record の中身は event.body に入っているので、JSON.parse して JavaScript のオブジェクトに変換しています。

レコードの中身にアクセスするには、例えば [$id] の場合は下記になります。

JSON.parse(record.body).kintonePost.record['$id'].value


関連リンク

AWS 関連

Node.js 関連