2016-07-25 9 views
0

ich zur Zeit versucht, die folgende Golang bauen zum ersten Mal auf einem Amazon Linux Distro auszuführen:GO Skript-Laufzeitfehler für Amazon AWS S3

Readme Hier:

go get github.com/adammck/s3-graphite 
cd $GOPATH/adammck/s3-graphite 
go build 

Danach setzte ich meine Variablen in meinem .bashrc wie unten:

# AWS keys with read access to the bucket 
export AWS_ACCESS_KEY_ID=xxxxxxxxxx 
export AWS_SECRET_ACCESS_KEY=yyyyyyyyyy 
export AWS_REGION=us-east-1 

# the bucket to watch 
export S3_BUCKET=my-bucket 
export S3_PREFIX=dir/subdir 

# the server to send metrics to 
export GRAPHITE_ADDRESS=metrics.example.com 
export GRAPHITE_PREFIX=s3-count.my-bucket.dir.subdir 

ich meine GOPATH auf die folgenden:

export GOPATH="$HOME/work/" 

I-CD in das Verzeichnis ein Go Build zu laufen, die funktioniert, wie es sollte, aber wenn ich die folgenden nach dem Sprung Build auszuführen:

./s3-Graphit

bekomme ich folgende Fehlermeldung:

INFO[0000] Starting s3-graphite... 
panic: runtime error: invalid memory address or nil pointer dereference 
[signal 0xb code=0x1 addr=0x20 pc=0x4e3256] 

goroutine 1 [running]: 
github.com/aws/aws-sdk-go/service/s3.New(0x0, 0x0, 0x0, 0x0, 0x0, 0x3f) 
    /home/ec2-user/work/src/github.com/aws/aws-sdk-go/service/s3/service.go:41 +0x76 
main.NewS3(0x7ffc202bef6e, 0x1b, 0x7ffc202be684, 0x9, 0x1, 0x0, 0x0) 
    /home/ec2-user/work/src/github.com/adammck/s3-graphite/s3.go:20 +0x66 
main.main() 
    /home/ec2-user/work/src/github.com/adammck/s3-graphite/main.go:19 +0x21c 

goroutine 2 [runnable]: 
runtime.forcegchelper() 
    /usr/lib/golang/src/runtime/proc.go:90 
runtime.goexit() 
    /usr/lib/golang/src/runtime/asm_amd64.s:2232 +0x1 

goroutine 3 [runnable]: 
runtime.bgsweep() 
    /usr/lib/golang/src/runtime/mgc0.go:82 
runtime.goexit() 
    /usr/lib/golang/src/runtime/asm_amd64.s:2232 +0x1 

goroutine 4 [runnable]: 
runtime.runfinq() 
    /usr/lib/golang/src/runtime/malloc.go:712 
runtime.goexit() 
    /usr/lib/golang/src/runtime/asm_amd64.s:2232 +0x1 

Hier ist meine GOPATH:

$GOPATH 
-bash: /home/ec2-user/work/: Is a directory 

Hier ist mein dir, wo ich die s3-Graphit ausführen:

/home/ec2-user/work/src/github.com/adammck/s3-graphite 

EDIT (aktualisiert mit Elemente aus Ihrer Antwort:

[[email protected]]$ go version 
go version go1.6.3 linux/amd64 
[[email protected] s3-graphite]$ $GOPATH 
-bash: /home/ec2-user/work: Is a directory 
[[email protected] s3-graphite]$ pwd 
/home/ec2-user/work/src/github.com/adammck/s3-graphite 
[[email protected] s3-graphite]$ ./s3-graphite 
INFO[0000] Starting s3-graphite... 
panic: runtime error: invalid memory address or nil pointer dereference 
[signal 0xb code=0x1 addr=0x20 pc=0x512aa2] 

goroutine 1 [running]: 
panic(0x873120, 0xc82000a0e0) 
    /usr/local/go/src/runtime/panic.go:481 +0x3e6 
github.com/aws/aws-sdk-go/service/s3.New(0x0, 0x0, 0x0, 0x0, 0x0, 0x3f) 
    /home/ec2-user/work/src/github.com/aws/aws-sdk-go/service/s3/service.go:41 +0x72 
main.NewS3(0xc82001603a, 0x1b, 0xc82000e06a, 0x9, 0x1, 0x0, 0x0) 
    /home/ec2-user/work/src/github.com/adammck/s3-graphite/s3.go:20 +0x4a 
main.main() 
    /home/ec2-user/work/src/github.com/adammck/s3-graphite/main.go:19 +0x229 
[[email protected] s3-graphite]$ 

Antwort

0

Es scheint hier ein paar Dinge los zu sein. Eine Sache zu überprüfen ist, dass Sie Ihre .bashrc-Datei tatsächlich beschaffen, nachdem Sie die Umgebungsvariablen dort festgelegt haben. Sie sollten den Befehl env ausführen und Ihre AWS-Schlüssel, die S3-Konfiguration und die Grafiteinstellungen in Ihrer aktuellen Shell sehen können.

Das zweite Problem, das ich sehe, ist, dass die Bibliothek, die Sie verwenden, seit letztem Jahr nicht aktualisiert worden ist. Soweit ich weiß, hat sich das AWS SDK for Go im vergangenen Jahr stark verändert. Die Zeile "panic:" in der Ausgabe Ihrer Anwendung gibt einen Hinweis auf das Problem.

panic: runtime error: invalid memory address or nil pointer dereference

Es scheint wie nil irgendwo übergeben wird, es soll nicht sein. Weiter unten in der Panik Ausgang können Sie den Stacktrace für goroutine 1 sagt siehe:

github.com/aws/aws-sdk-go/service/s3.New(0x0, 0x0, 0x0, 0x0, 0x0, 0x3f) 
    /home/ec2-user/work/src/github.com/aws/aws-sdk-go/service/s3/service.go:41 +0x76 
main.NewS3(0x7ffc202bef6e, 0x1b, 0x7ffc202be684, 0x9, 0x1, 0x0, 0x0) 
    /home/ec2-user/work/src/github.com/adammck/s3-graphite/s3.go:20 +0x66 

Daraus können Sie die News3 Methode auf der Linie 20 der s3.go Datei in der s3-Graphit-Bibliothek sehen, dass aufgerufen wird. Dann geht es in die aws-sdk-go-Bibliothek und versucht, einen neuen S3-Client zu erstellen. Mit den folgenden Argumenten:

s3.New(0x0, 0x0, 0x0, 0x0, 0x0, 0x3f)

Mein bester Mann ist, dass die Konfiguration nicht in die Umgebung exportiert Du die ausführbare Datei in ausführen oder die s3-Graphit-Bibliothek muss aktualisiert werden, um mit der neuesten zu arbeiten aws-sdk -go-Version.

+0

Danke für die Antwort. Ich aktualisierte die GO-Version und stellte sicher, dass der $ GOPATH mit der Beschaffung der .bashrc-Datei mit den Daten, die ich brauche, zusammenarbeitet, aber es ist immer noch ein Nein. Bitte siehe oben im Hauptbeitrag. @ rking788 – hijaked79