[小ネタ] CFnのインスタンスタイプを変更する場合はEBS最適化”非”対応インスタンスに気をつけよう

作成したCloudformationテンプレートをローカルで確認する為にインスタンスタイプを変更したところ、選択したインスタンスがEBS最適化に対応していなかった為エラーが発生してしまった。自戒の意と同じ様な過ちを誰かがしないことを願って失敗例を書き起こしていきます。
2019.06.10

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

タイトルが示す通り、「CFnテンプレートを作る時はEBS最適化に対応していないインスタンスタイプに気をつけましょう!」という内容になります。

EBS最適化に対応しているインスタンス一覧は以下です。

Amazon EBS – 最適化インスタンス

そんなの引っかかる人いるの?と思う方が多数だと思いますが、

  1. 本番用CFnテンプレを作成
  2. ローカルでスタック作成を試すためにインスタンスタイプを一時的に小さいもの(t2系)に変更する
  3. スタック作成時にエラー発生

といった経緯で直近2回も引っかかっています。

自戒の意と、同じ過ちを繰り返す人が一人でも少なくなって欲しいという願いを込めて、ブログに書き起こしていきたいと思います。

失敗を再現してみた

この様な、EC2インスタンスを立ち上げるテンプレートを作成したとします。

「よし!ちゃんとこのテンプレートが動くのか確認するぞ!でもm4.largeはお高いからt2.microにして実行しよう!

こうして出来上がったのが以下のテンプレートです。

EbsOptimized: trueの記載がされたまま、インスタンスタイプがEBS最適化をサポートしていないt2系になってしまいました。

このテンプレートを使ってスタック作成を試みると・・・

当然スタックの作成に失敗しました。

エラー詳細にも、「リクエストされたインスタンスタイプはEBS最適化に対応してないよ」とご丁寧に書いてあります。

例えば、t3系インスタンスであればEBS最適化に対応しているため、問題なくインスタンスを起動することが出来ます。

インスタンスタイプだけでなく、テンプレート内の値を一時的に変更する場合には予期せぬエラーが発生しない様に気をつけましょう。

まとめ

エラー内容を見ればすぐに原因がわかるレベルのものであるため、何時間もハマってしまう事は無いと思いますが、こういった細かいミスをしてスタックを作り直す、といった手間の発生は出来るだけ未然に防ぎたい所です。

この記事が誰かの余計なスタックの作り直しを防ぐことができれば幸いです。

以上、AWS事業本部の大前でした。