はじめに

こんにちは、広島からリモートワークしている廣田(@hiropon1839)です。
今回はTrusted Advisorのチェック項目について、AWSマネジメントコンソールからは非表示化できなかったけど、AWS CLIを利用したら非表示化できた項目を1つ紹介させていただきます。

Trusted Advisorレコメンデーション

Trusted AdvisorのレコメンデーションをEventBridgeやSNSと連携させてメール、タスク管理ツール、チャットツール等に通知している方も多いかと思います。
そのような運用をしている場合、レコメンデーション不要な内容についてはTrusted Advisor上で「非表示」化して、通知の対象外にしたいケースが多いでしょう。
そうしないと対応不要な通知が多くなり、本当に対応が必要な通知を見逃したり、いわゆる「オオカミ少年」効果で通知を無視してしまったりするような状況に陥りがちです。

Trusted Advisorを運用されている方は、Trusted Advisorの項目には「非表示」化できるもの、できないもの、表示してから数分経過したら「非表示」化できるもの、が存在することをご存知かと思います。

2024年8月23日から新しく「耐障害性」のチェック項目として追加された「ELB Target Imbalance」(Check ID:b92b83d667)の非表示化方法を共有させていただきます。
参考:Change log for AWS Trusted Advisor
https://docs.aws.amazon.com/awssupport/latest/user/aws-trusted-advisor-change-log.html

ELB Target Imbalance(Check ID:b92b83d667)


上記のような表示です。Trusted Advisor上で今回対象のレコメンデーションは英語のため、独自に翻訳したものが下記です。

ELBターゲットの不均衡
アプリケーションロードバランサー(ALB)、ネットワークロードバランサー(NLB)、ゲートウェイロードバランサー(GWLB)のターゲットグループにおける、アベイラビリティーゾーン(AZ)間のターゲット分布を確認します。このチェックには、単一のAZで構成されたロードバランサーや、最も多くのターゲットがあるAZと最も少ないAZの間のターゲット数の差が1以下の場合は含まれません。

アラート基準
赤:単一のアベイラビリティーゾーンがロードバランサー容量の66%以上を占める。
黄:単一のアベイラビリティーゾーンがロードバランサー容量の50%以上を占める。
緑:どのアベイラビリティーゾーンもロードバランサー容量の50%以上を占めない。

推奨アクション
より高い回復力を確保するため、ターゲットグループがアベイラビリティーゾーン間で同数のターゲットを持つようにしてください。

ELB Target Imbalance
Check the target groups’ target distribution across Availability Zones (AZs) for Application Load Balancer (ALB), Network Load Balancer (NLB) and Gateway Load Balancer (GWLB). This check does not includes load balancers configured with a single AZ and where the difference in number of targets between the most and least populated AZ’s is equal or lesser than 1.

Alert Criteria
Red: A single Availability Zone represents more than 66% of the load balancer capacity.
Yellow: A single Availability Zone represents more than 50% of the load balancer capacity.
Green: No Availability Zones represents more than 50% of the load balancer capacity.

Recommended Action
For better resilience, ensure your targets groups have same number of targets across Availability Zones.

参考:Trusted Advisor check reference(英語)
https://docs.aws.amazon.com/awssupport/latest/user/fault-tolerance-checks.html#elb-target-imbalance
※2024/9/8時点で、日本語版ページにはまだ「ELB Target Imbalance」の項目が存在しませんでした。

※「単一のAZで構成されたロードバランサーは対象外」という記載がありますが、今回レコメンデーションに表示されたのは、設計の都合上、ターゲットが1AZのみを指定しているターゲットグループでした。今後ドキュメントもしくは仕様が修正されるかもしれません。

AWSマネジメントコンソールから非表示化を試してみる


非表示化したいターゲットグループにチェックを入れましたが、「非表示&更新」ボタンがクリックできる状態になりませんでした。
30分以上待ってブラウザの更新等も試してみましたが、結果は変わりませんでした。

aws cliを利用して非表示化する

