Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取来自AWS IOT CORE到AWS Lambda.Net CORE的MQTT主题名称_.net_Amazon Web Services_Aws Lambda_Amazon Cloudwatch_Aws Iot - Fatal编程技术网

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

获取来自AWS IOT CORE到AWS Lambda.Net CORE的MQTT主题名称,.net,amazon-web-services,aws-lambda,amazon-cloudwatch,aws-iot,.net,Amazon Web Services,Aws Lambda,Amazon Cloudwatch,Aws Iot,我需要帮助。 因此,我需要从AWS Lambda获得从AWS IOT CORE订阅(触发)的主题名称。 这是我的lambda代码: public string FunctionHandler(Gps message, ILambdaContext context) { LambdaLogger.Log("STRING MESSAGE DT: " + message.dt); LambdaLogger.Log("

我需要帮助。 因此,我需要从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);
    }
我在cloud watch中看到,我正确地从MQTT接收到有效负载数据,并正确地触发。 这就是我的主题:

AWS/#
这是我在
AWS/Test

{
        "dt": "2020-02-26 18:03:30",
        "lt": "xxx.xxx",
        "ln": "yyy.yyy"
}
我的aws物联网核心规则:

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

{
        "dt": "2020-02-26 18:03:30",
        "lt": "xxx.xxx",
        "ln": "yyy.yyy"
}
我需要,因为该主题将包含基本信息,如机器系列,例如“AWS/xyz”。 如何从publish MQTT读取主题名称和“xyz”?我需要在AWS Lambda中获取主题名称。
我无法将串行计算机插入有效负载,但只能在发布主题的命名上插入。您需要在Gps类中添加.topic属性。lambda接收的事件如下所示:

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