こんにちは。
この度、おしごとで初めてAWSを触ることになりました。
AWSを触り始めて3日目の夜。
EC2サーバ1台にPHP+Nginxをいれて満足したくらいのレベルの私が、CodeDeployと戯れたときのお話をさせていただきます。
使ってみよう
CodeDeployを使うにあたり公式にサンプルデプロイがあります。
こちらを使用すれば、手元にアプリケーションがなくてもCodeDeployの使用感が分かりそうです。
ということで早速、使ってみましょう。
サンプルデプロイ
サンプルデプロイを使用すると、デプロイタイプはBlue/Greenにするかインプレースにするかなどいくつか聞かれます。
多少用語が分からなくても前に進みましょう。(あとからここが仇になるので注意)
ここでは、Blue/Greenデプロイを選択することにしました。
あら簡単。
たったの3ステップでサンプルデプロイが実行され、Blue/Greenの画面が切り替わったことが確認できました。
「余は満足。」
アプリケーションのデプロイの動作確認が完了したときに、そう思った方もいらっしゃるでしょう。
おかたづけ
今回行った操作はあくまでもサンプルデプロイ。
とりあえず後片付けをして、次のステップとなるべくオリジナルのアプリケーションデプロイに進みたいところです。
では、すでに立ち上がっているEC2インスタンスを消しましょう。
立ち上がっているインスタンスを選択し、アクション>インスタンスの状態>削除
をすると、インスタンスの状態がterminatedになります。
放っておくとリストからもいなくなります。
「CodeDeployって簡単ね。さすがAWS。」
今日の本題
そう思ったのもつかの間。
なんということでしょう、消したはずのインスタンスがまた立ち上がってきました。
消しても消しても立ち上がってきます。
インスタンスの削除>立ち上がる。の繰り返し。
消したつもりで消せてなかったのかな?
インスタンスの削除じゃなくて停止を先にしないといけないのかな?
デプロイボタンを2回連打したのかな?
それでも立ち上がってくるインスタンス。
ウィルスに感染したかな?
これは何かの呪いかな?
最後にはそう思わざるをえませんでした。
ここで20分ほど格闘した結果がこちらです。
死闘の果て…。
原因はなんだったのか
長い戦いの中でやっと理由がわかったのでお知らせしておきます。
サンプルデプロイのチュートリアル実行中に、このようなメッセージがでてきます。
私は大事な文章を読み飛ばしていたのです。
クリーンアップ:
サンプルアプリケーションの検証が終了したら、サンプル環境リソースをクリーンアップできます。Auto Scaling コンソールで、CodeDeploy_BlueGreenDemoFleet-xxxxx というプレフィックスが付いた Auto Scaling グループを削除します。AWS CloudFormation コンソールで、CodeDeployBGStack-xxxxx という名前のスタックを削除します。サンプルアプリケーションの検証が終了したら、サンプル環境リソースをクリーンアップできます。Auto Scaling コンソールで、CodeDeploy_BlueGreenDemoFleet-xxxxx というプレフィックスが付いた Auto Scaling グループを削除します。AWS CloudFormation コンソールで、CodeDeployBGStack-xxxxx という名前のスタックを削除します。
ここにすべてのヒントがありました。
解説
サンプルデプロイでは、Auto Scaling グループを使用し3台のEC2インスタンスを立ち上げます。
このとき、希望するキャパシティと最小でも最大でも3台と設定されています。
今回わたしが犯したミスのように、EC2インスタンスを直接消してしまうと
Auto Scaling グループが検知し「俺たちは何が何でも3台起動を維持するんだ!」と新たなインスタンスを立ち上げるのです。
(無意識ですが、Auto Scaling グループで維持するインスタンス数のテストができましたね!)
さいごに
すべての作業が済み、EC2インスタンスを整理したいときは
・Auto Scaling グループの希望するキャパシティと最小の数を0にする
・Auto Scaling グループを削除する
のどちらかにしましょう。
こんな簡単なことに気づけなかったのは
・用語がわからずにとにかく動かしてしまった
・説明文を読み飛ばしていた
に尽きます。
失敗から学ぶことも大いにあるので、今回の経験はプラスになったなと思いつつ、
マニュアルは大事。ちゃんと読もう。と肝に命じたのでした。
みなさま良いクリスマスをお過ごしください。