は、一つの可能な解決策です。私は地元のモスキートを使ってブリッジし、「不明なエラー」で接続できませんでした。オンラインで検索したところ、この問題は最近の蚊帳の最新版に現れたようです。代わりに、私は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エディタを使用することはできなくなりました。変更を加えるには、再度ジッパーしてアップロードする必要があります。
もしあなたがラムダ関数を書いていれば、あなたはCloudMQTTにアクセスすることができ、アクセスすることができ、必要なライブラリを持っていなければなりません。 –
私のラムダ機能は、AWS IoTデバイスシャドウを使用して状態を更新するだけなので、実際のパブリッシュは自動的に発生しています。自分のコードで明示的に実行していません。私はAWSにとって非常に新しく、昨日前にそれを使用したことがないので、本当に明白な何かを見逃している可能性があります。 –
これをさらに見て、ブローカーをブリッジするようなことは正しいアプローチですhttps://aws.amazon.com/blogs/ iot/how-to-bridge-mosquitto-mqtt-broker-to-aws-iot/ –