EC部の荒井です。最近は半袖でも過ごせそうな暖かい日があったかと思えば、雪が降るくらい寒い日もあるなど地球に振り回されています。
"AWSでのワークロード検出"について調査する機会がありましたので、使い方等を紹介させていただこうと思います。
はじめに
AWS でのワークロード検出 (旧称: AWS Perspective) は、AWS クラウドのワークロードを可視化するツールです。この AWS ソリューションを使用し、AWS からのライブデータに基づいて、ワークロードの詳細なアーキテクチャ図を作成、カスタマイズ、および共有できます。
つまるところ、AWS 上のアーキテクチャ図(構成図)を自動で生成してくれるツールのようです。
この業界で働いている方でしたら、構成図を作成する機会が多少なりともあると思います。
私だけかもしれませんが、構成図を作るときオブジェクトの掴み損ないやレイヤーの上下等で結構苦戦することも多いので、これを使うといい感じになるのかなと期待しています。
実際に試してみる
1. CloudFormation テンプレートのダウンロード
AWS でのワークロード検出 | AWS ソリューション | AWS ソリューションライブラリ
こちらのページの右下の CloudFormation テンプレートをクリックするとダウンロードできます。
また、実装ガイドを表示をクリックすると AWS が用意しているガイドが pdf 形式で確認できますので、ご確認頂くのが良いかと思います。
2. 環境のデプロイ
先ほどダウンロードしたテンプレートを利用してスタックを作成します。
実装ガイドにも記載されている通り、パラメータを設定する箇所が結構あります。
AdminUserEmailAddressに後々利用する認証情報が送られてくるので、有効なメールアドレスを入力しましょう。
パラメータ | デフォルト | 説明 |
---|---|---|
AdminUserEmailAddress | <入力が必須> | 最初に作成するユーザーの電子メールアドレス。一時的な認証情報は、この E メールアドレスに送信されます。 |
AlreadyHaveConfigSetup | No | デプロイ用アカウントに AWS Config が既に設定されているかどうかの確認。詳細については、「前提条件」を参照してください。 |
AthenaWorkgroup | primary | コスト機能が有効な場合に、Amazon Athena クエリの発行に使用されるワークグループ。 |
CreateNeptuneReplica | No | 別のアベイラビリティーゾーンで Amazon Neptune のリードレプリカを作成するかどうかを選択します。Yes を選択すると、回復力は向上しますが、このソリューションのコストは増加します。 |
CreateOpenSearchServiceRole | Yes | Amazon OpenSearch Service にリンクされたロールを既に持っているかどうかの確認。詳細については、「前提条件」を参照してください。 |
NeptuneInstanceClass | db.r5.large | Amazon Neptune データベースをホストするために使用するインスタンスタイプ。ここで選択する内容は、このソリューションを実行するコストに影響します。 |
OpensearchInstanceType | m6g.large.search | Amazon OpenSearch Service のデータノードに使用するインスタンスタイプ。選択したインスタンスタイプは、このソリューションの実行コストに影響します。 |
OpensearchMultiAz | No | 複数のアベイラビリティーゾーンにまたがる Amazon OpenSearch Service クラスターを作成するかどうかを選択します。Yes を選択すると、回復力は向上しますが、このソリューションのコストは増加します。 |
CreateAPIGatewayCloudWatch LogsRole | Yes | Yes に設定すると、このソリューションはロールを作成し、既存の APIGatewayCloudWatchLogsLogsRole プロパティを上書きします。既存のロールセットが既にある場合は、No に設定してください。詳細については、「前提条件」を参照してください。 |
OptOutOfSendingAnonymousUsageMetrics | No | AWS への基本的な使用状況メトリクスの送信を停止するかどうか選択します。 |
この中で料金面に関わる、特に気をつけるべきパラメータは以下になります。
- NeptuneInstanceClass (Neptune インスタンスタイプ)
- OpensearchInstanceType (OpenSearch Service インスタンスタイプ)
- CreateNeptuneReplica (Neptune リードレプリカの作成)
- OpensearchMultiAz (OpenSearch Service マルチAZ 配置)
デフォルトではシングルAZ配置/リードレプリカは無しとなっており、軽く試すくらいならこのままで良いかと思います。
インスタンスタイプも下げることにより費用の節約が可能になりますので、必要に応じて安いものを指定すると良いでしょう。
パラメータ入力し送信後、約30分程度経過したらスタック作成完了となります。
AdminUserEmailAddress に入力したアドレスに、no-reply@verificationemail.com
から認証情報が含まれたメールが届きます。
こちらの情報をもとに、専用ページにログインします。

