Help us understand the problem. What is going on with this article?

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 をデータベースや業務システムと連携するなど、より高度に利用することができるようになります。

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

tetotetote
てとてとて合同会社です。よろしくお願いします。
http://teto.tech/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした