При попытке опубликовать sh сообщение в topi c, используя AWS IoT SDK для go, я получаю следующую ошибку: «x509: сертификат подписан неизвестным органом». Я на windows и все, что я сделал, это установил различные root CA (буквально через двойной клик) и сертификат устройства, сгенерированный AWS IoT Console.
Я чувствую, что должен как-то указать путь к сертификату, но в отличие от Python SDk, для go это нигде не упоминается. Я также добавил свои учетные данные через AWS Cli, чтобы не было проблем.
package main
import (
"fmt"
"log"
"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() {
sess, err := session.NewSession(&aws.Config{
Region: aws.String("eu-central-1"), Endpoint: aws.String("xxxxxxxxxx.iot.eu-central-1.amazonaws.com")},
)
if err != nil {
log.Fatal(err)
}
iotDataSvc := iotdataplane.New(sess)
input := &iotdataplane.PublishInput{
Payload: []byte(`{
'state': {
'desired':{
'humidity':10,
'temp':10
}
}
}`),
Topic: aws.String("/update"),
Qos: aws.Int64(0),
}
resp, err := iotDataSvc.Publish(input)
if err != nil {
log.Fatal(err)
}
fmt.Println(resp)
}