AWS Perspectiveを使ってみて

# 概要

先日AWS Perspectiveというソリューションが発表されていました。

https://aws.amazon.com/jp/about-aws/whats-new/2020/09/introducing-aws-perspective/

アカウント内のライブデータからワークロードを可視化し、アーキテクチャ図を作成することができるそうで
本記事は実際に使ってみてできること、およびユースケースを自分なりにまとめたものです。

# AWS Perspectiveってなに
【実態】
一言でいうと、AWSの各種サービスを使って構成された６つのコンポーネントの集合体です。

CloudFrontやAPIGatewayから構成されるWeb UIコンポーネント、
AWS Configやdescribe APIコールを実行しアカウント内のAWSサービスの情報を収集するDiscoveryコンポーネントなどがあります。

詳細なアーキテクチャは以下から確認可能です。
[Architecture overview
](https://docs.aws.amazon.com/solutions/latest/aws-perspective/architecture-overview.html)

【利用するまでに必要な作業】

STEP1: 必要なコンポーネントをAWSで提供されているCloudFormationテンプレートを使って構築する(約15分)
STEP2: スタック作成時に入力したメールアドレスに送られてきたログイン情報を使ってログイン＆パスワードの再設定を行う
STEP3: パスワードを再設定＆リソースをインポートする(約２０分)

※時間は実際にやってみての体感です

詳細な手順は以下AWS公式ドキュメントや他記事でも紹介されていたので、本記事では割愛します。
[Automated deployment](https://docs.aws.amazon.com/solutions/latest/aws-perspective/automated-deployment.html)

# AWS Perspectiveに興味を持った背景

以下のような課題を解決できるのでは...?という期待がありました。

- システム構成図を作成したものの更新するのが面倒
- 手動でAWSリソースが構築されてきたアカウントを引き継いだけど、なにがどう関係しているのかわからない

# 検証編
ここからは以下について検証していきます。

- 先に上げた課題の解決策になりうるのかの確認のために作成方法を調査
- アカウント、リージョン間の連携（気になったので）
- Web UIでのユーザ追加方法（気になったので）

## 【その1】 どうやってアーキテクチャ図を作成するのか、どんな情報が見られるのか
先に挙げた課題の対応策に有効かの判断材料として確認します。

各AWSリソース単位(ex.CloudFormationのxxスタック)やタイプ(ex.CloudFormationのstack(21個))を選択すると
図が描画されるので、それらを組み合わせてアーキテクチャ図を作成することが可能です。

▼CloudFormationのaws-perspectiveというスタックを選択した時のもの
![スクリーンショット 2020-09-25 午前4.26.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413013/ca539203-92c6-82bb-36b4-ec84803028e1.png)

自動でアカウントのリージョン全体に存在するAWSサービスを可視化してくれるわけではなく
リソースを選択していくと関係性ををアーキテクチャ図として可視化してくれる、という印象です。

![スクリーンショット 2020-09-25 午前9.13.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413013/03b7a46a-2094-808b-7cb7-a75a0a060a72.png)
今回は実施しなかったのですが、追加設定を行うとコストを見られるようにすることも可能なようでした。
また、サービスリソースであればステータスも表示されます。

## 【その2】 別のリージョンやAWSアカウントのリソースは検出可能か
対象アカウント、リージョンに追加リソースをデプロイすることで検出可能でした。

▼リージョンを追加する場合
アカウントIDとリージョンを選択してインポートし、
「Deploy Template」もしくは「View Template」からCloudFormationテンプレートで追加リソースをデプロイします。
今回は東京リージョン(ap-northeast-1)を追加します。
![スクリーンショット 2020-09-25 午前4.50.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413013/5017db18-941e-7067-d500-9b3a99174cdb.png)

デプロイ後、Configuration > Accounts&Regionsに該当リージョンが追加されていることを確認し
![account-regionmanager.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413013/59c02ada-28ee-b7a8-f290-fcc1195dad93.png)


東京リージョンのインスタンスを選択すると、アーキテクチャ図が表示されることが確認できました。
![スクリーンショット 2020-09-25 午前5.33.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413013/344caad4-f0dc-7eb2-dd9e-cfb4f6eec310.png)

## 【その3】 Web UIにログインできるユーザは追加できるのか
Web UIのユーザはCognitoで管理されているため
以下のようにCognitoにユーザを追加することで対応可能でした。

![スクリーンショット 2020-09-25 午前5.57.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413013/7d519b06-62c7-24ad-b210-ed40f2265036.png)

## 【おまけ】 Drawioへのexportが可能
生成したアーキテクチャに更に手を加えたい時は、そのままDrawioにエクスポートすることが可能です。

一度exportしてDrawioでimportするという作業をしなくても
ExportタイプでDrawioを選ぶとそのまま以下のようにDrawioに遷移します。
![スクリーンショット 2020-09-25 午前2.31.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413013/6213777f-caa6-f328-c870-d48d694324fb.png)

# 注意事項
- AWS公式ドキュメントにも記載があるのですが、コストが0.797USD/1hr発生します（バージニアリージョンの場合）
- 検出できるAWSサービスはまだ限られているので、詳細は以下ドキュメントで確認すると良さそうです。
    - [Appendix B: Supported resources](https://docs.aws.amazon.com/solutions/latest/aws-perspective/appendix-b-supported-resources.html)

# まとめ
- アーキテクチャ図を作成するに至るまで、リソースのデプロイやインポートでトータル30~40分ほどかかった
- コストが高いので常時稼働しておくよりは必要な時にデプロイして使う、という使い方の方が良さそう
- ユースケースとしてはシステム構成図の作成よりもリソースの関係性の調査に使うほうが有用そうな印象