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

An object representing an AWS Batch compute resource.

See * Also:

AWS * API Reference

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

The type of compute environment: EC2 or SPOT.

*/ inline const CRType& GetType() const{ return m_type; } /** *

The type of compute environment: EC2 or SPOT.

*/ inline bool TypeHasBeenSet() const { return m_typeHasBeenSet; } /** *

The type of compute environment: EC2 or SPOT.

*/ inline void SetType(const CRType& value) { m_typeHasBeenSet = true; m_type = value; } /** *

The type of compute environment: EC2 or SPOT.

*/ inline void SetType(CRType&& value) { m_typeHasBeenSet = true; m_type = std::move(value); } /** *

The type of compute environment: EC2 or SPOT.

*/ inline ComputeResource& WithType(const CRType& value) { SetType(value); return *this;} /** *

The type of compute environment: EC2 or SPOT.

*/ inline ComputeResource& WithType(CRType&& value) { SetType(std::move(value)); return *this;} /** *

The allocation strategy to use for the compute resource in case not enough * instances of the best fitting instance type can be allocated. This could be due * to availability of the instance type in the region or Amazon * EC2 service limits. If this is not specified, the default is * BEST_FIT, which will use only the best fitting instance type, * waiting for additional capacity if it's not available. This allocation strategy * keeps costs lower but can limit scaling. If you are using Spot Fleets with * BEST_FIT then the Spot Fleet IAM Role must be specified. * BEST_FIT_PROGRESSIVE will select additional instance types that are * large enough to meet the requirements of the jobs in the queue, with a * preference for instance types with a lower cost per vCPU. * SPOT_CAPACITY_OPTIMIZED is only available for Spot Instance compute * resources and will select additional instance types that are large enough to * meet the requirements of the jobs in the queue, with a preference for instance * types that are less likely to be interrupted. For more information, see Allocation Strategies in the AWS Batch User Guide.

*/ inline const CRAllocationStrategy& GetAllocationStrategy() const{ return m_allocationStrategy; } /** *

The allocation strategy to use for the compute resource in case not enough * instances of the best fitting instance type can be allocated. This could be due * to availability of the instance type in the region or Amazon * EC2 service limits. If this is not specified, the default is * BEST_FIT, which will use only the best fitting instance type, * waiting for additional capacity if it's not available. This allocation strategy * keeps costs lower but can limit scaling. If you are using Spot Fleets with * BEST_FIT then the Spot Fleet IAM Role must be specified. * BEST_FIT_PROGRESSIVE will select additional instance types that are * large enough to meet the requirements of the jobs in the queue, with a * preference for instance types with a lower cost per vCPU. * SPOT_CAPACITY_OPTIMIZED is only available for Spot Instance compute * resources and will select additional instance types that are large enough to * meet the requirements of the jobs in the queue, with a preference for instance * types that are less likely to be interrupted. For more information, see Allocation Strategies in the AWS Batch User Guide.

*/ inline bool AllocationStrategyHasBeenSet() const { return m_allocationStrategyHasBeenSet; } /** *

The allocation strategy to use for the compute resource in case not enough * instances of the best fitting instance type can be allocated. This could be due * to availability of the instance type in the region or Amazon * EC2 service limits. If this is not specified, the default is * BEST_FIT, which will use only the best fitting instance type, * waiting for additional capacity if it's not available. This allocation strategy * keeps costs lower but can limit scaling. If you are using Spot Fleets with * BEST_FIT then the Spot Fleet IAM Role must be specified. * BEST_FIT_PROGRESSIVE will select additional instance types that are * large enough to meet the requirements of the jobs in the queue, with a * preference for instance types with a lower cost per vCPU. * SPOT_CAPACITY_OPTIMIZED is only available for Spot Instance compute * resources and will select additional instance types that are large enough to * meet the requirements of the jobs in the queue, with a preference for instance * types that are less likely to be interrupted. For more information, see Allocation Strategies in the AWS Batch User Guide.

*/ inline void SetAllocationStrategy(const CRAllocationStrategy& value) { m_allocationStrategyHasBeenSet = true; m_allocationStrategy = value; } /** *

The allocation strategy to use for the compute resource in case not enough * instances of the best fitting instance type can be allocated. This could be due * to availability of the instance type in the region or Amazon * EC2 service limits. If this is not specified, the default is * BEST_FIT, which will use only the best fitting instance type, * waiting for additional capacity if it's not available. This allocation strategy * keeps costs lower but can limit scaling. If you are using Spot Fleets with * BEST_FIT then the Spot Fleet IAM Role must be specified. * BEST_FIT_PROGRESSIVE will select additional instance types that are * large enough to meet the requirements of the jobs in the queue, with a * preference for instance types with a lower cost per vCPU. * SPOT_CAPACITY_OPTIMIZED is only available for Spot Instance compute * resources and will select additional instance types that are large enough to * meet the requirements of the jobs in the queue, with a preference for instance * types that are less likely to be interrupted. For more information, see Allocation Strategies in the AWS Batch User Guide.

*/ inline void SetAllocationStrategy(CRAllocationStrategy&& value) { m_allocationStrategyHasBeenSet = true; m_allocationStrategy = std::move(value); } /** *

The allocation strategy to use for the compute resource in case not enough * instances of the best fitting instance type can be allocated. This could be due * to availability of the instance type in the region or Amazon * EC2 service limits. If this is not specified, the default is * BEST_FIT, which will use only the best fitting instance type, * waiting for additional capacity if it's not available. This allocation strategy * keeps costs lower but can limit scaling. If you are using Spot Fleets with * BEST_FIT then the Spot Fleet IAM Role must be specified. * BEST_FIT_PROGRESSIVE will select additional instance types that are * large enough to meet the requirements of the jobs in the queue, with a * preference for instance types with a lower cost per vCPU. * SPOT_CAPACITY_OPTIMIZED is only available for Spot Instance compute * resources and will select additional instance types that are large enough to * meet the requirements of the jobs in the queue, with a preference for instance * types that are less likely to be interrupted. For more information, see Allocation Strategies in the AWS Batch User Guide.

*/ inline ComputeResource& WithAllocationStrategy(const CRAllocationStrategy& value) { SetAllocationStrategy(value); return *this;} /** *

The allocation strategy to use for the compute resource in case not enough * instances of the best fitting instance type can be allocated. This could be due * to availability of the instance type in the region or Amazon * EC2 service limits. If this is not specified, the default is * BEST_FIT, which will use only the best fitting instance type, * waiting for additional capacity if it's not available. This allocation strategy * keeps costs lower but can limit scaling. If you are using Spot Fleets with * BEST_FIT then the Spot Fleet IAM Role must be specified. * BEST_FIT_PROGRESSIVE will select additional instance types that are * large enough to meet the requirements of the jobs in the queue, with a * preference for instance types with a lower cost per vCPU. * SPOT_CAPACITY_OPTIMIZED is only available for Spot Instance compute * resources and will select additional instance types that are large enough to * meet the requirements of the jobs in the queue, with a preference for instance * types that are less likely to be interrupted. For more information, see Allocation Strategies in the AWS Batch User Guide.

*/ inline ComputeResource& WithAllocationStrategy(CRAllocationStrategy&& value) { SetAllocationStrategy(std::move(value)); return *this;} /** *

The minimum number of Amazon EC2 vCPUs that an environment should maintain * (even if the compute environment is DISABLED).

*/ inline int GetMinvCpus() const{ return m_minvCpus; } /** *

The minimum number of Amazon EC2 vCPUs that an environment should maintain * (even if the compute environment is DISABLED).

*/ inline bool MinvCpusHasBeenSet() const { return m_minvCpusHasBeenSet; } /** *

The minimum number of Amazon EC2 vCPUs that an environment should maintain * (even if the compute environment is DISABLED).

*/ inline void SetMinvCpus(int value) { m_minvCpusHasBeenSet = true; m_minvCpus = value; } /** *

The minimum number of Amazon EC2 vCPUs that an environment should maintain * (even if the compute environment is DISABLED).

*/ inline ComputeResource& WithMinvCpus(int value) { SetMinvCpus(value); return *this;} /** *

The maximum number of Amazon EC2 vCPUs that an environment can reach.

*/ inline int GetMaxvCpus() const{ return m_maxvCpus; } /** *

The maximum number of Amazon EC2 vCPUs that an environment can reach.

*/ inline bool MaxvCpusHasBeenSet() const { return m_maxvCpusHasBeenSet; } /** *

The maximum number of Amazon EC2 vCPUs that an environment can reach.

*/ inline void SetMaxvCpus(int value) { m_maxvCpusHasBeenSet = true; m_maxvCpus = value; } /** *

The maximum number of Amazon EC2 vCPUs that an environment can reach.

*/ inline ComputeResource& WithMaxvCpus(int value) { SetMaxvCpus(value); return *this;} /** *

The desired number of Amazon EC2 vCPUS in the compute environment.

*/ inline int GetDesiredvCpus() const{ return m_desiredvCpus; } /** *

The desired number of Amazon EC2 vCPUS in the compute environment.

*/ inline bool DesiredvCpusHasBeenSet() const { return m_desiredvCpusHasBeenSet; } /** *

The desired number of Amazon EC2 vCPUS in the compute environment.

*/ inline void SetDesiredvCpus(int value) { m_desiredvCpusHasBeenSet = true; m_desiredvCpus = value; } /** *

The desired number of Amazon EC2 vCPUS in the compute environment.

*/ inline ComputeResource& WithDesiredvCpus(int value) { SetDesiredvCpus(value); return *this;} /** *

The instances types that may 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 pick * instance types (from the C, M, and R instance families) on the fly that match * the demand of your job queues.

*/ inline const Aws::Vector& GetInstanceTypes() const{ return m_instanceTypes; } /** *

The instances types that may 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 pick * instance types (from the C, M, and R instance families) on the fly that match * the demand of your job queues.

*/ inline bool InstanceTypesHasBeenSet() const { return m_instanceTypesHasBeenSet; } /** *

The instances types that may 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 pick * instance types (from the C, M, and R instance families) on the fly that match * the demand of your job queues.

*/ inline void SetInstanceTypes(const Aws::Vector& value) { m_instanceTypesHasBeenSet = true; m_instanceTypes = value; } /** *

The instances types that may 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 pick * instance types (from the C, M, and R instance families) on the fly that match * the demand of your job queues.

*/ inline void SetInstanceTypes(Aws::Vector&& value) { m_instanceTypesHasBeenSet = true; m_instanceTypes = std::move(value); } /** *

The instances types that may 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 pick * instance types (from the C, M, and R instance families) on the fly that match * the demand of your job queues.

*/ inline ComputeResource& WithInstanceTypes(const Aws::Vector& value) { SetInstanceTypes(value); return *this;} /** *

The instances types that may 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 pick * instance types (from the C, M, and R instance families) on the fly that match * the demand of your job queues.

*/ inline ComputeResource& WithInstanceTypes(Aws::Vector&& value) { SetInstanceTypes(std::move(value)); return *this;} /** *

The instances types that may 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 pick * instance types (from the C, M, and R instance families) on the fly that match * the demand of your job queues.

*/ inline ComputeResource& AddInstanceTypes(const Aws::String& value) { m_instanceTypesHasBeenSet = true; m_instanceTypes.push_back(value); return *this; } /** *

The instances types that may 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 pick * instance types (from the C, M, and R instance families) on the fly that match * the demand of your job queues.

*/ inline ComputeResource& AddInstanceTypes(Aws::String&& value) { m_instanceTypesHasBeenSet = true; m_instanceTypes.push_back(std::move(value)); return *this; } /** *

The instances types that may 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 pick * instance types (from the C, M, and R instance families) on the fly that match * the demand of your job queues.

*/ inline ComputeResource& AddInstanceTypes(const char* value) { m_instanceTypesHasBeenSet = true; m_instanceTypes.push_back(value); return *this; } /** *

The Amazon Machine Image (AMI) ID used for instances launched in the compute * environment.

*/ inline const Aws::String& GetImageId() const{ return m_imageId; } /** *

The Amazon Machine Image (AMI) ID used for instances launched in the compute * environment.

*/ inline bool ImageIdHasBeenSet() const { return m_imageIdHasBeenSet; } /** *

The Amazon Machine Image (AMI) ID used for instances launched in the compute * environment.

*/ 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.

