最速でGoのAPIサーバを公開する方法


はじめに


Web系の開発やってるとサクッとWebAPIサーバ建てたい・・・!けどめんどくさいことは抜きにしたい!というときありますよね?

コールバック先を指定したいけどいい感じの公開サーバがないときとか・・・
どっかのサーバからリクエスト流してもらって中身確認したい時とか・・・
シンプルに開発中のサーバを一回公開したいとか・・・

この投稿ではサクッとコマンド1発でWebAPIサーバが起動する、丸投げ系テンプレートを紹介します。

動作環境

  1. MacBookPro2016 Mojave
  2. go version go1.10.3 darwin/amd64
  3. Python 3.6.5

事前に

  1. AWSのアカウントを作成する。
  2. EBコマンドを事前にインストールする。

リポジトリ

テンプレート置き場
https://github.com/muff1225/goserver-saisoku

プロジェクトの構成

ファイルの構成は以下のようになっています。

.
├── .elasticbeanstalk
│   └── applicationconfig.yml
├── README.md
├── application.go
├── bin
│   └── application
└── deploy.sh

起動方法

リポジトリからダウンロードもしくはforkして、プロジェクトの中のdeploy.shを実行します。

. deploy.sh

解説

deploy.shの中身は以下のようになっています。

deploy.sh
#!/bin/bash

# building to deploy the application for EB.
go build -o bin/application application.go

# validating have been installed eb command in this machine.
eb --version
if [ $? -ne 0 ]; then
    echo "Please install eb command before running this script.(https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/eb-cli3-install.html)"
fi

# EB status check for the next command.
eb status saisoku
if [ $? -ne 0 ]; then
    # create new one
    eb init goserver
    eb create saisoku
    eb open
else
    # deploy new app
    eb deploy saisoku
    eb open
fi
  1. go build -o bin/application application.goでアプリケーションをビルド
  2. 環境がない場合はeb createでサーバ立ち上げ。(elasticbeanstalk /applicationconfig.ymlを使って初期化します。)
  3. 環境がすでにある場合は、eb deployでビルドしたアプリケーションをデプロイします。

このテンプレートを元にアプリケーションを修正する場合

ElasticBeanstalkのルールとしてgolangサーバを建てる場合、開けるポートは5000番、アプリケーションの実行ファイルはbin/applicationにするようにしなければなりません。
このルールさえ守れば、アプリケーションを修正して、deploy.shでデプロイまで実行可能です。

最後に

このテンプレートを使えば、サクッと自分が自由に使える環境を構成できます。(HTTPSじゃないですけど)
快適な開発をやっていきましょう!