Azure IoT Python: プロキシ経由で WebSockets 上の MQTT を構成する
Azure IoT Python クライアントが対応するプロキシオプションを構成し、WebSockets 上の MQTT を意図的に選択します。
すでに Azure IoT Python SDK を使用しているアプリケーションでは、MQTT トランスポートとそのプロキシオプションを一緒に選択します。この構成は WebSockets 上の MQTT を選択します:
proxy = ProxyOptions(proxy_type='HTTP',
proxy_addr='203.0.113.10', proxy_port=8080)
client = IoTHubDeviceClient.create_from_connection_string(
connection_string, websockets=True, proxy_options=proxy
)
これらのクラスは SDK の文書化されたインターフェースに由来します。デバイスの接続文字列はアプリケーションの秘密構成から供給し、サンプルのプロキシエンドポイントを置き換えてください。パブリックな仲介者が許可される、公開到達可能な IoT Hub エンドポイントでは、HTTP プロキシ一覧が HTTP ホストとポートの候補を提供します。サービスが宛先への経路を許可していることを確認してください。これらは SDK の明示的なオプションです。ブラウザーで動作するプロキシや OS の一般的な設定は、デバイスクライアントの経路を確立しません。
選択したプロキシの種類については ProxyOptions のリファレンスを確認してください。HTTP、SOCKS4、SOCKS5 の各フィールドを区別し、HTTP の制限を含む種類ごとのユーザー名/パスワードの動作を文書化しています。フィールドの存在はすべての認証方式を約束するものではありません。
プロキシのアカウントとデバイス ID は異なる段階を認可します。拒否された仲介者の交換は、ブローカーがデバイスの資格情報を評価する前に接続を停止させることがあります。WebSockets を選択しても、プロキシの宛先とアクセスの制限は有効なままです。
選択したトランスポート、宛先、最初に失敗した段階を記録してください。SDK クライアント、プロキシの実装、許可された経路が一致している必要があります。ブラウザー要求の成功も、SOCKS がすべてのプロトコルを運ぶという一般的な主張も、その互換性を提供しません。