Skip to content

サーバレス接続ガイド

本ページでは、サーバレスデプロイメントの接続方法と接続トラブルシューティングのガイドラインについて説明します。

サーバレス接続 Q&A

MQTT over TCP と WebSocket とは何ですか?

標準の MQTT は TCP/IP プロトコルスタック上に構築された非同期通信メッセージプロトコルであり、不安定なネットワーク環境でもスケール可能です。そのため、デバイスのハードウェアストレージ容量やネットワーク帯域が限られているシナリオに適しています。

WebSocket は TCP をベースとした新しいネットワークプロトコルで、ブラウザとサーバーがワンハンドシェイクで持続的な接続を確立できます。双方向のデータ送受信を可能にし、クライアントとサーバー間のデータ交換を簡素化します。ここでの WebSocket は、初期接続確立に WebSocket を用い、その後 WebSocket チャネル上で MQTT プロトコル通信を行う「MQTT over WebSocket」を指し、主にブラウザベースの接続に使用されます。

標準の MQTT over TCP と WebSocket の両方は暗号化されていないため、安全性のリスクがあります。

MQTT over TLS/SSL と WebSocket over TLS/SSL とは何ですか?

MQTT over TLS/SSL および WebSocket over TLS/SSL は、MQTT または WebSocket プロトコル通信に TLS/SSL 暗号化を追加したものです。これにより、通信が盗聴や改ざんから保護されます。

MQTT TLS/SSL はポート 8883 を使用し、mqtts プロトコルに対応します。一方、WebSocket TLS/SSL はポート 8084 を使用し、wss プロトコルに対応します。

なぜサーバレスは MQTT over TLS/SSL または WebSocket over TLS/SSL のみをサポートしているのですか?

サーバレスは EMQX のマルチテナンシーアーキテクチャに基づいており、複数のユーザーが単一の EMQX クラスターを共有します。TLS 暗号化を用いた MQTT および WebSocket は、データ伝送のセキュリティと信頼性を提供します。

TLS/SSL 接続のクライアントコードはどのように書けばよいですか?

クライアント側コードの参考として、TLS 関連のサンプルコードをご参照ください。

Python
Java
GO
Node.js
ESP 32
ESP 8266
Android
swift

CA ファイル

サーバレスは片方向 TLS を使用しています。EMQX はサーバー側の CA を提供および管理しています。クライアントによってはサーバー側 CA による検証が必要な場合がありますので、こちらからダウンロードしてください

接続トラブルシューティングガイド

サーバレスデプロイメントに接続できない場合は、以下の手順でトラブルシューティングを行ってください。

  1. 接続アドレスの確認
    EMQX サーバレスが提供する 正しいドメイン を使用しているか確認してください。EMQX Cloud のドメインを CNAME で独自ドメインにリダイレクトすることはサポートされていません。非暗号化 TCP ポート接続が必要な場合は、Dedicated Flex プランの利用をご検討ください。

  2. 接続ポートの確認
    EMQX サーバレスは MQTT over TLS(ポート 8883)および WebSocket over TLS(ポート 8084)での接続のみをサポートしています。ポート 1883 および 8083 への接続はサポートされていません。非暗号化 TCP ポート接続が必要な場合は Dedicated Flex プランをご検討ください。

  3. ネットワーク接続のテスト
    telnet コマンドを使用して、サーバーと EMQX サーバレス間のネットワーク接続をテストしてください。例:telnet broker.emqx.io 8883(実際のデプロイメントアドレスに置き換えてください)。

  4. 認証情報の確認
    EMQX Cloud は匿名認証をサポートしていません。EMQX Cloud コンソールで MQTT クライアントのユーザー名とパスワードを設定し、クライアント接続時に正しく設定されていることを確認してください。

  5. SNI(Server Name Indication)設定の確認
    クライアント接続時に正しい SNI 情報を提供する必要があります。SNI 情報が誤っているか欠落している場合、EMQX Cloud はエラーコード -5 で接続を拒否します。

  6. MQTTX クライアントでのテスト
    MQTTX は無料で使いやすいクロスプラットフォームの MQTT 5.0 クライアントテストツールです。クライアントコードに起因する接続問題かどうかを検証するために MQTTX の使用を推奨します。詳細な使い方は以下を参照してください:MQTTX ユーザーガイド

サポートチケットによる問い合わせ

上記の手順をすべて確認しても問題が解決しない場合は、サポートチケットシステムからお問い合わせください。問題解決を迅速にするため、以下の詳細情報を提供してください。

  • デプロイメント名および ID(コンソールの「デプロイメント管理」ページで確認可能)
  • デプロイメントタイプ(例:サーバレス、Dedicated Flex など)
  • クライアントの種類およびバージョン
  • クライアント接続のサンプルコード(使用言語例:Python、JavaScript、関連する接続コード、機密情報は伏せてください)
  • クライアントのエラーログや具体的なエラーメッセージ(可能であれば詳細なエラー説明やスクリーンショットを添付してください)