Fix InvalidParameterValue: The instance type is not supported in this region (AWS EC2)

intermediate☁️ AWS2026-03-17| AWS EC2, AWS CLI v2, Terraform, CloudFormation — mọi region

Error Message

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

TL;DR

Bạn đang cố khởi chạy một loại EC2 instance không tồn tại ở region đích. Hãy kiểm tra xem region đó thực sự hỗ trợ những loại instance nào, sau đó chuyển region hoặc chọn loại instance được hỗ trợ.

# Kiểm tra nhanh: liệt kê các loại instance khả dụng trong region của bạn
aws ec2 describe-instance-type-offerings \
  --location-type region \
  --filters Name=instance-type,Values=m6g.large \
  --region ap-southeast-1

# Nếu output rỗng, loại instance đó KHÔNG khả dụng ở region này

Lỗi đầy đủ

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

Lỗi này xảy ra khi chạy aws ec2 run-instances, apply Terraform plan, hoặc deploy CloudFormation stack. Loại instance bạn chỉ định đơn giản là không tồn tại ở AWS region đã chọn.

Nguyên nhân

AWS không triển khai mọi loại instance đến mọi region cùng lúc. Các loại dựa trên Graviton như m6gc7g, instance GPU như p4d, và các loại chuyên dụng như inf1 — đều ra mắt ở các region lớn trước. Một số mất hàng tháng mới đến GovCloud hoặc China region. Thậm chí có loại không bao giờ đến được.

Các nguyên nhân phổ biến:

  • Copy-paste loại instance từ bài blog được test ở us-east-1, trong khi bạn deploy lên ap-south-1 hoặc GovCloud
  • Dùng instance Graviton2/3 (m6g, c6g, r6g) ở region chưa nhận được loại đó
  • Chọn loại instance thế hệ mới trong Terraform module cũ mà không kiểm tra tính khả dụng theo region
  • Template Spot instance tham chiếu đến loại không có ở một AZ cụ thể

Cách 1: Tìm các loại instance thực sự khả dụng ở region của bạn

Chạy lệnh này trước tiên. Đây là cách đáng tin cậy nhất để biết bạn đang làm việc với gì:

# Liệt kê TẤT CẢ loại instance khả dụng ở một region cụ thể
aws ec2 describe-instance-type-offerings \
  --location-type region \
  --region ap-southeast-1 \
  --query 'InstanceTypeOfferings[].InstanceType' \
  --output text | tr '\t' '\n' | sort

# Lọc theo dòng (ví dụ: tất cả loại 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

Cách 2: Tìm loại instance tương đương ở cùng region

Khi loại chính xác không khả dụng, thế hệ trước thường là lựa chọn tốt nhất. Thông số tương tự, hỗ trợ region rộng hơn:

# Bạn muốn m6g.large (Graviton2) nhưng không có
# Dùng m5.large (Intel, thông số tương đương) hoặc m6i.large thay thế

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

Bảng tham chiếu nhanh cho các fallback phổ biến:

  • m6g.* không có → thử m5.* hoặc m5a.*
  • c6g.* không có → thử c5.* hoặc c5a.*
  • r6g.* không có → thử r5.*
  • p4d.* không có → thử p3.*

Cách 3: Kiểm tra tính khả dụng theo AZ (cho Spot hoặc AZ cụ thể)

Đôi khi một loại instance tồn tại trong region nhưng không có ở một Availability Zone cụ thể. Điều này hay gây vấn đề với cấu hình Spot Fleet:

# Kiểm tra tính khả dụng theo 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

Cách 4: Terraform hoặc CloudFormation

Với IaC, cách đúng là biến loại instance thành biến với giá trị mặc định hợp lý theo từng region — không hardcode giá trị cố định:

# terraform.tfvars — ghi đè theo từng region
instance_type = "m5.large"   # fallback cho region không có m6g

# variables.tf
variable "instance_type" {
  description = "Loại EC2 instance (dùng m6g.* cho region hỗ trợ Graviton)"
  default     = "m5.large"
}

Với CloudFormation, dùng mappings block:

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]

Xác nhận

Sau khi chuyển sang loại instance được hỗ trợ, khởi chạy instance và xác nhận trạng thái trả về là running:

# Khởi chạy và xác nhận
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

# Kiểm tra trạng thái đang chạy
aws ec2 describe-instances \
  --instance-ids i-0123456789abcdef0 \
  --query 'Reservations[0].Instances[0].State.Name' \
  --output text
# Kết quả mong đợi: running

Ngăn lỗi trước khi xảy ra

Tích hợp bước kiểm tra này vào pipeline deploy để phát hiện sự không tương thích trước khi AWS báo lỗi:

#!/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 "LỖI: ${INSTANCE_TYPE} không khả dụng ở ${REGION}"
  echo "Chạy: aws ec2 describe-instance-type-offerings --location-type region --region ${REGION}"
  exit 1
fi

echo "${INSTANCE_TYPE} khả dụng ở ${REGION}, tiếp tục..."

Cách dùng AWS Console

Không quen CLI? Vào EC2 → Instance Types trong AWS Console. Đảm bảo bộ chọn region (góc trên bên phải) được đặt đúng, sau đó dùng tìm kiếm và bộ lọc để xem những loại nào khả dụng. Mỗi loại hiển thị nhãn Current generation hoặc Previous generation — hữu ích để nhận ra các lựa chọn thay thế ngay lập tức.

Related Error Notes