Ghost Lambdas responding to IoT Cloud subscriptions

0

Dear GG users -
I have 2 GG Core devices with no Things connected to them.

I want to trigger from AWS Cloud to GG Core (& wait for response). My solution has these pieces:

A. Lambda Function-1 (SendRequest-ReadReply)
Running on AWS, does pub/sub to/from IoT Cloud (say on mqtt/requestTopic & mqtt/replyTopic).
Built using AWSIoTPythonSDK, connected to IoT Cloud via WebSockets.

B. Lambda Function-2 (SendResponse)
Running on AWS GreenGrass Core device, receives events from mqtt/requestTopic (subscription via GG console) and explicitly publishes a response to mqtt/replyTopic.
Built using GreengrassSDK, connected to IoT Cloud via iot-data client

Now the question:

When my GG Core is up and running / healthy, everything seem to work.
When my GG Core is down, my Lambda-1 does get GHOST responses from somewhere with a different reply than I expected.
Is there something (like shadow) baked into AWS IoT Cloud which is replying on behalf of GG Core device (even when it's down???).

PS: I want the request to be run by the GG Core device only (and not by anyone else).

Any help is appreciated! :)

Cheers,
rg

Edited by: rgrandhi on Oct 8, 2019 10:48 PM

質問済み 4年前189ビュー
3回答
0

Hi rgrandhi,

Since your question is more about the cloud lambda side I'm going to reassign this question. What rules do you have setup to trigger your cloud Lambda, Lambda 1? Are you using wildcards?

Thanks,
KR-AWS

AWS
KR-AWS
回答済み 4年前
0

Hi there!
No, there are no rules triggering Lambda 1, I use StepFunctions to invoke it manually (for now).
Yes, there are wildcard subscriptions involved in this in the following format.

Lambda1 (on Cloud) --> publishes to topic --> CMD/are_you_alive/<lambda's context.aws_request_id>
Lambda1 (on Cloud) --> starts to subscribe to --> RESULT/are_you_alive/<lambda's context.aws_request_id>
Lambda2 (on GG Core device) --> with a GG subscription to topic --> CMD/are_you_alive/+
Lambda2 (on GG Core device) --> publishes its response to --> RESULT/are_you_alive/<whatever aws_request_id it received from Lambda1 as a part of request body>

I repeat my problem, if it helps with clarity:
I'm getting responses from Lambda2 despite the GG Core device is down!!!!!!??

On a side note, is there a recommended way to publish/subscribe to IoT cloud messages from Lambda1 (running on Cloud). PS: I got inspiration from PubSub example from AWS GitHub (AWSIoTPythonSDK).

Appreciate your help!

cheers,
~rg

回答済み 4年前
0

Hello -
I found the solution to my problem.

It is not an issue with Lambda or GreenGrass as I doubted earlier.

I have a global scoped variable declared in my Lambdas, so, when AWS is reusing Lambda runtime(s) between invocations, I'm getting unwanted results in its response.

Just wanted to put an end to this thread as closure :)

cheers,
rg

回答済み 4年前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

質問に答えるためのガイドライン

関連するコンテンツ