UNPKG

aws-cdk-lib

Version:

Version 2 of the AWS Cloud Development Kit library

1,344 lines (1,343 loc) 47.9 kB
import { Construct } from 'constructs'; import * as iam from '../../../aws-iam'; import * as sfn from '../../../aws-stepfunctions'; import * as cdk from '../../../core'; interface EmrCreateClusterOptions { /** * A specification of the number and type of Amazon EC2 instances. */ readonly instances: EmrCreateCluster.InstancesConfigProperty; /** * Also called instance profile and EC2 role. An IAM role for an EMR cluster. The EC2 instances of the cluster assume this role. * * This attribute has been renamed from jobFlowRole to clusterRole to align with other ERM/StepFunction integration parameters. * * @default - * A Role will be created */ readonly clusterRole?: iam.IRole; /** * The Name of the Cluster */ readonly name: string; /** * The IAM role that will be assumed by the Amazon EMR service to access AWS resources on your behalf. * * @default - A role will be created that Amazon EMR service can assume. */ readonly serviceRole?: iam.IRole; /** * A JSON string for selecting additional features. * * @default - None */ readonly additionalInfo?: string; /** * A case-insensitive list of applications for Amazon EMR to install and configure when launching the cluster. * * @default - EMR selected default */ readonly applications?: EmrCreateCluster.ApplicationConfigProperty[]; /** * An IAM role for automatic scaling policies. * * @default - A role will be created. */ readonly autoScalingRole?: iam.IRole; /** * A list of bootstrap actions to run before Hadoop starts on the cluster nodes. * * @default - None */ readonly bootstrapActions?: EmrCreateCluster.BootstrapActionConfigProperty[]; /** * The list of configurations supplied for the EMR cluster you are creating. * * @default - None */ readonly configurations?: EmrCreateCluster.ConfigurationProperty[]; /** * The ID of a custom Amazon EBS-backed Linux AMI. * * @default - None */ readonly customAmiId?: string; /** * The size of the EBS root device volume of the Linux AMI that is used for each EC2 instance. * * @default - EMR selected default */ readonly ebsRootVolumeSize?: cdk.Size; /** * Attributes for Kerberos configuration when Kerberos authentication is enabled using a security configuration. * * @default - None */ readonly kerberosAttributes?: EmrCreateCluster.KerberosAttributesProperty; /** * The location in Amazon S3 to write the log files of the job flow. * * @default - None */ readonly logUri?: string; /** * The Amazon EMR release label, which determines the version of open-source application packages installed on the cluster. * * @default - EMR selected default */ readonly releaseLabel?: string; /** * Specifies the way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized. * * @default - EMR selected default */ readonly scaleDownBehavior?: EmrCreateCluster.EmrClusterScaleDownBehavior; /** * The name of a security configuration to apply to the cluster. * * @default - None */ readonly securityConfiguration?: string; /** * Specifies the step concurrency level to allow multiple steps to run in parallel * * Requires EMR release label 5.28.0 or above. * Must be in range [1, 256]. * * @default 1 - no step concurrency allowed */ readonly stepConcurrencyLevel?: number; /** * A list of tags to associate with a cluster and propagate to Amazon EC2 instances. * * @default - None */ readonly tags?: { [key: string]: string; }; /** * 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. * * @default true */ readonly visibleToAllUsers?: boolean; /** * The amount of idle time after which the cluster automatically terminates. * * You can specify a minimum of 60 seconds and a maximum of 604800 seconds (seven days). * * @default - No timeout */ readonly autoTerminationPolicyIdleTimeout?: cdk.Duration; } /** * Properties for calling an AWS service's API action using JSONPath from your * state machine across regions. */ export interface EmrCreateClusterJsonPathProps extends sfn.TaskStateJsonPathBaseProps, EmrCreateClusterOptions { } /** * Properties for calling an AWS service's API action using JSONata from your * state machine across regions. */ export interface EmrCreateClusterJsonataProps extends sfn.TaskStateJsonataBaseProps, EmrCreateClusterOptions { } /** * Properties for calling an AWS service's API action from your * state machine across regions. */ export interface EmrCreateClusterProps extends sfn.TaskStateBaseProps, EmrCreateClusterOptions { } /** * A Step Functions Task to create an EMR Cluster. * * The ClusterConfiguration is defined as Parameters in the state machine definition. * * OUTPUT: the ClusterId. * */ export declare class EmrCreateCluster extends sfn.TaskStateBase { private readonly props; /** * A Step Functions task using JSONPath to create an EMR Cluster. * * This task creates a Lambda function to call cross-region AWS API and invokes it. */ static jsonPath(scope: Construct, id: string, props: EmrCreateClusterJsonPathProps): EmrCreateCluster; /** * A Step Functions task using JSONata to create an EMR Cluster. * * This task creates a Lambda function to call cross-region AWS API and invokes it. */ static jsonata(scope: Construct, id: string, props: EmrCreateClusterJsonataProps): EmrCreateCluster; private static readonly SUPPORTED_INTEGRATION_PATTERNS; protected readonly taskPolicies?: iam.PolicyStatement[]; protected readonly taskMetrics?: sfn.TaskMetricsConfig; private readonly visibleToAllUsers; private readonly integrationPattern; private _serviceRole; private _clusterRole; private _autoScalingRole?; private _baseTags?; constructor(scope: Construct, id: string, props: EmrCreateClusterProps); /** * The service role for the EMR Cluster. * * Only available after task has been added to a state machine. */ get serviceRole(): iam.IRole; /** * The instance role for the EMR Cluster. * * Only available after task has been added to a state machine. */ get clusterRole(): iam.IRole; /** * The autoscaling role for the EMR Cluster. * * Only available after task has been added to a state machine. */ get autoScalingRole(): iam.IRole; /** * @internal */ protected _renderTask(topLevelQueryLanguage?: sfn.QueryLanguage): any; private renderTags; /** * This generates the PolicyStatements required by the Task to call CreateCluster. */ private createPolicyStatements; /** * Generate the Role used by the EMR Service */ private createServiceRole; /** * Generate the Role and Instance Profile used by the EC2 instances * * Data access permissions will need to be updated by the user */ private createClusterRole; /** * Generate the Role used to AutoScale the Cluster */ private createAutoScalingRole; /** * Validates the release label string is in proper format. * Release labels are in the form `emr-x.x.x`. For example, `emr-5.33.0`. * * @see https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-release-components.html */ private validateReleaseLabel; } export declare namespace EmrCreateCluster { /** * The Cluster ScaleDownBehavior specifies the way that individual Amazon EC2 instances terminate when an automatic scale-in activity * occurs or an instance group is resized. * * @see https://docs.aws.amazon.com/emr/latest/APIReference/API_RunJobFlow.html#EMR-RunJobFlow-request-ScaleDownBehavior */ enum EmrClusterScaleDownBehavior { /** * 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_INSTANCE_HOUR = "TERMINATE_AT_INSTANCE_HOUR", /** * 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. */ TERMINATE_AT_TASK_COMPLETION = "TERMINATE_AT_TASK_COMPLETION" } /** * Instance Role Types * */ enum InstanceRoleType { /** * Master Node */ MASTER = "MASTER", /** * Core Node */ CORE = "CORE", /** * Task Node */ TASK = "TASK" } /** * EBS Volume Types * @see https://docs.aws.amazon.com/emr/latest/APIReference/API_VolumeSpecification.html#EMR-Type-VolumeSpecification-VolumeType * */ enum EbsBlockDeviceVolumeType { /** * gp3 Volume Type */ GP3 = "gp3", /** * gp2 Volume Type */ GP2 = "gp2", /** * io1 Volume Type */ IO1 = "io1", /** * st1 Volume Type */ ST1 = "st1", /** * sc1 Volume Type */ SC1 = "sc1", /** * Standard Volume Type */ STANDARD = "standard" } /** * EBS volume specifications such as volume type, IOPS, and size (GiB) that will be requested for the EBS volume attached * to an EC2 instance in the cluster. * * @see https://docs.aws.amazon.com/emr/latest/APIReference/API_VolumeSpecification.html * */ interface VolumeSpecificationProperty { /** * The number of I/O operations per second (IOPS) that the volume supports. * * @default - EMR selected default */ readonly iops?: number; /** * The volume size. If the volume type is EBS-optimized, the minimum value is 10GiB. * Maximum size is 1TiB */ readonly volumeSize: cdk.Size; /** * The volume type. Volume types supported are gp2, io1, standard. */ readonly volumeType: EbsBlockDeviceVolumeType; } /** * Configuration of requested EBS block device associated with the instance group with count of volumes that will be * associated to every instance. * * @see https://docs.aws.amazon.com/emr/latest/APIReference/API_EbsBlockDeviceConfig.html * */ interface EbsBlockDeviceConfigProperty { /** * EBS volume specifications such as volume type, IOPS, and size (GiB) that will be requested for the EBS volume attached to an EC2 * instance in the cluster. */ readonly volumeSpecification: VolumeSpecificationProperty; /** * Number of EBS volumes with a specific volume configuration that will be associated with every instance in the instance group * * @default EMR selected default */ readonly volumesPerInstance?: number; } /** * The Amazon EBS configuration of a cluster instance. * * @see https://docs.aws.amazon.com/emr/latest/APIReference/API_EbsConfiguration.html * */ interface EbsConfigurationProperty { /** * An array of Amazon EBS volume specifications attached to a cluster instance. * * @default - None */ readonly ebsBlockDeviceConfigs?: EbsBlockDeviceConfigProperty[]; /** * Indicates whether an Amazon EBS volume is EBS-optimized. * * @default - EMR selected default */ readonly ebsOptimized?: boolean; } /** * An instance type configuration for each instance type in an instance fleet, which determines the EC2 instances Amazon EMR attempts to * provision to fulfill On-Demand and Spot target capacities. * * @see https://docs.aws.amazon.com/emr/latest/APIReference/API_InstanceTypeConfig.html * */ interface InstanceTypeConfigProperty { /** * The bid price for each EC2 Spot instance type as defined by InstanceType. Expressed in USD. * * Cannot specify both `bidPrice` and `bidPriceAsPercentageOfOnDemandPrice`. * * @default - None */ readonly bidPrice?: string; /** * The bid price, as a percentage of On-Demand price. * * Cannot specify both `bidPrice` and `bidPriceAsPercentageOfOnDemandPrice`. * * @default - None */ readonly bidPriceAsPercentageOfOnDemandPrice?: number; /** * A configuration classification that applies when provisioning cluster instances, which can include configurations for applications * and software that run on the cluster. * * @default - None */ readonly configurations?: ConfigurationProperty[]; /** * The configuration of Amazon Elastic Block Storage (EBS) attached to each instance as defined by InstanceType. * * @default - None */ readonly ebsConfiguration?: EbsConfigurationProperty; /** * An EC2 instance type */ readonly instanceType: string; /** * The number of units that a provisioned instance of this type provides toward fulfilling the target capacities defined * in the InstanceFleetConfig. * * @default - None */ readonly weightedCapacity?: number; } /** * On-Demand Allocation Strategies * * Specifies the strategy to use in launching On-Demand instance fleets. Currently, the only option is "lowest-price" (the default), which launches the lowest price first. * * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-instancefleetconfig-ondemandprovisioningspecification.html * */ enum OnDemandAllocationStrategy { /** * Lowest-price, which launches instances from the lowest priced pool that has available capacity. */ LOWEST_PRICE = "lowest-price" } /** * The launch specification for On-Demand Instances in the instance fleet, which determines the allocation strategy. * * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-instancefleetconfig-ondemandprovisioningspecification.html * */ interface OnDemandProvisioningSpecificationProperty { /** * Specifies the strategy to use in launching On-Demand instance fleets. * * Currently, the only option is lowest-price (the default), which launches the lowest price first. */ readonly allocationStrategy: OnDemandAllocationStrategy; } /** * Spot Timeout Actions * */ enum SpotTimeoutAction { /** * SWITCH_TO_ON_DEMAND */ SWITCH_TO_ON_DEMAND = "SWITCH_TO_ON_DEMAND", /** * TERMINATE_CLUSTER */ TERMINATE_CLUSTER = "TERMINATE_CLUSTER" } /** * Spot Allocation Strategies * * Specifies the strategy to use in launching Spot Instance fleets. For example, "capacity-optimized" launches instances from Spot Instance pools with optimal capacity for the number of instances that are launching. * * @see https://docs.aws.amazon.com/emr/latest/APIReference/API_SpotProvisioningSpecification.html * */ enum SpotAllocationStrategy { /** * Capacity-optimized, which launches instances from Spot Instance pools with optimal capacity for the number of instances that are launching. */ CAPACITY_OPTIMIZED = "capacity-optimized", /** * Price-capacity-optimized, which launches instances from Spot Instance pools with the highest capacity availability for the number of instances that are launching. * * Recommended. */ PRICE_CAPACITY_OPTIMIZED = "price-capacity-optimized", /** * Lowest-price, which launches instances from the lowest priced pool that has available capacity. */ LOWEST_PRICE = "lowest-price", /** * Diversified, which launches instances across all Spot capacity pools. */ DIVERSIFIED = "diversified" } /** * The launch specification for Spot instances in the instance fleet, which determines the defined duration and provisioning timeout behavior. * * @see https://docs.aws.amazon.com/emr/latest/APIReference/API_SpotProvisioningSpecification.html * */ interface SpotProvisioningSpecificationProperty { /** * Specifies the strategy to use in launching Spot Instance fleets. * * @default - No allocation strategy, i.e. spot instance type will be chosen based on current price only */ readonly allocationStrategy?: SpotAllocationStrategy; /** * The defined duration for Spot instances (also known as Spot blocks) in minutes. * * @default - No blockDurationMinutes * * @deprecated - Spot Instances with a defined duration (also known as Spot blocks) are no longer available to new customers from July 1, 2021. * For customers who have previously used the feature, we will continue to support Spot Instances with a defined duration until December 31, 2022. */ readonly blockDurationMinutes?: number; /** * The action to take when TargetSpotCapacity has not been fulfilled when the TimeoutDurationMinutes has expired */ readonly timeoutAction: SpotTimeoutAction; /** * The spot provisioning timeout period in minutes. * * The value must be between 5 and 1440 minutes. * * You must specify one of `timeout` and `timeoutDurationMinutes`. * * @default - The value in `timeout` is used * * @deprecated - Use `timeout`. */ readonly timeoutDurationMinutes?: number; /** * The spot provisioning timeout period in minutes. * * The value must be between 5 and 1440 minutes. * * You must specify one of `timeout` and `timeoutDurationMinutes`. * * @default - The value in `timeoutDurationMinutes` is used */ readonly timeout?: cdk.Duration; } /** * The launch specification for On-Demand and Spot instances in the fleet, which determines the defined duration and provisioning timeout behavior, and allocation strategy. * * The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x versions. * On-Demand and Spot instance allocation strategies are available in Amazon EMR releases 5.12.1 and later. * * @see https://docs.aws.amazon.com/emr/latest/APIReference/API_InstanceFleetProvisioningSpecifications.html * */ interface InstanceFleetProvisioningSpecificationsProperty { /** * The launch specification for On-Demand Instances in the instance fleet, which determines the allocation strategy. * * The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x versions. * On-Demand Instances allocation strategy is available in Amazon EMR releases 5.12.1 and later. * * @default - no on-demand specification */ readonly onDemandSpecification?: OnDemandProvisioningSpecificationProperty; /** * The launch specification for Spot instances in the fleet, which determines the defined duration and provisioning timeout behavior. * * @default - no spot specification */ readonly spotSpecification?: SpotProvisioningSpecificationProperty; } /** * The configuration that defines an instance fleet. * * @see https://docs.aws.amazon.com/emr/latest/APIReference/API_InstanceFleetConfig.html * */ interface InstanceFleetConfigProperty { /** * The node type that the instance fleet hosts. Valid values are MASTER,CORE,and TASK. */ readonly instanceFleetType: InstanceRoleType; /** * The instance type configurations that define the EC2 instances in the instance fleet. * * @default No instanceTpeConfigs */ readonly instanceTypeConfigs?: InstanceTypeConfigProperty[]; /** * The launch specification for the instance fleet. * * @default No launchSpecifications */ readonly launchSpecifications?: InstanceFleetProvisioningSpecificationsProperty; /** * The friendly name of the instance fleet. * * @default No name */ readonly name?: string; /** * The target capacity of On-Demand units for the instance fleet, which determines how many On-Demand instances to provision. * * If not specified or set to 0, only Spot Instances are provisioned for the instance fleet using `targetSpotCapacity`. * * At least one of `targetSpotCapacity` and `targetOnDemandCapacity` should be greater than 0. * For a master instance fleet, only one of `targetSpotCapacity` and `targetOnDemandCapacity` can be specified, and its value * must be 1. * * @default No targetOnDemandCapacity */ readonly targetOnDemandCapacity?: number; /** * The target capacity of Spot units for the instance fleet, which determines how many Spot instances to provision * * If not specified or set to 0, only On-Demand Instances are provisioned for the instance fleet using `targetOnDemandCapacity`. * * At least one of `targetSpotCapacity` and `targetOnDemandCapacity` should be greater than 0. * For a master instance fleet, only one of `targetSpotCapacity` and `targetOnDemandCapacity` can be specified, and its value * must be 1. * * @default No targetSpotCapacity */ readonly targetSpotCapacity?: number; } /** * CloudWatch Alarm Comparison Operators * */ enum CloudWatchAlarmComparisonOperator { /** * GREATER_THAN_OR_EQUAL */ GREATER_THAN_OR_EQUAL = "GREATER_THAN_OR_EQUAL", /** * GREATER_THAN */ GREATER_THAN = "GREATER_THAN", /** * LESS_THAN */ LESS_THAN = "LESS_THAN", /** * LESS_THAN_OR_EQUAL */ LESS_THAN_OR_EQUAL = "LESS_THAN_OR_EQUAL" } /** * CloudWatch Alarm Statistics * */ enum CloudWatchAlarmStatistic { /** * SAMPLE_COUNT */ SAMPLE_COUNT = "SAMPLE_COUNT", /** * AVERAGE */ AVERAGE = "AVERAGE", /** * SUM */ SUM = "SUM", /** * MINIMUM */ MINIMUM = "MINIMUM", /** * MAXIMUM */ MAXIMUM = "MAXIMUM" } /** * CloudWatch Alarm Units * */ enum CloudWatchAlarmUnit { /** * NONE */ NONE = "NONE", /** * SECONDS */ SECONDS = "SECONDS", /** * MICRO_SECONDS */ MICRO_SECONDS = "MICRO_SECONDS", /** * MILLI_SECONDS */ MILLI_SECONDS = "MILLI_SECONDS", /** * BYTES */ BYTES = "BYTES", /** * KILO_BYTES */ KILO_BYTES = "KILO_BYTES", /** * MEGA_BYTES */ MEGA_BYTES = "MEGA_BYTES", /** * GIGA_BYTES */ GIGA_BYTES = "GIGA_BYTES", /** * TERA_BYTES */ TERA_BYTES = "TERA_BYTES", /** * BITS */ BITS = "BITS", /** * KILO_BITS */ KILO_BITS = "KILO_BITS", /** * MEGA_BITS */ MEGA_BITS = "MEGA_BITS", /** * GIGA_BITS */ GIGA_BITS = "GIGA_BITS", /** * TERA_BITS */ TERA_BITS = "TERA_BITS", /** * PERCENT */ PERCENT = "PERCENT", /** * COUNT */ COUNT = "COUNT", /** * BYTES_PER_SECOND */ BYTES_PER_SECOND = "BYTES_PER_SECOND", /** * KILO_BYTES_PER_SECOND */ KILO_BYTES_PER_SECOND = "KILO_BYTES_PER_SECOND", /** * MEGA_BYTES_PER_SECOND */ MEGA_BYTES_PER_SECOND = "MEGA_BYTES_PER_SECOND", /** * GIGA_BYTES_PER_SECOND */ GIGA_BYTES_PER_SECOND = "GIGA_BYTES_PER_SECOND", /** * TERA_BYTES_PER_SECOND */ TERA_BYTES_PER_SECOND = "TERA_BYTES_PER_SECOND", /** * BITS_PER_SECOND */ BITS_PER_SECOND = "BITS_PER_SECOND", /** * KILO_BITS_PER_SECOND */ KILO_BITS_PER_SECOND = "KILO_BITS_PER_SECOND", /** * MEGA_BITS_PER_SECOND */ MEGA_BITS_PER_SECOND = "MEGA_BITS_PER_SECOND", /** * GIGA_BITS_PER_SECOND */ GIGA_BITS_PER_SECOND = "GIGA_BITS_PER_SECOND", /** * TERA_BITS_PER_SECOND */ TERA_BITS_PER_SECOND = "TERA_BITS_PER_SECOND", /** * COUNT_PER_SECOND */ COUNT_PER_SECOND = "COUNT_PER_SECOND" } /** * A CloudWatch dimension, which is specified using a Key (known as a Name in CloudWatch), Value pair. By default, Amazon EMR uses * one dimension whose Key is JobFlowID and Value is a variable representing the cluster ID, which is ${emr.clusterId}. This enables * the rule to bootstrap when the cluster ID becomes available * * @see https://docs.aws.amazon.com/emr/latest/APIReference/API_MetricDimension.html * */ interface MetricDimensionProperty { /** * The dimension name */ readonly key: string; /** * The dimension value */ readonly value: string; } /** * The definition of a CloudWatch metric alarm, which determines when an automatic scaling activity is triggered. When the defined alarm conditions * are satisfied, scaling activity begins. * * @see https://docs.aws.amazon.com/emr/latest/APIReference/API_CloudWatchAlarmDefinition.html * */ interface CloudWatchAlarmDefinitionProperty { /** * Determines how the metric specified by MetricName is compared to the value specified by Threshold */ readonly comparisonOperator: CloudWatchAlarmComparisonOperator; /** * A CloudWatch metric dimension * * @default - No dimensions */ readonly dimensions?: MetricDimensionProperty[]; /** * The number of periods, in five-minute increments, during which the alarm condition must exist before the alarm triggers automatic * scaling activity. * * @default 1 */ readonly evaluationPeriods?: number; /** * The name of the CloudWatch metric that is watched to determine an alarm condition. */ readonly metricName: string; /** * The namespace for the CloudWatch metric. * * @default 'AWS/ElasticMapReduce' */ readonly namespace?: string; /** * The period, in seconds, over which the statistic is applied. EMR CloudWatch metrics are emitted every five minutes (300 seconds), so if * an EMR CloudWatch metric is specified, specify 300. */ readonly period: cdk.Duration; /** * The statistic to apply to the metric associated with the alarm. * * @default CloudWatchAlarmStatistic.AVERAGE */ readonly statistic?: CloudWatchAlarmStatistic; /** * The value against which the specified statistic is compared. * * @default - None */ readonly threshold?: number; /** * The unit of measure associated with the CloudWatch metric being watched. The value specified for Unit must correspond to the units * specified in the CloudWatch metric. * * @default CloudWatchAlarmUnit.NONE */ readonly unit?: CloudWatchAlarmUnit; } /** * The conditions that trigger an automatic scaling activity and the definition of a CloudWatch metric alarm. * When the defined alarm conditions are met along with other trigger parameters, scaling activity begins. * * @see https://docs.aws.amazon.com/emr/latest/APIReference/API_ScalingTrigger.html * */ interface ScalingTriggerProperty { /** * The definition of a CloudWatch metric alarm. When the defined alarm conditions are met along with other trigger parameters, * scaling activity begins. */ readonly cloudWatchAlarmDefinition: CloudWatchAlarmDefinitionProperty; } /** * EC2 Instance Market * */ enum InstanceMarket { /** * On Demand Instance */ ON_DEMAND = "ON_DEMAND", /** * Spot Instance */ SPOT = "SPOT" } /** * AutoScaling Adjustment Type * */ enum ScalingAdjustmentType { /** * CHANGE_IN_CAPACITY */ CHANGE_IN_CAPACITY = "CHANGE_IN_CAPACITY", /** * PERCENT_CHANGE_IN_CAPACITY */ PERCENT_CHANGE_IN_CAPACITY = "PERCENT_CHANGE_IN_CAPACITY", /** * EXACT_CAPACITY */ EXACT_CAPACITY = "EXACT_CAPACITY" } /** * An automatic scaling configuration, which describes how the policy adds or removes instances, the cooldown period, and the number of EC2 * instances that will be added each time the CloudWatch metric alarm condition is satisfied. * * @see https://docs.aws.amazon.com/emr/latest/APIReference/API_SimpleScalingPolicyConfiguration.html * */ interface SimpleScalingPolicyConfigurationProperty { /** * The way in which EC2 instances are added (if ScalingAdjustment is a positive number) or terminated (if ScalingAdjustment is a negative * number) each time the scaling activity is triggered. * * @default - None */ readonly adjustmentType?: ScalingAdjustmentType; /** * The amount of time, in seconds, after a scaling activity completes before any further trigger-related scaling activities can start. * * @default 0 */ readonly coolDown?: number; /** * The amount by which to scale in or scale out, based on the specified AdjustmentType. A positive value adds to the instance group's * EC2 instance count while a negative number removes instances. If AdjustmentType is set to EXACT_CAPACITY, the number should only be * a positive integer. */ readonly scalingAdjustment: number; } /** * The type of adjustment the automatic scaling activity makes when triggered, and the periodicity of the adjustment. * And an automatic scaling configuration, which describes how the policy adds or removes instances, the cooldown period, * and the number of EC2 instances that will be added each time the CloudWatch metric alarm condition is satisfied. * * @see https://docs.aws.amazon.com/emr/latest/APIReference/API_ScalingAction.html * */ interface ScalingActionProperty { /** * Not available for instance groups. Instance groups use the market type specified for the group. * * @default - EMR selected default */ readonly market?: InstanceMarket; /** * The type of adjustment the automatic scaling activity makes when triggered, and the periodicity of the adjustment. */ readonly simpleScalingPolicyConfiguration: SimpleScalingPolicyConfigurationProperty; } /** * A scale-in or scale-out rule that defines scaling activity, including the CloudWatch metric alarm that triggers activity, how EC2 * instances are added or removed, and the periodicity of adjustments. * * @see https://docs.aws.amazon.com/emr/latest/APIReference/API_ScalingRule.html * */ interface ScalingRuleProperty { /** * The conditions that trigger an automatic scaling activity. */ readonly action: ScalingActionProperty; /** * A friendly, more verbose description of the automatic scaling rule. * * @default - None */ readonly description?: string; /** * The name used to identify an automatic scaling rule. Rule names must be unique within a scaling policy. */ readonly name: string; /** * The CloudWatch alarm definition that determines when automatic scaling activity is triggered. */ readonly trigger: ScalingTriggerProperty; } /** * The upper and lower EC2 instance limits for an automatic scaling policy. Automatic scaling activities triggered by automatic scaling * rules will not cause an instance group to grow above or below these limits. * * @see https://docs.aws.amazon.com/emr/latest/APIReference/API_ScalingConstraints.html * */ interface ScalingConstraintsProperty { /** * The upper boundary of EC2 instances in an instance group beyond which scaling activities are not allowed to grow. Scale-out * activities will not add instances beyond this boundary. */ readonly maxCapacity: number; /** * The lower boundary of EC2 instances in an instance group below which scaling activities are not allowed to shrink. Scale-in * activities will not terminate instances below this boundary. */ readonly minCapacity: number; } /** * An automatic scaling policy for a core instance group or task instance group in an Amazon EMR cluster. * * @see https://docs.aws.amazon.com/emr/latest/APIReference/API_AutoScalingPolicy.html * */ interface AutoScalingPolicyProperty { /** * The upper and lower EC2 instance limits for an automatic scaling policy. Automatic scaling activity will not cause an instance * group to grow above or below these limits. */ readonly constraints: ScalingConstraintsProperty; /** * The scale-in and scale-out rules that comprise the automatic scaling policy. */ readonly rules: ScalingRuleProperty[]; } /** * Configuration defining a new instance group. * * @see https://docs.aws.amazon.com/emr/latest/APIReference/API_InstanceGroupConfig.html * */ interface InstanceGroupConfigProperty { /** * An automatic scaling policy for a core instance group or task instance group in an Amazon EMR cluster. * * @default - None */ readonly autoScalingPolicy?: AutoScalingPolicyProperty; /** * The bid price for each EC2 Spot instance type as defined by InstanceType. Expressed in USD. * * @default - None */ readonly bidPrice?: string; /** * The list of configurations supplied for an EMR cluster instance group. * * @default - None */ readonly configurations?: ConfigurationProperty[]; /** * EBS configurations that will be attached to each EC2 instance in the instance group. * * @default - None */ readonly ebsConfiguration?: EbsConfigurationProperty; /** * Target number of instances for the instance group. */ readonly instanceCount: number; /** * The role of the instance group in the cluster. */ readonly instanceRole: InstanceRoleType; /** * The EC2 instance type for all instances in the instance group. */ readonly instanceType: string; /** * Market type of the EC2 instances used to create a cluster node. * * @default - EMR selected default */ readonly market?: InstanceMarket; /** * Friendly name given to the instance group. * * @default - None */ readonly name?: string; } /** * The Amazon EC2 Availability Zone configuration of the cluster (job flow). * * @see https://docs.aws.amazon.com/emr/latest/APIReference/API_PlacementType.html * */ interface PlacementTypeProperty { /** * The Amazon EC2 Availability Zone for the cluster. AvailabilityZone is used for uniform instance groups, while AvailabilityZones * (plural) is used for instance fleets. * * @default - EMR selected default */ readonly availabilityZone?: string; /** * When multiple Availability Zones are specified, Amazon EMR evaluates them and launches instances in the optimal Availability Zone. * AvailabilityZones is used for instance fleets, while AvailabilityZone (singular) is used for uniform instance groups. * * @default - EMR selected default */ readonly availabilityZones?: string[]; } /** * A specification of the number and type of Amazon EC2 instances. * * See the RunJobFlow API for complete documentation on input parameters * * @see https://docs.aws.amazon.com/emr/latest/APIReference/API_JobFlowInstancesConfig.html * */ interface InstancesConfigProperty { /** * A list of additional Amazon EC2 security group IDs for the master node. * * @default - None */ readonly additionalMasterSecurityGroups?: string[]; /** * A list of additional Amazon EC2 security group IDs for the core and task nodes. * * @default - None */ readonly additionalSlaveSecurityGroups?: string[]; /** * The name of the EC2 key pair that can be used to ssh to the master node as the user called "hadoop." * * @default - None */ readonly ec2KeyName?: string; /** * 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. * * @default EMR selected default */ readonly ec2SubnetId?: string; /** * Applies to clusters that use the instance fleet configuration. When multiple EC2 subnet IDs are specified, Amazon EMR evaluates them and * launches instances in the optimal subnet. * * @default EMR selected default */ readonly ec2SubnetIds?: string[]; /** * The identifier of the Amazon EC2 security group for the master node. * * @default - None */ readonly emrManagedMasterSecurityGroup?: string; /** * The identifier of the Amazon EC2 security group for the core and task nodes. * * @default - None */ readonly emrManagedSlaveSecurityGroup?: string; /** * Applies only to Amazon EMR release versions earlier than 4.0. The Hadoop version for the cluster. * * @default - 0.18 if the AmiVersion parameter is not set. If AmiVersion is set, the version of Hadoop for that AMI version is used. */ readonly hadoopVersion?: string; /** * The number of EC2 instances in the cluster. * * @default 0 */ readonly instanceCount?: number; /** * Describes the EC2 instances and instance configurations for clusters that use the instance fleet configuration. * The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and later, excluding 5.0.x versions. * * @default - None */ readonly instanceFleets?: InstanceFleetConfigProperty[]; /** * Configuration for the instance groups in a cluster. * * @default - None */ readonly instanceGroups?: InstanceGroupConfigProperty[]; /** * The EC2 instance type of the master node. * * @default - None */ readonly masterInstanceType?: string; /** * The Availability Zone in which the cluster runs. * * @default - EMR selected default */ readonly placement?: PlacementTypeProperty; /** * The identifier of the Amazon EC2 security group for the Amazon EMR service to access clusters in VPC private subnets. * * @default - None */ readonly serviceAccessSecurityGroup?: string; /** * The EC2 instance type of the core and task nodes. * * @default - None */ readonly slaveInstanceType?: string; /** * 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. * * @default false */ readonly terminationProtected?: boolean; } /** * Properties for the EMR Cluster 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. * * See the RunJobFlow API for complete documentation on input parameters * * @see https://docs.aws.amazon.com/emr/latest/APIReference/API_Application.html * */ interface ApplicationConfigProperty { /** * This option is for advanced users only. This is meta information about third-party applications that third-party vendors use * for testing purposes. * * @default No additionalInfo */ readonly additionalInfo?: { [key: string]: string; }; /** * Arguments for Amazon EMR to pass to the application. * * @default No args */ readonly args?: string[]; /** * The name of the application. */ readonly name: string; /** * The version of the application. * * @default No version */ readonly version?: string; } /** * Configuration of the script to run during a bootstrap action. * * @see https://docs.aws.amazon.com/emr/latest/APIReference/API_ScriptBootstrapActionConfig.html * */ interface ScriptBootstrapActionConfigProperty { /** * Location of the script to run during a bootstrap action. Can be either a location in Amazon S3 or on a local file system. */ readonly path: string; /** * A list of command line arguments to pass to the bootstrap action script. * * @default No args */ readonly args?: string[]; } /** * Configuration of a bootstrap action. * * See the RunJobFlow API for complete documentation on input parameters * * @see https://docs.aws.amazon.com/emr/latest/APIReference/API_BootstrapActionConfig.html * */ interface BootstrapActionConfigProperty { /** * The name of the bootstrap action. */ readonly name: string; /** * The script run by the bootstrap action */ readonly scriptBootstrapAction: ScriptBootstrapActionConfigProperty; } /** * An optional configuration specification to be used when provisioning cluster instances, which can include configurations for * applications and software bundled with Amazon EMR. * * See the RunJobFlow API for complete documentation on input parameters * * @see https://docs.aws.amazon.com/emr/latest/APIReference/API_Configuration.html * */ interface ConfigurationProperty { /** * The classification within a configuration. * * @default No classification */ readonly classification?: string; /** * A set of properties specified within a configuration classification. * * @default No properties */ readonly properties?: { [key: string]: string; }; /** * A list of additional configurations to apply within a configuration object. * * @default No configurations */ readonly configurations?: ConfigurationProperty[]; } /** * Attributes for Kerberos configuration when Kerberos authentication is enabled using a security configuration. * * See the RunJobFlow API for complete documentation on input parameters * * @see https://docs.aws.amazon.com/emr/latest/APIReference/API_KerberosAttributes.html * */ interface KerberosAttributesProperty { /** * The Active Directory password for ADDomainJoinUser. * * @default No adDomainJoinPassword */ readonly adDomainJoinPassword?: string; /** * Required only when establishing a cross-realm trust with an Active Directory domain. A user with sufficient privileges to join * resources to the domain. * * @default No adDomainJoinUser */ readonly adDomainJoinUser?: string; /** * 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. * * @default No crossRealmTrustPrincipalPassword */ readonly crossRealmTrustPrincipalPassword?: string; /** * 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. * * @default No kdcAdminPassword */ readonly kdcAdminPassword?: string; /** * The name of the Kerberos realm to which all nodes in a cluster belong. For example, EC2.INTERNAL. */ readonly realm: string; } } export {};