ソラコムサンタが街にやってくる
#ソラコムサンタ という、ハッシュタグ #ソラコムサンタ をつけると、もしかすると実装されるかも!という、なんともユルい企画がございます
さすがに12月なのでどんなお願いが来てるのかをチョット見たところ、気になる #ソラコムサンタ を見つけました
Funnelで、IMEIやIMSIを付けずにそのままデータを受け流すオプションがほしい!なにとぞ!#ソラコムサンタ
— Keita Mohri (@ktam1219) 2017年10月13日
確かに。
どういうお願い?
SORACOM Funnel というクラウドアダプタサービスがあります。
最小構成だと4つくらいのパラメータを設定してもらうだけで AWS IoT や Azure Event hubs にデータを送れるようになるというサービスです。
実際に SORACOM Funnel を設定して、デバイスから下記のように送ってみます
curl -H "Content-Type: application/json" -d '{"my_name": "is max!!", "old": 39}' funnel.soracom.io
するとクラウドサービス側では、こんなJSONで受け取ることになるのです
{
"operatorId": "OP0099999911",
"timestamp": 1513816876880,
"destination": {
"resourceUrl": "https://AWSIOT-ENDPOINT.iot.us-west-2.amazonaws.com/rawdata/#{imsi}",
"service": "aws-iot",
"provider": "aws"
},
"credentialsId": "awsiot-dataaccess0",
"payloads": {
"my_name": "is max!!",
"old": 39
},
"imei": "359999999999991",
"sourceProtocol": "http",
"imsi": "449999999999993"
}
デバイス側から送ったデータが payloads
というキーに押し込まれて、その他便利に使ってもらえる付帯情報がくっつくフォーマットです
一見便利そうなのですが、このJSONを例えば Amazon Elasticsearch Service へ流したりすると、データの加工のひと手間が必要だったりと、逆に面倒ということもあるので「付帯情報をつけないオプションって無いのかなー?」というお願いということで理解しました!
ソラコムサンタの代わりにお届け(限定的ですが)
AWS IoTを使うということになりますが、論よりコード
AWS IoT のルール (今はACTって名称になりましたね) で、こんな感じに設定してみてください
SELECT payloads.* FROM 'rawdata/#'
**payloads.***が肝です。これで「payloadsの中身を取り出す」という宣言になります
すると rawdata/
トピックに投げられたJSONは、下記のように再構成されます
{
"my_name": "is max!!",
"old": 39
}
でも、困るような気が。
データ内に識別できる情報が抜けてしまっていて、どのデバイスからのデータかわからなくなってしまうと思います
そのため、例えば IMSI (International Mobile Subscriber Identity) を加える場合は、こんな感じになります
SELECT payloads.*, imsi FROM 'rawdata/#'
imsiがポイントです。下記のように取り込まれます
{
"my_name": "is max!!",
"old": 39,
"imsi": "449999999999993"
}
おわりに
どうでしょう?お届けに足りる内容であればうれしいです!