2015-05-24 3 views
13

Это своего рода углубленный вопрос, поэтому я попытаюсь объяснить его как можно лучше.Перейти на веб-приложение на AWS с эластичным бобовым стеком, не показывающим вывод в журналах

Я построил небольшую службу API в Go, которую я пытаюсь развернуть в AWS, используя относительно новый доклер AWS Elastic Beanstalk support.

Вот что я сделал (код все с открытым исходным кодом, так что вы можете следовать, если вы хотите):

$ git clone https://github.com/rdegges/ipify-api.git 
$ cd ipify-api 
$ git fetch origin aws:aws 
$ git checkout aws 
$ eb init 
$ eb create 
$ eb deploy 

Это будет использовать эластичный бобовый стебель, чтобы создать новое приложение (с грузчиком) и развернуть его.

Если я запустил eb open , чтобы открыть мое веб-приложение, я покажу, как отображается мой публичный IP-адрес (это правильное поведение), поэтому я знаю, что мое приложение работает/работает.

Теперь в моем исходном коде, у меня есть несколько строк отладочной:

fmt.Println("WOOOOOOOOOOOO") 

Данное заявление только печатает «WOO ...» в консоли. Это выполняется каждый раз, когда выполняется новый запрос.

К сожалению, когда я запускаю eb logs для просмотра журналов экземпляров, эта строка отладки никогда не появляется - и я не могу понять, почему.

Я пробовал печатать на STDERR, печатать на STDOUT и т. Д. - но я абсолютно неспособен получить какой-либо результат.

Я искал интернет, ища решения, но еще не нашел.

+0

Можете ли вы разместить свой «файл докеров»? – jcbwlkr

ответ

1

Я думаю, что import "github.com/rdegges/ipify-api/api" строится из копии на Github, а не из местной копии. Последняя фиксация пакета api не содержит посторонних операторов fmt. Кроме того, отчет log в main.go работает отлично, как и fmt.Fprintf уже в пакете api. Попробуйте подтвердить, что пакет api создается из источника, который, по вашему мнению, является.

EDIT 6/1/2015:

Всех мои тесты показывают, что это проблема, вытекающая из наличия внутренного подпакета, и удаленный сервис, имеющие проблемы с этим. Пакет api не создается из локальной копии. fmt.Print работает просто отлично от main.go, и перемещение GetIP из пакета api в пакет main позволяет fmt печатать только штрафом в stdout во время веб-запросов.

В основном, все изменения, внесенные в местный api, подпакет теряются.

Журналы EB, вероятно, говорят что-то о том, какие пакеты загружаются удаленно; мой сделал.

Я не являюсь профессионалом Godep, поэтому, возможно, разработчик Godep может разработать. Но FWIW, похоже, он может быть связан с this issue, тангенциально. Также может возникнуть проблема с удаленным сервисом, который не работает с godep go build, но, как я уже сказал, я не профессионал Godep, поэтому я не уверен.

0

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

➜ docker build . 
# Executing 3 build triggers 
Trigger 0, COPY . /go/src/app 
Step 0 : COPY . /go/src/app 
Trigger 1, RUN go-wrapper download 
Step 0 : RUN go-wrapper download 
---> Running in c1854666d13c 
+ exec go get -v -d 
github.com/julienschmidt/httprouter (download) 
github.com/rdegges/ipify-api (download) 
github.com/rs/cors (download) 
Trigger 2, RUN go-wrapper install 
Step 0 : RUN go-wrapper install 
---> Running in 0bbdec1b99d7 
+ exec go install -v 
github.com/julienschmidt/httprouter 
github.com/rdegges/ipify-api/models 
github.com/rs/cors 
github.com/rdegges/ipify-api/api 
app 
# app 
./main.go:27: cannot use api.NotFound (type func(http.ResponseWriter, *http.Request)) as type http.Handler in assignment: 
    func(http.ResponseWriter, *http.Request) does not implement http.Handler (missing ServeHTTP method) 
./main.go:28: cannot use api.MethodNotAllowed (type func(http.ResponseWriter, *http.Request)) as type http.Handler in assignment: 
    func(http.ResponseWriter, *http.Request) does not implement http.Handler (missing ServeHTTP method) 
The command '/bin/sh -c go-wrapper install' returned a non-zero code: 2 

Есть ли ошибки в вашем потоке событий после развертывания? «eb events» я верю.

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