セキュアトンネリングの仕組み

セキュアトンネリングには、送信元(source)デバイス送信先(destination)デバイス の2つが登場します。

どちらのデバイスにも local proxy をインストールする必要があります。 local proxy は、セキュアトンネリングのサービスとデバイスアプリケーションとのデータストリームを中継します。 local proxy は source もしくは destination のいずれかのモードで動作します。

このハンズオンでは、送信元デバイスは AWS Cloud9 のインスタンス、送信先デバイスは Amazon EC2 のインスタンスとなります。

送信先デバイス(EC2)では、listener agent がすでにデプロイされ動作しています。 listener agent は IoT Core との間で MQTT 接続を行い、シャドウのトピックに対してサブスクライブしています。 listener agent のモノの名前は tunneling-listener-agent です。 listener agent は local proxy の実行状態を cmd/sectunnel/tunneling-listener-agent/resp トピックにパブリッシュします。

レジストリからデバイス(今回の場合は listener agent)を探す方法を覚えていますか? ヒント: aws iot list-th... もしくは aws iot search-i... --query-s... "thingN...:tunnel..."

送信元デバイスでは、tunnel managerを利用してトンネルを開きます。 tunnel manager が開始したら、トンネルが作成されます。 トンネルが作成されると、トークンのペア(CAT: client access token)が生成されます。 tunnel manager はトークンと送信先デバイスで接続したいサービスを listener agent のシャドウに対してパブリッシュします。

listener agent はトークンを受信すると、local proxy を立ち上げ、AWS IoT のセキュアトンネリングとの接続を確立します。

tunnel manager も local proxy を送信元デバイスで立ち上げます。トンネルとの接続に利用されるポートがローカルデバイス上で開かれます。