/******************************************************************************* * Copyright 2012-2019 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. * ***************************************************************************** * * AWS Tools for Windows (TM) PowerShell (TM) * */ using System; using System.Collections.Generic; using System.Linq; using System.Management.Automation; using System.Text; using Amazon.PowerShell.Common; using Amazon.Runtime; using Amazon.ElasticMapReduce; using Amazon.ElasticMapReduce.Model; namespace Amazon.PowerShell.Cmdlets.EMR { /// <summary> /// 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 <a>JobFlowInstancesConfig</a><code>KeepJobFlowAliveWhenNoSteps</code> /// parameter is set to <code>TRUE</code>, the cluster transitions to the WAITING state /// rather than shutting down after the steps have completed. /// /// /// <para> /// For additional protection, you can set the <a>JobFlowInstancesConfig</a><code>TerminationProtected</code> /// parameter to <code>TRUE</code> to lock the cluster and prevent it from being terminated /// by API call, user intervention, or in the event of a job flow error. /// </para><para> /// A maximum of 256 steps are allowed in each job flow. /// </para><para> /// 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. /// </para><para> /// For long-running clusters, we recommend that you periodically store your results. /// </para><note><para> /// 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. /// </para></note> /// </summary> [Cmdlet("Start", "EMRJobFlow", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.Medium)] [OutputType("System.String")] [AWSCmdlet("Calls the Amazon Elastic MapReduce RunJobFlow API operation.", Operation = new[] {"RunJobFlow"}, SelectReturnType = typeof(Amazon.ElasticMapReduce.Model.RunJobFlowResponse))] [AWSCmdletOutput("System.String or Amazon.ElasticMapReduce.Model.RunJobFlowResponse", "This cmdlet returns a System.String object.", "The service call response (type Amazon.ElasticMapReduce.Model.RunJobFlowResponse) can also be referenced from properties attached to the cmdlet entry in the $AWSHistory stack." )] public partial class StartEMRJobFlowCmdlet : AmazonElasticMapReduceClientCmdlet, IExecutor { #region Parameter AdditionalInfo /// <summary> /// <para> /// <para>A JSON string for selecting additional features.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String AdditionalInfo { get; set; } #endregion #region Parameter Instances_AdditionalMasterSecurityGroup /// <summary> /// <para> /// <para>A list of additional Amazon EC2 security group IDs for the master node.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("Instances_AdditionalMasterSecurityGroups")] public System.String[] Instances_AdditionalMasterSecurityGroup { get; set; } #endregion #region Parameter Instances_AdditionalSlaveSecurityGroup /// <summary> /// <para> /// <para>A list of additional Amazon EC2 security group IDs for the core and task nodes.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("Instances_AdditionalSlaveSecurityGroups")] public System.String[] Instances_AdditionalSlaveSecurityGroup { get; set; } #endregion #region Parameter KerberosAttributes_ADDomainJoinPassword /// <summary> /// <para> /// <para>The Active Directory password for <code>ADDomainJoinUser</code>.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String KerberosAttributes_ADDomainJoinPassword { get; set; } #endregion #region Parameter KerberosAttributes_ADDomainJoinUser /// <summary> /// <para> /// <para>Required only when establishing a cross-realm trust with an Active Directory domain. /// A user with sufficient privileges to join resources to the domain.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String KerberosAttributes_ADDomainJoinUser { get; set; } #endregion #region Parameter AmiVersion /// <summary> /// <para> /// <para>Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases 4.0 and /// later, <code>ReleaseLabel</code> is used. To specify a custom AMI, use <code>CustomAmiID</code>.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String AmiVersion { get; set; } #endregion #region Parameter Application /// <summary> /// <para> /// <para>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 <a href="https://docs.aws.amazon.com/emr/latest/ReleaseGuide/">Amazon /// EMRRelease Guide</a>.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("Applications")] public Amazon.ElasticMapReduce.Model.Application[] Application { get; set; } #endregion #region Parameter AutoScalingRole /// <summary> /// <para> /// <para>An IAM role for automatic scaling policies. The default role is <code>EMR_AutoScaling_DefaultRole</code>. /// The IAM role provides permissions that the automatic scaling feature requires to launch /// and terminate Amazon EC2 instances in an instance group.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String AutoScalingRole { get; set; } #endregion #region Parameter Instances_Placement_AvailabilityZone /// <summary> /// <para> /// <para>The Amazon EC2 Availability Zone for the cluster. <code>AvailabilityZone</code> is /// used for uniform instance groups, while <code>AvailabilityZones</code> (plural) is /// used for instance fleets.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String Instances_Placement_AvailabilityZone { get; set; } #endregion #region Parameter Instances_Placement_AvailabilityZones /// <summary> /// <para> /// <para>When multiple Availability Zones are specified, Amazon EMR evaluates them and launches /// instances in the optimal Availability Zone. <code>AvailabilityZones</code> is used /// for instance fleets, while <code>AvailabilityZone</code> (singular) is used for uniform /// instance groups.</para><note><para>The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and /// later, excluding 5.0.x versions.</para></note> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String[] Instances_Placement_AvailabilityZones { get; set; } #endregion #region Parameter BootstrapAction /// <summary> /// <para> /// <para>A list of bootstrap actions to run before Hadoop starts on the cluster nodes.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("BootstrapActions")] public Amazon.ElasticMapReduce.Model.BootstrapActionConfig[] BootstrapAction { get; set; } #endregion #region Parameter Configuration /// <summary> /// <para> /// <para>For Amazon EMR releases 4.0 and later. The list of configurations supplied for the /// Amazon EMR cluster that you are creating.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("Configurations")] public Amazon.ElasticMapReduce.Model.Configuration[] Configuration { get; set; } #endregion #region Parameter KerberosAttributes_CrossRealmTrustPrincipalPassword /// <summary> /// <para> /// <para>Required only when establishing a cross-realm trust with a KDC in a different realm. /// The cross-realm principal password, which must be identical across realms.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String KerberosAttributes_CrossRealmTrustPrincipalPassword { get; set; } #endregion #region Parameter CustomAmiId /// <summary> /// <para> /// <para>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 <a href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-custom-ami.html">Using /// a Custom AMI</a> in the <i>Amazon EMR Management Guide</i>. If omitted, the cluster /// uses the base Linux AMI for the <code>ReleaseLabel</code> specified. For Amazon EMR /// releases 2.x and 3.x, use <code>AmiVersion</code> instead.</para><para>For information about creating a custom AMI, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html">Creating /// an Amazon EBS-Backed Linux AMI</a> in the <i>Amazon Elastic Compute Cloud User Guide /// for Linux Instances</i>. For information about finding an AMI ID, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html">Finding /// a Linux AMI</a>. </para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String CustomAmiId { get; set; } #endregion #region Parameter EbsRootVolumeSize /// <summary> /// <para> /// <para>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.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.Int32? EbsRootVolumeSize { get; set; } #endregion #region Parameter Instances_Ec2KeyName /// <summary> /// <para> /// <para>The name of the Amazon EC2 key pair that can be used to connect to the master node /// using SSH as the user called "hadoop."</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String Instances_Ec2KeyName { get; set; } #endregion #region Parameter Instances_Ec2SubnetId /// <summary> /// <para> /// <para>Applies to clusters that use the uniform instance group configuration. To launch the /// cluster in Amazon Virtual Private Cloud (Amazon VPC), set this parameter to the identifier /// of the Amazon VPC subnet where you want the cluster to launch. If you do not specify /// this value and your account supports EC2-Classic, the cluster launches in EC2-Classic.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String Instances_Ec2SubnetId { get; set; } #endregion #region Parameter Instances_Ec2SubnetIds /// <summary> /// <para> /// <para>Applies to clusters that use the instance fleet configuration. When multiple Amazon /// EC2 subnet IDs are specified, Amazon EMR evaluates them and launches instances in /// the optimal subnet.</para><note><para>The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and /// later, excluding 5.0.x versions.</para></note> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String[] Instances_Ec2SubnetIds { get; set; } #endregion #region Parameter Instances_EmrManagedMasterSecurityGroup /// <summary> /// <para> /// <para>The identifier of the Amazon EC2 security group for the master node. If you specify /// <code>EmrManagedMasterSecurityGroup</code>, you must also specify <code>EmrManagedSlaveSecurityGroup</code>.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String Instances_EmrManagedMasterSecurityGroup { get; set; } #endregion #region Parameter Instances_EmrManagedSlaveSecurityGroup /// <summary> /// <para> /// <para>The identifier of the Amazon EC2 security group for the core and task nodes. If you /// specify <code>EmrManagedSlaveSecurityGroup</code>, you must also specify <code>EmrManagedMasterSecurityGroup</code>.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String Instances_EmrManagedSlaveSecurityGroup { get; set; } #endregion #region Parameter Instances_HadoopVersion /// <summary> /// <para> /// <para>Applies only to Amazon EMR release versions earlier than 4.0. The Hadoop version for /// the cluster. Valid inputs are "0.18" (no longer maintained), "0.20" (no longer maintained), /// "0.20.205" (no longer maintained), "1.0.3", "2.2.0", or "2.4.0". If you do not set /// this value, the default of 0.18 is used, unless the <code>AmiVersion</code> parameter /// is set in the RunJobFlow call, in which case the default version of Hadoop for that /// AMI version is used.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String Instances_HadoopVersion { get; set; } #endregion #region Parameter AutoTerminationPolicy_IdleTimeout /// <summary> /// <para> /// <para>Specifies the amount of idle time in seconds after which the cluster automatically /// terminates. You can specify a minimum of 60 seconds and a maximum of 604800 seconds /// (seven days).</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.Int64? AutoTerminationPolicy_IdleTimeout { get; set; } #endregion #region Parameter Instances_InstanceCount /// <summary> /// <para> /// <para>The number of Amazon EC2 instances in the cluster.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.Int32? Instances_InstanceCount { get; set; } #endregion #region Parameter Instances_InstanceFleet /// <summary> /// <para> /// <note><para>The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and /// later, excluding 5.0.x versions.</para></note><para>Describes the Amazon EC2 instances and instance configurations for clusters that use /// the instance fleet configuration.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("Instances_InstanceFleets")] public Amazon.ElasticMapReduce.Model.InstanceFleetConfig[] Instances_InstanceFleet { get; set; } #endregion #region Parameter Instances_InstanceGroup /// <summary> /// <para> /// <para>Configuration for the instance groups in a cluster.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("Instances_InstanceGroups")] public Amazon.ElasticMapReduce.Model.InstanceGroupConfig[] Instances_InstanceGroup { get; set; } #endregion #region Parameter JobFlowRole /// <summary> /// <para> /// <para>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 <code>EMR_EC2_DefaultRole</code>. /// In order to use the default role, you must have already created it using the CLI or /// console.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String JobFlowRole { get; set; } #endregion #region Parameter KerberosAttributes_KdcAdminPassword /// <summary> /// <para> /// <para>The password used within the cluster for the kadmin service on the cluster-dedicated /// KDC, which maintains Kerberos principals, password policies, and keytabs for the cluster.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String KerberosAttributes_KdcAdminPassword { get; set; } #endregion #region Parameter Instances_KeepJobFlowAliveWhenNoStep /// <summary> /// <para> /// <para>Specifies whether the cluster should remain available after completing all steps. /// Defaults to <code>true</code>. For more information about configuring cluster termination, /// see <a href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-termination.html">Control /// Cluster Termination</a> in the <i>EMR Management Guide</i>.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("Instances_KeepJobFlowAliveWhenNoSteps")] public System.Boolean? Instances_KeepJobFlowAliveWhenNoStep { get; set; } #endregion #region Parameter LogEncryptionKmsKeyId /// <summary> /// <para> /// <para>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.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String LogEncryptionKmsKeyId { get; set; } #endregion #region Parameter LogUri /// <summary> /// <para> /// <para>The location in Amazon S3 to write the log files of the job flow. If a value is not /// provided, logs are not created.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(Position = 1, ValueFromPipelineByPropertyName = true)] public System.String LogUri { get; set; } #endregion #region Parameter Instances_MasterInstanceType /// <summary> /// <para> /// <para>The Amazon EC2 instance type of the master node.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String Instances_MasterInstanceType { get; set; } #endregion #region Parameter ComputeLimits_MaximumCapacityUnit /// <summary> /// <para> /// <para> The upper boundary of Amazon EC2 units. It is measured through vCPU cores or instances /// for instance groups and measured through units for instance fleets. Managed scaling /// activities are not allowed beyond this boundary. The limit only applies to the core /// and task nodes. The master node cannot be scaled after initial configuration. </para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("ManagedScalingPolicy_ComputeLimits_MaximumCapacityUnits")] public System.Int32? ComputeLimits_MaximumCapacityUnit { get; set; } #endregion #region Parameter ComputeLimits_MaximumCoreCapacityUnit /// <summary> /// <para> /// <para> The upper boundary of Amazon EC2 units for core node type in a cluster. It is measured /// through vCPU cores or instances for instance groups and measured through units for /// instance fleets. The core units are not allowed to scale beyond this boundary. The /// parameter is used to split capacity allocation between core and task nodes. </para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("ManagedScalingPolicy_ComputeLimits_MaximumCoreCapacityUnits")] public System.Int32? ComputeLimits_MaximumCoreCapacityUnit { get; set; } #endregion #region Parameter ComputeLimits_MaximumOnDemandCapacityUnit /// <summary> /// <para> /// <para> The upper boundary of On-Demand Amazon EC2 units. It is measured through vCPU cores /// or instances for instance groups and measured through units for instance fleets. The /// On-Demand units are not allowed to scale beyond this boundary. The parameter is used /// to split capacity allocation between On-Demand and Spot Instances. </para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("ManagedScalingPolicy_ComputeLimits_MaximumOnDemandCapacityUnits")] public System.Int32? ComputeLimits_MaximumOnDemandCapacityUnit { get; set; } #endregion #region Parameter ComputeLimits_MinimumCapacityUnit /// <summary> /// <para> /// <para> The lower boundary of Amazon EC2 units. It is measured through vCPU cores or instances /// for instance groups and measured through units for instance fleets. Managed scaling /// activities are not allowed beyond this boundary. The limit only applies to the core /// and task nodes. The master node cannot be scaled after initial configuration. </para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("ManagedScalingPolicy_ComputeLimits_MinimumCapacityUnits")] public System.Int32? ComputeLimits_MinimumCapacityUnit { get; set; } #endregion #region Parameter Name /// <summary> /// <para> /// <para>The name of the job flow.</para> /// </para> /// </summary> #if !MODULAR [System.Management.Automation.Parameter(Position = 0, ValueFromPipelineByPropertyName = true, ValueFromPipeline = true)] #else [System.Management.Automation.Parameter(Position = 0, ValueFromPipelineByPropertyName = true, ValueFromPipeline = true, Mandatory = true)] [System.Management.Automation.AllowEmptyString] [System.Management.Automation.AllowNull] #endif [Amazon.PowerShell.Common.AWSRequiredParameter] public System.String Name { get; set; } #endregion #region Parameter NewSupportedProduct /// <summary> /// <para> /// <note><para>For Amazon EMR releases 3.x and 2.x. For Amazon EMR releases 4.x and later, use Applications.</para></note><para>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 <a href="https://docs.aws.amazon.com/emr/latest/DeveloperGuide/emr-dg.pdf">Amazon /// EMR Developer Guide</a>. Supported values are:</para><ul><li><para>"mapr-m3" - launch the cluster using MapR M3 Edition.</para></li><li><para>"mapr-m5" - launch the cluster using MapR M5 Edition.</para></li><li><para>"mapr" with the user arguments specifying "--edition,m3" or "--edition,m5" - launch /// the job flow using MapR M3 or M5 Edition respectively.</para></li><li><para>"mapr-m7" - launch the cluster using MapR M7 Edition.</para></li><li><para>"hunk" - launch the cluster with the Hunk Big Data Analytics Platform.</para></li><li><para>"hue"- launch the cluster with Hue installed.</para></li><li><para>"spark" - launch the cluster with Apache Spark installed.</para></li><li><para>"ganglia" - launch the cluster with the Ganglia Monitoring System installed.</para></li></ul> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("NewSupportedProducts")] public Amazon.ElasticMapReduce.Model.SupportedProductConfig[] NewSupportedProduct { get; set; } #endregion #region Parameter OSReleaseLabel /// <summary> /// <para> /// <para>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.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String OSReleaseLabel { get; set; } #endregion #region Parameter PlacementGroupConfig /// <summary> /// <para> /// <para>The specified placement group configuration for an Amazon EMR cluster.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("PlacementGroupConfigs")] public Amazon.ElasticMapReduce.Model.PlacementGroupConfig[] PlacementGroupConfig { get; set; } #endregion #region Parameter KerberosAttributes_Realm /// <summary> /// <para> /// <para>The name of the Kerberos realm to which all nodes in a cluster belong. For example, /// <code>EC2.INTERNAL</code>. </para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String KerberosAttributes_Realm { get; set; } #endregion #region Parameter ReleaseLabel /// <summary> /// <para> /// <para>The Amazon EMR release label, which determines the version of open-source application /// packages installed on the cluster. Release labels are in the form <code>emr-x.x.x</code>, /// where x.x.x is an Amazon EMR release version such as <code>emr-5.14.0</code>. For /// more information about Amazon EMR release versions and included application versions /// and features, see <a href="https://docs.aws.amazon.com/emr/latest/ReleaseGuide/">https://docs.aws.amazon.com/emr/latest/ReleaseGuide/</a>. /// The release label applies only to Amazon EMR releases version 4.0 and later. Earlier /// versions use <code>AmiVersion</code>.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String ReleaseLabel { get; set; } #endregion #region Parameter RepoUpgradeOnBoot /// <summary> /// <para> /// <para>Applies only when <code>CustomAmiID</code> 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 <code>SECURITY</code>, which indicates that /// only security updates are applied. If <code>NONE</code> is specified, no updates are /// applied, and all updates must be applied manually.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [AWSConstantClassSource("Amazon.ElasticMapReduce.RepoUpgradeOnBoot")] public Amazon.ElasticMapReduce.RepoUpgradeOnBoot RepoUpgradeOnBoot { get; set; } #endregion #region Parameter ScaleDownBehavior /// <summary> /// <para> /// <para>Specifies the way that individual Amazon EC2 instances terminate when an automatic /// scale-in activity occurs or an instance group is resized. <code>TERMINATE_AT_INSTANCE_HOUR</code> /// 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. <code>TERMINATE_AT_TASK_COMPLETION</code> 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. <code>TERMINATE_AT_TASK_COMPLETION</code> 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.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [AWSConstantClassSource("Amazon.ElasticMapReduce.ScaleDownBehavior")] public Amazon.ElasticMapReduce.ScaleDownBehavior ScaleDownBehavior { get; set; } #endregion #region Parameter SecurityConfiguration /// <summary> /// <para> /// <para>The name of a security configuration to apply to the cluster.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String SecurityConfiguration { get; set; } #endregion #region Parameter Instances_ServiceAccessSecurityGroup /// <summary> /// <para> /// <para>The identifier of the Amazon EC2 security group for the Amazon EMR service to access /// clusters in VPC private subnets.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String Instances_ServiceAccessSecurityGroup { get; set; } #endregion #region Parameter ServiceRole /// <summary> /// <para> /// <para>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.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String ServiceRole { get; set; } #endregion #region Parameter Instances_SlaveInstanceType /// <summary> /// <para> /// <para>The Amazon EC2 instance type of the core and task nodes.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.String Instances_SlaveInstanceType { get; set; } #endregion #region Parameter StepConcurrencyLevel /// <summary> /// <para> /// <para>Specifies the number of steps that can be executed concurrently. The default value /// is <code>1</code>. The maximum value is <code>256</code>.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.Int32? StepConcurrencyLevel { get; set; } #endregion #region Parameter Step /// <summary> /// <para> /// <para>A list of steps to run.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("Steps")] public Amazon.ElasticMapReduce.Model.StepConfig[] Step { get; set; } #endregion #region Parameter SupportedProduct /// <summary> /// <para> /// <note><para>For Amazon EMR releases 3.x and 2.x. For Amazon EMR releases 4.x and later, use Applications.</para></note><para>A list of strings that indicates third-party software to use. For more information, /// see the <a href="https://docs.aws.amazon.com/emr/latest/DeveloperGuide/emr-dg.pdf">Amazon /// EMR Developer Guide</a>. Currently supported values are:</para><ul><li><para>"mapr-m3" - launch the job flow using MapR M3 Edition.</para></li><li><para>"mapr-m5" - launch the job flow using MapR M5 Edition.</para></li></ul> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("SupportedProducts")] public System.String[] SupportedProduct { get; set; } #endregion #region Parameter Tag /// <summary> /// <para> /// <para>A list of tags to associate with a cluster and propagate to Amazon EC2 instances.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("Tags")] public Amazon.ElasticMapReduce.Model.Tag[] Tag { get; set; } #endregion #region Parameter Instances_TerminationProtected /// <summary> /// <para> /// <para>Specifies whether to lock the cluster to prevent the Amazon EC2 instances from being /// terminated by API call, user intervention, or in the event of a job-flow error.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public System.Boolean? Instances_TerminationProtected { get; set; } #endregion #region Parameter ComputeLimits_UnitType /// <summary> /// <para> /// <para> The unit type used for specifying a managed scaling policy. </para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("ManagedScalingPolicy_ComputeLimits_UnitType")] [AWSConstantClassSource("Amazon.ElasticMapReduce.ComputeLimitsUnitType")] public Amazon.ElasticMapReduce.ComputeLimitsUnitType ComputeLimits_UnitType { get; set; } #endregion #region Parameter VisibleToAllUser /// <summary> /// <para> /// <important><para>The VisibleToAllUsers parameter is no longer supported. By default, the value is set /// to <code>true</code>. Setting it to <code>false</code> now has no effect.</para></important><para>Set this value to <code>true</code> 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 <code>true</code> for clusters /// created using the Amazon EMR API or the CLI <a href="https://docs.aws.amazon.com/cli/latest/reference/emr/create-cluster.html">create-cluster</a> /// command.</para><para>When set to <code>false</code>, 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 <a href="https://docs.aws.amazon.com/emr/latest/ManagementGuide/security_IAM_emr-with-IAM.html#security_set_visible_to_all_users">Understanding /// the Amazon EMR cluster VisibleToAllUsers setting</a> in the <i>Amazon EMR Management /// Guide</i>.</para> /// </para> /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] [Alias("VisibleToAllUsers")] public System.Boolean? VisibleToAllUser { get; set; } #endregion #region Parameter Select /// <summary> /// Use the -Select parameter to control the cmdlet output. The default value is 'JobFlowId'. /// Specifying -Select '*' will result in the cmdlet returning the whole service response (Amazon.ElasticMapReduce.Model.RunJobFlowResponse). /// Specifying the name of a property of type Amazon.ElasticMapReduce.Model.RunJobFlowResponse will result in that property being returned. /// Specifying -Select '^ParameterName' will result in the cmdlet returning the selected cmdlet parameter value. /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public string Select { get; set; } = "JobFlowId"; #endregion #region Parameter PassThru /// <summary> /// Changes the cmdlet behavior to return the value passed to the Name parameter. /// The -PassThru parameter is deprecated, use -Select '^Name' instead. This parameter will be removed in a future version. /// </summary> [System.Obsolete("The -PassThru parameter is deprecated, use -Select '^Name' instead. This parameter will be removed in a future version.")] [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public SwitchParameter PassThru { get; set; } #endregion #region Parameter Force /// <summary> /// This parameter overrides confirmation prompts to force /// the cmdlet to continue its operation. This parameter should always /// be used with caution. /// </summary> [System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)] public SwitchParameter Force { get; set; } #endregion protected override void ProcessRecord() { this._AWSSignerType = "v4"; base.ProcessRecord(); var resourceIdentifiersText = FormatParameterValuesForConfirmationMsg(nameof(this.Name), MyInvocation.BoundParameters); if (!ConfirmShouldProceed(this.Force.IsPresent, resourceIdentifiersText, "Start-EMRJobFlow (RunJobFlow)")) { return; } var context = new CmdletContext(); // allow for manipulation of parameters prior to loading into context PreExecutionContextLoad(context); #pragma warning disable CS0618, CS0612 //A class member was marked with the Obsolete attribute if (ParameterWasBound(nameof(this.Select))) { context.Select = CreateSelectDelegate<Amazon.ElasticMapReduce.Model.RunJobFlowResponse, StartEMRJobFlowCmdlet>(Select) ?? throw new System.ArgumentException("Invalid value for -Select parameter.", nameof(this.Select)); if (this.PassThru.IsPresent) { throw new System.ArgumentException("-PassThru cannot be used when -Select is specified.", nameof(this.Select)); } } else if (this.PassThru.IsPresent) { context.Select = (response, cmdlet) => this.Name; } #pragma warning restore CS0618, CS0612 //A class member was marked with the Obsolete attribute context.AdditionalInfo = this.AdditionalInfo; context.AmiVersion = this.AmiVersion; if (this.Application != null) { context.Application = new List<Amazon.ElasticMapReduce.Model.Application>(this.Application); } context.AutoScalingRole = this.AutoScalingRole; context.AutoTerminationPolicy_IdleTimeout = this.AutoTerminationPolicy_IdleTimeout; if (this.BootstrapAction != null) { context.BootstrapAction = new List<Amazon.ElasticMapReduce.Model.BootstrapActionConfig>(this.BootstrapAction); } if (this.Configuration != null) { context.Configuration = new List<Amazon.ElasticMapReduce.Model.Configuration>(this.Configuration); } context.CustomAmiId = this.CustomAmiId; context.EbsRootVolumeSize = this.EbsRootVolumeSize; if (this.Instances_AdditionalMasterSecurityGroup != null) { context.Instances_AdditionalMasterSecurityGroup = new List<System.String>(this.Instances_AdditionalMasterSecurityGroup); } if (this.Instances_AdditionalSlaveSecurityGroup != null) { context.Instances_AdditionalSlaveSecurityGroup = new List<System.String>(this.Instances_AdditionalSlaveSecurityGroup); } context.Instances_Ec2KeyName = this.Instances_Ec2KeyName; context.Instances_Ec2SubnetId = this.Instances_Ec2SubnetId; if (this.Instances_Ec2SubnetIds != null) { context.Instances_Ec2SubnetIds = new List<System.String>(this.Instances_Ec2SubnetIds); } context.Instances_EmrManagedMasterSecurityGroup = this.Instances_EmrManagedMasterSecurityGroup; context.Instances_EmrManagedSlaveSecurityGroup = this.Instances_EmrManagedSlaveSecurityGroup; context.Instances_HadoopVersion = this.Instances_HadoopVersion; context.Instances_InstanceCount = this.Instances_InstanceCount; if (this.Instances_InstanceFleet != null) { context.Instances_InstanceFleet = new List<Amazon.ElasticMapReduce.Model.InstanceFleetConfig>(this.Instances_InstanceFleet); } if (this.Instances_InstanceGroup != null) { context.Instances_InstanceGroup = new List<Amazon.ElasticMapReduce.Model.InstanceGroupConfig>(this.Instances_InstanceGroup); } context.Instances_KeepJobFlowAliveWhenNoStep = this.Instances_KeepJobFlowAliveWhenNoStep; context.Instances_MasterInstanceType = this.Instances_MasterInstanceType; context.Instances_Placement_AvailabilityZone = this.Instances_Placement_AvailabilityZone; if (this.Instances_Placement_AvailabilityZones != null) { context.Instances_Placement_AvailabilityZones = new List<System.String>(this.Instances_Placement_AvailabilityZones); } context.Instances_ServiceAccessSecurityGroup = this.Instances_ServiceAccessSecurityGroup; context.Instances_SlaveInstanceType = this.Instances_SlaveInstanceType; context.Instances_TerminationProtected = this.Instances_TerminationProtected; context.JobFlowRole = this.JobFlowRole; context.KerberosAttributes_ADDomainJoinPassword = this.KerberosAttributes_ADDomainJoinPassword; context.KerberosAttributes_ADDomainJoinUser = this.KerberosAttributes_ADDomainJoinUser; context.KerberosAttributes_CrossRealmTrustPrincipalPassword = this.KerberosAttributes_CrossRealmTrustPrincipalPassword; context.KerberosAttributes_KdcAdminPassword = this.KerberosAttributes_KdcAdminPassword; context.KerberosAttributes_Realm = this.KerberosAttributes_Realm; context.LogEncryptionKmsKeyId = this.LogEncryptionKmsKeyId; context.LogUri = this.LogUri; context.ComputeLimits_MaximumCapacityUnit = this.ComputeLimits_MaximumCapacityUnit; context.ComputeLimits_MaximumCoreCapacityUnit = this.ComputeLimits_MaximumCoreCapacityUnit; context.ComputeLimits_MaximumOnDemandCapacityUnit = this.ComputeLimits_MaximumOnDemandCapacityUnit; context.ComputeLimits_MinimumCapacityUnit = this.ComputeLimits_MinimumCapacityUnit; context.ComputeLimits_UnitType = this.ComputeLimits_UnitType; context.Name = this.Name; #if MODULAR if (this.Name == null && ParameterWasBound(nameof(this.Name))) { WriteWarning("You are passing $null as a value for parameter Name which is marked as required. In case you believe this parameter was incorrectly marked as required, report this by opening an issue at https://github.com/aws/aws-tools-for-powershell/issues."); } #endif if (this.NewSupportedProduct != null) { context.NewSupportedProduct = new List<Amazon.ElasticMapReduce.Model.SupportedProductConfig>(this.NewSupportedProduct); } context.OSReleaseLabel = this.OSReleaseLabel; if (this.PlacementGroupConfig != null) { context.PlacementGroupConfig = new List<Amazon.ElasticMapReduce.Model.PlacementGroupConfig>(this.PlacementGroupConfig); } context.ReleaseLabel = this.ReleaseLabel; context.RepoUpgradeOnBoot = this.RepoUpgradeOnBoot; context.ScaleDownBehavior = this.ScaleDownBehavior; context.SecurityConfiguration = this.SecurityConfiguration; context.ServiceRole = this.ServiceRole; context.StepConcurrencyLevel = this.StepConcurrencyLevel; if (this.Step != null) { context.Step = new List<Amazon.ElasticMapReduce.Model.StepConfig>(this.Step); } if (this.SupportedProduct != null) { context.SupportedProduct = new List<System.String>(this.SupportedProduct); } if (this.Tag != null) { context.Tag = new List<Amazon.ElasticMapReduce.Model.Tag>(this.Tag); } context.VisibleToAllUser = this.VisibleToAllUser; // allow further manipulation of loaded context prior to processing PostExecutionContextLoad(context); var output = Execute(context) as CmdletOutput; ProcessOutput(output); } #region IExecutor Members public object Execute(ExecutorContext context) { var cmdletContext = context as CmdletContext; // create request var request = new Amazon.ElasticMapReduce.Model.RunJobFlowRequest(); if (cmdletContext.AdditionalInfo != null) { request.AdditionalInfo = cmdletContext.AdditionalInfo; } if (cmdletContext.AmiVersion != null) { request.AmiVersion = cmdletContext.AmiVersion; } if (cmdletContext.Application != null) { request.Applications = cmdletContext.Application; } if (cmdletContext.AutoScalingRole != null) { request.AutoScalingRole = cmdletContext.AutoScalingRole; } // populate AutoTerminationPolicy var requestAutoTerminationPolicyIsNull = true; request.AutoTerminationPolicy = new Amazon.ElasticMapReduce.Model.AutoTerminationPolicy(); System.Int64? requestAutoTerminationPolicy_autoTerminationPolicy_IdleTimeout = null; if (cmdletContext.AutoTerminationPolicy_IdleTimeout != null) { requestAutoTerminationPolicy_autoTerminationPolicy_IdleTimeout = cmdletContext.AutoTerminationPolicy_IdleTimeout.Value; } if (requestAutoTerminationPolicy_autoTerminationPolicy_IdleTimeout != null) { request.AutoTerminationPolicy.IdleTimeout = requestAutoTerminationPolicy_autoTerminationPolicy_IdleTimeout.Value; requestAutoTerminationPolicyIsNull = false; } // determine if request.AutoTerminationPolicy should be set to null if (requestAutoTerminationPolicyIsNull) { request.AutoTerminationPolicy = null; } if (cmdletContext.BootstrapAction != null) { request.BootstrapActions = cmdletContext.BootstrapAction; } if (cmdletContext.Configuration != null) { request.Configurations = cmdletContext.Configuration; } if (cmdletContext.CustomAmiId != null) { request.CustomAmiId = cmdletContext.CustomAmiId; } if (cmdletContext.EbsRootVolumeSize != null) { request.EbsRootVolumeSize = cmdletContext.EbsRootVolumeSize.Value; } // populate Instances var requestInstancesIsNull = true; request.Instances = new Amazon.ElasticMapReduce.Model.JobFlowInstancesConfig(); List<System.String> requestInstances_instances_AdditionalMasterSecurityGroup = null; if (cmdletContext.Instances_AdditionalMasterSecurityGroup != null) { requestInstances_instances_AdditionalMasterSecurityGroup = cmdletContext.Instances_AdditionalMasterSecurityGroup; } if (requestInstances_instances_AdditionalMasterSecurityGroup != null) { request.Instances.AdditionalMasterSecurityGroups = requestInstances_instances_AdditionalMasterSecurityGroup; requestInstancesIsNull = false; } List<System.String> requestInstances_instances_AdditionalSlaveSecurityGroup = null; if (cmdletContext.Instances_AdditionalSlaveSecurityGroup != null) { requestInstances_instances_AdditionalSlaveSecurityGroup = cmdletContext.Instances_AdditionalSlaveSecurityGroup; } if (requestInstances_instances_AdditionalSlaveSecurityGroup != null) { request.Instances.AdditionalSlaveSecurityGroups = requestInstances_instances_AdditionalSlaveSecurityGroup; requestInstancesIsNull = false; } System.String requestInstances_instances_Ec2KeyName = null; if (cmdletContext.Instances_Ec2KeyName != null) { requestInstances_instances_Ec2KeyName = cmdletContext.Instances_Ec2KeyName; } if (requestInstances_instances_Ec2KeyName != null) { request.Instances.Ec2KeyName = requestInstances_instances_Ec2KeyName; requestInstancesIsNull = false; } System.String requestInstances_instances_Ec2SubnetId = null; if (cmdletContext.Instances_Ec2SubnetId != null) { requestInstances_instances_Ec2SubnetId = cmdletContext.Instances_Ec2SubnetId; } if (requestInstances_instances_Ec2SubnetId != null) { request.Instances.Ec2SubnetId = requestInstances_instances_Ec2SubnetId; requestInstancesIsNull = false; } List<System.String> requestInstances_instances_Ec2SubnetIds = null; if (cmdletContext.Instances_Ec2SubnetIds != null) { requestInstances_instances_Ec2SubnetIds = cmdletContext.Instances_Ec2SubnetIds; } if (requestInstances_instances_Ec2SubnetIds != null) { request.Instances.Ec2SubnetIds = requestInstances_instances_Ec2SubnetIds; requestInstancesIsNull = false; } System.String requestInstances_instances_EmrManagedMasterSecurityGroup = null; if (cmdletContext.Instances_EmrManagedMasterSecurityGroup != null) { requestInstances_instances_EmrManagedMasterSecurityGroup = cmdletContext.Instances_EmrManagedMasterSecurityGroup; } if (requestInstances_instances_EmrManagedMasterSecurityGroup != null) { request.Instances.EmrManagedMasterSecurityGroup = requestInstances_instances_EmrManagedMasterSecurityGroup; requestInstancesIsNull = false; } System.String requestInstances_instances_EmrManagedSlaveSecurityGroup = null; if (cmdletContext.Instances_EmrManagedSlaveSecurityGroup != null) { requestInstances_instances_EmrManagedSlaveSecurityGroup = cmdletContext.Instances_EmrManagedSlaveSecurityGroup; } if (requestInstances_instances_EmrManagedSlaveSecurityGroup != null) { request.Instances.EmrManagedSlaveSecurityGroup = requestInstances_instances_EmrManagedSlaveSecurityGroup; requestInstancesIsNull = false; } System.String requestInstances_instances_HadoopVersion = null; if (cmdletContext.Instances_HadoopVersion != null) { requestInstances_instances_HadoopVersion = cmdletContext.Instances_HadoopVersion; } if (requestInstances_instances_HadoopVersion != null) { request.Instances.HadoopVersion = requestInstances_instances_HadoopVersion; requestInstancesIsNull = false; } System.Int32? requestInstances_instances_InstanceCount = null; if (cmdletContext.Instances_InstanceCount != null) { requestInstances_instances_InstanceCount = cmdletContext.Instances_InstanceCount.Value; } if (requestInstances_instances_InstanceCount != null) { request.Instances.InstanceCount = requestInstances_instances_InstanceCount.Value; requestInstancesIsNull = false; } List<Amazon.ElasticMapReduce.Model.InstanceFleetConfig> requestInstances_instances_InstanceFleet = null; if (cmdletContext.Instances_InstanceFleet != null) { requestInstances_instances_InstanceFleet = cmdletContext.Instances_InstanceFleet; } if (requestInstances_instances_InstanceFleet != null) { request.Instances.InstanceFleets = requestInstances_instances_InstanceFleet; requestInstancesIsNull = false; } List<Amazon.ElasticMapReduce.Model.InstanceGroupConfig> requestInstances_instances_InstanceGroup = null; if (cmdletContext.Instances_InstanceGroup != null) { requestInstances_instances_InstanceGroup = cmdletContext.Instances_InstanceGroup; } if (requestInstances_instances_InstanceGroup != null) { request.Instances.InstanceGroups = requestInstances_instances_InstanceGroup; requestInstancesIsNull = false; } System.Boolean? requestInstances_instances_KeepJobFlowAliveWhenNoStep = null; if (cmdletContext.Instances_KeepJobFlowAliveWhenNoStep != null) { requestInstances_instances_KeepJobFlowAliveWhenNoStep = cmdletContext.Instances_KeepJobFlowAliveWhenNoStep.Value; } if (requestInstances_instances_KeepJobFlowAliveWhenNoStep != null) { request.Instances.KeepJobFlowAliveWhenNoSteps = requestInstances_instances_KeepJobFlowAliveWhenNoStep.Value; requestInstancesIsNull = false; } System.String requestInstances_instances_MasterInstanceType = null; if (cmdletContext.Instances_MasterInstanceType != null) { requestInstances_instances_MasterInstanceType = cmdletContext.Instances_MasterInstanceType; } if (requestInstances_instances_MasterInstanceType != null) { request.Instances.MasterInstanceType = requestInstances_instances_MasterInstanceType; requestInstancesIsNull = false; } System.String requestInstances_instances_ServiceAccessSecurityGroup = null; if (cmdletContext.Instances_ServiceAccessSecurityGroup != null) { requestInstances_instances_ServiceAccessSecurityGroup = cmdletContext.Instances_ServiceAccessSecurityGroup; } if (requestInstances_instances_ServiceAccessSecurityGroup != null) { request.Instances.ServiceAccessSecurityGroup = requestInstances_instances_ServiceAccessSecurityGroup; requestInstancesIsNull = false; } System.String requestInstances_instances_SlaveInstanceType = null; if (cmdletContext.Instances_SlaveInstanceType != null) { requestInstances_instances_SlaveInstanceType = cmdletContext.Instances_SlaveInstanceType; } if (requestInstances_instances_SlaveInstanceType != null) { request.Instances.SlaveInstanceType = requestInstances_instances_SlaveInstanceType; requestInstancesIsNull = false; } System.Boolean? requestInstances_instances_TerminationProtected = null; if (cmdletContext.Instances_TerminationProtected != null) { requestInstances_instances_TerminationProtected = cmdletContext.Instances_TerminationProtected.Value; } if (requestInstances_instances_TerminationProtected != null) { request.Instances.TerminationProtected = requestInstances_instances_TerminationProtected.Value; requestInstancesIsNull = false; } Amazon.ElasticMapReduce.Model.PlacementType requestInstances_instances_Placement = null; // populate Placement var requestInstances_instances_PlacementIsNull = true; requestInstances_instances_Placement = new Amazon.ElasticMapReduce.Model.PlacementType(); System.String requestInstances_instances_Placement_instances_Placement_AvailabilityZone = null; if (cmdletContext.Instances_Placement_AvailabilityZone != null) { requestInstances_instances_Placement_instances_Placement_AvailabilityZone = cmdletContext.Instances_Placement_AvailabilityZone; } if (requestInstances_instances_Placement_instances_Placement_AvailabilityZone != null) { requestInstances_instances_Placement.AvailabilityZone = requestInstances_instances_Placement_instances_Placement_AvailabilityZone; requestInstances_instances_PlacementIsNull = false; } List<System.String> requestInstances_instances_Placement_instances_Placement_AvailabilityZones = null; if (cmdletContext.Instances_Placement_AvailabilityZones != null) { requestInstances_instances_Placement_instances_Placement_AvailabilityZones = cmdletContext.Instances_Placement_AvailabilityZones; } if (requestInstances_instances_Placement_instances_Placement_AvailabilityZones != null) { requestInstances_instances_Placement.AvailabilityZones = requestInstances_instances_Placement_instances_Placement_AvailabilityZones; requestInstances_instances_PlacementIsNull = false; } // determine if requestInstances_instances_Placement should be set to null if (requestInstances_instances_PlacementIsNull) { requestInstances_instances_Placement = null; } if (requestInstances_instances_Placement != null) { request.Instances.Placement = requestInstances_instances_Placement; requestInstancesIsNull = false; } // determine if request.Instances should be set to null if (requestInstancesIsNull) { request.Instances = null; } if (cmdletContext.JobFlowRole != null) { request.JobFlowRole = cmdletContext.JobFlowRole; } // populate KerberosAttributes var requestKerberosAttributesIsNull = true; request.KerberosAttributes = new Amazon.ElasticMapReduce.Model.KerberosAttributes(); System.String requestKerberosAttributes_kerberosAttributes_ADDomainJoinPassword = null; if (cmdletContext.KerberosAttributes_ADDomainJoinPassword != null) { requestKerberosAttributes_kerberosAttributes_ADDomainJoinPassword = cmdletContext.KerberosAttributes_ADDomainJoinPassword; } if (requestKerberosAttributes_kerberosAttributes_ADDomainJoinPassword != null) { request.KerberosAttributes.ADDomainJoinPassword = requestKerberosAttributes_kerberosAttributes_ADDomainJoinPassword; requestKerberosAttributesIsNull = false; } System.String requestKerberosAttributes_kerberosAttributes_ADDomainJoinUser = null; if (cmdletContext.KerberosAttributes_ADDomainJoinUser != null) { requestKerberosAttributes_kerberosAttributes_ADDomainJoinUser = cmdletContext.KerberosAttributes_ADDomainJoinUser; } if (requestKerberosAttributes_kerberosAttributes_ADDomainJoinUser != null) { request.KerberosAttributes.ADDomainJoinUser = requestKerberosAttributes_kerberosAttributes_ADDomainJoinUser; requestKerberosAttributesIsNull = false; } System.String requestKerberosAttributes_kerberosAttributes_CrossRealmTrustPrincipalPassword = null; if (cmdletContext.KerberosAttributes_CrossRealmTrustPrincipalPassword != null) { requestKerberosAttributes_kerberosAttributes_CrossRealmTrustPrincipalPassword = cmdletContext.KerberosAttributes_CrossRealmTrustPrincipalPassword; } if (requestKerberosAttributes_kerberosAttributes_CrossRealmTrustPrincipalPassword != null) { request.KerberosAttributes.CrossRealmTrustPrincipalPassword = requestKerberosAttributes_kerberosAttributes_CrossRealmTrustPrincipalPassword; requestKerberosAttributesIsNull = false; } System.String requestKerberosAttributes_kerberosAttributes_KdcAdminPassword = null; if (cmdletContext.KerberosAttributes_KdcAdminPassword != null) { requestKerberosAttributes_kerberosAttributes_KdcAdminPassword = cmdletContext.KerberosAttributes_KdcAdminPassword; } if (requestKerberosAttributes_kerberosAttributes_KdcAdminPassword != null) { request.KerberosAttributes.KdcAdminPassword = requestKerberosAttributes_kerberosAttributes_KdcAdminPassword; requestKerberosAttributesIsNull = false; } System.String requestKerberosAttributes_kerberosAttributes_Realm = null; if (cmdletContext.KerberosAttributes_Realm != null) { requestKerberosAttributes_kerberosAttributes_Realm = cmdletContext.KerberosAttributes_Realm; } if (requestKerberosAttributes_kerberosAttributes_Realm != null) { request.KerberosAttributes.Realm = requestKerberosAttributes_kerberosAttributes_Realm; requestKerberosAttributesIsNull = false; } // determine if request.KerberosAttributes should be set to null if (requestKerberosAttributesIsNull) { request.KerberosAttributes = null; } if (cmdletContext.LogEncryptionKmsKeyId != null) { request.LogEncryptionKmsKeyId = cmdletContext.LogEncryptionKmsKeyId; } if (cmdletContext.LogUri != null) { request.LogUri = cmdletContext.LogUri; } // populate ManagedScalingPolicy var requestManagedScalingPolicyIsNull = true; request.ManagedScalingPolicy = new Amazon.ElasticMapReduce.Model.ManagedScalingPolicy(); Amazon.ElasticMapReduce.Model.ComputeLimits requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits = null; // populate ComputeLimits var requestManagedScalingPolicy_managedScalingPolicy_ComputeLimitsIsNull = true; requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits = new Amazon.ElasticMapReduce.Model.ComputeLimits(); System.Int32? requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits_computeLimits_MaximumCapacityUnit = null; if (cmdletContext.ComputeLimits_MaximumCapacityUnit != null) { requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits_computeLimits_MaximumCapacityUnit = cmdletContext.ComputeLimits_MaximumCapacityUnit.Value; } if (requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits_computeLimits_MaximumCapacityUnit != null) { requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits.MaximumCapacityUnits = requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits_computeLimits_MaximumCapacityUnit.Value; requestManagedScalingPolicy_managedScalingPolicy_ComputeLimitsIsNull = false; } System.Int32? requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits_computeLimits_MaximumCoreCapacityUnit = null; if (cmdletContext.ComputeLimits_MaximumCoreCapacityUnit != null) { requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits_computeLimits_MaximumCoreCapacityUnit = cmdletContext.ComputeLimits_MaximumCoreCapacityUnit.Value; } if (requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits_computeLimits_MaximumCoreCapacityUnit != null) { requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits.MaximumCoreCapacityUnits = requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits_computeLimits_MaximumCoreCapacityUnit.Value; requestManagedScalingPolicy_managedScalingPolicy_ComputeLimitsIsNull = false; } System.Int32? requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits_computeLimits_MaximumOnDemandCapacityUnit = null; if (cmdletContext.ComputeLimits_MaximumOnDemandCapacityUnit != null) { requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits_computeLimits_MaximumOnDemandCapacityUnit = cmdletContext.ComputeLimits_MaximumOnDemandCapacityUnit.Value; } if (requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits_computeLimits_MaximumOnDemandCapacityUnit != null) { requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits.MaximumOnDemandCapacityUnits = requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits_computeLimits_MaximumOnDemandCapacityUnit.Value; requestManagedScalingPolicy_managedScalingPolicy_ComputeLimitsIsNull = false; } System.Int32? requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits_computeLimits_MinimumCapacityUnit = null; if (cmdletContext.ComputeLimits_MinimumCapacityUnit != null) { requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits_computeLimits_MinimumCapacityUnit = cmdletContext.ComputeLimits_MinimumCapacityUnit.Value; } if (requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits_computeLimits_MinimumCapacityUnit != null) { requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits.MinimumCapacityUnits = requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits_computeLimits_MinimumCapacityUnit.Value; requestManagedScalingPolicy_managedScalingPolicy_ComputeLimitsIsNull = false; } Amazon.ElasticMapReduce.ComputeLimitsUnitType requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits_computeLimits_UnitType = null; if (cmdletContext.ComputeLimits_UnitType != null) { requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits_computeLimits_UnitType = cmdletContext.ComputeLimits_UnitType; } if (requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits_computeLimits_UnitType != null) { requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits.UnitType = requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits_computeLimits_UnitType; requestManagedScalingPolicy_managedScalingPolicy_ComputeLimitsIsNull = false; } // determine if requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits should be set to null if (requestManagedScalingPolicy_managedScalingPolicy_ComputeLimitsIsNull) { requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits = null; } if (requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits != null) { request.ManagedScalingPolicy.ComputeLimits = requestManagedScalingPolicy_managedScalingPolicy_ComputeLimits; requestManagedScalingPolicyIsNull = false; } // determine if request.ManagedScalingPolicy should be set to null if (requestManagedScalingPolicyIsNull) { request.ManagedScalingPolicy = null; } if (cmdletContext.Name != null) { request.Name = cmdletContext.Name; } if (cmdletContext.NewSupportedProduct != null) { request.NewSupportedProducts = cmdletContext.NewSupportedProduct; } if (cmdletContext.OSReleaseLabel != null) { request.OSReleaseLabel = cmdletContext.OSReleaseLabel; } if (cmdletContext.PlacementGroupConfig != null) { request.PlacementGroupConfigs = cmdletContext.PlacementGroupConfig; } if (cmdletContext.ReleaseLabel != null) { request.ReleaseLabel = cmdletContext.ReleaseLabel; } if (cmdletContext.RepoUpgradeOnBoot != null) { request.RepoUpgradeOnBoot = cmdletContext.RepoUpgradeOnBoot; } if (cmdletContext.ScaleDownBehavior != null) { request.ScaleDownBehavior = cmdletContext.ScaleDownBehavior; } if (cmdletContext.SecurityConfiguration != null) { request.SecurityConfiguration = cmdletContext.SecurityConfiguration; } if (cmdletContext.ServiceRole != null) { request.ServiceRole = cmdletContext.ServiceRole; } if (cmdletContext.StepConcurrencyLevel != null) { request.StepConcurrencyLevel = cmdletContext.StepConcurrencyLevel.Value; } if (cmdletContext.Step != null) { request.Steps = cmdletContext.Step; } if (cmdletContext.SupportedProduct != null) { request.SupportedProducts = cmdletContext.SupportedProduct; } if (cmdletContext.Tag != null) { request.Tags = cmdletContext.Tag; } if (cmdletContext.VisibleToAllUser != null) { request.VisibleToAllUsers = cmdletContext.VisibleToAllUser.Value; } CmdletOutput output; // issue call var client = Client ?? CreateClient(_CurrentCredentials, _RegionEndpoint); try { var response = CallAWSServiceOperation(client, request); object pipelineOutput = null; pipelineOutput = cmdletContext.Select(response, this); output = new CmdletOutput { PipelineOutput = pipelineOutput, ServiceResponse = response }; } catch (Exception e) { output = new CmdletOutput { ErrorResponse = e }; } return output; } public ExecutorContext CreateContext() { return new CmdletContext(); } #endregion #region AWS Service Operation Call private Amazon.ElasticMapReduce.Model.RunJobFlowResponse CallAWSServiceOperation(IAmazonElasticMapReduce client, Amazon.ElasticMapReduce.Model.RunJobFlowRequest request) { Utils.Common.WriteVerboseEndpointMessage(this, client.Config, "Amazon Elastic MapReduce", "RunJobFlow"); try { #if DESKTOP return client.RunJobFlow(request); #elif CORECLR return client.RunJobFlowAsync(request).GetAwaiter().GetResult(); #else #error "Unknown build edition" #endif } catch (AmazonServiceException exc) { var webException = exc.InnerException as System.Net.WebException; if (webException != null) { throw new Exception(Utils.Common.FormatNameResolutionFailureMessage(client.Config, webException.Message), webException); } throw; } } #endregion internal partial class CmdletContext : ExecutorContext { public System.String AdditionalInfo { get; set; } public System.String AmiVersion { get; set; } public List<Amazon.ElasticMapReduce.Model.Application> Application { get; set; } public System.String AutoScalingRole { get; set; } public System.Int64? AutoTerminationPolicy_IdleTimeout { get; set; } public List<Amazon.ElasticMapReduce.Model.BootstrapActionConfig> BootstrapAction { get; set; } public List<Amazon.ElasticMapReduce.Model.Configuration> Configuration { get; set; } public System.String CustomAmiId { get; set; } public System.Int32? EbsRootVolumeSize { get; set; } public List<System.String> Instances_AdditionalMasterSecurityGroup { get; set; } public List<System.String> Instances_AdditionalSlaveSecurityGroup { get; set; } public System.String Instances_Ec2KeyName { get; set; } public System.String Instances_Ec2SubnetId { get; set; } public List<System.String> Instances_Ec2SubnetIds { get; set; } public System.String Instances_EmrManagedMasterSecurityGroup { get; set; } public System.String Instances_EmrManagedSlaveSecurityGroup { get; set; } public System.String Instances_HadoopVersion { get; set; } public System.Int32? Instances_InstanceCount { get; set; } public List<Amazon.ElasticMapReduce.Model.InstanceFleetConfig> Instances_InstanceFleet { get; set; } public List<Amazon.ElasticMapReduce.Model.InstanceGroupConfig> Instances_InstanceGroup { get; set; } public System.Boolean? Instances_KeepJobFlowAliveWhenNoStep { get; set; } public System.String Instances_MasterInstanceType { get; set; } public System.String Instances_Placement_AvailabilityZone { get; set; } public List<System.String> Instances_Placement_AvailabilityZones { get; set; } public System.String Instances_ServiceAccessSecurityGroup { get; set; } public System.String Instances_SlaveInstanceType { get; set; } public System.Boolean? Instances_TerminationProtected { get; set; } public System.String JobFlowRole { get; set; } public System.String KerberosAttributes_ADDomainJoinPassword { get; set; } public System.String KerberosAttributes_ADDomainJoinUser { get; set; } public System.String KerberosAttributes_CrossRealmTrustPrincipalPassword { get; set; } public System.String KerberosAttributes_KdcAdminPassword { get; set; } public System.String KerberosAttributes_Realm { get; set; } public System.String LogEncryptionKmsKeyId { get; set; } public System.String LogUri { get; set; } public System.Int32? ComputeLimits_MaximumCapacityUnit { get; set; } public System.Int32? ComputeLimits_MaximumCoreCapacityUnit { get; set; } public System.Int32? ComputeLimits_MaximumOnDemandCapacityUnit { get; set; } public System.Int32? ComputeLimits_MinimumCapacityUnit { get; set; } public Amazon.ElasticMapReduce.ComputeLimitsUnitType ComputeLimits_UnitType { get; set; } public System.String Name { get; set; } public List<Amazon.ElasticMapReduce.Model.SupportedProductConfig> NewSupportedProduct { get; set; } public System.String OSReleaseLabel { get; set; } public List<Amazon.ElasticMapReduce.Model.PlacementGroupConfig> PlacementGroupConfig { get; set; } public System.String ReleaseLabel { get; set; } public Amazon.ElasticMapReduce.RepoUpgradeOnBoot RepoUpgradeOnBoot { get; set; } public Amazon.ElasticMapReduce.ScaleDownBehavior ScaleDownBehavior { get; set; } public System.String SecurityConfiguration { get; set; } public System.String ServiceRole { get; set; } public System.Int32? StepConcurrencyLevel { get; set; } public List<Amazon.ElasticMapReduce.Model.StepConfig> Step { get; set; } public List<System.String> SupportedProduct { get; set; } public List<Amazon.ElasticMapReduce.Model.Tag> Tag { get; set; } public System.Boolean? VisibleToAllUser { get; set; } public System.Func<Amazon.ElasticMapReduce.Model.RunJobFlowResponse, StartEMRJobFlowCmdlet, object> Select { get; set; } = (response, cmdlet) => response.JobFlowId; } } }