*/ 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.

*/ 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.

*/ inline ComputeResource& WithImageId(const Aws::String& value) { SetImageId(value); return *this;} /** *

The Amazon Machine Image (AMI) ID used for instances launched in the compute * environment.

*/ inline ComputeResource& WithImageId(Aws::String&& value) { SetImageId(std::move(value)); return *this;} /** *

The Amazon Machine Image (AMI) ID used for instances launched in the compute * environment.

*/ inline ComputeResource& WithImageId(const char* value) { SetImageId(value); return *this;} /** *

The VPC subnets into which the compute resources are launched. For more * information, see VPCs * and Subnets in the Amazon VPC User Guide.

*/ inline const Aws::Vector& GetSubnets() const{ return m_subnets; } /** *

The VPC subnets into which the compute resources are launched. For more * information, see VPCs * and Subnets in the Amazon VPC User Guide.

*/ inline bool SubnetsHasBeenSet() const { return m_subnetsHasBeenSet; } /** *

The VPC subnets into which the compute resources are launched. For more * information, see VPCs * and Subnets in the Amazon VPC User Guide.

*/ inline void SetSubnets(const Aws::Vector& value) { m_subnetsHasBeenSet = true; m_subnets = value; } /** *

The VPC subnets into which the compute resources are launched. For more * information, see VPCs * and Subnets in the Amazon VPC User Guide.

*/ inline void SetSubnets(Aws::Vector&& value) { m_subnetsHasBeenSet = true; m_subnets = std::move(value); } /** *

The VPC subnets into which the compute resources are launched. For more * information, see VPCs * and Subnets in the Amazon VPC User Guide.

*/ inline ComputeResource& WithSubnets(const Aws::Vector& value) { SetSubnets(value); return *this;} /** *

The VPC subnets into which the compute resources are launched. For more * information, see VPCs * and Subnets in the Amazon VPC User Guide.

*/ inline ComputeResource& WithSubnets(Aws::Vector&& value) { SetSubnets(std::move(value)); return *this;} /** *

The VPC subnets into which the compute resources are launched. For more * information, see VPCs * and Subnets in the Amazon VPC User Guide.

*/ inline ComputeResource& AddSubnets(const Aws::String& value) { m_subnetsHasBeenSet = true; m_subnets.push_back(value); return *this; } /** *

The VPC subnets into which the compute resources are launched. For more * information, see VPCs * and Subnets in the Amazon VPC User Guide.

*/ inline ComputeResource& AddSubnets(Aws::String&& value) { m_subnetsHasBeenSet = true; m_subnets.push_back(std::move(value)); return *this; } /** *

The VPC subnets into which the compute resources are launched. For more * information, see VPCs * and Subnets in the Amazon VPC User Guide.

*/ inline ComputeResource& AddSubnets(const char* value) { m_subnetsHasBeenSet = true; m_subnets.push_back(value); return *this; } /** *

The Amazon EC2 security groups associated with instances launched in the * compute environment. One or more security groups must be specified, either in * securityGroupIds or using a launch template referenced in * launchTemplate. If security groups are specified using both * securityGroupIds and launchTemplate, the values in * securityGroupIds will be used.

*/ inline const Aws::Vector& GetSecurityGroupIds() const{ return m_securityGroupIds; } /** *

The Amazon EC2 security groups associated with instances launched in the * compute environment. One or more security groups must be specified, either in * securityGroupIds or using a launch template referenced in * launchTemplate. If security groups are specified using both * securityGroupIds and launchTemplate, the values in * securityGroupIds will be used.

*/ inline bool SecurityGroupIdsHasBeenSet() const { return m_securityGroupIdsHasBeenSet; } /** *

The Amazon EC2 security groups associated with instances launched in the * compute environment. One or more security groups must be specified, either in * securityGroupIds or using a launch template referenced in * launchTemplate. If security groups are specified using both * securityGroupIds and launchTemplate, the values in * securityGroupIds will be used.

*/ inline void SetSecurityGroupIds(const Aws::Vector& value) { m_securityGroupIdsHasBeenSet = true; m_securityGroupIds = value; } /** *

The Amazon EC2 security groups associated with instances launched in the * compute environment. One or more security groups must be specified, either in * securityGroupIds or using a launch template referenced in * launchTemplate. If security groups are specified using both * securityGroupIds and launchTemplate, the values in * securityGroupIds will be used.

*/ inline void SetSecurityGroupIds(Aws::Vector&& value) { m_securityGroupIdsHasBeenSet = true; m_securityGroupIds = std::move(value); } /** *

The Amazon EC2 security groups associated with instances launched in the * compute environment. One or more security groups must be specified, either in * securityGroupIds or using a launch template referenced in * launchTemplate. If security groups are specified using both * securityGroupIds and launchTemplate, the values in * securityGroupIds will be used.

*/ inline ComputeResource& WithSecurityGroupIds(const Aws::Vector& value) { SetSecurityGroupIds(value); return *this;} /** *

The Amazon EC2 security groups associated with instances launched in the * compute environment. One or more security groups must be specified, either in * securityGroupIds or using a launch template referenced in * launchTemplate. If security groups are specified using both * securityGroupIds and launchTemplate, the values in * securityGroupIds will be used.

*/ inline ComputeResource& WithSecurityGroupIds(Aws::Vector&& value) { SetSecurityGroupIds(std::move(value)); return *this;} /** *

The Amazon EC2 security groups associated with instances launched in the * compute environment. One or more security groups must be specified, either in * securityGroupIds or using a launch template referenced in * launchTemplate. If security groups are specified using both * securityGroupIds and launchTemplate, the values in * securityGroupIds will be used.

*/ inline ComputeResource& AddSecurityGroupIds(const Aws::String& value) { m_securityGroupIdsHasBeenSet = true; m_securityGroupIds.push_back(value); return *this; } /** *

The Amazon EC2 security groups associated with instances launched in the * compute environment. One or more security groups must be specified, either in * securityGroupIds or using a launch template referenced in * launchTemplate. If security groups are specified using both * securityGroupIds and launchTemplate, the values in * securityGroupIds will be used.

*/ inline ComputeResource& AddSecurityGroupIds(Aws::String&& value) { m_securityGroupIdsHasBeenSet = true; m_securityGroupIds.push_back(std::move(value)); return *this; } /** *

The Amazon EC2 security groups associated with instances launched in the * compute environment. One or more security groups must be specified, either in * securityGroupIds or using a launch template referenced in * launchTemplate. If security groups are specified using both * securityGroupIds and launchTemplate, the values in * securityGroupIds will be used.

*/ inline ComputeResource& AddSecurityGroupIds(const char* value) { m_securityGroupIdsHasBeenSet = true; m_securityGroupIds.push_back(value); return *this; } /** *

The Amazon EC2 key pair that is used for instances launched in the compute * environment.

*/ inline const Aws::String& GetEc2KeyPair() const{ return m_ec2KeyPair; } /** *

The Amazon EC2 key pair that is used for instances launched in the compute * environment.

*/ inline bool Ec2KeyPairHasBeenSet() const { return m_ec2KeyPairHasBeenSet; } /** *

The Amazon EC2 key pair that is used for instances launched in the compute * environment.

*/ inline void SetEc2KeyPair(const Aws::String& value) { m_ec2KeyPairHasBeenSet = true; m_ec2KeyPair = value; } /** *

The Amazon EC2 key pair that is used for instances launched in the compute * environment.

*/ inline void SetEc2KeyPair(Aws::String&& value) { m_ec2KeyPairHasBeenSet = true; m_ec2KeyPair = std::move(value); } /** *

The Amazon EC2 key pair that is used for instances launched in the compute * environment.

*/ inline void SetEc2KeyPair(const char* value) { m_ec2KeyPairHasBeenSet = true; m_ec2KeyPair.assign(value); } /** *

The Amazon EC2 key pair that is used for instances launched in the compute * environment.

*/ inline ComputeResource& WithEc2KeyPair(const Aws::String& value) { SetEc2KeyPair(value); return *this;} /** *

The Amazon EC2 key pair that is used for instances launched in the compute * environment.

*/ inline ComputeResource& WithEc2KeyPair(Aws::String&& value) { SetEc2KeyPair(std::move(value)); return *this;} /** *

The Amazon EC2 key pair that is used for instances launched in the compute * environment.

*/ inline ComputeResource& 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 AWS Batch User Guide.

