前置き
AWSを使っているみなさん。Trusted Advisorを有効活用していますか?
「コスト最適化」や「セキュリティ」「耐障害性」などのAWSレイヤでの改善をアドバイスしてくれます。
ただ、アドバイスしてくれるのはいいけど、〇〇はワケあって無視で良いとか、そういうのあると思います。
そこで特定のレコメンデーションを抑止する方法が意外に不便だったので、以下に備忘として記載します。
特定のレコメンデーションを除外する方法
AWS CLIの「batch-update-recommendation-resource-exclusion」を使います。(AWS CLIv2推奨)
なぜならマネージメントコンソールからだと、除外したいレコメンデーションを選んでも「非表示&更新」の項目がグレーアウトしていて、除外できないものが数多くある仕様だからです。
手順①除外したいレコメンデーションのチェックIDを調べる。
各レコメンデーションごとに異なりますので以下を参照してください。
https://docs.aws.amazon.com/ja_jp/awssupport/latest/user/trusted-advisor-check-reference.html
手順②AWS CLIから以下のコマンドを実行
ちなみに以下1.の〇〇〇は①で調べた値を入力します。
1. 対象項目の Check ID を指定して、チェック項目の ARN 情報を取得
例)
$ aws trustedadvisor list-recommendations --region us-east-1 --query 'recommendationSummaries[?checkArn==`arn:aws:trustedadvisor:::check/〇〇〇`].arn' --output text
2. 1. で取得したチェック項目の ARN 情報を指定して、チェック項目の対象リソースの ARN 情報を取得
例)
$ aws trustedadvisor list-recommendation-resources --recommendation-identifier <1. で取得した ARN 情報を指定> --region us-east-1 --query 'recommendationResourceSummaries[].[arn,exclusionStatus,regionCode,status]' --output table
3. 2. で取得したチェック項目の対象リソースの ARN 情報を指定して、非表示操作を試行
例)
$ aws trustedadvisor batch-update-recommendation-resource-exclusion --recommendation-resource-exclusions arn=<2. で取得したチェック項目の対象リソースの ARN 情報を指定>,isExcluded=true --region us-east-1
除外するレコメンデーションが多い場合の簡単なスクリプト
#!/bin/bash
# ARNのリスト
RESOURCE_ARNS=(
"arn:aws:trustedadvisor::AWSアカウント番号:recommendation-resource/xxxx1"
"arn:aws:trustedadvisor::AWSアカウント番号:recommendation-resource/xxxx2"
"arn:aws:trustedadvisor::AWSアカウント番号:recommendation-resource/xxxx3"
"arn:aws:trustedadvisor::AWSアカウント番号:recommendation-resource/xxxx4"
"arn:aws:trustedadvisor::AWSアカウント番号:recommendation-resource/xxxx5"
"arn:aws:trustedadvisor::AWSアカウント番号:recommendation-resource/xxxx6"
"arn:aws:trustedadvisor::AWSアカウント番号:recommendation-resource/xxxx7"
"arn:aws:trustedadvisor::AWSアカウント番号:recommendation-resource/xxxx8"
"arn:aws:trustedadvisor::AWSアカウント番号:recommendation-resource/xxxx9"
"arn:aws:trustedadvisor::AWSアカウント番号:recommendation-resource/xxxx10"
)
# 各ARNに対してループ処理
for ARN in "${RESOURCE_ARNS[@]}"; do
aws trustedadvisor batch-update-recommendation-resource-exclusion \
--recommendation-resource-exclusions arn=$ARN,isExcluded=true \
--region us-east-1
echo "Updated exclusion for: $ARN"
done
参考URL
Trusted Advisor Recommendations の開始方法 - 特定のチェックの表示 -
https://docs.aws.amazon.com/ja_jp/awssupport/latest/user/get-started-with-aws-trusted-advisor.html#view-specific-checks
BatchUpdateRecommendationResourceExclusion
https://docs.aws.amazon.com/ja_jp/trustedadvisor/latest/APIReference/API_BatchUpdateRecommendationResourceExclusion.html