話題の記事

AWS アーキテクチャー図 構成図を自動生成するソリューションを紹介します

AWSアークテクチャー図 構成図を自動生成しませんか?簡単で役に立つソリューションを紹介します。
2020.09.23

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

こんにちは。
ご機嫌いかがでしょうか。
"No human labor is no human error" が大好きなネクストモード株式会社 の吉井です。

今回は AWS Perspective を紹介します。
Developers.IO を読んでくださっている方々はシステム担当者(アプリもインフラも)が多いと想像しています。
みなさまは詳細度、解像度の高低はあれどアーキテクチャー図を作成していることと思います。

個人的な意見ですが、作成ドキュメントの弱点は ”更新されないことがある” ことにあると考えています。
変更管理を細かく行っている企業ならそんな心配は要らないかもしれませんが、大抵の場合システム稼働日数が増えれば増えるほどドキュメントは置いてけぼりになりがちです。
それはある意味理解ができてドキュメントは無くてもシステムは動くので、システム構成変更時のドキュメント更新の優先度が下がって忘れてさられてしまうこともあるかもしれません。

システム構成を正しく理解するためにも、社内外新規参画メンバーへの説明のためにもやはりアーキテクチャー図の最新化は必要です。
AWS Perspective はアーキテクチャー図を自動生成するソリューションです。

事前準備

AWS Perspective はサービスではなく自前で構築するソリューションです。
自前で構築といっても CloudFormation テンプレートが提供されているのでご安心ください。

管理者アカウント

多くのリソースを作成しますので、AdministratorAccess が付与されている IAM ユーザー/ロールをご用意ください。

Service-linked role

IAM ロール「AWSServiceRoleForAmazonElasticsearchService」が必要です。
テンプレートで作成されるので存在しない場合は気にしなくて大丈夫です。

すでに同ロールが存在する場合は、ポリシー「AmazonElasticsearchServiceRolePolicy」がアタッチされていることを確認します。

AWS Config

Config を有効にします。
Config 設定画面で以下のチェックがオンであることを確認します。

  • このリージョンでサポートされているすべてのリソースを記録します
  • グローバルリソース (AWS IAM リソースなど) を含める

コスト

このソリューション自体が 0.797 USD/hr の費用が発生します。
※デプロイするリージョンによって異なります。上記はバージニア北部リージョンの場合です。

東京リージョン月間だと 540 USD を超えると思います。
常時起動しておくか、オンデマンドでデプロイするかは判断ください。

ソリューションのデプロイ

以下の公式サイトの中程右側に Launch in the AWS Console というボタンがあります。
AWS マネジメントコンソールに管理者でログインした状態からこのボタンをクリックします。
AWS Perspective

CloudFormation スタック作成の画面に移ります。
おそらくバージニア北部リージョンになっているはずなので、マネジメントコンソールの右上リージョン選択リストからお使いのリージョンに変更します。

パラメータ入力の画面では以下の通り入力します。

設定項目 設定値 説明
AdminUserEmailAddress ご自身のメールアドレス メールアドレス宛にWebサイトの仮パスワードが送信されます。
AlreadyHaveConfigSetup Yes or No 前述した AWS Config の設定が完了していれば Yes。
CreateElasticsearchServiceRole Yes or No 前述した IAM ロール「AWSServiceRoleForAmazonElasticsearchService」が存在していれば No。
2020/10/02修正 「存在していればYes」となっていましたが正しくは No でした。ご迷惑をおかけしました。
CreateNeptuneReplica Yes or No Neptune のレプリカを行うか? ほとんどの場合は不要だと想います。
NeptuneInstanceClass インスタンスクラスの選択 アーキテクチャー図描画に必要なデータを保管する Netptune のサイズ。こだわりがなければデフォルトのまま。
OptOutOfSendingAnonymousUsageMetrics No 匿名のメトリクスを AWS Perspective へ送信するかしないか。フィードバックだと思われます。

パラメータを入力し次へ次へと進めていくと、スタックが実行されます。
おおよそ20~30分くらいで完了します。

ソリューションの利用

しばらくすると「Welcome to AWS Perspective」という件名のメールが届くはずです。
そこには仮のログインパスワードが記載されています。

ネストされたスタックの一つに「aws-perspective-nnnnnnnnnnnn-ap-northeast-1-CloudFrontDistribution-xxxxxxxxxxxxx」というスタックがあります。
こちらの出力に CloudFront の URL が表示されます。この URL をクリックします。

ログイン画面が表示されます。メールに記載されている ID とパスワードでログインします。

ログイン後はすぐに新しいパスワードを求められます。
英数記号を含めたパスワードを入力します。

verification code がメールで届きます。
確認しメールに記載のコードを入力します。

軽い初期設定を行います。
この画面を見る限り、マルチリージョン・マルチアカウント対応のようです。これは嬉しいですね。中央アカウントで管理できます。

初期設定が終わるとインポートが始まります。インポート完了までに10分程度かかります。(リソース数によって異なります)
インポート後、左メニューにリソースが表示されました!!!
ここのリソースを選択すると右側キャンバスにアーキテクチャー図が表示されます。

描画した図はファイルとしてエクスポートもできるようです。

フィルターも可能です。
タグがうるさかったのでタグをフィルターしました。

アーキテクチャー図

アーキテクチャー図を作成してみました。
Lambda、Elasticsearch、Neptune を表示しています。

シンプルに EC2 まわりも図にしてみました。

ソリューションのクリーンアップ

CloudFormation で「aws-perspective」という名前のスタックを削除すればクリーンアップ可能です。
対象の S3 バケットが空でないとクリーンアップできないのでご注意ください。オブジェクトと一緒にバージョンも消し忘れないようにご注意ください。

まとめ

これは使えそうです。
現物を見て図を描写しているので抜け漏れは防げそうですし、使い方によっては構築後チェックにも活用できると思います。
クラスメソッドではアーキテクチャー改善の相談を頂戴することがありますが、これを使えば現存ドキュメントをもらうことなくアーキテクチャーが確認できるので両者にとってメリットになりそうです。

参考

AWS Perspective
AWS Perspective Implementation Guide

以上、吉井 亮 がお届けしました。