Class ComputeResources
(experimental) Properties for defining the structure of the batch compute cluster.
Inheritance
Implements
Namespace: Amazon.CDK.AWS.Batch
Assembly: Amazon.CDK.AWS.Batch.dll
Syntax (csharp)
public class ComputeResources : Object, IComputeResources
Syntax (vb)
Public Class ComputeResources
Inherits Object
Implements IComputeResources
Remarks
Stability: Experimental
ExampleMetadata: infused
Examples
Vpc vpc;
var myComputeEnv = new ComputeEnvironment(this, "ComputeEnv", new ComputeEnvironmentProps {
ComputeResources = new ComputeResources {
Image = new EcsOptimizedAmi(new EcsOptimizedAmiProps {
Generation = AmazonLinuxGeneration.AMAZON_LINUX_2
}),
Vpc = vpc
}
});
Synopsis
Constructors
ComputeResources() |
Properties
AllocationStrategy | (experimental) The allocation strategy to use for the compute resource in case not enough instances of the best fitting instance type can be allocated. |
BidPercentage | (experimental) This property will be ignored if you set the environment type to ON_DEMAND. |
ComputeResourcesTags | (experimental) Key-value pair tags to be applied to resources that are launched in the compute environment. |
DesiredvCpus | (experimental) The desired number of EC2 vCPUS in the compute environment. |
Ec2KeyPair | (experimental) The EC2 key pair that is used for instances launched in the compute environment. |
Image | (experimental) The Amazon Machine Image (AMI) ID used for instances launched in the compute environment. |
InstanceRole | (experimental) The Amazon ECS instance profile applied to Amazon EC2 instances in a compute environment. |
InstanceTypes | (experimental) The types of EC2 instances that may be launched in the compute environment. |
LaunchTemplate | (experimental) An optional launch template to associate with your compute resources. |
MaxvCpus | (experimental) The maximum number of EC2 vCPUs that an environment can reach. |
MinvCpus | (experimental) The minimum number of EC2 vCPUs that an environment should maintain (even if the compute environment state is DISABLED). |
PlacementGroup | (experimental) The Amazon EC2 placement group to associate with your compute resources. |
SecurityGroups | (experimental) The EC2 security group(s) associated with instances launched in the compute environment. |
SpotFleetRole | (experimental) This property will be ignored if you set the environment type to ON_DEMAND. |
Type | (experimental) The type of compute environment: ON_DEMAND, SPOT, FARGATE, or FARGATE_SPOT. |
Vpc | (experimental) The VPC network that all compute resources will be connected to. |
VpcSubnets | (experimental) The VPC subnets into which the compute resources are launched. |
Constructors
ComputeResources()
public ComputeResources()
Properties
AllocationStrategy
(experimental) The allocation strategy to use for the compute resource in case not enough instances of the best fitting instance type can be allocated.
public Nullable<AllocationStrategy> AllocationStrategy { get; set; }
Property Value
System.Nullable<AllocationStrategy>
Remarks
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 for the EC2 ComputeResourceType 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 an additional instance type that is large enough to meet the requirements of the jobs in the queue, with a preference for an instance type with a lower cost. The default value for the SPOT instance type is SPOT_CAPACITY_OPTIMIZED, which is only available for for this type of compute resources and will select an additional instance type that is large enough to meet the requirements of the jobs in the queue, with a preference for an instance type that is less likely to be interrupted.
Default: AllocationStrategy.BEST_FIT
Stability: Experimental
BidPercentage
(experimental) This property will be ignored if you set the environment type to ON_DEMAND.
public Nullable<double> BidPercentage { get; set; }
Property Value
System.Nullable<System.Double>
Remarks
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 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.
Default: 100
Stability: Experimental
ComputeResourcesTags
(experimental) Key-value pair tags to be applied to resources that are launched in the compute environment.
public IDictionary<string, string> ComputeResourcesTags { get; set; }
Property Value
System.Collections.Generic.IDictionary<System.String, System.String>
Remarks
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" }.
Default: - no tags will be assigned on compute resources.
Stability: Experimental
DesiredvCpus
(experimental) The desired number of EC2 vCPUS in the compute environment.
public Nullable<double> DesiredvCpus { get; set; }
Property Value
System.Nullable<System.Double>
Remarks
Default: - no desired vcpu value will be used.
Stability: Experimental
Ec2KeyPair
(experimental) The EC2 key pair that is used for instances launched in the compute environment.
public string Ec2KeyPair { get; set; }
Property Value
System.String
Remarks
If no key is defined, then SSH access is not allowed to provisioned compute resources.
Default: - no SSH access will be possible.
Stability: Experimental
Image
(experimental) The Amazon Machine Image (AMI) ID used for instances launched in the compute environment.
public IMachineImage Image { get; set; }
Property Value
Remarks
Default: - no image will be used.
Stability: Experimental
InstanceRole
(experimental) The Amazon ECS instance profile applied to Amazon EC2 instances in a compute environment.
public string InstanceRole { get; set; }
Property Value
System.String
Remarks
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.
Default: - a new role will be created.
Stability: Experimental
Link: https://docs.aws.amazon.com/batch/latest/userguide/instance_IAM_role.html
InstanceTypes
(experimental) The types of EC2 instances that may be launched in the compute environment.
public InstanceType[] InstanceTypes { get; set; }
Property Value
Remarks
You can specify instance families to launch any instance type within those families (for example, c4 or p3), or you can specify specific sizes within a family (such as c4.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.
Default: optimal
Stability: Experimental
LaunchTemplate
(experimental) An optional launch template to associate with your compute resources.
public ILaunchTemplateSpecification LaunchTemplate { get; set; }
Property Value
Remarks
For more information, see README file.
Default: - no custom launch template will be used
Stability: Experimental
Link: https://docs.aws.amazon.com/batch/latest/userguide/launch-templates.html
MaxvCpus
(experimental) The maximum number of EC2 vCPUs that an environment can reach.
public Nullable<double> MaxvCpus { get; set; }
Property Value
System.Nullable<System.Double>
Remarks
Each vCPU is equivalent to 1,024 CPU shares. You must specify at least one vCPU.
Default: 256
Stability: Experimental
MinvCpus
(experimental) The minimum number of EC2 vCPUs that an environment should maintain (even if the compute environment state is DISABLED).
public Nullable<double> MinvCpus { get; set; }
Property Value
System.Nullable<System.Double>
Remarks
Each vCPU is equivalent to 1,024 CPU shares. By keeping this set to 0 you will not have instance time wasted when there is no work to be run. If you set this above zero you will maintain that number of vCPUs at all times.
Default: 0
Stability: Experimental
PlacementGroup
(experimental) The Amazon EC2 placement group to associate with your compute resources.
public string PlacementGroup { get; set; }
Property Value
System.String
Remarks
Default: - No placement group will be used.
Stability: Experimental
SecurityGroups
(experimental) The EC2 security group(s) associated with instances launched in the compute environment.
public ISecurityGroup[] SecurityGroups { get; set; }
Property Value
Remarks
Default: - AWS default security group.
Stability: Experimental
SpotFleetRole
(experimental) This property will be ignored if you set the environment type to ON_DEMAND.
public IRole SpotFleetRole { get; set; }
Property Value
Remarks
The Amazon Resource Name (ARN) of the Amazon EC2 Spot Fleet IAM role applied to a SPOT compute environment. For more information, see Amazon EC2 Spot Fleet Role in the AWS Batch User Guide.
Default: - no fleet role will be used.
Stability: Experimental
Link: https://docs.aws.amazon.com/batch/latest/userguide/spot_fleet_IAM_role.html
Type
(experimental) The type of compute environment: ON_DEMAND, SPOT, FARGATE, or FARGATE_SPOT.
public Nullable<ComputeResourceType> Type { get; set; }
Property Value
System.Nullable<ComputeResourceType>
Remarks
Default: ON_DEMAND
Stability: Experimental
Vpc
(experimental) The VPC network that all compute resources will be connected to.
public IVpc Vpc { get; set; }
Property Value
Remarks
Stability: Experimental
VpcSubnets
(experimental) The VPC subnets into which the compute resources are launched.
public ISubnetSelection VpcSubnets { get; set; }
Property Value
Remarks
Default: - private subnets of the supplied VPC.
Stability: Experimental