/* * 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 elasticmapreduce-2009-03-31.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.ElasticMapReduce.Model { /// /// Container for the parameters to the RunJobFlow operation. /// RunJobFlow creates and starts running a new cluster (job flow). The cluster runs the /// steps specified. After the steps complete, the cluster stops and the HDFS partition /// is lost. To prevent loss of data, configure the last step of the job flow to store /// results in Amazon S3. If the JobFlowInstancesConfig KeepJobFlowAliveWhenNoSteps /// parameter is set to TRUE, the cluster transitions to the WAITING state /// rather than shutting down after the steps have completed. /// /// /// /// For additional protection, you can set the JobFlowInstancesConfig TerminationProtected /// parameter to TRUE to lock the cluster and prevent it from being terminated /// by API call, user intervention, or in the event of a job flow error. /// /// /// /// A maximum of 256 steps are allowed in each job flow. /// /// /// /// If your cluster is long-running (such as a Hive data warehouse) or complex, you may /// require more than 256 steps to process your data. You can bypass the 256-step limitation /// in various ways, including using the SSH shell to connect to the master node and submitting /// queries directly to the software running on the master node, such as Hive and Hadoop. /// /// /// /// For long-running clusters, we recommend that you periodically store your results. /// /// /// /// The instance fleets configuration is available only in Amazon EMR releases 4.8.0 and /// later, excluding 5.0.x versions. The RunJobFlow request can contain InstanceFleets /// parameters or InstanceGroups parameters, but not both. /// /// /// public partial class RunJobFlowRequest : AmazonElasticMapReduceRequest { private string _additionalInfo; private string _amiVersion; private List _applications = new List(); private string _autoScalingRole; private AutoTerminationPolicy _autoTerminationPolicy; private List _bootstrapActions = new List(); private List _configurations = new List(); private string _customAmiId; private int? _ebsRootVolumeSize; private JobFlowInstancesConfig _instances; private string _jobFlowRole; private KerberosAttributes _kerberosAttributes; private string _logEncryptionKmsKeyId; private string _logUri; private ManagedScalingPolicy _managedScalingPolicy; private string _name; private List _newSupportedProducts = new List(); private string _osReleaseLabel; private List _placementGroupConfigs = new List(); private string _releaseLabel; private RepoUpgradeOnBoot _repoUpgradeOnBoot; private ScaleDownBehavior _scaleDownBehavior; private string _securityConfiguration; private string _serviceRole; private int? _stepConcurrencyLevel; private List _steps = new List(); private List _supportedProducts = new List(); private List _tags = new List(); private bool? _visibleToAllUsers; /// /// Empty constructor used to set properties independently even when a simple constructor is available /// public RunJobFlowRequest() { } /// /// Instantiates RunJobFlowRequest with the parameterized properties /// /// The name of the job flow. /// A specification of the number and type of Amazon EC2 instances. public RunJobFlowRequest(string name, JobFlowInstancesConfig instances) { _name = name; _instances = instances; } /// /// Gets and sets the property AdditionalInfo. /// /// A JSON string for selecting additional features. /// /// [AWSProperty(Min=0, Max=10280)] public string AdditionalInfo { get { return this._additionalInfo; } set { this._additionalInfo = value; } } // Check to see if AdditionalInfo property is set internal bool IsSetAdditionalInfo() { return this._additionalInfo != null; } /// /// Gets and sets the property AmiVersion. /// /// Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases 4.0 and /// later, ReleaseLabel is used. To specify a custom AMI, use CustomAmiID. /// /// [AWSProperty(Min=0, Max=256)] public string AmiVersion { get { return this._amiVersion; } set { this._amiVersion = value; } } // Check to see if AmiVersion property is set internal bool IsSetAmiVersion() { return this._amiVersion != null; } /// /// Gets and sets the property Applications. /// /// Applies to Amazon EMR releases 4.0 and later. A case-insensitive list of applications /// for Amazon EMR to install and configure when launching the cluster. For a list of /// applications available for each Amazon EMR release version, see the Amazon /// EMRRelease Guide. /// /// public List Applications { get { return this._applications; } set { this._applications = value; } } // Check to see if Applications property is set internal bool IsSetApplications() { return this._applications != null && this._applications.Count > 0; } /// /// Gets and sets the property AutoScalingRole. /// /// An IAM role for automatic scaling policies. The default role is EMR_AutoScaling_DefaultRole. /// The IAM role provides permissions that the automatic scaling feature requires to launch /// and terminate Amazon EC2 instances in an instance group. /// /// [AWSProperty(Min=0, Max=10280)] public string AutoScalingRole { get { return this._autoScalingRole; } set { this._autoScalingRole = value; } } // Check to see if AutoScalingRole property is set internal bool IsSetAutoScalingRole() { return this._autoScalingRole != null; } /// /// Gets and sets the property AutoTerminationPolicy. /// public AutoTerminationPolicy AutoTerminationPolicy { get { return this._autoTerminationPolicy; } set { this._autoTerminationPolicy = value; } } // Check to see if AutoTerminationPolicy property is set internal bool IsSetAutoTerminationPolicy() { return this._autoTerminationPolicy != null; } /// /// Gets and sets the property BootstrapActions. /// /// A list of bootstrap actions to run before Hadoop starts on the cluster nodes. /// /// public List BootstrapActions { get { return this._bootstrapActions; } set { this._bootstrapActions = value; } } // Check to see if BootstrapActions property is set internal bool IsSetBootstrapActions() { return this._bootstrapActions != null && this._bootstrapActions.Count > 0; } /// /// Gets and sets the property Configurations. /// /// For Amazon EMR releases 4.0 and later. The list of configurations supplied for the /// Amazon EMR cluster that you are creating. /// /// public List Configurations { get { return this._configurations; } set { this._configurations = value; } } // Check to see if Configurations property is set internal bool IsSetConfigurations() { return this._configurations != null && this._configurations.Count > 0; } /// /// Gets and sets the property CustomAmiId. /// /// Available only in Amazon EMR releases 5.7.0 and later. The ID of a custom Amazon EBS-backed /// Linux AMI. If specified, Amazon EMR uses this AMI when it launches cluster Amazon /// EC2 instances. For more information about custom AMIs in Amazon EMR, see Using /// a Custom AMI in the Amazon EMR Management Guide. If omitted, the cluster /// uses the base Linux AMI for the ReleaseLabel specified. For Amazon EMR /// releases 2.x and 3.x, use AmiVersion instead. /// /// /// /// For information about creating a custom AMI, see Creating /// an Amazon EBS-Backed Linux AMI in the Amazon Elastic Compute Cloud User Guide /// for Linux Instances. For information about finding an AMI ID, see Finding /// a Linux AMI. /// /// [AWSProperty(Min=0, Max=256)] public string CustomAmiId { get { return this._customAmiId; } set { this._customAmiId = value; } } // Check to see if CustomAmiId property is set internal bool IsSetCustomAmiId() { return this._customAmiId != null; } /// /// Gets and sets the property EbsRootVolumeSize. /// /// The size, in GiB, of the Amazon EBS root device volume of the Linux AMI that is used /// for each Amazon EC2 instance. Available in Amazon EMR releases 4.x and later. /// /// public int EbsRootVolumeSize { get { return this._ebsRootVolumeSize.GetValueOrDefault(); } set { this._ebsRootVolumeSize = value; } } // Check to see if EbsRootVolumeSize property is set internal bool IsSetEbsRootVolumeSize() { return this._ebsRootVolumeSize.HasValue; } /// /// Gets and sets the property Instances. /// /// A specification of the number and type of Amazon EC2 instances. /// /// [AWSProperty(Required=true)] public JobFlowInstancesConfig Instances { get { return this._instances; } set { this._instances = value; } } // Check to see if Instances property is set internal bool IsSetInstances() { return this._instances != null; } /// /// Gets and sets the property JobFlowRole. /// /// Also called instance profile and Amazon EC2 role. An IAM role for an Amazon EMR cluster. /// The Amazon EC2 instances of the cluster assume this role. The default role is EMR_EC2_DefaultRole. /// In order to use the default role, you must have already created it using the CLI or /// console. /// /// [AWSProperty(Min=0, Max=10280)] public string JobFlowRole { get { return this._jobFlowRole; } set { this._jobFlowRole = value; } } // Check to see if JobFlowRole property is set internal bool IsSetJobFlowRole() { return this._jobFlowRole != null; } /// /// Gets and sets the property KerberosAttributes. /// /// Attributes for Kerberos configuration when Kerberos authentication is enabled using /// a security configuration. For more information see Use /// Kerberos Authentication in the Amazon EMR Management Guide. /// /// public KerberosAttributes KerberosAttributes { get { return this._kerberosAttributes; } set { this._kerberosAttributes = value; } } // Check to see if KerberosAttributes property is set internal bool IsSetKerberosAttributes() { return this._kerberosAttributes != null; } /// /// Gets and sets the property LogEncryptionKmsKeyId. /// /// The KMS key used for encrypting log files. If a value is not provided, the logs remain /// encrypted by AES-256. This attribute is only available with Amazon EMR releases 5.30.0 /// and later, excluding Amazon EMR 6.0.0. /// /// [AWSProperty(Min=0, Max=10280)] public string LogEncryptionKmsKeyId { get { return this._logEncryptionKmsKeyId; } set { this._logEncryptionKmsKeyId = value; } } // Check to see if LogEncryptionKmsKeyId property is set internal bool IsSetLogEncryptionKmsKeyId() { return this._logEncryptionKmsKeyId != null; } /// /// Gets and sets the property LogUri. /// /// The location in Amazon S3 to write the log files of the job flow. If a value is not /// provided, logs are not created. /// /// [AWSProperty(Min=0, Max=10280)] public string LogUri { get { return this._logUri; } set { this._logUri = value; } } // Check to see if LogUri property is set internal bool IsSetLogUri() { return this._logUri != null; } /// /// Gets and sets the property ManagedScalingPolicy. /// /// The specified managed scaling policy for an Amazon EMR cluster. /// /// public ManagedScalingPolicy ManagedScalingPolicy { get { return this._managedScalingPolicy; } set { this._managedScalingPolicy = value; } } // Check to see if ManagedScalingPolicy property is set internal bool IsSetManagedScalingPolicy() { return this._managedScalingPolicy != null; } /// /// Gets and sets the property Name. /// /// The name of the job flow. /// /// [AWSProperty(Required=true, Min=0, Max=256)] public string Name { get { return this._name; } set { this._name = value; } } // Check to see if Name property is set internal bool IsSetName() { return this._name != null; } /// /// Gets and sets the property NewSupportedProducts. /// /// For Amazon EMR releases 3.x and 2.x. For Amazon EMR releases 4.x and later, use Applications. /// /// /// /// A list of strings that indicates third-party software to use with the job flow that /// accepts a user argument list. Amazon EMR accepts and forwards the argument list to /// the corresponding installation script as bootstrap action arguments. For more information, /// see "Launch a Job Flow on the MapR Distribution for Hadoop" in the Amazon /// EMR Developer Guide. Supported values are: /// ///
  • /// /// "mapr-m3" - launch the cluster using MapR M3 Edition. /// ///
  • /// /// "mapr-m5" - launch the cluster using MapR M5 Edition. /// ///
  • /// /// "mapr" with the user arguments specifying "--edition,m3" or "--edition,m5" - launch /// the job flow using MapR M3 or M5 Edition respectively. /// ///
  • /// /// "mapr-m7" - launch the cluster using MapR M7 Edition. /// ///
  • /// /// "hunk" - launch the cluster with the Hunk Big Data Analytics Platform. /// ///
  • /// /// "hue"- launch the cluster with Hue installed. /// ///
  • /// /// "spark" - launch the cluster with Apache Spark installed. /// ///
  • /// /// "ganglia" - launch the cluster with the Ganglia Monitoring System installed. /// ///
///
public List NewSupportedProducts { get { return this._newSupportedProducts; } set { this._newSupportedProducts = value; } } // Check to see if NewSupportedProducts property is set internal bool IsSetNewSupportedProducts() { return this._newSupportedProducts != null && this._newSupportedProducts.Count > 0; } /// /// Gets and sets the property OSReleaseLabel. /// /// Specifies a particular Amazon Linux release for all nodes in a cluster launch RunJobFlow /// request. If a release is not specified, Amazon EMR uses the latest validated Amazon /// Linux release for cluster launch. /// /// [AWSProperty(Min=0, Max=256)] public string OSReleaseLabel { get { return this._osReleaseLabel; } set { this._osReleaseLabel = value; } } // Check to see if OSReleaseLabel property is set internal bool IsSetOSReleaseLabel() { return this._osReleaseLabel != null; } /// /// Gets and sets the property PlacementGroupConfigs. /// /// The specified placement group configuration for an Amazon EMR cluster. /// /// public List PlacementGroupConfigs { get { return this._placementGroupConfigs; } set { this._placementGroupConfigs = value; } } // Check to see if PlacementGroupConfigs property is set internal bool IsSetPlacementGroupConfigs() { return this._placementGroupConfigs != null && this._placementGroupConfigs.Count > 0; } /// /// Gets and sets the property ReleaseLabel. /// /// The Amazon EMR release label, which determines the version of open-source application /// packages installed on the cluster. Release labels are in the form emr-x.x.x, /// where x.x.x is an Amazon EMR release version such as emr-5.14.0. For /// more information about Amazon EMR release versions and included application versions /// and features, see https://docs.aws.amazon.com/emr/latest/ReleaseGuide/. /// The release label applies only to Amazon EMR releases version 4.0 and later. Earlier /// versions use AmiVersion. /// /// [AWSProperty(Min=0, Max=256)] public string ReleaseLabel { get { return this._releaseLabel; } set { this._releaseLabel = value; } } // Check to see if ReleaseLabel property is set internal bool IsSetReleaseLabel() { return this._releaseLabel != null; } /// /// Gets and sets the property RepoUpgradeOnBoot. /// /// Applies only when CustomAmiID is used. Specifies which updates from the /// Amazon Linux AMI package repositories to apply automatically when the instance boots /// using the AMI. If omitted, the default is SECURITY, which indicates that /// only security updates are applied. If NONE is specified, no updates are /// applied, and all updates must be applied manually. /// /// public RepoUpgradeOnBoot RepoUpgradeOnBoot { get { return this._repoUpgradeOnBoot; } set { this._repoUpgradeOnBoot = value; } } // Check to see if RepoUpgradeOnBoot property is set internal bool IsSetRepoUpgradeOnBoot() { return this._repoUpgradeOnBoot != null; } /// /// Gets and sets the property ScaleDownBehavior. /// /// Specifies the way that individual Amazon EC2 instances terminate when an automatic /// scale-in activity occurs or an instance group is resized. TERMINATE_AT_INSTANCE_HOUR /// indicates that Amazon EMR terminates nodes at the instance-hour boundary, regardless /// of when the request to terminate the instance was submitted. This option is only available /// with Amazon EMR 5.1.0 and later and is the default for clusters created using that /// version. TERMINATE_AT_TASK_COMPLETION indicates that Amazon EMR adds /// nodes to a deny list and drains tasks from nodes before terminating the Amazon EC2 /// instances, regardless of the instance-hour boundary. With either behavior, Amazon /// EMR removes the least active nodes first and blocks instance termination if it could /// lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION available only /// in Amazon EMR releases 4.1.0 and later, and is the default for releases of Amazon /// EMR earlier than 5.1.0. /// /// public ScaleDownBehavior ScaleDownBehavior { get { return this._scaleDownBehavior; } set { this._scaleDownBehavior = value; } } // Check to see if ScaleDownBehavior property is set internal bool IsSetScaleDownBehavior() { return this._scaleDownBehavior != null; } /// /// Gets and sets the property SecurityConfiguration. /// /// The name of a security configuration to apply to the cluster. /// /// [AWSProperty(Min=0, Max=10280)] public string SecurityConfiguration { get { return this._securityConfiguration; } set { this._securityConfiguration = value; } } // Check to see if SecurityConfiguration property is set internal bool IsSetSecurityConfiguration() { return this._securityConfiguration != null; } /// /// Gets and sets the property ServiceRole. /// /// The IAM role that Amazon EMR assumes in order to access Amazon Web Services resources /// on your behalf. If you've created a custom service role path, you must specify it /// for the service role when you launch your cluster. /// /// [AWSProperty(Min=0, Max=10280)] 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 StepConcurrencyLevel. /// /// Specifies the number of steps that can be executed concurrently. The default value /// is 1. The maximum value is 256. /// /// public int StepConcurrencyLevel { get { return this._stepConcurrencyLevel.GetValueOrDefault(); } set { this._stepConcurrencyLevel = value; } } // Check to see if StepConcurrencyLevel property is set internal bool IsSetStepConcurrencyLevel() { return this._stepConcurrencyLevel.HasValue; } /// /// Gets and sets the property Steps. /// /// A list of steps to run. /// /// public List Steps { get { return this._steps; } set { this._steps = value; } } // Check to see if Steps property is set internal bool IsSetSteps() { return this._steps != null && this._steps.Count > 0; } /// /// Gets and sets the property SupportedProducts. /// /// For Amazon EMR releases 3.x and 2.x. For Amazon EMR releases 4.x and later, use Applications. /// /// /// /// A list of strings that indicates third-party software to use. For more information, /// see the Amazon /// EMR Developer Guide. Currently supported values are: /// ///
  • /// /// "mapr-m3" - launch the job flow using MapR M3 Edition. /// ///
  • /// /// "mapr-m5" - launch the job flow using MapR M5 Edition. /// ///
///
public List SupportedProducts { get { return this._supportedProducts; } set { this._supportedProducts = value; } } // Check to see if SupportedProducts property is set internal bool IsSetSupportedProducts() { return this._supportedProducts != null && this._supportedProducts.Count > 0; } /// /// Gets and sets the property Tags. /// /// A list of tags to associate with a cluster and propagate to Amazon EC2 instances. /// /// public List 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 VisibleToAllUsers. /// /// The VisibleToAllUsers parameter is no longer supported. By default, the value is set /// to true. Setting it to false now has no effect. /// /// /// /// Set this value to true so that IAM principals in the Amazon Web Services /// account associated with the cluster can perform Amazon EMR actions on the cluster /// that their IAM policies allow. This value defaults to true for clusters /// created using the Amazon EMR API or the CLI create-cluster /// command. /// /// /// /// When set to false, only the IAM principal that created the cluster and /// the Amazon Web Services account root user can perform Amazon EMR actions for the cluster, /// regardless of the IAM permissions policies attached to other IAM principals. For more /// information, see Understanding /// the Amazon EMR cluster VisibleToAllUsers setting in the Amazon EMR Management /// Guide. /// /// public bool VisibleToAllUsers { get { return this._visibleToAllUsers.GetValueOrDefault(); } set { this._visibleToAllUsers = value; } } // Check to see if VisibleToAllUsers property is set internal bool IsSetVisibleToAllUsers() { return this._visibleToAllUsers.HasValue; } } }