Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

CloudFormation ドリフト検出の検出パターンを調べてみた

More than 1 year has passed since last update.

スタック構成後に行われた手動変更を検出する CloudFormation ドリフト検出が発表されました。
実際どういう変更を検出するのか、EC2 リソースに対していくつかパターンを試してみました。
2018年12月時点です。

新 – CloudFormation ドリフト検出 | Amazon Web Services ブログ

パターン検証用 CFn テンプレートサンプル

AWSTemplateFormatVersion: 2010-09-09
Resources:
  SecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: SampleSecurityGroup
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 22
          ToPort: 22
          CidrIp: 0.0.0.0/0
  Instance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: ami-0a2de1c3b415889d2
      InstanceType: t2.micro
      SecurityGroups:
        - !Ref SecurityGroup
      KeyName: Keypair
      Monitoring: !Ref AWS::NoValue
      Tags:
        - Key: Sample
          Value: test tag sample

1. 設定した値の変更は検出するか?

A. 検出する (NOT_EQUAL)

期待通り設定値が同値ではない(NOT_EQUAL)となります。

t2.micro => t2.nano 変更 = 検出(NOT_EQUAL)

2. 設定していない値の変更は検出するか?

A. 検出しない

未設定のデフォルト値を変更しても検出されません。

Monitoring 未設定 => 有効化 = 検知せず
Tags: に key: Name 新規追加 = 検知せず

3. 設定したリストへの値の追加は検出するか?

A. 検出する (ADD)

設定済みのリスト値に項目を追加すると検出(ADD)となります。

SecurityGroupIngress に http:80 追加 = 検出(ADD)

4. 設定したリストへの値の削除は検出するか?

A. 検出する (REMOVE)

設定済みのリスト値の項目を削除すると検出(REMOVE)となります。

Tags: Sample 削除 = 検出(REMOVE)

5. AWS::NoValue 値の変更は検出するか?

A. 検出しない

明示的なデフォルト値の AWS::NoValue の変更は検出するかと思っていましたが、検出しませんでした。

Monitoring: !Ref AWS::NoValue => true 変更 = 検知せず

6. EC2 ステータスの変更は検出するか?

A. 検出しない

インスタンスの状態は検出対象外です。

まとめ

試した感じだとデフォルト値の変更は検知しないので、検出したい項目は明示的に値を入れるべきという感じです。

kzkiq2nd
よろしゅう
lifull
日本最大級の不動産・住宅情報サイト「LIFULL HOME'S」を始め、人々の生活に寄り添う様々な情報サービス事業を展開しています。
https://lifull.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away