Former2 と CloudFormation の話 #AWS

TL; DR

Former2 というツールを使うと、既に構築済みの AWS リソースの設定情報をエクスポートできるよ。

これを、AWS の CloudFormation に喰わせば、インフラを簡単に再構築できるんだ。

ふむ……?(それのなにが便利なんだろう)

Former2

ナイスな導入

AWS には、たーせるくんのようにインフラの素人でも簡単にネットワークを構築したりサーバを立てたりできる GUI が整っているでしょ。
いわゆるマネジメントコンソールってやつだね。

そうそれ。

ただ、場合によってはマネジメントコンソールではなく、設定ファイルからリソースを一括で自動作成する方が早いこともあるんだよ。

さらば憂鬱すぎるやり直し作業

ところで、キミのその設定、なんかおかしくない?

ああああ…… CloudWatch で監視設定したら、アラーム名をタイポしてしまった……。

一度設定したアラーム名はもう変更できないから、もう一度はじめからやり直しになっちゃう……。

ドジっ子さんめ。 再作成が1つや2つならいいけど、10個、20個になるとキツいね。

マネジメントコンソールの GUI をチマチマ操作する作業を何十回も繰り返すのは切ない。

やる気なくすわー。

せめて現状の設定内容をテキストにエクスポートして、アラーム名を grepグレップ で文字列置換して、再度インポートできればラクなのに。

それなら Former2 を使えば AWS リソースの設定内容をエクスポートできるよ。

なるほど!

エクスポートした設定はどんな形式になるの?

YAMLヤムル という一種のテキスト形式だね。

テキストエディタで編集もできるし、AWS の CloudFormation というインフラ自動化サービスを使えば同じ設定のリソースを一括作成できる。

それはすごい。

まさしく僕が求めていたものだ。

Former2 は、サードパーティ製ツール

ちなみに Former2 は公式ツールではなく、サードパーティ製のツールなんだ。
公式じゃないのか……。
一応、公式にも CloudFormer というツールがあるにはあるけど、ずっとベータ版だし、もうアップデートされる見込みはないし、公式が Former2 を使えと言っているくらいだし……。

必要なのは、ReadOnlyAccess ポリシーを持つ IAM ユーザ

Former2 はものすごく直感的に使えるので、改めてここで手順を説明するほどでもないんだけど、注意点が2つあるんだ。

一つはリージョンを間違えないこと、そしてもう一つは実行用の IAM ユーザを用意する必要があること。

ユーザ……?
Former2 を使うには、ReadOnlyAccess という権限を持った IAM ユーザが必要なんだ。
既存のユーザを使うのはダメなの?
アクセスキーとシークレットアクセスキーを委ねてしまうし、不運に不幸が重ならないとも限らないので、使い捨ての IAM ユーザを用意した方がいいね。

スタックを削除すると、作成したリソースも道連れになる

CloudFormation を使ってリソースを作成するには、最初にスタックというものを作る必要があるんだ。
スタックは、リソースを作り終えたあとは消していいの?

それを消すと、リソースも一緒に消えるよ。

もし、スタックを消してもリソースを残したい場合は、設定ファイルのリソースのところに DeletionPolicy 属性を明示的に設定しないとダメだよ。

AWSTemplateFormatVersion: '2010-09-09'
Resources:
  myS3Bucket:
    Type: AWS::S3::Bucket
    DeletionPolicy: Retain
まぁ、せっかく CloudFormation の管理下にあるリソースを、管理から外してしまうのはどうなんだろ。

設定ファイルにはインスタンス ID とかがベタで書かれていたりするので、いまいち長持ちしない気がするけどね。

もともと手作りしたリソースだったら、DeletionPolicy 属性を Retain にして、スタックは消しておいた方が地球に優しいと思う。

今日のまとめ

既存のリソースをエクスポートしたいときは Former2 を使おう。

マネジメントコンソールで同じ設定作業を何度も繰り返しているなーと思ったら、自動化を検討した方がいいね。

マネジメントコンソールの手順書を作って、「この設定を100箇所に適用して」と人にお願いするくらいなら、テンプレート化して自動生成して機械にやらせる方がみんな幸せになりそう。

単純な定型作業はできるだけ自動化して、僕たちは開発に集中したいよね。

それでは今日はこの辺で。

ではでは。

Copyright (c) 2012 @tercel_s, @iTercel, @pi_cro_s.