EC2 Amazon Linux 2インスタンスにbot動作環境を作る
Amazon EC2は公式の日本語ドキュメントが充実しています。情報量が多いので、何を調べているのか迷子になるほどです。
そこで道案内になるように、bot用仮想サーバーを建てるときに順に読むとよい項目の、リンク集を作ってみました。
リンク集という形態ですので、いずれリンク切れをする可能性があります。まとめたのは2019年5月1日時点の情報です。
- -
Amazon EC2をセットアップする
非推奨ではありますが、IAMユーザーを作らなくても運用はできます。VPCの作成もスキップします。
キーペアやセキュリティーグループを作成する時点で、リージョンすなわちデータセンターのロケーションを選びます。
リージョンの選択は重要です。例えばBitMEXは米国にはサービスを提供していないので、BitMEX用botを動かすなら米国リージョンを選んではいけません。
キーペアの作成はあとからでもできますが、他の設定の合間に作業をしなくてすむように、あらかじめ作成し大切に管理しましょう。
セキュリティーグループとはファイアウォールのルールをまとめたものです。bot用ならHTTPは閉じたままでよいです。
契約ISPから動的IPが割り当たるカジュアルなネットユーザーには、SSHの入口の絞り込みは現実には難しいと思います。契約ISPやVPNに応じて穴開けをします。
昨日までできたSSH接続が突然できなくなったら、まず確認するのは自分がネットにつないでいるIPアドレスと、このセキュリティーグループのポリシーです。
- -
ウィザードを使用してインスタンスを起動する
Amazon Machine Image (AMI)というパックされたイメージを展開して、インスタンスと呼ばれる仮想サーバーの実行環境を作ります。Amazon Linux 2 AMIを選び、インスタンスタイプの選択へ移ります。
1年間無料で試用できるのはt2.microインスタンスですが、費用をかけられるならt3/t3aインスタンスがお勧めです。費用対性能比でt2より優れています。
インスタンスタイプを選ぶとつい青いボタンを押しそうになりますが、あわてず次の手順に進んでひととおりの設定に目を通すことをお勧めします。ストレージサイズも設定できます。
作成しておいたセキュリティポリシーがあれば、このウィザードで割り当てます。
アベイラビリティーゾーンも任意に選ぶことができます。
設定と確認をすませて起動ボタンをクリックすると、次のダイアログが表示されます。
ここで先に作成しておいたキーペアを選択してください。
- -
インスタンスにElastic IPアドレスを割り当てる
パブリックIPv4アドレスを固定するのがお勧めです。インスタンスタイプを変更しても乗り換えても、接続クライアントの設定変更が不要になるので便利です。インスタンスを作成したらすぐに割り当ててしまいましょう。
割り当てを受けたIPアドレスを、先に作成したインスタンスに関連付けます。実行中のインスタンスに関連付けられているIPアドレスの利用料金はかかりません。
- -
WindowsからLinuxインスタンスへ接続する
Windows PCからLinuxインスタンスに接続するには、このページをじっくり読み込むのが早道です。前半でPuTTYについて、後半でWinSCPでのファイル転送について説明されています。簡単です。
- -
インスタンスのタイムゾーンを変更する
[ec2-user ~]$ sudo vi /etc/sysconfig/clock
ZONE="Asia/Tokyo"
UTC=true
[ec2-user ~]$ sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
[ec2-user ~]$ sudo reboot
ローカルタイムの設定をAsia/Tokyoにしておけば、ローソク足はUTCで処理し、ログはJSTで記録しと、使い分けが容易になります。
- -
ファイルにスワップ領域を割り当てる
nanoやmicroタイプのインスタンスではメモリが小さいので、スワップ領域を作っておきます。
手順説明はユーザーガイドにではなくナレッジセンターにありました。サポートエンジニアのマーニャさんが動画で解説してくれます。
実はナレッジセンターにテキストで説明されている手順をEC2 Amazon Linux 2 nano/microインスタンスにそのままコピーペーストしても、ふたつの理由でうまくいきません。
ひとつはスーパーユーザー権限で実行する必要があること。ふたつめはもともとのメモリが小さいので、大きなサイズのゼロ埋めファイルを作れないことです。
$ sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile
$ sudo bash -c "echo '/swapfile swap swap defaults 0 0' >> /etc/fstab"
ナレッジセンターの情報をEC2 Amazon Linux 2 nano/microインスタンスでも動くように読み替えたのが上記の手順です。
スワップサイズは物理メモリの倍もしくは2G増しが目安とされています。
- -
Python3のインストール、pipのアップデート、外部モジュールのインストールは、ひとつ前の記事を参考にしてください。
- -
また始めよう、これから始めようとする、すべての人へ。
RESOLUTION = '1d' FIRST_PERIOD_STICKS = 14 SECOND_PERIOD_STICKS = 3 MARKET_ID = 'ETHUSD' OC_MODE = True