/*
* 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;
}
}
}