3. ページログイン後~リソースImportまで
ページ上部に Import というボタンがあるので、これをクリックします。
AWS アカウント ID 並びにリージョンを設定し、[Add] → [Import] の順にクリックします。
CSV形式で一括インポートも可能ですので、対象が複数ある場合は便利ですね。
「AWSでのワークロード検出」を利用するためには、確認したい対象の AWS アカウントに対し、グローバルリソースとリージョナルリソースが必要なようです。
今回は東京リージョンのみを対象とするため、それぞれのテンプレートを利用して東京リージョンでスタックを作成します。
もし、複数アカウント・複数リージョン確認したい場合には、AWS CloudFormation StackSets を使用すると手間が省けそうです。
それぞれのリソースを CloudFormation で作成後、2つにチェックを入れて [Import] をクリックします。
Import後、左メニューの [Configure] > [Account] からインポート状況が分かります。
最初は Awaiting Discovery の状態ですが、15分程度待つとスキャンされ初期設定完了となります。
スキャンが完了すると Role Status が Deployed になります。
新しい AWS リージョンでは 15 分間隔で実行される検出プロセスでスキャンされます。(例: 15:00、15:15、15:30、15:45)
4. リソースImport後
リソース Import 後、左メニューの [Explorer] > [Resource] から アカウント・リージョン・リソースタイプで検出された AWS リソースをフィルタリングすることができます。
今回は試しに、「2.環境のデプロイ」で作成した CloudFormation を選択して構成図を作ってもらうことにします。
該当のリソースにチェックを入れ、[Add to diagram]をクリックすると直ぐに構成図が表示されました!
こちらの画面上部では、現在表示されている情報を別ページで保存することも可能です。
保存した内容は、[Diagrams] > [Manage]で確認することができます。
5. Diagrams メニューでできること
先ほど保存した図について、[Actions]から色々編集することができます。
公式ガイドに詳しい説明は記載されていませんでしたが、触ったところ以下のような動作となっていました。
- Resources
- Expand:選択したリソースに紐づくリソースを図に追加
- Focus:選択したリソースに紐づくリソースだけを表示
- Remove:選択したリソースを削除
- Diagram
- Group:リソースタイプでのグループ化並びに矢印線の削除
- Fit:構成図を中央に表示
- Clear:構成図を全て削除
- Export:構成図をエクスポート
- Save:構成図を保存
- Delete:構成図を削除
編集内容は Ctrl+Z 等で戻すことができないため、この Web ブラウザ上で手を加えようとすると中々骨が折れるかもしれません。
因みに先程の図の CloudFormation スタックを全て選択し、Expand したものは以下になります。これを手で作るのは厳しいですね・・・。
6. 使い終わったら
利用終了したら忘れずにスタックの削除を行いましょう!
公式ガイドによると全てデフォルトで作成した場合、1 時間あたり約 0.58 USD・1 か月あたり 425.19 USDもの金額がかかるようです。
おわりに
今回は"AWSでのワークロード検出"を使って構成図自動作成を試してみました!
「この環境の構成図を残しておきたいけど、環境が複雑で作るのに時間がかかりそう・・・」「リソース毎の関係性って図で表すとどうなるんだっけ?」のようなタイミングでは刺さるツールだと感じました!
また、利用するために必要なものは全てコードで提供されており、作成・削除も簡単な点も個人的には良いと思います。
次回は保存した図に対して、どれだけの費用がかかるか確認できる機能について調べて記事にする予定です!
本記事がどなたかのお役に立てれば幸いです。
荒井 泰二郎 (記事一覧)
2023年8月入社 最近ジムに通い始めました