みなさんこんにちは。マネージドサービス部MSS課の塩野(正)です。
もともとの趣旨ではAWS Trusted Advisor の情報をAWSマネジメントコンソールにログインせずにCLIで確認できないかと思って調査した結果を簡単な記事にまとめようとしていましたが、記事を書いているうちにAWS Trusted AdvisorとAWS Well-Architected Frameworkの関連性に切り込んでしまったため、AWS Well-Architected Frameworkとの関連性やAWS Trusted Advisorのメリットや使い方と、本来の趣旨となっているAWS CLIを使った情報の抽出方法についてまとめてみました。
記事にかかれていること
- AWS Trusted Advisorについて
- AWS Trusted AdvisorとAWS Well-Architected Frameworkの関連性
- AWS CLIを使ったTrusted Advisorの情報取得
AWS Trusted Advisor
AWS Trusted Advisor とは
AWS Trusted AdvisorはAWSのベストプラクティスに基づいてAWS環境を分析し、改善のための推奨事項を提供するサービスで、このツールは6つの主要カテゴリにわたって、AWS環境を継続的に評価します。AWS Trusted Advisorの機能を完全に利用するには、ビジネスサポートプラン以上が必要となりますのでご留意ください。なお、弊社の請求代行サービスをご利用いただいている場合は、AWS Trusted Advisorの機能をフルにご利用いただくことができます。
AWS Trusted Advisorのカテゴリ
AWS Trusted Advisorでチェックされるカテゴリーとチェックの例は下記の通りです。
- コスト最適化
- AWSの利用コストを削減するための推奨事項を提供します。推奨チェック項目の例としては、使用率低いのAmazon EC2インスタンスや関連付けられていないElastic IP Addressの洗い出し、過剰プロビジョニングされているリソースなどがあります。
- パフォーマンス
- AWSリソースのパフォーマンスを向上させるための推奨事項を提供します。推奨チェック項目の例としては、EBS スループット最適化やAmazon DynamoDB Auto Scalingの有効化漏れ、使用率の高い Amazon EC2 インスタンスなどがあります。
- セキュリティ
- AWSリソースのセキュリティを強化するための推奨事項を提供します。推奨チェック項目の例としては、ルートアカウントの MFA設定漏れやIAM アクセスキーローテーション、パブリックスナップショットの有無やEC2 インスタンスのサポートの終了などがあります。
- 耐障害性
- AWSリソースの可用性と冗長性を向上させるための推奨事項を提供します。推奨チェック項目の例としては、マルチ AZ 配置戦略やAmazon RDS ReplicaLag、RDSなどのバックアップ、VPN トンネル冗長性などがあります。
- サービスの制限
- AWSサービスの制限に近づいているリソースを特定し、必要に応じて制限緩和を申請するための情報を提供します。推奨チェック項目の例としては、VPCやElastic IP アドレスのプロビジョニング数、DynamoDB のキャパシティーなどがあります。
- 運用上の優秀性
- AWSワークロードを効率的に運用し、ビジネス価値の向上につなげるための推奨事項を提供します。推奨チェック項目の例としては、Amazon VPCフローログや、CloudTrailなどの監査ログ、Amazon CloudFront アクセスログなどの設定有無、DB クラスター削除保護チェックなどがあります。
ここまでの項目や内容をみてピンときた方もいらっしゃるとは思いますが、これらはAWS Well-Architected Frameworkの柱とされている項目とそのが重複しており、AWS Trusted AdvisorとAWS Well-Architected Frameworkには密接な関連があります。
AWS Well-Architected Framework
AWS Well-Architected Frameworkとは
AWS Well-Architected Frameworkは、AWSでシステムを構築する際のベストプラクティスを体系化したフレームワークです。このフレームワークを使用することで、システム構築する際に行う決定の長所と短所を理解を促進し、信頼性が高く効率的なシステムを運用することができます。次にAWS Well-Architected Frameworkの6本の柱をみていきましょう。
AWS Well-Architected Frameworkの柱
AWS Well-Architected Frameworkで定義されている6つの柱は下記の通りです。
- 運用上の優秀性
- 開発を含め効率的にシステム運用をおこない、継続的な運用からヒントを得て改善活動やらビジネス価値向上をおこないます。
- セキュリティ
- クラウドを含めたシステム(資産)のセキュリティを高めます。
- 信頼性
- 動いているシステムが意図したとおりちゃんと動くよう、テストや運用面などでしっかり担保して信頼性のあるシステムを作ることを目指します。
- パフォーマンス効率
- リソースを効率よく使うことを目指します。
- コスト最適化
- 無駄をなくすために断捨離したり負荷効率を考慮して、費用面でのシステム運用の効率化をはかります。
- サステナビリティ
- 持続可能な社会を目指すために無駄なエネルギーの消費を抑えてエネルギー効率をよくすることを目指します。
そういえば、AWS Trusted Advisorでも似たような内容になっていましたが、具体的に何が違うのでしょうか。
AWS Trusted AdvisorとAWS Well-Architected Frameworkの違い
両者ともAWS環境の最適化とベストプラクティスの適用を目的としています。 AWS Well-Architected Frameworkがクラウドアーキテクチャ全体のベストプラクティスを提供するのに対し、Trusted Advisorはより具体的な推奨事項を自動的に提供します。つまり、AWS Well-Architected FrameworkとAWS Trusted Advisorは相互補完の関係にあり、Well-Architected Frameworkが提供する広範なガイダンスをAWS Trusted Advisorはより細かい粒度で補完し具体的なアクションにつなげやすくしています。
AWS Trusted Advisorを使いこなそう
AWS Trusted AdvisorをGUIで使用する
AWS Trusted Advisorを使用する場合は、AWSマネジメントコンソールにログインし、Trusted Advisorの画面を開きます。レコメンデーションのページを表示すると、推奨されるアクション、調査が推奨されます、除外された項目があるチェックの3つの項目がありますので、推奨されるアクションとなっている項目から対応を進めていきます。
例えば、上記画像の中にあるセキュリティの項目を開いてみると、セキュリティチェックの項目に「Amazon ECS コンテナには、そのルートファイルシステムへの読み取り専用アクセスのみがある必要があります」とあり、こちらの対応をすすめると仮定して話を進めましょう。
項目の左端の三角をクリックすると詳細が表示され、どのように対応をすればよいかのヒントが得られます(赤線部分)。またそのチェックにひっかかっているリソースは画面の下に一覧で表示されているリソースの中からバツ印がついているものが対象となりますので、これらのリソースに対して作業を進めていけばチェックにひっかかっている問題を解消に導くことができるようになります。
AWS Trusted Advisorに引っかかっている項目を通知する
AWS Trusted Advisorのチェック内容は週次でメールにて通知することができます。通知設定は、詳細設定の通知の項目より通知したい担当者にチェックを入れることで通知設定が完了します。通知設定で注意が必要な点として、言語が標準で英語が選択されているため日本語に変更、または通知の言語が日本語になっていることを確認しておく必要がありますのでご注意ください。
AWS Trusted Advisorに引っかかっている項目をAWS CUIで確認する
最後になりますが、AWS CLIでAWS Trusted Advisorの推奨事項をチェックしてみましょう。自端末からAWS CLIを使用する場合はAWS CLIの設定を事前に済ませておくこと、IAMアクセス権限を付与しておく必要があることが注意点となります。
AWS CLIで「推奨されるアクション」または「調査が推奨されます」の情報を抽出する
下記のコマンドを使用することで、「推奨されるアクション」または「調査が推奨されます」の情報を抽出することができます。
aws trustedadvisor list-recommendations \ --query 'recommendationSummaries[?resourcesAggregates.errorCount > `0` || resourcesAggregates.warningCount > `0`]' \ --output json
また、項目ごとに絞る場合は下記のコマンドを使用して情報を抽出します。
サービス制限
aws trustedadvisor list-recommendations --region us-east-1 \ --query 'recommendationSummaries[?contains(pillars, `service_limits`) && (resourcesAggregates.errorCount > `0` || resourcesAggregates.warningCount > `0`)]' \ --output json
コスト最適化
aws trustedadvisor list-recommendations --region us-east-1 \ --query 'recommendationSummaries[?contains(pillars, `cost_optimizing`) && (resourcesAggregates.errorCount > `0` || resourcesAggregates.warningCount > `0`)]' \ --output json
パフォーマンス
aws trustedadvisor list-recommendations --region us-east-1 \ --query 'recommendationSummaries[?contains(pillars, `performance`) && (resourcesAggregates.errorCount > `0` || resourcesAggregates.warningCount > `0`)]' \ --output json
セキュリティ
aws trustedadvisor list-recommendations --region us-east-1 \ --query 'recommendationSummaries[?contains(pillars, `security`) && (resourcesAggregates.errorCount > `0` || resourcesAggregates.warningCount > `0`)]' \ --output json
耐障害性
aws trustedadvisor list-recommendations --region us-east-1 \ --query 'recommendationSummaries[?contains(pillars, `fault_tolerance`) && (resourcesAggregates.errorCount > `0` || resourcesAggregates.warningCount > `0`)]' \ --output json
運用上の優秀性
aws trustedadvisor list-recommendations --region us-east-1 \ --query 'recommendationSummaries[?contains(pillars, `operational_excellence`) && (resourcesAggregates.errorCount > `0` || resourcesAggregates.warningCount > `0`)]' \ --output json
IAMポリシー
下記ポリシーを追加することで、AWS Trusted Advisorの推奨事項をリストアップする権限を付与します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "trustedadvisor:ListRecommendations", "Resource": "*" } ] }
まとめ
AWS Trusted Advisor のことをふわっとしか理解していませんでしたが、色々調べていく中でシステム運用の中で見落としがちな運用上の課題になりそうなポイントを自動的にチェックしてくれて、なおかつポイントとなる点をリコメンドしてくれるというとても便利なサービスであることがわかりました。AWS Trusted Advisorを使われている方も多くいらっしゃるとは思いますが、もしAWS Trusted Advisorを使われていないのであれば、ぜひ本記事を参考にお試しいただければと思います。
どなたかのお役に立てれば幸いでございます。