AWS Well-Architected Tool でカスタムレンズを作成出来るようになりました #reinvent

2021.11.30

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

いわさです。

AWS Well-Architected Toolはレンズに沿って設問に回答することでワークロードのリスク状態などをレビューすることが出来る機能です。

本日時点ではAWSより4つの公式レンズが提供されています。

  • AWS Well-Architected Framework
  • FTR Lens
  • Serverless Lens
  • SaaS Lens

今回のアップデートでユーザーが独自にカスタマイズしたレンズを作成することが出来るようになりました。
Well-Architected Toolが利用出来るすべてのリージョンで利用可能です。

試してみる

定義ファイルのダウンロードと編集

では、早速試してみたいと思います。

カスタムレンズを作成するためには、サンプル定義ファイルをダウンロードしてカスタマイズし、アップロードを行います。

ダウンロードしたサンプル定義ファイルは以下のようになっています。

{
    "schemaVersion": "2021-11-01",
    "name": "Replace with lens name",
    "description": "Replace with your description",
    "pillars": [
        {
            "id": "pillar_id_1",
            "name": "Pillar 1",
            "questions": [
                {
                    "id": "pillar_1_q1",
                    "title": "My first question",
                    "description": "Description isn't a necessary property here for a question, but it might help your lens users.",
                    "choices": [
                        {
                            "id": "choice1",
                            "title": "Best practice #1",
                            "helpfulResource": {
                                "displayText": "It's recommended that you include a helpful resource text and URL for each choice for your users.",
                                "url": "https://aws.amazon.com"
                            },
                            "improvementPlan": {
                                "displayText": "You must have improvement plans per choice. It's optional whether or not to have a corresponding URL."
                            }
                        },
                        {
                            "id": "choice2",
                            "title": "Best practice #2",
                            "helpfulResource": {
                                "displayText": "It's recommended that you include a helpful resource text and URL for each choice for your users.",
                                "url": "https://aws.amazon.com"
                            },
                            "improvementPlan": {
                                "displayText": "You must have improvement plans per choice. It's optional whether or not to have a corresponding URL."
                            }
                        }
                    ],
                    "riskRules": [
                        {
                            "condition": "choice1 && choice2",
                            "risk": "NO_RISK"
                        },
                        {
                            "condition": "choice1 && !choice2",
                            "risk": "MEDIUM_RISK"
                        },
                        {
                            "condition": "default",
                            "risk": "HIGH_RISK"
                        }
                    ]
                }
            ]
        }
    ]
}

レンズは複数の柱と設問・選択肢で構成されています。
AWS Well-Archtectedフレームワークでいう、5本のあれです。

AWS Well-Architected フレームワーク 5 本の柱(2020年7月版)をマインドマップ化してみた | DevelopersIO

独自の柱を定義して、設問を設定してみましょう。

  • 数が決まっている
    • 1つのレンズあたり柱は10まで
    • 1つの柱あたり設問は20まで
    • 1つの設問あたり選択肢は15まで
  • 設定値はほぼ英数字(一部記号)のみ
    • helpfulResourceimprovementPlandisplayTextだけ日本語使えた

レンズフォーマットの詳細仕様は以下を参照してください。

Lens format specification - AWS Well-Architected Tool

上記に英数字と記述されているID以外は日本語もいけるか?と思ったのですがほぼいけませんでした。

以下のような感じにしてみました。

{
    "schemaVersion": "2021-11-01",
    "name": "iwasa-lense1",
    "description": "iwasa-lense1-description",
    "pillars": [
        {
            "id": "pillar_id_1",
            "name": "iwasa-pillar1-name",
            "questions": [
                {
                    "id": "question1",
                    "title": "iwasa-question1-title",
                    "description": "iwasa-question1-description",
                    "choices": [
                        {
                            "id": "choice1",
                            "title": "choice1-title",
                            "helpfulResource": {
                                "displayText": "ディスプレイテキスト1",
                                "url": "https://dev.classmethod.jp/"
                            },
                            "improvementPlan": {
                                "displayText": "DevIOを見る"
                            }
                        },
                        {
                            "id": "choice2",
                            "title": "choice2-title",
                            "helpfulResource": {
                                "displayText": "ディスプレイテキスト2",
                                "url": "https://dev.classmethod.jp/"
                            },
                            "improvementPlan": {
                                "displayText": "DevIOを見る"
                            }
                        }
                    ],
                    "riskRules": [
                        {
                            "condition": "choice1 && choice2",
                            "risk": "NO_RISK"
                        },
                        {
                            "condition": "choice1 && !choice2",
                            "risk": "MEDIUM_RISK"
                        },
                        {
                            "condition": "default",
                            "risk": "HIGH_RISK"
                        }
                    ]
                }
            ]
        }
    ]
}

riskRulesで選択肢の状態に応じてリスクを設定します。

定義ファイルアップロード

作成した定義ファイルをアップロードします。
この際にフォーマットのチェックが行われますが、ファイル選択時ではなく送信時にチェックされます。

アップロードされたファイルはステータスがDRAFTとなります。

公開

DRAFTステータスのカスタムレンズはワークロードで自身のワークロードで利用したり、他のAWSアカウントへ共有することは出来ません。
公開を行う必要があります。公開時にバージョン番号を指定します。
このメジャーバージョンとマイナーバージョンを指定することが出来ます。

カスタムレンズがアップデートされた場合に自動アップデートするか、手動アップデートを促すか、挙動が変わります。
マイナーバージョンアップデートの場合は自動アップデートになります。
軽微な修正であればマイナーアップデート、設問をし直す必要があるレベルであればメジャーアップデートとするのが良さそうですね。
100バージョンまで管理出来るようです。

ワークロードで利用する

公開されたレンズはワークロードのレンズ選択画面で選択することが出来るようになります。
他のアカウントへ共有することも可能です。

先程作成したカスタムレンズをワークロードに適用すると以下のようになります。

設問状況に応じてリスク判定がされていますね。

まとめ

本日は、AWS Well-Architected Toolの新機能カスタムレンズを紹介しました。
AWSの構築や運用を行っていると、一般的なAWSのベストプラクティスに加えて内部で蓄えたノウハウやチェック観点が生まれてくると思います。
従来はそういったものをチェックシートなどで運用することも多かったのではないかと思いますが、Well-Architected Toolのカスタムレンズで運用するというのもおもしろそうですね。

また、レンズはワークロードごとに複数組み合わせて使うことが出来るので、ハイブリッドなシステムであればオンプレミス向けのレンズを用意するなど、色々な使い方が考えられそうです。