Posted at

TENKitとAWS Lambdaの連携

本記事は、TENKit の応用的な利用について説明いたします。

事前に基礎編「 TENKitとGoogleスプレッドシートの連携(簡単記録編)」をご確認いただきますようお願いします。

TENKit (テンキット)は「テンキー」を「IoT」化するキットです。

TENKit では、テンキーで入力された「数字」と、Googleスプレッドシートなどクラウド上のサービスを簡単に結びつけることができます。

ここでは、TENKit の応用的な利用として、AWS Lambdaと連携する方法について説明します。

スクリーンショット 2019-09-13 9.49.49.png

本手順をマスターすると、TENKit をデータベースや業務システムと連携するなど、より高度に利用することができるようになります。


設定前の準備

AWS Lambdaとの連携を設定する前に、以下の項目を確認してください。

1. 基礎編をマスター

事前に基礎編「 TENKitとGoogleスプレッドシートの連携(簡単記録編)」をご確認いただき、TENKitの基本的な利用方法についてマスターしていただくようお願いします。

2. AWSのアカウントを用意

AWS のアカウントをご準備ください。

本手順では、アジアパシフィック(東京)リージョンを利用します。

また「Lambda」に加えて「API Gateway」サービスを利用しますので、事前に概要等をご確認ください。


連携の設定

連携の設定は、大きく以下のステップで行います。


  1. Lambda関数の作成:Webhook URLが呼び出された際の動作を定義

  2. API Gatewayの設定:Webhook URLの作成

  3. Lambda関数の設定:API Gatewayとの紐付け

  4. TENKitに作成したWebhook URLを登録


Lambda関数の作成

まず最初に、Lambda関数を作成して、Webhook URLが呼び出された際の動作を定義します。

AWS のコンソールにアクセスし、Lambdaの管理画面を開きます。

「関数の作成」より、以下のように情報を入力して、新しいLambda関数を作成します。


  • 関数名 : TENKit

  • ランタイム : Node 10.x

スクリーンショット 2019-09-13 11.13.04.png

続いて、「関数コード」部分に以下のコードを記述して保存します。

exports.handler = async (event) => {

var body = JSON.parse(event.body);
var message = body.message;
var created_at = body.created_at;

// ログに表示
console.log(message);
console.log(created_at);

return {
  "isBase64Encoded" : false,
  "statusCode" : 200,
  "headers" : {},
  "body" : "welcome to tenkit!"
}
};

上記は、呼び出し元(TENKit --> API Gateway --> Lambda)からの情報をログに表示する最もシンプルなコードになります。


API Gatewayの設定

次に、AWS のコンソールより、API Gateway の管理画面を開きます。

初めてアクセスした場合は「今すぐ始める」ボタンを押してください。

API作成画面に遷移するので、以下のように入力し、「APIの作成」ボタンをクリックします。


  • プロトコルを選択する : Rest

  • 新しい API の作成 : 新しいAPI

  • 名前と説明


    • API 名 : TENKit

    • 説明 : TENKit

    • エンドポイントタイプ : リージョン
      スクリーンショット 2019-09-13 10.07.39.png



これにより、APIのベースとなる部分が作成されました。

次に、「アクション」ボタンより「メソッドの作成」を選択して、HTTP POSTメソッドを追加します。

スクリーンショット 2019-09-13 10.14.13.png

プルダウンで「POST」を選択し、下記のように各項目を設定して「保存」ボタンをクリックします。

Lambda関数「TENKit」が無いの警告が表示されます。

本関数は次のステップで作成します。


  • 統合タイプ : Lambda

  • Lambda プロキシ統合の使用 : 有効

  • Lambda リージョン : ap-northeast-1

  • Lambda 関数 : TENKit

  • デフォルトタイムアウトの使用 : 有効

スクリーンショット 2019-09-13 10.19.25.png

最後に、本APIをデプロイします。

「アクション」より「APIのデプロイ」を選択します。

スクリーンショット 2019-09-13 10.22.46.png

デプロイされるステージに「新しいステージ」を選択し、ステージ名に「tenkit」と入力して「デプロイ」します。

スクリーンショット 2019-09-13 10.24.43.png

成功すると以下のように専用のAPIが表示されます。

これがTENKitに登録するWebhook URLになるので、コピーして保管してください。

スクリーンショット 2019-09-13 10.25.15.png


Lambda関数の設定

再びLambda管理画面に移動し、作成した「TENKit」関数の設定画面に移動します。

上部「Designer」部分で「トリガーを追加」ボタンをクリックし「API Gateway」を追加します。

トリガーとなるAPI Gatewayの詳細について、以下のように設定します。


  • API : TENKit

  • デプロイされるステージ : tenkit

  • セキュリティ : オープン

スクリーンショット 2019-09-13 10.40.06.png

「Desiner」部分に「API Gateway」が追加されました。

スクリーンショット 2019-09-13 10.44.00.png

これにより、先ほど作成したAPIが呼び出された際に、このLambda関数が実行されるようになりました。


TENKitへの登録と実行

最後に、API Gatewayで作成したWebhook URLを下記よりTENKitに登録します。

スクリーンショット 2019-09-10 17.45.55.png

TENKitに接続されたテンキーを入力し、Lambdaの実行ログ(CloudWatch)に入力が表示されていれば成功です。


最後に

本手順では、TENKit の応用的な利用として、AWS Lambdaと連携する方法について説明しました。

これにより、TENKit をデータベースや業務システムと連携するなど、より高度に利用することができるようになります。

どのように利用するはかアイデア次第です。面白い使い方を是非発見してください。