/** * 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 namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace ComputeOptimizer { namespace Model { /** *

Describes a recommendation option for an Amazon EC2 instance.

See * Also:

AWS * API Reference

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

The instance type of the instance recommendation.

*/ inline const Aws::String& GetInstanceType() const{ return m_instanceType; } /** *

The instance type of the instance recommendation.

*/ inline bool InstanceTypeHasBeenSet() const { return m_instanceTypeHasBeenSet; } /** *

The instance type of the instance recommendation.

*/ inline void SetInstanceType(const Aws::String& value) { m_instanceTypeHasBeenSet = true; m_instanceType = value; } /** *

The instance type of the instance recommendation.

*/ inline void SetInstanceType(Aws::String&& value) { m_instanceTypeHasBeenSet = true; m_instanceType = std::move(value); } /** *

The instance type of the instance recommendation.

*/ inline void SetInstanceType(const char* value) { m_instanceTypeHasBeenSet = true; m_instanceType.assign(value); } /** *

The instance type of the instance recommendation.

*/ inline InstanceRecommendationOption& WithInstanceType(const Aws::String& value) { SetInstanceType(value); return *this;} /** *

The instance type of the instance recommendation.

*/ inline InstanceRecommendationOption& WithInstanceType(Aws::String&& value) { SetInstanceType(std::move(value)); return *this;} /** *

The instance type of the instance recommendation.

*/ inline InstanceRecommendationOption& WithInstanceType(const char* value) { SetInstanceType(value); return *this;} /** *

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

The Cpu and * Memory metrics are the only projected utilization metrics returned. * Additionally, the Memory metric is returned only for resources that * have the unified CloudWatch agent installed on them. For more information, see * Enabling * Memory Utilization with the CloudWatch Agent.

*/ inline const Aws::Vector& GetProjectedUtilizationMetrics() const{ return m_projectedUtilizationMetrics; } /** *

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

The Cpu and * Memory metrics are the only projected utilization metrics returned. * Additionally, the Memory metric is returned only for resources that * have the unified CloudWatch agent installed on them. For more information, see * Enabling * Memory Utilization with the CloudWatch Agent.

*/ inline bool ProjectedUtilizationMetricsHasBeenSet() const { return m_projectedUtilizationMetricsHasBeenSet; } /** *

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

The Cpu and * Memory metrics are the only projected utilization metrics returned. * Additionally, the Memory metric is returned only for resources that * have the unified CloudWatch agent installed on them. For more information, see * Enabling * Memory Utilization with the CloudWatch Agent.

*/ inline void SetProjectedUtilizationMetrics(const Aws::Vector& value) { m_projectedUtilizationMetricsHasBeenSet = true; m_projectedUtilizationMetrics = value; } /** *

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

The Cpu and * Memory metrics are the only projected utilization metrics returned. * Additionally, the Memory metric is returned only for resources that * have the unified CloudWatch agent installed on them. For more information, see * Enabling * Memory Utilization with the CloudWatch Agent.

*/ inline void SetProjectedUtilizationMetrics(Aws::Vector&& value) { m_projectedUtilizationMetricsHasBeenSet = true; m_projectedUtilizationMetrics = std::move(value); } /** *

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

The Cpu and * Memory metrics are the only projected utilization metrics returned. * Additionally, the Memory metric is returned only for resources that * have the unified CloudWatch agent installed on them. For more information, see * Enabling * Memory Utilization with the CloudWatch Agent.

*/ inline InstanceRecommendationOption& WithProjectedUtilizationMetrics(const Aws::Vector& value) { SetProjectedUtilizationMetrics(value); return *this;} /** *

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

The Cpu and * Memory metrics are the only projected utilization metrics returned. * Additionally, the Memory metric is returned only for resources that * have the unified CloudWatch agent installed on them. For more information, see * Enabling * Memory Utilization with the CloudWatch Agent.

*/ inline InstanceRecommendationOption& WithProjectedUtilizationMetrics(Aws::Vector&& value) { SetProjectedUtilizationMetrics(std::move(value)); return *this;} /** *

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

The Cpu and * Memory metrics are the only projected utilization metrics returned. * Additionally, the Memory metric is returned only for resources that * have the unified CloudWatch agent installed on them. For more information, see * Enabling * Memory Utilization with the CloudWatch Agent.

*/ inline InstanceRecommendationOption& AddProjectedUtilizationMetrics(const UtilizationMetric& value) { m_projectedUtilizationMetricsHasBeenSet = true; m_projectedUtilizationMetrics.push_back(value); return *this; } /** *

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

The Cpu and * Memory metrics are the only projected utilization metrics returned. * Additionally, the Memory metric is returned only for resources that * have the unified CloudWatch agent installed on them. For more information, see * Enabling * Memory Utilization with the CloudWatch Agent.

*/ inline InstanceRecommendationOption& AddProjectedUtilizationMetrics(UtilizationMetric&& value) { m_projectedUtilizationMetricsHasBeenSet = true; m_projectedUtilizationMetrics.push_back(std::move(value)); return *this; } /** *

Describes the configuration differences between the current instance and the * recommended instance type. You should consider the configuration differences * before migrating your workloads from the current instance to the recommended * instance type. The Change * the instance type guide for Linux and Change * the instance type guide for Windows provide general guidance for getting * started with an instance migration.

Platform differences include:

*
  • Hypervisor — The hypervisor of the * recommended instance type is different than that of the current instance. For * example, the recommended instance type uses a Nitro hypervisor and the current * instance uses a Xen hypervisor. The differences that you should consider between * these hypervisors are covered in the Nitro Hypervisor * section of the Amazon EC2 frequently asked questions. For more information, see * Instances * built on the Nitro System in the Amazon EC2 User Guide for Linux, or * Instances * built on the Nitro System in the Amazon EC2 User Guide for * Windows.

  • NetworkInterface — The * network interface of the recommended instance type is different than that of the * current instance. For example, the recommended instance type supports enhanced * networking and the current instance might not. To enable enhanced networking for * the recommended instance type, you must install the Elastic Network Adapter * (ENA) driver or the Intel 82599 Virtual Function driver. For more information, * see Networking * and storage features and Enhanced * networking on Linux in the Amazon EC2 User Guide for Linux, or Networking * and storage features and Enhanced * networking on Windows in the Amazon EC2 User Guide for Windows.

    *
  • StorageInterface — The storage interface of * the recommended instance type is different than that of the current instance. * For example, the recommended instance type uses an NVMe storage interface and * the current instance does not. To access NVMe volumes for the recommended * instance type, you will need to install or upgrade the NVMe driver. For more * information, see Networking * and storage features and Amazon * EBS and NVMe on Linux instances in the Amazon EC2 User Guide for * Linux, or Networking * and storage features and Amazon * EBS and NVMe on Windows instances in the Amazon EC2 User Guide for * Windows.

  • InstanceStoreAvailability * — The recommended instance type does not support instance store volumes and the * current instance does. Before migrating, you might need to back up the data on * your instance store volumes if you want to preserve them. For more information, * see How * do I back up an instance store volume on my Amazon EC2 instance to Amazon * EBS? in the Amazon Web Services Premium Support Knowledge Base. For * more information, see Networking * and storage features and Amazon * EC2 instance store in the Amazon EC2 User Guide for Linux, or see Networking * and storage features and Amazon * EC2 instance store in the Amazon EC2 User Guide for Windows.

    *
  • VirtualizationType — The recommended * instance type uses the hardware virtual machine (HVM) virtualization type and * the current instance uses the paravirtual (PV) virtualization type. For more * information about the differences between these virtualization types, see Linux * AMI virtualization types in the Amazon EC2 User Guide for Linux, or * Windows * AMI virtualization types in the Amazon EC2 User Guide for * Windows.

  • Architecture — The CPU * architecture between the recommended instance type and the current instance is * different. For example, the recommended instance type might use an Arm CPU * architecture and the current instance type might use a different one, such as * x86. Before migrating, you should consider recompiling the software on your * instance for the new architecture. Alternatively, you might switch to an Amazon * Machine Image (AMI) that supports the new architecture. For more information * about the CPU architecture for each instance type, see Amazon EC2 Instance * Types.

*/ inline const Aws::Vector& GetPlatformDifferences() const{ return m_platformDifferences; } /** *

Describes the configuration differences between the current instance and the * recommended instance type. You should consider the configuration differences * before migrating your workloads from the current instance to the recommended * instance type. The Change * the instance type guide for Linux and Change * the instance type guide for Windows provide general guidance for getting * started with an instance migration.

Platform differences include:

*
  • Hypervisor — The hypervisor of the * recommended instance type is different than that of the current instance. For * example, the recommended instance type uses a Nitro hypervisor and the current * instance uses a Xen hypervisor. The differences that you should consider between * these hypervisors are covered in the Nitro Hypervisor * section of the Amazon EC2 frequently asked questions. For more information, see * Instances * built on the Nitro System in the Amazon EC2 User Guide for Linux, or * Instances * built on the Nitro System in the Amazon EC2 User Guide for * Windows.

  • NetworkInterface — The * network interface of the recommended instance type is different than that of the * current instance. For example, the recommended instance type supports enhanced * networking and the current instance might not. To enable enhanced networking for * the recommended instance type, you must install the Elastic Network Adapter * (ENA) driver or the Intel 82599 Virtual Function driver. For more information, * see Networking * and storage features and Enhanced * networking on Linux in the Amazon EC2 User Guide for Linux, or Networking * and storage features and Enhanced * networking on Windows in the Amazon EC2 User Guide for Windows.

    *
  • StorageInterface — The storage interface of * the recommended instance type is different than that of the current instance. * For example, the recommended instance type uses an NVMe storage interface and * the current instance does not. To access NVMe volumes for the recommended * instance type, you will need to install or upgrade the NVMe driver. For more * information, see Networking * and storage features and Amazon * EBS and NVMe on Linux instances in the Amazon EC2 User Guide for * Linux, or Networking * and storage features and Amazon * EBS and NVMe on Windows instances in the Amazon EC2 User Guide for * Windows.

  • InstanceStoreAvailability * — The recommended instance type does not support instance store volumes and the * current instance does. Before migrating, you might need to back up the data on * your instance store volumes if you want to preserve them. For more information, * see How * do I back up an instance store volume on my Amazon EC2 instance to Amazon * EBS? in the Amazon Web Services Premium Support Knowledge Base. For * more information, see Networking * and storage features and Amazon * EC2 instance store in the Amazon EC2 User Guide for Linux, or see Networking * and storage features and Amazon * EC2 instance store in the Amazon EC2 User Guide for Windows.

    *
  • VirtualizationType — The recommended * instance type uses the hardware virtual machine (HVM) virtualization type and * the current instance uses the paravirtual (PV) virtualization type. For more * information about the differences between these virtualization types, see Linux * AMI virtualization types in the Amazon EC2 User Guide for Linux, or * Windows * AMI virtualization types in the Amazon EC2 User Guide for * Windows.

  • Architecture — The CPU * architecture between the recommended instance type and the current instance is * different. For example, the recommended instance type might use an Arm CPU * architecture and the current instance type might use a different one, such as * x86. Before migrating, you should consider recompiling the software on your * instance for the new architecture. Alternatively, you might switch to an Amazon * Machine Image (AMI) that supports the new architecture. For more information * about the CPU architecture for each instance type, see Amazon EC2 Instance * Types.

*/ inline bool PlatformDifferencesHasBeenSet() const { return m_platformDifferencesHasBeenSet; } /** *

Describes the configuration differences between the current instance and the * recommended instance type. You should consider the configuration differences * before migrating your workloads from the current instance to the recommended * instance type. The Change * the instance type guide for Linux and Change * the instance type guide for Windows provide general guidance for getting * started with an instance migration.

Platform differences include:

*
  • Hypervisor — The hypervisor of the * recommended instance type is different than that of the current instance. For * example, the recommended instance type uses a Nitro hypervisor and the current * instance uses a Xen hypervisor. The differences that you should consider between * these hypervisors are covered in the Nitro Hypervisor * section of the Amazon EC2 frequently asked questions. For more information, see * Instances * built on the Nitro System in the Amazon EC2 User Guide for Linux, or * Instances * built on the Nitro System in the Amazon EC2 User Guide for * Windows.

  • NetworkInterface — The * network interface of the recommended instance type is different than that of the * current instance. For example, the recommended instance type supports enhanced * networking and the current instance might not. To enable enhanced networking for * the recommended instance type, you must install the Elastic Network Adapter * (ENA) driver or the Intel 82599 Virtual Function driver. For more information, * see Networking * and storage features and Enhanced * networking on Linux in the Amazon EC2 User Guide for Linux, or Networking * and storage features and Enhanced * networking on Windows in the Amazon EC2 User Guide for Windows.

    *
  • StorageInterface — The storage interface of * the recommended instance type is different than that of the current instance. * For example, the recommended instance type uses an NVMe storage interface and * the current instance does not. To access NVMe volumes for the recommended * instance type, you will need to install or upgrade the NVMe driver. For more * information, see Networking * and storage features and Amazon * EBS and NVMe on Linux instances in the Amazon EC2 User Guide for * Linux, or Networking * and storage features and Amazon * EBS and NVMe on Windows instances in the Amazon EC2 User Guide for * Windows.

  • InstanceStoreAvailability * — The recommended instance type does not support instance store volumes and the * current instance does. Before migrating, you might need to back up the data on * your instance store volumes if you want to preserve them. For more information, * see How * do I back up an instance store volume on my Amazon EC2 instance to Amazon * EBS? in the Amazon Web Services Premium Support Knowledge Base. For * more information, see Networking * and storage features and Amazon * EC2 instance store in the Amazon EC2 User Guide for Linux, or see Networking * and storage features and Amazon * EC2 instance store in the Amazon EC2 User Guide for Windows.

    *
  • VirtualizationType — The recommended * instance type uses the hardware virtual machine (HVM) virtualization type and * the current instance uses the paravirtual (PV) virtualization type. For more * information about the differences between these virtualization types, see Linux * AMI virtualization types in the Amazon EC2 User Guide for Linux, or * Windows * AMI virtualization types in the Amazon EC2 User Guide for * Windows.

  • Architecture — The CPU * architecture between the recommended instance type and the current instance is * different. For example, the recommended instance type might use an Arm CPU * architecture and the current instance type might use a different one, such as * x86. Before migrating, you should consider recompiling the software on your * instance for the new architecture. Alternatively, you might switch to an Amazon * Machine Image (AMI) that supports the new architecture. For more information * about the CPU architecture for each instance type, see Amazon EC2 Instance * Types.

*/ inline void SetPlatformDifferences(const Aws::Vector& value) { m_platformDifferencesHasBeenSet = true; m_platformDifferences = value; } /** *

Describes the configuration differences between the current instance and the * recommended instance type. You should consider the configuration differences * before migrating your workloads from the current instance to the recommended * instance type. The Change * the instance type guide for Linux and Change * the instance type guide for Windows provide general guidance for getting * started with an instance migration.

Platform differences include:

*
  • Hypervisor — The hypervisor of the * recommended instance type is different than that of the current instance. For * example, the recommended instance type uses a Nitro hypervisor and the current * instance uses a Xen hypervisor. The differences that you should consider between * these hypervisors are covered in the Nitro Hypervisor * section of the Amazon EC2 frequently asked questions. For more information, see * Instances * built on the Nitro System in the Amazon EC2 User Guide for Linux, or * Instances * built on the Nitro System in the Amazon EC2 User Guide for * Windows.

  • NetworkInterface — The * network interface of the recommended instance type is different than that of the * current instance. For example, the recommended instance type supports enhanced * networking and the current instance might not. To enable enhanced networking for * the recommended instance type, you must install the Elastic Network Adapter * (ENA) driver or the Intel 82599 Virtual Function driver. For more information, * see Networking * and storage features and Enhanced * networking on Linux in the Amazon EC2 User Guide for Linux, or Networking * and storage features and Enhanced * networking on Windows in the Amazon EC2 User Guide for Windows.

    *
  • StorageInterface — The storage interface of * the recommended instance type is different than that of the current instance. * For example, the recommended instance type uses an NVMe storage interface and * the current instance does not. To access NVMe volumes for the recommended * instance type, you will need to install or upgrade the NVMe driver. For more * information, see Networking * and storage features and Amazon * EBS and NVMe on Linux instances in the Amazon EC2 User Guide for * Linux, or Networking * and storage features and Amazon * EBS and NVMe on Windows instances in the Amazon EC2 User Guide for * Windows.

  • InstanceStoreAvailability * — The recommended instance type does not support instance store volumes and the * current instance does. Before migrating, you might need to back up the data on * your instance store volumes if you want to preserve them. For more information, * see How * do I back up an instance store volume on my Amazon EC2 instance to Amazon * EBS? in the Amazon Web Services Premium Support Knowledge Base. For * more information, see Networking * and storage features and Amazon * EC2 instance store in the Amazon EC2 User Guide for Linux, or see Networking * and storage features and Amazon * EC2 instance store in the Amazon EC2 User Guide for Windows.

    *
  • VirtualizationType — The recommended * instance type uses the hardware virtual machine (HVM) virtualization type and * the current instance uses the paravirtual (PV) virtualization type. For more * information about the differences between these virtualization types, see Linux * AMI virtualization types in the Amazon EC2 User Guide for Linux, or * Windows * AMI virtualization types in the Amazon EC2 User Guide for * Windows.

  • Architecture — The CPU * architecture between the recommended instance type and the current instance is * different. For example, the recommended instance type might use an Arm CPU * architecture and the current instance type might use a different one, such as * x86. Before migrating, you should consider recompiling the software on your * instance for the new architecture. Alternatively, you might switch to an Amazon * Machine Image (AMI) that supports the new architecture. For more information * about the CPU architecture for each instance type, see Amazon EC2 Instance * Types.

*/ inline void SetPlatformDifferences(Aws::Vector&& value) { m_platformDifferencesHasBeenSet = true; m_platformDifferences = std::move(value); } /** *

Describes the configuration differences between the current instance and the * recommended instance type. You should consider the configuration differences * before migrating your workloads from the current instance to the recommended * instance type. The Change * the instance type guide for Linux and Change * the instance type guide for Windows provide general guidance for getting * started with an instance migration.

Platform differences include:

*
  • Hypervisor — The hypervisor of the * recommended instance type is different than that of the current instance. For * example, the recommended instance type uses a Nitro hypervisor and the current * instance uses a Xen hypervisor. The differences that you should consider between * these hypervisors are covered in the Nitro Hypervisor * section of the Amazon EC2 frequently asked questions. For more information, see * Instances * built on the Nitro System in the Amazon EC2 User Guide for Linux, or * Instances * built on the Nitro System in the Amazon EC2 User Guide for * Windows.

  • NetworkInterface — The * network interface of the recommended instance type is different than that of the * current instance. For example, the recommended instance type supports enhanced * networking and the current instance might not. To enable enhanced networking for * the recommended instance type, you must install the Elastic Network Adapter * (ENA) driver or the Intel 82599 Virtual Function driver. For more information, * see Networking * and storage features and Enhanced * networking on Linux in the Amazon EC2 User Guide for Linux, or Networking * and storage features and Enhanced * networking on Windows in the Amazon EC2 User Guide for Windows.

    *
  • StorageInterface — The storage interface of * the recommended instance type is different than that of the current instance. * For example, the recommended instance type uses an NVMe storage interface and * the current instance does not. To access NVMe volumes for the recommended * instance type, you will need to install or upgrade the NVMe driver. For more * information, see Networking * and storage features and Amazon * EBS and NVMe on Linux instances in the Amazon EC2 User Guide for * Linux, or Networking * and storage features and Amazon * EBS and NVMe on Windows instances in the Amazon EC2 User Guide for * Windows.

  • InstanceStoreAvailability * — The recommended instance type does not support instance store volumes and the * current instance does. Before migrating, you might need to back up the data on * your instance store volumes if you want to preserve them. For more information, * see How * do I back up an instance store volume on my Amazon EC2 instance to Amazon * EBS? in the Amazon Web Services Premium Support Knowledge Base. For * more information, see Networking * and storage features and Amazon * EC2 instance store in the Amazon EC2 User Guide for Linux, or see Networking * and storage features and Amazon * EC2 instance store in the Amazon EC2 User Guide for Windows.

    *
  • VirtualizationType — The recommended * instance type uses the hardware virtual machine (HVM) virtualization type and * the current instance uses the paravirtual (PV) virtualization type. For more * information about the differences between these virtualization types, see Linux * AMI virtualization types in the Amazon EC2 User Guide for Linux, or * Windows * AMI virtualization types in the Amazon EC2 User Guide for * Windows.

  • Architecture — The CPU * architecture between the recommended instance type and the current instance is * different. For example, the recommended instance type might use an Arm CPU * architecture and the current instance type might use a different one, such as * x86. Before migrating, you should consider recompiling the software on your * instance for the new architecture. Alternatively, you might switch to an Amazon * Machine Image (AMI) that supports the new architecture. For more information * about the CPU architecture for each instance type, see Amazon EC2 Instance * Types.

*/ inline InstanceRecommendationOption& WithPlatformDifferences(const Aws::Vector& value) { SetPlatformDifferences(value); return *this;} /** *

Describes the configuration differences between the current instance and the * recommended instance type. You should consider the configuration differences * before migrating your workloads from the current instance to the recommended * instance type. The Change * the instance type guide for Linux and Change * the instance type guide for Windows provide general guidance for getting * started with an instance migration.

Platform differences include:

*
  • Hypervisor — The hypervisor of the * recommended instance type is different than that of the current instance. For * example, the recommended instance type uses a Nitro hypervisor and the current * instance uses a Xen hypervisor. The differences that you should consider between * these hypervisors are covered in the Nitro Hypervisor * section of the Amazon EC2 frequently asked questions. For more information, see * Instances * built on the Nitro System in the Amazon EC2 User Guide for Linux, or * Instances * built on the Nitro System in the Amazon EC2 User Guide for * Windows.

  • NetworkInterface — The * network interface of the recommended instance type is different than that of the * current instance. For example, the recommended instance type supports enhanced * networking and the current instance might not. To enable enhanced networking for * the recommended instance type, you must install the Elastic Network Adapter * (ENA) driver or the Intel 82599 Virtual Function driver. For more information, * see Networking * and storage features and Enhanced * networking on Linux in the Amazon EC2 User Guide for Linux, or Networking * and storage features and Enhanced * networking on Windows in the Amazon EC2 User Guide for Windows.

    *
  • StorageInterface — The storage interface of * the recommended instance type is different than that of the current instance. * For example, the recommended instance type uses an NVMe storage interface and * the current instance does not. To access NVMe volumes for the recommended * instance type, you will need to install or upgrade the NVMe driver. For more * information, see Networking * and storage features and Amazon * EBS and NVMe on Linux instances in the Amazon EC2 User Guide for * Linux, or Networking * and storage features and Amazon * EBS and NVMe on Windows instances in the Amazon EC2 User Guide for * Windows.

  • InstanceStoreAvailability * — The recommended instance type does not support instance store volumes and the * current instance does. Before migrating, you might need to back up the data on * your instance store volumes if you want to preserve them. For more information, * see How * do I back up an instance store volume on my Amazon EC2 instance to Amazon * EBS? in the Amazon Web Services Premium Support Knowledge Base. For * more information, see Networking * and storage features and Amazon * EC2 instance store in the Amazon EC2 User Guide for Linux, or see Networking * and storage features and Amazon * EC2 instance store in the Amazon EC2 User Guide for Windows.

    *
  • VirtualizationType — The recommended * instance type uses the hardware virtual machine (HVM) virtualization type and * the current instance uses the paravirtual (PV) virtualization type. For more * information about the differences between these virtualization types, see Linux * AMI virtualization types in the Amazon EC2 User Guide for Linux, or * Windows * AMI virtualization types in the Amazon EC2 User Guide for * Windows.

  • Architecture — The CPU * architecture between the recommended instance type and the current instance is * different. For example, the recommended instance type might use an Arm CPU * architecture and the current instance type might use a different one, such as * x86. Before migrating, you should consider recompiling the software on your * instance for the new architecture. Alternatively, you might switch to an Amazon * Machine Image (AMI) that supports the new architecture. For more information * about the CPU architecture for each instance type, see Amazon EC2 Instance * Types.

*/ inline InstanceRecommendationOption& WithPlatformDifferences(Aws::Vector&& value) { SetPlatformDifferences(std::move(value)); return *this;} /** *

Describes the configuration differences between the current instance and the * recommended instance type. You should consider the configuration differences * before migrating your workloads from the current instance to the recommended * instance type. The Change * the instance type guide for Linux and Change * the instance type guide for Windows provide general guidance for getting * started with an instance migration.

Platform differences include:

*
  • Hypervisor — The hypervisor of the * recommended instance type is different than that of the current instance. For * example, the recommended instance type uses a Nitro hypervisor and the current * instance uses a Xen hypervisor. The differences that you should consider between * these hypervisors are covered in the Nitro Hypervisor * section of the Amazon EC2 frequently asked questions. For more information, see * Instances * built on the Nitro System in the Amazon EC2 User Guide for Linux, or * Instances * built on the Nitro System in the Amazon EC2 User Guide for * Windows.

  • NetworkInterface — The * network interface of the recommended instance type is different than that of the * current instance. For example, the recommended instance type supports enhanced * networking and the current instance might not. To enable enhanced networking for * the recommended instance type, you must install the Elastic Network Adapter * (ENA) driver or the Intel 82599 Virtual Function driver. For more information, * see Networking * and storage features and Enhanced * networking on Linux in the Amazon EC2 User Guide for Linux, or Networking * and storage features and Enhanced * networking on Windows in the Amazon EC2 User Guide for Windows.

    *
  • StorageInterface — The storage interface of * the recommended instance type is different than that of the current instance. * For example, the recommended instance type uses an NVMe storage interface and * the current instance does not. To access NVMe volumes for the recommended * instance type, you will need to install or upgrade the NVMe driver. For more * information, see Networking * and storage features and Amazon * EBS and NVMe on Linux instances in the Amazon EC2 User Guide for * Linux, or Networking * and storage features and Amazon * EBS and NVMe on Windows instances in the Amazon EC2 User Guide for * Windows.

  • InstanceStoreAvailability * — The recommended instance type does not support instance store volumes and the * current instance does. Before migrating, you might need to back up the data on * your instance store volumes if you want to preserve them. For more information, * see How * do I back up an instance store volume on my Amazon EC2 instance to Amazon * EBS? in the Amazon Web Services Premium Support Knowledge Base. For * more information, see Networking * and storage features and Amazon * EC2 instance store in the Amazon EC2 User Guide for Linux, or see Networking * and storage features and Amazon * EC2 instance store in the Amazon EC2 User Guide for Windows.

    *
  • VirtualizationType — The recommended * instance type uses the hardware virtual machine (HVM) virtualization type and * the current instance uses the paravirtual (PV) virtualization type. For more * information about the differences between these virtualization types, see Linux * AMI virtualization types in the Amazon EC2 User Guide for Linux, or * Windows * AMI virtualization types in the Amazon EC2 User Guide for * Windows.

  • Architecture — The CPU * architecture between the recommended instance type and the current instance is * different. For example, the recommended instance type might use an Arm CPU * architecture and the current instance type might use a different one, such as * x86. Before migrating, you should consider recompiling the software on your * instance for the new architecture. Alternatively, you might switch to an Amazon * Machine Image (AMI) that supports the new architecture. For more information * about the CPU architecture for each instance type, see Amazon EC2 Instance * Types.

*/ inline InstanceRecommendationOption& AddPlatformDifferences(const PlatformDifference& value) { m_platformDifferencesHasBeenSet = true; m_platformDifferences.push_back(value); return *this; } /** *

Describes the configuration differences between the current instance and the * recommended instance type. You should consider the configuration differences * before migrating your workloads from the current instance to the recommended * instance type. The Change * the instance type guide for Linux and Change * the instance type guide for Windows provide general guidance for getting * started with an instance migration.

Platform differences include:

*
  • Hypervisor — The hypervisor of the * recommended instance type is different than that of the current instance. For * example, the recommended instance type uses a Nitro hypervisor and the current * instance uses a Xen hypervisor. The differences that you should consider between * these hypervisors are covered in the Nitro Hypervisor * section of the Amazon EC2 frequently asked questions. For more information, see * Instances * built on the Nitro System in the Amazon EC2 User Guide for Linux, or * Instances * built on the Nitro System in the Amazon EC2 User Guide for * Windows.

  • NetworkInterface — The * network interface of the recommended instance type is different than that of the * current instance. For example, the recommended instance type supports enhanced * networking and the current instance might not. To enable enhanced networking for * the recommended instance type, you must install the Elastic Network Adapter * (ENA) driver or the Intel 82599 Virtual Function driver. For more information, * see Networking * and storage features and Enhanced * networking on Linux in the Amazon EC2 User Guide for Linux, or Networking * and storage features and Enhanced * networking on Windows in the Amazon EC2 User Guide for Windows.

    *
  • StorageInterface — The storage interface of * the recommended instance type is different than that of the current instance. * For example, the recommended instance type uses an NVMe storage interface and * the current instance does not. To access NVMe volumes for the recommended * instance type, you will need to install or upgrade the NVMe driver. For more * information, see Networking * and storage features and Amazon * EBS and NVMe on Linux instances in the Amazon EC2 User Guide for * Linux, or Networking * and storage features and Amazon * EBS and NVMe on Windows instances in the Amazon EC2 User Guide for * Windows.

  • InstanceStoreAvailability * — The recommended instance type does not support instance store volumes and the * current instance does. Before migrating, you might need to back up the data on * your instance store volumes if you want to preserve them. For more information, * see How * do I back up an instance store volume on my Amazon EC2 instance to Amazon * EBS? in the Amazon Web Services Premium Support Knowledge Base. For * more information, see Networking * and storage features and Amazon * EC2 instance store in the Amazon EC2 User Guide for Linux, or see Networking * and storage features and Amazon * EC2 instance store in the Amazon EC2 User Guide for Windows.

    *
  • VirtualizationType — The recommended * instance type uses the hardware virtual machine (HVM) virtualization type and * the current instance uses the paravirtual (PV) virtualization type. For more * information about the differences between these virtualization types, see Linux * AMI virtualization types in the Amazon EC2 User Guide for Linux, or * Windows * AMI virtualization types in the Amazon EC2 User Guide for * Windows.

  • Architecture — The CPU * architecture between the recommended instance type and the current instance is * different. For example, the recommended instance type might use an Arm CPU * architecture and the current instance type might use a different one, such as * x86. Before migrating, you should consider recompiling the software on your * instance for the new architecture. Alternatively, you might switch to an Amazon * Machine Image (AMI) that supports the new architecture. For more information * about the CPU architecture for each instance type, see Amazon EC2 Instance * Types.

*/ inline InstanceRecommendationOption& AddPlatformDifferences(PlatformDifference&& value) { m_platformDifferencesHasBeenSet = true; m_platformDifferences.push_back(std::move(value)); return *this; } /** *

The performance risk of the instance recommendation option.

*

Performance risk indicates the likelihood of the recommended instance type * not meeting the resource needs of your workload. Compute Optimizer calculates an * individual performance risk score for each specification of the recommended * instance, including CPU, memory, EBS throughput, EBS IOPS, disk throughput, disk * IOPS, network throughput, and network PPS. The performance risk of the * recommended instance is calculated as the maximum performance risk score across * the analyzed resource specifications.

The value ranges from * 0 - 4, with 0 meaning that the * recommended resource is predicted to always provide enough hardware capability. * The higher the performance risk is, the more likely you should validate whether * the recommendation will meet the performance requirements of your workload * before migrating your resource.

*/ inline double GetPerformanceRisk() const{ return m_performanceRisk; } /** *

The performance risk of the instance recommendation option.

*

Performance risk indicates the likelihood of the recommended instance type * not meeting the resource needs of your workload. Compute Optimizer calculates an * individual performance risk score for each specification of the recommended * instance, including CPU, memory, EBS throughput, EBS IOPS, disk throughput, disk * IOPS, network throughput, and network PPS. The performance risk of the * recommended instance is calculated as the maximum performance risk score across * the analyzed resource specifications.

The value ranges from * 0 - 4, with 0 meaning that the * recommended resource is predicted to always provide enough hardware capability. * The higher the performance risk is, the more likely you should validate whether * the recommendation will meet the performance requirements of your workload * before migrating your resource.

*/ inline bool PerformanceRiskHasBeenSet() const { return m_performanceRiskHasBeenSet; } /** *

The performance risk of the instance recommendation option.

*

Performance risk indicates the likelihood of the recommended instance type * not meeting the resource needs of your workload. Compute Optimizer calculates an * individual performance risk score for each specification of the recommended * instance, including CPU, memory, EBS throughput, EBS IOPS, disk throughput, disk * IOPS, network throughput, and network PPS. The performance risk of the * recommended instance is calculated as the maximum performance risk score across * the analyzed resource specifications.

The value ranges from * 0 - 4, with 0 meaning that the * recommended resource is predicted to always provide enough hardware capability. * The higher the performance risk is, the more likely you should validate whether * the recommendation will meet the performance requirements of your workload * before migrating your resource.

*/ inline void SetPerformanceRisk(double value) { m_performanceRiskHasBeenSet = true; m_performanceRisk = value; } /** *

The performance risk of the instance recommendation option.

*

Performance risk indicates the likelihood of the recommended instance type * not meeting the resource needs of your workload. Compute Optimizer calculates an * individual performance risk score for each specification of the recommended * instance, including CPU, memory, EBS throughput, EBS IOPS, disk throughput, disk * IOPS, network throughput, and network PPS. The performance risk of the * recommended instance is calculated as the maximum performance risk score across * the analyzed resource specifications.

The value ranges from * 0 - 4, with 0 meaning that the * recommended resource is predicted to always provide enough hardware capability. * The higher the performance risk is, the more likely you should validate whether * the recommendation will meet the performance requirements of your workload * before migrating your resource.

*/ inline InstanceRecommendationOption& WithPerformanceRisk(double value) { SetPerformanceRisk(value); return *this;} /** *

The rank of the instance recommendation option.

The top recommendation * option is ranked as 1.

*/ inline int GetRank() const{ return m_rank; } /** *

The rank of the instance recommendation option.

The top recommendation * option is ranked as 1.

*/ inline bool RankHasBeenSet() const { return m_rankHasBeenSet; } /** *

The rank of the instance recommendation option.

The top recommendation * option is ranked as 1.

*/ inline void SetRank(int value) { m_rankHasBeenSet = true; m_rank = value; } /** *

The rank of the instance recommendation option.

The top recommendation * option is ranked as 1.

*/ inline InstanceRecommendationOption& WithRank(int value) { SetRank(value); return *this;} /** *

An object that describes the savings opportunity for the instance * recommendation option. Savings opportunity includes the estimated monthly * savings amount and percentage.

*/ inline const SavingsOpportunity& GetSavingsOpportunity() const{ return m_savingsOpportunity; } /** *

An object that describes the savings opportunity for the instance * recommendation option. Savings opportunity includes the estimated monthly * savings amount and percentage.

*/ inline bool SavingsOpportunityHasBeenSet() const { return m_savingsOpportunityHasBeenSet; } /** *

An object that describes the savings opportunity for the instance * recommendation option. Savings opportunity includes the estimated monthly * savings amount and percentage.

*/ inline void SetSavingsOpportunity(const SavingsOpportunity& value) { m_savingsOpportunityHasBeenSet = true; m_savingsOpportunity = value; } /** *

An object that describes the savings opportunity for the instance * recommendation option. Savings opportunity includes the estimated monthly * savings amount and percentage.

*/ inline void SetSavingsOpportunity(SavingsOpportunity&& value) { m_savingsOpportunityHasBeenSet = true; m_savingsOpportunity = std::move(value); } /** *

An object that describes the savings opportunity for the instance * recommendation option. Savings opportunity includes the estimated monthly * savings amount and percentage.

*/ inline InstanceRecommendationOption& WithSavingsOpportunity(const SavingsOpportunity& value) { SetSavingsOpportunity(value); return *this;} /** *

An object that describes the savings opportunity for the instance * recommendation option. Savings opportunity includes the estimated monthly * savings amount and percentage.

*/ inline InstanceRecommendationOption& WithSavingsOpportunity(SavingsOpportunity&& value) { SetSavingsOpportunity(std::move(value)); return *this;} /** *

The level of effort required to migrate from the current instance type to the * recommended instance type.

For example, the migration effort is * Low if Amazon EMR is the inferred workload type and an Amazon Web * Services Graviton instance type is recommended. The migration effort is * Medium if a workload type couldn't be inferred but an Amazon Web * Services Graviton instance type is recommended. The migration effort is * VeryLow if both the current and recommended instance types are of * the same CPU architecture.

*/ inline const MigrationEffort& GetMigrationEffort() const{ return m_migrationEffort; } /** *

The level of effort required to migrate from the current instance type to the * recommended instance type.

For example, the migration effort is * Low if Amazon EMR is the inferred workload type and an Amazon Web * Services Graviton instance type is recommended. The migration effort is * Medium if a workload type couldn't be inferred but an Amazon Web * Services Graviton instance type is recommended. The migration effort is * VeryLow if both the current and recommended instance types are of * the same CPU architecture.

*/ inline bool MigrationEffortHasBeenSet() const { return m_migrationEffortHasBeenSet; } /** *

The level of effort required to migrate from the current instance type to the * recommended instance type.

For example, the migration effort is * Low if Amazon EMR is the inferred workload type and an Amazon Web * Services Graviton instance type is recommended. The migration effort is * Medium if a workload type couldn't be inferred but an Amazon Web * Services Graviton instance type is recommended. The migration effort is * VeryLow if both the current and recommended instance types are of * the same CPU architecture.

*/ inline void SetMigrationEffort(const MigrationEffort& value) { m_migrationEffortHasBeenSet = true; m_migrationEffort = value; } /** *

The level of effort required to migrate from the current instance type to the * recommended instance type.

For example, the migration effort is * Low if Amazon EMR is the inferred workload type and an Amazon Web * Services Graviton instance type is recommended. The migration effort is * Medium if a workload type couldn't be inferred but an Amazon Web * Services Graviton instance type is recommended. The migration effort is * VeryLow if both the current and recommended instance types are of * the same CPU architecture.

*/ inline void SetMigrationEffort(MigrationEffort&& value) { m_migrationEffortHasBeenSet = true; m_migrationEffort = std::move(value); } /** *

The level of effort required to migrate from the current instance type to the * recommended instance type.

For example, the migration effort is * Low if Amazon EMR is the inferred workload type and an Amazon Web * Services Graviton instance type is recommended. The migration effort is * Medium if a workload type couldn't be inferred but an Amazon Web * Services Graviton instance type is recommended. The migration effort is * VeryLow if both the current and recommended instance types are of * the same CPU architecture.

*/ inline InstanceRecommendationOption& WithMigrationEffort(const MigrationEffort& value) { SetMigrationEffort(value); return *this;} /** *

The level of effort required to migrate from the current instance type to the * recommended instance type.

For example, the migration effort is * Low if Amazon EMR is the inferred workload type and an Amazon Web * Services Graviton instance type is recommended. The migration effort is * Medium if a workload type couldn't be inferred but an Amazon Web * Services Graviton instance type is recommended. The migration effort is * VeryLow if both the current and recommended instance types are of * the same CPU architecture.

*/ inline InstanceRecommendationOption& WithMigrationEffort(MigrationEffort&& value) { SetMigrationEffort(std::move(value)); return *this;} private: Aws::String m_instanceType; bool m_instanceTypeHasBeenSet = false; Aws::Vector m_projectedUtilizationMetrics; bool m_projectedUtilizationMetricsHasBeenSet = false; Aws::Vector m_platformDifferences; bool m_platformDifferencesHasBeenSet = false; double m_performanceRisk; bool m_performanceRiskHasBeenSet = false; int m_rank; bool m_rankHasBeenSet = false; SavingsOpportunity m_savingsOpportunity; bool m_savingsOpportunityHasBeenSet = false; MigrationEffort m_migrationEffort; bool m_migrationEffortHasBeenSet = false; }; } // namespace Model } // namespace ComputeOptimizer } // namespace Aws