[新機能]AWS Elastic BeanstalkがGoをサポートしました!

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

AWS Elastic BeanstalkGoをサポートしたことが発表されました!

これまではDocker、Java、.NET、Node.js、PHP、Python、Rubyがサポートされていましたが、新たにGoが加わったことになります。Elastic BeanstalkでのGoアプリケーションの実行では、Javaと同様にProcfileを使って複数のプロセスを実行することができます。コンパイルしたバイナリをサクっとアップロードすれば動くGolangは、Elastic Beanstalkと相性が良いと思います。

ということで、とりあえず実際にやってみました!

やってみた

以下のような、簡単なWebアプリケーションを書きました。5000/tcpポートで立ち上がって、アクセスしたら"Hello, Golang on EB."と返すだけです。

$ vi application.go
package main

import (
  "fmt"
  "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
  fmt.Fprintf(w, "Hello, Golang on EB.")
}

func main() {
  http.HandleFunc("/", handler)
  http.ListenAndServe(":5000", nil)
}

./binというディレクトリを作り、buildして、出来上がったバイナリを./bin以下に配置します。

$ mkdir bin
$ go build -o bin/application application.go
$  ls -alF ./bin/application
-rwxr-xr-x  1 smokeymonkey  staff  5807380  9 29 17:18 application*

そしてzip圧縮します。

$ $ zip ../myapp.zip -r *
updating: application.go (deflated 26%)
updating: bin/ (stored 0%)
updating: bin/application (deflated 71%)

さて、AWS管理コンソールでElastic Beanstalkの画面にアクセスします。以下の通り、"Go"が増えてますね。"Go"を指定してApplicationを作成します。

Elastic_Beanstalk_Management_Console

Applicationが作成されます。Default EnvironmentのDashboardから[Upload and Deploy]をクリックします。

Default-Environment_-_Dashboard

先ほど作成したzipファイルをアップロードして、Deployします。

Default-Environment_-_Dashboard 2

正常にデプロイが完了しました。

Default-Environment_-_Dashboard 3そしてElastic Beanstalk ApplicationのEnvironment URLにアクセスすると...はい、以下のようにGoアプリケーションが動いていることがわかります!

default-environment-pf6ktmvgst_elasticbeanstalk_com

さいごに

もっと詳しい情報はDeploying Applications on the Go Platformに記載がありますが、すごく簡単にGoアプリケーションをElastic Beanstalkで動かすことができます。前述した通り複数のプロセスを起動することもできますし、オプションとしてNamespaceを定義することもできます。

今回のアップデートで、Elastic Beanstalkの使い道が広がるのではないでしょうか。