/Tips

Elastic Beanstalkのeb create時にCreating load balancer failed Reason At least two subnets in two different Availability Zones must be specified で怒られた時の対処法

前提

  • EB CLI導入済み

現象

eb createコマンド実行後の対話実行中、ロードバランサーの選択後ににエラーが発生する。

eb create

(中略)

Select a load balancer type
1) classic
2) application
3) network
(default is 2): 2 // アプリケーションロードバランサーを選択
Creating application version archive "app-885e-190925_224850".
Uploading elastic-beanstalk/app-885e-190925_224850.zip to S3. This may take a while.
Upload Complete.
Environment details for: elastic-beanstalk-dev
  Application name: elastic-beanstalk
  Region: ap-northeast-1
  Deployed Version: app-885e-190925_224850
  Environment ID: e-xsgzypm6xc
  Platform: arn:aws:elasticbeanstalk:ap-northeast-1::platform/PHP 7.2 running on 64bit Amazon Linux/2.8.15
  Tier: WebServer-Standard-1.0
  CNAME: elastic-beanstalk-dev.ap-northeast-1.elasticbeanstalk.com
  Updated: 2019-09-25 13:48:54.541000+00:00
Printing Status:
2019-09-25 13:48:52    INFO    createEnvironment is starting.
2019-09-25 13:48:54    INFO    Using elasticbeanstalk-ap-northeast-1-369347037906 as Amazon S3 storage bucket for environment data.
2019-09-25 13:49:16    INFO    Created target group named: arn:aws:elasticloadbalancing:ap-northeast-1:369347037906:targetgroup/awseb-AWSEB-1CMBZGU29V9B4/493ad61810a2f151
2019-09-25 13:49:16    INFO    Created security group named: sg-0d3a5ce3ba89653ad
2019-09-25 13:49:32    ERROR   Stack named 'awseb-e-xsgzypm6xc-stack' aborted operation. Current state: 'CREATE_FAILED'  Reason: The following resource(s) failed to create: [AWSEBV2LoadBalancer, AWSEBSecurityGroup].
2019-09-25 13:49:32    ERROR   Creating load balancer failed Reason: At least two subnets in two different Availability Zones must be specified (Service: AmazonElasticLoadBalancingV2; Status Code: 400; Error Code: ValidationError; Request ID: dc2450c6-8e73-438c-b8ce-15bde8766595)
2019-09-25 13:49:32    ERROR   Creating security group named: awseb-e-xsgzypm6xc-stack-AWSEBSecurityGroup-1CMTPYPR86GNF failed Reason: Resource creation cancelled
2019-09-25 13:49:35    INFO    Launched environment: elastic-beanstalk-dev. However, there were issues during launch. See event log for details.

原因

デフォルトのVPCやサブネットに問題がある
エラーコメントからだいたい推測できる

Creating load balancer failed Reason: At least two subnets in two different Availability Zones must be specified (Service: AmazonElasticLoadBalancingV2; Status Code: 400; Error Code: ValidationError; Request ID: dc2450c6-8e73-438c-b8ce-15bde8766595)
  • ロードバランサーを作ろうとしたけどサブネットがマルチAZになっていないぞ

    • そもそもデフォルトでは デフォルトVPCにAZごとにごとにサブネットが作成されている
    • 日本だと3つのデフォルトサブネットが作成されているはず
    • 何らかの原因、例えばハンズオン終了後に環境をクリーンにするためにサブネットを削除しまくったら、知らぬ間にデフォルトサブネットを削除してしまっていたなどの理由でデフォルトのサブネットが1つしかないといった状態に陥っている

対処法

方法1 デフォルトVPCの再作成

デフォルトVPCを削除後、再度作成することでデフォルトサブネットがAZ毎に存在する状態に戻る。
こちらの方法を試したところ、残り1つとなっていたデフォルトのサブネットが無事3つになり eb createも実行できた。
ただし、色々と利用されているかもしれないのでデフォルトVPCの削除はくれぐれも慎重に。

方法2 eb create時に使用するvpcを明示的に指定する

オプション指定(—vpc.id)により、デフォルトのVPCではなく既存のvpcを指定することができる

参考

感想

お金がかかるのが怖いからといって、考えなしに何でもかんでも削除するのは気をつけよう。
でも、こういう罠に早めに引っかかって置くのが大事だと思ってたり。
(そもそもデフォルトVPCとかデフォルトサブネットが削除できちゃうのが怖いんですが)

telyama5k

telyama5k

The professional publishing platform

Read More