cloudformation で作成したリソースは、作成された後は、 cloudformation とは無関係に操作することができます。

なにかしら急ぎの対応が必要だったので、その場に限り(後で戻す前提で)一時的にリソースの状態を変更することは、運用していく中で発生しうるかと思っています。

そのように行ったリソースに対する変更、ないしそれを元に戻す操作を行った後に、対象のリソースが cloudformation template
の状態に戻っているかどうか確認したいな、と思いました。

### 質問

  * aws cloudformation の stack に対して、そのリソースたちが stack の template から乖離しているかどうかの検知を行うための方法/ツールなどはありますでしょうか。
CC BY-SA 4.0
2018-07-08T08:23:05.040
45417
2018-07-20T13:31:20.553
754
question
aws aws-cloudformation
cloudformation で、実リソースの template からの乖離の検知
そのものズバリのツールなどは確認できませんが、アイデアとしては構成可視化ツールを使って CloudFormation
のデザイナーと比較するという方法が考えられるかと思います。

  * Cloudcraft – Draw AWS diagrams  
<https://cloudcraft.co/>

  * duo-labs/cloudmapper: CloudMapper helps you analyze your Amazon Web   
Services (AWS) environments.  
<https://github.com/duo-labs/cloudmapper>

  * AWS CloudFormation デザイナー とは - AWS CloudFormation  
<https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/working-
with-templates-cfn-designer.html>

他には API でスタックのリソース一覧を取得して差分を確認するという方法もあるかもしれません。

  * describe-stack-resources — AWS CLI 1.15.59 Command Reference <https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-stack-resources.html>

補足ですが CloudFormation
は[ベストプラクティス](https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/best-
practices.html#donttouch)にもあるように手動変更をオススメしないようです。

> スタックを起動した後、AWS CloudFormation コンソール、API、または AWS CLI
> を使用して、スタック内のリソースを更新します。スタックのリソースを AWS CloudFormation
> 以外の方法で変更しないでください。変更するとスタックのテンプレートとスタックリソースの現在の状態の間で不一致が起こり、スタックの更新または削除でエラーが発生する場合があります。

実質的な dry-run
である変更セットもありますし、個人的にはスタックの更新/削除エラーの可能性を考えると小さな変更でもテンプレート経由の方がリスクが低くていいのかなと考えています。

  * 変更セットの作成 - AWS CloudFormation  
<https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/using-
cfn-updating-stacks-changesets-create.html>
CC BY-SA 4.0
2018-07-15T21:30:02.867
46643
2018-07-15T21:30:02.867
24793
45417
answer
AWS Config でしたら リソースが変更された場合に SNS を使って 通知したり、管理コンソール上から履歴を参照することが出来るので
お望みのものに近い気がします。また、CloudFormation template の中で、AWS Config の設定を記述することも出来ます。
CC BY-SA 4.0
2018-07-20T13:31:20.553
46793
2018-07-20T13:31:20.553
5008
45417
answer