/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ /* * Do not modify this file. This file is generated from the batch-2016-08-10.normal.json service model. */ using System; using System.Collections.Generic; using System.Xml.Serialization; using System.Text; using System.IO; using System.Net; using Amazon.Runtime; using Amazon.Runtime.Internal; namespace Amazon.Batch.Model { /// /// Container for the parameters to the CreateComputeEnvironment operation. /// Creates an Batch compute environment. You can create MANAGED or UNMANAGED /// compute environments. MANAGED compute environments can use Amazon EC2 /// or Fargate resources. UNMANAGED compute environments can only use EC2 /// resources. /// /// /// /// In a managed compute environment, Batch manages the capacity and instance types of /// the compute resources within the environment. This is based on the compute resource /// specification that you define or the launch /// template that you specify when you create the compute environment. Either, you /// can choose to use EC2 On-Demand Instances and EC2 Spot Instances. Or, you can use /// Fargate and Fargate Spot capacity in your managed compute environment. You can optionally /// set a maximum price so that Spot Instances only launch when the Spot Instance price /// is less than a specified percentage of the On-Demand price. /// /// /// /// Multi-node parallel jobs aren't supported on Spot Instances. /// /// /// /// In an unmanaged compute environment, you can manage your own EC2 compute resources /// and have flexibility with how you configure your compute resources. For example, you /// can use custom AMIs. However, you must verify that each of your AMIs meet the Amazon /// ECS container instance AMI specification. For more information, see container /// instance AMIs in the Amazon Elastic Container Service Developer Guide. /// After you created your unmanaged compute environment, you can use the DescribeComputeEnvironments /// operation to find the Amazon ECS cluster that's associated with it. Then, launch your /// container instances into that Amazon ECS cluster. For more information, see Launching /// an Amazon ECS container instance in the Amazon Elastic Container Service Developer /// Guide. /// /// /// /// To create a compute environment that uses EKS resources, the caller must have permissions /// to call eks:DescribeCluster. /// /// /// /// Batch doesn't automatically upgrade the AMIs in a compute environment after it's created. /// For example, it also doesn't update the AMIs in your compute environment when a newer /// version of the Amazon ECS optimized AMI is available. You're responsible for the management /// of the guest operating system. This includes any updates and security patches. You're /// also responsible for any additional application software or utilities that you install /// on the compute resources. There are two ways to use a new AMI for your Batch jobs. /// The original method is to complete these steps: /// ///
  1. /// /// Create a new compute environment with the new AMI. /// ///
  2. /// /// Add the compute environment to an existing job queue. /// ///
  3. /// /// Remove the earlier compute environment from your job queue. /// ///
  4. /// /// Delete the earlier compute environment. /// ///
/// /// In April 2022, Batch added enhanced support for updating compute environments. For /// more information, see Updating /// compute environments. To use the enhanced updating of compute environments to /// update AMIs, follow these rules: /// /// /// /// If these rules are followed, any update that starts an infrastructure update causes /// the AMI ID to be re-selected. If the version setting in the launch template /// (launchTemplate) is set to $Latest or $Default, /// the latest or default version of the launch template is evaluated up at the time of /// the infrastructure update, even if the launchTemplate wasn't updated. /// ///
///
public partial class CreateComputeEnvironmentRequest : AmazonBatchRequest { private string _computeEnvironmentName; private ComputeResource _computeResources; private EksConfiguration _eksConfiguration; private string _serviceRole; private CEState _state; private Dictionary _tags = new Dictionary(); private CEType _type; private int? _unmanagedvCpus; /// /// Gets and sets the property ComputeEnvironmentName. /// /// The name for your compute environment. It can be up to 128 characters long. It can /// contain uppercase and lowercase letters, numbers, hyphens (-), and underscores (_). /// /// [AWSProperty(Required=true)] public string ComputeEnvironmentName { get { return this._computeEnvironmentName; } set { this._computeEnvironmentName = value; } } // Check to see if ComputeEnvironmentName property is set internal bool IsSetComputeEnvironmentName() { return this._computeEnvironmentName != null; } /// /// Gets and sets the property ComputeResources. /// /// Details about the compute resources managed by the compute environment. This parameter /// is required for managed compute environments. For more information, see Compute /// Environments in the Batch User Guide. /// /// public ComputeResource ComputeResources { get { return this._computeResources; } set { this._computeResources = value; } } // Check to see if ComputeResources property is set internal bool IsSetComputeResources() { return this._computeResources != null; } /// /// Gets and sets the property EksConfiguration. /// /// The details for the Amazon EKS cluster that supports the compute environment. /// /// public EksConfiguration EksConfiguration { get { return this._eksConfiguration; } set { this._eksConfiguration = value; } } // Check to see if EksConfiguration property is set internal bool IsSetEksConfiguration() { return this._eksConfiguration != null; } /// /// Gets and sets the property ServiceRole. /// /// The full Amazon Resource Name (ARN) of the IAM role that allows Batch to make calls /// to other Amazon Web Services services on your behalf. For more information, see Batch /// service IAM role in the Batch User Guide. /// /// /// /// If your account already created the Batch service-linked role, that role is used by /// default for your compute environment unless you specify a different role here. If /// the Batch service-linked role doesn't exist in your account, and no role is specified /// here, the service attempts to create the Batch service-linked role in your account. /// /// /// /// If your specified role has a path other than /, then you must specify /// either the full role ARN (recommended) or prefix the role name with the path. For /// example, if a role with the name bar has a path of /foo/, /// specify /foo/bar as the role name. For more information, see Friendly /// names and paths in the IAM User Guide. /// /// /// /// Depending on how you created your Batch service role, its ARN might contain the service-role /// path prefix. When you only specify the name of the service role, Batch assumes that /// your ARN doesn't use the service-role path prefix. Because of this, we /// recommend that you specify the full ARN of your service role when you create compute /// environments. /// /// /// public string ServiceRole { get { return this._serviceRole; } set { this._serviceRole = value; } } // Check to see if ServiceRole property is set internal bool IsSetServiceRole() { return this._serviceRole != null; } /// /// Gets and sets the property State. /// /// The state of the compute environment. If the state is ENABLED, then the /// compute environment accepts jobs from a queue and can scale out automatically based /// on queues. /// /// /// /// If the state is ENABLED, then the Batch scheduler can attempt to place /// jobs from an associated job queue on the compute resources within the environment. /// If the compute environment is managed, then it can scale its instances out or in automatically, /// based on the job queue demand. /// /// /// /// If the state is DISABLED, then the Batch scheduler doesn't attempt to /// place jobs within the environment. Jobs in a STARTING or RUNNING /// state continue to progress normally. Managed compute environments in the DISABLED /// state don't scale out. /// /// /// /// Compute environments in a DISABLED state may continue to incur billing /// charges. To prevent additional charges, turn off and then delete the compute environment. /// For more information, see State /// in the Batch User Guide. /// /// /// /// When an instance is idle, the instance scales down to the minvCpus value. /// However, the instance size doesn't change. For example, consider a c5.8xlarge /// instance with a minvCpus value of 4 and a desiredvCpus /// value of 36. This instance doesn't scale down to a c5.large /// instance. /// /// public CEState State { get { return this._state; } set { this._state = value; } } // Check to see if State property is set internal bool IsSetState() { return this._state != null; } /// /// Gets and sets the property Tags. /// /// The tags that you apply to the compute environment to help you categorize and organize /// your resources. Each tag consists of a key and an optional value. For more information, /// see Tagging /// Amazon Web Services Resources in Amazon Web Services General Reference. /// /// /// /// These tags can be updated or removed using the TagResource /// and UntagResource /// API operations. These tags don't propagate to the underlying compute resources. /// /// [AWSProperty(Min=1, Max=50)] public Dictionary Tags { get { return this._tags; } set { this._tags = value; } } // Check to see if Tags property is set internal bool IsSetTags() { return this._tags != null && this._tags.Count > 0; } /// /// Gets and sets the property Type. /// /// The type of the compute environment: MANAGED or UNMANAGED. /// For more information, see Compute /// Environments in the Batch User Guide. /// /// [AWSProperty(Required=true)] public CEType Type { get { return this._type; } set { this._type = value; } } // Check to see if Type property is set internal bool IsSetType() { return this._type != null; } /// /// Gets and sets the property UnmanagedvCpus. /// /// The maximum number of vCPUs for an unmanaged compute environment. This parameter is /// only used for fair share scheduling to reserve vCPU capacity for new share identifiers. /// If this parameter isn't provided for a fair share job queue, no vCPU capacity is reserved. /// /// /// /// This parameter is only supported when the type parameter is set to UNMANAGED. /// /// /// public int UnmanagedvCpus { get { return this._unmanagedvCpus.GetValueOrDefault(); } set { this._unmanagedvCpus = value; } } // Check to see if UnmanagedvCpus property is set internal bool IsSetUnmanagedvCpus() { return this._unmanagedvCpus.HasValue; } } }