「ELB Target Imbalance」のチェックID「b92b83d667」でフィルターし、Trusted AdvisorレコメンデーションのArnを取得します。

# Trusted AdvisorレコメンデーションのArnを取得
aws trustedadvisor list-recommendations --region us-east-1 --query 'recommendationSummaries[?checkArn==`arn:aws:trustedadvisor:::check/b92b83d667`]'

下記のような出力結果が取得できます。

[
    {
        "arn": "arn:aws:trustedadvisor::<アカウントID>:recommendation/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "awsServices": [
            "elasticloadbalancingv2"
        ],
        "checkArn": "arn:aws:trustedadvisor:::check/b92b83d667",
        "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "lastUpdatedAt": "2024-09-07T13:31:00.069000+00:00",
        "name": "ELB - Target Imbalance",
        "pillarSpecificAggregates": {
            "costOptimizing": {
                "estimatedMonthlySavings": 0.0,
                "estimatedPercentMonthlySavings": 0.0
            }
        },
        "pillars": [
            "fault_tolerance"
        ],
        "resourcesAggregates": {
            "errorCount": 3,
            "okCount": 2,
            "warningCount": 0
        },
        "source": "ta_check",
        "status": "error",
        "type": "standard"
    }
]

次に、Trusted Advisorレコメンデーション「ELB Target Imbalance」に該当するリソースの一覧を表示します。
上記の「"arn"」を下記コマンドに指定します。

# Trusted Advisorレコメンデーション「ELB Target Imbalance」に該当するリソースの一覧を表示
aws trustedadvisor list-recommendation-resources --recommendation-identifier arn:aws:trustedadvisor::<アカウントID>:recommendation/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --region us-east-1

下記のような出力結果が取得できます。
※実際には画像のように5リソース分表示されますが、下記には非表示化する1リソースのみ表示しています。

{
    "recommendationResourceSummaries": [
        {
            "arn": "arn:aws:trustedadvisor::<アカウントID>:recommendation-resource/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy",
            "awsResourceId": "arn:aws:elasticloadbalancing:ap-northeast-1:<アカウントID>:targetgroup/test-tg/zzzzzzzzzzzzzzzz",            
            "exclusionStatus": "included",
            "id": "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy",
            "lastUpdatedAt": "2024-09-08T01:20:58.298000+00:00",
            "metadata": {
                "0": "error",
                "1": "ap-northeast-1",
                "2": "test-alb",
                "3": "application",
                "4": "arn:aws:elasticloadbalancing:ap-northeast-1:<アカウントID>:targetgroup/test-tg/zzzzzzzzzzzzzzzz",
                "5": "0.0",
                "6": "2024-09-08T01:20:58.298"
            },
            "recommendationArn": "arn:aws:trustedadvisor::<アカウントID>:recommendation/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
            "regionCode": "ap-northeast-1",
            "status": "error"
        }
    ]
}

最後に、リソースを非表示化します。
上記の「"arn"」を下記コマンドに指定します。

# 指定したリソースを非表示化
aws trustedadvisor batch-update-recommendation-resource-exclusion --recommendation-resource-exclusions arn="arn:aws:trustedadvisor::<アカウントID>:recommendation-resource/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy",isExcluded=true --region us-east-1

下記が出力されます。

{
    "batchUpdateRecommendationResourceExclusionErrors": []
}

1件非表示化され、表示件数が5件から4件になりました。

「非表示の項目」にて、非表示化したリソースが確認できます。

参考:AWS CLI Command Reference
aws > trustedadvisor > list-recommendations
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/trustedadvisor/list-recommendations.html
aws > trustedadvisor > list-recommendation-resources
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/trustedadvisor/list-recommendation-resources.html
aws > trustedadvisor > batch-update-recommendation-resource-exclusion
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/trustedadvisor/batch-update-recommendation-resource-exclusion.html

さいごに

今後新たに追加されたチェック項目がAWSマネジメントコンソールから非表示化できない場合は、上記手順を試してみようと思います。
当記事がTrusted Advisorを運用されている方の役に立てば嬉しいです。