*/ 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 AWS Batch User Guide.

*/ 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 AWS Batch User Guide.

*/ 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 AWS Batch User Guide.

*/ 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 AWS Batch User Guide.

*/ 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 AWS Batch User Guide.

*/ inline ComputeResource& 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 AWS Batch User Guide.

*/ inline ComputeResource& 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 AWS Batch User Guide.

*/ inline ComputeResource& WithInstanceRole(const char* value) { SetInstanceRole(value); return *this;} /** *

Key-value pair tags to be applied to resources that are launched in the * compute environment. For AWS Batch, these take the form of "String1": "String2", * where String1 is the tag key and String2 is the tag value—for example, { "Name": * "AWS Batch Instance - C4OnDemand" }.

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

Key-value pair tags to be applied to resources that are launched in the * compute environment. For AWS Batch, these take the form of "String1": "String2", * where String1 is the tag key and String2 is the tag value—for example, { "Name": * "AWS Batch Instance - C4OnDemand" }.

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

Key-value pair tags to be applied to resources that are launched in the * compute environment. For AWS Batch, these take the form of "String1": "String2", * where String1 is the tag key and String2 is the tag value—for example, { "Name": * "AWS Batch Instance - C4OnDemand" }.

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

Key-value pair tags to be applied to resources that are launched in the * compute environment. For AWS Batch, these take the form of "String1": "String2", * where String1 is the tag key and String2 is the tag value—for example, { "Name": * "AWS Batch Instance - C4OnDemand" }.

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

Key-value pair tags to be applied to resources that are launched in the * compute environment. For AWS Batch, these take the form of "String1": "String2", * where String1 is the tag key and String2 is the tag value—for example, { "Name": * "AWS Batch Instance - C4OnDemand" }.

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

Key-value pair tags to be applied to resources that are launched in the * compute environment. For AWS Batch, these take the form of "String1": "String2", * where String1 is the tag key and String2 is the tag value—for example, { "Name": * "AWS Batch Instance - C4OnDemand" }.

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

Key-value pair tags to be applied to resources that are launched in the * compute environment. For AWS Batch, these take the form of "String1": "String2", * where String1 is the tag key and String2 is the tag value—for example, { "Name": * "AWS Batch Instance - C4OnDemand" }.

*/ inline ComputeResource& 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 resources that are launched in the * compute environment. For AWS Batch, these take the form of "String1": "String2", * where String1 is the tag key and String2 is the tag value—for example, { "Name": * "AWS Batch Instance - C4OnDemand" }.

