Closed7

リージョン、AZで使用可能なインスタンスタイプを調査する

not75743not75743

スポットインスタンスを利用しているが、
対象のインスタンスが停止した場合に別インスタンスタイプで立ち上げるということを計画。

予めどのインスタンスタイプがどのリージョン、AZで利用出来るかを調査する

not75743not75743

コンソール

  • ログイン
  • 探したいリージョンに移動
  • InstanceTypesを選択
  • 探したいインスタンスタイプでフィルタ
  • Networking > Availability zonesにあった

複数のインスタンスタイプでも出してくれます。

not75743not75743

サンプル3つをさわってみる

リージョンで有効なインスタンスタイプをすべて出力

リージョンを引数に指定すればOK

$ aws ec2 describe-instance-type-offerings --region ap-northeast-1
{
    "InstanceTypeOfferings": [
        {
            "InstanceType": "r5a.4xlarge",
            "LocationType": "region",
            "Location": "ap-northeast-1"
        },
        {
            "InstanceType": "r3.2xlarge",
            "LocationType": "region",
            "Location": "ap-northeast-1"
        },
...

返ってくるのはjson形式かつ複数の値が返ってくるため、適宜フィルタします

AZで有効なインスタンスタイプをすべて出力

リージョンとAZが必要です

$ aws ec2 describe-instance-type-offerings \
>     --location-type availability-zone \
>     --filters Name=location,Values=ap-northeast-1a \
>     --region ap-northeast-1
{
    "InstanceTypeOfferings": [
        {
            "InstanceType": "r5a.2xlarge",
            "LocationType": "availability-zone",
            "Location": "ap-northeast-1a"
        },
        {
            "InstanceType": "r5dn.metal",
            "LocationType": "availability-zone",
            "Location": "ap-northeast-1a"
        },
...

リージョン内で指定したインスタンスタイプが有効か調べる

今度はリージョンとインスタンスタイプを使います。
これは東京リージョンで有効な、タイプと世代がC5であるインスタンスタイプをすべて出力しています。

$ aws ec2 describe-instance-type-offerings \
>     --filters Name=instance-type,Values=c5* \
>     --query "InstanceTypeOfferings[].InstanceType" \
>     --region ap-northeast-1
[
    "c5n.18xlarge",
    "c5d.metal",
    "c5d.9xlarge",
    "c5d.12xlarge",
    "c5a.large",
    "c5.metal",
    "c5.4xlarge",
    "c5a.24xlarge",
    "c5d.4xlarge",
    "c5d.large",
    "c5a.12xlarge",
    "c5.18xlarge",
    "c5d.18xlarge",
    "c5d.2xlarge",
    "c5d.xlarge",
    "c5n.large",
    "c5.large",
    "c5n.9xlarge",
    "c5n.metal",
    "c5.12xlarge",
    "c5a.4xlarge",
    "c5a.2xlarge",
    "c5.xlarge",
    "c5a.16xlarge",
    "c5.2xlarge",
    "c5n.xlarge",
    "c5.24xlarge",
    "c5n.2xlarge",
    "c5a.xlarge",
    "c5n.4xlarge",
    "c5.9xlarge",
    "c5d.24xlarge",
    "c5a.8xlarge"
]
not75743not75743

複数の条件でフィルタ出来る?

--filtersで複数指定すればOK。
ここではAZとインスタンスタイプの2つフィルタをしています。

aws ec2 describe-instance-type-offerings \
     --location-type availability-zone \
     --filters Name=location,Values=ap-northeast-1a Name=instance-type,Values=c5*\
     --region ap-northeast-1

ここまでできたらあとはjsonをわかりやすくする処理を加えればOK

このスクラップは2023/05/30にクローズされました