🍣

minimal AMIとarm64で安くEC2を使う

に公開

先にまとめ

  • minimal AMI(最小 AMI)、arm64、EBSを2GBとすれば、EC2を安く稼働させられる
    • EBS: 約 0.2USD/月
    • 稼働: 0.0054USD/時間

背景

  • Bastion用の EC2 で、低機能でもよく、用途が限られていることを想定しています。

  • EC2 を起動しなくても EBS は課金されており、EC2稼働していないのにストレージで課金される、ということがしばしばあります。

  • 一般的なAMI(選択画面で出てくるもの)から作った EC2には 8GB の EBS がついており、料金:汎用 SSD (gp3) - ストレージ USD 0.096/GB 月だと約 0.8USD 月 になります。

  • もう少し安くならないか、と思ってEBS をシュリンクさせる方法などを見ていたのですが、そもそも minimal AMI を使って 2GB で作成すれば使用容量を下げられると思いました。これだけでストレージ分が0.2USD 月になります。

minimal AL2023 について

(※minimal 自体は昔からあります。こちらは 2015 年の比較記事)

AL2023 は Amazon Linux 2 (AL2)の後継という位置づけです。その中で、AMI の標準と最小構成(minimal)があり、比較はこちらにあります。

AMI から起動する

AL2023 minimal から EC2 インスタンスを作ります。

arm64 にする

arm64 のほうが、お安いタイプが使えます。 g が入っているものがarm64対応のもの(=graviton)です。

AWS Console で AMI を探す

EC2 -> Image AMIs からフィルターして

  • Owner alias = amazon,
  • Source : al2023-ami-minimal

などで探します。

CLI で AMI を探す

aws ec2 describe-images \
  --owners "amazon" \
  --filters "Name=name,Values=*al2023-ami-minimal*" "Name=architecture,Values=arm64" \
  --query 'Images[*].{Name:Name, ImageId:ImageId, CreationDate:CreationDate}' \
  --output table

選択した AMI

arm64 ということでこちらを選びました。特に深い理由はありません(あとから見ると最新でなかった)

CreationDate ImageId Name
2025-04-30T19:42:27.000Z ami-04f33a390c4e91a1b al2023-ami-minimal-2023.7.20250428.1-kernel-6.12-arm64

この下の画面から Launch します。

  • インスタンスのキーペア pem は自分のものを選択します

instance type は t4g.nano を選択

SSH してみる

起動したインスタンスを選択して、Connect 画面に進むとコマンド例が書いてあるので参考に

ssh -i "my-key.pem" ec2-user@ec.xx.xx.ap-northeast-1.compute.amazonaws.com

SSH したあと確認すると、/dev/nvme0n1p1の容量から、700MB ほど空きがあることがわかります。

[ec2-user@ip-xxx ~]$ df -h
Filesystem        Size  Used Avail Use% Mounted on
devtmpfs          4.0M     0  4.0M   0% /dev
tmpfs             207M     0  207M   0% /dev/shm
tmpfs              83M  452K   83M   1% /run
efivarfs          128K  2.6K  126K   3% /sys/firmware/efi/efivars
/dev/nvme0n1p1    2.0G  1.3G  692M  65% /
tmpfs             207M     0  207M   0% /tmp
/dev/nvme0n1p128   10M  1.4M  8.7M  14% /boot/efi
tmpfs              42M     0   42M   0% /run/user/1000

mysql Client を入れてみる

sudo dnf -y localinstall https://dev.mysql.com/get/mysql84-community-release-el9-1.noarch.rpm
sudo dnf -y install mysql-community-client

(ここから使っていないが問題なさそう)

まとめ

  • EC2 を AMI minimal を使って安く稼働させることができるようになったが、以前が気にできていなかっただけという説
  • 懸念:arm64で動かないものがあったらどうしよう、等

Discussion