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とか設定出来るようになるともっと嬉しいです。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
JAWS FESTA 2019 Sapporo 参加&当日スタッフ&企業サポーターで!
2019年のJAWS FESTA は札幌です! 今回もありがたいことに、所属して …
-
特定AWSアカウント特定リージョンのSQSキューを削除するLambda(Python)
やりたいこと 特定アカウント内特定リージョン内のSQSキューを全部削除したいです …
-
S3に置いたMP3ファイルをTwilioから電話再生する(AWS Lambda Python)
Google Calendar Twilio ReminderのTwilioを使 …
-
Amazon LinuxにRedmine 環境構築(エラーと対応をそのまま記載版)
Amazon Linuxにgit + Redmineの環境を構築してみます。 自 …
-
AWS Lambda(Python3.7)でPandocを実行する
昨日まで(AWS Batch) 昨日までは、Pandocを実行して、S3バケット …
-
AWS Glueチュートリアル
AWS Glueのマネジメントコンソールの左ペインの一番下にチュートリアルがあり …
-
API Gatewayで顧客レベルの使用量プランを設定する
API GatewayのAPIキーを使って使用量プランでのスロットリングも設定し …
-
WordPressで発生した「No space left on device」に対応
CloudWatch Logsメトリクスフィルターで「No space left …
-
Amzon Linux のApacheでRedmineとWordPressをバーチャルホストで共存する
EC2とRDSを節約しようと思いまして、Redmineを動かしてるとこに検証用W …
-
Cloud9でCodeWhispererを使用する
アクセス権限 Cloud9のEC2に設定するIAMロールのIAMポリシーで co …