CloudFormationでのEC2起動NG例

プログラミング

「No subnets found for the default VPC ‘VPC ID’. Please specify a subnet.」のエラー

AWSのCloudFrmationの自作テンプレートでのEC2起動が「No subnets found for the default VPC ‘VPC ID’. Please specify a subnet.」のエラーで失敗してしまいました。

「デフォルトVPCのサブネットが見つからないので、サブネットを指定してください」、だそうです。

原因はサブネットの未指定

NGの際のテンプレートであるymlファイルは下記の通り

AWSTemplateFormatVersion: "2010-09-09"
Description: Create EC2 Instance
Resources:
 MyEC2Instance:
  Type: AWS::EC2::Instance
  Properties: 
   ImageId: [自身で作成したAMIのID]
   InstanceType: t2.micro

最小限の記述でとりあえず、デフォルトVPCにEC2を起動しようとしました。

サブネットは指定していませんでした。ちゃんと指定しないとダメなようです。

参考にしたテンプレートはサブネットの指定がなかったので、以前はサブネットを指定しなくてもOKだったのかもしれません。
サブネットの指定を追加しました。
AWSTemplateFormatVersion: "2010-09-09"
Description: Create EC2 Instance
Resources:
 MyEC2Instance:
  Type: AWS::EC2::Instance
  Properties: 
   ImageId: [自身で作成したAMIのID]
   InstanceType: t2.micro
   SubnetId: [作成したデフォルトVPCのサブネットID]

サブネットを指定したテンプレートで再度スタック作成したところ、EC2が正常に起動できました。

東京リージョン特有の事象?

ちなみにサブネットを指定しなければならなかったのは東京リージョンでした。

バージニア北部のリージョンではサブネットを指定していないテンプレートでもエラーなく起動できるようです。

つまり下記テンプレートの内容でもOKでした。

AWSTemplateFormatVersion: "2010-09-09"
Description: Create EC2 Instance
Resources:
 MyEC2Instance:
  Type: AWS::EC2::Instance
  Properties: 
   ImageId: ami-00ecaedbecc7f9d39
   InstanceType: t2.micro

サブネットを指定する「SubnetId」は無いのですが、実行すると適当なサブネットを選択してくれているようです。

他のリージョンは試してないので、東京リージョン特有かは不明ですが、

ともかく東京リージョンでCloudFormationのテンプレートを使い、EC2を作成するときは「SubnetId」で特定のサブネットIDを指定する必要があるようです。

ちなみにデフォルトVPC以外に構築したいときは、SubnetIdを構築したいサブネットIDを指定するだけでOKです。

AWSTemplateFormatVersion: "2010-09-09"
Description: Create EC2 Instance
Resources:
 MyEC2Instance:
  Type: AWS::EC2::Instance
  Properties: 
   ImageId: [自身で作成したAMIのID]
   InstanceType: t2.micro
   SubnetId: [自身で新規作成したVPC内のサブネットID]

コメント