bauer's diary

凡人の凡人による凡人のための備忘録

サクッと立てたAWS EC2でサクッとgoを実行したい

さくっと一時的にバッチ実行するインスタンスを立てたい。
そんなときのために構築手順をまとめておきます。

インスタンス起動

AWSコンソールから起動
必要に応じてEBSのボリューム増やしたり、カスタマイズします。

基本設定

インスタンスが起動したらsshします。

ssh ec2-user@xx.xx.xxx.xxx

yumリポジトリをupdateします。

sudo yum update -y

go インストール

yum installでもいいのですが、最新バージョンの追従が遅れるケースが多いので、
ここではwgetでバイナリを落とす形で進めます。

$ mkdir ~/tmp; cd ~/tmp
$ wget https://storage.googleapis.com/golang/go1.9.1.linux-amd64.tar.gz
$ tar zxvf go1.9.1.linux-amd64.tar.gz

wgetしたらPATHが通っている箇所にシンボリックリンクを貼ります。
例では1.9.1で固定していますが、通常は公式のダウンロードページから最新を探してURLを確認します。

$ sudo mv go /usr/local/
$ sudo ln -s /usr/local/go/bin/go /usr/bin/go
$ sudo ln -s /usr/local/go/bin/go /usr/local/bin/go 
$ sudo ln -s /usr/local/go/bin/godoc /usr/local/bin/godoc 
$ sudo ln -s /usr/local/go/bin/gofmt /usr/local/bin/gofmt 

.bashrcにビルドの場所を指定します。
現時点ではディレクトリが存在していなくても問題ありません。

export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

// 保存してから読み込み
source ~/.bashrc

git インストール、作業リポジトリのclone

gitをインストールして、鍵設定をします。

$ sudo yum install -y git

$ cd ~

$ vi .ssh/config
StrictHostKeyChecking no
ServerAliveInterval 60
Host github.com
 User git
 Hostname github.com
 PreferredAuthentications publickey
 IdentityFile ~/.ssh/id_rsa

$ vi .ssh/id_rsa
// 自身の秘密鍵を貼るなり、scpで置くなり、生成してGitHubに登録するなり

パーミッションを600にします。

chmod 600 .ssh/config .ssh/id_rsa

実行したいgoリポジトリをgit cloneします。

git clone git@github.com:[owner_name]/[repository_name].git ./go/src/github.com/[owner_name]/

(必要なら) ag インストール

ここでは何かと必要になる ag をインストールしてみます。
MacはHomebrewですぐですが、Amazon Linuxでは yum が使えるのでCentOSと同じ手順で進めます。

ディレクトリ作成・ソースダウンロード
$ mkdir -p $HOME/local/source
$ cd $HOME/local/source
$ git clone https://github.com/ggreer/the_silver_searcher
ソースをmakeするための準備

コンパイラなどがないためインストールします。

$ sudo su -

yum -y groupinstall "Development Tools"
yum -y install pcre-devel xz-devel

exit
コンパイル・インストール
$ cd $HOME/local/source/the_silver_searcher

// このまま次の工程に進むとエラーが起きるため、zlib-develをインストールします。
$ sudo yum -y install zlib-devel

$ ./build.sh
$ sudo make install

インストール完了です。

$ which ag
/usr/local/bin/ag

(必要なら) aws cli インストール

こちらの手順もAWSを操作したい場合のみでかまいません。
pip のインストールスクリプトをダウンロードします。

curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
sudo python get-pip.py

pip を使用して AWS CLI をインストールします。

sudo pip install awscli

自身の ~/.aws/credentials や ~/.aws/config を見て設定します。

aws configure
AWS Access Key ID [None]: 
AWS Secret Access Key [None]:
Default region name [None]:
Default output format [None]:

実行

$ cd ~/go/src/github.com/[owner_name]/[repository_name]

// 依存パッケージがあれば、 dep ensure とか glide install でインストール

$ go run main.go rw.go


以上です。ご自身の環境に応じてカスタマイズして頂けたら幸いです。