自由気ままに書いちゃおう

好きなことをつらつらと・・・

AWS Cloudformationで作った環境の更新と削除1

前回、Cloudformationで環境構築を行いました。 

www.guri2o1667.work

 

初めてCloudformationで環境構築した際は、
「これで構築できるなんて楽だな♪」って思っていたのですが、
ふと、「削除や更新したいときってどうやるんだろ」って疑問に思ったことを今でも覚えているので、
"同じように思う人がいるかもしれない!!"ってことで、
今回はCloudformationで構築した環境を削除/更新する話をしたいと思います。

 

■前置き

【「削除したい」と言っても・・・】

削除したい内容も色々ありますよね。
・Cloudformationで構築した環境全てを削除したい。
・Cloudformationで構築した環境の一部を削除したい

【「更新したい」】

更新は、削除と被りますが、「一部設定値を変更する」と言ったことが大半かと。


では、本題です。

■削除: 環境全てを削除


この場合、特に難しいことは無く、スタックの「削除」をクリックするだけです。

f:id:guri2o1667:20200514215748p:plain

削除ボタンを押した後に、下記の確認画面が出ますので、
問題なければ「スタックの削除」をクリックします。

f:id:guri2o1667:20200514215823p:plain

これで、構築したすべての環境が削除されます。
※跡形もなくなります。。。
※スタックの削除時に一部リソースを残すこともできますが、
 「すべて削除される」って最初は思って取り掛かったほうが良いです。

■削除: 環境の一部を削除したい(パート1)


今の環境が下記構成だとすると、

f:id:guri2o1667:20200513233019p:plain


この構成から、パブリックサブネットにある「AmazonLinux2」を削除したいケースを取り上げたいと思います。

つまり、下記構成としたい場合の手順です。

f:id:guri2o1667:20200514220250p:plain


まず最初に思いつくのは、
「EC2ダッシュボードからAmazonLinux2を削除しちゃえ」ってことです。

これは、OKの場合とNGの場合があります。

【OKの場合】
   環境構築だけが目的であり、テンプレート(スタック)を使い捨てにする場合。

【NGの場合】
   IaCを目的としている場合。

まぁ、何となくわかると思いますが、
OKの場合は本当に手っ取り早く構築だけして、あとの細かい設定はAWSコンソールなりawscliなりで設定するから、テンプレートのコードと実際の環境とで差分が出ても困らないケースです。
NGの場合は逆で、IaCで管理していくのであれば理想を言えば絶対にやっちゃいけないです。

OKの場合は"もう好きにして"ってことなので、EC2ダッシュボードから該当インスタンスを削除します。

では、NGの環境の時はどうすればいいのかってことですが、
基本は「テンプレートを更新し、スタックを更新する」ことになります。

■削除: 環境の一部を削除したい(パート2)

前述の通り、「テンプレートを更新し、スタックを更新」しようと思います。

まず、現在のテンプレートをテキストエディタで修正(AmazonLinux2のコードを削除)し、同じテンプレート名(=同じファイル名)でS3バケットに保存します。
続いて、「スタックの更新」を実施します。

1.スタックを選択し、「更新する」をクリックします。

f:id:guri2o1667:20200514222045p:plain


2.「既存テンプレートを置き換える」を選択します。

f:id:guri2o1667:20200514222155p:plain


3.「テンプレートの指定」で事前にアップロードしたテンプレートのURLを指定し、「次へ」をクリックします。

4.「スタックの詳細を指定」画面は何も変更せずに、「次へ」をクリックします。

5.「スタックオプションの設定」画面も何も変更せずに、「次へ」をクリックします。

6.「レビュー」画面にて、一番下にある「変更セットのプレビュー」というところに更新内容が表示されるため、確認後、「スタックの更新」ボタンをクリックします。

f:id:guri2o1667:20200514222527p:plain

※こちらの画面からわかる通り、アクション列が「Remove」になっており、対象のインスタンスIDがAmazonLinux2であることがわかります。
(インスタンスIDをクリックすれば、別画面で対象のインスタンスが表示されるため不安が軽減されるかと。)

7.「ステータス」が「UPDATE_IN_PROGRESS」となっているときは処理中のため、「DELETE_COMPLETE」となるまで待ちます。

f:id:guri2o1667:20200514222820p:plain


↓ 処理完了後の画面

f:id:guri2o1667:20200514222850p:plain


8.スタックのステータスは「UPDATE_COMPLETE」になっていることを確認します。

f:id:guri2o1667:20200514223006p:plain


9.実際にAmazonLinux2が削除されているのかを念のため確認致します。

f:id:guri2o1667:20200514223118p:plain



以上です。次回は書ききれなかった内容を書きます。

 

www.guri2o1667.work