2017-06-26 7 views
0

受け取ったパラメータに基づいてIoTトピックを使用して、関連するIoTデバイスのコレクションにメッセージを公開するAWSラムダ関数(APIゲートウェイ経由のAPI呼び出しによってトリガされる)があります特定のIoTデバイスを一意に識別するシリアル番号)。私はboto3のIoTデータプレーンクライアントメソッドpublish()を使ってこれを行います。この同じラムダ関数を同じIoTトピックに登録させて、IoTデバイスからの応答を受け取ることができる方法はありますか?AWSラムダ内のAWS IoTトピックを購読する

IoTメッセージがラムダをトリガするための規定された方法は、ラムダを呼び出すIoTルールアクションを作成することですが、これは実際には私にとってはうまくいきません。私は、IoTデバイスの応答をリッスンし、その応答に基づいて外部の呼び出し元にHTTP応答を返すために、元のラムダ(APIゲートウェイに外部API呼び出しによってトリガーされたラムダ)が必要です。これは、IoTデバイスがIoTトピックで応答したときにトリガーされる別個のラムダであれば達成可能ではないようです。これを行う方法に関するアイデア?

答えて

0

これは私の質問に投稿したことを可能にします。IoTデバイスの応答をSQSキューに表示するIoTルールを追加しました。ラムダ(開始時に要求を処理するためにAPIゲートウェイによって呼び出された)は、HTTP POSTを送信した外部クライアントにAPIゲートウェイ経由でレスポンスを構築して送信するために、消費するメッセージのSQSキューをポーリングします要求。確かに、これはAWS Lambdasを使用する素晴らしい方法ではありませんが、Lambda + API Gatewayを使用してIoT publish/subscribeでHTTPリクエスト/応答をフックアップする唯一の方法と思われます。

1

なぜ元のラムダでなければならないのですか?私はあなたが保存したいいくつかの状態があると思います。この場合、メッセージを永続化するか、メッセージに渡す必要があります。

+0

ありがとうございます - 元のラムダである必要がありますそれ自体は内部状態のためではなく、それはAPIゲートウェイ経由でラムダにHTTP POST要求を送信する外部クライアントがHTTP応答としてIoTデバイスの応答を取得する方法です(そのHTTP要求に対して)。 IoTデバイスの応答が異なるラムダをトリガする場合、元のラムダはレスポンスを返すことができません。つまり、外部クライアントのHTTPリクエストは応答も空の応答も得ません。明確化のために – Jupiterese

+1

感謝します。あなたはどんなタイプの応答を待っていますか?デバイスとクライアントの間にWebソケットが必要なように聞こえます。 –

+0

ありがとう、私はあなたがそこにいるかもしれないと思います。私は現在、IoTデバイスの応答をSQSキューに書き込むIoTルールと、それが消費するメッセージのLambdaポーリングを行い、APIゲートウェイを経由してレスポンスを構築して送信することによって、それをkludgingしていますHTTP POST要求を送信した外部クライアント。 – Jupiterese

関連する問題