Soracom

Users

ドキュメント
Home ドキュメント SORACOM Funk はじめに

SORACOM Funk の特徴

Funk は、デバイスから SORACOM (具体的には、Unified Endpoint や Funk のエントリポイント) に送信されたリクエストを、エントリポイントの設定 に従って、AWS、Azure、Google Cloud といったパブリッククラウドが提供する FaaS (Function as a Service) の関数 (Function) に転送するサービスです。

デバイスの処理をオフロード

デバイスのスペックや消費電力の問題から、複雑な処理ができないデバイスでも、それらの処理を関数 (Function) にオフロードできます。Funk では関数 (Function) のレスポンスを受け取れるため、たとえば、デバイスに接続された温度センサーデータを取得し、Funk を利用して温度を関数 (Function) に送信し、関数 (Function) で計算した推移予測をもとにして、ファン速度を制御できます。これまでデバイス側で計算が難しかったケースでも、関数 (Function) を利用して計算したり、デバイスが取得できないデータを考慮したアルゴリズムを実装したりできます。

Funk の主な特徴

特徴説明Beam、Funk、Funnel の主な違い
想定される転送先

AWS LambdaAzure FunctionsGoogle Cloud Run functions といったパブリッククラウドが提供する FaaS (Function as a Service) の関数 (Function) に転送できます。

また、1 つのグループ設定には転送先を 1 つだけ設定できます。

  • Beam は、任意のサーバーを指定できます。また、1 つのグループ設定に複数の転送先を設定できます。
  • Funk は、関数 (Function) を指定できます。また、1 つのグループ設定には転送先を 1 つだけ設定できます。
  • Funnel は、アダプターが用意された転送先サービスに転送できます。また、1 つのグループ設定には転送先を 1 つだけ設定できます。
Funk を利用できるデバイス

以下のサービスを利用したデバイスから利用できます。

  • SORACOM Air for セルラー (IoT SIM)
  • SORACOM Arc (バーチャル SIM/Subscriber)
  • SORACOM Air for LoRaWAN
  • SORACOM Air for Sigfox
  • SORACOM Inventory
なし
通信経路の暗号化
  • デバイスと Funk のエントリポイントの間の通信経路は、通信キャリアの閉域網でデータが送信されるため、暗号化されていない HTTP などを利用しても安全です。
  • デバイスから関数 (Function) に安全にデータを送信する場合、Funk で TLS 暗号化処理を行えば、デバイスでの TLS 暗号化処理が省略できます。
    • 暗号化のための認証情報は、デバイスではなく 認証情報ストア で保管できます。
Funk を利用しない方法や Funk で TLS 暗号化処理を行わない場合はデバイスで TLS 暗号化処理を行う必要があります

デバイスで TLS 暗号化処理を行うには、認証情報 (クライアント証明書など) も、あらかじめデバイスに保管する必要があります。

なし
プロトコル変換HTTPS を利用できないデバイスからの通信を、HTTPS に変換して関数 (Function) に送信できます。たとえば、TCP や UDP から、HTTPS に変換できます。
  • Beam と Funk は、SORACOM でプロトコル変換を行います。
  • Funnel は、アダプターがプロトコル変換を行います。
接続先の切り替え

PoC フェーズと Production フェーズで、アルゴリズム (処理内容) が変わる場合や、処理結果の送信先が異なる場合でも、デバイスの設定を変更する必要はありません。

デバイスからは、Funk のエントリポイント または Unified Endpoint にデータを送信します。関数 (Function) や転送時のパラメータは、デバイスが手元になくても SORACOM ユーザーコンソールや SORACOM CLI / SORACOM API でいつでも変更できます。

なし
データ通信量と消費電力の削減デバイスから Funk までの暗号化処理が省略でき、さらにデータ通信の手続きが簡素なプロトコルを利用できるため、データ通信量も消費電力も削減できます。また、バイナリパーサー を利用すると、さらにデータ通信量と消費電力を削減できます。なし
同期 / 非同期

同期。関数 (Function) からのレスポンスを受け取れます。

  • LPWA (Sigfox、LoRaWAN) に関しては、デバイスに対してレスポンスを返すことはできません。

  • SMS でデータを送信した場合に、デバイスでレスポンスを受信することはできません。デバイスに SMS を送信する手順については、SORACOM と SMS を送受信する を参照してください。

  • AWS Lambda の関数を呼び出したときに返される HTTP ステータスコードは、以下のとおり関数の呼び出しそのものの成否を表します。

    • 関数が正常終了した場合: 200
    • 関数が異常終了した場合: 500

    処理の成功/失敗をデバイスで判定するには、デバイスに送信するレスポンスのボディに、処理の成功/失敗を判定するための情報を含めてください。

  • Beam と Funk は、同期で処理されます。転送先サーバーからのレスポンスを受け取れます。
  • Funnel は、非同期で処理されます。転送先サーバーからのレスポンスを受け取れません。
対応プロトコル (デバイス - Funk 間)
  • TCP
  • UDP
  • HTTP (POST のみ)
  • SMS
  • USSD
  • LPWA (Sigfox、LoRaWAN)
  • Inventory (データ更新イベント)

詳しくは、エントリポイント一覧 を参照してください。

  • Beam は、任意の HTTP メソッド (GET、POST、PUT など) を利用できます。また、MQTT を利用できます。
  • Funk と Funnel は、HTTP で送信する場合は POST のみ利用できます。なお、MQTT は利用できません。
送信間隔Funk を使って短い間隔 (1 秒に 1 リクエスト等) でデータ送信することを検討されているお客様は、セールスチーム にお問い合わせください。なし
Funk からのアクセスであることを確認するには転送される際に、HTTP(S) ヘッダーにトークンを付与できます。関数 (Function) で、そのトークンを検証することで、Funk からのアクセスであることを確認できます。詳しくは、SORACOM Funk のトークンを検証する を参照してください。
  • Beam は、署名を検証して確認します。
  • Funk は、トークンを検証して確認します。<
  • Funnel は、転送先サービスが確認します。
HTTP/TCP/UDP セッションは切断されることがあります

SORACOM のメンテナンスに伴い、任意のタイミングで HTTP/TCP/UDP セッションが切断される場合があります。

なお、メンテナンスに伴うセッション切断は、SORACOM Status Dashboard などで告知されません。ご了承ください。

そのほかのサービスを併用する

Funk は、Beam と同様に SORACOM のほかのサービスと組み合わせて利用できます。詳しくは、そのほかのサービスを併用する を参照してください。