在AWS Lambda中使用Golang编写代码时,如果在调用iotdataplane.PublishInput()方法时,发现Payload始终为空,可能是由于未正确设置Payload的值导致的。
下面是一个关于如何正确设置Payload的示例代码:
package main
import (
"encoding/json"
"fmt"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/iotdataplane"
)
func main() {
// 创建AWS会话
sess := session.Must(session.NewSessionWithOptions(session.Options{
SharedConfigState: session.SharedConfigEnable,
}))
// 创建IoT Data Plane客户端
svc := iotdataplane.New(sess)
// 准备发布消息的参数
input := &iotdataplane.PublishInput{
Topic: aws.String("your-topic-name"),
Payload: []byte(`{"message": "Hello, World!"}`),
}
// 将参数转为JSON格式
payload, err := json.Marshal(input)
if err != nil {
fmt.Println("Error marshaling payload:", err)
return
}
// 调用Publish API发布消息
result, err := svc.Publish(&iotdataplane.PublishInput{
Topic: input.Topic,
Payload: payload,
})
if err != nil {
fmt.Println("Error publishing message:", err)
return
}
fmt.Println("Message published:", result)
}
在上面的代码中,我们首先创建了一个AWS会话,然后使用该会话创建了一个IoT Data Plane客户端。接下来,我们准备了发布消息的参数,其中的Payload字段设置为一个JSON格式的字符串。然后,我们使用json.Marshal()方法将参数转换为JSON格式的字节数组。最后,我们调用iotdataplane.Publish()方法,并将Payload设置为转换后的字节数组。
希望这个示例能帮助到你解决问题!