要約
対象リージョンに存在しない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はすべてのインスタンスタイプをすべてのリージョンに同時に展開するわけではありません。m6gやc7gのようなGravitonベースのタイプ、p4dのようなGPUインスタンス、inf1のような特殊なタイプは、まず主要リージョンで提供が開始されます。GovCloudや中国リージョンへの展開には数ヶ月かかる場合もあり、まったく展開されないものもあります。
よくある原因:
us-east-1でテストしたブログ記事からインスタンスタイプをコピーしたが、ap-south-1やGovCloudにデプロイしようとしている- まだ対象リージョンに展開されていないGraviton2/3インスタンス(
m6g、c6g、r6g)を使用している - リージョンの可用性を確認せずに、古い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 → インスタンスタイプ に移動してください。リージョンセレクター(右上)が正しく設定されていることを確認し、検索とフィルターを使って利用可能なタイプを確認します。各タイプには 現行世代 または 旧世代 のラベルが表示されており、フォールバックの選択肢を一目で把握するのに便利です。

