DiscordのBotをGoogle Cloud Compute Engineに移した

github.com

自分のDiscord Botがある、何の機能も実装していないただ常時オンラインでいるだけのボット。 Herokuの無料プランで稼動させていたが、Herokuは無料で使えなくなってしまった。

ボットを常時オンラインにしておくにはWebSocketの接続をずっと維持しておく必要がある。 接続を維持しときたいだけだからそういうクラウドサービスがあれば使いたい。 AWSAPI GatewayはWebSocketの接続を低料金の接続時間 + メッセージ課金でずっと維持してくれる。よさそう。 しかし、API GatewayはWebSocketのサーバーにしかなれないので、DiscordのWebSocketサーバーへは接続できない。惜しい。

VPSやEC2みたいにOSレベルからのサーバー利用か、Fargeteみたいなコンテナホスティングを利用してインスタンスを常時起動させておくみたいなことになる。 無料サーバーリソースを配ってるサービスはたくさんある。だいたい常時起動は制限されてるけど。 例えば、shuttleっていうサービスはDiscord Botのホストもできるよってホームページに書いてある。ここは常時起動させてくれるっぽい、たぶん。

どうせだからGoogle Cloudにした。 Google Cloud Compute Engineには無料枠がある。コンテナイメージでのデプロイもできる。

ボットのプログラムはGitHubにある。 GitHub ActionsでコンテナイメージをビルドしてHerokuにデプロイするとこまでやってくれるようにしてあった

Compute Engineへは公開レジストリからなら好きなところに置いたイメージをデプロイできる。 GitHubに無料で使えるコンテナレジストリghcr.ioがある。 GitHub Actionsでghcr.ioにプッシュ(アップロード)するところまで自動化した。

今回は、Compute Engineへデプロイするのは自動化しなった。