2016-07-25 2 views
0

Я в настоящее время пытается выполнить следующую команду Golang построить в первый раз на Amazon Linux Distro:GO ошибка во время выполнения сценария для Amazon AWS S3

README Здесь:

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

После этого я установил мои переменные в моем файле .bashrc, как показано ниже:

# 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 

Я поставил мой GOPATH на следующее:

export GOPATH="$HOME/work/" 

I компакт-диск в директорию для запуска сборки идет, который работает, как и должно быть, но когда я иду, чтобы запустить следующие после хода сборки:

./s3-графитовый

Я получаю следующее сообщение об ошибке:

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 

Вот мой GOPATH:

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

Вот мой каталог, где я исполняю s3-графит:

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

EDIT (обновление с элементами из вашего ответа:

[[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]$ 

ответ

0

Там, кажется, кое-что здесь происходит. Одна вещь, которую нужно проверить, это то, что вы фактически используете ваш файл .bashrc после того, как вы установите переменные среды там. Вы должны иметь возможность запустить команду env и увидеть свои ключи AWS, конфигурацию S3 и графические настройки в текущей оболочке.

Вторая проблема, я вижу, что библиотека, которую вы используете, не обновлялась с прошлого года. Насколько я знаю, AWS SDK для Go сильно изменился за последний год. Строка «panic:» в выводе вашего приложения дает нам подсказку.

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

Похоже nil это передается куда-то не должно быть. Далее вниз выхода паники вы можете увидеть StackTrace для goroutine 1 говорит:

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 

Из этого вы можете видеть, что метод NewS3 вызывается в строке 20 файла s3.go в библиотеке s3-графитовом. Затем он переходит в библиотеку aws-sdk-go и пытается создать новый клиент S3. Со следующими аргументами:

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

Мой лучший парень, что ваша конфигурация не экспортируется в окружающую среду вы запускаете исполняемый файл в, или библиотека s3-графит должен быть обновлен для работы с последними AWS-SDK -го версия.

+0

Спасибо за ответ. Я обновил версию GO и убедился, что $ GOPATH работает вместе с поиском файла .bashrc с данными, которые мне нужны, но это все равно. См. Править выше в главном сообщении. @ rking788 – hijaked79

Смежные вопросы