将 Simple Go Webapp 部署到 Elastic Beanstalk
Deploy Simple Go Webapp to Elastic Beanstalk
我正在尝试将 Go 应用程序部署到 Elastic beanstalk(通过 UI)
我做了什么:
- 创建了一个监听 5000 端口的 application.go 文件
- 使用此处找到的命令为 Linux 编译(设置 GOOS=linux 和 GOARCH=amd64):https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/go-environment.html
- go build -o bin/application application.go
- 压缩 bin 文件夹并将其上传到 Elastic Beanstalk(我也试过在没有 bin 文件夹的情况下上传文件)
为了开发,我使用的是 go 版本 go1.18.1 windows/amd64
在 Elastic Beanstalk 的平台下,我看到:Go 1 运行 on 64bit Amazon Linux 2/3.5.1
根据https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.go
支持 v.1.18.1
我的代码:
package main
import (
"fmt"
"net/http"
"time"
)
func main() {
http.HandleFunc("/", index)
fmt.Println("Now serving!!!")
http.ListenAndServe(":5000", nil)
}
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "My Res !!! %s", time.Now())
}
应用程序运行状况为“无数据”。
最近的事件是“环境健康状况已从待定状态转变为无数据。None 个实例正在发送数据。”
当我查看 chrome 开发工具并尝试打开 link 时,我只是得到(失败)net:ERR_CONNECTION_RESET。 “无法加载响应数据:找不到具有给定标识符的资源”
潜在问题:
- 当我查看配置选项卡时,我发现此环境不是 VPC 的一部分。这可能是问题所在吗?
一些可能的后续步骤:
- 在 WSL
上测试 运行
- 在独立的 EC2 上测试部署
- 尝试通过 CLI 进行部署
- 尝试包装在 docker 容器中并部署 docker(虽然这实际上不能解决我的问题,但我希望能够在没有 docker 的情况下进行部署)
我尝试使用您的代码重现您的问题,但一切正常。我的 EB 环境与您的代码完美配合和部署。
我唯一能想到的是我使用 linux 来创建我的二进制文件,而你使用 windows/amd64
。我不认为这些二进制文件可以互换。
我正在尝试将 Go 应用程序部署到 Elastic beanstalk(通过 UI)
我做了什么:
- 创建了一个监听 5000 端口的 application.go 文件
- 使用此处找到的命令为 Linux 编译(设置 GOOS=linux 和 GOARCH=amd64):https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/go-environment.html
- go build -o bin/application application.go
- 压缩 bin 文件夹并将其上传到 Elastic Beanstalk(我也试过在没有 bin 文件夹的情况下上传文件)
为了开发,我使用的是 go 版本 go1.18.1 windows/amd64
在 Elastic Beanstalk 的平台下,我看到:Go 1 运行 on 64bit Amazon Linux 2/3.5.1
根据https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.go 支持 v.1.18.1
我的代码:
package main
import (
"fmt"
"net/http"
"time"
)
func main() {
http.HandleFunc("/", index)
fmt.Println("Now serving!!!")
http.ListenAndServe(":5000", nil)
}
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "My Res !!! %s", time.Now())
}
应用程序运行状况为“无数据”。
最近的事件是“环境健康状况已从待定状态转变为无数据。None 个实例正在发送数据。”
当我查看 chrome 开发工具并尝试打开 link 时,我只是得到(失败)net:ERR_CONNECTION_RESET。 “无法加载响应数据:找不到具有给定标识符的资源”
潜在问题:
- 当我查看配置选项卡时,我发现此环境不是 VPC 的一部分。这可能是问题所在吗?
一些可能的后续步骤:
- 在 WSL 上测试 运行
- 在独立的 EC2 上测试部署
- 尝试通过 CLI 进行部署
- 尝试包装在 docker 容器中并部署 docker(虽然这实际上不能解决我的问题,但我希望能够在没有 docker 的情况下进行部署)
我尝试使用您的代码重现您的问题,但一切正常。我的 EB 环境与您的代码完美配合和部署。
我唯一能想到的是我使用 linux 来创建我的二进制文件,而你使用 windows/amd64
。我不认为这些二进制文件可以互换。