Maison  >  Article  >  développement back-end  >  La charge utile AWS lambda golang iotdataplane.PublishInput() est toujours vide

La charge utile AWS lambda golang iotdataplane.PublishInput() est toujours vide

WBOY
WBOYavant
2024-02-11 19:10:08428parcourir

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

L'éditeur php Xinyi rappelle à tout le monde que lors de l'utilisation du langage de programmation AWS Lambda Golang, il y a une chose à noter : lors de l'utilisation de la méthode iotdataplane.PublishInput(), sa charge utile (Payload) est toujours vide. Cela signifie que lors de l'écriture du code pertinent, une attention particulière doit être accordée à la gestion des situations de chargement vide pour garantir le fonctionnement normal du programme. Dans le processus de développement réel, des instructions conditionnelles ou des mécanismes de gestion des erreurs peuvent être utilisés pour gérer cette situation afin d'éviter des problèmes potentiels. Garder cela à l’esprit contribuera à améliorer la robustesse et la fiabilité de votre code.

Contenu de la question

Je n'arrive pas à comprendre comment utiliser Golang pour empaqueter le champ Payload de iotdataplane.PublishInput(). Quelqu'un peut-il m'aider ? Mon Lambda publie sans erreur, mais la charge utile apparaît toujours comme vide dans CloudWatch et les abonnés. Voici ce que je fais :

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)

...

J'ai essayé différentes variantes de la charge utile, mais je n'ai fait aucun progrès. On a également pensé à un moment donné que la charge utile devait être une structure avec "locationName" et "type" comme champs, mais cela n'a pas fonctionné non plus. Mon tableau d'octets de charge utile n'est certainement pas vide.

Solution

J'ai trouvé mon problème.

J'utilise Mosquito pour tester mes réponses lambda et le problème ne vient pas de la fonction lambda mais des entrées d'abonné Mosquito utilisées pour les tests. J'utilise le même identifiant (option -i) que ma barre Mosquito, ce qui, je pense, confond le courtier. Lorsque j'ai supprimé l'option -i de l'entrée d'abonnement, la publication lambda a commencé à fonctionner.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer