Die AWS-Lambda-Golang-Nutzlast iotdataplane.PublishInput() ist immer leer

WBOY
Freigeben: 2024-02-11 19:10:08
nach vorne
463 Leute haben es durchsucht

AWS lambda golang iotdataplane.PublishInput() 有效负载始终为空

php-Editor Xinyi erinnert alle daran, dass bei Verwendung der Programmiersprache AWS Lambda Golang eines zu beachten ist: Bei Verwendung der Methode iotdataplane.PublishInput() ist deren Nutzlast (Payload) immer leer. Dies bedeutet, dass beim Schreiben relevanten Codes besonderes Augenmerk auf den Umgang mit leeren Ladesituationen gelegt werden muss, um den normalen Betrieb des Programms sicherzustellen. Im eigentlichen Entwicklungsprozess können bedingte Anweisungen oder Fehlerbehandlungsmechanismen verwendet werden, um mit dieser Situation umzugehen und potenzielle Probleme zu vermeiden. Wenn Sie dies berücksichtigen, können Sie die Robustheit und Zuverlässigkeit Ihres Codes verbessern.

Frageninhalt

Ich verstehe nicht, wie man mit Golang das Payload-Feld von iotdataplane.PublishInput() verpackt. Kann jemand helfen? Mein Lambda veröffentlicht fehlerfrei, aber die Nutzlast wird in CloudWatch und Abonnenten immer als leer angezeigt. Das mache ich:

type Response struct {
    SerialNum string `json:"serial_number"`
    Time      int64  `json:"time"`
}

resp := Response{
    SerialNum: sernum,
    Time: utc,
}
payload, _ :=- json.Marshal(resp)  // payload is a byte array

...

params := &iotdataplane.PublishInput{
    Topic: &topic,
    Payload: payload,
    PayloadFormatIndicator: aws.String(iotdataplane.PayloadFormatIndicatorUtf8Data),
    Qos: aws.Int64(0),
}

result, err := svc_client.Publish(params)

...
Nach dem Login kopieren

Ich habe verschiedene Variationen der Nutzlast ausprobiert, aber keine Fortschritte gemacht. Irgendwann wurde auch angenommen, dass die Nutzlast eine Struktur mit „locationName“ und „type“ als Feldern sein müsste, aber auch das hat nicht geklappt. Mein Payload-Byte-Array ist definitiv nicht leer.

Lösung

Habe mein Problem gefunden.

Ich verwende Mosquito, um meine Lambda-Antworten zu testen, und das Problem liegt nicht an der Lambda-Funktion, sondern an den zum Testen verwendeten Mosquito-Abonnenteneinträgen. Ich verwende dieselbe ID (Option -i) wie meine Mosquito-Bar, was meiner Meinung nach den Broker verwirrt. Als ich die Option -i aus dem Abonnementeintrag entfernte, begann die Lambda-Veröffentlichung zu funktionieren.

Das obige ist der detaillierte Inhalt vonDie AWS-Lambda-Golang-Nutzlast iotdataplane.PublishInput() ist immer leer. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!