kintone webhookからAWS API Gateway – Lambdaを実行しレコードの値を渡す
2017年2月のアップデートでkintoneにWebhook機能がリリースされました。
これ個人的にもすごく欲しかったやつなんですね。
Webhook URLをAWS API GatewayにしてLambdaを実行してみてどうやってレコードの値を渡すかやってみました。
Lambdaのコード
とりあえず確認したいだけなのでこんな感じで直書き
設定はランタイムをPython 2.7にしてあとは全てデフォルトです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#!/usr/bin/env python # -*- coding: utf-8 -*- import logging logger = logging.getLogger() logger.setLevel(logging.INFO) def lambda_handler(event, context): # TODO implement logger.info(event['record']) logger.info(u'タイトル : ' + event['record']['title']['value']) logger.info(u'数値 : ' + event['record']['number']['value']) logger.info(u'本文 : ' + event['record']['body']['value']) logger.info(u'チェックボックス : ' + event['record']['checkbox']['value'][0]) logger.info(u'作成日時 : ' + event['record'][u'作成日時']['value']) |
API Gatewayの設定
メソッドはPOSTで、Lambdaを指定します。
で、全てデフォルトのままで[APIのデプロイ]をします。
kintone テストアプリ
kintoneでテストアプリを作成しました。
Webhook URLでAPI Gatewayで作成したAPIのURLを指定します。
トリガーは「レコードの追加」、「レコードの編集」、「ステータスの更新」すべてにチェックしてます。
※今回の確認ではステータスは使っていません。
保存して[アプリを更新]します。
こんな感じで入力して保存します。
Lambdaのログ確認
値が取れています。
event[‘record’]はこんな感じです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
{ u'body': { u'type': u'MULTI_LINE_TEXT', u'value': u'\u30c6\u30b9\u30c8\u306e\u672c\u6587\n\u6539\u884c\u3057\u3066' }, u'\u66f4\u65b0\u8005': { u'type': u'MODIFIER', u'value': { u'code': u'Administrator', u'name': u'Administrator' } }, u'checkbox': { u'type': u'CHECK_BOX', u'value': [u'sample1'] }, u'\u66f4\u65b0\u65e5\u6642': { u'type': u'UPDATED_TIME', u'value': u'2017-02-18T02:08:00Z' }, u'title': { u'type': u'SINGLE_LINE_TEXT', u'value': u'\u30c6\u30b9\u30c8\u306e\u30bf\u30a4\u30c8\u30eb' }, u'$id': { u'type': u'__ID__', u'value': u'3' }, u'\u4f5c\u6210\u8005': { u'type': u'CREATOR', u'value': { u'code': u'Administrator', u'name': u'Administrator' } }, u'$revision': { u'type': u'__REVISION__', u'value': u'1' }, u'number': { u'type': u'NUMBER', u'value': u'392837' }, u'\u30ec\u30b3\u30fc\u30c9\u756a\u53f7': { u'type': u'RECORD_NUMBER', u'value': u'3' }, u'\u4f5c\u6210\u65e5\u6642': { u'type': u'CREATED_TIME', u'value': u'2017-02-18T02:08:00Z' } } |
webhookでやりやすくなること
後はLambdaの処理で煮るなり焼くなりすればいいのですが、こんなユースケースが考えられるわけで。
- 追加、更新内容をslackやメールで通知
- 連携先データベースへ追加、更新
特に他DBとの連携で多用することが考えられるなと。
これまではマスタとなるデータベースの情報をkintoneへ連携して、kintone側で更新された情報は定期的なバッチで処理したりというパターンが多くて、これだとリアルなやり取りが出来なかったのですね。
レコードの追加、更新時に何か動かそうと思うとカスタマイズでボタンを書かないといけなかったですし。
こうやって標準機能を使って他システムとの連携を容易にしてくれるのは非常にありがたい機能です。
改めてこのアップデートは非常に嬉しいです。
あと、webhookの設定でHeaderとか設定出来るようになるともっと嬉しいです。
最後までお読みいただきましてありがとうございました!
【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。
【PR】 「AWSではじめるLinux入門ガイド」という本を書きました。

開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター3年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
AWS LambdaでS3 Select
RDSスナップショットをS3にエクスポートした、Parquetフォーマットのデー …
-
-
別アカウントのVPCからAWS PrivateLinkを使う
やったことないのでやってみるシリーズです。 VPC エンドポイントサービス (A …
-
-
AWS Well-Architected フレームワークによるクラウド ベスト プラクティスのセッションを聞いたので自アカウントの環境を確認してみる
AWS Summit Tokyo 2017で「AWS Well-Architec …
-
-
WordPressのwp-login.php , xmlrpc.phpへのアクセスをAWS WAFで接続元IPアドレスを制限する
AWS CloudWatch LogsエージェントでAmazon EC2上のNg …
-
-
「gusuku Meetup OSAKA Vol.1」に参加させていただきました
前回のkinotne Cafeの懇親会でふと言った「gusuku Meetupっ …
-
-
MySQL WorkbenchからRDSに接続する
MySQL WorkbenchからAWS RDSのMySQLに接続するために、「 …
-
-
Amazon API Gatewayでモックを作る
超シンプルなAPI Gatewayのサンプルがほしかったので、ユーザーガイドの手 …
-
-
CloudWatch LogsメトリクスフィルタでNginxのaccess_logから転送バイト数をモニタリングする
ユーザーガイドのApache ログからのフィールドの抽出を見てて、これ、Ngin …
-
-
Backlogの実績工数をAmazon QuickSightで可視化してわかったこと
今年に入ってから、Backlogで個人タスクを登録しだして、予定工数、実績工数を …
-
-
AWS Lambda Layersのアーカイブファイルをダウンロードする
Cloud9にLambda Layersをダウンロードしたかったので検索してみた …