/**
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * SPDX-License-Identifier: Apache-2.0.
 */
#pragma once
#include  An object that represents the attributes of a compute environment that can be
   * updated. For more information, see Updating
   * compute environments in the Batch User Guide.See
   * Also:
   AWS
   * API Reference
The minimum number of vCPUs that an environment should maintain (even if the
     * compute environment is DISABLED).
This parameter * isn't applicable to jobs that are running on Fargate resources. Don't specify * it.
*/ inline int GetMinvCpus() const{ return m_minvCpus; } /** *The minimum number of vCPUs that an environment should maintain (even if the
     * compute environment is DISABLED).
This parameter * isn't applicable to jobs that are running on Fargate resources. Don't specify * it.
*/ inline bool MinvCpusHasBeenSet() const { return m_minvCpusHasBeenSet; } /** *The minimum number of vCPUs that an environment should maintain (even if the
     * compute environment is DISABLED).
This parameter * isn't applicable to jobs that are running on Fargate resources. Don't specify * it.
*/ inline void SetMinvCpus(int value) { m_minvCpusHasBeenSet = true; m_minvCpus = value; } /** *The minimum number of vCPUs that an environment should maintain (even if the
     * compute environment is DISABLED).
This parameter * isn't applicable to jobs that are running on Fargate resources. Don't specify * it.
*/ inline ComputeResourceUpdate& WithMinvCpus(int value) { SetMinvCpus(value); return *this;} /** *The maximum number of Amazon EC2 vCPUs that an environment can reach.
*With both BEST_FIT_PROGRESSIVE and
     * SPOT_CAPACITY_OPTIMIZED allocation strategies using On-Demand or
     * Spot Instances, and the BEST_FIT strategy using Spot Instances,
     * Batch might need to exceed maxvCpus to meet your capacity
     * requirements. In this event, Batch never exceeds maxvCpus by more
     * than a single instance. That is, no more than a single instance from among those
     * specified in your compute environment.
The maximum number of Amazon EC2 vCPUs that an environment can reach.
*With both BEST_FIT_PROGRESSIVE and
     * SPOT_CAPACITY_OPTIMIZED allocation strategies using On-Demand or
     * Spot Instances, and the BEST_FIT strategy using Spot Instances,
     * Batch might need to exceed maxvCpus to meet your capacity
     * requirements. In this event, Batch never exceeds maxvCpus by more
     * than a single instance. That is, no more than a single instance from among those
     * specified in your compute environment.
The maximum number of Amazon EC2 vCPUs that an environment can reach.
*With both BEST_FIT_PROGRESSIVE and
     * SPOT_CAPACITY_OPTIMIZED allocation strategies using On-Demand or
     * Spot Instances, and the BEST_FIT strategy using Spot Instances,
     * Batch might need to exceed maxvCpus to meet your capacity
     * requirements. In this event, Batch never exceeds maxvCpus by more
     * than a single instance. That is, no more than a single instance from among those
     * specified in your compute environment.
The maximum number of Amazon EC2 vCPUs that an environment can reach.
*With both BEST_FIT_PROGRESSIVE and
     * SPOT_CAPACITY_OPTIMIZED allocation strategies using On-Demand or
     * Spot Instances, and the BEST_FIT strategy using Spot Instances,
     * Batch might need to exceed maxvCpus to meet your capacity
     * requirements. In this event, Batch never exceeds maxvCpus by more
     * than a single instance. That is, no more than a single instance from among those
     * specified in your compute environment.
The desired number of vCPUS in the compute environment. Batch modifies this * value between the minimum and maximum values based on job queue demand.
*This parameter isn't applicable to jobs that are running on Fargate * resources. Don't specify it.
Batch doesn't support * changing the desired number of vCPUs of an existing compute environment. Don't * specify this parameter for compute environments using Amazon EKS clusters.
*When you update the desiredvCpus setting, the
     * value must be between the minvCpus and maxvCpus
     * values. 
Additionally, the updated desiredvCpus value must
     * be greater than or equal to the current desiredvCpus value. For
     * more information, see Troubleshooting
     * Batch in the Batch User Guide.
The desired number of vCPUS in the compute environment. Batch modifies this * value between the minimum and maximum values based on job queue demand.
*This parameter isn't applicable to jobs that are running on Fargate * resources. Don't specify it.
Batch doesn't support * changing the desired number of vCPUs of an existing compute environment. Don't * specify this parameter for compute environments using Amazon EKS clusters.
*When you update the desiredvCpus setting, the
     * value must be between the minvCpus and maxvCpus
     * values. 
Additionally, the updated desiredvCpus value must
     * be greater than or equal to the current desiredvCpus value. For
     * more information, see Troubleshooting
     * Batch in the Batch User Guide.
The desired number of vCPUS in the compute environment. Batch modifies this * value between the minimum and maximum values based on job queue demand.
*This parameter isn't applicable to jobs that are running on Fargate * resources. Don't specify it.
Batch doesn't support * changing the desired number of vCPUs of an existing compute environment. Don't * specify this parameter for compute environments using Amazon EKS clusters.
*When you update the desiredvCpus setting, the
     * value must be between the minvCpus and maxvCpus
     * values. 
Additionally, the updated desiredvCpus value must
     * be greater than or equal to the current desiredvCpus value. For
     * more information, see Troubleshooting
     * Batch in the Batch User Guide.
The desired number of vCPUS in the compute environment. Batch modifies this * value between the minimum and maximum values based on job queue demand.
*This parameter isn't applicable to jobs that are running on Fargate * resources. Don't specify it.
Batch doesn't support * changing the desired number of vCPUs of an existing compute environment. Don't * specify this parameter for compute environments using Amazon EKS clusters.
*When you update the desiredvCpus setting, the
     * value must be between the minvCpus and maxvCpus
     * values. 
Additionally, the updated desiredvCpus value must
     * be greater than or equal to the current desiredvCpus value. For
     * more information, see Troubleshooting
     * Batch in the Batch User Guide.
The VPC subnets where the compute resources are launched. Fargate compute * resources can contain up to 16 subnets. For Fargate compute resources, providing * an empty list will be handled as if this parameter wasn't specified and no * change is made. For EC2 compute resources, providing an empty list removes the * VPC subnets from the compute resource. For more information, see VPCs * and subnets in the Amazon VPC User Guide.
When updating a * compute environment, changing the VPC subnets requires an infrastructure update * of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
Batch on * Amazon EC2 and Batch on Amazon EKS support Local Zones. For more information, * see * Local Zones in the Amazon EC2 User Guide for Linux Instances, Amazon * EKS and Amazon Web Services Local Zones in the Amazon EKS User Guide * and * Amazon ECS clusters in Local Zones, Wavelength Zones, and Amazon Web Services * Outposts in the Amazon ECS Developer Guide.
Batch on Fargate * doesn't currently support Local Zones.
*/ inline const Aws::VectorThe VPC subnets where the compute resources are launched. Fargate compute * resources can contain up to 16 subnets. For Fargate compute resources, providing * an empty list will be handled as if this parameter wasn't specified and no * change is made. For EC2 compute resources, providing an empty list removes the * VPC subnets from the compute resource. For more information, see VPCs * and subnets in the Amazon VPC User Guide.
When updating a * compute environment, changing the VPC subnets requires an infrastructure update * of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
Batch on * Amazon EC2 and Batch on Amazon EKS support Local Zones. For more information, * see * Local Zones in the Amazon EC2 User Guide for Linux Instances, Amazon * EKS and Amazon Web Services Local Zones in the Amazon EKS User Guide * and * Amazon ECS clusters in Local Zones, Wavelength Zones, and Amazon Web Services * Outposts in the Amazon ECS Developer Guide.
Batch on Fargate * doesn't currently support Local Zones.
*/ inline bool SubnetsHasBeenSet() const { return m_subnetsHasBeenSet; } /** *The VPC subnets where the compute resources are launched. Fargate compute * resources can contain up to 16 subnets. For Fargate compute resources, providing * an empty list will be handled as if this parameter wasn't specified and no * change is made. For EC2 compute resources, providing an empty list removes the * VPC subnets from the compute resource. For more information, see VPCs * and subnets in the Amazon VPC User Guide.
When updating a * compute environment, changing the VPC subnets requires an infrastructure update * of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
Batch on * Amazon EC2 and Batch on Amazon EKS support Local Zones. For more information, * see * Local Zones in the Amazon EC2 User Guide for Linux Instances, Amazon * EKS and Amazon Web Services Local Zones in the Amazon EKS User Guide * and * Amazon ECS clusters in Local Zones, Wavelength Zones, and Amazon Web Services * Outposts in the Amazon ECS Developer Guide.
Batch on Fargate * doesn't currently support Local Zones.
*/ inline void SetSubnets(const Aws::VectorThe VPC subnets where the compute resources are launched. Fargate compute * resources can contain up to 16 subnets. For Fargate compute resources, providing * an empty list will be handled as if this parameter wasn't specified and no * change is made. For EC2 compute resources, providing an empty list removes the * VPC subnets from the compute resource. For more information, see VPCs * and subnets in the Amazon VPC User Guide.
When updating a * compute environment, changing the VPC subnets requires an infrastructure update * of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
Batch on * Amazon EC2 and Batch on Amazon EKS support Local Zones. For more information, * see * Local Zones in the Amazon EC2 User Guide for Linux Instances, Amazon * EKS and Amazon Web Services Local Zones in the Amazon EKS User Guide * and * Amazon ECS clusters in Local Zones, Wavelength Zones, and Amazon Web Services * Outposts in the Amazon ECS Developer Guide.
Batch on Fargate * doesn't currently support Local Zones.
*/ inline void SetSubnets(Aws::VectorThe VPC subnets where the compute resources are launched. Fargate compute * resources can contain up to 16 subnets. For Fargate compute resources, providing * an empty list will be handled as if this parameter wasn't specified and no * change is made. For EC2 compute resources, providing an empty list removes the * VPC subnets from the compute resource. For more information, see VPCs * and subnets in the Amazon VPC User Guide.
When updating a * compute environment, changing the VPC subnets requires an infrastructure update * of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
Batch on * Amazon EC2 and Batch on Amazon EKS support Local Zones. For more information, * see * Local Zones in the Amazon EC2 User Guide for Linux Instances, Amazon * EKS and Amazon Web Services Local Zones in the Amazon EKS User Guide * and * Amazon ECS clusters in Local Zones, Wavelength Zones, and Amazon Web Services * Outposts in the Amazon ECS Developer Guide.
Batch on Fargate * doesn't currently support Local Zones.
*/ inline ComputeResourceUpdate& WithSubnets(const Aws::VectorThe VPC subnets where the compute resources are launched. Fargate compute * resources can contain up to 16 subnets. For Fargate compute resources, providing * an empty list will be handled as if this parameter wasn't specified and no * change is made. For EC2 compute resources, providing an empty list removes the * VPC subnets from the compute resource. For more information, see VPCs * and subnets in the Amazon VPC User Guide.
When updating a * compute environment, changing the VPC subnets requires an infrastructure update * of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
Batch on * Amazon EC2 and Batch on Amazon EKS support Local Zones. For more information, * see * Local Zones in the Amazon EC2 User Guide for Linux Instances, Amazon * EKS and Amazon Web Services Local Zones in the Amazon EKS User Guide * and * Amazon ECS clusters in Local Zones, Wavelength Zones, and Amazon Web Services * Outposts in the Amazon ECS Developer Guide.
Batch on Fargate * doesn't currently support Local Zones.
*/ inline ComputeResourceUpdate& WithSubnets(Aws::VectorThe VPC subnets where the compute resources are launched. Fargate compute * resources can contain up to 16 subnets. For Fargate compute resources, providing * an empty list will be handled as if this parameter wasn't specified and no * change is made. For EC2 compute resources, providing an empty list removes the * VPC subnets from the compute resource. For more information, see VPCs * and subnets in the Amazon VPC User Guide.
When updating a * compute environment, changing the VPC subnets requires an infrastructure update * of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
Batch on * Amazon EC2 and Batch on Amazon EKS support Local Zones. For more information, * see * Local Zones in the Amazon EC2 User Guide for Linux Instances, Amazon * EKS and Amazon Web Services Local Zones in the Amazon EKS User Guide * and * Amazon ECS clusters in Local Zones, Wavelength Zones, and Amazon Web Services * Outposts in the Amazon ECS Developer Guide.
Batch on Fargate * doesn't currently support Local Zones.
*/ inline ComputeResourceUpdate& AddSubnets(const Aws::String& value) { m_subnetsHasBeenSet = true; m_subnets.push_back(value); return *this; } /** *The VPC subnets where the compute resources are launched. Fargate compute * resources can contain up to 16 subnets. For Fargate compute resources, providing * an empty list will be handled as if this parameter wasn't specified and no * change is made. For EC2 compute resources, providing an empty list removes the * VPC subnets from the compute resource. For more information, see VPCs * and subnets in the Amazon VPC User Guide.
When updating a * compute environment, changing the VPC subnets requires an infrastructure update * of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
Batch on * Amazon EC2 and Batch on Amazon EKS support Local Zones. For more information, * see * Local Zones in the Amazon EC2 User Guide for Linux Instances, Amazon * EKS and Amazon Web Services Local Zones in the Amazon EKS User Guide * and * Amazon ECS clusters in Local Zones, Wavelength Zones, and Amazon Web Services * Outposts in the Amazon ECS Developer Guide.
Batch on Fargate * doesn't currently support Local Zones.
*/ inline ComputeResourceUpdate& AddSubnets(Aws::String&& value) { m_subnetsHasBeenSet = true; m_subnets.push_back(std::move(value)); return *this; } /** *The VPC subnets where the compute resources are launched. Fargate compute * resources can contain up to 16 subnets. For Fargate compute resources, providing * an empty list will be handled as if this parameter wasn't specified and no * change is made. For EC2 compute resources, providing an empty list removes the * VPC subnets from the compute resource. For more information, see VPCs * and subnets in the Amazon VPC User Guide.
When updating a * compute environment, changing the VPC subnets requires an infrastructure update * of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
Batch on * Amazon EC2 and Batch on Amazon EKS support Local Zones. For more information, * see * Local Zones in the Amazon EC2 User Guide for Linux Instances, Amazon * EKS and Amazon Web Services Local Zones in the Amazon EKS User Guide * and * Amazon ECS clusters in Local Zones, Wavelength Zones, and Amazon Web Services * Outposts in the Amazon ECS Developer Guide.
Batch on Fargate * doesn't currently support Local Zones.
*/ inline ComputeResourceUpdate& AddSubnets(const char* value) { m_subnetsHasBeenSet = true; m_subnets.push_back(value); return *this; } /** *The Amazon EC2 security groups that are associated with instances launched in * the compute environment. This parameter is required for Fargate compute * resources, where it can contain up to 5 security groups. For Fargate compute * resources, providing an empty list is handled as if this parameter wasn't * specified and no change is made. For EC2 compute resources, providing an empty * list removes the security groups from the compute resource.
When updating * a compute environment, changing the EC2 security groups requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
*/ inline const Aws::VectorThe Amazon EC2 security groups that are associated with instances launched in * the compute environment. This parameter is required for Fargate compute * resources, where it can contain up to 5 security groups. For Fargate compute * resources, providing an empty list is handled as if this parameter wasn't * specified and no change is made. For EC2 compute resources, providing an empty * list removes the security groups from the compute resource.
When updating * a compute environment, changing the EC2 security groups requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
*/ inline bool SecurityGroupIdsHasBeenSet() const { return m_securityGroupIdsHasBeenSet; } /** *The Amazon EC2 security groups that are associated with instances launched in * the compute environment. This parameter is required for Fargate compute * resources, where it can contain up to 5 security groups. For Fargate compute * resources, providing an empty list is handled as if this parameter wasn't * specified and no change is made. For EC2 compute resources, providing an empty * list removes the security groups from the compute resource.
When updating * a compute environment, changing the EC2 security groups requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
*/ inline void SetSecurityGroupIds(const Aws::VectorThe Amazon EC2 security groups that are associated with instances launched in * the compute environment. This parameter is required for Fargate compute * resources, where it can contain up to 5 security groups. For Fargate compute * resources, providing an empty list is handled as if this parameter wasn't * specified and no change is made. For EC2 compute resources, providing an empty * list removes the security groups from the compute resource.
When updating * a compute environment, changing the EC2 security groups requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
*/ inline void SetSecurityGroupIds(Aws::VectorThe Amazon EC2 security groups that are associated with instances launched in * the compute environment. This parameter is required for Fargate compute * resources, where it can contain up to 5 security groups. For Fargate compute * resources, providing an empty list is handled as if this parameter wasn't * specified and no change is made. For EC2 compute resources, providing an empty * list removes the security groups from the compute resource.
When updating * a compute environment, changing the EC2 security groups requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
*/ inline ComputeResourceUpdate& WithSecurityGroupIds(const Aws::VectorThe Amazon EC2 security groups that are associated with instances launched in * the compute environment. This parameter is required for Fargate compute * resources, where it can contain up to 5 security groups. For Fargate compute * resources, providing an empty list is handled as if this parameter wasn't * specified and no change is made. For EC2 compute resources, providing an empty * list removes the security groups from the compute resource.
When updating * a compute environment, changing the EC2 security groups requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
*/ inline ComputeResourceUpdate& WithSecurityGroupIds(Aws::VectorThe Amazon EC2 security groups that are associated with instances launched in * the compute environment. This parameter is required for Fargate compute * resources, where it can contain up to 5 security groups. For Fargate compute * resources, providing an empty list is handled as if this parameter wasn't * specified and no change is made. For EC2 compute resources, providing an empty * list removes the security groups from the compute resource.
When updating * a compute environment, changing the EC2 security groups requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
*/ inline ComputeResourceUpdate& AddSecurityGroupIds(const Aws::String& value) { m_securityGroupIdsHasBeenSet = true; m_securityGroupIds.push_back(value); return *this; } /** *The Amazon EC2 security groups that are associated with instances launched in * the compute environment. This parameter is required for Fargate compute * resources, where it can contain up to 5 security groups. For Fargate compute * resources, providing an empty list is handled as if this parameter wasn't * specified and no change is made. For EC2 compute resources, providing an empty * list removes the security groups from the compute resource.
When updating * a compute environment, changing the EC2 security groups requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
*/ inline ComputeResourceUpdate& AddSecurityGroupIds(Aws::String&& value) { m_securityGroupIdsHasBeenSet = true; m_securityGroupIds.push_back(std::move(value)); return *this; } /** *The Amazon EC2 security groups that are associated with instances launched in * the compute environment. This parameter is required for Fargate compute * resources, where it can contain up to 5 security groups. For Fargate compute * resources, providing an empty list is handled as if this parameter wasn't * specified and no change is made. For EC2 compute resources, providing an empty * list removes the security groups from the compute resource.
When updating * a compute environment, changing the EC2 security groups requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
*/ inline ComputeResourceUpdate& AddSecurityGroupIds(const char* value) { m_securityGroupIdsHasBeenSet = true; m_securityGroupIds.push_back(value); return *this; } /** *The allocation strategy to use for the compute resource if there's not enough * instances of the best fitting instance type that can be allocated. This might be * because of availability of the instance type in the Region or Amazon * EC2 service limits. For more information, see Allocation * strategies in the Batch User Guide.
When updating a compute
     * environment, changing the allocation strategy requires an infrastructure update
     * of the compute environment. For more information, see Updating
     * compute environments in the Batch User Guide. BEST_FIT
     * isn't supported when updating a compute environment.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
Batch selects * additional instance types that are large enough to meet the requirements of the * jobs in the queue. Its preference is for instance types with lower cost vCPUs. * If additional instances of the previously selected instance types aren't * available, Batch selects new instance types.
Batch selects one or more instance * types that are large enough to meet the requirements of the jobs in the queue. * Its preference is for instance types that are less likely to be interrupted. * This allocation strategy is only available for Spot Instance compute * resources.
With both BEST_FIT_PROGRESSIVE and
     * SPOT_CAPACITY_OPTIMIZED strategies using On-Demand or Spot
     * Instances, and the BEST_FIT strategy using Spot Instances, Batch
     * might need to exceed maxvCpus to meet your capacity requirements.
     * In this event, Batch never exceeds maxvCpus by more than a single
     * instance.
The allocation strategy to use for the compute resource if there's not enough * instances of the best fitting instance type that can be allocated. This might be * because of availability of the instance type in the Region or Amazon * EC2 service limits. For more information, see Allocation * strategies in the Batch User Guide.
When updating a compute
     * environment, changing the allocation strategy requires an infrastructure update
     * of the compute environment. For more information, see Updating
     * compute environments in the Batch User Guide. BEST_FIT
     * isn't supported when updating a compute environment.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
Batch selects * additional instance types that are large enough to meet the requirements of the * jobs in the queue. Its preference is for instance types with lower cost vCPUs. * If additional instances of the previously selected instance types aren't * available, Batch selects new instance types.
Batch selects one or more instance * types that are large enough to meet the requirements of the jobs in the queue. * Its preference is for instance types that are less likely to be interrupted. * This allocation strategy is only available for Spot Instance compute * resources.
With both BEST_FIT_PROGRESSIVE and
     * SPOT_CAPACITY_OPTIMIZED strategies using On-Demand or Spot
     * Instances, and the BEST_FIT strategy using Spot Instances, Batch
     * might need to exceed maxvCpus to meet your capacity requirements.
     * In this event, Batch never exceeds maxvCpus by more than a single
     * instance.
The allocation strategy to use for the compute resource if there's not enough * instances of the best fitting instance type that can be allocated. This might be * because of availability of the instance type in the Region or Amazon * EC2 service limits. For more information, see Allocation * strategies in the Batch User Guide.
When updating a compute
     * environment, changing the allocation strategy requires an infrastructure update
     * of the compute environment. For more information, see Updating
     * compute environments in the Batch User Guide. BEST_FIT
     * isn't supported when updating a compute environment.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
Batch selects * additional instance types that are large enough to meet the requirements of the * jobs in the queue. Its preference is for instance types with lower cost vCPUs. * If additional instances of the previously selected instance types aren't * available, Batch selects new instance types.
Batch selects one or more instance * types that are large enough to meet the requirements of the jobs in the queue. * Its preference is for instance types that are less likely to be interrupted. * This allocation strategy is only available for Spot Instance compute * resources.
With both BEST_FIT_PROGRESSIVE and
     * SPOT_CAPACITY_OPTIMIZED strategies using On-Demand or Spot
     * Instances, and the BEST_FIT strategy using Spot Instances, Batch
     * might need to exceed maxvCpus to meet your capacity requirements.
     * In this event, Batch never exceeds maxvCpus by more than a single
     * instance.
The allocation strategy to use for the compute resource if there's not enough * instances of the best fitting instance type that can be allocated. This might be * because of availability of the instance type in the Region or Amazon * EC2 service limits. For more information, see Allocation * strategies in the Batch User Guide.
When updating a compute
     * environment, changing the allocation strategy requires an infrastructure update
     * of the compute environment. For more information, see Updating
     * compute environments in the Batch User Guide. BEST_FIT
     * isn't supported when updating a compute environment.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
Batch selects * additional instance types that are large enough to meet the requirements of the * jobs in the queue. Its preference is for instance types with lower cost vCPUs. * If additional instances of the previously selected instance types aren't * available, Batch selects new instance types.
Batch selects one or more instance * types that are large enough to meet the requirements of the jobs in the queue. * Its preference is for instance types that are less likely to be interrupted. * This allocation strategy is only available for Spot Instance compute * resources.
With both BEST_FIT_PROGRESSIVE and
     * SPOT_CAPACITY_OPTIMIZED strategies using On-Demand or Spot
     * Instances, and the BEST_FIT strategy using Spot Instances, Batch
     * might need to exceed maxvCpus to meet your capacity requirements.
     * In this event, Batch never exceeds maxvCpus by more than a single
     * instance.
The allocation strategy to use for the compute resource if there's not enough * instances of the best fitting instance type that can be allocated. This might be * because of availability of the instance type in the Region or Amazon * EC2 service limits. For more information, see Allocation * strategies in the Batch User Guide.
When updating a compute
     * environment, changing the allocation strategy requires an infrastructure update
     * of the compute environment. For more information, see Updating
     * compute environments in the Batch User Guide. BEST_FIT
     * isn't supported when updating a compute environment.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
Batch selects * additional instance types that are large enough to meet the requirements of the * jobs in the queue. Its preference is for instance types with lower cost vCPUs. * If additional instances of the previously selected instance types aren't * available, Batch selects new instance types.
Batch selects one or more instance * types that are large enough to meet the requirements of the jobs in the queue. * Its preference is for instance types that are less likely to be interrupted. * This allocation strategy is only available for Spot Instance compute * resources.
With both BEST_FIT_PROGRESSIVE and
     * SPOT_CAPACITY_OPTIMIZED strategies using On-Demand or Spot
     * Instances, and the BEST_FIT strategy using Spot Instances, Batch
     * might need to exceed maxvCpus to meet your capacity requirements.
     * In this event, Batch never exceeds maxvCpus by more than a single
     * instance.
The allocation strategy to use for the compute resource if there's not enough * instances of the best fitting instance type that can be allocated. This might be * because of availability of the instance type in the Region or Amazon * EC2 service limits. For more information, see Allocation * strategies in the Batch User Guide.
When updating a compute
     * environment, changing the allocation strategy requires an infrastructure update
     * of the compute environment. For more information, see Updating
     * compute environments in the Batch User Guide. BEST_FIT
     * isn't supported when updating a compute environment.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
Batch selects * additional instance types that are large enough to meet the requirements of the * jobs in the queue. Its preference is for instance types with lower cost vCPUs. * If additional instances of the previously selected instance types aren't * available, Batch selects new instance types.
Batch selects one or more instance * types that are large enough to meet the requirements of the jobs in the queue. * Its preference is for instance types that are less likely to be interrupted. * This allocation strategy is only available for Spot Instance compute * resources.
With both BEST_FIT_PROGRESSIVE and
     * SPOT_CAPACITY_OPTIMIZED strategies using On-Demand or Spot
     * Instances, and the BEST_FIT strategy using Spot Instances, Batch
     * might need to exceed maxvCpus to meet your capacity requirements.
     * In this event, Batch never exceeds maxvCpus by more than a single
     * instance.
The instances types that can be launched. You can specify instance families
     * to launch any instance type within those families (for example, c5
     * or p3), or you can specify specific sizes within a family (such as
     * c5.8xlarge). You can also choose optimal to select
     * instance types (from the C4, M4, and R4 instance families) that match the demand
     * of your job queues.
When updating a compute environment, changing this * setting requires an infrastructure update of the compute environment. For more * information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
When you create a compute environment, the * instance types that you select for the compute environment must share the same * architecture. For example, you can't mix x86 and ARM instances in the same * compute environment.
Currently, optimal uses
     * instance types from the C4, M4, and R4 instance families. In Regions that don't
     * have instance types from those instance families, instance types from the C5,
     * M5, and R5 instance families are used.
The instances types that can be launched. You can specify instance families
     * to launch any instance type within those families (for example, c5
     * or p3), or you can specify specific sizes within a family (such as
     * c5.8xlarge). You can also choose optimal to select
     * instance types (from the C4, M4, and R4 instance families) that match the demand
     * of your job queues.
When updating a compute environment, changing this * setting requires an infrastructure update of the compute environment. For more * information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
When you create a compute environment, the * instance types that you select for the compute environment must share the same * architecture. For example, you can't mix x86 and ARM instances in the same * compute environment.
Currently, optimal uses
     * instance types from the C4, M4, and R4 instance families. In Regions that don't
     * have instance types from those instance families, instance types from the C5,
     * M5, and R5 instance families are used.
The instances types that can be launched. You can specify instance families
     * to launch any instance type within those families (for example, c5
     * or p3), or you can specify specific sizes within a family (such as
     * c5.8xlarge). You can also choose optimal to select
     * instance types (from the C4, M4, and R4 instance families) that match the demand
     * of your job queues.
When updating a compute environment, changing this * setting requires an infrastructure update of the compute environment. For more * information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
When you create a compute environment, the * instance types that you select for the compute environment must share the same * architecture. For example, you can't mix x86 and ARM instances in the same * compute environment.
Currently, optimal uses
     * instance types from the C4, M4, and R4 instance families. In Regions that don't
     * have instance types from those instance families, instance types from the C5,
     * M5, and R5 instance families are used.
The instances types that can be launched. You can specify instance families
     * to launch any instance type within those families (for example, c5
     * or p3), or you can specify specific sizes within a family (such as
     * c5.8xlarge). You can also choose optimal to select
     * instance types (from the C4, M4, and R4 instance families) that match the demand
     * of your job queues.
When updating a compute environment, changing this * setting requires an infrastructure update of the compute environment. For more * information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
When you create a compute environment, the * instance types that you select for the compute environment must share the same * architecture. For example, you can't mix x86 and ARM instances in the same * compute environment.
Currently, optimal uses
     * instance types from the C4, M4, and R4 instance families. In Regions that don't
     * have instance types from those instance families, instance types from the C5,
     * M5, and R5 instance families are used.
The instances types that can be launched. You can specify instance families
     * to launch any instance type within those families (for example, c5
     * or p3), or you can specify specific sizes within a family (such as
     * c5.8xlarge). You can also choose optimal to select
     * instance types (from the C4, M4, and R4 instance families) that match the demand
     * of your job queues.
When updating a compute environment, changing this * setting requires an infrastructure update of the compute environment. For more * information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
When you create a compute environment, the * instance types that you select for the compute environment must share the same * architecture. For example, you can't mix x86 and ARM instances in the same * compute environment.
Currently, optimal uses
     * instance types from the C4, M4, and R4 instance families. In Regions that don't
     * have instance types from those instance families, instance types from the C5,
     * M5, and R5 instance families are used.
The instances types that can be launched. You can specify instance families
     * to launch any instance type within those families (for example, c5
     * or p3), or you can specify specific sizes within a family (such as
     * c5.8xlarge). You can also choose optimal to select
     * instance types (from the C4, M4, and R4 instance families) that match the demand
     * of your job queues.
When updating a compute environment, changing this * setting requires an infrastructure update of the compute environment. For more * information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
When you create a compute environment, the * instance types that you select for the compute environment must share the same * architecture. For example, you can't mix x86 and ARM instances in the same * compute environment.
Currently, optimal uses
     * instance types from the C4, M4, and R4 instance families. In Regions that don't
     * have instance types from those instance families, instance types from the C5,
     * M5, and R5 instance families are used.
The instances types that can be launched. You can specify instance families
     * to launch any instance type within those families (for example, c5
     * or p3), or you can specify specific sizes within a family (such as
     * c5.8xlarge). You can also choose optimal to select
     * instance types (from the C4, M4, and R4 instance families) that match the demand
     * of your job queues.
When updating a compute environment, changing this * setting requires an infrastructure update of the compute environment. For more * information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
When you create a compute environment, the * instance types that you select for the compute environment must share the same * architecture. For example, you can't mix x86 and ARM instances in the same * compute environment.
Currently, optimal uses
     * instance types from the C4, M4, and R4 instance families. In Regions that don't
     * have instance types from those instance families, instance types from the C5,
     * M5, and R5 instance families are used.
The instances types that can be launched. You can specify instance families
     * to launch any instance type within those families (for example, c5
     * or p3), or you can specify specific sizes within a family (such as
     * c5.8xlarge). You can also choose optimal to select
     * instance types (from the C4, M4, and R4 instance families) that match the demand
     * of your job queues.
When updating a compute environment, changing this * setting requires an infrastructure update of the compute environment. For more * information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
When you create a compute environment, the * instance types that you select for the compute environment must share the same * architecture. For example, you can't mix x86 and ARM instances in the same * compute environment.
Currently, optimal uses
     * instance types from the C4, M4, and R4 instance families. In Regions that don't
     * have instance types from those instance families, instance types from the C5,
     * M5, and R5 instance families are used.
The instances types that can be launched. You can specify instance families
     * to launch any instance type within those families (for example, c5
     * or p3), or you can specify specific sizes within a family (such as
     * c5.8xlarge). You can also choose optimal to select
     * instance types (from the C4, M4, and R4 instance families) that match the demand
     * of your job queues.
When updating a compute environment, changing this * setting requires an infrastructure update of the compute environment. For more * information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
When you create a compute environment, the * instance types that you select for the compute environment must share the same * architecture. For example, you can't mix x86 and ARM instances in the same * compute environment.
Currently, optimal uses
     * instance types from the C4, M4, and R4 instance families. In Regions that don't
     * have instance types from those instance families, instance types from the C5,
     * M5, and R5 instance families are used.
The Amazon EC2 key pair that's used for instances launched in the compute * environment. You can use this key pair to log in to your instances with SSH. To * remove the Amazon EC2 key pair, set this value to an empty string.
When * updating a compute environment, changing the EC2 key pair requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline const Aws::String& GetEc2KeyPair() const{ return m_ec2KeyPair; } /** *The Amazon EC2 key pair that's used for instances launched in the compute * environment. You can use this key pair to log in to your instances with SSH. To * remove the Amazon EC2 key pair, set this value to an empty string.
When * updating a compute environment, changing the EC2 key pair requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline bool Ec2KeyPairHasBeenSet() const { return m_ec2KeyPairHasBeenSet; } /** *The Amazon EC2 key pair that's used for instances launched in the compute * environment. You can use this key pair to log in to your instances with SSH. To * remove the Amazon EC2 key pair, set this value to an empty string.
When * updating a compute environment, changing the EC2 key pair requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline void SetEc2KeyPair(const Aws::String& value) { m_ec2KeyPairHasBeenSet = true; m_ec2KeyPair = value; } /** *The Amazon EC2 key pair that's used for instances launched in the compute * environment. You can use this key pair to log in to your instances with SSH. To * remove the Amazon EC2 key pair, set this value to an empty string.
When * updating a compute environment, changing the EC2 key pair requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline void SetEc2KeyPair(Aws::String&& value) { m_ec2KeyPairHasBeenSet = true; m_ec2KeyPair = std::move(value); } /** *The Amazon EC2 key pair that's used for instances launched in the compute * environment. You can use this key pair to log in to your instances with SSH. To * remove the Amazon EC2 key pair, set this value to an empty string.
When * updating a compute environment, changing the EC2 key pair requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline void SetEc2KeyPair(const char* value) { m_ec2KeyPairHasBeenSet = true; m_ec2KeyPair.assign(value); } /** *The Amazon EC2 key pair that's used for instances launched in the compute * environment. You can use this key pair to log in to your instances with SSH. To * remove the Amazon EC2 key pair, set this value to an empty string.
When * updating a compute environment, changing the EC2 key pair requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline ComputeResourceUpdate& WithEc2KeyPair(const Aws::String& value) { SetEc2KeyPair(value); return *this;} /** *The Amazon EC2 key pair that's used for instances launched in the compute * environment. You can use this key pair to log in to your instances with SSH. To * remove the Amazon EC2 key pair, set this value to an empty string.
When * updating a compute environment, changing the EC2 key pair requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline ComputeResourceUpdate& WithEc2KeyPair(Aws::String&& value) { SetEc2KeyPair(std::move(value)); return *this;} /** *The Amazon EC2 key pair that's used for instances launched in the compute * environment. You can use this key pair to log in to your instances with SSH. To * remove the Amazon EC2 key pair, set this value to an empty string.
When * updating a compute environment, changing the EC2 key pair requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline ComputeResourceUpdate& WithEc2KeyPair(const char* value) { SetEc2KeyPair(value); return *this;} /** *The Amazon ECS instance profile applied to Amazon EC2 instances in a compute
     * environment. You can specify the short name or full Amazon Resource Name (ARN)
     * of an instance profile. For example,  ecsInstanceRole  or
     * arn:aws:iam::<aws_account_id>:instance-profile/ecsInstanceRole
     * . For more information, see Amazon
     * ECS instance role in the Batch User Guide.
When updating a * compute environment, changing this setting requires an infrastructure update of * the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline const Aws::String& GetInstanceRole() const{ return m_instanceRole; } /** *The Amazon ECS instance profile applied to Amazon EC2 instances in a compute
     * environment. You can specify the short name or full Amazon Resource Name (ARN)
     * of an instance profile. For example,  ecsInstanceRole  or
     * arn:aws:iam::<aws_account_id>:instance-profile/ecsInstanceRole
     * . For more information, see Amazon
     * ECS instance role in the Batch User Guide.
When updating a * compute environment, changing this setting requires an infrastructure update of * the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline bool InstanceRoleHasBeenSet() const { return m_instanceRoleHasBeenSet; } /** *The Amazon ECS instance profile applied to Amazon EC2 instances in a compute
     * environment. You can specify the short name or full Amazon Resource Name (ARN)
     * of an instance profile. For example,  ecsInstanceRole  or
     * arn:aws:iam::<aws_account_id>:instance-profile/ecsInstanceRole
     * . For more information, see Amazon
     * ECS instance role in the Batch User Guide.
When updating a * compute environment, changing this setting requires an infrastructure update of * the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline void SetInstanceRole(const Aws::String& value) { m_instanceRoleHasBeenSet = true; m_instanceRole = value; } /** *The Amazon ECS instance profile applied to Amazon EC2 instances in a compute
     * environment. You can specify the short name or full Amazon Resource Name (ARN)
     * of an instance profile. For example,  ecsInstanceRole  or
     * arn:aws:iam::<aws_account_id>:instance-profile/ecsInstanceRole
     * . For more information, see Amazon
     * ECS instance role in the Batch User Guide.
When updating a * compute environment, changing this setting requires an infrastructure update of * the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline void SetInstanceRole(Aws::String&& value) { m_instanceRoleHasBeenSet = true; m_instanceRole = std::move(value); } /** *The Amazon ECS instance profile applied to Amazon EC2 instances in a compute
     * environment. You can specify the short name or full Amazon Resource Name (ARN)
     * of an instance profile. For example,  ecsInstanceRole  or
     * arn:aws:iam::<aws_account_id>:instance-profile/ecsInstanceRole
     * . For more information, see Amazon
     * ECS instance role in the Batch User Guide.
When updating a * compute environment, changing this setting requires an infrastructure update of * the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline void SetInstanceRole(const char* value) { m_instanceRoleHasBeenSet = true; m_instanceRole.assign(value); } /** *The Amazon ECS instance profile applied to Amazon EC2 instances in a compute
     * environment. You can specify the short name or full Amazon Resource Name (ARN)
     * of an instance profile. For example,  ecsInstanceRole  or
     * arn:aws:iam::<aws_account_id>:instance-profile/ecsInstanceRole
     * . For more information, see Amazon
     * ECS instance role in the Batch User Guide.
When updating a * compute environment, changing this setting requires an infrastructure update of * the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline ComputeResourceUpdate& WithInstanceRole(const Aws::String& value) { SetInstanceRole(value); return *this;} /** *The Amazon ECS instance profile applied to Amazon EC2 instances in a compute
     * environment. You can specify the short name or full Amazon Resource Name (ARN)
     * of an instance profile. For example,  ecsInstanceRole  or
     * arn:aws:iam::<aws_account_id>:instance-profile/ecsInstanceRole
     * . For more information, see Amazon
     * ECS instance role in the Batch User Guide.
When updating a * compute environment, changing this setting requires an infrastructure update of * the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline ComputeResourceUpdate& WithInstanceRole(Aws::String&& value) { SetInstanceRole(std::move(value)); return *this;} /** *The Amazon ECS instance profile applied to Amazon EC2 instances in a compute
     * environment. You can specify the short name or full Amazon Resource Name (ARN)
     * of an instance profile. For example,  ecsInstanceRole  or
     * arn:aws:iam::<aws_account_id>:instance-profile/ecsInstanceRole
     * . For more information, see Amazon
     * ECS instance role in the Batch User Guide.
When updating a * compute environment, changing this setting requires an infrastructure update of * the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline ComputeResourceUpdate& WithInstanceRole(const char* value) { SetInstanceRole(value); return *this;} /** *Key-value pair tags to be applied to EC2 resources that are launched in the
     * compute environment. For Batch, these take the form of "String1":
     * "String2", where String1 is the tag key and
     * String2 is the tag value-for example, { "Name": "Batch
     * Instance - C4OnDemand" }. This is helpful for recognizing your Batch
     * instances in the Amazon EC2 console. These tags aren't seen when using the Batch
     * ListTagsForResource API operation.
When updating a compute * environment, changing this setting requires an infrastructure update of the * compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline const Aws::MapKey-value pair tags to be applied to EC2 resources that are launched in the
     * compute environment. For Batch, these take the form of "String1":
     * "String2", where String1 is the tag key and
     * String2 is the tag value-for example, { "Name": "Batch
     * Instance - C4OnDemand" }. This is helpful for recognizing your Batch
     * instances in the Amazon EC2 console. These tags aren't seen when using the Batch
     * ListTagsForResource API operation.
When updating a compute * environment, changing this setting requires an infrastructure update of the * compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; } /** *Key-value pair tags to be applied to EC2 resources that are launched in the
     * compute environment. For Batch, these take the form of "String1":
     * "String2", where String1 is the tag key and
     * String2 is the tag value-for example, { "Name": "Batch
     * Instance - C4OnDemand" }. This is helpful for recognizing your Batch
     * instances in the Amazon EC2 console. These tags aren't seen when using the Batch
     * ListTagsForResource API operation.
When updating a compute * environment, changing this setting requires an infrastructure update of the * compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline void SetTags(const Aws::MapKey-value pair tags to be applied to EC2 resources that are launched in the
     * compute environment. For Batch, these take the form of "String1":
     * "String2", where String1 is the tag key and
     * String2 is the tag value-for example, { "Name": "Batch
     * Instance - C4OnDemand" }. This is helpful for recognizing your Batch
     * instances in the Amazon EC2 console. These tags aren't seen when using the Batch
     * ListTagsForResource API operation.
When updating a compute * environment, changing this setting requires an infrastructure update of the * compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline void SetTags(Aws::MapKey-value pair tags to be applied to EC2 resources that are launched in the
     * compute environment. For Batch, these take the form of "String1":
     * "String2", where String1 is the tag key and
     * String2 is the tag value-for example, { "Name": "Batch
     * Instance - C4OnDemand" }. This is helpful for recognizing your Batch
     * instances in the Amazon EC2 console. These tags aren't seen when using the Batch
     * ListTagsForResource API operation.
When updating a compute * environment, changing this setting requires an infrastructure update of the * compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline ComputeResourceUpdate& WithTags(const Aws::MapKey-value pair tags to be applied to EC2 resources that are launched in the
     * compute environment. For Batch, these take the form of "String1":
     * "String2", where String1 is the tag key and
     * String2 is the tag value-for example, { "Name": "Batch
     * Instance - C4OnDemand" }. This is helpful for recognizing your Batch
     * instances in the Amazon EC2 console. These tags aren't seen when using the Batch
     * ListTagsForResource API operation.
When updating a compute * environment, changing this setting requires an infrastructure update of the * compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline ComputeResourceUpdate& WithTags(Aws::MapKey-value pair tags to be applied to EC2 resources that are launched in the
     * compute environment. For Batch, these take the form of "String1":
     * "String2", where String1 is the tag key and
     * String2 is the tag value-for example, { "Name": "Batch
     * Instance - C4OnDemand" }. This is helpful for recognizing your Batch
     * instances in the Amazon EC2 console. These tags aren't seen when using the Batch
     * ListTagsForResource API operation.
When updating a compute * environment, changing this setting requires an infrastructure update of the * compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline ComputeResourceUpdate& AddTags(const Aws::String& key, const Aws::String& value) { m_tagsHasBeenSet = true; m_tags.emplace(key, value); return *this; } /** *Key-value pair tags to be applied to EC2 resources that are launched in the
     * compute environment. For Batch, these take the form of "String1":
     * "String2", where String1 is the tag key and
     * String2 is the tag value-for example, { "Name": "Batch
     * Instance - C4OnDemand" }. This is helpful for recognizing your Batch
     * instances in the Amazon EC2 console. These tags aren't seen when using the Batch
     * ListTagsForResource API operation.
When updating a compute * environment, changing this setting requires an infrastructure update of the * compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline ComputeResourceUpdate& AddTags(Aws::String&& key, const Aws::String& value) { m_tagsHasBeenSet = true; m_tags.emplace(std::move(key), value); return *this; } /** *Key-value pair tags to be applied to EC2 resources that are launched in the
     * compute environment. For Batch, these take the form of "String1":
     * "String2", where String1 is the tag key and
     * String2 is the tag value-for example, { "Name": "Batch
     * Instance - C4OnDemand" }. This is helpful for recognizing your Batch
     * instances in the Amazon EC2 console. These tags aren't seen when using the Batch
     * ListTagsForResource API operation.
When updating a compute * environment, changing this setting requires an infrastructure update of the * compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline ComputeResourceUpdate& AddTags(const Aws::String& key, Aws::String&& value) { m_tagsHasBeenSet = true; m_tags.emplace(key, std::move(value)); return *this; } /** *Key-value pair tags to be applied to EC2 resources that are launched in the
     * compute environment. For Batch, these take the form of "String1":
     * "String2", where String1 is the tag key and
     * String2 is the tag value-for example, { "Name": "Batch
     * Instance - C4OnDemand" }. This is helpful for recognizing your Batch
     * instances in the Amazon EC2 console. These tags aren't seen when using the Batch
     * ListTagsForResource API operation.
When updating a compute * environment, changing this setting requires an infrastructure update of the * compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline ComputeResourceUpdate& AddTags(Aws::String&& key, Aws::String&& value) { m_tagsHasBeenSet = true; m_tags.emplace(std::move(key), std::move(value)); return *this; } /** *Key-value pair tags to be applied to EC2 resources that are launched in the
     * compute environment. For Batch, these take the form of "String1":
     * "String2", where String1 is the tag key and
     * String2 is the tag value-for example, { "Name": "Batch
     * Instance - C4OnDemand" }. This is helpful for recognizing your Batch
     * instances in the Amazon EC2 console. These tags aren't seen when using the Batch
     * ListTagsForResource API operation.
When updating a compute * environment, changing this setting requires an infrastructure update of the * compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline ComputeResourceUpdate& AddTags(const char* key, Aws::String&& value) { m_tagsHasBeenSet = true; m_tags.emplace(key, std::move(value)); return *this; } /** *Key-value pair tags to be applied to EC2 resources that are launched in the
     * compute environment. For Batch, these take the form of "String1":
     * "String2", where String1 is the tag key and
     * String2 is the tag value-for example, { "Name": "Batch
     * Instance - C4OnDemand" }. This is helpful for recognizing your Batch
     * instances in the Amazon EC2 console. These tags aren't seen when using the Batch
     * ListTagsForResource API operation.
When updating a compute * environment, changing this setting requires an infrastructure update of the * compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline ComputeResourceUpdate& AddTags(Aws::String&& key, const char* value) { m_tagsHasBeenSet = true; m_tags.emplace(std::move(key), value); return *this; } /** *Key-value pair tags to be applied to EC2 resources that are launched in the
     * compute environment. For Batch, these take the form of "String1":
     * "String2", where String1 is the tag key and
     * String2 is the tag value-for example, { "Name": "Batch
     * Instance - C4OnDemand" }. This is helpful for recognizing your Batch
     * instances in the Amazon EC2 console. These tags aren't seen when using the Batch
     * ListTagsForResource API operation.
When updating a compute * environment, changing this setting requires an infrastructure update of the * compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline ComputeResourceUpdate& AddTags(const char* key, const char* value) { m_tagsHasBeenSet = true; m_tags.emplace(key, value); return *this; } /** *The Amazon EC2 placement group to associate with your compute resources. If * you intend to submit multi-node parallel jobs to your compute environment, you * should consider creating a cluster placement group and associate it with your * compute resources. This keeps your multi-node parallel job on a logical grouping * of instances within a single Availability Zone with high network flow potential. * For more information, see Placement * groups in the Amazon EC2 User Guide for Linux Instances.
When * updating a compute environment, changing the placement group requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline const Aws::String& GetPlacementGroup() const{ return m_placementGroup; } /** *The Amazon EC2 placement group to associate with your compute resources. If * you intend to submit multi-node parallel jobs to your compute environment, you * should consider creating a cluster placement group and associate it with your * compute resources. This keeps your multi-node parallel job on a logical grouping * of instances within a single Availability Zone with high network flow potential. * For more information, see Placement * groups in the Amazon EC2 User Guide for Linux Instances.
When * updating a compute environment, changing the placement group requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline bool PlacementGroupHasBeenSet() const { return m_placementGroupHasBeenSet; } /** *The Amazon EC2 placement group to associate with your compute resources. If * you intend to submit multi-node parallel jobs to your compute environment, you * should consider creating a cluster placement group and associate it with your * compute resources. This keeps your multi-node parallel job on a logical grouping * of instances within a single Availability Zone with high network flow potential. * For more information, see Placement * groups in the Amazon EC2 User Guide for Linux Instances.
When * updating a compute environment, changing the placement group requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline void SetPlacementGroup(const Aws::String& value) { m_placementGroupHasBeenSet = true; m_placementGroup = value; } /** *The Amazon EC2 placement group to associate with your compute resources. If * you intend to submit multi-node parallel jobs to your compute environment, you * should consider creating a cluster placement group and associate it with your * compute resources. This keeps your multi-node parallel job on a logical grouping * of instances within a single Availability Zone with high network flow potential. * For more information, see Placement * groups in the Amazon EC2 User Guide for Linux Instances.
When * updating a compute environment, changing the placement group requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline void SetPlacementGroup(Aws::String&& value) { m_placementGroupHasBeenSet = true; m_placementGroup = std::move(value); } /** *The Amazon EC2 placement group to associate with your compute resources. If * you intend to submit multi-node parallel jobs to your compute environment, you * should consider creating a cluster placement group and associate it with your * compute resources. This keeps your multi-node parallel job on a logical grouping * of instances within a single Availability Zone with high network flow potential. * For more information, see Placement * groups in the Amazon EC2 User Guide for Linux Instances.
When * updating a compute environment, changing the placement group requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline void SetPlacementGroup(const char* value) { m_placementGroupHasBeenSet = true; m_placementGroup.assign(value); } /** *The Amazon EC2 placement group to associate with your compute resources. If * you intend to submit multi-node parallel jobs to your compute environment, you * should consider creating a cluster placement group and associate it with your * compute resources. This keeps your multi-node parallel job on a logical grouping * of instances within a single Availability Zone with high network flow potential. * For more information, see Placement * groups in the Amazon EC2 User Guide for Linux Instances.
When * updating a compute environment, changing the placement group requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline ComputeResourceUpdate& WithPlacementGroup(const Aws::String& value) { SetPlacementGroup(value); return *this;} /** *The Amazon EC2 placement group to associate with your compute resources. If * you intend to submit multi-node parallel jobs to your compute environment, you * should consider creating a cluster placement group and associate it with your * compute resources. This keeps your multi-node parallel job on a logical grouping * of instances within a single Availability Zone with high network flow potential. * For more information, see Placement * groups in the Amazon EC2 User Guide for Linux Instances.
When * updating a compute environment, changing the placement group requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline ComputeResourceUpdate& WithPlacementGroup(Aws::String&& value) { SetPlacementGroup(std::move(value)); return *this;} /** *The Amazon EC2 placement group to associate with your compute resources. If * you intend to submit multi-node parallel jobs to your compute environment, you * should consider creating a cluster placement group and associate it with your * compute resources. This keeps your multi-node parallel job on a logical grouping * of instances within a single Availability Zone with high network flow potential. * For more information, see Placement * groups in the Amazon EC2 User Guide for Linux Instances.
When * updating a compute environment, changing the placement group requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline ComputeResourceUpdate& WithPlacementGroup(const char* value) { SetPlacementGroup(value); return *this;} /** *The maximum percentage that a Spot Instance price can be when compared with * the On-Demand price for that instance type before instances are launched. For * example, if your maximum percentage is 20%, the Spot price must be less than 20% * of the current On-Demand price for that Amazon EC2 instance. You always pay the * lowest (market) price and never more than your maximum percentage. For most use * cases, we recommend leaving this field empty.
When updating a compute * environment, changing the bid percentage requires an infrastructure update of * the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline int GetBidPercentage() const{ return m_bidPercentage; } /** *The maximum percentage that a Spot Instance price can be when compared with * the On-Demand price for that instance type before instances are launched. For * example, if your maximum percentage is 20%, the Spot price must be less than 20% * of the current On-Demand price for that Amazon EC2 instance. You always pay the * lowest (market) price and never more than your maximum percentage. For most use * cases, we recommend leaving this field empty.
When updating a compute * environment, changing the bid percentage requires an infrastructure update of * the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline bool BidPercentageHasBeenSet() const { return m_bidPercentageHasBeenSet; } /** *The maximum percentage that a Spot Instance price can be when compared with * the On-Demand price for that instance type before instances are launched. For * example, if your maximum percentage is 20%, the Spot price must be less than 20% * of the current On-Demand price for that Amazon EC2 instance. You always pay the * lowest (market) price and never more than your maximum percentage. For most use * cases, we recommend leaving this field empty.
When updating a compute * environment, changing the bid percentage requires an infrastructure update of * the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline void SetBidPercentage(int value) { m_bidPercentageHasBeenSet = true; m_bidPercentage = value; } /** *The maximum percentage that a Spot Instance price can be when compared with * the On-Demand price for that instance type before instances are launched. For * example, if your maximum percentage is 20%, the Spot price must be less than 20% * of the current On-Demand price for that Amazon EC2 instance. You always pay the * lowest (market) price and never more than your maximum percentage. For most use * cases, we recommend leaving this field empty.
When updating a compute * environment, changing the bid percentage requires an infrastructure update of * the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline ComputeResourceUpdate& WithBidPercentage(int value) { SetBidPercentage(value); return *this;} /** *The updated launch template to use for your compute resources. You must
     * specify either the launch template ID or launch template name in the request,
     * but not both. For more information, see Launch
     * template support in the Batch User Guide. To remove the custom launch
     * template and use the default launch template, set launchTemplateId
     * or launchTemplateName member of the launch template specification
     * to an empty string. Removing the launch template from a compute environment will
     * not remove the AMI specified in the launch template. In order to update the AMI
     * specified in a launch template, the updateToLatestImageVersion
     * parameter must be set to true.
When updating a compute * environment, changing the launch template requires an infrastructure update of * the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline const LaunchTemplateSpecification& GetLaunchTemplate() const{ return m_launchTemplate; } /** *The updated launch template to use for your compute resources. You must
     * specify either the launch template ID or launch template name in the request,
     * but not both. For more information, see Launch
     * template support in the Batch User Guide. To remove the custom launch
     * template and use the default launch template, set launchTemplateId
     * or launchTemplateName member of the launch template specification
     * to an empty string. Removing the launch template from a compute environment will
     * not remove the AMI specified in the launch template. In order to update the AMI
     * specified in a launch template, the updateToLatestImageVersion
     * parameter must be set to true.
When updating a compute * environment, changing the launch template requires an infrastructure update of * the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline bool LaunchTemplateHasBeenSet() const { return m_launchTemplateHasBeenSet; } /** *The updated launch template to use for your compute resources. You must
     * specify either the launch template ID or launch template name in the request,
     * but not both. For more information, see Launch
     * template support in the Batch User Guide. To remove the custom launch
     * template and use the default launch template, set launchTemplateId
     * or launchTemplateName member of the launch template specification
     * to an empty string. Removing the launch template from a compute environment will
     * not remove the AMI specified in the launch template. In order to update the AMI
     * specified in a launch template, the updateToLatestImageVersion
     * parameter must be set to true.
When updating a compute * environment, changing the launch template requires an infrastructure update of * the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline void SetLaunchTemplate(const LaunchTemplateSpecification& value) { m_launchTemplateHasBeenSet = true; m_launchTemplate = value; } /** *The updated launch template to use for your compute resources. You must
     * specify either the launch template ID or launch template name in the request,
     * but not both. For more information, see Launch
     * template support in the Batch User Guide. To remove the custom launch
     * template and use the default launch template, set launchTemplateId
     * or launchTemplateName member of the launch template specification
     * to an empty string. Removing the launch template from a compute environment will
     * not remove the AMI specified in the launch template. In order to update the AMI
     * specified in a launch template, the updateToLatestImageVersion
     * parameter must be set to true.
When updating a compute * environment, changing the launch template requires an infrastructure update of * the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline void SetLaunchTemplate(LaunchTemplateSpecification&& value) { m_launchTemplateHasBeenSet = true; m_launchTemplate = std::move(value); } /** *The updated launch template to use for your compute resources. You must
     * specify either the launch template ID or launch template name in the request,
     * but not both. For more information, see Launch
     * template support in the Batch User Guide. To remove the custom launch
     * template and use the default launch template, set launchTemplateId
     * or launchTemplateName member of the launch template specification
     * to an empty string. Removing the launch template from a compute environment will
     * not remove the AMI specified in the launch template. In order to update the AMI
     * specified in a launch template, the updateToLatestImageVersion
     * parameter must be set to true.
When updating a compute * environment, changing the launch template requires an infrastructure update of * the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline ComputeResourceUpdate& WithLaunchTemplate(const LaunchTemplateSpecification& value) { SetLaunchTemplate(value); return *this;} /** *The updated launch template to use for your compute resources. You must
     * specify either the launch template ID or launch template name in the request,
     * but not both. For more information, see Launch
     * template support in the Batch User Guide. To remove the custom launch
     * template and use the default launch template, set launchTemplateId
     * or launchTemplateName member of the launch template specification
     * to an empty string. Removing the launch template from a compute environment will
     * not remove the AMI specified in the launch template. In order to update the AMI
     * specified in a launch template, the updateToLatestImageVersion
     * parameter must be set to true.
When updating a compute * environment, changing the launch template requires an infrastructure update of * the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
*/ inline ComputeResourceUpdate& WithLaunchTemplate(LaunchTemplateSpecification&& value) { SetLaunchTemplate(std::move(value)); return *this;} /** *Provides information used to select Amazon Machine Images (AMIs) for EC2
     * instances in the compute environment. If Ec2Configuration isn't
     * specified, the default is ECS_AL2.
When updating a compute
     * environment, changing this setting requires an infrastructure update of the
     * compute environment. For more information, see Updating
     * compute environments in the Batch User Guide. To remove the EC2
     * configuration and any custom AMI ID specified in imageIdOverride,
     * set this value to an empty string.
One or two values can be provided.
*This parameter isn't applicable to jobs that are running on Fargate * resources. Don't specify it.
*/ inline const Aws::VectorProvides information used to select Amazon Machine Images (AMIs) for EC2
     * instances in the compute environment. If Ec2Configuration isn't
     * specified, the default is ECS_AL2.
When updating a compute
     * environment, changing this setting requires an infrastructure update of the
     * compute environment. For more information, see Updating
     * compute environments in the Batch User Guide. To remove the EC2
     * configuration and any custom AMI ID specified in imageIdOverride,
     * set this value to an empty string.
One or two values can be provided.
*This parameter isn't applicable to jobs that are running on Fargate * resources. Don't specify it.
*/ inline bool Ec2ConfigurationHasBeenSet() const { return m_ec2ConfigurationHasBeenSet; } /** *Provides information used to select Amazon Machine Images (AMIs) for EC2
     * instances in the compute environment. If Ec2Configuration isn't
     * specified, the default is ECS_AL2.
When updating a compute
     * environment, changing this setting requires an infrastructure update of the
     * compute environment. For more information, see Updating
     * compute environments in the Batch User Guide. To remove the EC2
     * configuration and any custom AMI ID specified in imageIdOverride,
     * set this value to an empty string.
One or two values can be provided.
*This parameter isn't applicable to jobs that are running on Fargate * resources. Don't specify it.
*/ inline void SetEc2Configuration(const Aws::VectorProvides information used to select Amazon Machine Images (AMIs) for EC2
     * instances in the compute environment. If Ec2Configuration isn't
     * specified, the default is ECS_AL2.
When updating a compute
     * environment, changing this setting requires an infrastructure update of the
     * compute environment. For more information, see Updating
     * compute environments in the Batch User Guide. To remove the EC2
     * configuration and any custom AMI ID specified in imageIdOverride,
     * set this value to an empty string.
One or two values can be provided.
*This parameter isn't applicable to jobs that are running on Fargate * resources. Don't specify it.
*/ inline void SetEc2Configuration(Aws::VectorProvides information used to select Amazon Machine Images (AMIs) for EC2
     * instances in the compute environment. If Ec2Configuration isn't
     * specified, the default is ECS_AL2.
When updating a compute
     * environment, changing this setting requires an infrastructure update of the
     * compute environment. For more information, see Updating
     * compute environments in the Batch User Guide. To remove the EC2
     * configuration and any custom AMI ID specified in imageIdOverride,
     * set this value to an empty string.
One or two values can be provided.
*This parameter isn't applicable to jobs that are running on Fargate * resources. Don't specify it.
*/ inline ComputeResourceUpdate& WithEc2Configuration(const Aws::VectorProvides information used to select Amazon Machine Images (AMIs) for EC2
     * instances in the compute environment. If Ec2Configuration isn't
     * specified, the default is ECS_AL2.
When updating a compute
     * environment, changing this setting requires an infrastructure update of the
     * compute environment. For more information, see Updating
     * compute environments in the Batch User Guide. To remove the EC2
     * configuration and any custom AMI ID specified in imageIdOverride,
     * set this value to an empty string.
One or two values can be provided.
*This parameter isn't applicable to jobs that are running on Fargate * resources. Don't specify it.
*/ inline ComputeResourceUpdate& WithEc2Configuration(Aws::VectorProvides information used to select Amazon Machine Images (AMIs) for EC2
     * instances in the compute environment. If Ec2Configuration isn't
     * specified, the default is ECS_AL2.
When updating a compute
     * environment, changing this setting requires an infrastructure update of the
     * compute environment. For more information, see Updating
     * compute environments in the Batch User Guide. To remove the EC2
     * configuration and any custom AMI ID specified in imageIdOverride,
     * set this value to an empty string.
One or two values can be provided.
*This parameter isn't applicable to jobs that are running on Fargate * resources. Don't specify it.
*/ inline ComputeResourceUpdate& AddEc2Configuration(const Ec2Configuration& value) { m_ec2ConfigurationHasBeenSet = true; m_ec2Configuration.push_back(value); return *this; } /** *Provides information used to select Amazon Machine Images (AMIs) for EC2
     * instances in the compute environment. If Ec2Configuration isn't
     * specified, the default is ECS_AL2.
When updating a compute
     * environment, changing this setting requires an infrastructure update of the
     * compute environment. For more information, see Updating
     * compute environments in the Batch User Guide. To remove the EC2
     * configuration and any custom AMI ID specified in imageIdOverride,
     * set this value to an empty string.
One or two values can be provided.
*This parameter isn't applicable to jobs that are running on Fargate * resources. Don't specify it.
*/ inline ComputeResourceUpdate& AddEc2Configuration(Ec2Configuration&& value) { m_ec2ConfigurationHasBeenSet = true; m_ec2Configuration.push_back(std::move(value)); return *this; } /** *Specifies whether the AMI ID is updated to the latest one that's supported by
     * Batch when the compute environment has an infrastructure update. The default
     * value is false.
An AMI ID can either be specified in
     * the imageId or imageIdOverride parameters or be
     * determined by the launch template that's specified in the
     * launchTemplate parameter. If an AMI ID is specified any of these
     * ways, this parameter is ignored. For more information about to update AMI IDs
     * during an infrastructure update, see Updating
     * the AMI ID in the Batch User Guide.
When updating a * compute environment, changing this setting requires an infrastructure update of * the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
*/ inline bool GetUpdateToLatestImageVersion() const{ return m_updateToLatestImageVersion; } /** *Specifies whether the AMI ID is updated to the latest one that's supported by
     * Batch when the compute environment has an infrastructure update. The default
     * value is false.
An AMI ID can either be specified in
     * the imageId or imageIdOverride parameters or be
     * determined by the launch template that's specified in the
     * launchTemplate parameter. If an AMI ID is specified any of these
     * ways, this parameter is ignored. For more information about to update AMI IDs
     * during an infrastructure update, see Updating
     * the AMI ID in the Batch User Guide.
When updating a * compute environment, changing this setting requires an infrastructure update of * the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
*/ inline bool UpdateToLatestImageVersionHasBeenSet() const { return m_updateToLatestImageVersionHasBeenSet; } /** *Specifies whether the AMI ID is updated to the latest one that's supported by
     * Batch when the compute environment has an infrastructure update. The default
     * value is false.
An AMI ID can either be specified in
     * the imageId or imageIdOverride parameters or be
     * determined by the launch template that's specified in the
     * launchTemplate parameter. If an AMI ID is specified any of these
     * ways, this parameter is ignored. For more information about to update AMI IDs
     * during an infrastructure update, see Updating
     * the AMI ID in the Batch User Guide.
When updating a * compute environment, changing this setting requires an infrastructure update of * the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
*/ inline void SetUpdateToLatestImageVersion(bool value) { m_updateToLatestImageVersionHasBeenSet = true; m_updateToLatestImageVersion = value; } /** *Specifies whether the AMI ID is updated to the latest one that's supported by
     * Batch when the compute environment has an infrastructure update. The default
     * value is false.
An AMI ID can either be specified in
     * the imageId or imageIdOverride parameters or be
     * determined by the launch template that's specified in the
     * launchTemplate parameter. If an AMI ID is specified any of these
     * ways, this parameter is ignored. For more information about to update AMI IDs
     * during an infrastructure update, see Updating
     * the AMI ID in the Batch User Guide.
When updating a * compute environment, changing this setting requires an infrastructure update of * the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
*/ inline ComputeResourceUpdate& WithUpdateToLatestImageVersion(bool value) { SetUpdateToLatestImageVersion(value); return *this;} /** *The type of compute environment: EC2, SPOT,
     * FARGATE, or FARGATE_SPOT. For more information, see Compute
     * environments in the Batch User Guide.
 If you choose
     * SPOT, you must also specify an Amazon EC2 Spot Fleet role with the
     * spotIamFleetRole parameter. For more information, see Amazon
     * EC2 spot fleet role in the Batch User Guide.
When updating a * compute environment, changing the type of a compute environment requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
*/ inline const CRType& GetType() const{ return m_type; } /** *The type of compute environment: EC2, SPOT,
     * FARGATE, or FARGATE_SPOT. For more information, see Compute
     * environments in the Batch User Guide.
 If you choose
     * SPOT, you must also specify an Amazon EC2 Spot Fleet role with the
     * spotIamFleetRole parameter. For more information, see Amazon
     * EC2 spot fleet role in the Batch User Guide.
When updating a * compute environment, changing the type of a compute environment requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
*/ inline bool TypeHasBeenSet() const { return m_typeHasBeenSet; } /** *The type of compute environment: EC2, SPOT,
     * FARGATE, or FARGATE_SPOT. For more information, see Compute
     * environments in the Batch User Guide.
 If you choose
     * SPOT, you must also specify an Amazon EC2 Spot Fleet role with the
     * spotIamFleetRole parameter. For more information, see Amazon
     * EC2 spot fleet role in the Batch User Guide.
When updating a * compute environment, changing the type of a compute environment requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
*/ inline void SetType(const CRType& value) { m_typeHasBeenSet = true; m_type = value; } /** *The type of compute environment: EC2, SPOT,
     * FARGATE, or FARGATE_SPOT. For more information, see Compute
     * environments in the Batch User Guide.
 If you choose
     * SPOT, you must also specify an Amazon EC2 Spot Fleet role with the
     * spotIamFleetRole parameter. For more information, see Amazon
     * EC2 spot fleet role in the Batch User Guide.
When updating a * compute environment, changing the type of a compute environment requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
*/ inline void SetType(CRType&& value) { m_typeHasBeenSet = true; m_type = std::move(value); } /** *The type of compute environment: EC2, SPOT,
     * FARGATE, or FARGATE_SPOT. For more information, see Compute
     * environments in the Batch User Guide.
 If you choose
     * SPOT, you must also specify an Amazon EC2 Spot Fleet role with the
     * spotIamFleetRole parameter. For more information, see Amazon
     * EC2 spot fleet role in the Batch User Guide.
When updating a * compute environment, changing the type of a compute environment requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
*/ inline ComputeResourceUpdate& WithType(const CRType& value) { SetType(value); return *this;} /** *The type of compute environment: EC2, SPOT,
     * FARGATE, or FARGATE_SPOT. For more information, see Compute
     * environments in the Batch User Guide.
 If you choose
     * SPOT, you must also specify an Amazon EC2 Spot Fleet role with the
     * spotIamFleetRole parameter. For more information, see Amazon
     * EC2 spot fleet role in the Batch User Guide.
When updating a * compute environment, changing the type of a compute environment requires an * infrastructure update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
*/ inline ComputeResourceUpdate& WithType(CRType&& value) { SetType(std::move(value)); return *this;} /** *The Amazon Machine Image (AMI) ID used for instances launched in the compute
     * environment. This parameter is overridden by the imageIdOverride
     * member of the Ec2Configuration structure. To remove the custom AMI
     * ID and use the default AMI ID, set this value to an empty string.
When * updating a compute environment, changing the AMI ID requires an infrastructure * update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
The AMI that you choose for a compute * environment must match the architecture of the instance types that you intend to * use for that compute environment. For example, if your compute environment uses * A1 instance types, the compute resource AMI that you choose must support ARM * instances. Amazon ECS vends both x86 and ARM versions of the Amazon * ECS-optimized Amazon Linux 2 AMI. For more information, see Amazon * ECS-optimized Amazon Linux 2 AMI in the Amazon Elastic Container Service * Developer Guide.
*/ inline const Aws::String& GetImageId() const{ return m_imageId; } /** *The Amazon Machine Image (AMI) ID used for instances launched in the compute
     * environment. This parameter is overridden by the imageIdOverride
     * member of the Ec2Configuration structure. To remove the custom AMI
     * ID and use the default AMI ID, set this value to an empty string.
When * updating a compute environment, changing the AMI ID requires an infrastructure * update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
The AMI that you choose for a compute * environment must match the architecture of the instance types that you intend to * use for that compute environment. For example, if your compute environment uses * A1 instance types, the compute resource AMI that you choose must support ARM * instances. Amazon ECS vends both x86 and ARM versions of the Amazon * ECS-optimized Amazon Linux 2 AMI. For more information, see Amazon * ECS-optimized Amazon Linux 2 AMI in the Amazon Elastic Container Service * Developer Guide.
*/ inline bool ImageIdHasBeenSet() const { return m_imageIdHasBeenSet; } /** *The Amazon Machine Image (AMI) ID used for instances launched in the compute
     * environment. This parameter is overridden by the imageIdOverride
     * member of the Ec2Configuration structure. To remove the custom AMI
     * ID and use the default AMI ID, set this value to an empty string.
When * updating a compute environment, changing the AMI ID requires an infrastructure * update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
The AMI that you choose for a compute * environment must match the architecture of the instance types that you intend to * use for that compute environment. For example, if your compute environment uses * A1 instance types, the compute resource AMI that you choose must support ARM * instances. Amazon ECS vends both x86 and ARM versions of the Amazon * ECS-optimized Amazon Linux 2 AMI. For more information, see Amazon * ECS-optimized Amazon Linux 2 AMI in the Amazon Elastic Container Service * Developer Guide.
*/ inline void SetImageId(const Aws::String& value) { m_imageIdHasBeenSet = true; m_imageId = value; } /** *The Amazon Machine Image (AMI) ID used for instances launched in the compute
     * environment. This parameter is overridden by the imageIdOverride
     * member of the Ec2Configuration structure. To remove the custom AMI
     * ID and use the default AMI ID, set this value to an empty string.
When * updating a compute environment, changing the AMI ID requires an infrastructure * update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
The AMI that you choose for a compute * environment must match the architecture of the instance types that you intend to * use for that compute environment. For example, if your compute environment uses * A1 instance types, the compute resource AMI that you choose must support ARM * instances. Amazon ECS vends both x86 and ARM versions of the Amazon * ECS-optimized Amazon Linux 2 AMI. For more information, see Amazon * ECS-optimized Amazon Linux 2 AMI in the Amazon Elastic Container Service * Developer Guide.
*/ inline void SetImageId(Aws::String&& value) { m_imageIdHasBeenSet = true; m_imageId = std::move(value); } /** *The Amazon Machine Image (AMI) ID used for instances launched in the compute
     * environment. This parameter is overridden by the imageIdOverride
     * member of the Ec2Configuration structure. To remove the custom AMI
     * ID and use the default AMI ID, set this value to an empty string.
When * updating a compute environment, changing the AMI ID requires an infrastructure * update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
The AMI that you choose for a compute * environment must match the architecture of the instance types that you intend to * use for that compute environment. For example, if your compute environment uses * A1 instance types, the compute resource AMI that you choose must support ARM * instances. Amazon ECS vends both x86 and ARM versions of the Amazon * ECS-optimized Amazon Linux 2 AMI. For more information, see Amazon * ECS-optimized Amazon Linux 2 AMI in the Amazon Elastic Container Service * Developer Guide.
*/ inline void SetImageId(const char* value) { m_imageIdHasBeenSet = true; m_imageId.assign(value); } /** *The Amazon Machine Image (AMI) ID used for instances launched in the compute
     * environment. This parameter is overridden by the imageIdOverride
     * member of the Ec2Configuration structure. To remove the custom AMI
     * ID and use the default AMI ID, set this value to an empty string.
When * updating a compute environment, changing the AMI ID requires an infrastructure * update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
The AMI that you choose for a compute * environment must match the architecture of the instance types that you intend to * use for that compute environment. For example, if your compute environment uses * A1 instance types, the compute resource AMI that you choose must support ARM * instances. Amazon ECS vends both x86 and ARM versions of the Amazon * ECS-optimized Amazon Linux 2 AMI. For more information, see Amazon * ECS-optimized Amazon Linux 2 AMI in the Amazon Elastic Container Service * Developer Guide.
*/ inline ComputeResourceUpdate& WithImageId(const Aws::String& value) { SetImageId(value); return *this;} /** *The Amazon Machine Image (AMI) ID used for instances launched in the compute
     * environment. This parameter is overridden by the imageIdOverride
     * member of the Ec2Configuration structure. To remove the custom AMI
     * ID and use the default AMI ID, set this value to an empty string.
When * updating a compute environment, changing the AMI ID requires an infrastructure * update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
The AMI that you choose for a compute * environment must match the architecture of the instance types that you intend to * use for that compute environment. For example, if your compute environment uses * A1 instance types, the compute resource AMI that you choose must support ARM * instances. Amazon ECS vends both x86 and ARM versions of the Amazon * ECS-optimized Amazon Linux 2 AMI. For more information, see Amazon * ECS-optimized Amazon Linux 2 AMI in the Amazon Elastic Container Service * Developer Guide.
*/ inline ComputeResourceUpdate& WithImageId(Aws::String&& value) { SetImageId(std::move(value)); return *this;} /** *The Amazon Machine Image (AMI) ID used for instances launched in the compute
     * environment. This parameter is overridden by the imageIdOverride
     * member of the Ec2Configuration structure. To remove the custom AMI
     * ID and use the default AMI ID, set this value to an empty string.
When * updating a compute environment, changing the AMI ID requires an infrastructure * update of the compute environment. For more information, see Updating * compute environments in the Batch User Guide.
This * parameter isn't applicable to jobs that are running on Fargate resources. Don't * specify it.
The AMI that you choose for a compute * environment must match the architecture of the instance types that you intend to * use for that compute environment. For example, if your compute environment uses * A1 instance types, the compute resource AMI that you choose must support ARM * instances. Amazon ECS vends both x86 and ARM versions of the Amazon * ECS-optimized Amazon Linux 2 AMI. For more information, see Amazon * ECS-optimized Amazon Linux 2 AMI in the Amazon Elastic Container Service * Developer Guide.
*/ inline ComputeResourceUpdate& WithImageId(const char* value) { SetImageId(value); return *this;} private: int m_minvCpus; bool m_minvCpusHasBeenSet = false; int m_maxvCpus; bool m_maxvCpusHasBeenSet = false; int m_desiredvCpus; bool m_desiredvCpusHasBeenSet = false; Aws::Vector