• 投稿日
  • SORACOM Funnel AWS IoT アダプタの効果的な使い方

    IoTはデバイス・通信・クラウドといった多くの技術要素から構成されていますが、日々進化するテクノロジに追従するのは並大抵のことではないことは、皆さんもよくご存じだと思います

    その中でもソラコムは特に通信において少しでも皆さんの負担を軽減するため、今日ご紹介する SORACOM Funnel および AWS IoT アダプタ をサービスしています

    こちらでは SORACOM Funnel AWS IoT アダプタAWS IoT を効果的に使う方法をご紹介します

    12/21: SORACOM Funnel での設定を追記しました

    SORACOM Funnel のおさらいと AWS IoT アダプタ

    SORACOM Funnel※とは、デバイスからのデータを 特定のクラウドサービスに直接転送するサービス です

    ※読み方は「ソラコム ファネル」ですね

    4/6にリリースされました SORACOM Funnel AWS IoT アダプタ によって、AWSが提供しているIoT向けクラウドサービス “AWS IoT” へ直接転送できるようになりました!

    これによって SORACOM Funnel が対応している「直接データを転送できるようになったクラウドサービス」は4種類になりました

    AWS IoTとは?

    IoT向けのデータ収集とデバイス制御用のAWSのサービスです
    MQTTSやHTTP RESTでアクセスができ、収集したデータを各種AWSサービスへと転送します

    AWS IoTのアーキテクト例

    大きい図を開く

    Amazon Kinesis StreamsおよびAmazon Kinesis FirehoseとAWS IoTの違い

    • Amazon Kinesis Streams
      • 大量のデータ通信向きのサービス
      • データ通信量の大小にかかわらず、ストリームの存在で課金される
      • Kinesis Streamsからのデータ取得にAWS LambdaやAmazon Kinesis Client Libraryを使ったプログラム(と実行場所)を準備する必要がある
    • Amazon Kinesis Firehose
      • Kinesis Streamsの特徴を持ちつつ、AWS IoT ルール&アクションのようにAWSのサービスにデータロードが簡単に行える
      • 東京リージョンでは利用不可能 (2017/4/14時点)
      • 振り分け先のAWSサービスがAWS IoTより少ない

    このような面を検討しつつ、アダプタを選定していきます

    SORACOM Funnel AWS IoTアダプタを使ってみる

    SORACOM Funnel と AWS IoT を使い、フルマネージド NoSQLサービス “Amazon DynamoDB” にデータを格納するところまでをご紹介します

    SORACOM Funnelにデータを送信すると、AWS IoTの to_dynamodb/# トピックを経由してAmazon DynamoDBへ保存されます

    全体構成

    大きい図を開く

    ※AWS IoTからAmazon SNSを呼び出しメール送信をする例は Getting Started でご紹介しています

    手順

    1. AWS認証情報の確認
      • AWSアカウントに設定されてるアクセスキー及びシークレットアクセスキー(クレデンシャル)を確認&入手
    2. Amazon DynamoDBの設定
      • テーブルを作成
    3. AWS IoTの設定
      • ルールを作成
    4. SORACOM Funnelの設定
      • AWS認証情報の埋め込み
      • AWS IoTのエンドポイント(転送先URL)の設定

    最後に確認していきます

    1. AWS認証情報の確認

    AWSコンソールからIAMのページを開き、AWSアカウントに設定されてるアクセスキー及びシークレットアクセスキー(クレデンシャル)を入手してください

    AWS認証情報の確認

    2. Amazon DynamoDBの設定

    AWSコンソールからDynamoDBのページを開き、 テーブルの作成 をクリックしてDynamoDBテーブルを作成していきます

    DynamoDBテーブル作成開始

    DynamoDBテーブルは、下記の通りに設定し 作成 をクリックします

    • テーブル名: testing_awsiot
    • プライマリキー
      • パーティションキー: uuid
      • 型: 文字列
      • ソートキーの追加: チェックしない
    • テーブル設定
      • デフォルト設定の使用: チェックする

    DynamoDBテーブル設定

    下図のようにテーブルの作成が開始されます。作成完了までに5~10分程度かかりますので、待ちます

    DynamoDBテーブル作成中

    以上でDynamoDBの設定は完了です

    3. AWS IoTの設定

    AWSコンソールからAWS IoTのページを開き、 Get started をクリックしてAWS IoTの管理画面を開きます

    AWS IoT Get started

    AWS IoTの Settings から Endpoint を控えておきます

    AWS IoT Endpoint

    AWS IoTの Rules を開き、 Create a rule をクリックします

    AWS IoT Create rule

    Create a ruleは、下記の通りに設定し Add action をクリックします

    • Name: to_dynamodb
    • Description: (空)
    • Using SQL version: 2016-03-23
    • Attribute: *, timestamp() + '-' + newuuid() as uuid
    • Topic filter: to_dynamodb/#
    • COndition: (空)

    AWS IoT Create a rule1

    AWS IoT Create a rule2

    Select an actionは、DynamoDBv2 を選択し Configure action をクリックします

    AWS IoT Select an action1

    AWS IoT Select an action2

    Configure actionは、下記の通り設定し Create a new role をクリックします

    • Table name: testing_awsiot

    AWS IoT Configure action

    下図の画面が表示されるので、下記の通り設定し Create a new role をクリックします

    • IAM role name: testing-awsiot-put-to-dynamodb

    AWS IoT Configure action

    改めて IAM role name を先ほど作成した testing-awsiot-put-to-dynamodb を選択した後、 Add action をクリックします

    AWS IoT Configure action

    下図のように DynamoDBへのアクションが追加されたことが確認出来たら Create rule をクリックします

    以上でAWS IoTの設定は完了です

    4. SORACOM Funnelの設定

    まず以下の情報がそろっていることを確認します

    • AWSアカウント
      • アクセスキー
      • シークレットアクセスキー
    • AWS IoT
      • カスタムエンドポイント (AWS IoT の管理画面で確認できます。本例では YOUR_AWSIOT_ENDPOINT.iot.us-west-2.amazonaws.com としています)

    あと決めておく事としては 送信先のトピック です
    今回は my_topic/bar/各SIMのIMSI というように設計します

    4-1. 認証情報(AWS アカウントのアクセスキー)を SORACOM に保管

    まず AWS IoT に接続するために必要な認証情報を SORACOM に保管します

    メニューの [セキュリティ] > [認証情報ストア] > [認証情報を登録]

    AWSアカウントの情報を入力し、登録します

    この保管した認証情報を、次の SORACOM Funnel で指定して利用できるようにします

    4-2. SORACOM Funnel の設定

    SORACOM Funnelの設定画面から、上記情報を各自入力します
    認証情報のところは、先ほど設定した認証情報を選んでください

    非常に簡素ですが、SORACOM Funnelの設定はこれで完了です

    SORACOM Funnel 設定

    設定のポイント

    転送先URL:
    転送先URLは https:// + AWS IoT カスタムエンドポイント + 送信先のトピック になります
    そのため今回は

    https://YOUR_AWSIOT_ENDPOINT.iot.us-west-2.amazonaws.com/to_dynamodb/#{imsi}
    

    このような形です

    転送先URLの中の #{...} について
    紹介している #{imsi}プレースホルダ機能 といって、 SORACOM Funnel 内部で自動的に送信元のSIMのIMSIに置き換えられます
    LPWAでも使えるプレースホルダがありますが、詳しくは SORACOM Funnel Getting start をご覧ください

    確認してみる

    確認の方法は SORACOM Funnel AWS IoT アダプターを使用してデータを送信する / 確認方法 でご紹介している方法と全く同じです

    実際には下図の通りに Amazon DynamoDB にデータが入っていることが確認できます

    Amazon DynamoDBでデータを確認する

    SORACOM Beamとの違い・使い分け

    ソラコムではサービス開始直後から SORACOM Beam という SORACOM Funnel に類似したデータ転送サービスも利用可能です

    AWS IoTはMQTTSで通信できるため、SORACOM BeamのMQTTSプロトコル変換機能をつかってもAWS IoTにアクセスすることができます。それぞれの使い分けは以下の通りです

    • SORACOM Funnelを使ったほうがいい場合
      • データ収集目的 (デバイス→クラウドの通信のみで、下りの通信が無い)
      • MQTT実装が不可能な場合
    • SORACOM Beamを使ったほうがいい場合
      • SORACOM Funnelが対応していない送信先へのデータ転送
      • AWS IoTのDevice Shadowのような、下りの通信(クラウド→デバイス)が必要

    あとがき

    最近ではモデム側にHTTPクライアントが実装されており、ATコマンドを経由してHTTP POSTができたりするため、UART制御さえできればHTTP通信ができる可能性も広がってきました

    クラウドへデータ送信するにはMQTTやHTTPといったアプリケーションプロトコルやそれよりも下のレイヤーのTCP/UDPを使った実装が必須で、しかも各種クラウド・サービスに合わせた認証・ペイロード調整、加えてセキュアにデータを送るためにはTLS化と、通信にまつわる実装がデバイス開発の速度を遅らせてしまいます

    デバイス側における通信の面倒ごとは極力減らし、本来のセンサーなどのハードウェア制御に集中できるお手伝いをこれからも行っていきます!

    ソラコム 松下