先日、CloudFormationの新機能としてドリフト認識変更セットが発表されましたので、さっそく試してみました!
「ドリフト認識変更セット」とはなんなのか
ドリフト認識変更セットとは、CloudFormationでのスタック更新時に、スタックの外で行われたリソースに対する変更を認識して変更セットを作成してくれる機能です。
これまでは、「現在(=更新前スタックとして最新状態)の定義」と「更新後の定義」のみを比較して変更セットの作成が行われていましたが、ドリフト認識変更セットでは、そこに「現在のリソース状態」を加えた3種類の状態を加味したうえで変更セットを作成してくれるようになります。
もう少しわかりやすく言うと、「定義の差分を反映する」だけではなく、「定義とのずれを補正する」こともできるようになった、というところですね。
どんな使い勝手なのか、さっそく使用してみましょう。
テスト用リソースを準備する
気軽にドリフトを発生させるために、今回はセキュリティグループで試してみます。
まずは下記のテンプレートをもとにスタックを作成します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
AWSTemplateFormatVersion: 2010-09-09 Description: BLOG Parameters: VPCID: Type: AWS::EC2::VPC::Id RemoteCidr: Type: String Default: 192.168.0.0/24 Resources: SecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupName: BLOG GroupDescription: BLOG VpcId: Ref: VPCID SecurityGroupIngress: - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: Ref: RemoteCidr |
ちゃんと作成されましたね。
IaCの外でリソースに変更を加える
続いて、作成したセキュリティグループをいじっていきます。
実利用はしないセキュリティグループですし、せっかくなので、普段ならまずやらない変更を加えてみましょう。
変更セットを作成する
変更が終わったら、変更セットを作成します。
更新用のテンプレートは下記としました。80/tcpに加え、同じアドレスからの443/tcpも受け付ける変更です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
AWSTemplateFormatVersion: 2010-09-09 Description: BLOG Parameters: VPCID: Type: AWS::EC2::VPC::Id RemoteCidr: Type: String Default: 192.168.0.0/24 Resources: SecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupName: BLOG GroupDescription: BLOG VpcId: Ref: VPCID SecurityGroupIngress: - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: Ref: RemoteCidr - IpProtocol: tcp FromPort: 443 ToPort: 443 CidrIp: Ref: RemoteCidr |
これ以降は動作を比較するために、通常の変更セットとドリフト認識変更セットを比較していきます。
コンソールで「スタックの更新>変更セットを作成」と進みます。
そうすると「変更セットタイプ」を聞かれるので、ここでそれぞれの変更セットを作成します。
あとは手順通りに変更セットを作成しましょう。
変更セットの比較
変更セットの作成が完了すると、変更のサマリーを表示できるようになります。
ドリフト認識変更セットの場合、今までは出てこなかった「ドリフトステータス」が出てくるようになっています。
通常の変更セットも比較用に並べておきます。
そして対象のリソースを選択すると、比較結果をdiff形式と表形式で示してくれます。
ドリフト認識変更セットでは、ドリフトが発生しているところに、これまではなかった黄色での網掛けが表示されます。
また、「ドリフトを表示」をクリックすると、「ここが違ってるよ!」を親切に示してくれます。
(80/tcpはいじってないのですが、出現場所がずれたせいで補正対象になってますね。ここはご愛嬌)
通常の変更セットだと、テンプレートの変更に基づく差分のみが表示されます。
この状態でそれぞれ変更セットを実行してみます。
変更セットを実行してみると...?
変更セット実行後のセキュリティグループの状態は、それぞれこうなりました。
ドリフト認識変更セットでは、手動で入れた設定が検知されたうえで、テンプレートの状態を正としてリソースの修正が行われていることがわかります。
対して、通常の変更セットでは、定義の差分に基づく443/tcpのルールが追加されたのみで、手動で加えた変更はそのままになっていますね。
まとめ
今回は、CloudFormationの新機能である「ドリフト認識変更セット」を試してみました。
「手動でいじったところを覚えてない、でもスタックは継続利用したい」という時に便利そうですね。
ただ、この機能は「意図して加えた変更」もテンプレート通りの内容に補正されることから、稼働中のリソースに適用する場合は十分注意しましょう。
それではまた!
投稿者プロフィール
- 根っこはインフラ屋な古いおじさん。
最新の投稿
AWS2025年12月4日CloudFormationのドリフト認識変更セットを使ってみた(続編)
AWS2025年11月27日CloudFormationのドリフト認識変更セットを使ってみた
AWS2025年11月21日【短篇】AWSバックアップのタグによるリソース割り当てで軽くはまった
AWS2025年11月17日ALBでトラストストアを使ってみた



