timedt
timedt

Reputation: 1372

Why does AWS elastic beanstalk fail to build my app?

I have an app written in Go, which I attempted to deploy to EB. When trying to access it, I get an Error 502 from nginx, presumably because the app is not running.

Looking at logs, I get a lot of errors like

14:01:29 build.1 | application.go:10:2: cannot find package "github.com/aws/aws-sdk-go/aws" in any of:
14:01:29 build.1 |  /opt/elasticbeanstalk/lib/go/src/github.com/aws/aws-sdk-go/aws (from $GOROOT)
14:01:29 build.1 |  /var/app/current/src/github.com/aws/aws-sdk-go/aws (from $GOPATH)

Despite the fact, that I have all of my dependencies included in the application bundle under a vendor subdirectory. How come EB does not use vendoring? According to the dashboard, it is running Go 1.9, so vendoring should be supported.

Upvotes: 0

Views: 596

Answers (1)

Lansana Camara
Lansana Camara

Reputation: 9873

You need to set your GOPATH in your EBS to the root of your project directory, assuming there is a src directory where your vendor directory is located.

For instance, pretend this is your project structure:

app/
    src/
        vendor/

And pretend that project is located in ~/home, which makes its location ~/home/app.

Then your GOPATH should be set to ~/home/app. Go will attempt to access the dependencies through $GOPATH/src/vendor.


But if this were the kind of structure you were using before, then you would need to have your GOPATH updated during local development as well, so if you aren't already doing that then I imagine you're using a different kind of setup... this solution, however, will work as long as your project is structured as I described above.

Upvotes: 1

Related Questions