masato-ka's diary

日々思ったこととか、やったことの備忘録。

Google IoT CoreとSORACOM Beamの連携について調査してみた。

この記事について

この記事ではSORACOM BeamからGoogle Cloud IoT Core(以下 IoT Core)へ接続する方法について調査しました。SORACOM Beamではエンドポイントで受けた通信をGoogle IoT Coreへ転送することができます。今回はSORACOM Beamと IoT Coreを組み合わせることで何が実現できるのか考えてみました。

具体的な設定方法などは以下の記事を参考にしてください。

masato-ka.hatenablog.com

IoT CoreとSORACOM Beam接続について

IoT CoreとSORACOM Beam連携のメリット

通常、IoT Coreへデバイスを接続する場合、デバイスCA証明書で署名された秘密鍵で署名をしたJWTトークンを作成する必要があり、デバイスCA証明書のプライベートキー秘密鍵を保持する必要があります。IoT CoreへSORACOM Beamを利用して接続した場合、SORACOM Beam側で証明書を秘密鍵を保持し、JWTトークンの作成もBeamが代替します。そのため、デバイスCA証明書秘密鍵は必要ないので、デバイスの管理が楽になります。デバイスへの遠隔配置よりもサーバ側への配置の方がハードルが低くなると思います。さらにJWTトークンをデバイス側で作成する必要がありません。そして、IoT CoreへはMQTTSで接続する必要がありますが、SORACOM Beamを使うことでデバイスはMQTTのみで通信することができます。  まとめると、連携のメリットは以下のようになります。

  1. バイス(証明書)の管理を簡略化できる。
  2. JWTトークンの作成やMQTTSといった高負荷処理をクラウドへオフロードできる。

ちなみにこの辺りの処理をArduino向けに愚直に実装したのが、以下のライブラリになります大変そう。

github.com

IoT CoreとSORACOM Beam連携の不便な点

現状、SORACOM BeamとIoT Coreの接続設定の関係は、SORACOM Beamの1設定につき、IoT Coreの1デバイスIDのみ接続できるようです。SORACOM Beamの設定はSIM グループに複数設定可能ですが、同一の宛先には1つのみですので、複数のデバイスIDを接続したい場合はSIMごとにグループを作る必要がありそうです。メリットで述べたデバイスの管理を簡略化できますが、SORACOM側の設定管理が煩雑になりそうです。またCA証明書の暗号化方式もGCP側は4種類に対して、SORACOM側で現在対応している方式が2種類です。SORACOM BeamのIoT Coreとの連携は2017年6月にリリースされましたが、IoT Core自体は2018年2月にGAになりました。今後SORACOM Beamのサービスアップデートでこの辺りが改善されるのではないかと考えています。

まとめ

今回はGoogle Cloud IoT Core とSORACOM Beamについて調査をしました。連携のメリットはありますが、実際に使おうとすると考えなければいけないポイントがありそうです。もしかすると想定する使い方以外の方法があるかもしれませんが、もう少し公式のドキュメントを増やして欲しいと思いました。次の記事では具体的にIoT CoreとSORACOM Beamを連携させる方法について紹介していきます。