【问题标题】:AWS Firehose and Go IssueAWS Firehose 和 Go 问题
【发布时间】:2018-06-28 02:26:23
【问题描述】:

我正在尝试在 Go 中向 Firehose 发送一个简单的文件并不断收到:

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x0 pc=0x4015b7]

goroutine 1 [running]:
panic(0x8b9260, 0xc82000a0e0)
    /usr/lib/go-1.6/src/runtime/panic.go:481 +0x3e6
main.main()
    /home/ubuntu/go/src/github.com/user/proj/txtParser.go:68 +0x5b7
exit status 2

下面是小脚本

package main

import (
"fmt"
"github.com/aws/aws-sdk-go/service/firehose"
"github.com/aws/aws-sdk-go/aws/session"
"io/ioutil"
"log"   
)

func main() {

  sess := session.Must(session.NewSession())

  svc := firehose.New(sess)

  firehoseData, err := ioutil.ReadFile("/tmp/adsDat1")

  if err != nil {
    log.Fatal(err)
  }

  var rec *firehose.Record

  var recInput *firehose.PutRecordInput

  rec.SetData(firehoseData)
  recInput.SetDeliveryStreamName("test-ads-txt")
  recInput.SetRecord(rec)

  res, err1 := svc.PutRecord(recInput)

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

关于发生了什么的任何想法我确信这很简单,但我已经盯着这个太久了,似乎无法弄清楚。

【问题讨论】:

  • 什么是txtParser.go:68
  • txtParser.go你只有40行,68行怎么会有问题?
  • 我从中删除了 cmets,因此它搞砸了行数,它引用了这一行:res, err1 := svc.PutRecord(recInput)
  • txtParser.go 就是这个文件的文件名

标签: amazon-web-services go amazon-kinesis-firehose


【解决方案1】:

想通了,我使用类型的指针声明了我的变量,而不是用类型声明了我的变量。看看下面应该是怎样的

 var rec firehose.Record

 var recInput firehose.PutRecordInput

还将地址添加到这些而不是变量中

 recInput.SetRecord(&rec)

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

它有效。

【讨论】:

    猜你喜欢
    • 2016-10-18
    • 2018-02-15
    • 1970-01-01
    • 2017-12-04
    • 2019-09-29
    • 2020-11-10
    • 2018-10-11
    • 2019-09-26
    • 2018-08-10
    相关资源
    最近更新 更多