Elastic Beanstalkで Stack ‘awseb-x-xxx-xxx’ does not exist とエラーが出た時の確認と対処方法

2015.07.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

丹内です。

ElasticBeanstalk(EB)を使っていて発生した掲題のエラーについて、確認と対処の方法のまとめです。

エラーが発生する背景

このエラーは、EBが使っているCloudFormation(CFn) Stackが何らかの理由で無くなってしまった場合に発生します。

といっても、普通にEBを使っているだけならCFn Stackが勝手になくなることはありません。あるとすれば、人が誤って削除した、ということくらいです。

例えば、「久しぶりにマネジメントコンソールを見たら記憶に無い名前のCFn Stackがあり、だったら必要ないだろうと削除してしまったらEBにデプロイできなくなった」というシチュエーションが考えられます。というか僕はこれでした。

そもそもEBを使っているのにCFnのエラーが出るのはなぜか

EBは内部でCFnを使っているからです。このスライドの26ページにかかれているのですが、ローリングアップデートの際にそのような挙動になっているため、そのために必要なCFn Stackが無いとエラーになる、ということです。

トラブルシューティング1:原因の特定

eb deployでこのエラーメッセージが出た時は、まず該当のCFn Stackを誤って削除していないかを確認します。

スクリーンショット_2015-07-15_14_15_45 スクリーンショット_2015-07-15_14_17_19

ここでエラーメッセージに表示された名前と一致するStack名があれば、原因をStackの削除によるものと考えることができるので、次の段階に進みましょう。

トラブルシューティング2:原因の排除

このトラブルの場合、本来EB管理下にあるはずのCFn Stackを人の手で削除してしまったことが原因となっています。

したがってこれを復旧するためにはEB管理下にCFn Stackを戻せばよいのですが、一度削除したCFn Stackはrevertできないため、EB Environmentごと作りなおす方法でCFn Stackを復活させます。

方法は簡単で、マネジメントコンソールまたはCLIからRebuild Environmentを実行するだけです。

スクリーンショット_2015-07-15_14_31_02

上の写真をクリックすると、確認画面が出てきます。そこでRebuildボタンを押すと、再構築が開始されます。

再構築後は各種インスタンスやSecurity Groupが別の新しいものに替わり、正常に動くようになります。

まとめ

EB使用時のCFn Stack削除に起因するエラーの診断方法と、対処方法としてのRebuild Environmentをご紹介しました。

実際にEBを使ってみると、AWSの柔軟なインフラを最大限利用しつつアプリケーション開発に集中できることがとても素晴らしいです。

独自仕様がわかりにくい部分もありますが、PaaSの選択肢の一つとして非常に魅力的なので、おすすめします。