Elastic Beanstalkのeb create時のエラー対応
公開日: @t_yama5k
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つしかないといった状態に陥っている
- そもそもデフォルトでは デフォルト VPC に AZ ごとにごとにサブネットが作成されている
対処法
方法 1 デフォルト VPC の再作成
デフォルト VPC を削除後、再度作成することでデフォルトサブネットが AZ 毎に存在する状態に戻る。
こちらの方法を試したところ、残り1つとなっていたデフォルトのサブネットが無事3つになり eb create も実行できた。
ただし、色々と利用されているかもしれないのでデフォルト VPC の削除はくれぐれも慎重に。
方法 2 eb create 時に使用する vpc を明示的に指定する
オプション指定(--vpc.id)により、デフォルトの VPC ではなく既存の vpc を指定することができる
- eb create - AWS Elastic Beanstalk
- Elastic Beanstalk で Amazon Virtual Private Cloud (Amazon VPC) を設定する - AWS Elastic Beanstalk
参考
-
デフォルトの VPC を削除しました。元に戻す方法を教えてください。
すべての AWS アカウントには、AWS リージョンごとに 1 つのデフォルト VPC があります。デフォルト VPC を削除すると、そのリージョンの Amazon Elastic Compute Cloud (Amazon EC2) インスタンスの起動に問題が生じる場合があります。 `` デフォルトのVPCがないことでElastic Beanstalkにも影響がでる様子。
感想
お金がかかるのが怖いからといって、考えなしに何でもかんでも削除するのは気をつけよう。
でも、こういう罠に早めに引っかかって置くのが大事だと思ってたり。
(そもそもデフォルト VPC とかデフォルトサブネットが削除できちゃうのが怖いんですが)