InvalidParameterValue: The instance type is not supported in this region を修正する (AWS EC2)

intermediate☁️ AWS2026-03-17| AWS EC2、AWS CLI v2、Terraform、CloudFormation — 任意のリージョン

Error Message

InvalidParameterValue: The instance type is not supported in this region
#aws#ec2#instance#region

要約

対象リージョンに存在しないEC2インスタンスタイプを起動しようとしています。そのリージョンで実際に利用可能なインスタンスタイプを確認し、リージョンを変えるか、サポートされているタイプを選択してください。

# 簡単な確認: リージョンで利用可能なインスタンスタイプを一覧表示
aws ec2 describe-instance-type-offerings \
  --location-type region \
  --filters Name=instance-type,Values=m6g.large \
  --region ap-southeast-1

# 出力が空の場合、そのインスタンスタイプはそのリージョンでは利用不可です

エラーの全文

An error occurred (InvalidParameterValue) when calling the RunInstances operation:
The instance type 'm6g.large' is not supported in this region (us-gov-east-1)

aws ec2 run-instances の実行、Terraformプランの適用、またはCloudFormationスタックのデプロイ時にこのエラーが発生します。指定したインスタンスタイプが、選択したAWSリージョンに存在しないことが原因です。

発生原因

AWSはすべてのインスタンスタイプをすべてのリージョンに同時に展開するわけではありません。m6gc7gのようなGravitonベースのタイプ、p4dのようなGPUインスタンス、inf1のような特殊なタイプは、まず主要リージョンで提供が開始されます。GovCloudや中国リージョンへの展開には数ヶ月かかる場合もあり、まったく展開されないものもあります。

よくある原因:

  • us-east-1でテストしたブログ記事からインスタンスタイプをコピーしたが、ap-south-1やGovCloudにデプロイしようとしている
  • まだ対象リージョンに展開されていないGraviton2/3インスタンス(m6gc6gr6g)を使用している
  • リージョンの可用性を確認せずに、古いTerraformモジュールで新世代のタイプを選択している
  • 特定のAZで利用不可のタイプを参照しているスポットインスタンステンプレート

修正方法1: リージョンで実際に利用可能なタイプを確認する

何よりもまずこれを実行してください。現在の状況を正確に把握するための最も確実な方法です:

# 特定のリージョンで利用可能なすべてのインスタンスタイプを一覧表示
aws ec2 describe-instance-type-offerings \
  --location-type region \
  --region ap-southeast-1 \
  --query 'InstanceTypeOfferings[].InstanceType' \
  --output text | tr '\t' '\n' | sort

# ファミリーでフィルタリング(例: すべてのm6gタイプ)
aws ec2 describe-instance-type-offerings \
  --location-type region \
  --filters "Name=instance-type,Values=m6g.*" \
  --region eu-south-1 \
  --query 'InstanceTypeOfferings[].InstanceType' \
  --output table

修正方法2: 同じリージョンで同等のインスタンスタイプを探す

希望するタイプが利用できない場合、前世代のタイプが最善の選択肢となることが多いです。スペックは近く、リージョン対応範囲は広くなっています:

# m6g.large(Graviton2)が利用できない場合
# m5.large(Intel、同等スペック)またはm6i.largeにフォールバック

aws ec2 describe-instance-type-offerings \
  --location-type region \
  --filters "Name=instance-type,Values=m5.large,m5a.large,m6i.large" \
  --region YOUR_REGION \
  --query 'InstanceTypeOfferings[].InstanceType' \
  --output table

よくあるフォールバックの早見表:

  • m6g.* が利用不可 → m5.* または m5a.* を試す
  • c6g.* が利用不可 → c5.* または c5a.* を試す
  • r6g.* が利用不可 → r5.* を試す
  • p4d.* が利用不可 → p3.* を試す

修正方法3: AZレベルの可用性を確認する(スポットインスタンスや特定AZ向け)

リージョンにはインスタンスタイプが存在するものの、特定のアベイラビリティゾーンでは利用できない場合があります。これはスポットフリートの設定でよく引っかかるポイントです:

# AZレベルの可用性を確認
aws ec2 describe-instance-type-offerings \
  --location-type availability-zone \
  --filters "Name=instance-type,Values=c5.xlarge" \
  --region us-west-2 \
  --query 'InstanceTypeOfferings[].{Type:InstanceType,AZ:Location}' \
  --output table

修正方法4: TerraformまたはCloudFormationの場合

IaCを使用している場合、インスタンスタイプはハードコードせず、リージョンごとの適切なデフォルト値を持つ変数として定義するのが正しいアプローチです:

# terraform.tfvars — リージョンごとに上書き
instance_type = "m5.large"   # m6gが利用できないリージョン向けのフォールバック

# variables.tf
variable "instance_type" {
  description = "EC2インスタンスタイプ(Graviton対応リージョンではm6g.*を使用)"
  default     = "m5.large"
}

CloudFormationの場合は、マッピングブロックを使用します:

Mappings:
  RegionInstanceTypeMap:
    us-east-1:
      InstanceType: m6g.large
    us-gov-east-1:
      InstanceType: m5.large
    ap-south-1:
      InstanceType: m5.large

Resources:
  MyInstance:
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: !FindInMap [RegionInstanceTypeMap, !Ref AWS::Region, InstanceType]

動作確認

サポートされているタイプに切り替えたら、インスタンスを起動して状態が running になっていることを確認します:

# 起動して確認
aws ec2 run-instances \
  --image-id ami-0abcdef1234567890 \
  --instance-type m5.large \
  --count 1 \
  --region YOUR_REGION \
  --query 'Instances[0].{ID:InstanceId,State:State.Name,Type:InstanceType}' \
  --output table

# 実行中であることを確認
aws ec2 describe-instances \
  --instance-ids i-0123456789abcdef0 \
  --query 'Reservations[0].Instances[0].State.Name' \
  --output text
# 期待される出力: running

事前に問題を防ぐ

このチェックをデプロイパイプラインに組み込んでおけば、AWSがエラーを返す前に不一致を検出できます:

#!/bin/bash
INSTANCE_TYPE="m6g.large"
REGION="ap-southeast-1"

AVAILABLE=$(aws ec2 describe-instance-type-offerings \
  --location-type region \
  --filters "Name=instance-type,Values=${INSTANCE_TYPE}" \
  --region "${REGION}" \
  --query 'length(InstanceTypeOfferings)' \
  --output text)

if [ "$AVAILABLE" -eq 0 ]; then
  echo "ERROR: ${INSTANCE_TYPE} is not available in ${REGION}"
  echo "Run: aws ec2 describe-instance-type-offerings --location-type region --region ${REGION}"
  exit 1
fi

echo "${INSTANCE_TYPE} is available in ${REGION}, proceeding..."

AWSコンソールで確認する方法

CLIを使いたくない方は、AWSコンソールの EC2 → インスタンスタイプ に移動してください。リージョンセレクター(右上)が正しく設定されていることを確認し、検索とフィルターを使って利用可能なタイプを確認します。各タイプには 現行世代 または 旧世代 のラベルが表示されており、フォールバックの選択肢を一目で把握するのに便利です。

Related Error Notes