Amazon web services 为什么AWS elastic beanstalk无法构建我的应用程序?

Amazon web services 为什么AWS elastic beanstalk无法构建我的应用程序?,amazon-web-services,go,amazon-elastic-beanstalk,vendoring,Amazon Web Services,Go,Amazon 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/

我有一个用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)
尽管如此,我的所有依赖项都包含在供应商子目录下的应用程序包中。为什么EB不使用自动售货机?根据仪表板,它运行的是Go 1.9,因此应该支持vendoring。

您需要将EBS中的GOPATH设置为项目目录的根目录,假设您的vendor目录所在的是src目录

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

app/
    src/
        vendor/
并假设该项目位于~/home,这使其位置成为~/home/app

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


但是如果这是您以前使用的那种结构,那么您也需要在本地开发期间更新您的GOPATH,因此如果您还没有这样做,那么我想您正在使用另一种设置。。。但是,只要您的项目是按照我上面所述的结构,这个解决方案就可以工作。

EB需要有一个应用程序。转到源代码包的根目录,因此我的结构在本地有$GOPATH/src/myapp中的源代码,并且在应用程序旁边有一个供应商目录。我对EBS不是非常熟悉,但是有没有一种方法可以为应用程序指定不同的位置?这将解决这个问题。我想有一种方法,我很确定我以前用过,只是我不记得了。是的,使用Buildfile和Procfile,我能够转换我的项目布局。现在它只是无法启动应用程序。。。谢谢你的回答没问题!很高兴它起作用了。现在启动应用程序时,如果您以前使用过docker,那么Buildfile/Procfile中是否有一行类似于Dockerfile的CMD部分?换句话说,是否有一个部分可以指定在启动时运行的操作?也许这就是你可以运行二进制文件的地方。只是工作目录出现了一些问题,导致应用程序在启动时崩溃。不过,感谢您付出的额外努力: