インスタンスタイプの選定方法とEC2 Instance Selectorの活用

はじめに

EC2のインスタンスタイプが200を超えている中、自身にあったインスタンスタイプを見つけ出すのは至難の業です。命名規則からある程度の選択はできますが、AWSのWebページから探し出すのは難しいです。

aws.amazon.com

特に難しいのは料金の見積もりで、Webページからインスタンスタイプを見比べて見積もるのはちょっと難しいです。

AWS Price List Queryというものがあるので、これを使ってアプリを自作しても良いかなと思ったのですが、ちょっと色々と面倒そう。

docs.aws.amazon.com

そんな中、Amazon EC2 Instance Selectorというものを見つけました。

gallery.ecr.aws

Amazon EC2 Instance Selectorの使い方

使い方は簡単で、GitHubページにあるREADMEの記述に沿えばOK。

github.com

今回はCloudShell上で実行しました。まずはインストール。

[cloudshell-user ~]$ curl -Lo ec2-instance-selector https://github.com/aws/amazon-ec2-instance-selector/releases/download/v2.4.1/ec2-instance-selector-`uname | tr '[:upper:]' '[:lower:]'`-amd64 && chmod +x ec2-instance-selector
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 22.0M  100 22.0M    0     0  40.3M      0 --:--:-- --:--:-- --:--:-- 40.3M
[cloudshell-user ~]$ ./ec2-instance-selector --version
v2.4.1[cloudshell-user ~]$

VCPUが2でメモリが4GBのもの、CPUアーキテクチャx86_64のものを抽出してみます。

[cloudshell-user ~]$ ./ec2-instance-selector --memory 4 --vcpus 2 --cpu-architecture x86_64 -r ap-northeast-1
c5.large
c5a.large
c5d.large
c6a.large
c6i.large
c6id.large
c6in.large
c7a.large
c7i-flex.large
c7i.large
t2.medium
t3.medium
t3a.medium
[cloudshell-user ~]$

表形式で見ることもできます。-o tableを付与すればOK。

[cloudshell-user ~]$ ./ec2-instance-selector --memory 4 --vcpus 2 --cpu-architecture x86_64 -r ap-northeast-1 -o table
Instance Type         VCPUs        Mem (GiB)        
-------------         -----        ---------        
c5.large              2            4                
c5a.large             2            4                
c5d.large             2            4                
c6a.large             2            4                
c6i.large             2            4                
c6id.large            2            4                
c6in.large            2            4                
c7a.large             2            4                
c7i-flex.large        2            4                
c7i.large             2            4                
t2.medium             2            4                
t3.medium             2            4                
t3a.medium            2            4
[cloudshell-user ~]$

情報量が少ないのですが、-o table-wideを指定すればよりたくさんの情報が出てきます。目的であった料金も一緒に。ただ、私が試した感じですと少し応答に時間がかかりました。

[cloudshell-user ~]$ ./ec2-instance-selector --memory 4 --vcpus 2 --cpu-architecture x86_64 -r ap-northeast-1 -o table-wide
NOTE: Could not retrieve 30 day avg hourly spot price for instance type r6idn.metal
NOTE: Could not retrieve 30 day avg hourly spot price for instance type r6in.metal
Instance Type   VCPUs   Mem (GiB)  Hypervisor  Current Gen  Hibernation Support  CPU Arch      Network Performance  ENIs    GPUs    GPU Mem (GiB)  GPU Info  On-Demand Price/Hr  Spot Price/Hr (30d avg)  
-------------   -----   ---------  ----------  -----------  -------------------  --------      -------------------  ----    ----    -------------  --------  ------------------  -----------------------  
c5.large        2       4          nitro       true         true                 x86_64        Up to 10 Gigabit     3       0       0              none      $0.107              $0.05007                 
c5a.large       2       4          nitro       true         false                x86_64        Up to 10 Gigabit     3       0       0              none      $0.096              $0.03762                 
c5d.large       2       4          nitro       true         true                 x86_64        Up to 10 Gigabit     3       0       0              none      $0.122              $0.04551                 
c6a.large       2       4          nitro       true         false                x86_64        Up to 12.5 Gigabit   3       0       0              none      $0.0963             $0.04101                 
c6i.large       2       4          nitro       true         true                 x86_64        Up to 12.5 Gigabit   3       0       0              none      $0.107              $0.04299                 
c6id.large      2       4          nitro       true         true                 x86_64        Up to 12.5 Gigabit   3       0       0              none      $0.1281             $0.04726                 
c6in.large      2       4          nitro       true         false                x86_64        Up to 25 Gigabit     3       0       0              none      $0.1428             $0.05243                 
c7a.large       2       4          nitro       true         true                 x86_64        Up to 12.5 Gigabit   3       0       0              none      $0.1292             $0.04897                 
c7i-flex.large  2       4          nitro       true         true                 x86_64        Up to 12.5 Gigabit   3       0       0              none      $0.10673            $0.0277                  
c7i.large       2       4          nitro       true         true                 x86_64        Up to 12.5 Gigabit   3       0       0              none      $0.11235            $0.04683                 
t2.medium       2       4          xen         true         true                 i386, x86_64  Low to Moderate      3       0       0              none      $0.0608             $0.02285                 
t3.medium       2       4          nitro       true         true                 x86_64        Up to 5 Gigabit      3       0       0              none      $0.0544             $0.02204                 
t3a.medium      2       4          nitro       true         true                 x86_64        Up to 5 Gigabit      3       0       0              none      $0.049              $0.01838
[cloudshell-user ~]$

考察

当初目的としたインスタンスタイプを横並びにして料金の比較ができるツールとしてEC2 Instance Selectorが有用であることが確認できました。AWSのアカウントが必要となりますが、Webページをちまちま確認することなく、CLIで確認できるのはたいへんありがたいです。