LoginSignup
6
3

More than 3 years have passed since last update.

arm64版Amazon Linux 2でasp.net core 3.1のアプリを動かした話

Last updated at Posted at 2020-11-09

こんにちは。

https://qiita.com/yKimisaki/items/fa528de37413c1001bb6
過去の記事でSlackBotを作ったというのを書いていたのですが、最近AWS Graviton(x86-64系じゃなく、64bit版arm系のCPU、AWSが独自開発)のインスタンスに載せてみたので、メモ程度に残しておきます。
現状は何の問題もなく動いてくれているので、たぶん問題ないんだと思います。

インスタンスについて

上記にいろいろまとまっていますが、会社の規模的にもめちゃくちゃハードに使用されるAPIサーバではないため、現状はt4g.nanoで運用しています。
ストレージは15GBにしていますが、1.7GBくらいで収まっているので多分これくらいの規模であれば8GBでも事足りるはずです。
料金については現状月4ドル~5ドルくらいで収まると思います。
普通にx64のt2.nanoとか借りるより安いです。

OS/AMIについて

OSはAmazon Linux 2にしていますが、AWSだしAmazon Linux 2にしておこうというくらいの理由で決めているので、特に意味はありません。
.NET Coreがあらかじめ入っているクイックスタートだとt4gインスタンスは使えないので、しょうがなくピュアそうな子を選びます。

image.png

あとはEC2を普通に立ち上げるのですが、SSHの22番のほかにASP.NETのサーバ用のポートをTCPで開けておいてあげてください。

仮想マシンに.NET Core Runtimeを入れる

私はWSLのUbuntu 20.04 LTSでSSH使ってAWSに繋いでいますが、楽だから以外の理由はないので、好きな方法でサーバに入ってください。
で、現状ではarm64版のEC2で.NET Core Runtimeのインストールにyumやらaptやらのパッケージマネージャ系は使えないっぽいです。
ので、以下からwgetで手動で持ってきます。

wget https://download.visualstudio.microsoft.com/download/pr/dffd493f-9eb8-483f-81c7-a9e2201574ef/54e7464241e01e7031fd89e6fe88e6da/aspnetcore-runtime-3.1.9-linux-arm64.tar.gz

で、解凍してパスを通せばOKです。
今回はホームディレクトリ直下にdotnetフォルダを作ってそこに展開したので、以下のような感じです。

tar zxf aspnetcore-runtime-3.1.9-linux-arm64.tar.gz
export DOTNET_ROOT=$HOME/dotnet
export PATH=$PATH:$HOME/dotnet

arm64版向けにpublishする

今回の場合、更新も自分しかせず頻繁に更新もかからず社内向けのSlackBotなので、ずぼらな自分はいつもWindowsでコマンドを叩いてscpで送っています。
PowerShellあたりでプロジェクトのフォルダまで移動し、

dotnet publish -c Release -r linux-arm64

でarm64版の実行ファイルが生成されます。
生成物のなかのpublishフォルダを丸っと、WSLを使ってscpで送ってやればOKです。

起動する

再びSSHでLinuxに入り、

nohup ./publish/SlackBot > slackbot.out &

のような感じでバックグラウンド実行をしています。
あとはSlackAPIの方のSlackCommandにAWSのサーバのURLを指定してあげるとOKです。

さいごに

いつもは.NET CoreがプリインストールされているEC2インスタンスを立ち上げていたのですが、今回はそれができず、パッケージマネージャも使えないということで若干面倒ではあったのですが、無事にarmのCPUでも.NET Coreちゃんと動くよ!ということで、めでたしめでたし…
あんまり詳しくはないんですが、AWSは最近Gravitonへの動きが加速してまして、ElastiCacheやEKSの標準にしたりなどしているそうです。
かといって自分みたいなゲーム屋はUE4やUnity(というよりVisualStudioやらMayaやら)を使った開発でx86プロセッサから逃れられない運命は続きそうです。
arm版Windowsはエミュレーションだし、arm版Macももうすぐ発売ですけど、どうなるのかな…
ともかく今後数年でarmでゲーム開発を、というのはあんまり想像できないですね。
そういう意味でも、プロセッサの壁を越えてやれるっていうのは.NET Coreの強みだと思うので、是非皆さんもarm版.NET Coreをチェックしてみてください。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3