Amazon Compute Optimizer · JSON Structure

Compute Optimizer Lambda Function Recommendation Structure

Describes an Lambda function recommendation.

Type: object Properties: 13
Cost OptimizationFinOpsMachine LearningResource Recommendations

LambdaFunctionRecommendation is a JSON Structure definition published by Amazon Compute Optimizer, describing 13 properties. It conforms to the https://json-structure.org/meta/core/v0/# meta-schema.

Properties

functionArn functionVersion accountId currentMemorySize numberOfInvocations utilizationMetrics lookbackPeriodInDays lastRefreshTimestamp finding findingReasonCodes memorySizeRecommendationOptions currentPerformanceRisk tags

Meta-schema: https://json-structure.org/meta/core/v0/#

JSON Structure

Raw ↑
{
  "$schema": "https://json-structure.org/meta/core/v0/#",
  "$id": "https://raw.githubusercontent.com/api-evangelist/amazon-compute-optimizer/refs/heads/main/json-structure/compute-optimizer-lambda-function-recommendation-structure.json",
  "name": "LambdaFunctionRecommendation",
  "description": "Describes an Lambda function recommendation.",
  "type": "object",
  "properties": {
    "functionArn": {
      "allOf": [
        {
          "$ref": "#/components/schemas/FunctionArn"
        },
        {
          "description": "The Amazon Resource Name (ARN) of the current function."
        }
      ]
    },
    "functionVersion": {
      "allOf": [
        {
          "$ref": "#/components/schemas/FunctionVersion"
        },
        {
          "description": "The version number of the current function."
        }
      ]
    },
    "accountId": {
      "allOf": [
        {
          "$ref": "#/components/schemas/AccountId"
        },
        {
          "description": "The Amazon Web Services account ID of the function."
        }
      ]
    },
    "currentMemorySize": {
      "allOf": [
        {
          "$ref": "#/components/schemas/MemorySize"
        },
        {
          "description": "The amount of memory, in MB, that's allocated to the current function."
        }
      ]
    },
    "numberOfInvocations": {
      "allOf": [
        {
          "$ref": "#/components/schemas/NumberOfInvocations"
        },
        {
          "description": "The number of times your function code was applied during the look-back period."
        }
      ]
    },
    "utilizationMetrics": {
      "allOf": [
        {
          "$ref": "#/components/schemas/LambdaFunctionUtilizationMetrics"
        },
        {
          "description": "An array of objects that describe the utilization metrics of the function."
        }
      ]
    },
    "lookbackPeriodInDays": {
      "allOf": [
        {
          "$ref": "#/components/schemas/LookBackPeriodInDays"
        },
        {
          "description": "The number of days for which utilization metrics were analyzed for the function."
        }
      ]
    },
    "lastRefreshTimestamp": {
      "allOf": [
        {
          "$ref": "#/components/schemas/LastRefreshTimestamp"
        },
        {
          "description": "The timestamp of when the function recommendation was last generated."
        }
      ]
    },
    "finding": {
      "allOf": [
        {
          "$ref": "#/components/schemas/LambdaFunctionRecommendationFinding"
        },
        {
          "description": "<p>The finding classification of the function.</p> <p>Findings for functions include:</p> <ul> <li> <p> <b> <code>Optimized</code> </b> \u2014 The function is correctly provisioned to run your workload based on its current configuration and its utilization history. This finding classification does not include finding reason codes.</p> </li> <li> <p> <b> <code>NotOptimized</code> </b> \u2014 The function is performing at a higher level (over-provisioned) or at a lower level (under-provisioned) than required for your workload because its current configuration is not optimal. Over-provisioned resources might lead to unnecessary infrastructure cost, and under-provisioned resources might lead to poor application performance. This finding classification can include the <code>MemoryUnderprovisioned</code> and <code>MemoryUnderprovisioned</code> finding reason codes.</p> </li> <li> <p> <b> <code>Unavailable</code> </b> \u2014 Compute Optimizer was unable to generate a recommendation for the function. This could be because the function has not accumulated sufficient metric data, or the function does not qualify for a recommendation. This finding classification can include the <code>InsufficientData</code> and <code>Inconclusive</code> finding reason codes.</p> <note> <p>Functions with a finding of unavailable are not returned unless you specify the <code>filter</code> parameter with a value of <code>Unavailable</code> in your <code>GetLambdaFunctionRecommendations</code> request.</p> </note> </li> </ul>"
        }
      ]
    },
    "findingReasonCodes": {
      "allOf": [
        {
          "$ref": "#/components/schemas/LambdaFunctionRecommendationFindingReasonCodes"
        },
        {
          "description": "<p>The reason for the finding classification of the function.</p> <note> <p>Functions that have a finding classification of <code>Optimized</code> don't have a finding reason code.</p> </note> <p>Finding reason codes for functions include:</p> <ul> <li> <p> <b> <code>MemoryOverprovisioned</code> </b> \u2014 The function is over-provisioned when its memory configuration can be sized down while still meeting the performance requirements of your workload. An over-provisioned function might lead to unnecessary infrastructure cost. This finding reason code is part of the <code>NotOptimized</code> finding classification.</p> </li> <li> <p> <b> <code>MemoryUnderprovisioned</code> </b> \u2014 The function is under-provisioned when its memory configuration doesn't meet the performance requirements of the workload. An under-provisioned function might lead to poor application performance. This finding reason code is part of the <code>NotOptimized</code> finding classification.</p> </li> <li> <p> <b> <code>InsufficientData</code> </b> \u2014 The function does not have sufficient metric data for Compute Optimizer to generate a recommendation. For more information, see the <a href=\"https://docs.aws.amazon.com/compute-optimizer/latest/ug/requirements.html\">Supported resources and requirements</a> in the <i>Compute Optimizer User Guide</i>. This finding reason code is part of the <code>Unavailable</code> finding classification.</p> </li> <li> <p> <b> <code>Inconclusive</code> </b> \u2014 The function does not qualify for a recommendation because Compute Optimizer cannot generate a recommendation with a high degree of confidence. This finding reason code is part of the <code>Unavailable</code> finding classification.</p> </li> </ul>"
        }
      ]
    },
    "memorySizeRecommendationOptions": {
      "allOf": [
        {
          "$ref": "#/components/schemas/LambdaFunctionMemoryRecommendationOptions"
        },
        {
          "description": "An array of objects that describe the memory configuration recommendation options for the function."
        }
      ]
    },
    "currentPerformanceRisk": {
      "allOf": [
        {
          "$ref": "#/components/schemas/CurrentPerformanceRisk"
        },
        {
          "description": "The risk of the current Lambda function not meeting the performance needs of its workloads. The higher the risk, the more likely the current Lambda function requires more memory."
        }
      ]
    },
    "tags": {
      "allOf": [
        {
          "$ref": "#/components/schemas/Tags"
        },
        {
          "description": " A list of tags assigned to your Lambda function recommendations. "
        }
      ]
    }
  }
}