*/ inline ComputeResource& 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 resources that are launched in the * compute environment. For AWS Batch, these take the form of "String1": "String2", * where String1 is the tag key and String2 is the tag value—for example, { "Name": * "AWS Batch Instance - C4OnDemand" }.

*/ inline ComputeResource& 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 resources that are launched in the * compute environment. For AWS Batch, these take the form of "String1": "String2", * where String1 is the tag key and String2 is the tag value—for example, { "Name": * "AWS Batch Instance - C4OnDemand" }.

*/ inline ComputeResource& 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 resources that are launched in the * compute environment. For AWS Batch, these take the form of "String1": "String2", * where String1 is the tag key and String2 is the tag value—for example, { "Name": * "AWS Batch Instance - C4OnDemand" }.

*/ inline ComputeResource& 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 resources that are launched in the * compute environment. For AWS Batch, these take the form of "String1": "String2", * where String1 is the tag key and String2 is the tag value—for example, { "Name": * "AWS Batch Instance - C4OnDemand" }.

*/ inline ComputeResource& 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 resources that are launched in the * compute environment. For AWS Batch, these take the form of "String1": "String2", * where String1 is the tag key and String2 is the tag value—for example, { "Name": * "AWS Batch Instance - C4OnDemand" }.

*/ inline ComputeResource& 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.

