EB使ってますかEB?細かい特徴は公式見て下さい。
AWS Elastic Beanstalk

お気軽にEC2とロードバランサー(とRDS)がセットで起動できて、うまく使えば便利なんですが、細かい調整しようと思うとハマりポイントもあるヤツです。
ということで、今回はEB環境内にRDSを立てた時に困った件です。


その1 RDSの識別子がランダム

まずはこちらの画像をご覧ください。
rds-setting
これはEB環境内にRDSを追加する際の設定画面です。
普通にRDSを立てる場合には識別子を設定できるのに、EB環境内に建てようとすると識別子を設定することができません。
識別子がどうなるかと言うと、「aabb123kjda35」みたいな名前が勝手に付けられます。
こんな名前で複数のRDSができたら、RDSのコンソールを見た時に「このDBはどこのDBやったっけ?」ってなるので、EB環境内にRDSを立ててはいけない
(EB環境にRDSを追加してもRDSのコンソールに並びます)

その2 EB環境を終了したらRDSも道連れになる

例えば、検証用のEB環境にRDSを立てたとして、検証が終わったのでEB環境を終了させたい、でもRDSはまだもう少し使いたい。
みたいなケースでも、EB環境を終了させるとRDSも一緒に死にます。
RDSが死ぬのを回避しようと思うと、
  1. RDSの役目が終了するまでEB環境を残しておく(当然、EC2とかロードバランサーとかの料金はかかります。EC2をt2.nanoとかにして料金を抑えることはできますが、完全に無駄金です)
  2. EB環境を終了する際に、RDSのスナップショットを取ってそこから新しいRDSを立て直す
  3. 新しいRDSを立ててDMSとか人力マイグレーションとかで頑張ってデータを移行する
あたりが考えられますが、普通にめんどくさいのでEB環境内にRDSを立ててはいけない

なお、AWSの開発者ガイドにもきっちり以下のような記載があります。
環境の一部であるデータベースインスタンスは、環境のライフサイクルに固定されており、追加されると環境から削除することはできません。環境を終了すると、データベースインスタンスも終了します。

その3 RDSを休止したらにっちもさっちもいかなくなる

最近(2017/6/1?)RDSの停止オプションがリリースされました。
で、RDSのコンソールから停止できるので停止してみたわけですよ。
EB環境内に立てたRDSを停止すると何が起きるか

EB環境の設定画面を開こうとすると「RDSが見つからない」みたいなエラーが発生して設定が触れなくなりました

EB_Error


で、仕方ないのでEB環境もろとも終了させようと思ったところ、EB環境の終了処理が途中で異常終了して(完全には)消せない状態に陥りました。(EBが終了できないのはRDSの停止が原因かどうかは不明ですが)
とりあえず、料金の発生するようなリソースは全部消えてるみたいですがEB環境内にRDSを立ててはいけない、EB環境内に立てたRDSは停止させてはいけない
 
岡山の現場からは以上です。