首頁  >  文章  >  後端開發  >  AWS lambda golang iotdataplane.PublishInput() 有效負載永遠為空

AWS lambda golang iotdataplane.PublishInput() 有效負載永遠為空

WBOY
WBOY轉載
2024-02-11 19:10:08429瀏覽

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

php小編新一提醒大家,在使用AWS Lambda Golang程式語言時,有一點需要注意:在使用iotdataplane.PublishInput()方法時,其有效負載(Payload)始終為空。這意味著在編寫相關程式碼時,需要特別注意處理空負載的情況,以確保程式的正常運作。在實際開發過程中,可以使用條件語句或錯誤處理機制來處理這種情況,以避免潛在的問題。記住這一點,將有助於提高程式碼的健全性和可靠性。

問題內容

我無法理解如何使用 Golang 打包 iotdataplane.PublishInput() 的 Payload 欄位。有人能幫忙嗎?我的 Lambda 發佈時沒有錯誤,但負載在 CloudWatch 和訂閱者中始終顯示為空。這就是我正在做的事情:

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)

...

我已經嘗試了各種有效負載的變體,但沒有任何進展。也一度認為有效負載需要是以「locationName」和「type」作為欄位的結構,但這也沒有成功。我的有效負載位元組數組肯定不為空。

解決方法

找到我的問題。

我使用 Mosquito 來測試我的 lambda 回應,問題不在於 lambda 函數,而是用於測試的 Mosquito 訂閱者條目。我使用與我的 Mosquito 酒吧相同的 id(-i 選項),我認為這讓經紀人感到困惑。當我從訂閱條目中刪除 -i 選項後,lambda 發布就開始進行。

以上是AWS lambda golang iotdataplane.PublishInput() 有效負載永遠為空的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除