*/ 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.

*/ 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.

*/ 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.

*/ 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.

*/ 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.

*/ inline ComputeResource& 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.

*/ inline ComputeResource& 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.

*/ inline ComputeResource& 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%, then the Spot price must be below * 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. If you * leave this field empty, the default value is 100% of the On-Demand price.

*/ 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%, then the Spot price must be below * 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. If you * leave this field empty, the default value is 100% of the On-Demand price.

*/ 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%, then the Spot price must be below * 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. If you * leave this field empty, the default value is 100% of the On-Demand price.

*/ 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%, then the Spot price must be below * 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. If you * leave this field empty, the default value is 100% of the On-Demand price.

*/ inline ComputeResource& WithBidPercentage(int value) { SetBidPercentage(value); return *this;} /** *

The Amazon Resource Name (ARN) of the Amazon EC2 Spot Fleet IAM role applied * to a SPOT compute environment. This role is required if the * allocation strategy set to BEST_FIT or if the allocation strategy * is not specified. For more information, see Amazon * EC2 Spot Fleet Role in the AWS Batch User Guide.

*/ inline const Aws::String& GetSpotIamFleetRole() const{ return m_spotIamFleetRole; } /** *

The Amazon Resource Name (ARN) of the Amazon EC2 Spot Fleet IAM role applied * to a SPOT compute environment. This role is required if the * allocation strategy set to BEST_FIT or if the allocation strategy * is not specified. For more information, see Amazon * EC2 Spot Fleet Role in the AWS Batch User Guide.

*/ inline bool SpotIamFleetRoleHasBeenSet() const { return m_spotIamFleetRoleHasBeenSet; } /** *

The Amazon Resource Name (ARN) of the Amazon EC2 Spot Fleet IAM role applied * to a SPOT compute environment. This role is required if the * allocation strategy set to BEST_FIT or if the allocation strategy * is not specified. For more information, see Amazon * EC2 Spot Fleet Role in the AWS Batch User Guide.

*/ inline void SetSpotIamFleetRole(const Aws::String& value) { m_spotIamFleetRoleHasBeenSet = true; m_spotIamFleetRole = value; } /** *

The Amazon Resource Name (ARN) of the Amazon EC2 Spot Fleet IAM role applied * to a SPOT compute environment. This role is required if the * allocation strategy set to BEST_FIT or if the allocation strategy * is not specified. For more information, see Amazon * EC2 Spot Fleet Role in the AWS Batch User Guide.

*/ inline void SetSpotIamFleetRole(Aws::String&& value) { m_spotIamFleetRoleHasBeenSet = true; m_spotIamFleetRole = std::move(value); } /** *

The Amazon Resource Name (ARN) of the Amazon EC2 Spot Fleet IAM role applied * to a SPOT compute environment. This role is required if the * allocation strategy set to BEST_FIT or if the allocation strategy * is not specified. For more information, see Amazon * EC2 Spot Fleet Role in the AWS Batch User Guide.

*/ inline void SetSpotIamFleetRole(const char* value) { m_spotIamFleetRoleHasBeenSet = true; m_spotIamFleetRole.assign(value); } /** *

The Amazon Resource Name (ARN) of the Amazon EC2 Spot Fleet IAM role applied * to a SPOT compute environment. This role is required if the * allocation strategy set to BEST_FIT or if the allocation strategy * is not specified. For more information, see Amazon * EC2 Spot Fleet Role in the AWS Batch User Guide.

*/ inline ComputeResource& WithSpotIamFleetRole(const Aws::String& value) { SetSpotIamFleetRole(value); return *this;} /** *

The Amazon Resource Name (ARN) of the Amazon EC2 Spot Fleet IAM role applied * to a SPOT compute environment. This role is required if the * allocation strategy set to BEST_FIT or if the allocation strategy * is not specified. For more information, see Amazon * EC2 Spot Fleet Role in the AWS Batch User Guide.

*/ inline ComputeResource& WithSpotIamFleetRole(Aws::String&& value) { SetSpotIamFleetRole(std::move(value)); return *this;} /** *

The Amazon Resource Name (ARN) of the Amazon EC2 Spot Fleet IAM role applied * to a SPOT compute environment. This role is required if the * allocation strategy set to BEST_FIT or if the allocation strategy * is not specified. For more information, see Amazon * EC2 Spot Fleet Role in the AWS Batch User Guide.

*/ inline ComputeResource& WithSpotIamFleetRole(const char* value) { SetSpotIamFleetRole(value); return *this;} /** *

The launch template to use for your compute resources. Any other compute * resource parameters that you specify in a CreateComputeEnvironment API * operation override the same parameters in the launch template. 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 AWS Batch User Guide.

*/ inline const LaunchTemplateSpecification& GetLaunchTemplate() const{ return m_launchTemplate; } /** *

The launch template to use for your compute resources. Any other compute * resource parameters that you specify in a CreateComputeEnvironment API * operation override the same parameters in the launch template. 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 AWS Batch User Guide.

*/ inline bool LaunchTemplateHasBeenSet() const { return m_launchTemplateHasBeenSet; } /** *

The launch template to use for your compute resources. Any other compute * resource parameters that you specify in a CreateComputeEnvironment API * operation override the same parameters in the launch template. 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 AWS Batch User Guide.

*/ inline void SetLaunchTemplate(const LaunchTemplateSpecification& value) { m_launchTemplateHasBeenSet = true; m_launchTemplate = value; } /** *

The launch template to use for your compute resources. Any other compute * resource parameters that you specify in a CreateComputeEnvironment API * operation override the same parameters in the launch template. 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 AWS Batch User Guide.

*/ inline void SetLaunchTemplate(LaunchTemplateSpecification&& value) { m_launchTemplateHasBeenSet = true; m_launchTemplate = std::move(value); } /** *

The launch template to use for your compute resources. Any other compute * resource parameters that you specify in a CreateComputeEnvironment API * operation override the same parameters in the launch template. 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 AWS Batch User Guide.

*/ inline ComputeResource& WithLaunchTemplate(const LaunchTemplateSpecification& value) { SetLaunchTemplate(value); return *this;} /** *

The launch template to use for your compute resources. Any other compute * resource parameters that you specify in a CreateComputeEnvironment API * operation override the same parameters in the launch template. 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 AWS Batch User Guide.

*/ inline ComputeResource& WithLaunchTemplate(LaunchTemplateSpecification&& value) { SetLaunchTemplate(std::move(value)); return *this;} private: CRType m_type; bool m_typeHasBeenSet; CRAllocationStrategy m_allocationStrategy; bool m_allocationStrategyHasBeenSet; int m_minvCpus; bool m_minvCpusHasBeenSet; int m_maxvCpus; bool m_maxvCpusHasBeenSet; int m_desiredvCpus; bool m_desiredvCpusHasBeenSet; Aws::Vector m_instanceTypes; bool m_instanceTypesHasBeenSet; Aws::String m_imageId; bool m_imageIdHasBeenSet; Aws::Vector m_subnets; bool m_subnetsHasBeenSet; Aws::Vector m_securityGroupIds; bool m_securityGroupIdsHasBeenSet; Aws::String m_ec2KeyPair; bool m_ec2KeyPairHasBeenSet; Aws::String m_instanceRole; bool m_instanceRoleHasBeenSet; Aws::Map m_tags; bool m_tagsHasBeenSet; Aws::String m_placementGroup; bool m_placementGroupHasBeenSet; int m_bidPercentage; bool m_bidPercentageHasBeenSet; Aws::String m_spotIamFleetRole; bool m_spotIamFleetRoleHasBeenSet; LaunchTemplateSpecification m_launchTemplate; bool m_launchTemplateHasBeenSet; }; } // namespace Model } // namespace Batch } // namespace Aws