/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Aws { namespace EMR { namespace Model { /** *

Input to the RunJobFlow operation.

See Also:

AWS * API Reference

*/ class AWS_EMR_API RunJobFlowRequest : public EMRRequest { public: RunJobFlowRequest(); // Service request name is the Operation name which will send this request out, // each operation should has unique request name, so that we can get operation's name from this request. // Note: this is not true for response, multiple operations may have the same response name, // so we can not get operation's name from response. inline virtual const char* GetServiceRequestName() const override { return "RunJobFlow"; } Aws::String SerializePayload() const override; Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override; /** *

The name of the job flow.

*/ inline const Aws::String& GetName() const{ return m_name; } /** *

The name of the job flow.

*/ inline bool NameHasBeenSet() const { return m_nameHasBeenSet; } /** *

The name of the job flow.

*/ inline void SetName(const Aws::String& value) { m_nameHasBeenSet = true; m_name = value; } /** *

The name of the job flow.

*/ inline void SetName(Aws::String&& value) { m_nameHasBeenSet = true; m_name = std::move(value); } /** *

The name of the job flow.

*/ inline void SetName(const char* value) { m_nameHasBeenSet = true; m_name.assign(value); } /** *

The name of the job flow.

*/ inline RunJobFlowRequest& WithName(const Aws::String& value) { SetName(value); return *this;} /** *

The name of the job flow.

*/ inline RunJobFlowRequest& WithName(Aws::String&& value) { SetName(std::move(value)); return *this;} /** *

The name of the job flow.

*/ inline RunJobFlowRequest& WithName(const char* value) { SetName(value); return *this;} /** *

The location in Amazon S3 to write the log files of the job flow. If a value * is not provided, logs are not created.

*/ inline const Aws::String& GetLogUri() const{ return m_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.

*/ inline bool LogUriHasBeenSet() const { return m_logUriHasBeenSet; } /** *

The location in Amazon S3 to write the log files of the job flow. If a value * is not provided, logs are not created.

*/ inline void SetLogUri(const Aws::String& value) { m_logUriHasBeenSet = true; m_logUri = value; } /** *

The location in Amazon S3 to write the log files of the job flow. If a value * is not provided, logs are not created.

*/ inline void SetLogUri(Aws::String&& value) { m_logUriHasBeenSet = true; m_logUri = std::move(value); } /** *

The location in Amazon S3 to write the log files of the job flow. If a value * is not provided, logs are not created.

*/ inline void SetLogUri(const char* value) { m_logUriHasBeenSet = true; m_logUri.assign(value); } /** *

The location in Amazon S3 to write the log files of the job flow. If a value * is not provided, logs are not created.

*/ inline RunJobFlowRequest& WithLogUri(const Aws::String& value) { SetLogUri(value); return *this;} /** *

The location in Amazon S3 to write the log files of the job flow. If a value * is not provided, logs are not created.

*/ inline RunJobFlowRequest& WithLogUri(Aws::String&& value) { SetLogUri(std::move(value)); return *this;} /** *

The location in Amazon S3 to write the log files of the job flow. If a value * is not provided, logs are not created.

*/ inline RunJobFlowRequest& WithLogUri(const char* value) { SetLogUri(value); return *this;} /** *

The AWS KMS customer master key (CMK) used for encrypting log files. If a * value is not provided, the logs will remain encrypted by AES-256. This attribute * is only available with EMR version 5.30.0 and later, excluding EMR 6.0.0.

*/ inline const Aws::String& GetLogEncryptionKmsKeyId() const{ return m_logEncryptionKmsKeyId; } /** *

The AWS KMS customer master key (CMK) used for encrypting log files. If a * value is not provided, the logs will remain encrypted by AES-256. This attribute * is only available with EMR version 5.30.0 and later, excluding EMR 6.0.0.

*/ inline bool LogEncryptionKmsKeyIdHasBeenSet() const { return m_logEncryptionKmsKeyIdHasBeenSet; } /** *

The AWS KMS customer master key (CMK) used for encrypting log files. If a * value is not provided, the logs will remain encrypted by AES-256. This attribute * is only available with EMR version 5.30.0 and later, excluding EMR 6.0.0.

*/ inline void SetLogEncryptionKmsKeyId(const Aws::String& value) { m_logEncryptionKmsKeyIdHasBeenSet = true; m_logEncryptionKmsKeyId = value; } /** *

The AWS KMS customer master key (CMK) used for encrypting log files. If a * value is not provided, the logs will remain encrypted by AES-256. This attribute * is only available with EMR version 5.30.0 and later, excluding EMR 6.0.0.

*/ inline void SetLogEncryptionKmsKeyId(Aws::String&& value) { m_logEncryptionKmsKeyIdHasBeenSet = true; m_logEncryptionKmsKeyId = std::move(value); } /** *

The AWS KMS customer master key (CMK) used for encrypting log files. If a * value is not provided, the logs will remain encrypted by AES-256. This attribute * is only available with EMR version 5.30.0 and later, excluding EMR 6.0.0.

*/ inline void SetLogEncryptionKmsKeyId(const char* value) { m_logEncryptionKmsKeyIdHasBeenSet = true; m_logEncryptionKmsKeyId.assign(value); } /** *

The AWS KMS customer master key (CMK) used for encrypting log files. If a * value is not provided, the logs will remain encrypted by AES-256. This attribute * is only available with EMR version 5.30.0 and later, excluding EMR 6.0.0.

*/ inline RunJobFlowRequest& WithLogEncryptionKmsKeyId(const Aws::String& value) { SetLogEncryptionKmsKeyId(value); return *this;} /** *

The AWS KMS customer master key (CMK) used for encrypting log files. If a * value is not provided, the logs will remain encrypted by AES-256. This attribute * is only available with EMR version 5.30.0 and later, excluding EMR 6.0.0.

*/ inline RunJobFlowRequest& WithLogEncryptionKmsKeyId(Aws::String&& value) { SetLogEncryptionKmsKeyId(std::move(value)); return *this;} /** *

The AWS KMS customer master key (CMK) used for encrypting log files. If a * value is not provided, the logs will remain encrypted by AES-256. This attribute * is only available with EMR version 5.30.0 and later, excluding EMR 6.0.0.

*/ inline RunJobFlowRequest& WithLogEncryptionKmsKeyId(const char* value) { SetLogEncryptionKmsKeyId(value); return *this;} /** *

A JSON string for selecting additional features.

*/ inline const Aws::String& GetAdditionalInfo() const{ return m_additionalInfo; } /** *

A JSON string for selecting additional features.

*/ inline bool AdditionalInfoHasBeenSet() const { return m_additionalInfoHasBeenSet; } /** *

A JSON string for selecting additional features.

*/ inline void SetAdditionalInfo(const Aws::String& value) { m_additionalInfoHasBeenSet = true; m_additionalInfo = value; } /** *

A JSON string for selecting additional features.

*/ inline void SetAdditionalInfo(Aws::String&& value) { m_additionalInfoHasBeenSet = true; m_additionalInfo = std::move(value); } /** *

A JSON string for selecting additional features.

*/ inline void SetAdditionalInfo(const char* value) { m_additionalInfoHasBeenSet = true; m_additionalInfo.assign(value); } /** *

A JSON string for selecting additional features.

*/ inline RunJobFlowRequest& WithAdditionalInfo(const Aws::String& value) { SetAdditionalInfo(value); return *this;} /** *

A JSON string for selecting additional features.

*/ inline RunJobFlowRequest& WithAdditionalInfo(Aws::String&& value) { SetAdditionalInfo(std::move(value)); return *this;} /** *

A JSON string for selecting additional features.

*/ inline RunJobFlowRequest& WithAdditionalInfo(const char* value) { SetAdditionalInfo(value); return *this;} /** *

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.

*/ inline const Aws::String& GetAmiVersion() const{ return m_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.

*/ inline bool AmiVersionHasBeenSet() const { return m_amiVersionHasBeenSet; } /** *

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.

*/ inline void SetAmiVersion(const Aws::String& value) { m_amiVersionHasBeenSet = true; m_amiVersion = value; } /** *

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.

*/ inline void SetAmiVersion(Aws::String&& value) { m_amiVersionHasBeenSet = true; m_amiVersion = std::move(value); } /** *

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.

*/ inline void SetAmiVersion(const char* value) { m_amiVersionHasBeenSet = true; m_amiVersion.assign(value); } /** *

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.

*/ inline RunJobFlowRequest& WithAmiVersion(const Aws::String& value) { SetAmiVersion(value); return *this;} /** *

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.

*/ inline RunJobFlowRequest& WithAmiVersion(Aws::String&& value) { SetAmiVersion(std::move(value)); return *this;} /** *

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.

*/ inline RunJobFlowRequest& WithAmiVersion(const char* value) { SetAmiVersion(value); return *this;} /** *

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.

*/ inline const Aws::String& GetReleaseLabel() const{ return m_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.

*/ inline bool ReleaseLabelHasBeenSet() const { return m_releaseLabelHasBeenSet; } /** *

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.

*/ inline void SetReleaseLabel(const Aws::String& value) { m_releaseLabelHasBeenSet = true; m_releaseLabel = value; } /** *

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.

*/ inline void SetReleaseLabel(Aws::String&& value) { m_releaseLabelHasBeenSet = true; m_releaseLabel = std::move(value); } /** *

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.

*/ inline void SetReleaseLabel(const char* value) { m_releaseLabelHasBeenSet = true; m_releaseLabel.assign(value); } /** *

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.

*/ inline RunJobFlowRequest& WithReleaseLabel(const Aws::String& value) { SetReleaseLabel(value); return *this;} /** *

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.

*/ inline RunJobFlowRequest& WithReleaseLabel(Aws::String&& value) { SetReleaseLabel(std::move(value)); return *this;} /** *

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.

*/ inline RunJobFlowRequest& WithReleaseLabel(const char* value) { SetReleaseLabel(value); return *this;} /** *

A specification of the number and type of Amazon EC2 instances.

*/ inline const JobFlowInstancesConfig& GetInstances() const{ return m_instances; } /** *

A specification of the number and type of Amazon EC2 instances.

*/ inline bool InstancesHasBeenSet() const { return m_instancesHasBeenSet; } /** *

A specification of the number and type of Amazon EC2 instances.

*/ inline void SetInstances(const JobFlowInstancesConfig& value) { m_instancesHasBeenSet = true; m_instances = value; } /** *

A specification of the number and type of Amazon EC2 instances.

*/ inline void SetInstances(JobFlowInstancesConfig&& value) { m_instancesHasBeenSet = true; m_instances = std::move(value); } /** *

A specification of the number and type of Amazon EC2 instances.

*/ inline RunJobFlowRequest& WithInstances(const JobFlowInstancesConfig& value) { SetInstances(value); return *this;} /** *

A specification of the number and type of Amazon EC2 instances.

*/ inline RunJobFlowRequest& WithInstances(JobFlowInstancesConfig&& value) { SetInstances(std::move(value)); return *this;} /** *

A list of steps to run.

*/ inline const Aws::Vector& GetSteps() const{ return m_steps; } /** *

A list of steps to run.

*/ inline bool StepsHasBeenSet() const { return m_stepsHasBeenSet; } /** *

A list of steps to run.

*/ inline void SetSteps(const Aws::Vector& value) { m_stepsHasBeenSet = true; m_steps = value; } /** *

A list of steps to run.

*/ inline void SetSteps(Aws::Vector&& value) { m_stepsHasBeenSet = true; m_steps = std::move(value); } /** *

A list of steps to run.

*/ inline RunJobFlowRequest& WithSteps(const Aws::Vector& value) { SetSteps(value); return *this;} /** *

A list of steps to run.

*/ inline RunJobFlowRequest& WithSteps(Aws::Vector&& value) { SetSteps(std::move(value)); return *this;} /** *

A list of steps to run.

*/ inline RunJobFlowRequest& AddSteps(const StepConfig& value) { m_stepsHasBeenSet = true; m_steps.push_back(value); return *this; } /** *

A list of steps to run.

*/ inline RunJobFlowRequest& AddSteps(StepConfig&& value) { m_stepsHasBeenSet = true; m_steps.push_back(std::move(value)); return *this; } /** *

A list of bootstrap actions to run before Hadoop starts on the cluster * nodes.

*/ inline const Aws::Vector& GetBootstrapActions() const{ return m_bootstrapActions; } /** *

A list of bootstrap actions to run before Hadoop starts on the cluster * nodes.

*/ inline bool BootstrapActionsHasBeenSet() const { return m_bootstrapActionsHasBeenSet; } /** *

A list of bootstrap actions to run before Hadoop starts on the cluster * nodes.

*/ inline void SetBootstrapActions(const Aws::Vector& value) { m_bootstrapActionsHasBeenSet = true; m_bootstrapActions = value; } /** *

A list of bootstrap actions to run before Hadoop starts on the cluster * nodes.

*/ inline void SetBootstrapActions(Aws::Vector&& value) { m_bootstrapActionsHasBeenSet = true; m_bootstrapActions = std::move(value); } /** *

A list of bootstrap actions to run before Hadoop starts on the cluster * nodes.

*/ inline RunJobFlowRequest& WithBootstrapActions(const Aws::Vector& value) { SetBootstrapActions(value); return *this;} /** *

A list of bootstrap actions to run before Hadoop starts on the cluster * nodes.

*/ inline RunJobFlowRequest& WithBootstrapActions(Aws::Vector&& value) { SetBootstrapActions(std::move(value)); return *this;} /** *

A list of bootstrap actions to run before Hadoop starts on the cluster * nodes.

*/ inline RunJobFlowRequest& AddBootstrapActions(const BootstrapActionConfig& value) { m_bootstrapActionsHasBeenSet = true; m_bootstrapActions.push_back(value); return *this; } /** *

A list of bootstrap actions to run before Hadoop starts on the cluster * nodes.

*/ inline RunJobFlowRequest& AddBootstrapActions(BootstrapActionConfig&& value) { m_bootstrapActionsHasBeenSet = true; m_bootstrapActions.push_back(std::move(value)); return *this; } /** *

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.

*/ inline const Aws::Vector& GetSupportedProducts() const{ return m_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.

*/ inline bool SupportedProductsHasBeenSet() const { return m_supportedProductsHasBeenSet; } /** *

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.

*/ inline void SetSupportedProducts(const Aws::Vector& value) { m_supportedProductsHasBeenSet = true; m_supportedProducts = value; } /** *

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.

*/ inline void SetSupportedProducts(Aws::Vector&& value) { m_supportedProductsHasBeenSet = true; m_supportedProducts = std::move(value); } /** *

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.

*/ inline RunJobFlowRequest& WithSupportedProducts(const Aws::Vector& value) { SetSupportedProducts(value); return *this;} /** *

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.

*/ inline RunJobFlowRequest& WithSupportedProducts(Aws::Vector&& value) { SetSupportedProducts(std::move(value)); return *this;} /** *

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.

*/ inline RunJobFlowRequest& AddSupportedProducts(const Aws::String& value) { m_supportedProductsHasBeenSet = true; m_supportedProducts.push_back(value); return *this; } /** *

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.

*/ inline RunJobFlowRequest& AddSupportedProducts(Aws::String&& value) { m_supportedProductsHasBeenSet = true; m_supportedProducts.push_back(std::move(value)); return *this; } /** *

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.

*/ inline RunJobFlowRequest& AddSupportedProducts(const char* value) { m_supportedProductsHasBeenSet = true; m_supportedProducts.push_back(value); return *this; } /** *

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. * 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 Analtics 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.

*/ inline const Aws::Vector& GetNewSupportedProducts() const{ return m_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. * 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 Analtics 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.

*/ inline bool NewSupportedProductsHasBeenSet() const { return m_newSupportedProductsHasBeenSet; } /** *

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. * 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 Analtics 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.

*/ inline void SetNewSupportedProducts(const Aws::Vector& value) { m_newSupportedProductsHasBeenSet = true; m_newSupportedProducts = value; } /** *

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. * 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 Analtics 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.

*/ inline void SetNewSupportedProducts(Aws::Vector&& value) { m_newSupportedProductsHasBeenSet = true; m_newSupportedProducts = std::move(value); } /** *

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. * 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 Analtics 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.

*/ inline RunJobFlowRequest& WithNewSupportedProducts(const Aws::Vector& value) { SetNewSupportedProducts(value); return *this;} /** *

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. * 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 Analtics 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.

*/ inline RunJobFlowRequest& WithNewSupportedProducts(Aws::Vector&& value) { SetNewSupportedProducts(std::move(value)); return *this;} /** *

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. * 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 Analtics 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.

*/ inline RunJobFlowRequest& AddNewSupportedProducts(const SupportedProductConfig& value) { m_newSupportedProductsHasBeenSet = true; m_newSupportedProducts.push_back(value); return *this; } /** *

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. * 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 Analtics 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.

*/ inline RunJobFlowRequest& AddNewSupportedProducts(SupportedProductConfig&& value) { m_newSupportedProductsHasBeenSet = true; m_newSupportedProducts.push_back(std::move(value)); return *this; } /** *

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 EMR * Release Guide.

*/ inline const Aws::Vector& GetApplications() const{ return m_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 EMR * Release Guide.

*/ inline bool ApplicationsHasBeenSet() const { return m_applicationsHasBeenSet; } /** *

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 EMR * Release Guide.

*/ inline void SetApplications(const Aws::Vector& value) { m_applicationsHasBeenSet = true; m_applications = value; } /** *

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 EMR * Release Guide.

*/ inline void SetApplications(Aws::Vector&& value) { m_applicationsHasBeenSet = true; m_applications = std::move(value); } /** *

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 EMR * Release Guide.

*/ inline RunJobFlowRequest& WithApplications(const Aws::Vector& value) { SetApplications(value); return *this;} /** *

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 EMR * Release Guide.

*/ inline RunJobFlowRequest& WithApplications(Aws::Vector&& value) { SetApplications(std::move(value)); return *this;} /** *

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 EMR * Release Guide.

*/ inline RunJobFlowRequest& AddApplications(const Application& value) { m_applicationsHasBeenSet = true; m_applications.push_back(value); return *this; } /** *

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 EMR * Release Guide.

*/ inline RunJobFlowRequest& AddApplications(Application&& value) { m_applicationsHasBeenSet = true; m_applications.push_back(std::move(value)); return *this; } /** *

For Amazon EMR releases 4.0 and later. The list of configurations supplied * for the EMR cluster you are creating.

*/ inline const Aws::Vector& GetConfigurations() const{ return m_configurations; } /** *

For Amazon EMR releases 4.0 and later. The list of configurations supplied * for the EMR cluster you are creating.

*/ inline bool ConfigurationsHasBeenSet() const { return m_configurationsHasBeenSet; } /** *

For Amazon EMR releases 4.0 and later. The list of configurations supplied * for the EMR cluster you are creating.

*/ inline void SetConfigurations(const Aws::Vector& value) { m_configurationsHasBeenSet = true; m_configurations = value; } /** *

For Amazon EMR releases 4.0 and later. The list of configurations supplied * for the EMR cluster you are creating.

*/ inline void SetConfigurations(Aws::Vector&& value) { m_configurationsHasBeenSet = true; m_configurations = std::move(value); } /** *

For Amazon EMR releases 4.0 and later. The list of configurations supplied * for the EMR cluster you are creating.

*/ inline RunJobFlowRequest& WithConfigurations(const Aws::Vector& value) { SetConfigurations(value); return *this;} /** *

For Amazon EMR releases 4.0 and later. The list of configurations supplied * for the EMR cluster you are creating.

*/ inline RunJobFlowRequest& WithConfigurations(Aws::Vector&& value) { SetConfigurations(std::move(value)); return *this;} /** *

For Amazon EMR releases 4.0 and later. The list of configurations supplied * for the EMR cluster you are creating.

*/ inline RunJobFlowRequest& AddConfigurations(const Configuration& value) { m_configurationsHasBeenSet = true; m_configurations.push_back(value); return *this; } /** *

For Amazon EMR releases 4.0 and later. The list of configurations supplied * for the EMR cluster you are creating.

*/ inline RunJobFlowRequest& AddConfigurations(Configuration&& value) { m_configurationsHasBeenSet = true; m_configurations.push_back(std::move(value)); return *this; } /** *

A value of true indicates that all IAM users in the AWS account * can perform cluster actions if they have the proper IAM policy permissions. This * is the default. A value of false indicates that only the IAM user * who created the cluster can perform actions.

*/ inline bool GetVisibleToAllUsers() const{ return m_visibleToAllUsers; } /** *

A value of true indicates that all IAM users in the AWS account * can perform cluster actions if they have the proper IAM policy permissions. This * is the default. A value of false indicates that only the IAM user * who created the cluster can perform actions.

*/ inline bool VisibleToAllUsersHasBeenSet() const { return m_visibleToAllUsersHasBeenSet; } /** *

A value of true indicates that all IAM users in the AWS account * can perform cluster actions if they have the proper IAM policy permissions. This * is the default. A value of false indicates that only the IAM user * who created the cluster can perform actions.

*/ inline void SetVisibleToAllUsers(bool value) { m_visibleToAllUsersHasBeenSet = true; m_visibleToAllUsers = value; } /** *

A value of true indicates that all IAM users in the AWS account * can perform cluster actions if they have the proper IAM policy permissions. This * is the default. A value of false indicates that only the IAM user * who created the cluster can perform actions.

*/ inline RunJobFlowRequest& WithVisibleToAllUsers(bool value) { SetVisibleToAllUsers(value); return *this;} /** *

Also called instance profile and EC2 role. An IAM role for an EMR cluster. * The 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.

*/ inline const Aws::String& GetJobFlowRole() const{ return m_jobFlowRole; } /** *

Also called instance profile and EC2 role. An IAM role for an EMR cluster. * The 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.

*/ inline bool JobFlowRoleHasBeenSet() const { return m_jobFlowRoleHasBeenSet; } /** *

Also called instance profile and EC2 role. An IAM role for an EMR cluster. * The 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.

*/ inline void SetJobFlowRole(const Aws::String& value) { m_jobFlowRoleHasBeenSet = true; m_jobFlowRole = value; } /** *

Also called instance profile and EC2 role. An IAM role for an EMR cluster. * The 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.

*/ inline void SetJobFlowRole(Aws::String&& value) { m_jobFlowRoleHasBeenSet = true; m_jobFlowRole = std::move(value); } /** *

Also called instance profile and EC2 role. An IAM role for an EMR cluster. * The 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.

*/ inline void SetJobFlowRole(const char* value) { m_jobFlowRoleHasBeenSet = true; m_jobFlowRole.assign(value); } /** *

Also called instance profile and EC2 role. An IAM role for an EMR cluster. * The 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.

*/ inline RunJobFlowRequest& WithJobFlowRole(const Aws::String& value) { SetJobFlowRole(value); return *this;} /** *

Also called instance profile and EC2 role. An IAM role for an EMR cluster. * The 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.

*/ inline RunJobFlowRequest& WithJobFlowRole(Aws::String&& value) { SetJobFlowRole(std::move(value)); return *this;} /** *

Also called instance profile and EC2 role. An IAM role for an EMR cluster. * The 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.

*/ inline RunJobFlowRequest& WithJobFlowRole(const char* value) { SetJobFlowRole(value); return *this;} /** *

The IAM role that will be assumed by the Amazon EMR service to access AWS * resources on your behalf.

*/ inline const Aws::String& GetServiceRole() const{ return m_serviceRole; } /** *

The IAM role that will be assumed by the Amazon EMR service to access AWS * resources on your behalf.

*/ inline bool ServiceRoleHasBeenSet() const { return m_serviceRoleHasBeenSet; } /** *

The IAM role that will be assumed by the Amazon EMR service to access AWS * resources on your behalf.

*/ inline void SetServiceRole(const Aws::String& value) { m_serviceRoleHasBeenSet = true; m_serviceRole = value; } /** *

The IAM role that will be assumed by the Amazon EMR service to access AWS * resources on your behalf.

*/ inline void SetServiceRole(Aws::String&& value) { m_serviceRoleHasBeenSet = true; m_serviceRole = std::move(value); } /** *

The IAM role that will be assumed by the Amazon EMR service to access AWS * resources on your behalf.

*/ inline void SetServiceRole(const char* value) { m_serviceRoleHasBeenSet = true; m_serviceRole.assign(value); } /** *

The IAM role that will be assumed by the Amazon EMR service to access AWS * resources on your behalf.

*/ inline RunJobFlowRequest& WithServiceRole(const Aws::String& value) { SetServiceRole(value); return *this;} /** *

The IAM role that will be assumed by the Amazon EMR service to access AWS * resources on your behalf.

*/ inline RunJobFlowRequest& WithServiceRole(Aws::String&& value) { SetServiceRole(std::move(value)); return *this;} /** *

The IAM role that will be assumed by the Amazon EMR service to access AWS * resources on your behalf.

*/ inline RunJobFlowRequest& WithServiceRole(const char* value) { SetServiceRole(value); return *this;} /** *

A list of tags to associate with a cluster and propagate to Amazon EC2 * instances.

*/ inline const Aws::Vector& GetTags() const{ return m_tags; } /** *

A list of tags to associate with a cluster and propagate to Amazon EC2 * instances.

*/ inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; } /** *

A list of tags to associate with a cluster and propagate to Amazon EC2 * instances.

*/ inline void SetTags(const Aws::Vector& value) { m_tagsHasBeenSet = true; m_tags = value; } /** *

A list of tags to associate with a cluster and propagate to Amazon EC2 * instances.

*/ inline void SetTags(Aws::Vector&& value) { m_tagsHasBeenSet = true; m_tags = std::move(value); } /** *

A list of tags to associate with a cluster and propagate to Amazon EC2 * instances.

*/ inline RunJobFlowRequest& WithTags(const Aws::Vector& value) { SetTags(value); return *this;} /** *

A list of tags to associate with a cluster and propagate to Amazon EC2 * instances.

*/ inline RunJobFlowRequest& WithTags(Aws::Vector&& value) { SetTags(std::move(value)); return *this;} /** *

A list of tags to associate with a cluster and propagate to Amazon EC2 * instances.

*/ inline RunJobFlowRequest& AddTags(const Tag& value) { m_tagsHasBeenSet = true; m_tags.push_back(value); return *this; } /** *

A list of tags to associate with a cluster and propagate to Amazon EC2 * instances.

*/ inline RunJobFlowRequest& AddTags(Tag&& value) { m_tagsHasBeenSet = true; m_tags.push_back(std::move(value)); return *this; } /** *

The name of a security configuration to apply to the cluster.

*/ inline const Aws::String& GetSecurityConfiguration() const{ return m_securityConfiguration; } /** *

The name of a security configuration to apply to the cluster.

*/ inline bool SecurityConfigurationHasBeenSet() const { return m_securityConfigurationHasBeenSet; } /** *

The name of a security configuration to apply to the cluster.

*/ inline void SetSecurityConfiguration(const Aws::String& value) { m_securityConfigurationHasBeenSet = true; m_securityConfiguration = value; } /** *

The name of a security configuration to apply to the cluster.

*/ inline void SetSecurityConfiguration(Aws::String&& value) { m_securityConfigurationHasBeenSet = true; m_securityConfiguration = std::move(value); } /** *

The name of a security configuration to apply to the cluster.

*/ inline void SetSecurityConfiguration(const char* value) { m_securityConfigurationHasBeenSet = true; m_securityConfiguration.assign(value); } /** *

The name of a security configuration to apply to the cluster.

*/ inline RunJobFlowRequest& WithSecurityConfiguration(const Aws::String& value) { SetSecurityConfiguration(value); return *this;} /** *

The name of a security configuration to apply to the cluster.

*/ inline RunJobFlowRequest& WithSecurityConfiguration(Aws::String&& value) { SetSecurityConfiguration(std::move(value)); return *this;} /** *

The name of a security configuration to apply to the cluster.

*/ inline RunJobFlowRequest& WithSecurityConfiguration(const char* value) { SetSecurityConfiguration(value); return *this;} /** *

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 EC2 instances in * an instance group.

*/ inline const Aws::String& GetAutoScalingRole() const{ return m_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 EC2 instances in * an instance group.

*/ inline bool AutoScalingRoleHasBeenSet() const { return m_autoScalingRoleHasBeenSet; } /** *

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 EC2 instances in * an instance group.

*/ inline void SetAutoScalingRole(const Aws::String& value) { m_autoScalingRoleHasBeenSet = true; m_autoScalingRole = value; } /** *

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 EC2 instances in * an instance group.

*/ inline void SetAutoScalingRole(Aws::String&& value) { m_autoScalingRoleHasBeenSet = true; m_autoScalingRole = std::move(value); } /** *

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 EC2 instances in * an instance group.

*/ inline void SetAutoScalingRole(const char* value) { m_autoScalingRoleHasBeenSet = true; m_autoScalingRole.assign(value); } /** *

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 EC2 instances in * an instance group.

*/ inline RunJobFlowRequest& WithAutoScalingRole(const Aws::String& value) { SetAutoScalingRole(value); return *this;} /** *

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 EC2 instances in * an instance group.

*/ inline RunJobFlowRequest& WithAutoScalingRole(Aws::String&& value) { SetAutoScalingRole(std::move(value)); return *this;} /** *

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 EC2 instances in * an instance group.

*/ inline RunJobFlowRequest& WithAutoScalingRole(const char* value) { SetAutoScalingRole(value); return *this;} /** *

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 blacklists * 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 version 4.1.0 and later, and is the default for versions of * Amazon EMR earlier than 5.1.0.

*/ inline const ScaleDownBehavior& GetScaleDownBehavior() const{ return m_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 blacklists * 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 version 4.1.0 and later, and is the default for versions of * Amazon EMR earlier than 5.1.0.

*/ inline bool ScaleDownBehaviorHasBeenSet() const { return m_scaleDownBehaviorHasBeenSet; } /** *

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 blacklists * 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 version 4.1.0 and later, and is the default for versions of * Amazon EMR earlier than 5.1.0.

*/ inline void SetScaleDownBehavior(const ScaleDownBehavior& value) { m_scaleDownBehaviorHasBeenSet = true; m_scaleDownBehavior = value; } /** *

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 blacklists * 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 version 4.1.0 and later, and is the default for versions of * Amazon EMR earlier than 5.1.0.

*/ inline void SetScaleDownBehavior(ScaleDownBehavior&& value) { m_scaleDownBehaviorHasBeenSet = true; m_scaleDownBehavior = std::move(value); } /** *

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 blacklists * 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 version 4.1.0 and later, and is the default for versions of * Amazon EMR earlier than 5.1.0.

*/ inline RunJobFlowRequest& WithScaleDownBehavior(const ScaleDownBehavior& value) { SetScaleDownBehavior(value); return *this;} /** *

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 blacklists * 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 version 4.1.0 and later, and is the default for versions of * Amazon EMR earlier than 5.1.0.

*/ inline RunJobFlowRequest& WithScaleDownBehavior(ScaleDownBehavior&& value) { SetScaleDownBehavior(std::move(value)); return *this;} /** *

Available only in Amazon EMR version 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 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 versions 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.

*/ inline const Aws::String& GetCustomAmiId() const{ return m_customAmiId; } /** *

Available only in Amazon EMR version 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 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 versions 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.

*/ inline bool CustomAmiIdHasBeenSet() const { return m_customAmiIdHasBeenSet; } /** *

Available only in Amazon EMR version 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 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 versions 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.

*/ inline void SetCustomAmiId(const Aws::String& value) { m_customAmiIdHasBeenSet = true; m_customAmiId = value; } /** *

Available only in Amazon EMR version 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 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 versions 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.

*/ inline void SetCustomAmiId(Aws::String&& value) { m_customAmiIdHasBeenSet = true; m_customAmiId = std::move(value); } /** *

Available only in Amazon EMR version 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 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 versions 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.

*/ inline void SetCustomAmiId(const char* value) { m_customAmiIdHasBeenSet = true; m_customAmiId.assign(value); } /** *

Available only in Amazon EMR version 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 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 versions 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.

*/ inline RunJobFlowRequest& WithCustomAmiId(const Aws::String& value) { SetCustomAmiId(value); return *this;} /** *

Available only in Amazon EMR version 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 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 versions 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.

*/ inline RunJobFlowRequest& WithCustomAmiId(Aws::String&& value) { SetCustomAmiId(std::move(value)); return *this;} /** *

Available only in Amazon EMR version 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 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 versions 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.

*/ inline RunJobFlowRequest& WithCustomAmiId(const char* value) { SetCustomAmiId(value); return *this;} /** *

The size, in GiB, of the EBS root device volume of the Linux AMI that is used * for each EC2 instance. Available in Amazon EMR version 4.x and later.

*/ inline int GetEbsRootVolumeSize() const{ return m_ebsRootVolumeSize; } /** *

The size, in GiB, of the EBS root device volume of the Linux AMI that is used * for each EC2 instance. Available in Amazon EMR version 4.x and later.

*/ inline bool EbsRootVolumeSizeHasBeenSet() const { return m_ebsRootVolumeSizeHasBeenSet; } /** *

The size, in GiB, of the EBS root device volume of the Linux AMI that is used * for each EC2 instance. Available in Amazon EMR version 4.x and later.

*/ inline void SetEbsRootVolumeSize(int value) { m_ebsRootVolumeSizeHasBeenSet = true; m_ebsRootVolumeSize = value; } /** *

The size, in GiB, of the EBS root device volume of the Linux AMI that is used * for each EC2 instance. Available in Amazon EMR version 4.x and later.

*/ inline RunJobFlowRequest& WithEbsRootVolumeSize(int value) { SetEbsRootVolumeSize(value); return *this;} /** *

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.

*/ inline const RepoUpgradeOnBoot& GetRepoUpgradeOnBoot() const{ return m_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.

*/ inline bool RepoUpgradeOnBootHasBeenSet() const { return m_repoUpgradeOnBootHasBeenSet; } /** *

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.

*/ inline void SetRepoUpgradeOnBoot(const RepoUpgradeOnBoot& value) { m_repoUpgradeOnBootHasBeenSet = true; m_repoUpgradeOnBoot = value; } /** *

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.

*/ inline void SetRepoUpgradeOnBoot(RepoUpgradeOnBoot&& value) { m_repoUpgradeOnBootHasBeenSet = true; m_repoUpgradeOnBoot = std::move(value); } /** *

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.

*/ inline RunJobFlowRequest& WithRepoUpgradeOnBoot(const RepoUpgradeOnBoot& value) { SetRepoUpgradeOnBoot(value); return *this;} /** *

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.

*/ inline RunJobFlowRequest& WithRepoUpgradeOnBoot(RepoUpgradeOnBoot&& value) { SetRepoUpgradeOnBoot(std::move(value)); return *this;} /** *

Attributes for Kerberos configuration when Kerberos authentication is enabled * using a security configuration. For more information see Use * Kerberos Authentication in the EMR Management Guide.

*/ inline const KerberosAttributes& GetKerberosAttributes() const{ return m_kerberosAttributes; } /** *

Attributes for Kerberos configuration when Kerberos authentication is enabled * using a security configuration. For more information see Use * Kerberos Authentication in the EMR Management Guide.

*/ inline bool KerberosAttributesHasBeenSet() const { return m_kerberosAttributesHasBeenSet; } /** *

Attributes for Kerberos configuration when Kerberos authentication is enabled * using a security configuration. For more information see Use * Kerberos Authentication in the EMR Management Guide.

*/ inline void SetKerberosAttributes(const KerberosAttributes& value) { m_kerberosAttributesHasBeenSet = true; m_kerberosAttributes = value; } /** *

Attributes for Kerberos configuration when Kerberos authentication is enabled * using a security configuration. For more information see Use * Kerberos Authentication in the EMR Management Guide.

*/ inline void SetKerberosAttributes(KerberosAttributes&& value) { m_kerberosAttributesHasBeenSet = true; m_kerberosAttributes = std::move(value); } /** *

Attributes for Kerberos configuration when Kerberos authentication is enabled * using a security configuration. For more information see Use * Kerberos Authentication in the EMR Management Guide.

*/ inline RunJobFlowRequest& WithKerberosAttributes(const KerberosAttributes& value) { SetKerberosAttributes(value); return *this;} /** *

Attributes for Kerberos configuration when Kerberos authentication is enabled * using a security configuration. For more information see Use * Kerberos Authentication in the EMR Management Guide.

*/ inline RunJobFlowRequest& WithKerberosAttributes(KerberosAttributes&& value) { SetKerberosAttributes(std::move(value)); return *this;} /** *

Specifies the number of steps that can be executed concurrently. The default * value is 1. The maximum value is 256.

*/ inline int GetStepConcurrencyLevel() const{ return m_stepConcurrencyLevel; } /** *

Specifies the number of steps that can be executed concurrently. The default * value is 1. The maximum value is 256.

*/ inline bool StepConcurrencyLevelHasBeenSet() const { return m_stepConcurrencyLevelHasBeenSet; } /** *

Specifies the number of steps that can be executed concurrently. The default * value is 1. The maximum value is 256.

*/ inline void SetStepConcurrencyLevel(int value) { m_stepConcurrencyLevelHasBeenSet = true; m_stepConcurrencyLevel = value; } /** *

Specifies the number of steps that can be executed concurrently. The default * value is 1. The maximum value is 256.

*/ inline RunJobFlowRequest& WithStepConcurrencyLevel(int value) { SetStepConcurrencyLevel(value); return *this;} /** *

The specified managed scaling policy for an Amazon EMR cluster.

*/ inline const ManagedScalingPolicy& GetManagedScalingPolicy() const{ return m_managedScalingPolicy; } /** *

The specified managed scaling policy for an Amazon EMR cluster.

*/ inline bool ManagedScalingPolicyHasBeenSet() const { return m_managedScalingPolicyHasBeenSet; } /** *

The specified managed scaling policy for an Amazon EMR cluster.

*/ inline void SetManagedScalingPolicy(const ManagedScalingPolicy& value) { m_managedScalingPolicyHasBeenSet = true; m_managedScalingPolicy = value; } /** *

The specified managed scaling policy for an Amazon EMR cluster.

*/ inline void SetManagedScalingPolicy(ManagedScalingPolicy&& value) { m_managedScalingPolicyHasBeenSet = true; m_managedScalingPolicy = std::move(value); } /** *

The specified managed scaling policy for an Amazon EMR cluster.

*/ inline RunJobFlowRequest& WithManagedScalingPolicy(const ManagedScalingPolicy& value) { SetManagedScalingPolicy(value); return *this;} /** *

The specified managed scaling policy for an Amazon EMR cluster.

*/ inline RunJobFlowRequest& WithManagedScalingPolicy(ManagedScalingPolicy&& value) { SetManagedScalingPolicy(std::move(value)); return *this;} private: Aws::String m_name; bool m_nameHasBeenSet; Aws::String m_logUri; bool m_logUriHasBeenSet; Aws::String m_logEncryptionKmsKeyId; bool m_logEncryptionKmsKeyIdHasBeenSet; Aws::String m_additionalInfo; bool m_additionalInfoHasBeenSet; Aws::String m_amiVersion; bool m_amiVersionHasBeenSet; Aws::String m_releaseLabel; bool m_releaseLabelHasBeenSet; JobFlowInstancesConfig m_instances; bool m_instancesHasBeenSet; Aws::Vector m_steps; bool m_stepsHasBeenSet; Aws::Vector m_bootstrapActions; bool m_bootstrapActionsHasBeenSet; Aws::Vector m_supportedProducts; bool m_supportedProductsHasBeenSet; Aws::Vector m_newSupportedProducts; bool m_newSupportedProductsHasBeenSet; Aws::Vector m_applications; bool m_applicationsHasBeenSet; Aws::Vector m_configurations; bool m_configurationsHasBeenSet; bool m_visibleToAllUsers; bool m_visibleToAllUsersHasBeenSet; Aws::String m_jobFlowRole; bool m_jobFlowRoleHasBeenSet; Aws::String m_serviceRole; bool m_serviceRoleHasBeenSet; Aws::Vector m_tags; bool m_tagsHasBeenSet; Aws::String m_securityConfiguration; bool m_securityConfigurationHasBeenSet; Aws::String m_autoScalingRole; bool m_autoScalingRoleHasBeenSet; ScaleDownBehavior m_scaleDownBehavior; bool m_scaleDownBehaviorHasBeenSet; Aws::String m_customAmiId; bool m_customAmiIdHasBeenSet; int m_ebsRootVolumeSize; bool m_ebsRootVolumeSizeHasBeenSet; RepoUpgradeOnBoot m_repoUpgradeOnBoot; bool m_repoUpgradeOnBootHasBeenSet; KerberosAttributes m_kerberosAttributes; bool m_kerberosAttributesHasBeenSet; int m_stepConcurrencyLevel; bool m_stepConcurrencyLevelHasBeenSet; ManagedScalingPolicy m_managedScalingPolicy; bool m_managedScalingPolicyHasBeenSet; }; } // namespace Model } // namespace EMR } // namespace Aws