/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace ComputeOptimizer { namespace Model { /** *

Describes an Amazon EC2 instance recommendation.

See Also:

* AWS * API Reference

*/ class InstanceRecommendation { public: AWS_COMPUTEOPTIMIZER_API InstanceRecommendation(); AWS_COMPUTEOPTIMIZER_API InstanceRecommendation(Aws::Utils::Json::JsonView jsonValue); AWS_COMPUTEOPTIMIZER_API InstanceRecommendation& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_COMPUTEOPTIMIZER_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

The Amazon Resource Name (ARN) of the current instance.

*/ inline const Aws::String& GetInstanceArn() const{ return m_instanceArn; } /** *

The Amazon Resource Name (ARN) of the current instance.

*/ inline bool InstanceArnHasBeenSet() const { return m_instanceArnHasBeenSet; } /** *

The Amazon Resource Name (ARN) of the current instance.

*/ inline void SetInstanceArn(const Aws::String& value) { m_instanceArnHasBeenSet = true; m_instanceArn = value; } /** *

The Amazon Resource Name (ARN) of the current instance.

*/ inline void SetInstanceArn(Aws::String&& value) { m_instanceArnHasBeenSet = true; m_instanceArn = std::move(value); } /** *

The Amazon Resource Name (ARN) of the current instance.

*/ inline void SetInstanceArn(const char* value) { m_instanceArnHasBeenSet = true; m_instanceArn.assign(value); } /** *

The Amazon Resource Name (ARN) of the current instance.

*/ inline InstanceRecommendation& WithInstanceArn(const Aws::String& value) { SetInstanceArn(value); return *this;} /** *

The Amazon Resource Name (ARN) of the current instance.

*/ inline InstanceRecommendation& WithInstanceArn(Aws::String&& value) { SetInstanceArn(std::move(value)); return *this;} /** *

The Amazon Resource Name (ARN) of the current instance.

*/ inline InstanceRecommendation& WithInstanceArn(const char* value) { SetInstanceArn(value); return *this;} /** *

The Amazon Web Services account ID of the instance.

*/ inline const Aws::String& GetAccountId() const{ return m_accountId; } /** *

The Amazon Web Services account ID of the instance.

*/ inline bool AccountIdHasBeenSet() const { return m_accountIdHasBeenSet; } /** *

The Amazon Web Services account ID of the instance.

*/ inline void SetAccountId(const Aws::String& value) { m_accountIdHasBeenSet = true; m_accountId = value; } /** *

The Amazon Web Services account ID of the instance.

*/ inline void SetAccountId(Aws::String&& value) { m_accountIdHasBeenSet = true; m_accountId = std::move(value); } /** *

The Amazon Web Services account ID of the instance.

*/ inline void SetAccountId(const char* value) { m_accountIdHasBeenSet = true; m_accountId.assign(value); } /** *

The Amazon Web Services account ID of the instance.

*/ inline InstanceRecommendation& WithAccountId(const Aws::String& value) { SetAccountId(value); return *this;} /** *

The Amazon Web Services account ID of the instance.

*/ inline InstanceRecommendation& WithAccountId(Aws::String&& value) { SetAccountId(std::move(value)); return *this;} /** *

The Amazon Web Services account ID of the instance.

*/ inline InstanceRecommendation& WithAccountId(const char* value) { SetAccountId(value); return *this;} /** *

The name of the current instance.

*/ inline const Aws::String& GetInstanceName() const{ return m_instanceName; } /** *

The name of the current instance.

*/ inline bool InstanceNameHasBeenSet() const { return m_instanceNameHasBeenSet; } /** *

The name of the current instance.

*/ inline void SetInstanceName(const Aws::String& value) { m_instanceNameHasBeenSet = true; m_instanceName = value; } /** *

The name of the current instance.

*/ inline void SetInstanceName(Aws::String&& value) { m_instanceNameHasBeenSet = true; m_instanceName = std::move(value); } /** *

The name of the current instance.

*/ inline void SetInstanceName(const char* value) { m_instanceNameHasBeenSet = true; m_instanceName.assign(value); } /** *

The name of the current instance.

*/ inline InstanceRecommendation& WithInstanceName(const Aws::String& value) { SetInstanceName(value); return *this;} /** *

The name of the current instance.

*/ inline InstanceRecommendation& WithInstanceName(Aws::String&& value) { SetInstanceName(std::move(value)); return *this;} /** *

The name of the current instance.

*/ inline InstanceRecommendation& WithInstanceName(const char* value) { SetInstanceName(value); return *this;} /** *

The instance type of the current instance.

*/ inline const Aws::String& GetCurrentInstanceType() const{ return m_currentInstanceType; } /** *

The instance type of the current instance.

*/ inline bool CurrentInstanceTypeHasBeenSet() const { return m_currentInstanceTypeHasBeenSet; } /** *

The instance type of the current instance.

*/ inline void SetCurrentInstanceType(const Aws::String& value) { m_currentInstanceTypeHasBeenSet = true; m_currentInstanceType = value; } /** *

The instance type of the current instance.

*/ inline void SetCurrentInstanceType(Aws::String&& value) { m_currentInstanceTypeHasBeenSet = true; m_currentInstanceType = std::move(value); } /** *

The instance type of the current instance.

*/ inline void SetCurrentInstanceType(const char* value) { m_currentInstanceTypeHasBeenSet = true; m_currentInstanceType.assign(value); } /** *

The instance type of the current instance.

*/ inline InstanceRecommendation& WithCurrentInstanceType(const Aws::String& value) { SetCurrentInstanceType(value); return *this;} /** *

The instance type of the current instance.

*/ inline InstanceRecommendation& WithCurrentInstanceType(Aws::String&& value) { SetCurrentInstanceType(std::move(value)); return *this;} /** *

The instance type of the current instance.

*/ inline InstanceRecommendation& WithCurrentInstanceType(const char* value) { SetCurrentInstanceType(value); return *this;} /** *

The finding classification of the instance.

Findings for instances * include:

  • Underprovisioned —An instance is * considered under-provisioned when at least one specification of your instance, * such as CPU, memory, or network, does not meet the performance requirements of * your workload. Under-provisioned instances may lead to poor application * performance.

  • Overprovisioned —An * instance is considered over-provisioned when at least one specification of your * instance, such as CPU, memory, or network, can be sized down while still meeting * the performance requirements of your workload, and no specification is * under-provisioned. Over-provisioned instances may lead to unnecessary * infrastructure cost.

  • Optimized —An * instance is considered optimized when all specifications of your instance, such * as CPU, memory, and network, meet the performance requirements of your workload * and is not over provisioned. For optimized resources, Compute Optimizer might * recommend a new generation instance type.

*/ inline const Finding& GetFinding() const{ return m_finding; } /** *

The finding classification of the instance.

Findings for instances * include:

  • Underprovisioned —An instance is * considered under-provisioned when at least one specification of your instance, * such as CPU, memory, or network, does not meet the performance requirements of * your workload. Under-provisioned instances may lead to poor application * performance.

  • Overprovisioned —An * instance is considered over-provisioned when at least one specification of your * instance, such as CPU, memory, or network, can be sized down while still meeting * the performance requirements of your workload, and no specification is * under-provisioned. Over-provisioned instances may lead to unnecessary * infrastructure cost.

  • Optimized —An * instance is considered optimized when all specifications of your instance, such * as CPU, memory, and network, meet the performance requirements of your workload * and is not over provisioned. For optimized resources, Compute Optimizer might * recommend a new generation instance type.

*/ inline bool FindingHasBeenSet() const { return m_findingHasBeenSet; } /** *

The finding classification of the instance.

Findings for instances * include:

  • Underprovisioned —An instance is * considered under-provisioned when at least one specification of your instance, * such as CPU, memory, or network, does not meet the performance requirements of * your workload. Under-provisioned instances may lead to poor application * performance.

  • Overprovisioned —An * instance is considered over-provisioned when at least one specification of your * instance, such as CPU, memory, or network, can be sized down while still meeting * the performance requirements of your workload, and no specification is * under-provisioned. Over-provisioned instances may lead to unnecessary * infrastructure cost.

  • Optimized —An * instance is considered optimized when all specifications of your instance, such * as CPU, memory, and network, meet the performance requirements of your workload * and is not over provisioned. For optimized resources, Compute Optimizer might * recommend a new generation instance type.

*/ inline void SetFinding(const Finding& value) { m_findingHasBeenSet = true; m_finding = value; } /** *

The finding classification of the instance.

Findings for instances * include:

  • Underprovisioned —An instance is * considered under-provisioned when at least one specification of your instance, * such as CPU, memory, or network, does not meet the performance requirements of * your workload. Under-provisioned instances may lead to poor application * performance.

  • Overprovisioned —An * instance is considered over-provisioned when at least one specification of your * instance, such as CPU, memory, or network, can be sized down while still meeting * the performance requirements of your workload, and no specification is * under-provisioned. Over-provisioned instances may lead to unnecessary * infrastructure cost.

  • Optimized —An * instance is considered optimized when all specifications of your instance, such * as CPU, memory, and network, meet the performance requirements of your workload * and is not over provisioned. For optimized resources, Compute Optimizer might * recommend a new generation instance type.

*/ inline void SetFinding(Finding&& value) { m_findingHasBeenSet = true; m_finding = std::move(value); } /** *

The finding classification of the instance.

Findings for instances * include:

  • Underprovisioned —An instance is * considered under-provisioned when at least one specification of your instance, * such as CPU, memory, or network, does not meet the performance requirements of * your workload. Under-provisioned instances may lead to poor application * performance.

  • Overprovisioned —An * instance is considered over-provisioned when at least one specification of your * instance, such as CPU, memory, or network, can be sized down while still meeting * the performance requirements of your workload, and no specification is * under-provisioned. Over-provisioned instances may lead to unnecessary * infrastructure cost.

  • Optimized —An * instance is considered optimized when all specifications of your instance, such * as CPU, memory, and network, meet the performance requirements of your workload * and is not over provisioned. For optimized resources, Compute Optimizer might * recommend a new generation instance type.

*/ inline InstanceRecommendation& WithFinding(const Finding& value) { SetFinding(value); return *this;} /** *

The finding classification of the instance.

Findings for instances * include:

  • Underprovisioned —An instance is * considered under-provisioned when at least one specification of your instance, * such as CPU, memory, or network, does not meet the performance requirements of * your workload. Under-provisioned instances may lead to poor application * performance.

  • Overprovisioned —An * instance is considered over-provisioned when at least one specification of your * instance, such as CPU, memory, or network, can be sized down while still meeting * the performance requirements of your workload, and no specification is * under-provisioned. Over-provisioned instances may lead to unnecessary * infrastructure cost.

  • Optimized —An * instance is considered optimized when all specifications of your instance, such * as CPU, memory, and network, meet the performance requirements of your workload * and is not over provisioned. For optimized resources, Compute Optimizer might * recommend a new generation instance type.

*/ inline InstanceRecommendation& WithFinding(Finding&& value) { SetFinding(std::move(value)); return *this;} /** *

The reason for the finding classification of the instance.

Finding * reason codes for instances include:

  • * CPUOverprovisioned — The instance’s CPU configuration can be * sized down while still meeting the performance requirements of your workload. * This is identified by analyzing the CPUUtilization metric of the * current instance during the look-back period.

  • * CPUUnderprovisioned — The instance’s CPU configuration doesn't * meet the performance requirements of your workload and there is an alternative * instance type that provides better CPU performance. This is identified by * analyzing the CPUUtilization metric of the current instance during * the look-back period.

  • MemoryOverprovisioned * — The instance’s memory configuration can be sized down while still meeting * the performance requirements of your workload. This is identified by analyzing * the memory utilization metric of the current instance during the look-back * period.

  • MemoryUnderprovisioned — The * instance’s memory configuration doesn't meet the performance requirements of * your workload and there is an alternative instance type that provides better * memory performance. This is identified by analyzing the memory utilization * metric of the current instance during the look-back period.

    Memory * utilization is analyzed only for resources that have the unified CloudWatch * agent installed on them. For more information, see Enabling * memory utilization with the Amazon CloudWatch Agent in the Compute * Optimizer User Guide. On Linux instances, Compute Optimizer analyses the * mem_used_percent metric in the CWAgent namespace, or * the legacy MemoryUtilization metric in the * System/Linux namespace. On Windows instances, Compute Optimizer * analyses the Memory % Committed Bytes In Use metric in the * CWAgent namespace.

  • * EBSThroughputOverprovisioned — The instance’s EBS throughput * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the * VolumeReadBytes and VolumeWriteBytes metrics of EBS * volumes attached to the current instance during the look-back period.

  • *
  • EBSThroughputUnderprovisioned — The instance’s * EBS throughput configuration doesn't meet the performance requirements of your * workload and there is an alternative instance type that provides better EBS * throughput performance. This is identified by analyzing the * VolumeReadBytes and VolumeWriteBytes metrics of EBS * volumes attached to the current instance during the look-back period.

  • *
  • EBSIOPSOverprovisioned — The instance’s EBS IOPS * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the VolumeReadOps * and VolumeWriteOps metric of EBS volumes attached to the current * instance during the look-back period.

  • * EBSIOPSUnderprovisioned — The instance’s EBS IOPS * configuration doesn't meet the performance requirements of your workload and * there is an alternative instance type that provides better EBS IOPS performance. * This is identified by analyzing the VolumeReadOps and * VolumeWriteOps metric of EBS volumes attached to the current * instance during the look-back period.

  • * NetworkBandwidthOverprovisioned — The instance’s network * bandwidth configuration can be sized down while still meeting the performance * requirements of your workload. This is identified by analyzing the * NetworkIn and NetworkOut metrics of the current * instance during the look-back period.

  • * NetworkBandwidthUnderprovisioned — The instance’s network * bandwidth configuration doesn't meet the performance requirements of your * workload and there is an alternative instance type that provides better network * bandwidth performance. This is identified by analyzing the * NetworkIn and NetworkOut metrics of the current * instance during the look-back period. This finding reason happens when the * NetworkIn or NetworkOut performance of an instance is * impacted.

  • NetworkPPSOverprovisioned — * The instance’s network PPS (packets per second) configuration can be sized down * while still meeting the performance requirements of your workload. This is * identified by analyzing the NetworkPacketsIn and * NetworkPacketsIn metrics of the current instance during the * look-back period.

  • NetworkPPSUnderprovisioned * — The instance’s network PPS (packets per second) configuration doesn't * meet the performance requirements of your workload and there is an alternative * instance type that provides better network PPS performance. This is identified * by analyzing the NetworkPacketsIn and NetworkPacketsIn * metrics of the current instance during the look-back period.

  • * DiskIOPSOverprovisioned — The instance’s disk IOPS * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the DiskReadOps * and DiskWriteOps metrics of the current instance during the * look-back period.

  • DiskIOPSUnderprovisioned * — The instance’s disk IOPS configuration doesn't meet the performance * requirements of your workload and there is an alternative instance type that * provides better disk IOPS performance. This is identified by analyzing the * DiskReadOps and DiskWriteOps metrics of the current * instance during the look-back period.

  • * DiskThroughputOverprovisioned — The instance’s disk throughput * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the DiskReadBytes * and DiskWriteBytes metrics of the current instance during the * look-back period.

  • * DiskThroughputUnderprovisioned — The instance’s disk * throughput configuration doesn't meet the performance requirements of your * workload and there is an alternative instance type that provides better disk * throughput performance. This is identified by analyzing the * DiskReadBytes and DiskWriteBytes metrics of the * current instance during the look-back period.

For more * information about instance metrics, see List * the available CloudWatch metrics for your instances in the Amazon Elastic * Compute Cloud User Guide. For more information about EBS volume metrics, see * Amazon * CloudWatch metrics for Amazon EBS in the Amazon Elastic Compute Cloud * User Guide.

*/ inline const Aws::Vector& GetFindingReasonCodes() const{ return m_findingReasonCodes; } /** *

The reason for the finding classification of the instance.

Finding * reason codes for instances include:

  • * CPUOverprovisioned — The instance’s CPU configuration can be * sized down while still meeting the performance requirements of your workload. * This is identified by analyzing the CPUUtilization metric of the * current instance during the look-back period.

  • * CPUUnderprovisioned — The instance’s CPU configuration doesn't * meet the performance requirements of your workload and there is an alternative * instance type that provides better CPU performance. This is identified by * analyzing the CPUUtilization metric of the current instance during * the look-back period.

  • MemoryOverprovisioned * — The instance’s memory configuration can be sized down while still meeting * the performance requirements of your workload. This is identified by analyzing * the memory utilization metric of the current instance during the look-back * period.

  • MemoryUnderprovisioned — The * instance’s memory configuration doesn't meet the performance requirements of * your workload and there is an alternative instance type that provides better * memory performance. This is identified by analyzing the memory utilization * metric of the current instance during the look-back period.

    Memory * utilization is analyzed only for resources that have the unified CloudWatch * agent installed on them. For more information, see Enabling * memory utilization with the Amazon CloudWatch Agent in the Compute * Optimizer User Guide. On Linux instances, Compute Optimizer analyses the * mem_used_percent metric in the CWAgent namespace, or * the legacy MemoryUtilization metric in the * System/Linux namespace. On Windows instances, Compute Optimizer * analyses the Memory % Committed Bytes In Use metric in the * CWAgent namespace.

  • * EBSThroughputOverprovisioned — The instance’s EBS throughput * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the * VolumeReadBytes and VolumeWriteBytes metrics of EBS * volumes attached to the current instance during the look-back period.

  • *
  • EBSThroughputUnderprovisioned — The instance’s * EBS throughput configuration doesn't meet the performance requirements of your * workload and there is an alternative instance type that provides better EBS * throughput performance. This is identified by analyzing the * VolumeReadBytes and VolumeWriteBytes metrics of EBS * volumes attached to the current instance during the look-back period.

  • *
  • EBSIOPSOverprovisioned — The instance’s EBS IOPS * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the VolumeReadOps * and VolumeWriteOps metric of EBS volumes attached to the current * instance during the look-back period.

  • * EBSIOPSUnderprovisioned — The instance’s EBS IOPS * configuration doesn't meet the performance requirements of your workload and * there is an alternative instance type that provides better EBS IOPS performance. * This is identified by analyzing the VolumeReadOps and * VolumeWriteOps metric of EBS volumes attached to the current * instance during the look-back period.

  • * NetworkBandwidthOverprovisioned — The instance’s network * bandwidth configuration can be sized down while still meeting the performance * requirements of your workload. This is identified by analyzing the * NetworkIn and NetworkOut metrics of the current * instance during the look-back period.

  • * NetworkBandwidthUnderprovisioned — The instance’s network * bandwidth configuration doesn't meet the performance requirements of your * workload and there is an alternative instance type that provides better network * bandwidth performance. This is identified by analyzing the * NetworkIn and NetworkOut metrics of the current * instance during the look-back period. This finding reason happens when the * NetworkIn or NetworkOut performance of an instance is * impacted.

  • NetworkPPSOverprovisioned — * The instance’s network PPS (packets per second) configuration can be sized down * while still meeting the performance requirements of your workload. This is * identified by analyzing the NetworkPacketsIn and * NetworkPacketsIn metrics of the current instance during the * look-back period.

  • NetworkPPSUnderprovisioned * — The instance’s network PPS (packets per second) configuration doesn't * meet the performance requirements of your workload and there is an alternative * instance type that provides better network PPS performance. This is identified * by analyzing the NetworkPacketsIn and NetworkPacketsIn * metrics of the current instance during the look-back period.

  • * DiskIOPSOverprovisioned — The instance’s disk IOPS * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the DiskReadOps * and DiskWriteOps metrics of the current instance during the * look-back period.

  • DiskIOPSUnderprovisioned * — The instance’s disk IOPS configuration doesn't meet the performance * requirements of your workload and there is an alternative instance type that * provides better disk IOPS performance. This is identified by analyzing the * DiskReadOps and DiskWriteOps metrics of the current * instance during the look-back period.

  • * DiskThroughputOverprovisioned — The instance’s disk throughput * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the DiskReadBytes * and DiskWriteBytes metrics of the current instance during the * look-back period.

  • * DiskThroughputUnderprovisioned — The instance’s disk * throughput configuration doesn't meet the performance requirements of your * workload and there is an alternative instance type that provides better disk * throughput performance. This is identified by analyzing the * DiskReadBytes and DiskWriteBytes metrics of the * current instance during the look-back period.

For more * information about instance metrics, see List * the available CloudWatch metrics for your instances in the Amazon Elastic * Compute Cloud User Guide. For more information about EBS volume metrics, see * Amazon * CloudWatch metrics for Amazon EBS in the Amazon Elastic Compute Cloud * User Guide.

*/ inline bool FindingReasonCodesHasBeenSet() const { return m_findingReasonCodesHasBeenSet; } /** *

The reason for the finding classification of the instance.

Finding * reason codes for instances include:

  • * CPUOverprovisioned — The instance’s CPU configuration can be * sized down while still meeting the performance requirements of your workload. * This is identified by analyzing the CPUUtilization metric of the * current instance during the look-back period.

  • * CPUUnderprovisioned — The instance’s CPU configuration doesn't * meet the performance requirements of your workload and there is an alternative * instance type that provides better CPU performance. This is identified by * analyzing the CPUUtilization metric of the current instance during * the look-back period.

  • MemoryOverprovisioned * — The instance’s memory configuration can be sized down while still meeting * the performance requirements of your workload. This is identified by analyzing * the memory utilization metric of the current instance during the look-back * period.

  • MemoryUnderprovisioned — The * instance’s memory configuration doesn't meet the performance requirements of * your workload and there is an alternative instance type that provides better * memory performance. This is identified by analyzing the memory utilization * metric of the current instance during the look-back period.

    Memory * utilization is analyzed only for resources that have the unified CloudWatch * agent installed on them. For more information, see Enabling * memory utilization with the Amazon CloudWatch Agent in the Compute * Optimizer User Guide. On Linux instances, Compute Optimizer analyses the * mem_used_percent metric in the CWAgent namespace, or * the legacy MemoryUtilization metric in the * System/Linux namespace. On Windows instances, Compute Optimizer * analyses the Memory % Committed Bytes In Use metric in the * CWAgent namespace.

  • * EBSThroughputOverprovisioned — The instance’s EBS throughput * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the * VolumeReadBytes and VolumeWriteBytes metrics of EBS * volumes attached to the current instance during the look-back period.

  • *
  • EBSThroughputUnderprovisioned — The instance’s * EBS throughput configuration doesn't meet the performance requirements of your * workload and there is an alternative instance type that provides better EBS * throughput performance. This is identified by analyzing the * VolumeReadBytes and VolumeWriteBytes metrics of EBS * volumes attached to the current instance during the look-back period.

  • *
  • EBSIOPSOverprovisioned — The instance’s EBS IOPS * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the VolumeReadOps * and VolumeWriteOps metric of EBS volumes attached to the current * instance during the look-back period.

  • * EBSIOPSUnderprovisioned — The instance’s EBS IOPS * configuration doesn't meet the performance requirements of your workload and * there is an alternative instance type that provides better EBS IOPS performance. * This is identified by analyzing the VolumeReadOps and * VolumeWriteOps metric of EBS volumes attached to the current * instance during the look-back period.

  • * NetworkBandwidthOverprovisioned — The instance’s network * bandwidth configuration can be sized down while still meeting the performance * requirements of your workload. This is identified by analyzing the * NetworkIn and NetworkOut metrics of the current * instance during the look-back period.

  • * NetworkBandwidthUnderprovisioned — The instance’s network * bandwidth configuration doesn't meet the performance requirements of your * workload and there is an alternative instance type that provides better network * bandwidth performance. This is identified by analyzing the * NetworkIn and NetworkOut metrics of the current * instance during the look-back period. This finding reason happens when the * NetworkIn or NetworkOut performance of an instance is * impacted.

  • NetworkPPSOverprovisioned — * The instance’s network PPS (packets per second) configuration can be sized down * while still meeting the performance requirements of your workload. This is * identified by analyzing the NetworkPacketsIn and * NetworkPacketsIn metrics of the current instance during the * look-back period.

  • NetworkPPSUnderprovisioned * — The instance’s network PPS (packets per second) configuration doesn't * meet the performance requirements of your workload and there is an alternative * instance type that provides better network PPS performance. This is identified * by analyzing the NetworkPacketsIn and NetworkPacketsIn * metrics of the current instance during the look-back period.

  • * DiskIOPSOverprovisioned — The instance’s disk IOPS * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the DiskReadOps * and DiskWriteOps metrics of the current instance during the * look-back period.

  • DiskIOPSUnderprovisioned * — The instance’s disk IOPS configuration doesn't meet the performance * requirements of your workload and there is an alternative instance type that * provides better disk IOPS performance. This is identified by analyzing the * DiskReadOps and DiskWriteOps metrics of the current * instance during the look-back period.

  • * DiskThroughputOverprovisioned — The instance’s disk throughput * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the DiskReadBytes * and DiskWriteBytes metrics of the current instance during the * look-back period.

  • * DiskThroughputUnderprovisioned — The instance’s disk * throughput configuration doesn't meet the performance requirements of your * workload and there is an alternative instance type that provides better disk * throughput performance. This is identified by analyzing the * DiskReadBytes and DiskWriteBytes metrics of the * current instance during the look-back period.

For more * information about instance metrics, see List * the available CloudWatch metrics for your instances in the Amazon Elastic * Compute Cloud User Guide. For more information about EBS volume metrics, see * Amazon * CloudWatch metrics for Amazon EBS in the Amazon Elastic Compute Cloud * User Guide.

*/ inline void SetFindingReasonCodes(const Aws::Vector& value) { m_findingReasonCodesHasBeenSet = true; m_findingReasonCodes = value; } /** *

The reason for the finding classification of the instance.

Finding * reason codes for instances include:

  • * CPUOverprovisioned — The instance’s CPU configuration can be * sized down while still meeting the performance requirements of your workload. * This is identified by analyzing the CPUUtilization metric of the * current instance during the look-back period.

  • * CPUUnderprovisioned — The instance’s CPU configuration doesn't * meet the performance requirements of your workload and there is an alternative * instance type that provides better CPU performance. This is identified by * analyzing the CPUUtilization metric of the current instance during * the look-back period.

  • MemoryOverprovisioned * — The instance’s memory configuration can be sized down while still meeting * the performance requirements of your workload. This is identified by analyzing * the memory utilization metric of the current instance during the look-back * period.

  • MemoryUnderprovisioned — The * instance’s memory configuration doesn't meet the performance requirements of * your workload and there is an alternative instance type that provides better * memory performance. This is identified by analyzing the memory utilization * metric of the current instance during the look-back period.

    Memory * utilization is analyzed only for resources that have the unified CloudWatch * agent installed on them. For more information, see Enabling * memory utilization with the Amazon CloudWatch Agent in the Compute * Optimizer User Guide. On Linux instances, Compute Optimizer analyses the * mem_used_percent metric in the CWAgent namespace, or * the legacy MemoryUtilization metric in the * System/Linux namespace. On Windows instances, Compute Optimizer * analyses the Memory % Committed Bytes In Use metric in the * CWAgent namespace.

  • * EBSThroughputOverprovisioned — The instance’s EBS throughput * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the * VolumeReadBytes and VolumeWriteBytes metrics of EBS * volumes attached to the current instance during the look-back period.

  • *
  • EBSThroughputUnderprovisioned — The instance’s * EBS throughput configuration doesn't meet the performance requirements of your * workload and there is an alternative instance type that provides better EBS * throughput performance. This is identified by analyzing the * VolumeReadBytes and VolumeWriteBytes metrics of EBS * volumes attached to the current instance during the look-back period.

  • *
  • EBSIOPSOverprovisioned — The instance’s EBS IOPS * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the VolumeReadOps * and VolumeWriteOps metric of EBS volumes attached to the current * instance during the look-back period.

  • * EBSIOPSUnderprovisioned — The instance’s EBS IOPS * configuration doesn't meet the performance requirements of your workload and * there is an alternative instance type that provides better EBS IOPS performance. * This is identified by analyzing the VolumeReadOps and * VolumeWriteOps metric of EBS volumes attached to the current * instance during the look-back period.

  • * NetworkBandwidthOverprovisioned — The instance’s network * bandwidth configuration can be sized down while still meeting the performance * requirements of your workload. This is identified by analyzing the * NetworkIn and NetworkOut metrics of the current * instance during the look-back period.

  • * NetworkBandwidthUnderprovisioned — The instance’s network * bandwidth configuration doesn't meet the performance requirements of your * workload and there is an alternative instance type that provides better network * bandwidth performance. This is identified by analyzing the * NetworkIn and NetworkOut metrics of the current * instance during the look-back period. This finding reason happens when the * NetworkIn or NetworkOut performance of an instance is * impacted.

  • NetworkPPSOverprovisioned — * The instance’s network PPS (packets per second) configuration can be sized down * while still meeting the performance requirements of your workload. This is * identified by analyzing the NetworkPacketsIn and * NetworkPacketsIn metrics of the current instance during the * look-back period.

  • NetworkPPSUnderprovisioned * — The instance’s network PPS (packets per second) configuration doesn't * meet the performance requirements of your workload and there is an alternative * instance type that provides better network PPS performance. This is identified * by analyzing the NetworkPacketsIn and NetworkPacketsIn * metrics of the current instance during the look-back period.

  • * DiskIOPSOverprovisioned — The instance’s disk IOPS * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the DiskReadOps * and DiskWriteOps metrics of the current instance during the * look-back period.

  • DiskIOPSUnderprovisioned * — The instance’s disk IOPS configuration doesn't meet the performance * requirements of your workload and there is an alternative instance type that * provides better disk IOPS performance. This is identified by analyzing the * DiskReadOps and DiskWriteOps metrics of the current * instance during the look-back period.

  • * DiskThroughputOverprovisioned — The instance’s disk throughput * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the DiskReadBytes * and DiskWriteBytes metrics of the current instance during the * look-back period.

  • * DiskThroughputUnderprovisioned — The instance’s disk * throughput configuration doesn't meet the performance requirements of your * workload and there is an alternative instance type that provides better disk * throughput performance. This is identified by analyzing the * DiskReadBytes and DiskWriteBytes metrics of the * current instance during the look-back period.

For more * information about instance metrics, see List * the available CloudWatch metrics for your instances in the Amazon Elastic * Compute Cloud User Guide. For more information about EBS volume metrics, see * Amazon * CloudWatch metrics for Amazon EBS in the Amazon Elastic Compute Cloud * User Guide.

*/ inline void SetFindingReasonCodes(Aws::Vector&& value) { m_findingReasonCodesHasBeenSet = true; m_findingReasonCodes = std::move(value); } /** *

The reason for the finding classification of the instance.

Finding * reason codes for instances include:

  • * CPUOverprovisioned — The instance’s CPU configuration can be * sized down while still meeting the performance requirements of your workload. * This is identified by analyzing the CPUUtilization metric of the * current instance during the look-back period.

  • * CPUUnderprovisioned — The instance’s CPU configuration doesn't * meet the performance requirements of your workload and there is an alternative * instance type that provides better CPU performance. This is identified by * analyzing the CPUUtilization metric of the current instance during * the look-back period.

  • MemoryOverprovisioned * — The instance’s memory configuration can be sized down while still meeting * the performance requirements of your workload. This is identified by analyzing * the memory utilization metric of the current instance during the look-back * period.

  • MemoryUnderprovisioned — The * instance’s memory configuration doesn't meet the performance requirements of * your workload and there is an alternative instance type that provides better * memory performance. This is identified by analyzing the memory utilization * metric of the current instance during the look-back period.

    Memory * utilization is analyzed only for resources that have the unified CloudWatch * agent installed on them. For more information, see Enabling * memory utilization with the Amazon CloudWatch Agent in the Compute * Optimizer User Guide. On Linux instances, Compute Optimizer analyses the * mem_used_percent metric in the CWAgent namespace, or * the legacy MemoryUtilization metric in the * System/Linux namespace. On Windows instances, Compute Optimizer * analyses the Memory % Committed Bytes In Use metric in the * CWAgent namespace.

  • * EBSThroughputOverprovisioned — The instance’s EBS throughput * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the * VolumeReadBytes and VolumeWriteBytes metrics of EBS * volumes attached to the current instance during the look-back period.

  • *
  • EBSThroughputUnderprovisioned — The instance’s * EBS throughput configuration doesn't meet the performance requirements of your * workload and there is an alternative instance type that provides better EBS * throughput performance. This is identified by analyzing the * VolumeReadBytes and VolumeWriteBytes metrics of EBS * volumes attached to the current instance during the look-back period.

  • *
  • EBSIOPSOverprovisioned — The instance’s EBS IOPS * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the VolumeReadOps * and VolumeWriteOps metric of EBS volumes attached to the current * instance during the look-back period.

  • * EBSIOPSUnderprovisioned — The instance’s EBS IOPS * configuration doesn't meet the performance requirements of your workload and * there is an alternative instance type that provides better EBS IOPS performance. * This is identified by analyzing the VolumeReadOps and * VolumeWriteOps metric of EBS volumes attached to the current * instance during the look-back period.

  • * NetworkBandwidthOverprovisioned — The instance’s network * bandwidth configuration can be sized down while still meeting the performance * requirements of your workload. This is identified by analyzing the * NetworkIn and NetworkOut metrics of the current * instance during the look-back period.

  • * NetworkBandwidthUnderprovisioned — The instance’s network * bandwidth configuration doesn't meet the performance requirements of your * workload and there is an alternative instance type that provides better network * bandwidth performance. This is identified by analyzing the * NetworkIn and NetworkOut metrics of the current * instance during the look-back period. This finding reason happens when the * NetworkIn or NetworkOut performance of an instance is * impacted.

  • NetworkPPSOverprovisioned — * The instance’s network PPS (packets per second) configuration can be sized down * while still meeting the performance requirements of your workload. This is * identified by analyzing the NetworkPacketsIn and * NetworkPacketsIn metrics of the current instance during the * look-back period.

  • NetworkPPSUnderprovisioned * — The instance’s network PPS (packets per second) configuration doesn't * meet the performance requirements of your workload and there is an alternative * instance type that provides better network PPS performance. This is identified * by analyzing the NetworkPacketsIn and NetworkPacketsIn * metrics of the current instance during the look-back period.

  • * DiskIOPSOverprovisioned — The instance’s disk IOPS * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the DiskReadOps * and DiskWriteOps metrics of the current instance during the * look-back period.

  • DiskIOPSUnderprovisioned * — The instance’s disk IOPS configuration doesn't meet the performance * requirements of your workload and there is an alternative instance type that * provides better disk IOPS performance. This is identified by analyzing the * DiskReadOps and DiskWriteOps metrics of the current * instance during the look-back period.

  • * DiskThroughputOverprovisioned — The instance’s disk throughput * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the DiskReadBytes * and DiskWriteBytes metrics of the current instance during the * look-back period.

  • * DiskThroughputUnderprovisioned — The instance’s disk * throughput configuration doesn't meet the performance requirements of your * workload and there is an alternative instance type that provides better disk * throughput performance. This is identified by analyzing the * DiskReadBytes and DiskWriteBytes metrics of the * current instance during the look-back period.

For more * information about instance metrics, see List * the available CloudWatch metrics for your instances in the Amazon Elastic * Compute Cloud User Guide. For more information about EBS volume metrics, see * Amazon * CloudWatch metrics for Amazon EBS in the Amazon Elastic Compute Cloud * User Guide.

*/ inline InstanceRecommendation& WithFindingReasonCodes(const Aws::Vector& value) { SetFindingReasonCodes(value); return *this;} /** *

The reason for the finding classification of the instance.

Finding * reason codes for instances include:

  • * CPUOverprovisioned — The instance’s CPU configuration can be * sized down while still meeting the performance requirements of your workload. * This is identified by analyzing the CPUUtilization metric of the * current instance during the look-back period.

  • * CPUUnderprovisioned — The instance’s CPU configuration doesn't * meet the performance requirements of your workload and there is an alternative * instance type that provides better CPU performance. This is identified by * analyzing the CPUUtilization metric of the current instance during * the look-back period.

  • MemoryOverprovisioned * — The instance’s memory configuration can be sized down while still meeting * the performance requirements of your workload. This is identified by analyzing * the memory utilization metric of the current instance during the look-back * period.

  • MemoryUnderprovisioned — The * instance’s memory configuration doesn't meet the performance requirements of * your workload and there is an alternative instance type that provides better * memory performance. This is identified by analyzing the memory utilization * metric of the current instance during the look-back period.

    Memory * utilization is analyzed only for resources that have the unified CloudWatch * agent installed on them. For more information, see Enabling * memory utilization with the Amazon CloudWatch Agent in the Compute * Optimizer User Guide. On Linux instances, Compute Optimizer analyses the * mem_used_percent metric in the CWAgent namespace, or * the legacy MemoryUtilization metric in the * System/Linux namespace. On Windows instances, Compute Optimizer * analyses the Memory % Committed Bytes In Use metric in the * CWAgent namespace.

  • * EBSThroughputOverprovisioned — The instance’s EBS throughput * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the * VolumeReadBytes and VolumeWriteBytes metrics of EBS * volumes attached to the current instance during the look-back period.

  • *
  • EBSThroughputUnderprovisioned — The instance’s * EBS throughput configuration doesn't meet the performance requirements of your * workload and there is an alternative instance type that provides better EBS * throughput performance. This is identified by analyzing the * VolumeReadBytes and VolumeWriteBytes metrics of EBS * volumes attached to the current instance during the look-back period.

  • *
  • EBSIOPSOverprovisioned — The instance’s EBS IOPS * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the VolumeReadOps * and VolumeWriteOps metric of EBS volumes attached to the current * instance during the look-back period.

  • * EBSIOPSUnderprovisioned — The instance’s EBS IOPS * configuration doesn't meet the performance requirements of your workload and * there is an alternative instance type that provides better EBS IOPS performance. * This is identified by analyzing the VolumeReadOps and * VolumeWriteOps metric of EBS volumes attached to the current * instance during the look-back period.

  • * NetworkBandwidthOverprovisioned — The instance’s network * bandwidth configuration can be sized down while still meeting the performance * requirements of your workload. This is identified by analyzing the * NetworkIn and NetworkOut metrics of the current * instance during the look-back period.

  • * NetworkBandwidthUnderprovisioned — The instance’s network * bandwidth configuration doesn't meet the performance requirements of your * workload and there is an alternative instance type that provides better network * bandwidth performance. This is identified by analyzing the * NetworkIn and NetworkOut metrics of the current * instance during the look-back period. This finding reason happens when the * NetworkIn or NetworkOut performance of an instance is * impacted.

  • NetworkPPSOverprovisioned — * The instance’s network PPS (packets per second) configuration can be sized down * while still meeting the performance requirements of your workload. This is * identified by analyzing the NetworkPacketsIn and * NetworkPacketsIn metrics of the current instance during the * look-back period.

  • NetworkPPSUnderprovisioned * — The instance’s network PPS (packets per second) configuration doesn't * meet the performance requirements of your workload and there is an alternative * instance type that provides better network PPS performance. This is identified * by analyzing the NetworkPacketsIn and NetworkPacketsIn * metrics of the current instance during the look-back period.

  • * DiskIOPSOverprovisioned — The instance’s disk IOPS * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the DiskReadOps * and DiskWriteOps metrics of the current instance during the * look-back period.

  • DiskIOPSUnderprovisioned * — The instance’s disk IOPS configuration doesn't meet the performance * requirements of your workload and there is an alternative instance type that * provides better disk IOPS performance. This is identified by analyzing the * DiskReadOps and DiskWriteOps metrics of the current * instance during the look-back period.

  • * DiskThroughputOverprovisioned — The instance’s disk throughput * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the DiskReadBytes * and DiskWriteBytes metrics of the current instance during the * look-back period.

  • * DiskThroughputUnderprovisioned — The instance’s disk * throughput configuration doesn't meet the performance requirements of your * workload and there is an alternative instance type that provides better disk * throughput performance. This is identified by analyzing the * DiskReadBytes and DiskWriteBytes metrics of the * current instance during the look-back period.

For more * information about instance metrics, see List * the available CloudWatch metrics for your instances in the Amazon Elastic * Compute Cloud User Guide. For more information about EBS volume metrics, see * Amazon * CloudWatch metrics for Amazon EBS in the Amazon Elastic Compute Cloud * User Guide.

*/ inline InstanceRecommendation& WithFindingReasonCodes(Aws::Vector&& value) { SetFindingReasonCodes(std::move(value)); return *this;} /** *

The reason for the finding classification of the instance.

Finding * reason codes for instances include:

  • * CPUOverprovisioned — The instance’s CPU configuration can be * sized down while still meeting the performance requirements of your workload. * This is identified by analyzing the CPUUtilization metric of the * current instance during the look-back period.

  • * CPUUnderprovisioned — The instance’s CPU configuration doesn't * meet the performance requirements of your workload and there is an alternative * instance type that provides better CPU performance. This is identified by * analyzing the CPUUtilization metric of the current instance during * the look-back period.

  • MemoryOverprovisioned * — The instance’s memory configuration can be sized down while still meeting * the performance requirements of your workload. This is identified by analyzing * the memory utilization metric of the current instance during the look-back * period.

  • MemoryUnderprovisioned — The * instance’s memory configuration doesn't meet the performance requirements of * your workload and there is an alternative instance type that provides better * memory performance. This is identified by analyzing the memory utilization * metric of the current instance during the look-back period.

    Memory * utilization is analyzed only for resources that have the unified CloudWatch * agent installed on them. For more information, see Enabling * memory utilization with the Amazon CloudWatch Agent in the Compute * Optimizer User Guide. On Linux instances, Compute Optimizer analyses the * mem_used_percent metric in the CWAgent namespace, or * the legacy MemoryUtilization metric in the * System/Linux namespace. On Windows instances, Compute Optimizer * analyses the Memory % Committed Bytes In Use metric in the * CWAgent namespace.

  • * EBSThroughputOverprovisioned — The instance’s EBS throughput * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the * VolumeReadBytes and VolumeWriteBytes metrics of EBS * volumes attached to the current instance during the look-back period.

  • *
  • EBSThroughputUnderprovisioned — The instance’s * EBS throughput configuration doesn't meet the performance requirements of your * workload and there is an alternative instance type that provides better EBS * throughput performance. This is identified by analyzing the * VolumeReadBytes and VolumeWriteBytes metrics of EBS * volumes attached to the current instance during the look-back period.

  • *
  • EBSIOPSOverprovisioned — The instance’s EBS IOPS * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the VolumeReadOps * and VolumeWriteOps metric of EBS volumes attached to the current * instance during the look-back period.

  • * EBSIOPSUnderprovisioned — The instance’s EBS IOPS * configuration doesn't meet the performance requirements of your workload and * there is an alternative instance type that provides better EBS IOPS performance. * This is identified by analyzing the VolumeReadOps and * VolumeWriteOps metric of EBS volumes attached to the current * instance during the look-back period.

  • * NetworkBandwidthOverprovisioned — The instance’s network * bandwidth configuration can be sized down while still meeting the performance * requirements of your workload. This is identified by analyzing the * NetworkIn and NetworkOut metrics of the current * instance during the look-back period.

  • * NetworkBandwidthUnderprovisioned — The instance’s network * bandwidth configuration doesn't meet the performance requirements of your * workload and there is an alternative instance type that provides better network * bandwidth performance. This is identified by analyzing the * NetworkIn and NetworkOut metrics of the current * instance during the look-back period. This finding reason happens when the * NetworkIn or NetworkOut performance of an instance is * impacted.

  • NetworkPPSOverprovisioned — * The instance’s network PPS (packets per second) configuration can be sized down * while still meeting the performance requirements of your workload. This is * identified by analyzing the NetworkPacketsIn and * NetworkPacketsIn metrics of the current instance during the * look-back period.

  • NetworkPPSUnderprovisioned * — The instance’s network PPS (packets per second) configuration doesn't * meet the performance requirements of your workload and there is an alternative * instance type that provides better network PPS performance. This is identified * by analyzing the NetworkPacketsIn and NetworkPacketsIn * metrics of the current instance during the look-back period.

  • * DiskIOPSOverprovisioned — The instance’s disk IOPS * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the DiskReadOps * and DiskWriteOps metrics of the current instance during the * look-back period.

  • DiskIOPSUnderprovisioned * — The instance’s disk IOPS configuration doesn't meet the performance * requirements of your workload and there is an alternative instance type that * provides better disk IOPS performance. This is identified by analyzing the * DiskReadOps and DiskWriteOps metrics of the current * instance during the look-back period.

  • * DiskThroughputOverprovisioned — The instance’s disk throughput * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the DiskReadBytes * and DiskWriteBytes metrics of the current instance during the * look-back period.

  • * DiskThroughputUnderprovisioned — The instance’s disk * throughput configuration doesn't meet the performance requirements of your * workload and there is an alternative instance type that provides better disk * throughput performance. This is identified by analyzing the * DiskReadBytes and DiskWriteBytes metrics of the * current instance during the look-back period.

For more * information about instance metrics, see List * the available CloudWatch metrics for your instances in the Amazon Elastic * Compute Cloud User Guide. For more information about EBS volume metrics, see * Amazon * CloudWatch metrics for Amazon EBS in the Amazon Elastic Compute Cloud * User Guide.

*/ inline InstanceRecommendation& AddFindingReasonCodes(const InstanceRecommendationFindingReasonCode& value) { m_findingReasonCodesHasBeenSet = true; m_findingReasonCodes.push_back(value); return *this; } /** *

The reason for the finding classification of the instance.

Finding * reason codes for instances include:

  • * CPUOverprovisioned — The instance’s CPU configuration can be * sized down while still meeting the performance requirements of your workload. * This is identified by analyzing the CPUUtilization metric of the * current instance during the look-back period.

  • * CPUUnderprovisioned — The instance’s CPU configuration doesn't * meet the performance requirements of your workload and there is an alternative * instance type that provides better CPU performance. This is identified by * analyzing the CPUUtilization metric of the current instance during * the look-back period.

  • MemoryOverprovisioned * — The instance’s memory configuration can be sized down while still meeting * the performance requirements of your workload. This is identified by analyzing * the memory utilization metric of the current instance during the look-back * period.

  • MemoryUnderprovisioned — The * instance’s memory configuration doesn't meet the performance requirements of * your workload and there is an alternative instance type that provides better * memory performance. This is identified by analyzing the memory utilization * metric of the current instance during the look-back period.

    Memory * utilization is analyzed only for resources that have the unified CloudWatch * agent installed on them. For more information, see Enabling * memory utilization with the Amazon CloudWatch Agent in the Compute * Optimizer User Guide. On Linux instances, Compute Optimizer analyses the * mem_used_percent metric in the CWAgent namespace, or * the legacy MemoryUtilization metric in the * System/Linux namespace. On Windows instances, Compute Optimizer * analyses the Memory % Committed Bytes In Use metric in the * CWAgent namespace.

  • * EBSThroughputOverprovisioned — The instance’s EBS throughput * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the * VolumeReadBytes and VolumeWriteBytes metrics of EBS * volumes attached to the current instance during the look-back period.

  • *
  • EBSThroughputUnderprovisioned — The instance’s * EBS throughput configuration doesn't meet the performance requirements of your * workload and there is an alternative instance type that provides better EBS * throughput performance. This is identified by analyzing the * VolumeReadBytes and VolumeWriteBytes metrics of EBS * volumes attached to the current instance during the look-back period.

  • *
  • EBSIOPSOverprovisioned — The instance’s EBS IOPS * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the VolumeReadOps * and VolumeWriteOps metric of EBS volumes attached to the current * instance during the look-back period.

  • * EBSIOPSUnderprovisioned — The instance’s EBS IOPS * configuration doesn't meet the performance requirements of your workload and * there is an alternative instance type that provides better EBS IOPS performance. * This is identified by analyzing the VolumeReadOps and * VolumeWriteOps metric of EBS volumes attached to the current * instance during the look-back period.

  • * NetworkBandwidthOverprovisioned — The instance’s network * bandwidth configuration can be sized down while still meeting the performance * requirements of your workload. This is identified by analyzing the * NetworkIn and NetworkOut metrics of the current * instance during the look-back period.

  • * NetworkBandwidthUnderprovisioned — The instance’s network * bandwidth configuration doesn't meet the performance requirements of your * workload and there is an alternative instance type that provides better network * bandwidth performance. This is identified by analyzing the * NetworkIn and NetworkOut metrics of the current * instance during the look-back period. This finding reason happens when the * NetworkIn or NetworkOut performance of an instance is * impacted.

  • NetworkPPSOverprovisioned — * The instance’s network PPS (packets per second) configuration can be sized down * while still meeting the performance requirements of your workload. This is * identified by analyzing the NetworkPacketsIn and * NetworkPacketsIn metrics of the current instance during the * look-back period.

  • NetworkPPSUnderprovisioned * — The instance’s network PPS (packets per second) configuration doesn't * meet the performance requirements of your workload and there is an alternative * instance type that provides better network PPS performance. This is identified * by analyzing the NetworkPacketsIn and NetworkPacketsIn * metrics of the current instance during the look-back period.

  • * DiskIOPSOverprovisioned — The instance’s disk IOPS * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the DiskReadOps * and DiskWriteOps metrics of the current instance during the * look-back period.

  • DiskIOPSUnderprovisioned * — The instance’s disk IOPS configuration doesn't meet the performance * requirements of your workload and there is an alternative instance type that * provides better disk IOPS performance. This is identified by analyzing the * DiskReadOps and DiskWriteOps metrics of the current * instance during the look-back period.

  • * DiskThroughputOverprovisioned — The instance’s disk throughput * configuration can be sized down while still meeting the performance requirements * of your workload. This is identified by analyzing the DiskReadBytes * and DiskWriteBytes metrics of the current instance during the * look-back period.

  • * DiskThroughputUnderprovisioned — The instance’s disk * throughput configuration doesn't meet the performance requirements of your * workload and there is an alternative instance type that provides better disk * throughput performance. This is identified by analyzing the * DiskReadBytes and DiskWriteBytes metrics of the * current instance during the look-back period.

For more * information about instance metrics, see List * the available CloudWatch metrics for your instances in the Amazon Elastic * Compute Cloud User Guide. For more information about EBS volume metrics, see * Amazon * CloudWatch metrics for Amazon EBS in the Amazon Elastic Compute Cloud * User Guide.

*/ inline InstanceRecommendation& AddFindingReasonCodes(InstanceRecommendationFindingReasonCode&& value) { m_findingReasonCodesHasBeenSet = true; m_findingReasonCodes.push_back(std::move(value)); return *this; } /** *

An array of objects that describe the utilization metrics of the * instance.

*/ inline const Aws::Vector& GetUtilizationMetrics() const{ return m_utilizationMetrics; } /** *

An array of objects that describe the utilization metrics of the * instance.

*/ inline bool UtilizationMetricsHasBeenSet() const { return m_utilizationMetricsHasBeenSet; } /** *

An array of objects that describe the utilization metrics of the * instance.

*/ inline void SetUtilizationMetrics(const Aws::Vector& value) { m_utilizationMetricsHasBeenSet = true; m_utilizationMetrics = value; } /** *

An array of objects that describe the utilization metrics of the * instance.

*/ inline void SetUtilizationMetrics(Aws::Vector&& value) { m_utilizationMetricsHasBeenSet = true; m_utilizationMetrics = std::move(value); } /** *

An array of objects that describe the utilization metrics of the * instance.

*/ inline InstanceRecommendation& WithUtilizationMetrics(const Aws::Vector& value) { SetUtilizationMetrics(value); return *this;} /** *

An array of objects that describe the utilization metrics of the * instance.

*/ inline InstanceRecommendation& WithUtilizationMetrics(Aws::Vector&& value) { SetUtilizationMetrics(std::move(value)); return *this;} /** *

An array of objects that describe the utilization metrics of the * instance.

*/ inline InstanceRecommendation& AddUtilizationMetrics(const UtilizationMetric& value) { m_utilizationMetricsHasBeenSet = true; m_utilizationMetrics.push_back(value); return *this; } /** *

An array of objects that describe the utilization metrics of the * instance.

*/ inline InstanceRecommendation& AddUtilizationMetrics(UtilizationMetric&& value) { m_utilizationMetricsHasBeenSet = true; m_utilizationMetrics.push_back(std::move(value)); return *this; } /** *

The number of days for which utilization metrics were analyzed for the * instance.

*/ inline double GetLookBackPeriodInDays() const{ return m_lookBackPeriodInDays; } /** *

The number of days for which utilization metrics were analyzed for the * instance.

*/ inline bool LookBackPeriodInDaysHasBeenSet() const { return m_lookBackPeriodInDaysHasBeenSet; } /** *

The number of days for which utilization metrics were analyzed for the * instance.

*/ inline void SetLookBackPeriodInDays(double value) { m_lookBackPeriodInDaysHasBeenSet = true; m_lookBackPeriodInDays = value; } /** *

The number of days for which utilization metrics were analyzed for the * instance.

*/ inline InstanceRecommendation& WithLookBackPeriodInDays(double value) { SetLookBackPeriodInDays(value); return *this;} /** *

An array of objects that describe the recommendation options for the * instance.

*/ inline const Aws::Vector& GetRecommendationOptions() const{ return m_recommendationOptions; } /** *

An array of objects that describe the recommendation options for the * instance.

*/ inline bool RecommendationOptionsHasBeenSet() const { return m_recommendationOptionsHasBeenSet; } /** *

An array of objects that describe the recommendation options for the * instance.

*/ inline void SetRecommendationOptions(const Aws::Vector& value) { m_recommendationOptionsHasBeenSet = true; m_recommendationOptions = value; } /** *

An array of objects that describe the recommendation options for the * instance.

*/ inline void SetRecommendationOptions(Aws::Vector&& value) { m_recommendationOptionsHasBeenSet = true; m_recommendationOptions = std::move(value); } /** *

An array of objects that describe the recommendation options for the * instance.

*/ inline InstanceRecommendation& WithRecommendationOptions(const Aws::Vector& value) { SetRecommendationOptions(value); return *this;} /** *

An array of objects that describe the recommendation options for the * instance.

*/ inline InstanceRecommendation& WithRecommendationOptions(Aws::Vector&& value) { SetRecommendationOptions(std::move(value)); return *this;} /** *

An array of objects that describe the recommendation options for the * instance.

*/ inline InstanceRecommendation& AddRecommendationOptions(const InstanceRecommendationOption& value) { m_recommendationOptionsHasBeenSet = true; m_recommendationOptions.push_back(value); return *this; } /** *

An array of objects that describe the recommendation options for the * instance.

*/ inline InstanceRecommendation& AddRecommendationOptions(InstanceRecommendationOption&& value) { m_recommendationOptionsHasBeenSet = true; m_recommendationOptions.push_back(std::move(value)); return *this; } /** *

An array of objects that describe the source resource of the * recommendation.

*/ inline const Aws::Vector& GetRecommendationSources() const{ return m_recommendationSources; } /** *

An array of objects that describe the source resource of the * recommendation.

*/ inline bool RecommendationSourcesHasBeenSet() const { return m_recommendationSourcesHasBeenSet; } /** *

An array of objects that describe the source resource of the * recommendation.

*/ inline void SetRecommendationSources(const Aws::Vector& value) { m_recommendationSourcesHasBeenSet = true; m_recommendationSources = value; } /** *

An array of objects that describe the source resource of the * recommendation.

*/ inline void SetRecommendationSources(Aws::Vector&& value) { m_recommendationSourcesHasBeenSet = true; m_recommendationSources = std::move(value); } /** *

An array of objects that describe the source resource of the * recommendation.

*/ inline InstanceRecommendation& WithRecommendationSources(const Aws::Vector& value) { SetRecommendationSources(value); return *this;} /** *

An array of objects that describe the source resource of the * recommendation.

*/ inline InstanceRecommendation& WithRecommendationSources(Aws::Vector&& value) { SetRecommendationSources(std::move(value)); return *this;} /** *

An array of objects that describe the source resource of the * recommendation.

*/ inline InstanceRecommendation& AddRecommendationSources(const RecommendationSource& value) { m_recommendationSourcesHasBeenSet = true; m_recommendationSources.push_back(value); return *this; } /** *

An array of objects that describe the source resource of the * recommendation.

*/ inline InstanceRecommendation& AddRecommendationSources(RecommendationSource&& value) { m_recommendationSourcesHasBeenSet = true; m_recommendationSources.push_back(std::move(value)); return *this; } /** *

The timestamp of when the instance recommendation was last generated.

*/ inline const Aws::Utils::DateTime& GetLastRefreshTimestamp() const{ return m_lastRefreshTimestamp; } /** *

The timestamp of when the instance recommendation was last generated.

*/ inline bool LastRefreshTimestampHasBeenSet() const { return m_lastRefreshTimestampHasBeenSet; } /** *

The timestamp of when the instance recommendation was last generated.

*/ inline void SetLastRefreshTimestamp(const Aws::Utils::DateTime& value) { m_lastRefreshTimestampHasBeenSet = true; m_lastRefreshTimestamp = value; } /** *

The timestamp of when the instance recommendation was last generated.

*/ inline void SetLastRefreshTimestamp(Aws::Utils::DateTime&& value) { m_lastRefreshTimestampHasBeenSet = true; m_lastRefreshTimestamp = std::move(value); } /** *

The timestamp of when the instance recommendation was last generated.

*/ inline InstanceRecommendation& WithLastRefreshTimestamp(const Aws::Utils::DateTime& value) { SetLastRefreshTimestamp(value); return *this;} /** *

The timestamp of when the instance recommendation was last generated.

*/ inline InstanceRecommendation& WithLastRefreshTimestamp(Aws::Utils::DateTime&& value) { SetLastRefreshTimestamp(std::move(value)); return *this;} /** *

The risk of the current instance not meeting the performance needs of its * workloads. The higher the risk, the more likely the current instance cannot meet * the performance requirements of its workload.

*/ inline const CurrentPerformanceRisk& GetCurrentPerformanceRisk() const{ return m_currentPerformanceRisk; } /** *

The risk of the current instance not meeting the performance needs of its * workloads. The higher the risk, the more likely the current instance cannot meet * the performance requirements of its workload.

*/ inline bool CurrentPerformanceRiskHasBeenSet() const { return m_currentPerformanceRiskHasBeenSet; } /** *

The risk of the current instance not meeting the performance needs of its * workloads. The higher the risk, the more likely the current instance cannot meet * the performance requirements of its workload.

*/ inline void SetCurrentPerformanceRisk(const CurrentPerformanceRisk& value) { m_currentPerformanceRiskHasBeenSet = true; m_currentPerformanceRisk = value; } /** *

The risk of the current instance not meeting the performance needs of its * workloads. The higher the risk, the more likely the current instance cannot meet * the performance requirements of its workload.

*/ inline void SetCurrentPerformanceRisk(CurrentPerformanceRisk&& value) { m_currentPerformanceRiskHasBeenSet = true; m_currentPerformanceRisk = std::move(value); } /** *

The risk of the current instance not meeting the performance needs of its * workloads. The higher the risk, the more likely the current instance cannot meet * the performance requirements of its workload.

*/ inline InstanceRecommendation& WithCurrentPerformanceRisk(const CurrentPerformanceRisk& value) { SetCurrentPerformanceRisk(value); return *this;} /** *

The risk of the current instance not meeting the performance needs of its * workloads. The higher the risk, the more likely the current instance cannot meet * the performance requirements of its workload.

*/ inline InstanceRecommendation& WithCurrentPerformanceRisk(CurrentPerformanceRisk&& value) { SetCurrentPerformanceRisk(std::move(value)); return *this;} /** *

An object that describes the effective recommendation preferences for the * instance.

*/ inline const EffectiveRecommendationPreferences& GetEffectiveRecommendationPreferences() const{ return m_effectiveRecommendationPreferences; } /** *

An object that describes the effective recommendation preferences for the * instance.

*/ inline bool EffectiveRecommendationPreferencesHasBeenSet() const { return m_effectiveRecommendationPreferencesHasBeenSet; } /** *

An object that describes the effective recommendation preferences for the * instance.

*/ inline void SetEffectiveRecommendationPreferences(const EffectiveRecommendationPreferences& value) { m_effectiveRecommendationPreferencesHasBeenSet = true; m_effectiveRecommendationPreferences = value; } /** *

An object that describes the effective recommendation preferences for the * instance.

*/ inline void SetEffectiveRecommendationPreferences(EffectiveRecommendationPreferences&& value) { m_effectiveRecommendationPreferencesHasBeenSet = true; m_effectiveRecommendationPreferences = std::move(value); } /** *

An object that describes the effective recommendation preferences for the * instance.

*/ inline InstanceRecommendation& WithEffectiveRecommendationPreferences(const EffectiveRecommendationPreferences& value) { SetEffectiveRecommendationPreferences(value); return *this;} /** *

An object that describes the effective recommendation preferences for the * instance.

*/ inline InstanceRecommendation& WithEffectiveRecommendationPreferences(EffectiveRecommendationPreferences&& value) { SetEffectiveRecommendationPreferences(std::move(value)); return *this;} /** *

The applications that might be running on the instance as inferred by Compute * Optimizer.

Compute Optimizer can infer if one of the following * applications might be running on the instance:

  • * AmazonEmr - Infers that Amazon EMR might be running on the * instance.

  • ApacheCassandra - Infers that Apache * Cassandra might be running on the instance.

  • * ApacheHadoop - Infers that Apache Hadoop might be running on the * instance.

  • Memcached - Infers that Memcached * might be running on the instance.

  • NGINX - Infers * that NGINX might be running on the instance.

  • * PostgreSql - Infers that PostgreSQL might be running on the * instance.

  • Redis - Infers that Redis might be * running on the instance.

  • Kafka - Infers that * Kafka might be running on the instance.

  • * SQLServer - Infers that SQLServer might be running on the * instance.

*/ inline const Aws::Vector& GetInferredWorkloadTypes() const{ return m_inferredWorkloadTypes; } /** *

The applications that might be running on the instance as inferred by Compute * Optimizer.

Compute Optimizer can infer if one of the following * applications might be running on the instance:

  • * AmazonEmr - Infers that Amazon EMR might be running on the * instance.

  • ApacheCassandra - Infers that Apache * Cassandra might be running on the instance.

  • * ApacheHadoop - Infers that Apache Hadoop might be running on the * instance.

  • Memcached - Infers that Memcached * might be running on the instance.

  • NGINX - Infers * that NGINX might be running on the instance.

  • * PostgreSql - Infers that PostgreSQL might be running on the * instance.

  • Redis - Infers that Redis might be * running on the instance.

  • Kafka - Infers that * Kafka might be running on the instance.

  • * SQLServer - Infers that SQLServer might be running on the * instance.

*/ inline bool InferredWorkloadTypesHasBeenSet() const { return m_inferredWorkloadTypesHasBeenSet; } /** *

The applications that might be running on the instance as inferred by Compute * Optimizer.

Compute Optimizer can infer if one of the following * applications might be running on the instance:

  • * AmazonEmr - Infers that Amazon EMR might be running on the * instance.

  • ApacheCassandra - Infers that Apache * Cassandra might be running on the instance.

  • * ApacheHadoop - Infers that Apache Hadoop might be running on the * instance.

  • Memcached - Infers that Memcached * might be running on the instance.

  • NGINX - Infers * that NGINX might be running on the instance.

  • * PostgreSql - Infers that PostgreSQL might be running on the * instance.

  • Redis - Infers that Redis might be * running on the instance.

  • Kafka - Infers that * Kafka might be running on the instance.

  • * SQLServer - Infers that SQLServer might be running on the * instance.

*/ inline void SetInferredWorkloadTypes(const Aws::Vector& value) { m_inferredWorkloadTypesHasBeenSet = true; m_inferredWorkloadTypes = value; } /** *

The applications that might be running on the instance as inferred by Compute * Optimizer.

Compute Optimizer can infer if one of the following * applications might be running on the instance:

  • * AmazonEmr - Infers that Amazon EMR might be running on the * instance.

  • ApacheCassandra - Infers that Apache * Cassandra might be running on the instance.

  • * ApacheHadoop - Infers that Apache Hadoop might be running on the * instance.

  • Memcached - Infers that Memcached * might be running on the instance.

  • NGINX - Infers * that NGINX might be running on the instance.

  • * PostgreSql - Infers that PostgreSQL might be running on the * instance.

  • Redis - Infers that Redis might be * running on the instance.

  • Kafka - Infers that * Kafka might be running on the instance.

  • * SQLServer - Infers that SQLServer might be running on the * instance.

*/ inline void SetInferredWorkloadTypes(Aws::Vector&& value) { m_inferredWorkloadTypesHasBeenSet = true; m_inferredWorkloadTypes = std::move(value); } /** *

The applications that might be running on the instance as inferred by Compute * Optimizer.

Compute Optimizer can infer if one of the following * applications might be running on the instance:

  • * AmazonEmr - Infers that Amazon EMR might be running on the * instance.

  • ApacheCassandra - Infers that Apache * Cassandra might be running on the instance.

  • * ApacheHadoop - Infers that Apache Hadoop might be running on the * instance.

  • Memcached - Infers that Memcached * might be running on the instance.

  • NGINX - Infers * that NGINX might be running on the instance.

  • * PostgreSql - Infers that PostgreSQL might be running on the * instance.

  • Redis - Infers that Redis might be * running on the instance.

  • Kafka - Infers that * Kafka might be running on the instance.

  • * SQLServer - Infers that SQLServer might be running on the * instance.

*/ inline InstanceRecommendation& WithInferredWorkloadTypes(const Aws::Vector& value) { SetInferredWorkloadTypes(value); return *this;} /** *

The applications that might be running on the instance as inferred by Compute * Optimizer.

Compute Optimizer can infer if one of the following * applications might be running on the instance:

  • * AmazonEmr - Infers that Amazon EMR might be running on the * instance.

  • ApacheCassandra - Infers that Apache * Cassandra might be running on the instance.

  • * ApacheHadoop - Infers that Apache Hadoop might be running on the * instance.

  • Memcached - Infers that Memcached * might be running on the instance.

  • NGINX - Infers * that NGINX might be running on the instance.

  • * PostgreSql - Infers that PostgreSQL might be running on the * instance.

  • Redis - Infers that Redis might be * running on the instance.

  • Kafka - Infers that * Kafka might be running on the instance.

  • * SQLServer - Infers that SQLServer might be running on the * instance.

*/ inline InstanceRecommendation& WithInferredWorkloadTypes(Aws::Vector&& value) { SetInferredWorkloadTypes(std::move(value)); return *this;} /** *

The applications that might be running on the instance as inferred by Compute * Optimizer.

Compute Optimizer can infer if one of the following * applications might be running on the instance:

  • * AmazonEmr - Infers that Amazon EMR might be running on the * instance.

  • ApacheCassandra - Infers that Apache * Cassandra might be running on the instance.

  • * ApacheHadoop - Infers that Apache Hadoop might be running on the * instance.

  • Memcached - Infers that Memcached * might be running on the instance.

  • NGINX - Infers * that NGINX might be running on the instance.

  • * PostgreSql - Infers that PostgreSQL might be running on the * instance.

  • Redis - Infers that Redis might be * running on the instance.

  • Kafka - Infers that * Kafka might be running on the instance.

  • * SQLServer - Infers that SQLServer might be running on the * instance.

*/ inline InstanceRecommendation& AddInferredWorkloadTypes(const InferredWorkloadType& value) { m_inferredWorkloadTypesHasBeenSet = true; m_inferredWorkloadTypes.push_back(value); return *this; } /** *

The applications that might be running on the instance as inferred by Compute * Optimizer.

Compute Optimizer can infer if one of the following * applications might be running on the instance:

  • * AmazonEmr - Infers that Amazon EMR might be running on the * instance.

  • ApacheCassandra - Infers that Apache * Cassandra might be running on the instance.

  • * ApacheHadoop - Infers that Apache Hadoop might be running on the * instance.

  • Memcached - Infers that Memcached * might be running on the instance.

  • NGINX - Infers * that NGINX might be running on the instance.

  • * PostgreSql - Infers that PostgreSQL might be running on the * instance.

  • Redis - Infers that Redis might be * running on the instance.

  • Kafka - Infers that * Kafka might be running on the instance.

  • * SQLServer - Infers that SQLServer might be running on the * instance.

*/ inline InstanceRecommendation& AddInferredWorkloadTypes(InferredWorkloadType&& value) { m_inferredWorkloadTypesHasBeenSet = true; m_inferredWorkloadTypes.push_back(std::move(value)); return *this; } /** *

The state of the instance when the recommendation was generated.

*/ inline const InstanceState& GetInstanceState() const{ return m_instanceState; } /** *

The state of the instance when the recommendation was generated.

*/ inline bool InstanceStateHasBeenSet() const { return m_instanceStateHasBeenSet; } /** *

The state of the instance when the recommendation was generated.

*/ inline void SetInstanceState(const InstanceState& value) { m_instanceStateHasBeenSet = true; m_instanceState = value; } /** *

The state of the instance when the recommendation was generated.

*/ inline void SetInstanceState(InstanceState&& value) { m_instanceStateHasBeenSet = true; m_instanceState = std::move(value); } /** *

The state of the instance when the recommendation was generated.

*/ inline InstanceRecommendation& WithInstanceState(const InstanceState& value) { SetInstanceState(value); return *this;} /** *

The state of the instance when the recommendation was generated.

*/ inline InstanceRecommendation& WithInstanceState(InstanceState&& value) { SetInstanceState(std::move(value)); return *this;} /** *

A list of tags assigned to your Amazon EC2 instance recommendations.

*/ inline const Aws::Vector& GetTags() const{ return m_tags; } /** *

A list of tags assigned to your Amazon EC2 instance recommendations.

*/ inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; } /** *

A list of tags assigned to your Amazon EC2 instance recommendations.

*/ inline void SetTags(const Aws::Vector& value) { m_tagsHasBeenSet = true; m_tags = value; } /** *

A list of tags assigned to your Amazon EC2 instance recommendations.

*/ inline void SetTags(Aws::Vector&& value) { m_tagsHasBeenSet = true; m_tags = std::move(value); } /** *

A list of tags assigned to your Amazon EC2 instance recommendations.

*/ inline InstanceRecommendation& WithTags(const Aws::Vector& value) { SetTags(value); return *this;} /** *

A list of tags assigned to your Amazon EC2 instance recommendations.

*/ inline InstanceRecommendation& WithTags(Aws::Vector&& value) { SetTags(std::move(value)); return *this;} /** *

A list of tags assigned to your Amazon EC2 instance recommendations.

*/ inline InstanceRecommendation& AddTags(const Tag& value) { m_tagsHasBeenSet = true; m_tags.push_back(value); return *this; } /** *

A list of tags assigned to your Amazon EC2 instance recommendations.

*/ inline InstanceRecommendation& AddTags(Tag&& value) { m_tagsHasBeenSet = true; m_tags.push_back(std::move(value)); return *this; } /** *

An object that describes Compute Optimizer's integration status with your * external metrics provider.

*/ inline const ExternalMetricStatus& GetExternalMetricStatus() const{ return m_externalMetricStatus; } /** *

An object that describes Compute Optimizer's integration status with your * external metrics provider.

*/ inline bool ExternalMetricStatusHasBeenSet() const { return m_externalMetricStatusHasBeenSet; } /** *

An object that describes Compute Optimizer's integration status with your * external metrics provider.

*/ inline void SetExternalMetricStatus(const ExternalMetricStatus& value) { m_externalMetricStatusHasBeenSet = true; m_externalMetricStatus = value; } /** *

An object that describes Compute Optimizer's integration status with your * external metrics provider.

*/ inline void SetExternalMetricStatus(ExternalMetricStatus&& value) { m_externalMetricStatusHasBeenSet = true; m_externalMetricStatus = std::move(value); } /** *

An object that describes Compute Optimizer's integration status with your * external metrics provider.

*/ inline InstanceRecommendation& WithExternalMetricStatus(const ExternalMetricStatus& value) { SetExternalMetricStatus(value); return *this;} /** *

An object that describes Compute Optimizer's integration status with your * external metrics provider.

*/ inline InstanceRecommendation& WithExternalMetricStatus(ExternalMetricStatus&& value) { SetExternalMetricStatus(std::move(value)); return *this;} private: Aws::String m_instanceArn; bool m_instanceArnHasBeenSet = false; Aws::String m_accountId; bool m_accountIdHasBeenSet = false; Aws::String m_instanceName; bool m_instanceNameHasBeenSet = false; Aws::String m_currentInstanceType; bool m_currentInstanceTypeHasBeenSet = false; Finding m_finding; bool m_findingHasBeenSet = false; Aws::Vector m_findingReasonCodes; bool m_findingReasonCodesHasBeenSet = false; Aws::Vector m_utilizationMetrics; bool m_utilizationMetricsHasBeenSet = false; double m_lookBackPeriodInDays; bool m_lookBackPeriodInDaysHasBeenSet = false; Aws::Vector m_recommendationOptions; bool m_recommendationOptionsHasBeenSet = false; Aws::Vector m_recommendationSources; bool m_recommendationSourcesHasBeenSet = false; Aws::Utils::DateTime m_lastRefreshTimestamp; bool m_lastRefreshTimestampHasBeenSet = false; CurrentPerformanceRisk m_currentPerformanceRisk; bool m_currentPerformanceRiskHasBeenSet = false; EffectiveRecommendationPreferences m_effectiveRecommendationPreferences; bool m_effectiveRecommendationPreferencesHasBeenSet = false; Aws::Vector m_inferredWorkloadTypes; bool m_inferredWorkloadTypesHasBeenSet = false; InstanceState m_instanceState; bool m_instanceStateHasBeenSet = false; Aws::Vector m_tags; bool m_tagsHasBeenSet = false; ExternalMetricStatus m_externalMetricStatus; bool m_externalMetricStatusHasBeenSet = false; }; } // namespace Model } // namespace ComputeOptimizer } // namespace Aws