Sigfox Callbackには、Custom Callback以外にAWS IoT、AWS Kinesis、Microsoft Azure Event hub、Microsoft Azure IoT hub、IBM Watson IoT Platformへの連携が用意されています。
ここでは、AWS IoTとの連携方法を記載します。
#Sigfox Callback設定とAWS IoTの設定
まずは、Sigfoxクラウドで、Callback設定画面に移動し、「AWS IoT」を選択します。
下図の画面になります。後ほど、AWS IoT側の設定で必要になるExternal Idをコピーしたうえで、**[Launch Stack]ボタンをクリックします。
AWSコンソールが立ち上がり、CloudFormationの画面に移るので、そのまま[Next]**をクリックします。
スタックの詳細の指定画面になります。AWSAccountIdはご自身のAWSアカウントID、ExternalIdは、先ほどSigfoxクラウドのCallback設定でコピーしておいたExternalIdを、Regionには、ご自身のリージョンを入力してください。リージョンを調べる場合は、こちらから探してください。アジアパシフィック(東京)の場合は、「ap-northeast-1」となります。
TopicNameは、AWS IoTにpublishするトピック名となります。
[次へ]ボタンをクリックすると、オプションの設定画面になりますので、そのまま[次へ]ボタンをクリックすると、確認画面になります。
☑AWS CloudFormation によって IAM リソースが作成される場合があることを承認します。
にチェックを入れて、[作成]ボタンクリックで、スタックが作成されます。
作成されたスタックを開き、「出力」を確認します。
ここで、ARNRoleとTopicをコピーしておき、SigfoxクラウドのCallback設定画面に戻り、ARN RoleとTopicに貼り付けます。RegionはAWS IoT側で設定したリージョンと同じものを選びます。
Json Bodyには、AWS IoTにCallbackするデータをJSON形式で入力します。今回は、下記のようなJSONを送ってみます。
{
"device":"{device}",
"time":{time},
"data":"{data}"
}
[OK]ボタンをクリックし、Callback設定を完了させます。これで、SigfoxクラウドからAWS IoTへのCallbackが完了しました。
##DynamoDBにデータを送ってみる
SigfoxクラウドからのデータをDynamoDBに保存していきます。
AWSのサービス一覧から「DynamoDB」を選択します。
DynamoDBのダッシュボードから「テーブルの作成」ボタンをクリックし、テーブル名とプライマリーキーを設定します。絶対ではないですが、deviceとtimeをキーにしておきます。(timeキーを追加する場合は、☑ソートキーの追加にチェックをいれてください。)
テーブルの作成が完了するとDynamoDBのテーブルメニューにテーブル名が表示されます。
##DynamoDBにデータを受け渡すためのRoleを設定
DBテーブルを用意しただけでは、データが受けわされてないので、受け渡し用の設定を行います。
AWSサービス一覧から**「IoT Core」を選択し、左メニューのACTをクリックし、[ルールの作成]**を行います。
ルールの作成画面では、AWS IoT (CloudFormation)で設定したデータハブからデータを取得し、そのあと、どうするかを定義します。
今回は、"sigfox" Topicから全てのデータを取得し、DynamoDBに、そのデータを挿入したいので、ルールクエリステートメントには、
SELECT * FROM 'sigfox'
と入力します。(Topic名がsigfox以外の場合は、ご自身の環境に合わせて書き換えてください)
[アクションの追加]ボタンをクリックし、DynamoDBテーブルにメッセージを挿入するを選択。[アクションの設定]ボタンをクリックし、アクションの設定内容を記載していきます。
今回は、先ほど作成したDynamoDBのテーブル名を選択します。選択すると、"device"とうパーティションキーと"time"というレンジキーが自動設定されます。
あとは、パーティションキーの値に${device}
、レンジキーの値に${time}
を入力し、この列にメッセージデータを書き込むという入力欄にpayload
を入力してください。これで、DynamoDBテーブルにpayload列が追加され、その列にSigfoxクラウドからCallbackされたメッセージの中身(JSON形式)が挿入されていくこととなります。
(IAMロール名も適当に作っておいてください)
最後に、[ルールの作成]ボタンをクリックすると、ルールが一つ出来上がります。
DynamoDBのテーブルを確認すると、Sigfox Callbackで設定したJSONにあわせた項目が挿入されていることが確認できます。