2015-05-24 1 views
13

Dies ist eine Art von eingehender Frage, also werde ich versuchen, es so gut wie möglich zu erklären.Go Web-App auf AWS mit Elastic Beanstalk zeigt keine Ausgabe in Protokollen

Ich habe einen kleinen API-Dienst in Go erstellt, den ich mit dem relativ neuen AWS Elastic Beanstalk Docker support in AWS bereitstellen möchte.

Hier ist, was ich getan habe (der Code ist alle Open Source, können Sie entlang so folgen, wenn Sie möchten):

$ 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 

Diese elastische Bohnenstengel verwenden eine neue App (mit Docker zu erstellen) und stellen Sie es bereit.

Wenn ich dann eb open zum Öffnen meiner Web-App ausführen, sehe ich meine öffentliche IP-Adresse angezeigt (das ist das richtige Verhalten), damit ich weiß, dass meine Anwendung läuft/funktionsfähig ist.

nun in meinem Quellcode, ich habe mehrere Linien der Debugging-Ausgabe:

fmt.Println("WOOOOOOOOOOOO") 

Die obige Aussage druckt nur „WOO ...“ an die Konsole. Dies wird jedes Mal ausgeführt, wenn eine neue Anfrage gestellt wird.

Leider, wenn ich eb logs ausführen, um meine Instanzprotokolle anzuzeigen, wird diese Debug-Zeile nie angezeigt - und ich kann nicht herausfinden, warum.

Ich habe versucht, auf STDERR zu drucken, auf STDOUT usw. zu drucken - aber ich bin absolut nicht in der Lage, irgendeine Ausgabe zu erhalten.

Ich habe das Internet auf der Suche nach Lösungen, aber noch nicht gefunden.

+0

Können Sie Ihre 'Dockerfile' posten? – jcbwlkr

Antwort

1

Ich denke import "github.com/rdegges/ipify-api/api" wird von der Kopie auf Github gebaut, nicht von der lokalen Kopie. Das aktuellste Commit des api-Pakets enthält die überflüssigen fmt-Anweisungen nicht. Auch die log Anweisung in main.go funktioniert gut, ebenso wie die fmt.Fprintf bereits in der api Paket. Versuchen Sie zu überprüfen, ob das api-Paket von der Quelle stammt, von der Sie glauben, dass sie es ist.

EDIT 2015.06.01:

Alle meine Tests zeigen dies ein Problem aus mit einem inneren subpackage stammen, und der Remote-Service mit, dass Probleme haben. Das api-Paket wird nicht aus der lokalen Kopie erstellt. fmt.Print funktioniert gut aus main.go, und verschieben GetIP aus dem api Paket in das main Paket können fmt print nur gut zu stdout während Web-Anfragen.

Grundsätzlich werden alle Änderungen am lokalen Unterpaket api ignoriert.

Die EB-Protokolle sagen wahrscheinlich etwas darüber aus, welche Pakete remote heruntergeladen werden; meiner hat es getan.

Ich bin kein Godep Pro, also vielleicht ein Godep Pro kann erarbeiten. Aber FWIW, es scheint, dass es tangential mit this issue verwandt sein könnte. Es könnte auch ein Problem mit dem Remote-Dienst sein, der nicht mit godep go build baut, aber wie gesagt, ich bin kein Godep-Profi, also bin ich mir nicht sicher.

0

Es ist möglich, dass Sie eine ältere Version der App ausgeführt wird, wenn ich versuche, um den Behälter zu bauen lokal ich die folgende Fehlermeldung erhalten:

➜ 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 

Gibt es irgendwelche Fehler in dem Ereignisstrom, nachdem Sie bereitstellen? "eb events" glaube ich.