Heim  >  Artikel  >  Backend-Entwicklung  >  Die AWS-Lambda-Golang-Nutzlast iotdataplane.PublishInput() ist immer leer

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

WBOY
WBOYnach vorne
2024-02-11 19:10:08489Durchsuche

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)

...

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen