Cloudviz.io を利用してAWSインフラ環境を可視化し、構成図の出力を自動化してみる

記事タイトルとURLをコピーする

概要

当エントリーでは、Cloudviz.io というAWS環境の構成を可視化するSaaS製品とその活用方法についてご紹介します。

内容や画面描画については執筆時点のとなり最新のものと異なる可能性がある点ご注意ください。

Cloudviz.ioとは

cloudviz.io

SaaSで提供されているAWS可視化ツールの1つであり、以下AWSオフィシャルのシンプルアイコンの頁にて、アーキテクチャアイコンを含む3rdパーティの構成描画ツールおよびダイアグラム作成ツールとして紹介されている製品の1つとなります。

aws.amazon.com

個人的にですが、構成可視化をポチっと出力した直後の状態の図を比較した際に、直感的(現場で通用するレベル)であった製品の一つになります。

オートメーション(自動化)処理の作成件数は、baseライセンスでは3つまでという成約がありますが手動でやる分には、対象AWSアカウントは無制限で可視化できます。

PayPalかクレジットカードの登録が必要となりますが、10日間無料トライアルが可能です。

(参考) Cloudviz.ioの 価格

cloudviz.io

Cloudviz.io の魅力

AWSに特化し、シンプルで必要最小限の機能を低価格で利用できるというのが一番の魅力です。

昨今は

  • マルチクラウド対応
  • セキュリティグループのルール(FWのポリシー相当)の可視化
  • コンプライアンス準拠のチェックやレポート機能

...等を備えた所謂多機能(で費用はそれなりに高額)な製品も何点か存在します。 この手の製品の導入を検討する際には、コストと機能のバランスを見て選択するのが良さそうです。

主な機能

続けて、Cloudviz.ioの主な機能について見ていきます。

機能1.AW環境のインフラ構成の可視化(手動)

ざっくり、Cloudviz.io側に登録したAWSアカウントの番号と可視化対象のリージョンを選択し、[Generate]をポチっとするだけで、以下の様にインフラ構成図を描画できます。

f:id:swx-tamura:20210913094745p:plain

可視化がサポートされるリソースについては以下FAQを参照してください。

cloudviz.io

処理の所要時間

指定リージョン内のリソースの数などの所謂ボリュームによるところがありますが個人の検証環境は初回でも15sec程度で完了し、比較的大きい規模の検証環境でも1minかからず程度でした。余程大規模な本番環境でない限りは、さほど気にならない程度と捉えて問題ないでしょう。

(補足) 処理としてAWSマネジメントコンソールの代わりに、DescribeやListのAPIを叩いているような事をしているだけなので、スキャン中に対象リソースのワークロードに対し負荷を与えるような事はありません。

描画された後の画面操作について

出力された図をベースにレイアウトを自分で変更したり、リソースを追加したり、線を引いたり注釈を加えたりといった編集および保存も可能です。

ただし、それがその図の静止点となります ので注意が必要です(※よくある重要な疑問 参照)

図のエクスポートは PNG,SVG,PDF,JSON の形式をサポートしています。

(参考) 描画が完了した図に対して線を消したり、textを消したり、Connection Lines を消したりといった事がチェックボックスから操作可能です。

f:id:swx-tamura:20210910093239p:plain

細かい描画設定の調整について

Generateの画面では各リソースを描画するか否かのチェックボックスと、更に詳細に開くと Element Settings が各項目で存在しています。

例えばEC2インスタンスの場合は、何を文字列として描画するか (ネームタグ or インスタンスID) や文字色や文字数の制限やらEC2インスタンスのアイコンの間隔やらサブネットの枠との間隔等の細かい内容を指定出来ます。

このようにお好みで指定した内容は、ユーザーのカスタムプロファイルとして保存が可能です。

f:id:swx-tamura:20210910093444p:plain

他にも、EC2 instance <-> Route/IGW Connection といった線を描画するか否かを設定出来たりと細かいオプションはそれなりにありますので、実際に触って好みの構成図が描画出来るか否かについて試用期間内に判断するのが良いでしょう。

よくある重要な疑問

レイアウトを自分好みに変更 (例えばサブネットの枠を移動したり、サイズを弄ったり) した後に、そのレイアウトを維持したまま追加したリソースを自動描画してくれるか?についてですが、執筆時点では不可のようです。

[Sync Account]をすることで文字ベースではリソース情報が更新されますが、描画まではされません。 つまり、再度 [Generate]すると 初期のレイアウトで描画され直す ような動作イメージとなります。 従って、自身でレイアウト変更して図を仕上げる場合は、環境その時の静止点の素材ぐらいに捉えるのが良いのかもしれません。

同様の構成可視化ツールも何点か触ってみましたが、概ね同じ挙動でしたので技術的に難しいところが多くあるのだと思われます。

だからこそ、 描画(Genarate)した直後の状態が如何に見やすく直感的なものとなっているか がとても重要になってきます。

機能2.可視化処理の自動化

baseライセンスの場合、3つまでオートメーションプロファイルという名の自動化処理を登録出来ます。

ここで出来る事はざっくり、可視化した情報をお好きなフォーマットで指定のS3バケットに定期出力する処理となります。

項目 内容 備考
Profile Name 当プロファイルに適した好きな名前を登録 -
AWS Account 登録設定済みの AWSアカウントをプルダウンから選択 -
Region 可視化したい AWSリージョンを選択 -
Generation Settings Profile Cloudviz.io が用意している構成レイアウトのプロファイルを 執筆時点プロファイルは、Cloudviz.ioが用意しているレイアウトが2種類程度、v2は現在のAWSシンプルアイコン、v1は旧アイコンで形4つ存在。Enterpriseプランで別途お見積り要開発と思われますが、カスタマープロファイルも作成可能
File Storage アウトプットの格納先S3バケットを指定 [ ] Keep one version of generated filesにチェックを入れると、S3バケットで常に1つのファイル(オブジェクト)が更新され続ける動作をし、常に最新の情報を外部ツールから描画したい場合に適したモードになります
[ ] Snaptshot を より 現時点の構成を指定 S3バケットに snapshots/というプレフィックスで json ファイルがアウトプットされます (コンプライアンスチェック用途での出力が主な目的になると思われます。
Generation Frequency 実行頻度を指定 3,6,12時間間隔、日次、週次、月次 から選択可能 (項目にない細かい指定は不可)
File Generation Type アウトプット形式を選択 構成図のデータとしてはPNG,SVG,PDF,JSON
ドキュメントとしては WORDを選択可能

実際にオートメーション設定で指定し出力したS3バケットには 乱数のようなプレフィックス配下に更に以下のプレフィックスで切られます(Snapshots は有効化した場合のみ)

% aws s3 ls s3://XXXXX-cloudviz/8bb0317822deb45813531c440971a5f78864d384/
                           PRE generated-documents/
                           PRE snapshots/
%

それぞれの配下に更に出力日時のプレフィックスが切られ、以下のようなファイルが指定した分だけ出力されます。 (同ファイルを上書き更新設定の場合は、直下に出力)

[ProfileName].[指定形式拡張子]
(例) ProfileNameが Automationtest で SVG形式を出力した場合は Automationtest.svg となります

例えば、構成情報を日次でS3バケットに蓄えておく事で、いついつ時点の構成情報およびパラメータシート(ドキュメント)と比較確認で利用出来たり、コンプライアンスやら監査の観点で役に立つ事もあるかもしれません。

機能3.AWSに特化した作図ツール

おまけ程度と捉えて良いもしれませんが、AWSに特化した作図ツールとしても利用する事が可能です。

Shapes タブを押下するとよくある作図ツールのような画面となり、左ペインからお好みの内容をドラッグ&ドロップしたり、サイズを変更したりコメントを付けたりといった事が可能です。(日本語も可)

f:id:swx-tamura:20210910094714p:plain

まっさらな状態からの作図も可能ですが、テンプレートも用意されています。 活用する事で、インフラリソースの構成図だけに限らず論理的な処理の作図でも役に立つ場合がありそうです。

f:id:swx-tamura:20210910111435p:plain

やってみる

実際に、初期状態に近いAWS検証環境を可視化してみます。

1.Cloudviz.ioに可視化対象AWSアカウントの登録

Cloudviz.io の Settings画面にて左ペイン Manage AWS Accounts -> [Add AWS Account]を押下

f:id:swx-tamura:20210910112215p:plain

登録手順が出てきますので指定されている通り、可視化したい対象AWSアカウント内にIAMロール(クロスアカウントロール)を1つ作成 (Cloudviz.ioのAWSアカウントから必要最小限の参照のみ許可する内容) します。

f:id:swx-tamura:20210910112433p:plain

IAMロールで利用する Cloudviz.io指定のIAMポリシー

cloudviz.io

作成したIAMロール(クロスアカウントロール)

※ cloudviz-s3というポリシーも画面に写っていますが、自動化処理でS3バケットへ出力する際に必要な許可設定となります (後に必要な場合のみ設定を加える形で問題ありません)

f:id:swx-tamura:20210910113000p:plain

Cloudviz.io の上のポップアップ画面にて対象AWSアカウントNoと作成したIAMロールのARNを指定し、 [Save AWS Account]を押下すると、登録が完了します。

f:id:swx-tamura:20210910113532p:plain

2.構成図を描画してみる

初回アクセスの場合は、まずSync Accountを実行する必要があります。

左ペインの AWS Inventory タブにて 可視化したい対象の AWSアカウントNo対象リージョン をプルダウンから選択し、[Sync Account]を押下

f:id:swx-tamura:20210910114239p:plain

左ペインの下に存在するリソース情報が描画されるので、[Generate] を押下

f:id:swx-tamura:20210910114744p:plain

[Generate Diagram]を押下
(必要な場合、細かい描画調整はこちらの画面で実施)

f:id:swx-tamura:20210910114933p:plain

ポチっとすると、数秒後に現時点の構成情報が描画されます。

最低限の初期設定(CloudtrailやConfigを有効化したり)を終えたほぼ初期状態のAWSアカウントを可視化した図は以下の通りです。 このようにデフォルトVPCが最初からこのように存在している事が判ります。

f:id:swx-tamura:20210910115406p:plain

被りにくいよう配慮されたネットワークCIDRとかは頭に入っているかもですが、3つのAZがSubnetが分散配置されている事とかは割とAWSマネジメントコンソールだけを触っている方だと最初は気が付きにくい印象があります。このようなデフォルトVPCのシンプルな図だけでも可視化の威力を感じる方は一定数いらっしゃるのではないでしょうか?


...自分でやっておいてアレですが、ちょっとこれだけだと味気ないので他の環境で可視化したものも紹介します。 全て、[Generate]をポチっとして出力したままの状態のものです。

(例1.)自分の検証環境の全体像

VPCに属さないリソースは下に整列して描画される形となります。

f:id:swx-tamura:20210910121703p:plain

(例2.)とある社員の検証環境

AWS Fargateのコンテナが多数ある検証環境のVPCのみをピックアップしてみました

f:id:swx-tamura:20210910122920p:plain

(例3.)とあるPJの検証環境

Amazon WorkSpacesの検証用途で利用しているVPCのみをピックアップしてみました

f:id:swx-tamura:20210910122411p:plain

3.描画された内容を、Cloudviz.ioの画面から確認してみる

Cloudviz.ioのライセンス保有者の特権として、上で描画されたな内容のアイコンは選択すると以下画面のように右ペインが現れて詳細情報(メタデータ)を確認する事が出来ます。

例えば、サブネットの枠を選択すると以下のようにマネジメントコンソールで描画される詳細情報に近い情報が表示されます。

f:id:swx-tamura:20210910124141p:plain

ここで青文字となっているIDのリンクを押下すると、AWSマネジメントの当該リソースまでジャンプ出来るので環境の管理者視点だと大変便利です。

もし導入する際には、この手の役割を担う方には是非ライセンスの割当を検討したいところです。


私自身も検証環境を初めて可視化した際に、過去の検証で作成し消し忘れていた無駄リソース (具体的に Private Link やら Amazon FSx for Windows 関連リソースやら) を見つけました。直様Cloudviz.ioのリンクからアクセスして、どのような用途で作成したものかを確認し、削除という対応を実施出来ました。

「AWSマネジメントコンソールだけだと気が付きにくいが、構成図として描画されたらすぐ気がつけるようなものは意外とあるものだな」と、消し忘れた人間の視点で感じました。

こういう無駄リソースの検知なり是正で役立てられれば環境によっては安価Cloudviz.ioライセンス費用は、すぐにペイできる事でしょう。

4.ドキュメントとして出力してみる

[Ganarate]ボタンを押下した際のポップアップの画面下にて Create New Document を選択し、[Generate Document] を押下すると 構成図 + 各項目のパラメータシートのような構成の資料を Microsoft OfficeのWord(.docx)ファイルとして出力可能です。

f:id:swx-tamura:20210910091118p:plain

サンプルとしては以下のような感じです。

最初にサマリーとして全体の構成図やリソース統計が表示され、続けて各VPC毎に各リソースの詳細、VPCに依存しない各サービスのリソースの詳細が、パラメータシートのような見た目となっています。

f:id:swx-tamura:20210910125616p:plain

f:id:swx-tamura:20210910125627p:plain

このように、今現在のAWS環境の構成情報および詳細パラメータを簡単に出力する事が出来るというのは この手の情報が求められた際に活用出来れば品質向上だけでなく、労力の大幅な削減に繋がります。

5. 自動化してみる

オートメーション設定/指定項目については上の機能にて紹介したので詳細は割愛します。

今回は、以下設定を加えてみました。

  • 3h毎に特定SVGファイルをS3バケットへ出力する
  • 出力先のS3バケットで当該オブジェクトを公開する
  • 社内で利用している Confluence のページにて当該オブジェクトをIFrameで埋め込む

Settings -> Automation Profiles -> [Create Automation Profile] を押下

f:id:swx-tamura:20210910130624p:plain

希望する出力設定を指定

f:id:swx-tamura:20210910130641p:plain

S3バケットへ出力する場合は、ポリシーを追加する必要があるので対応します。

cloudviz.io

ここまでで、指定S3バケットに SVGファイルが3h毎に上書き出力されるようになりましたので バケットを公開(最小限に絞る事をおすすめします)し、Confluenceの頁でIFrameで S3バケットのオブジェクトを埋め込んでみました。

f:id:swx-tamura:20210910132550p:plain

これで描画元のファイルは3h毎に更新されるので、常に最新に近いAWS環境の構成図を、Cloudviz.ioのライセンス有無問わず関係者全員で共有することが出来ます。

勿論ドキュメント(Microsoft OfficeのWordファイル)も自動出力が可能なので、常に最新に近い状態の構成情報およびパラメータ情報をいつでも顧客がダウンロード出来るような仕組みも簡単に作れそうです。

まとめ

Cloudviz.ioを利用した可視化についてご紹介しました。

ポチっとするだけでこの品質の最新の構成図やパラメータがすぐ出せて自動化も出来る事にとても魅力を感じた方も一定数いらっしゃると思います。

というのもこの手のインフラ構成情報の手動維持管理は、古の時代から運用に携わる多くの方が頭を悩めてきたテーマの一つであるからです。

昨今はクラウド移行に伴い、インフラもコードで管理され、物理図の作成維持管理する機会は減ってきたかもしれませんがその分、論理的な図 (通信やら処理のフロー)を作成維持管理する機会が増えてきたようにも思えます。

今後はインフラのリソースの構成図 (オンプレミスでいう物理図)のようなものは、この手のツールに全て寄せてしまい、浮いた時間を価値あるタスクへ割り当てるというのも良い考え方かもしれません。