[アップデート] AWS CloudFormation の IaC ジェネレータに特定リソースタイプのみスキャンできる「部分スキャン」が追加され、スキャン時間を短縮できるようになりました
いわさです。
AWS CloudFormation には IaC ジェネレータという機能があります。
この機能私はかなり使ってまして、テンプレートの生成もできるのですがスキャンした情報を API から参照して既存環境の調査に使ったりしています。
この IaC ジェネレータ非常に便利な機能なのですが、最新リソースを取得するために AWS アカウント全体のリソースをフルスキャンする必要があり、アカウントによってはスキャン時間だけで 数分以上かかるような場合もあります。
このスキャン時間がネックになる場合はたまにあったのですが、今朝のアップデートでフルスキャン以外の選択肢として「部分スキャン」ができるようになりました。
全リソースの情報は取得できなくなるのですが、多くの場合は特定リソースの IaC 化のみを行いたい場合など取得する必要のあるリソースタイプが絞れている場合が多いと思います。
そういった場合かなり効率的にスキャンができるようになります。
従来
従来は IaC ジェネレータ画面で次のように「新しいスキャンを開始」のボタンがあるだけでした。
アップデート後
アップデート後は次のように新しいスキャン時に「すべてのリソースをスキャン」か「特定のリソースをスキャン」から選択ができるようになりました。
「すべてのリソースをスキャン」は従来のフルスキャンで、「特定のリソースをスキャン」が今回追加された部分スキャンです。
部分スキャンを実行しようとすると、まず対象とするリソースタイプを複数選択します。
選択可能なリソースタイプは最大 100 までとなっており、これ以上のリソースタイプの調査が必要な場合は従来のフルスキャンを使う必要があります。
今回は「AWS::EC2::Instance」を選択しました。
私の環境には EC2 インスタンスが 2 台だけ存在していたのですが、スキャン実行後数秒で完了しました。
上記スキャンタイプを見てみると「部分スキャン」と表示されており、ツールチップにどのリソースタイプが含まれているか確認が出来ますね。
スキャン後のテンプレート作成は従来どおりです。
当然ですが部分スキャンを使った場合はスキャンした対象のリソースのみがテンプレート作成時に選択できます。
クォータの扱いはどうなる?
一点気になったのがクォータです。
この IaC ジェネレータは非常に強力な機能なのですが、24 時間に 10 回まで(リソース数によっては 1 回まで)という厳しめの上限があり、反復的に使いたい場合は少し気をつける必要があります。
今回部分スキャンによってスキャンの負荷が減ったので上限が緩和されているのでは?と思って調べてみました。
ドキュメントに記載がされているのですが、フルスキャンと同一の上限値が部分スキャンに設定されています。
Generate templates from existing resources with IaC generator - AWS CloudFormation より
しかし、フルスキャンと部分スキャンで別のカウントになるのでしょうか?試してみました。
まず部分スキャンで上限の 10 回までスキャンさせます。そうするとそれ以降のスキャンは次のように失敗します。
ここでフルスキャンをしてみるとどうなるのでしょうか。やってみましょう。
なんと実行出来ました。
フルスキャンと部分スキャンのスキャン回数はそれぞれ別のものとしてカウントされているようです。
スキャン回数の上限に達した場合は別のスキャン方法で代替する使い方も出来そうです。
さいごに
本日は AWS CloudFormation の IaC ジェネレータで特定リソースタイプのみスキャンできる「部分スキャン」が追加され、スキャン時間を短縮できるようになったので試してみました。
これはかなり良いですね。
フルスキャンやはりかなり遅いので、テンプレート作成時などは基本的に部分スキャンを使えば良さそうです。
部分スキャンの上限に達した場合や、アカウント全体の調査に使いたい場合はフルスキャンを使う感じが良いでしょうかね。