AWS Compute Optimizer で Lambda 関数の推奨事項が表示されないのはなぜでしょうか?

AWS Compute Optimizer は要件を満たしている場合でも、コストや実行時間の削減に寄与し得る推奨事項が特に見出されないと判断した場合にその Lambda 関数を Unavailable に分類します。 Unavailable に分類された関数は Compute Optimizer コンソールの一覧に表示されません。
2022.02.05

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

困っていた内容

AWS Compute Optimizer をオプトインしましたが、確認したい Lambda 関数の推奨事項がコンソールに表示されません。ドキュメントに記載の Lambda 関数の要件は満たしているのですが、なぜ表示されないのでしょうか?

Compute Optimizer は、1,792 MB 以下のメモリを構成し、過去 14 日間に少なくとも 50 回呼び出された Lambda 関数に対してのみ、メモリサイズの推奨事項を生成します。

なぜコンソールに表示されないのか?

AWS Compute Optimizer は要件を満たしている場合でも、コストや実行時間の削減に寄与し得る推奨事項が特に見出されないと判断した場合にその Lambda 関数を Unavailable に分類します。Unavailable に分類された関数は Compute Optimizer コンソールの一覧に表示されません。

Unavailable: Compute Optimizer was unable to generate a recommendation for the function. This could be because the function has not met the requirements of Compute Optimizer for Lambda functions, or the function does not qualify for a recommendation.

For this finding classification, Compute Optimizer displays one of the following finding reasons:

Insufficient data when the function does not have sufficient metric data for Compute Optimizer to generate a recommendation.

Inconclusive when the function does not qualify for a recommendation because the function has configured memory greater than 1,792 MB, or Compute Optimizer cannot generate a recommendation with a high degree of confidence.

Note Functions with a finding of Unavailable are not listed in the Compute Optimizer console.

CLI コマンドを利用する

Compute Optimizer コンソールからは Unavailable になった Lambda 関数を確認できませんが、get-lambda-function-recommendations コマンドを利用することで Unavailable に分類されているかどうかとその理由を確認することができます。

私の検証環境にあった関数は過去 14 日間に少なくとも 50 回呼び出されるという要件を満たしていなかったため、Unavailable の理由として InsufficientData が返却されています。

$ aws compute-optimizer get-lambda-function-recommendations --filters name=Finding,values=Unavailable
{
    "lambdaFunctionRecommendations": [
        {
            "functionArn": "arn:aws:lambda:us-west-2:XXXXXXXXXXXX:function:lambda-test-EmptyS3Bucket:$LATEST",
            "functionVersion": "$LATEST",
            "accountId": "XXXXXXXXXXXX",
            "currentMemorySize": 128,
            "numberOfInvocations": 7,
            "utilizationMetrics": [
                {
                    "name": "Duration",
                    "statistic": "Average",
                    "value": 950.0357142857141
                },
                {
                    "name": "Duration",
                    "statistic": "Maximum",
                    "value": 2806.41
                },
                {
                    "name": "Memory",
                    "statistic": "Average",
                    "value": 66.57142857142857
                },
                {
                    "name": "Memory",
                    "statistic": "Maximum",
                    "value": 75.0
                }
            ],
            "lookbackPeriodInDays": 14.0,
            "lastRefreshTimestamp": "2022-02-04T08:11:21.106000-08:00",
            "finding": "Unavailable",
            "findingReasonCodes": [
                "InsufficientData"
            ],
            "memorySizeRecommendationOptions": []
        }
    ]
}

参照