es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Insertando en la manguera de incendios con Go

Tengo el siguiente archivo JSON:

{
    "@timestamp": "2021-11-19T21:32:55.196Z",
    "@version": "1",
    "mensaje": "Prueba manual para firehose."
}

Y tengo la siguiente función en Go:

func insertIntoFireHose(sess *session.Session, hoseName string) {
    svc := firehose.New(sess, aws.NewConfig().WithRegion("us-east-1"))
    //firehoseData := getObjectFromS3Bucket(sess)
    firehoseData, _ := os.ReadFile("/temp/test.json")

    var rec firehose.Record

    var recInput firehose.PutRecordInput

    dataJson, _ := json.Marshal(firehoseData)
    rec.SetData(dataJson)
    recInput.SetDeliveryStreamName(hoseName)
    recInput.SetRecord(&rec)

    res, err1 := svc.PutRecord(&recInput)

    if err1 != nil {
        log.Fatal(err1)
    }
    fmt.Println(res)

}

Lo que quiero hacer es obtener un archivo e insertarlo en firehose, pero recibo el siguiente mensaje de error:

{"type":"mapper_parsing_exception","reason":"failed to parse","caused_by":
{"type":"not_x_content_exception",
"reason":"not_x_content_exception: Compressor detection can only be called on some xcontent bytes or compressed xcontent bytes"}}

Y no estoy seguro de qué estoy haciendo mal.

Cambiar el registro para obtener los datos directamente del archivo devuelve este error:

Uno o más registros están malformados. Asegúrese de que cada registro sea un objeto JSON único y válido y que no contenga saltos de línea.
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema se encuentra en el formato de los datos que se envían al firehose. El mensaje de error sugiere que los datos pueden no ser JSON válidos o pueden estar comprimidos, lo cual el firehose no puede manejar.

    En el código proporcionado, los datos JSON se leen de un archivo usando os.ReadFile(). Es posible que los datos leídos del archivo no estén formateados correctamente en JSON. Para comprobarlo, se puede imprimir los datos en la consola para ver si es JSON válido.

    Además, es importante asegurarse de que cada registro enviado al firehose sea un solo objeto JSON válido sin saltos de línea. Se puede intentar modificar el código para enviar cada registro individualmente dividiendo los datos en objetos JSON separados y enviándolos uno por uno.

    Finalmente, asegurarse de que el flujo de entrega al cual se envían los datos esté configurado correctamente y sea capaz de manejar el formato de los datos que se envían. Se puede comprobar los registros y ajustes del firehose para asegurarse de que sea capaz de manejar los datos entrantes.

Comments are closed.