2017-12-07 12 views
0

SigV4またはクライアント証明書をサポートしていないクライアントからAWS IoT MQTTブローカーをパブリッシュ/サブスクライブしようとしています。私はこれが可能ではないと言うことから、このクライアントを統合する最良の方法は何ですか?Amazon MQTT BrokerにSSLで接続

現在、クライアントはCloudMQTTブローカに公開していますが、Amazon Echo/Alexaを音声制御に統合して、AWS IoT MQTTブローカに接続する必要があります。私はAlexaのデータを公開しています(LambdaとIoT Device Shadowsを使用しています)。

SSLを使用してクライアントをAWS MQTTに接続できないことがわかっている限り、SSLは証明書を要求します。私はクラウドMQTTをAWS MQTTに接続する必要がありますか?あるいは、エコーがAmazons以外のMQTTブローカーに公開されるようになる方法はありますか?これはしかし、非常に複雑なプロセスであることが判明したの

https://aws.amazon.com/blogs/iot/how-to-bridge-mosquitto-mqtt-broker-to-aws-iot/

で説明するようにブローカーを橋渡し

+1

もしあなたがラムダ関数を書いていれば、あなたはCloudMQTTにアクセスすることができ、アクセスすることができ、必要なライブラリを持っていなければなりません。 –

+0

私のラムダ機能は、AWS IoTデバイスシャドウを使用して状態を更新するだけなので、実際のパブリッシュは自動的に発生しています。自分のコードで明示的に実行していません。私はAWSにとって非常に新しく、昨日前にそれを使用したことがないので、本当に明白な何かを見逃している可能性があります。 –

+0

これをさらに見て、ブローカーをブリッジするようなことは正しいアプローチですhttps://aws.amazon.com/blogs/ iot/how-to-bridge-mosquitto-mqtt-broker-to-aws-iot/ –

答えて

0

は、一つの可能​​な解決策です。私は地元のモスキートを使ってブリッジし、「不明なエラー」で接続できませんでした。オンラインで検索したところ、この問題は最近の蚊帳の最新版に現れたようです。代わりに、私はAWS Linux EC2インスタンス上で実行されているmosquittoブローカーとのブリッジを試みました。これを使用してブリッジングに成功しました。

私が思いついたよりよい解決策は、私が既に使用していたMQTTブローカーに直接公開するためにラムダ関数を変更することです。これを行うには、node.jsモジュール 'mqtt.js'(または同様のライブラリ)を含める必要があります。これはaws-sdkには含まれていないため、実行方法を理解するために少し読んでください。 AWS Lambda Webインターフェイスのインラインエディタを使用してコードを作成していますが、残念ながら外部ライブラリを含めることはできません。代わりに、独自の展開パッケージを作成する必要があります。

以下は、独自の展開パッケージを作成して開始するのに役立つ2つの有用なリンクがありますが、彼らは私が下に言及している情報の重要なビットのカップルが欠落しています

https://aws.amazon.com/blogs/compute/nodejs-packages-in-lambda/

http://docs.aws.amazon.com/lambda/latest/dg/nodejs-create-deployment-pkg.html

あなたのハードドライブ上のファイルにコードを書いてから、コマンドラインからnpm-installを使って、コードが入っているフォルダに必要な依存関係を入れておく必要があります。それをすべて含んでいるトップレベルのフォルダはありません。つまり、あなたのコードはzipのルートにある必要があります。zipのルートにあるフォルダではありません(フォルダを含むコードを右クリックしてzipに送ると、あなたが得られるものです)。

また、オンラインエディタでの作業を中止する場合は、パストップが正しく解決されるように、JavaScriptの上部に2行を追加する必要があります。

var child_process = require('child_process'); 
var path = require('path'); 

このコードをラムダ機能のWebエディタでアップロードして、通常どおりに機能をビルドすることができます。残念ながら、インラインWebエディタを使用することはできなくなりました。変更を加えるには、再度ジッパーしてアップロードする必要があります。