2014年11月,サポート対象プラットフォームの新たなカテゴリとして“Preconfigured Docker”を導入し,Java/GlassFishとPython 3.4コンテナを始めてサポートしたAmazon Web Service(AWS)は先日,新たなアプローチに基づく最初の追加言語として,Goバージョン1.3と1.4を,同社のAWS Elastic Beanstalkを提供するプラットフォーム・アズ・ア/サービスに加えた。
[0}バージョン1.4リリースの直後にGoのサポートを追加したことは,“追加の言語/フレームワークプラットフォームの最新バージョンを迅速に提供”するという目標を達成するものだ。特筆すべきなのは,新しいAmazon EC2 Container Service AgentもGoで開発されていること,直後の実験的なAWS SDK for GOのような発表が今後も期待できることだ。
事前設定されたDockerプラットフォームは,Docker Hub Registryにある言語スタックの公式リポジトリをベースとしている。既にリリースされているJava/GlassFishとPython 3.4用のカスタム構成済Dockerイメージと同じように,GoイメージにもDockerの公式な言語スタックが利用されている。
# Use the Go 1.4 Docker Image
FROM golang:1.4.1-onbuild
“Go向けに事前設定されたDocker コンテナの使用を開始する”と題された手順説明では,Dockerを使用した開発ワークフローが,一般的な‘Hello World’プログラムを使って説明されている。
package main
import "github.com/go-martini/martini"
func main() {
m := martini.Classic()
m.Get("/", func() string {
return "Hello world!"
})
m.Run()
}
コンテナの実行には,‘main’という名称のパッケージと‘main()’関数の両方が必要だ。Elastic BeanstalkはGOPATHを‘/go’にセットした上で,コンテナのデプロイ中に,‘go-martini’など,インポートされている依存関係を自動的にダウンロードする。
アプリケーションのローカル環境での開発とテストが完了すれば,アプリケーションソースバンドルを作成して,新しいアプリケーションの生成の間にそれを送信すれば,Elastic Beanstalkにデプロイすることができる。アプリケーションソースバンドルは,プロビジョンされたElastic Beanstalk環境をカスタマイズする構成ファイルに含むことも可能だ。
Go用の構成済Dockerコンテナの発表と同時に,先日導入されたC4インスタンスタイプのElastic Beanstalkサポートや,周期動作するワーカタスクや環境のクローニングといった小規模な改良も発表された。
Elastic Beanstalkの資料には,開発者ガイドやAPIリファレンスが含まれている。サポート対象である構成済Dockerコンテナタイプのリストも公開されている。サポートはAWS Elastic Beanstalkフォーラムを通じて行われる。