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入門ガイド」という本を書きました。
【PR】 「ポケットスタディ AWS認定 デベロッパーアソシエイト」という本を書きました。
【PR】 「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル」という本を書きました。

開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
Amazon CodeCatalystのスペースとプロジェクトを作成してみました
Amazon CodeCatalystはIAMユーザーで操作するのではなく、AW …
-
-
LINE Bot APIのファーストステップをLambda+API Gatewayでやってみたらものすごく簡単で驚いた
トライアル当初はホワイトリストのしばりや、初回反応するまで時間がかかったりとみな …
-
-
Pepperで撮影した写真をAmazon Rekognitionで分析してその結果をPepperがしゃべる ~(1)AWS編~
Pepperの機能を使えるところは使って、何かしたいなあと思ってまして。 目(カ …
-
-
AWSアカウント ルートユーザーのMFAが使えなくなったので復旧
AWSのルートユーザーどころか、MFAが使えるログインすべてが使えなくなって焦り …
-
-
ALBにWAFを関連付けて特定のヘッダー以外はブロックする
おかげさまで、ブログのアクセスも増えてきて、t3.nano EC2インスタンス単 …
-
-
AWS Organizationsからメンバーアカウントを直接「閉じる」ことができるようになりました
これまでは、メンバーアカウントはOrganizations組織から「除外」して独 …
-
-
kintoneのカスタマイズ開発を超速にするCUSTOMINE
kintoneのカスタマイズについて kintoneは標準機能を使うだけでもアプ …
-
-
Amazon EC2 Auto ScalingのVPCは変更できる
EC2 Auto ScalingのVPCは変更できたっけ??と思いまして試しまし …
-
-
EC2インスタンスプロファイルによってAssumeRoleされた認証情報の有効期限は短くできるのでしょうか
「EC2インスタンスプロファイルによってAssumeRoleされた認証情報の有効 …
-
-
Amazon EMR 「Hadoop を使用してビッグデータを分析」チュートリアルをやってみました
AWS認定データアナリティクス受験準備の一環で、Amazon EMRのチュートリ …