VPC上のELBにsubnet が設定できない

エラー

AWSでELB(Elastic Load Balancer)をCREATEしようとすると、以下のメッセージが出た。

At least one subnet must be specified for a VPC load balancer.
(VPCロードバランサーには少なくとも1つのサブネットが必要です)

それならということで、一つ前の画面に戻り「Edit Subnets」から

設定したいサブネットを選択するも

元の画面まで戻ってくるとアレ?選択したサブネットが反映されていない。

解決策

「Create Load Balancer」の最初の画面、「1.Define Load Balancer」で"Enable advanced VPC configuration"にチェックを入れる。

すると、作成手順に「3.Select Subnets」が増えて

CREATE手前の画面でも設定が確認できるようになる。

作成成功

どういうこと?

デフォルト VPC での基本的なロードバランサーの作成に上記でチェックした"Enable advanced VPC configuration"の説明がある。

[Enable advanced VPC configuration:] オプションでは、独自のサブネットを指定できます。このオプションは、独自のサブネットを作成済みでデフォルトサブネットの代わりに使用したい場合に選択します。
つまりこのオプションをONにしておかないと、デフォルトサブネットが設定される仕組みだった。私はデフォルトサブネットを削除していたので、このような挙動不審におちいってしまったらしい。

でもこれManagement Consoleのバグっぽい気がするのでそのうち修正されるかも?
インスタンス作るときには「デフォルトサブネットがないのでサブネット選択必須ですよ!」って警告でるし、同じようにしてくれればいいのにな。

(参考)ELBに設定できるサブネットの条件

  • publicサブネットであること
  • ELB自身のスケーラビリティのために、最低でも/27ビットマスクのCIDRの範囲が必要
  • AZ(Availability Zones)ごとにひとつしか設定できない
  • ロードバランシングする対象のインスタンスとは同じサブネットでなくて良い