CloudFormation Drift Detectionを試してみた

CloudFormation Drift Detectionを試してみた:

投稿内容は私個人の意見であり、所属企業・部門見解を代表するものではありません。


はじめに

昨年(2017年)のRe:Inventで発表されたCloudFormation Drift Detectionがリリースされました。
https://aws.amazon.com/jp/blogs/aws/new-cloudformation-drift-detection/

CloudFormation Drift Detectionは、CloudFormationで作成したStackのリソースに対して手動で変更したものを検出して表示する機能です。

手動で変更してしまった後で、変更箇所とは別の箇所を変更するためテンプレートを修正してupdate stackをした場合は、手動で変更した箇所が元に戻ってしまうといったことが起こります。

今回リリースされたCloudFormation Drift Detectionは、変更内容を検知することにより、事前にテンプレートに手動変更の内容を反映することで、意図しない挙動を防ぐことが可能になります。

サポートしているリソースは、以下の通り
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/using-cfn-stack-drift-resource-list.html?icmpid=docs_cfn_console


雰囲気を掴むために動かしてみる


流れ

CloudFormation(以降はcFnと表記)でセキュリティグループを作成する

セキュリティグループのCidrIPを手動で変更する

テンプレートファイルのPortを変えてUpdate Stackする

Drift Detectionする


CloudFormation(以降はcFnと表記)でセキュリティグループ作成する

AWSTemplateFormatVersion: '2010-09-09' 
Resources: 
  SecurityGroup: 
    Type: AWS::EC2::SecurityGroup 
    Properties: 
      VpcId: vpc-26505643 
      GroupDescription: SecurityGroup 
      SecurityGroupIngress: 
      - IpProtocol: tcp 
        FromPort: '80' 
        ToPort: '80' 
        CidrIp: 0.0.0.0/0 


image.png



セキュリティグループのCidrIPを手動で変更する



image.png



テンプレートファイルのPortを変えてUpdate Stackする

AWSTemplateFormatVersion: '2010-09-09' 
Resources: 
  SecurityGroup: 
    Type: AWS::EC2::SecurityGroup 
    Properties: 
      VpcId: vpc-26505643 
      GroupDescription: SecurityGroup 
      SecurityGroupIngress: 
      - IpProtocol: tcp 
        FromPort: '443' 
        ToPort: '443' 
        CidrIp: 0.0.0.0/0 


image.png




image.png


手動で既存のルールを編集してるため新規にルールが作成されいる。cfnの管理するリソース自体はテンプレート通りに変更されている。

注意: 既存のルールを編集すると、編集したルールが削除されて、新しい詳細を含む新しいルールが作成されます。これにより、そのルールに依存するトラフィックは、新しいルールが作成されるまで短時間切断されます。


Drift Detectionする



image.png


左のペインからDriftsを選択する


image.png


セキュリティグループを選択してView drift detailsをクリック


image.png


手動で追加した変更が差分として出力される。

手動で追加したルールを削除する

Detect drift for resourceをクリック


image.png


IN_SYNCになることを確認する。


まとめ

実際の運用では、Update stackを実施するまえにDrift Detectionを実施し差分がないか確認することが想定される。cFn用のパイプラインを実装している場合は、update stack前にDrift Detectionを実施するフェーズを付け加えるんどのユースケースがあるかと思います。

コメント

このブログの人気の投稿

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-04-30 23:37:32 RSSフィード2021-04-30 23:00 分まとめ(42件)

投稿時間:2023-02-05 02:09:04 RSSフィード2023-02-05 02:00 分まとめ(9件)