获取来自AWS IOT CORE到AWS Lambda.Net CORE的MQTT主题名称



我需要帮助。因此,我需要从AWS Lambda获得从AWS IOT CORE订阅(触发(的主题名称。这是我的lambda代码:

public string FunctionHandler(Gps message, ILambdaContext context)
{ 
LambdaLogger.Log("STRING MESSAGE DT: " + message.dt);
LambdaLogger.Log("STRING MESSAGE LN: " + message.ln);
LambdaLogger.Log("STRING MESSAGE LT: " + message.lt);
LambdaLogger.Log("input context: " + context.FunctionName);
LambdaLogger.Log("input context: " + context.Identity);
LambdaLogger.Log("input context: " + context.InvokedFunctionArn);
LambdaLogger.Log("input context: " + context.FunctionName);
LambdaLogger.Log("input context: " + context.AwsRequestId);
LambdaLogger.Log("input context: " + context.ClientContext);
LambdaLogger.Log("input context: " + context.Logger);
LambdaLogger.Log("input context: " + context.LogStreamName);
return JsonConvert.SerializeObject(gpsList);
}

我在cloudwatch中看到,我正确地接收到了来自MQTT的有效负载数据,并正确地触发了它。这就是我的主题:

AWS/#

这是我在AWS/Test上发布的有效载荷(地理位置对象json(

{
"dt": "2020-02-26 18:03:30",
"lt": "xxx.xxx",
"ln": "yyy.yyy"
}

我的aws-iot核心规则:

SELECT *, topic() as Topic FROM 'AWS/#'

这是我从AWS CloudWatch 获得的日志

2021-04-20T09:26:48.457+02:00   STRING MESSAGE DT: 2020-02-26 18:03:30
2021-04-20T09:26:48.473+02:00   STRING MESSAGE LN: xxx.xxx
2021-04-20T09:26:48.473+02:00   STRING MESSAGE LT: yyy.yyy

正如你所看到的,我收到了正确的所有数据,但是,我需要阅读主题的名称。在这种情况下,我需要阅读AWS/Test

我需要,因为主题将包含基本信息,如机器序列,例如"AWS/xyz"。如何从发布MQTT读取主题名称和"xyz"?我需要在AWS Lambda中获取主题名称。我不能将串行机插入有效负载,只能在发布主题的命名上。

您需要在Gps类中添加.Topic属性。lambda接收的事件如下所示:

{
"dt": "2020-02-26 18:03:30",
"lt": "xxx.xxx",
"ln": "yyy.yyy"
"Topic: "your topic here"
}

最新更新