CloudFormatonのドリフト検出の精度はコードで決まる

CloudFormatonのドリフト検出の精度はコードで決まる

Clock Icon2022.01.12

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、AWS 事業本部コンサルティング部のたかくに(@takakuni_)です。

今回は CloudFormation の「ドリフト検出」の仕様についてご紹介したいと思います。

結論

  • ドリフト検出は、「スタックで記載しているプロパティ」と「実際のリソースの設定値」の差異を検出する機能
  • ドリフトで検出させたい設定値はデフォルトと同一でも明示的に指定が必要

ドリフト検出とは

スタックによって作成されたリソースの変更点を検知する機能になります。

参考

実践

事前準備

今回は以下のようなコードを準備しました。EC2 インスタンスを作成するコードになります。

ImageIdInstanceTypeに加え、DisableApiTerminationをドリフト検出する対象として追加しました。

AWSTemplateFormatVersion: '2010-09-09'
Resources:
  EC2Instance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: 'ami-0218d08a1f9dac831' # Amazon Linux2 (ap-northeast-1)
      InstanceType: 't2.micro'
      DisableApiTermination: 'false'

コード記述範囲内の変更

DisableApiTerminationを手動で変更してみましょう。

ドリフト検出を行うと以下のように差分が検出されました。

コード記述範囲外の変更

ここからが本題です。

コードで記述されていないタグを追加してみます。

再度、ドリフト検出を行いましたが手動変更した部分はコードに記述されていないため検出されていません。

つまり、ドリフト検出の対象はコードで記載したプロパティとなります。

まとめ

冒頭でも取り上げましたが、大事なことなのでもう一回取り上げます。

  • ドリフト検出は、「スタックで記載しているプロパティ」と「実際のリソースの設定値」の差異を検出する機能
  • ドリフトで検出させたい設定値はデフォルトと同一でも明示的に指定が必要

コードでリソースの変更管理を行いたいお客様となれば、「ドリフト検出」は欠かせない要素となります。

しかし、上記のような落とし穴があるので「どの設定値」を変更管理するかヒヤリングするとスムーズに開発が進むかと思います。

この記事が少しでもお役に立てば幸いです。

以上、AWS 事業本部コンサルティング部のたかくに(@takakuni_)でした!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.