为什么AWS弹性beanstalk无法构建我的应用程序?

时间:2018-03-15 15:31:01

标签: amazon-web-services go elastic-beanstalk vendoring

我有一个用Go编写的应用程序,我尝试将其部署到EB。 在尝试访问它时,我从nginx获得了一个错误502,大概是因为应用程序没有运行。

查看日志,我收到很多错误,比如

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)

尽管如此,我将所有依赖项都包含在vendor子目录下的应用程序包中。为什么EB不使用vendoring?根据仪表板,它正在运行Go 1.9,因此应支持销售。

1 个答案:

答案 0 :(得分:1)

您需要将EBS中的GOPATH设置为项目目录的根目录,假设src目录位于vendor目录中。

例如,假装这是您的项目结构:

app/
    src/
        vendor/

并假装该项目位于~/home,其位置为~/home/app

然后您的GOPATH应设为~/home/app。 Go将尝试通过$GOPATH/src/vendor访问依赖项。

但如果这是你之前使用的那种结构,那么你需要在本地开发过程中更新你的GOPATH,所以如果你还没有这样做那么我想你会使用另一种但是,只要你的项目结构如上所述,这个解决方案就会起作用。