aws-sdk-emr 1.0.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ # WARNING ABOUT GENERATED CODE
2
+ #
3
+ # This file is generated. See the contributing for info on making contributions:
4
+ # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
5
+ #
6
+ # WARNING ABOUT GENERATED CODE
7
+
@@ -0,0 +1,23 @@
1
+ # WARNING ABOUT GENERATED CODE
2
+ #
3
+ # This file is generated. See the contributing for info on making contributions:
4
+ # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
5
+ #
6
+ # WARNING ABOUT GENERATED CODE
7
+
8
+ module Aws
9
+ module EMR
10
+ module Errors
11
+
12
+ extend Aws::Errors::DynamicErrors
13
+
14
+ # Raised when calling #load or #data on a resource class that can not be
15
+ # loaded. This can happen when:
16
+ #
17
+ # * A resource class has identifiers, but no data attributes.
18
+ # * Resource data is only available when making an API call that
19
+ # enumerates all resources of that type.
20
+ class ResourceNotLoadable < RuntimeError; end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,25 @@
1
+ # WARNING ABOUT GENERATED CODE
2
+ #
3
+ # This file is generated. See the contributing for info on making contributions:
4
+ # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
5
+ #
6
+ # WARNING ABOUT GENERATED CODE
7
+
8
+ module Aws
9
+ module EMR
10
+ class Resource
11
+
12
+ # @param options ({})
13
+ # @option options [Client] :client
14
+ def initialize(options = {})
15
+ @client = options[:client] || Client.new(options)
16
+ end
17
+
18
+ # @return [Client]
19
+ def client
20
+ @client
21
+ end
22
+
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,3749 @@
1
+ # WARNING ABOUT GENERATED CODE
2
+ #
3
+ # This file is generated. See the contributing for info on making contributions:
4
+ # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
5
+ #
6
+ # WARNING ABOUT GENERATED CODE
7
+
8
+ module Aws
9
+ module EMR
10
+ module Types
11
+
12
+ # Input to an AddInstanceGroups call.
13
+ # @note When making an API call, pass AddInstanceGroupsInput
14
+ # data as a hash:
15
+ #
16
+ # {
17
+ # instance_groups: [ # required
18
+ # {
19
+ # name: "XmlStringMaxLen256",
20
+ # market: "ON_DEMAND", # accepts ON_DEMAND, SPOT
21
+ # instance_role: "MASTER", # required, accepts MASTER, CORE, TASK
22
+ # bid_price: "XmlStringMaxLen256",
23
+ # instance_type: "InstanceType", # required
24
+ # instance_count: 1, # required
25
+ # configurations: [
26
+ # {
27
+ # classification: "String",
28
+ # configurations: {
29
+ # # recursive ConfigurationList
30
+ # },
31
+ # properties: {
32
+ # "String" => "String",
33
+ # },
34
+ # },
35
+ # ],
36
+ # ebs_configuration: {
37
+ # ebs_block_device_configs: [
38
+ # {
39
+ # volume_specification: { # required
40
+ # volume_type: "String", # required
41
+ # iops: 1,
42
+ # size_in_gb: 1, # required
43
+ # },
44
+ # volumes_per_instance: 1,
45
+ # },
46
+ # ],
47
+ # ebs_optimized: false,
48
+ # },
49
+ # auto_scaling_policy: {
50
+ # constraints: { # required
51
+ # min_capacity: 1, # required
52
+ # max_capacity: 1, # required
53
+ # },
54
+ # rules: [ # required
55
+ # {
56
+ # name: "String", # required
57
+ # description: "String",
58
+ # action: { # required
59
+ # market: "ON_DEMAND", # accepts ON_DEMAND, SPOT
60
+ # simple_scaling_policy_configuration: { # required
61
+ # adjustment_type: "CHANGE_IN_CAPACITY", # accepts CHANGE_IN_CAPACITY, PERCENT_CHANGE_IN_CAPACITY, EXACT_CAPACITY
62
+ # scaling_adjustment: 1, # required
63
+ # cool_down: 1,
64
+ # },
65
+ # },
66
+ # trigger: { # required
67
+ # cloud_watch_alarm_definition: { # required
68
+ # comparison_operator: "GREATER_THAN_OR_EQUAL", # required, accepts GREATER_THAN_OR_EQUAL, GREATER_THAN, LESS_THAN, LESS_THAN_OR_EQUAL
69
+ # evaluation_periods: 1,
70
+ # metric_name: "String", # required
71
+ # namespace: "String",
72
+ # period: 1, # required
73
+ # statistic: "SAMPLE_COUNT", # accepts SAMPLE_COUNT, AVERAGE, SUM, MINIMUM, MAXIMUM
74
+ # threshold: 1.0, # required
75
+ # unit: "NONE", # accepts NONE, SECONDS, MICRO_SECONDS, MILLI_SECONDS, BYTES, KILO_BYTES, MEGA_BYTES, GIGA_BYTES, TERA_BYTES, BITS, KILO_BITS, MEGA_BITS, GIGA_BITS, TERA_BITS, PERCENT, COUNT, BYTES_PER_SECOND, KILO_BYTES_PER_SECOND, MEGA_BYTES_PER_SECOND, GIGA_BYTES_PER_SECOND, TERA_BYTES_PER_SECOND, BITS_PER_SECOND, KILO_BITS_PER_SECOND, MEGA_BITS_PER_SECOND, GIGA_BITS_PER_SECOND, TERA_BITS_PER_SECOND, COUNT_PER_SECOND
76
+ # dimensions: [
77
+ # {
78
+ # key: "String",
79
+ # value: "String",
80
+ # },
81
+ # ],
82
+ # },
83
+ # },
84
+ # },
85
+ # ],
86
+ # },
87
+ # },
88
+ # ],
89
+ # job_flow_id: "XmlStringMaxLen256", # required
90
+ # }
91
+ # @!attribute [rw] instance_groups
92
+ # Instance groups to add.
93
+ # @return [Array<Types::InstanceGroupConfig>]
94
+ #
95
+ # @!attribute [rw] job_flow_id
96
+ # Job flow in which to add the instance groups.
97
+ # @return [String]
98
+ class AddInstanceGroupsInput < Struct.new(
99
+ :instance_groups,
100
+ :job_flow_id)
101
+ include Aws::Structure
102
+ end
103
+
104
+ # Output from an AddInstanceGroups call.
105
+ # @!attribute [rw] job_flow_id
106
+ # The job flow ID in which the instance groups are added.
107
+ # @return [String]
108
+ #
109
+ # @!attribute [rw] instance_group_ids
110
+ # Instance group IDs of the newly created instance groups.
111
+ # @return [Array<String>]
112
+ class AddInstanceGroupsOutput < Struct.new(
113
+ :job_flow_id,
114
+ :instance_group_ids)
115
+ include Aws::Structure
116
+ end
117
+
118
+ # The input argument to the AddJobFlowSteps operation.
119
+ # @note When making an API call, pass AddJobFlowStepsInput
120
+ # data as a hash:
121
+ #
122
+ # {
123
+ # job_flow_id: "XmlStringMaxLen256", # required
124
+ # steps: [ # required
125
+ # {
126
+ # name: "XmlStringMaxLen256", # required
127
+ # action_on_failure: "TERMINATE_JOB_FLOW", # accepts TERMINATE_JOB_FLOW, TERMINATE_CLUSTER, CANCEL_AND_WAIT, CONTINUE
128
+ # hadoop_jar_step: { # required
129
+ # properties: [
130
+ # {
131
+ # key: "XmlString",
132
+ # value: "XmlString",
133
+ # },
134
+ # ],
135
+ # jar: "XmlString", # required
136
+ # main_class: "XmlString",
137
+ # args: ["XmlString"],
138
+ # },
139
+ # },
140
+ # ],
141
+ # }
142
+ # @!attribute [rw] job_flow_id
143
+ # A string that uniquely identifies the job flow. This identifier is
144
+ # returned by RunJobFlow and can also be obtained from ListClusters.
145
+ # @return [String]
146
+ #
147
+ # @!attribute [rw] steps
148
+ # A list of StepConfig to be executed by the job flow.
149
+ # @return [Array<Types::StepConfig>]
150
+ class AddJobFlowStepsInput < Struct.new(
151
+ :job_flow_id,
152
+ :steps)
153
+ include Aws::Structure
154
+ end
155
+
156
+ # The output for the AddJobFlowSteps operation.
157
+ # @!attribute [rw] step_ids
158
+ # The identifiers of the list of steps added to the job flow.
159
+ # @return [Array<String>]
160
+ class AddJobFlowStepsOutput < Struct.new(
161
+ :step_ids)
162
+ include Aws::Structure
163
+ end
164
+
165
+ # This input identifies a cluster and a list of tags to attach.
166
+ # @note When making an API call, pass AddTagsInput
167
+ # data as a hash:
168
+ #
169
+ # {
170
+ # resource_id: "ResourceId", # required
171
+ # tags: [ # required
172
+ # {
173
+ # key: "String",
174
+ # value: "String",
175
+ # },
176
+ # ],
177
+ # }
178
+ # @!attribute [rw] resource_id
179
+ # The Amazon EMR resource identifier to which tags will be added. This
180
+ # value must be a cluster identifier.
181
+ # @return [String]
182
+ #
183
+ # @!attribute [rw] tags
184
+ # A list of tags to associate with a cluster and propagate to EC2
185
+ # instances. Tags are user-defined key/value pairs that consist of a
186
+ # required key string with a maximum of 128 characters, and an
187
+ # optional value string with a maximum of 256 characters.
188
+ # @return [Array<Types::Tag>]
189
+ class AddTagsInput < Struct.new(
190
+ :resource_id,
191
+ :tags)
192
+ include Aws::Structure
193
+ end
194
+
195
+ # This output indicates the result of adding tags to a resource.
196
+ class AddTagsOutput < Aws::EmptyStructure; end
197
+
198
+ # An application is any Amazon or third-party software that you can add
199
+ # to the cluster. This structure contains a list of strings that
200
+ # indicates the software to use with the cluster and accepts a user
201
+ # argument list. Amazon EMR accepts and forwards the argument list to
202
+ # the corresponding installation script as bootstrap action argument.
203
+ # For more information, see [Launch a Job Flow on the MapR Distribution
204
+ # for Hadoop][1]. Currently supported values are:
205
+ #
206
+ # * "mapr-m3" - launch the job flow using MapR M3 Edition.
207
+ #
208
+ # * "mapr-m5" - launch the job flow using MapR M5 Edition.
209
+ #
210
+ # * "mapr" with the user arguments specifying "--edition,m3" or
211
+ # "--edition,m5" - launch the job flow using MapR M3 or M5 Edition,
212
+ # respectively.
213
+ #
214
+ # <note markdown="1"> In Amazon EMR releases 4.0 and greater, the only accepted parameter is
215
+ # the application name. To pass arguments to applications, you supply a
216
+ # configuration for each application.
217
+ #
218
+ # </note>
219
+ #
220
+ #
221
+ #
222
+ # [1]: http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-mapr.html
223
+ # @note When making an API call, pass Application
224
+ # data as a hash:
225
+ #
226
+ # {
227
+ # name: "String",
228
+ # version: "String",
229
+ # args: ["String"],
230
+ # additional_info: {
231
+ # "String" => "String",
232
+ # },
233
+ # }
234
+ # @!attribute [rw] name
235
+ # The name of the application.
236
+ # @return [String]
237
+ #
238
+ # @!attribute [rw] version
239
+ # The version of the application.
240
+ # @return [String]
241
+ #
242
+ # @!attribute [rw] args
243
+ # Arguments for Amazon EMR to pass to the application.
244
+ # @return [Array<String>]
245
+ #
246
+ # @!attribute [rw] additional_info
247
+ # This option is for advanced users only. This is meta information
248
+ # about third-party applications that third-party vendors use for
249
+ # testing purposes.
250
+ # @return [Hash<String,String>]
251
+ class Application < Struct.new(
252
+ :name,
253
+ :version,
254
+ :args,
255
+ :additional_info)
256
+ include Aws::Structure
257
+ end
258
+
259
+ # An automatic scaling policy for a core instance group or task instance
260
+ # group in an Amazon EMR cluster. An automatic scaling policy defines
261
+ # how an instance group dynamically adds and terminates EC2 instances in
262
+ # response to the value of a CloudWatch metric. See
263
+ # PutAutoScalingPolicy.
264
+ # @note When making an API call, pass AutoScalingPolicy
265
+ # data as a hash:
266
+ #
267
+ # {
268
+ # constraints: { # required
269
+ # min_capacity: 1, # required
270
+ # max_capacity: 1, # required
271
+ # },
272
+ # rules: [ # required
273
+ # {
274
+ # name: "String", # required
275
+ # description: "String",
276
+ # action: { # required
277
+ # market: "ON_DEMAND", # accepts ON_DEMAND, SPOT
278
+ # simple_scaling_policy_configuration: { # required
279
+ # adjustment_type: "CHANGE_IN_CAPACITY", # accepts CHANGE_IN_CAPACITY, PERCENT_CHANGE_IN_CAPACITY, EXACT_CAPACITY
280
+ # scaling_adjustment: 1, # required
281
+ # cool_down: 1,
282
+ # },
283
+ # },
284
+ # trigger: { # required
285
+ # cloud_watch_alarm_definition: { # required
286
+ # comparison_operator: "GREATER_THAN_OR_EQUAL", # required, accepts GREATER_THAN_OR_EQUAL, GREATER_THAN, LESS_THAN, LESS_THAN_OR_EQUAL
287
+ # evaluation_periods: 1,
288
+ # metric_name: "String", # required
289
+ # namespace: "String",
290
+ # period: 1, # required
291
+ # statistic: "SAMPLE_COUNT", # accepts SAMPLE_COUNT, AVERAGE, SUM, MINIMUM, MAXIMUM
292
+ # threshold: 1.0, # required
293
+ # unit: "NONE", # accepts NONE, SECONDS, MICRO_SECONDS, MILLI_SECONDS, BYTES, KILO_BYTES, MEGA_BYTES, GIGA_BYTES, TERA_BYTES, BITS, KILO_BITS, MEGA_BITS, GIGA_BITS, TERA_BITS, PERCENT, COUNT, BYTES_PER_SECOND, KILO_BYTES_PER_SECOND, MEGA_BYTES_PER_SECOND, GIGA_BYTES_PER_SECOND, TERA_BYTES_PER_SECOND, BITS_PER_SECOND, KILO_BITS_PER_SECOND, MEGA_BITS_PER_SECOND, GIGA_BITS_PER_SECOND, TERA_BITS_PER_SECOND, COUNT_PER_SECOND
294
+ # dimensions: [
295
+ # {
296
+ # key: "String",
297
+ # value: "String",
298
+ # },
299
+ # ],
300
+ # },
301
+ # },
302
+ # },
303
+ # ],
304
+ # }
305
+ # @!attribute [rw] constraints
306
+ # The upper and lower EC2 instance limits for an automatic scaling
307
+ # policy. Automatic scaling activity will not cause an instance group
308
+ # to grow above or below these limits.
309
+ # @return [Types::ScalingConstraints]
310
+ #
311
+ # @!attribute [rw] rules
312
+ # The scale-in and scale-out rules that comprise the automatic scaling
313
+ # policy.
314
+ # @return [Array<Types::ScalingRule>]
315
+ class AutoScalingPolicy < Struct.new(
316
+ :constraints,
317
+ :rules)
318
+ include Aws::Structure
319
+ end
320
+
321
+ # An automatic scaling policy for a core instance group or task instance
322
+ # group in an Amazon EMR cluster. The automatic scaling policy defines
323
+ # how an instance group dynamically adds and terminates EC2 instances in
324
+ # response to the value of a CloudWatch metric. See
325
+ # PutAutoScalingPolicy.
326
+ # @!attribute [rw] status
327
+ # The status of an automatic scaling policy.
328
+ # @return [Types::AutoScalingPolicyStatus]
329
+ #
330
+ # @!attribute [rw] constraints
331
+ # The upper and lower EC2 instance limits for an automatic scaling
332
+ # policy. Automatic scaling activity will not cause an instance group
333
+ # to grow above or below these limits.
334
+ # @return [Types::ScalingConstraints]
335
+ #
336
+ # @!attribute [rw] rules
337
+ # The scale-in and scale-out rules that comprise the automatic scaling
338
+ # policy.
339
+ # @return [Array<Types::ScalingRule>]
340
+ class AutoScalingPolicyDescription < Struct.new(
341
+ :status,
342
+ :constraints,
343
+ :rules)
344
+ include Aws::Structure
345
+ end
346
+
347
+ # The reason for an AutoScalingPolicyStatus change.
348
+ # @!attribute [rw] code
349
+ # The code indicating the reason for the change in
350
+ # status.`USER_REQUEST` indicates that the scaling policy status was
351
+ # changed by a user. `PROVISION_FAILURE` indicates that the status
352
+ # change was because the policy failed to provision. `CLEANUP_FAILURE`
353
+ # indicates something unclean happened.--&gt;
354
+ # @return [String]
355
+ #
356
+ # @!attribute [rw] message
357
+ # A friendly, more verbose message that accompanies an automatic
358
+ # scaling policy state change.
359
+ # @return [String]
360
+ class AutoScalingPolicyStateChangeReason < Struct.new(
361
+ :code,
362
+ :message)
363
+ include Aws::Structure
364
+ end
365
+
366
+ # The status of an automatic scaling policy.
367
+ # @!attribute [rw] state
368
+ # @return [String]
369
+ #
370
+ # @!attribute [rw] state_change_reason
371
+ # The reason for a change in status.
372
+ # @return [Types::AutoScalingPolicyStateChangeReason]
373
+ class AutoScalingPolicyStatus < Struct.new(
374
+ :state,
375
+ :state_change_reason)
376
+ include Aws::Structure
377
+ end
378
+
379
+ # Configuration of a bootstrap action.
380
+ # @note When making an API call, pass BootstrapActionConfig
381
+ # data as a hash:
382
+ #
383
+ # {
384
+ # name: "XmlStringMaxLen256", # required
385
+ # script_bootstrap_action: { # required
386
+ # path: "XmlString", # required
387
+ # args: ["XmlString"],
388
+ # },
389
+ # }
390
+ # @!attribute [rw] name
391
+ # The name of the bootstrap action.
392
+ # @return [String]
393
+ #
394
+ # @!attribute [rw] script_bootstrap_action
395
+ # The script run by the bootstrap action.
396
+ # @return [Types::ScriptBootstrapActionConfig]
397
+ class BootstrapActionConfig < Struct.new(
398
+ :name,
399
+ :script_bootstrap_action)
400
+ include Aws::Structure
401
+ end
402
+
403
+ # Reports the configuration of a bootstrap action in a job flow.
404
+ # @!attribute [rw] bootstrap_action_config
405
+ # A description of the bootstrap action.
406
+ # @return [Types::BootstrapActionConfig]
407
+ class BootstrapActionDetail < Struct.new(
408
+ :bootstrap_action_config)
409
+ include Aws::Structure
410
+ end
411
+
412
+ # @!attribute [rw] step_id
413
+ # @return [String]
414
+ #
415
+ # @!attribute [rw] status
416
+ # @return [String]
417
+ #
418
+ # @!attribute [rw] reason
419
+ # @return [String]
420
+ class CancelStepsInfo < Struct.new(
421
+ :step_id,
422
+ :status,
423
+ :reason)
424
+ include Aws::Structure
425
+ end
426
+
427
+ # The input argument to the CancelSteps operation.
428
+ # @note When making an API call, pass CancelStepsInput
429
+ # data as a hash:
430
+ #
431
+ # {
432
+ # cluster_id: "XmlStringMaxLen256",
433
+ # step_ids: ["XmlStringMaxLen256"],
434
+ # }
435
+ # @!attribute [rw] cluster_id
436
+ # The `ClusterID` for which specified steps will be canceled. Use
437
+ # RunJobFlow and ListClusters to get ClusterIDs.
438
+ # @return [String]
439
+ #
440
+ # @!attribute [rw] step_ids
441
+ # The list of `StepIDs` to cancel. Use ListSteps to get steps and
442
+ # their states for the specified cluster.
443
+ # @return [Array<String>]
444
+ class CancelStepsInput < Struct.new(
445
+ :cluster_id,
446
+ :step_ids)
447
+ include Aws::Structure
448
+ end
449
+
450
+ # The output for the CancelSteps operation.
451
+ # @!attribute [rw] cancel_steps_info_list
452
+ # A list of CancelStepsInfo, which shows the status of specified
453
+ # cancel requests for each `StepID` specified.
454
+ # @return [Array<Types::CancelStepsInfo>]
455
+ class CancelStepsOutput < Struct.new(
456
+ :cancel_steps_info_list)
457
+ include Aws::Structure
458
+ end
459
+
460
+ # The definition of a CloudWatch metric alarm, which determines when an
461
+ # automatic scaling activity is triggered. When the defined alarm
462
+ # conditions are satisfied, scaling activity begins.
463
+ # @note When making an API call, pass CloudWatchAlarmDefinition
464
+ # data as a hash:
465
+ #
466
+ # {
467
+ # comparison_operator: "GREATER_THAN_OR_EQUAL", # required, accepts GREATER_THAN_OR_EQUAL, GREATER_THAN, LESS_THAN, LESS_THAN_OR_EQUAL
468
+ # evaluation_periods: 1,
469
+ # metric_name: "String", # required
470
+ # namespace: "String",
471
+ # period: 1, # required
472
+ # statistic: "SAMPLE_COUNT", # accepts SAMPLE_COUNT, AVERAGE, SUM, MINIMUM, MAXIMUM
473
+ # threshold: 1.0, # required
474
+ # unit: "NONE", # accepts NONE, SECONDS, MICRO_SECONDS, MILLI_SECONDS, BYTES, KILO_BYTES, MEGA_BYTES, GIGA_BYTES, TERA_BYTES, BITS, KILO_BITS, MEGA_BITS, GIGA_BITS, TERA_BITS, PERCENT, COUNT, BYTES_PER_SECOND, KILO_BYTES_PER_SECOND, MEGA_BYTES_PER_SECOND, GIGA_BYTES_PER_SECOND, TERA_BYTES_PER_SECOND, BITS_PER_SECOND, KILO_BITS_PER_SECOND, MEGA_BITS_PER_SECOND, GIGA_BITS_PER_SECOND, TERA_BITS_PER_SECOND, COUNT_PER_SECOND
475
+ # dimensions: [
476
+ # {
477
+ # key: "String",
478
+ # value: "String",
479
+ # },
480
+ # ],
481
+ # }
482
+ # @!attribute [rw] comparison_operator
483
+ # Determines how the metric specified by `MetricName` is compared to
484
+ # the value specified by `Threshold`.
485
+ # @return [String]
486
+ #
487
+ # @!attribute [rw] evaluation_periods
488
+ # The number of periods, expressed in seconds using `Period`, during
489
+ # which the alarm condition must exist before the alarm triggers
490
+ # automatic scaling activity. The default value is `1`.
491
+ # @return [Integer]
492
+ #
493
+ # @!attribute [rw] metric_name
494
+ # The name of the CloudWatch metric that is watched to determine an
495
+ # alarm condition.
496
+ # @return [String]
497
+ #
498
+ # @!attribute [rw] namespace
499
+ # The namespace for the CloudWatch metric. The default is
500
+ # `AWS/ElasticMapReduce`.
501
+ # @return [String]
502
+ #
503
+ # @!attribute [rw] period
504
+ # The period, in seconds, over which the statistic is applied. EMR
505
+ # CloudWatch metrics are emitted every five minutes (300 seconds), so
506
+ # if an EMR CloudWatch metric is specified, specify `300`.
507
+ # @return [Integer]
508
+ #
509
+ # @!attribute [rw] statistic
510
+ # The statistic to apply to the metric associated with the alarm. The
511
+ # default is `AVERAGE`.
512
+ # @return [String]
513
+ #
514
+ # @!attribute [rw] threshold
515
+ # The value against which the specified statistic is compared.
516
+ # @return [Float]
517
+ #
518
+ # @!attribute [rw] unit
519
+ # The unit of measure associated with the CloudWatch metric being
520
+ # watched. The value specified for `Unit` must correspond to the units
521
+ # specified in the CloudWatch metric.
522
+ # @return [String]
523
+ #
524
+ # @!attribute [rw] dimensions
525
+ # A CloudWatch metric dimension.
526
+ # @return [Array<Types::MetricDimension>]
527
+ class CloudWatchAlarmDefinition < Struct.new(
528
+ :comparison_operator,
529
+ :evaluation_periods,
530
+ :metric_name,
531
+ :namespace,
532
+ :period,
533
+ :statistic,
534
+ :threshold,
535
+ :unit,
536
+ :dimensions)
537
+ include Aws::Structure
538
+ end
539
+
540
+ # The detailed description of the cluster.
541
+ # @!attribute [rw] id
542
+ # The unique identifier for the cluster.
543
+ # @return [String]
544
+ #
545
+ # @!attribute [rw] name
546
+ # The name of the cluster.
547
+ # @return [String]
548
+ #
549
+ # @!attribute [rw] status
550
+ # The current status details about the cluster.
551
+ # @return [Types::ClusterStatus]
552
+ #
553
+ # @!attribute [rw] ec2_instance_attributes
554
+ # Provides information about the EC2 instances in a cluster grouped by
555
+ # category. For example, key name, subnet ID, IAM instance profile,
556
+ # and so on.
557
+ # @return [Types::Ec2InstanceAttributes]
558
+ #
559
+ # @!attribute [rw] log_uri
560
+ # The path to the Amazon S3 location where logs for this cluster are
561
+ # stored.
562
+ # @return [String]
563
+ #
564
+ # @!attribute [rw] requested_ami_version
565
+ # The AMI version requested for this cluster.
566
+ # @return [String]
567
+ #
568
+ # @!attribute [rw] running_ami_version
569
+ # The AMI version running on this cluster.
570
+ # @return [String]
571
+ #
572
+ # @!attribute [rw] release_label
573
+ # The release label for the Amazon EMR release. For Amazon EMR 3.x and
574
+ # 2.x AMIs, use amiVersion instead instead of ReleaseLabel.
575
+ # @return [String]
576
+ #
577
+ # @!attribute [rw] auto_terminate
578
+ # Specifies whether the cluster should terminate after completing all
579
+ # steps.
580
+ # @return [Boolean]
581
+ #
582
+ # @!attribute [rw] termination_protected
583
+ # Indicates whether Amazon EMR will lock the cluster to prevent the
584
+ # EC2 instances from being terminated by an API call or user
585
+ # intervention, or in the event of a cluster error.
586
+ # @return [Boolean]
587
+ #
588
+ # @!attribute [rw] visible_to_all_users
589
+ # Indicates whether the job flow is visible to all IAM users of the
590
+ # AWS account associated with the job flow. If this value is set to
591
+ # `true`, all IAM users of that AWS account can view and manage the
592
+ # job flow if they have the proper policy permissions set. If this
593
+ # value is `false`, only the IAM user that created the cluster can
594
+ # view and manage it. This value can be changed using the
595
+ # SetVisibleToAllUsers action.
596
+ # @return [Boolean]
597
+ #
598
+ # @!attribute [rw] applications
599
+ # The applications installed on this cluster.
600
+ # @return [Array<Types::Application>]
601
+ #
602
+ # @!attribute [rw] tags
603
+ # A list of tags associated with a cluster.
604
+ # @return [Array<Types::Tag>]
605
+ #
606
+ # @!attribute [rw] service_role
607
+ # The IAM role that will be assumed by the Amazon EMR service to
608
+ # access AWS resources on your behalf.
609
+ # @return [String]
610
+ #
611
+ # @!attribute [rw] normalized_instance_hours
612
+ # An approximation of the cost of the job flow, represented in
613
+ # m1.small/hours. This value is incremented one time for every hour an
614
+ # m1.small instance runs. Larger instances are weighted more, so an
615
+ # EC2 instance that is roughly four times more expensive would result
616
+ # in the normalized instance hours being incremented by four. This
617
+ # result is only an approximation and does not reflect the actual
618
+ # billing rate.
619
+ # @return [Integer]
620
+ #
621
+ # @!attribute [rw] master_public_dns_name
622
+ # The public DNS name of the master EC2 instance.
623
+ # @return [String]
624
+ #
625
+ # @!attribute [rw] configurations
626
+ # <note markdown="1"> Amazon EMR releases 4.x or later.
627
+ #
628
+ # </note>
629
+ #
630
+ # The list of Configurations supplied to the EMR cluster.
631
+ # @return [Array<Types::Configuration>]
632
+ #
633
+ # @!attribute [rw] security_configuration
634
+ # The name of the security configuration applied to the cluster.
635
+ # @return [String]
636
+ #
637
+ # @!attribute [rw] auto_scaling_role
638
+ # An IAM role for automatic scaling policies. The default role is
639
+ # `EMR_AutoScaling_DefaultRole`. The IAM role provides permissions
640
+ # that the automatic scaling feature requires to launch and terminate
641
+ # EC2 instances in an instance group.
642
+ # @return [String]
643
+ #
644
+ # @!attribute [rw] scale_down_behavior
645
+ # The way that individual Amazon EC2 instances terminate when an
646
+ # automatic scale-in activity occurs or an instance group is resized.
647
+ # `TERMINATE_AT_INSTANCE_HOUR` indicates that Amazon EMR terminates
648
+ # nodes at the instance-hour boundary, regardless of when the request
649
+ # to terminate the instance was submitted. This option is only
650
+ # available with Amazon EMR 5.1.0 and later and is the default for
651
+ # clusters created using that version. `TERMINATE_AT_TASK_COMPLETION`
652
+ # indicates that Amazon EMR blacklists and drains tasks from nodes
653
+ # before terminating the Amazon EC2 instances, regardless of the
654
+ # instance-hour boundary. With either behavior, Amazon EMR removes the
655
+ # least active nodes first and blocks instance termination if it could
656
+ # lead to HDFS corruption. `TERMINATE_AT_TASK_COMPLETION` is available
657
+ # only in Amazon EMR version 4.1.0 and later, and is the default for
658
+ # versions of Amazon EMR earlier than 5.1.0.
659
+ # @return [String]
660
+ class Cluster < Struct.new(
661
+ :id,
662
+ :name,
663
+ :status,
664
+ :ec2_instance_attributes,
665
+ :log_uri,
666
+ :requested_ami_version,
667
+ :running_ami_version,
668
+ :release_label,
669
+ :auto_terminate,
670
+ :termination_protected,
671
+ :visible_to_all_users,
672
+ :applications,
673
+ :tags,
674
+ :service_role,
675
+ :normalized_instance_hours,
676
+ :master_public_dns_name,
677
+ :configurations,
678
+ :security_configuration,
679
+ :auto_scaling_role,
680
+ :scale_down_behavior)
681
+ include Aws::Structure
682
+ end
683
+
684
+ # The reason that the cluster changed to its current state.
685
+ # @!attribute [rw] code
686
+ # The programmatic code for the state change reason.
687
+ # @return [String]
688
+ #
689
+ # @!attribute [rw] message
690
+ # The descriptive message for the state change reason.
691
+ # @return [String]
692
+ class ClusterStateChangeReason < Struct.new(
693
+ :code,
694
+ :message)
695
+ include Aws::Structure
696
+ end
697
+
698
+ # The detailed status of the cluster.
699
+ # @!attribute [rw] state
700
+ # The current state of the cluster.
701
+ # @return [String]
702
+ #
703
+ # @!attribute [rw] state_change_reason
704
+ # The reason for the cluster status change.
705
+ # @return [Types::ClusterStateChangeReason]
706
+ #
707
+ # @!attribute [rw] timeline
708
+ # A timeline that represents the status of a cluster over the lifetime
709
+ # of the cluster.
710
+ # @return [Types::ClusterTimeline]
711
+ class ClusterStatus < Struct.new(
712
+ :state,
713
+ :state_change_reason,
714
+ :timeline)
715
+ include Aws::Structure
716
+ end
717
+
718
+ # The summary description of the cluster.
719
+ # @!attribute [rw] id
720
+ # The unique identifier for the cluster.
721
+ # @return [String]
722
+ #
723
+ # @!attribute [rw] name
724
+ # The name of the cluster.
725
+ # @return [String]
726
+ #
727
+ # @!attribute [rw] status
728
+ # The details about the current status of the cluster.
729
+ # @return [Types::ClusterStatus]
730
+ #
731
+ # @!attribute [rw] normalized_instance_hours
732
+ # An approximation of the cost of the job flow, represented in
733
+ # m1.small/hours. This value is incremented one time for every hour an
734
+ # m1.small instance runs. Larger instances are weighted more, so an
735
+ # EC2 instance that is roughly four times more expensive would result
736
+ # in the normalized instance hours being incremented by four. This
737
+ # result is only an approximation and does not reflect the actual
738
+ # billing rate.
739
+ # @return [Integer]
740
+ class ClusterSummary < Struct.new(
741
+ :id,
742
+ :name,
743
+ :status,
744
+ :normalized_instance_hours)
745
+ include Aws::Structure
746
+ end
747
+
748
+ # Represents the timeline of the cluster's lifecycle.
749
+ # @!attribute [rw] creation_date_time
750
+ # The creation date and time of the cluster.
751
+ # @return [Time]
752
+ #
753
+ # @!attribute [rw] ready_date_time
754
+ # The date and time when the cluster was ready to execute steps.
755
+ # @return [Time]
756
+ #
757
+ # @!attribute [rw] end_date_time
758
+ # The date and time when the cluster was terminated.
759
+ # @return [Time]
760
+ class ClusterTimeline < Struct.new(
761
+ :creation_date_time,
762
+ :ready_date_time,
763
+ :end_date_time)
764
+ include Aws::Structure
765
+ end
766
+
767
+ # An entity describing an executable that runs on a cluster.
768
+ # @!attribute [rw] name
769
+ # The name of the command.
770
+ # @return [String]
771
+ #
772
+ # @!attribute [rw] script_path
773
+ # The Amazon S3 location of the command script.
774
+ # @return [String]
775
+ #
776
+ # @!attribute [rw] args
777
+ # Arguments for Amazon EMR to pass to the command for execution.
778
+ # @return [Array<String>]
779
+ class Command < Struct.new(
780
+ :name,
781
+ :script_path,
782
+ :args)
783
+ include Aws::Structure
784
+ end
785
+
786
+ # <note markdown="1"> Amazon EMR releases 4.x or later.
787
+ #
788
+ # </note>
789
+ #
790
+ # Specifies a hardware and software configuration of the EMR cluster.
791
+ # This includes configurations for applications and software bundled
792
+ # with Amazon EMR. The Configuration object is a JSON object which is
793
+ # defined by a classification and a set of properties. Configurations
794
+ # can be nested, so a configuration may have its own Configuration
795
+ # objects listed.
796
+ # @note When making an API call, pass Configuration
797
+ # data as a hash:
798
+ #
799
+ # {
800
+ # classification: "String",
801
+ # configurations: [
802
+ # {
803
+ # classification: "String",
804
+ # configurations: {
805
+ # # recursive ConfigurationList
806
+ # },
807
+ # properties: {
808
+ # "String" => "String",
809
+ # },
810
+ # },
811
+ # ],
812
+ # properties: {
813
+ # "String" => "String",
814
+ # },
815
+ # }
816
+ # @!attribute [rw] classification
817
+ # The classification of a configuration. For more information see,
818
+ # [Amazon EMR Configurations][1].
819
+ #
820
+ #
821
+ #
822
+ # [1]: http://docs.aws.amazon.com/ElasticMapReduce/latest/API/EmrConfigurations.html
823
+ # @return [String]
824
+ #
825
+ # @!attribute [rw] configurations
826
+ # A list of configurations you apply to this configuration object.
827
+ # @return [Array<Types::Configuration>]
828
+ #
829
+ # @!attribute [rw] properties
830
+ # A set of properties supplied to the Configuration object.
831
+ # @return [Hash<String,String>]
832
+ class Configuration < Struct.new(
833
+ :classification,
834
+ :configurations,
835
+ :properties)
836
+ include Aws::Structure
837
+ end
838
+
839
+ # @note When making an API call, pass CreateSecurityConfigurationInput
840
+ # data as a hash:
841
+ #
842
+ # {
843
+ # name: "XmlString", # required
844
+ # security_configuration: "String", # required
845
+ # }
846
+ # @!attribute [rw] name
847
+ # The name of the security configuration.
848
+ # @return [String]
849
+ #
850
+ # @!attribute [rw] security_configuration
851
+ # The security configuration details in JSON format.
852
+ # @return [String]
853
+ class CreateSecurityConfigurationInput < Struct.new(
854
+ :name,
855
+ :security_configuration)
856
+ include Aws::Structure
857
+ end
858
+
859
+ # @!attribute [rw] name
860
+ # The name of the security configuration.
861
+ # @return [String]
862
+ #
863
+ # @!attribute [rw] creation_date_time
864
+ # The date and time the security configuration was created.
865
+ # @return [Time]
866
+ class CreateSecurityConfigurationOutput < Struct.new(
867
+ :name,
868
+ :creation_date_time)
869
+ include Aws::Structure
870
+ end
871
+
872
+ # @note When making an API call, pass DeleteSecurityConfigurationInput
873
+ # data as a hash:
874
+ #
875
+ # {
876
+ # name: "XmlString", # required
877
+ # }
878
+ # @!attribute [rw] name
879
+ # The name of the security configuration.
880
+ # @return [String]
881
+ class DeleteSecurityConfigurationInput < Struct.new(
882
+ :name)
883
+ include Aws::Structure
884
+ end
885
+
886
+ class DeleteSecurityConfigurationOutput < Aws::EmptyStructure; end
887
+
888
+ # This input determines which cluster to describe.
889
+ # @note When making an API call, pass DescribeClusterInput
890
+ # data as a hash:
891
+ #
892
+ # {
893
+ # cluster_id: "ClusterId", # required
894
+ # }
895
+ # @!attribute [rw] cluster_id
896
+ # The identifier of the cluster to describe.
897
+ # @return [String]
898
+ class DescribeClusterInput < Struct.new(
899
+ :cluster_id)
900
+ include Aws::Structure
901
+ end
902
+
903
+ # This output contains the description of the cluster.
904
+ # @!attribute [rw] cluster
905
+ # This output contains the details for the requested cluster.
906
+ # @return [Types::Cluster]
907
+ class DescribeClusterOutput < Struct.new(
908
+ :cluster)
909
+ include Aws::Structure
910
+ end
911
+
912
+ # The input for the DescribeJobFlows operation.
913
+ # @note When making an API call, pass DescribeJobFlowsInput
914
+ # data as a hash:
915
+ #
916
+ # {
917
+ # created_after: Time.now,
918
+ # created_before: Time.now,
919
+ # job_flow_ids: ["XmlString"],
920
+ # job_flow_states: ["STARTING"], # accepts STARTING, BOOTSTRAPPING, RUNNING, WAITING, SHUTTING_DOWN, TERMINATED, COMPLETED, FAILED
921
+ # }
922
+ # @!attribute [rw] created_after
923
+ # Return only job flows created after this date and time.
924
+ # @return [Time]
925
+ #
926
+ # @!attribute [rw] created_before
927
+ # Return only job flows created before this date and time.
928
+ # @return [Time]
929
+ #
930
+ # @!attribute [rw] job_flow_ids
931
+ # Return only job flows whose job flow ID is contained in this list.
932
+ # @return [Array<String>]
933
+ #
934
+ # @!attribute [rw] job_flow_states
935
+ # Return only job flows whose state is contained in this list.
936
+ # @return [Array<String>]
937
+ class DescribeJobFlowsInput < Struct.new(
938
+ :created_after,
939
+ :created_before,
940
+ :job_flow_ids,
941
+ :job_flow_states)
942
+ include Aws::Structure
943
+ end
944
+
945
+ # The output for the DescribeJobFlows operation.
946
+ # @!attribute [rw] job_flows
947
+ # A list of job flows matching the parameters supplied.
948
+ # @return [Array<Types::JobFlowDetail>]
949
+ class DescribeJobFlowsOutput < Struct.new(
950
+ :job_flows)
951
+ include Aws::Structure
952
+ end
953
+
954
+ # @note When making an API call, pass DescribeSecurityConfigurationInput
955
+ # data as a hash:
956
+ #
957
+ # {
958
+ # name: "XmlString", # required
959
+ # }
960
+ # @!attribute [rw] name
961
+ # The name of the security configuration.
962
+ # @return [String]
963
+ class DescribeSecurityConfigurationInput < Struct.new(
964
+ :name)
965
+ include Aws::Structure
966
+ end
967
+
968
+ # @!attribute [rw] name
969
+ # The name of the security configuration.
970
+ # @return [String]
971
+ #
972
+ # @!attribute [rw] security_configuration
973
+ # The security configuration details in JSON format.
974
+ # @return [String]
975
+ #
976
+ # @!attribute [rw] creation_date_time
977
+ # The date and time the security configuration was created
978
+ # @return [Time]
979
+ class DescribeSecurityConfigurationOutput < Struct.new(
980
+ :name,
981
+ :security_configuration,
982
+ :creation_date_time)
983
+ include Aws::Structure
984
+ end
985
+
986
+ # This input determines which step to describe.
987
+ # @note When making an API call, pass DescribeStepInput
988
+ # data as a hash:
989
+ #
990
+ # {
991
+ # cluster_id: "ClusterId", # required
992
+ # step_id: "StepId", # required
993
+ # }
994
+ # @!attribute [rw] cluster_id
995
+ # The identifier of the cluster with steps to describe.
996
+ # @return [String]
997
+ #
998
+ # @!attribute [rw] step_id
999
+ # The identifier of the step to describe.
1000
+ # @return [String]
1001
+ class DescribeStepInput < Struct.new(
1002
+ :cluster_id,
1003
+ :step_id)
1004
+ include Aws::Structure
1005
+ end
1006
+
1007
+ # This output contains the description of the cluster step.
1008
+ # @!attribute [rw] step
1009
+ # The step details for the requested step identifier.
1010
+ # @return [Types::Step]
1011
+ class DescribeStepOutput < Struct.new(
1012
+ :step)
1013
+ include Aws::Structure
1014
+ end
1015
+
1016
+ # Configuration of requested EBS block device associated with the
1017
+ # instance group.
1018
+ # @!attribute [rw] volume_specification
1019
+ # EBS volume specifications such as volume type, IOPS, and size (GiB)
1020
+ # that will be requested for the EBS volume attached to an EC2
1021
+ # instance in the cluster.
1022
+ # @return [Types::VolumeSpecification]
1023
+ #
1024
+ # @!attribute [rw] device
1025
+ # The device name that is exposed to the instance, such as /dev/sdh.
1026
+ # @return [String]
1027
+ class EbsBlockDevice < Struct.new(
1028
+ :volume_specification,
1029
+ :device)
1030
+ include Aws::Structure
1031
+ end
1032
+
1033
+ # Configuration of requested EBS block device associated with the
1034
+ # instance group with count of volumes that will be associated to every
1035
+ # instance.
1036
+ # @note When making an API call, pass EbsBlockDeviceConfig
1037
+ # data as a hash:
1038
+ #
1039
+ # {
1040
+ # volume_specification: { # required
1041
+ # volume_type: "String", # required
1042
+ # iops: 1,
1043
+ # size_in_gb: 1, # required
1044
+ # },
1045
+ # volumes_per_instance: 1,
1046
+ # }
1047
+ # @!attribute [rw] volume_specification
1048
+ # EBS volume specifications such as volume type, IOPS, and size (GiB)
1049
+ # that will be requested for the EBS volume attached to an EC2
1050
+ # instance in the cluster.
1051
+ # @return [Types::VolumeSpecification]
1052
+ #
1053
+ # @!attribute [rw] volumes_per_instance
1054
+ # Number of EBS volumes with a specific volume configuration that will
1055
+ # be associated with every instance in the instance group
1056
+ # @return [Integer]
1057
+ class EbsBlockDeviceConfig < Struct.new(
1058
+ :volume_specification,
1059
+ :volumes_per_instance)
1060
+ include Aws::Structure
1061
+ end
1062
+
1063
+ # The Amazon EBS configuration of a cluster instance.
1064
+ # @note When making an API call, pass EbsConfiguration
1065
+ # data as a hash:
1066
+ #
1067
+ # {
1068
+ # ebs_block_device_configs: [
1069
+ # {
1070
+ # volume_specification: { # required
1071
+ # volume_type: "String", # required
1072
+ # iops: 1,
1073
+ # size_in_gb: 1, # required
1074
+ # },
1075
+ # volumes_per_instance: 1,
1076
+ # },
1077
+ # ],
1078
+ # ebs_optimized: false,
1079
+ # }
1080
+ # @!attribute [rw] ebs_block_device_configs
1081
+ # An array of Amazon EBS volume specifications attached to a cluster
1082
+ # instance.
1083
+ # @return [Array<Types::EbsBlockDeviceConfig>]
1084
+ #
1085
+ # @!attribute [rw] ebs_optimized
1086
+ # Indicates whether an Amazon EBS volume is EBS-optimized.
1087
+ # @return [Boolean]
1088
+ class EbsConfiguration < Struct.new(
1089
+ :ebs_block_device_configs,
1090
+ :ebs_optimized)
1091
+ include Aws::Structure
1092
+ end
1093
+
1094
+ # EBS block device that's attached to an EC2 instance.
1095
+ # @!attribute [rw] device
1096
+ # The device name that is exposed to the instance, such as /dev/sdh.
1097
+ # @return [String]
1098
+ #
1099
+ # @!attribute [rw] volume_id
1100
+ # The volume identifier of the EBS volume.
1101
+ # @return [String]
1102
+ class EbsVolume < Struct.new(
1103
+ :device,
1104
+ :volume_id)
1105
+ include Aws::Structure
1106
+ end
1107
+
1108
+ # Provides information about the EC2 instances in a cluster grouped by
1109
+ # category. For example, key name, subnet ID, IAM instance profile, and
1110
+ # so on.
1111
+ # @!attribute [rw] ec2_key_name
1112
+ # The name of the Amazon EC2 key pair to use when connecting with SSH
1113
+ # into the master node as a user named "hadoop".
1114
+ # @return [String]
1115
+ #
1116
+ # @!attribute [rw] ec2_subnet_id
1117
+ # To launch the job flow in Amazon VPC, set this parameter to the
1118
+ # identifier of the Amazon VPC subnet where you want the job flow to
1119
+ # launch. If you do not specify this value, the job flow is launched
1120
+ # in the normal AWS cloud, outside of a VPC.
1121
+ #
1122
+ # Amazon VPC currently does not support cluster compute quadruple
1123
+ # extra large (cc1.4xlarge) instances. Thus, you cannot specify the
1124
+ # cc1.4xlarge instance type for nodes of a job flow launched in a VPC.
1125
+ # @return [String]
1126
+ #
1127
+ # @!attribute [rw] ec2_availability_zone
1128
+ # The Availability Zone in which the cluster will run.
1129
+ # @return [String]
1130
+ #
1131
+ # @!attribute [rw] iam_instance_profile
1132
+ # The IAM role that was specified when the job flow was launched. The
1133
+ # EC2 instances of the job flow assume this role.
1134
+ # @return [String]
1135
+ #
1136
+ # @!attribute [rw] emr_managed_master_security_group
1137
+ # The identifier of the Amazon EC2 security group for the master node.
1138
+ # @return [String]
1139
+ #
1140
+ # @!attribute [rw] emr_managed_slave_security_group
1141
+ # The identifier of the Amazon EC2 security group for the slave nodes.
1142
+ # @return [String]
1143
+ #
1144
+ # @!attribute [rw] service_access_security_group
1145
+ # The identifier of the Amazon EC2 security group for the Amazon EMR
1146
+ # service to access clusters in VPC private subnets.
1147
+ # @return [String]
1148
+ #
1149
+ # @!attribute [rw] additional_master_security_groups
1150
+ # A list of additional Amazon EC2 security group IDs for the master
1151
+ # node.
1152
+ # @return [Array<String>]
1153
+ #
1154
+ # @!attribute [rw] additional_slave_security_groups
1155
+ # A list of additional Amazon EC2 security group IDs for the slave
1156
+ # nodes.
1157
+ # @return [Array<String>]
1158
+ class Ec2InstanceAttributes < Struct.new(
1159
+ :ec2_key_name,
1160
+ :ec2_subnet_id,
1161
+ :ec2_availability_zone,
1162
+ :iam_instance_profile,
1163
+ :emr_managed_master_security_group,
1164
+ :emr_managed_slave_security_group,
1165
+ :service_access_security_group,
1166
+ :additional_master_security_groups,
1167
+ :additional_slave_security_groups)
1168
+ include Aws::Structure
1169
+ end
1170
+
1171
+ # The details of the step failure. The service attempts to detect the
1172
+ # root cause for many common failures.
1173
+ # @!attribute [rw] reason
1174
+ # The reason for the step failure. In the case where the service
1175
+ # cannot successfully determine the root cause of the failure, it
1176
+ # returns "Unknown Error" as a reason.
1177
+ # @return [String]
1178
+ #
1179
+ # @!attribute [rw] message
1180
+ # The descriptive message including the error the EMR service has
1181
+ # identified as the cause of step failure. This is text from an error
1182
+ # log that describes the root cause of the failure.
1183
+ # @return [String]
1184
+ #
1185
+ # @!attribute [rw] log_file
1186
+ # The path to the log file where the step failure root cause was
1187
+ # originally recorded.
1188
+ # @return [String]
1189
+ class FailureDetails < Struct.new(
1190
+ :reason,
1191
+ :message,
1192
+ :log_file)
1193
+ include Aws::Structure
1194
+ end
1195
+
1196
+ # A job flow step consisting of a JAR file whose main function will be
1197
+ # executed. The main function submits a job for Hadoop to execute and
1198
+ # waits for the job to finish or fail.
1199
+ # @note When making an API call, pass HadoopJarStepConfig
1200
+ # data as a hash:
1201
+ #
1202
+ # {
1203
+ # properties: [
1204
+ # {
1205
+ # key: "XmlString",
1206
+ # value: "XmlString",
1207
+ # },
1208
+ # ],
1209
+ # jar: "XmlString", # required
1210
+ # main_class: "XmlString",
1211
+ # args: ["XmlString"],
1212
+ # }
1213
+ # @!attribute [rw] properties
1214
+ # A list of Java properties that are set when the step runs. You can
1215
+ # use these properties to pass key value pairs to your main function.
1216
+ # @return [Array<Types::KeyValue>]
1217
+ #
1218
+ # @!attribute [rw] jar
1219
+ # A path to a JAR file run during the step.
1220
+ # @return [String]
1221
+ #
1222
+ # @!attribute [rw] main_class
1223
+ # The name of the main class in the specified Java file. If not
1224
+ # specified, the JAR file should specify a Main-Class in its manifest
1225
+ # file.
1226
+ # @return [String]
1227
+ #
1228
+ # @!attribute [rw] args
1229
+ # A list of command line arguments passed to the JAR file's main
1230
+ # function when executed.
1231
+ # @return [Array<String>]
1232
+ class HadoopJarStepConfig < Struct.new(
1233
+ :properties,
1234
+ :jar,
1235
+ :main_class,
1236
+ :args)
1237
+ include Aws::Structure
1238
+ end
1239
+
1240
+ # A cluster step consisting of a JAR file whose main function will be
1241
+ # executed. The main function submits a job for Hadoop to execute and
1242
+ # waits for the job to finish or fail.
1243
+ # @!attribute [rw] jar
1244
+ # The path to the JAR file that runs during the step.
1245
+ # @return [String]
1246
+ #
1247
+ # @!attribute [rw] properties
1248
+ # The list of Java properties that are set when the step runs. You can
1249
+ # use these properties to pass key value pairs to your main function.
1250
+ # @return [Hash<String,String>]
1251
+ #
1252
+ # @!attribute [rw] main_class
1253
+ # The name of the main class in the specified Java file. If not
1254
+ # specified, the JAR file should specify a main class in its manifest
1255
+ # file.
1256
+ # @return [String]
1257
+ #
1258
+ # @!attribute [rw] args
1259
+ # The list of command line arguments to pass to the JAR file's main
1260
+ # function for execution.
1261
+ # @return [Array<String>]
1262
+ class HadoopStepConfig < Struct.new(
1263
+ :jar,
1264
+ :properties,
1265
+ :main_class,
1266
+ :args)
1267
+ include Aws::Structure
1268
+ end
1269
+
1270
+ # Represents an EC2 instance provisioned as part of cluster.
1271
+ # @!attribute [rw] id
1272
+ # The unique identifier for the instance in Amazon EMR.
1273
+ # @return [String]
1274
+ #
1275
+ # @!attribute [rw] ec2_instance_id
1276
+ # The unique identifier of the instance in Amazon EC2.
1277
+ # @return [String]
1278
+ #
1279
+ # @!attribute [rw] public_dns_name
1280
+ # The public DNS name of the instance.
1281
+ # @return [String]
1282
+ #
1283
+ # @!attribute [rw] public_ip_address
1284
+ # The public IP address of the instance.
1285
+ # @return [String]
1286
+ #
1287
+ # @!attribute [rw] private_dns_name
1288
+ # The private DNS name of the instance.
1289
+ # @return [String]
1290
+ #
1291
+ # @!attribute [rw] private_ip_address
1292
+ # The private IP address of the instance.
1293
+ # @return [String]
1294
+ #
1295
+ # @!attribute [rw] status
1296
+ # The current status of the instance.
1297
+ # @return [Types::InstanceStatus]
1298
+ #
1299
+ # @!attribute [rw] instance_group_id
1300
+ # The identifier of the instance group to which this instance belongs.
1301
+ # @return [String]
1302
+ #
1303
+ # @!attribute [rw] ebs_volumes
1304
+ # The list of EBS volumes that are attached to this instance.
1305
+ # @return [Array<Types::EbsVolume>]
1306
+ class Instance < Struct.new(
1307
+ :id,
1308
+ :ec2_instance_id,
1309
+ :public_dns_name,
1310
+ :public_ip_address,
1311
+ :private_dns_name,
1312
+ :private_ip_address,
1313
+ :status,
1314
+ :instance_group_id,
1315
+ :ebs_volumes)
1316
+ include Aws::Structure
1317
+ end
1318
+
1319
+ # This entity represents an instance group, which is a group of
1320
+ # instances that have common purpose. For example, CORE instance group
1321
+ # is used for HDFS.
1322
+ # @!attribute [rw] id
1323
+ # The identifier of the instance group.
1324
+ # @return [String]
1325
+ #
1326
+ # @!attribute [rw] name
1327
+ # The name of the instance group.
1328
+ # @return [String]
1329
+ #
1330
+ # @!attribute [rw] market
1331
+ # The marketplace to provision instances for this group. Valid values
1332
+ # are ON\_DEMAND or SPOT.
1333
+ # @return [String]
1334
+ #
1335
+ # @!attribute [rw] instance_group_type
1336
+ # The type of the instance group. Valid values are MASTER, CORE or
1337
+ # TASK.
1338
+ # @return [String]
1339
+ #
1340
+ # @!attribute [rw] bid_price
1341
+ # The bid price for each EC2 instance in the instance group when
1342
+ # launching nodes as Spot Instances, expressed in USD.
1343
+ # @return [String]
1344
+ #
1345
+ # @!attribute [rw] instance_type
1346
+ # The EC2 instance type for all instances in the instance group.
1347
+ # @return [String]
1348
+ #
1349
+ # @!attribute [rw] requested_instance_count
1350
+ # The target number of instances for the instance group.
1351
+ # @return [Integer]
1352
+ #
1353
+ # @!attribute [rw] running_instance_count
1354
+ # The number of instances currently running in this instance group.
1355
+ # @return [Integer]
1356
+ #
1357
+ # @!attribute [rw] status
1358
+ # The current status of the instance group.
1359
+ # @return [Types::InstanceGroupStatus]
1360
+ #
1361
+ # @!attribute [rw] configurations
1362
+ # <note markdown="1"> Amazon EMR releases 4.x or later.
1363
+ #
1364
+ # </note>
1365
+ #
1366
+ # The list of configurations supplied for an EMR cluster instance
1367
+ # group. You can specify a separate configuration for each instance
1368
+ # group (master, core, and task).
1369
+ # @return [Array<Types::Configuration>]
1370
+ #
1371
+ # @!attribute [rw] ebs_block_devices
1372
+ # The EBS block devices that are mapped to this instance group.
1373
+ # @return [Array<Types::EbsBlockDevice>]
1374
+ #
1375
+ # @!attribute [rw] ebs_optimized
1376
+ # If the instance group is EBS-optimized. An Amazon EBS-optimized
1377
+ # instance uses an optimized configuration stack and provides
1378
+ # additional, dedicated capacity for Amazon EBS I/O.
1379
+ # @return [Boolean]
1380
+ #
1381
+ # @!attribute [rw] shrink_policy
1382
+ # Policy for customizing shrink operations.
1383
+ # @return [Types::ShrinkPolicy]
1384
+ #
1385
+ # @!attribute [rw] auto_scaling_policy
1386
+ # An automatic scaling policy for a core instance group or task
1387
+ # instance group in an Amazon EMR cluster. The automatic scaling
1388
+ # policy defines how an instance group dynamically adds and terminates
1389
+ # EC2 instances in response to the value of a CloudWatch metric. See
1390
+ # PutAutoScalingPolicy.
1391
+ # @return [Types::AutoScalingPolicyDescription]
1392
+ class InstanceGroup < Struct.new(
1393
+ :id,
1394
+ :name,
1395
+ :market,
1396
+ :instance_group_type,
1397
+ :bid_price,
1398
+ :instance_type,
1399
+ :requested_instance_count,
1400
+ :running_instance_count,
1401
+ :status,
1402
+ :configurations,
1403
+ :ebs_block_devices,
1404
+ :ebs_optimized,
1405
+ :shrink_policy,
1406
+ :auto_scaling_policy)
1407
+ include Aws::Structure
1408
+ end
1409
+
1410
+ # Configuration defining a new instance group.
1411
+ # @note When making an API call, pass InstanceGroupConfig
1412
+ # data as a hash:
1413
+ #
1414
+ # {
1415
+ # name: "XmlStringMaxLen256",
1416
+ # market: "ON_DEMAND", # accepts ON_DEMAND, SPOT
1417
+ # instance_role: "MASTER", # required, accepts MASTER, CORE, TASK
1418
+ # bid_price: "XmlStringMaxLen256",
1419
+ # instance_type: "InstanceType", # required
1420
+ # instance_count: 1, # required
1421
+ # configurations: [
1422
+ # {
1423
+ # classification: "String",
1424
+ # configurations: {
1425
+ # # recursive ConfigurationList
1426
+ # },
1427
+ # properties: {
1428
+ # "String" => "String",
1429
+ # },
1430
+ # },
1431
+ # ],
1432
+ # ebs_configuration: {
1433
+ # ebs_block_device_configs: [
1434
+ # {
1435
+ # volume_specification: { # required
1436
+ # volume_type: "String", # required
1437
+ # iops: 1,
1438
+ # size_in_gb: 1, # required
1439
+ # },
1440
+ # volumes_per_instance: 1,
1441
+ # },
1442
+ # ],
1443
+ # ebs_optimized: false,
1444
+ # },
1445
+ # auto_scaling_policy: {
1446
+ # constraints: { # required
1447
+ # min_capacity: 1, # required
1448
+ # max_capacity: 1, # required
1449
+ # },
1450
+ # rules: [ # required
1451
+ # {
1452
+ # name: "String", # required
1453
+ # description: "String",
1454
+ # action: { # required
1455
+ # market: "ON_DEMAND", # accepts ON_DEMAND, SPOT
1456
+ # simple_scaling_policy_configuration: { # required
1457
+ # adjustment_type: "CHANGE_IN_CAPACITY", # accepts CHANGE_IN_CAPACITY, PERCENT_CHANGE_IN_CAPACITY, EXACT_CAPACITY
1458
+ # scaling_adjustment: 1, # required
1459
+ # cool_down: 1,
1460
+ # },
1461
+ # },
1462
+ # trigger: { # required
1463
+ # cloud_watch_alarm_definition: { # required
1464
+ # comparison_operator: "GREATER_THAN_OR_EQUAL", # required, accepts GREATER_THAN_OR_EQUAL, GREATER_THAN, LESS_THAN, LESS_THAN_OR_EQUAL
1465
+ # evaluation_periods: 1,
1466
+ # metric_name: "String", # required
1467
+ # namespace: "String",
1468
+ # period: 1, # required
1469
+ # statistic: "SAMPLE_COUNT", # accepts SAMPLE_COUNT, AVERAGE, SUM, MINIMUM, MAXIMUM
1470
+ # threshold: 1.0, # required
1471
+ # unit: "NONE", # accepts NONE, SECONDS, MICRO_SECONDS, MILLI_SECONDS, BYTES, KILO_BYTES, MEGA_BYTES, GIGA_BYTES, TERA_BYTES, BITS, KILO_BITS, MEGA_BITS, GIGA_BITS, TERA_BITS, PERCENT, COUNT, BYTES_PER_SECOND, KILO_BYTES_PER_SECOND, MEGA_BYTES_PER_SECOND, GIGA_BYTES_PER_SECOND, TERA_BYTES_PER_SECOND, BITS_PER_SECOND, KILO_BITS_PER_SECOND, MEGA_BITS_PER_SECOND, GIGA_BITS_PER_SECOND, TERA_BITS_PER_SECOND, COUNT_PER_SECOND
1472
+ # dimensions: [
1473
+ # {
1474
+ # key: "String",
1475
+ # value: "String",
1476
+ # },
1477
+ # ],
1478
+ # },
1479
+ # },
1480
+ # },
1481
+ # ],
1482
+ # },
1483
+ # }
1484
+ # @!attribute [rw] name
1485
+ # Friendly name given to the instance group.
1486
+ # @return [String]
1487
+ #
1488
+ # @!attribute [rw] market
1489
+ # Market type of the EC2 instances used to create a cluster node.
1490
+ # @return [String]
1491
+ #
1492
+ # @!attribute [rw] instance_role
1493
+ # The role of the instance group in the cluster.
1494
+ # @return [String]
1495
+ #
1496
+ # @!attribute [rw] bid_price
1497
+ # Bid price for each EC2 instance in the instance group when launching
1498
+ # nodes as Spot Instances, expressed in USD.
1499
+ # @return [String]
1500
+ #
1501
+ # @!attribute [rw] instance_type
1502
+ # The EC2 instance type for all instances in the instance group.
1503
+ # @return [String]
1504
+ #
1505
+ # @!attribute [rw] instance_count
1506
+ # Target number of instances for the instance group.
1507
+ # @return [Integer]
1508
+ #
1509
+ # @!attribute [rw] configurations
1510
+ # <note markdown="1"> Amazon EMR releases 4.x or later.
1511
+ #
1512
+ # </note>
1513
+ #
1514
+ # The list of configurations supplied for an EMR cluster instance
1515
+ # group. You can specify a separate configuration for each instance
1516
+ # group (master, core, and task).
1517
+ # @return [Array<Types::Configuration>]
1518
+ #
1519
+ # @!attribute [rw] ebs_configuration
1520
+ # EBS configurations that will be attached to each EC2 instance in the
1521
+ # instance group.
1522
+ # @return [Types::EbsConfiguration]
1523
+ #
1524
+ # @!attribute [rw] auto_scaling_policy
1525
+ # An automatic scaling policy for a core instance group or task
1526
+ # instance group in an Amazon EMR cluster. The automatic scaling
1527
+ # policy defines how an instance group dynamically adds and terminates
1528
+ # EC2 instances in response to the value of a CloudWatch metric. See
1529
+ # PutAutoScalingPolicy.
1530
+ # @return [Types::AutoScalingPolicy]
1531
+ class InstanceGroupConfig < Struct.new(
1532
+ :name,
1533
+ :market,
1534
+ :instance_role,
1535
+ :bid_price,
1536
+ :instance_type,
1537
+ :instance_count,
1538
+ :configurations,
1539
+ :ebs_configuration,
1540
+ :auto_scaling_policy)
1541
+ include Aws::Structure
1542
+ end
1543
+
1544
+ # Detailed information about an instance group.
1545
+ # @!attribute [rw] instance_group_id
1546
+ # Unique identifier for the instance group.
1547
+ # @return [String]
1548
+ #
1549
+ # @!attribute [rw] name
1550
+ # Friendly name for the instance group.
1551
+ # @return [String]
1552
+ #
1553
+ # @!attribute [rw] market
1554
+ # Market type of the EC2 instances used to create a cluster node.
1555
+ # @return [String]
1556
+ #
1557
+ # @!attribute [rw] instance_role
1558
+ # Instance group role in the cluster
1559
+ # @return [String]
1560
+ #
1561
+ # @!attribute [rw] bid_price
1562
+ # Bid price for EC2 Instances when launching nodes as Spot Instances,
1563
+ # expressed in USD.
1564
+ # @return [String]
1565
+ #
1566
+ # @!attribute [rw] instance_type
1567
+ # EC2 instance type.
1568
+ # @return [String]
1569
+ #
1570
+ # @!attribute [rw] instance_request_count
1571
+ # Target number of instances to run in the instance group.
1572
+ # @return [Integer]
1573
+ #
1574
+ # @!attribute [rw] instance_running_count
1575
+ # Actual count of running instances.
1576
+ # @return [Integer]
1577
+ #
1578
+ # @!attribute [rw] state
1579
+ # State of instance group. The following values are deprecated:
1580
+ # STARTING, TERMINATED, and FAILED.
1581
+ # @return [String]
1582
+ #
1583
+ # @!attribute [rw] last_state_change_reason
1584
+ # Details regarding the state of the instance group.
1585
+ # @return [String]
1586
+ #
1587
+ # @!attribute [rw] creation_date_time
1588
+ # The date/time the instance group was created.
1589
+ # @return [Time]
1590
+ #
1591
+ # @!attribute [rw] start_date_time
1592
+ # The date/time the instance group was started.
1593
+ # @return [Time]
1594
+ #
1595
+ # @!attribute [rw] ready_date_time
1596
+ # The date/time the instance group was available to the cluster.
1597
+ # @return [Time]
1598
+ #
1599
+ # @!attribute [rw] end_date_time
1600
+ # The date/time the instance group was terminated.
1601
+ # @return [Time]
1602
+ class InstanceGroupDetail < Struct.new(
1603
+ :instance_group_id,
1604
+ :name,
1605
+ :market,
1606
+ :instance_role,
1607
+ :bid_price,
1608
+ :instance_type,
1609
+ :instance_request_count,
1610
+ :instance_running_count,
1611
+ :state,
1612
+ :last_state_change_reason,
1613
+ :creation_date_time,
1614
+ :start_date_time,
1615
+ :ready_date_time,
1616
+ :end_date_time)
1617
+ include Aws::Structure
1618
+ end
1619
+
1620
+ # Modify an instance group size.
1621
+ # @note When making an API call, pass InstanceGroupModifyConfig
1622
+ # data as a hash:
1623
+ #
1624
+ # {
1625
+ # instance_group_id: "XmlStringMaxLen256", # required
1626
+ # instance_count: 1,
1627
+ # ec2_instance_ids_to_terminate: ["InstanceId"],
1628
+ # shrink_policy: {
1629
+ # decommission_timeout: 1,
1630
+ # instance_resize_policy: {
1631
+ # instances_to_terminate: ["InstanceId"],
1632
+ # instances_to_protect: ["InstanceId"],
1633
+ # instance_termination_timeout: 1,
1634
+ # },
1635
+ # },
1636
+ # }
1637
+ # @!attribute [rw] instance_group_id
1638
+ # Unique ID of the instance group to expand or shrink.
1639
+ # @return [String]
1640
+ #
1641
+ # @!attribute [rw] instance_count
1642
+ # Target size for the instance group.
1643
+ # @return [Integer]
1644
+ #
1645
+ # @!attribute [rw] ec2_instance_ids_to_terminate
1646
+ # The EC2 InstanceIds to terminate. After you terminate the instances,
1647
+ # the instance group will not return to its original requested size.
1648
+ # @return [Array<String>]
1649
+ #
1650
+ # @!attribute [rw] shrink_policy
1651
+ # Policy for customizing shrink operations.
1652
+ # @return [Types::ShrinkPolicy]
1653
+ class InstanceGroupModifyConfig < Struct.new(
1654
+ :instance_group_id,
1655
+ :instance_count,
1656
+ :ec2_instance_ids_to_terminate,
1657
+ :shrink_policy)
1658
+ include Aws::Structure
1659
+ end
1660
+
1661
+ # The status change reason details for the instance group.
1662
+ # @!attribute [rw] code
1663
+ # The programmable code for the state change reason.
1664
+ # @return [String]
1665
+ #
1666
+ # @!attribute [rw] message
1667
+ # The status change reason description.
1668
+ # @return [String]
1669
+ class InstanceGroupStateChangeReason < Struct.new(
1670
+ :code,
1671
+ :message)
1672
+ include Aws::Structure
1673
+ end
1674
+
1675
+ # The details of the instance group status.
1676
+ # @!attribute [rw] state
1677
+ # The current state of the instance group.
1678
+ # @return [String]
1679
+ #
1680
+ # @!attribute [rw] state_change_reason
1681
+ # The status change reason details for the instance group.
1682
+ # @return [Types::InstanceGroupStateChangeReason]
1683
+ #
1684
+ # @!attribute [rw] timeline
1685
+ # The timeline of the instance group status over time.
1686
+ # @return [Types::InstanceGroupTimeline]
1687
+ class InstanceGroupStatus < Struct.new(
1688
+ :state,
1689
+ :state_change_reason,
1690
+ :timeline)
1691
+ include Aws::Structure
1692
+ end
1693
+
1694
+ # The timeline of the instance group lifecycle.
1695
+ # @!attribute [rw] creation_date_time
1696
+ # The creation date and time of the instance group.
1697
+ # @return [Time]
1698
+ #
1699
+ # @!attribute [rw] ready_date_time
1700
+ # The date and time when the instance group became ready to perform
1701
+ # tasks.
1702
+ # @return [Time]
1703
+ #
1704
+ # @!attribute [rw] end_date_time
1705
+ # The date and time when the instance group terminated.
1706
+ # @return [Time]
1707
+ class InstanceGroupTimeline < Struct.new(
1708
+ :creation_date_time,
1709
+ :ready_date_time,
1710
+ :end_date_time)
1711
+ include Aws::Structure
1712
+ end
1713
+
1714
+ # Custom policy for requesting termination protection or termination of
1715
+ # specific instances when shrinking an instance group.
1716
+ # @note When making an API call, pass InstanceResizePolicy
1717
+ # data as a hash:
1718
+ #
1719
+ # {
1720
+ # instances_to_terminate: ["InstanceId"],
1721
+ # instances_to_protect: ["InstanceId"],
1722
+ # instance_termination_timeout: 1,
1723
+ # }
1724
+ # @!attribute [rw] instances_to_terminate
1725
+ # Specific list of instances to be terminated when shrinking an
1726
+ # instance group.
1727
+ # @return [Array<String>]
1728
+ #
1729
+ # @!attribute [rw] instances_to_protect
1730
+ # Specific list of instances to be protected when shrinking an
1731
+ # instance group.
1732
+ # @return [Array<String>]
1733
+ #
1734
+ # @!attribute [rw] instance_termination_timeout
1735
+ # Decommissioning timeout override for the specific list of instances
1736
+ # to be terminated.
1737
+ # @return [Integer]
1738
+ class InstanceResizePolicy < Struct.new(
1739
+ :instances_to_terminate,
1740
+ :instances_to_protect,
1741
+ :instance_termination_timeout)
1742
+ include Aws::Structure
1743
+ end
1744
+
1745
+ # The details of the status change reason for the instance.
1746
+ # @!attribute [rw] code
1747
+ # The programmable code for the state change reason.
1748
+ # @return [String]
1749
+ #
1750
+ # @!attribute [rw] message
1751
+ # The status change reason description.
1752
+ # @return [String]
1753
+ class InstanceStateChangeReason < Struct.new(
1754
+ :code,
1755
+ :message)
1756
+ include Aws::Structure
1757
+ end
1758
+
1759
+ # The instance status details.
1760
+ # @!attribute [rw] state
1761
+ # The current state of the instance.
1762
+ # @return [String]
1763
+ #
1764
+ # @!attribute [rw] state_change_reason
1765
+ # The details of the status change reason for the instance.
1766
+ # @return [Types::InstanceStateChangeReason]
1767
+ #
1768
+ # @!attribute [rw] timeline
1769
+ # The timeline of the instance status over time.
1770
+ # @return [Types::InstanceTimeline]
1771
+ class InstanceStatus < Struct.new(
1772
+ :state,
1773
+ :state_change_reason,
1774
+ :timeline)
1775
+ include Aws::Structure
1776
+ end
1777
+
1778
+ # The timeline of the instance lifecycle.
1779
+ # @!attribute [rw] creation_date_time
1780
+ # The creation date and time of the instance.
1781
+ # @return [Time]
1782
+ #
1783
+ # @!attribute [rw] ready_date_time
1784
+ # The date and time when the instance was ready to perform tasks.
1785
+ # @return [Time]
1786
+ #
1787
+ # @!attribute [rw] end_date_time
1788
+ # The date and time when the instance was terminated.
1789
+ # @return [Time]
1790
+ class InstanceTimeline < Struct.new(
1791
+ :creation_date_time,
1792
+ :ready_date_time,
1793
+ :end_date_time)
1794
+ include Aws::Structure
1795
+ end
1796
+
1797
+ # A description of a job flow.
1798
+ # @!attribute [rw] job_flow_id
1799
+ # The job flow identifier.
1800
+ # @return [String]
1801
+ #
1802
+ # @!attribute [rw] name
1803
+ # The name of the job flow.
1804
+ # @return [String]
1805
+ #
1806
+ # @!attribute [rw] log_uri
1807
+ # The location in Amazon S3 where log files for the job are stored.
1808
+ # @return [String]
1809
+ #
1810
+ # @!attribute [rw] ami_version
1811
+ # The version of the AMI used to initialize Amazon EC2 instances in
1812
+ # the job flow. For a list of AMI versions currently supported by
1813
+ # Amazon EMR, see [AMI Versions Supported in EMR][1] in the *Amazon
1814
+ # EMR Developer Guide.*
1815
+ #
1816
+ #
1817
+ #
1818
+ # [1]: http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/EnvironmentConfig_AMIVersion.html#ami-versions-supported
1819
+ # @return [String]
1820
+ #
1821
+ # @!attribute [rw] execution_status_detail
1822
+ # Describes the execution status of the job flow.
1823
+ # @return [Types::JobFlowExecutionStatusDetail]
1824
+ #
1825
+ # @!attribute [rw] instances
1826
+ # Describes the Amazon EC2 instances of the job flow.
1827
+ # @return [Types::JobFlowInstancesDetail]
1828
+ #
1829
+ # @!attribute [rw] steps
1830
+ # A list of steps run by the job flow.
1831
+ # @return [Array<Types::StepDetail>]
1832
+ #
1833
+ # @!attribute [rw] bootstrap_actions
1834
+ # A list of the bootstrap actions run by the job flow.
1835
+ # @return [Array<Types::BootstrapActionDetail>]
1836
+ #
1837
+ # @!attribute [rw] supported_products
1838
+ # A list of strings set by third party software when the job flow is
1839
+ # launched. If you are not using third party software to manage the
1840
+ # job flow this value is empty.
1841
+ # @return [Array<String>]
1842
+ #
1843
+ # @!attribute [rw] visible_to_all_users
1844
+ # Specifies whether the job flow is visible to all IAM users of the
1845
+ # AWS account associated with the job flow. If this value is set to
1846
+ # `true`, all IAM users of that AWS account can view and (if they have
1847
+ # the proper policy permissions set) manage the job flow. If it is set
1848
+ # to `false`, only the IAM user that created the job flow can view and
1849
+ # manage it. This value can be changed using the SetVisibleToAllUsers
1850
+ # action.
1851
+ # @return [Boolean]
1852
+ #
1853
+ # @!attribute [rw] job_flow_role
1854
+ # The IAM role that was specified when the job flow was launched. The
1855
+ # EC2 instances of the job flow assume this role.
1856
+ # @return [String]
1857
+ #
1858
+ # @!attribute [rw] service_role
1859
+ # The IAM role that will be assumed by the Amazon EMR service to
1860
+ # access AWS resources on your behalf.
1861
+ # @return [String]
1862
+ #
1863
+ # @!attribute [rw] auto_scaling_role
1864
+ # An IAM role for automatic scaling policies. The default role is
1865
+ # `EMR_AutoScaling_DefaultRole`. The IAM role provides a way for the
1866
+ # automatic scaling feature to get the required permissions it needs
1867
+ # to launch and terminate EC2 instances in an instance group.
1868
+ # @return [String]
1869
+ #
1870
+ # @!attribute [rw] scale_down_behavior
1871
+ # The way that individual Amazon EC2 instances terminate when an
1872
+ # automatic scale-in activity occurs or an instance group is resized.
1873
+ # `TERMINATE_AT_INSTANCE_HOUR` indicates that Amazon EMR terminates
1874
+ # nodes at the instance-hour boundary, regardless of when the request
1875
+ # to terminate the instance was submitted. This option is only
1876
+ # available with Amazon EMR 5.1.0 and later and is the default for
1877
+ # clusters created using that version. `TERMINATE_AT_TASK_COMPLETION`
1878
+ # indicates that Amazon EMR blacklists and drains tasks from nodes
1879
+ # before terminating the Amazon EC2 instances, regardless of the
1880
+ # instance-hour boundary. With either behavior, Amazon EMR removes the
1881
+ # least active nodes first and blocks instance termination if it could
1882
+ # lead to HDFS corruption. `TERMINATE_AT_TASK_COMPLETION` available
1883
+ # only in Amazon EMR version 4.1.0 and later, and is the default for
1884
+ # versions of Amazon EMR earlier than 5.1.0.
1885
+ # @return [String]
1886
+ class JobFlowDetail < Struct.new(
1887
+ :job_flow_id,
1888
+ :name,
1889
+ :log_uri,
1890
+ :ami_version,
1891
+ :execution_status_detail,
1892
+ :instances,
1893
+ :steps,
1894
+ :bootstrap_actions,
1895
+ :supported_products,
1896
+ :visible_to_all_users,
1897
+ :job_flow_role,
1898
+ :service_role,
1899
+ :auto_scaling_role,
1900
+ :scale_down_behavior)
1901
+ include Aws::Structure
1902
+ end
1903
+
1904
+ # Describes the status of the job flow.
1905
+ # @!attribute [rw] state
1906
+ # The state of the job flow.
1907
+ # @return [String]
1908
+ #
1909
+ # @!attribute [rw] creation_date_time
1910
+ # The creation date and time of the job flow.
1911
+ # @return [Time]
1912
+ #
1913
+ # @!attribute [rw] start_date_time
1914
+ # The start date and time of the job flow.
1915
+ # @return [Time]
1916
+ #
1917
+ # @!attribute [rw] ready_date_time
1918
+ # The date and time when the job flow was ready to start running
1919
+ # bootstrap actions.
1920
+ # @return [Time]
1921
+ #
1922
+ # @!attribute [rw] end_date_time
1923
+ # The completion date and time of the job flow.
1924
+ # @return [Time]
1925
+ #
1926
+ # @!attribute [rw] last_state_change_reason
1927
+ # Description of the job flow last changed state.
1928
+ # @return [String]
1929
+ class JobFlowExecutionStatusDetail < Struct.new(
1930
+ :state,
1931
+ :creation_date_time,
1932
+ :start_date_time,
1933
+ :ready_date_time,
1934
+ :end_date_time,
1935
+ :last_state_change_reason)
1936
+ include Aws::Structure
1937
+ end
1938
+
1939
+ # A description of the Amazon EC2 instance running the job flow. A valid
1940
+ # JobFlowInstancesConfig must contain at least InstanceGroups, which is
1941
+ # the recommended configuration. However, a valid alternative is to have
1942
+ # MasterInstanceType, SlaveInstanceType, and InstanceCount (all three
1943
+ # must be present).
1944
+ # @note When making an API call, pass JobFlowInstancesConfig
1945
+ # data as a hash:
1946
+ #
1947
+ # {
1948
+ # master_instance_type: "InstanceType",
1949
+ # slave_instance_type: "InstanceType",
1950
+ # instance_count: 1,
1951
+ # instance_groups: [
1952
+ # {
1953
+ # name: "XmlStringMaxLen256",
1954
+ # market: "ON_DEMAND", # accepts ON_DEMAND, SPOT
1955
+ # instance_role: "MASTER", # required, accepts MASTER, CORE, TASK
1956
+ # bid_price: "XmlStringMaxLen256",
1957
+ # instance_type: "InstanceType", # required
1958
+ # instance_count: 1, # required
1959
+ # configurations: [
1960
+ # {
1961
+ # classification: "String",
1962
+ # configurations: {
1963
+ # # recursive ConfigurationList
1964
+ # },
1965
+ # properties: {
1966
+ # "String" => "String",
1967
+ # },
1968
+ # },
1969
+ # ],
1970
+ # ebs_configuration: {
1971
+ # ebs_block_device_configs: [
1972
+ # {
1973
+ # volume_specification: { # required
1974
+ # volume_type: "String", # required
1975
+ # iops: 1,
1976
+ # size_in_gb: 1, # required
1977
+ # },
1978
+ # volumes_per_instance: 1,
1979
+ # },
1980
+ # ],
1981
+ # ebs_optimized: false,
1982
+ # },
1983
+ # auto_scaling_policy: {
1984
+ # constraints: { # required
1985
+ # min_capacity: 1, # required
1986
+ # max_capacity: 1, # required
1987
+ # },
1988
+ # rules: [ # required
1989
+ # {
1990
+ # name: "String", # required
1991
+ # description: "String",
1992
+ # action: { # required
1993
+ # market: "ON_DEMAND", # accepts ON_DEMAND, SPOT
1994
+ # simple_scaling_policy_configuration: { # required
1995
+ # adjustment_type: "CHANGE_IN_CAPACITY", # accepts CHANGE_IN_CAPACITY, PERCENT_CHANGE_IN_CAPACITY, EXACT_CAPACITY
1996
+ # scaling_adjustment: 1, # required
1997
+ # cool_down: 1,
1998
+ # },
1999
+ # },
2000
+ # trigger: { # required
2001
+ # cloud_watch_alarm_definition: { # required
2002
+ # comparison_operator: "GREATER_THAN_OR_EQUAL", # required, accepts GREATER_THAN_OR_EQUAL, GREATER_THAN, LESS_THAN, LESS_THAN_OR_EQUAL
2003
+ # evaluation_periods: 1,
2004
+ # metric_name: "String", # required
2005
+ # namespace: "String",
2006
+ # period: 1, # required
2007
+ # statistic: "SAMPLE_COUNT", # accepts SAMPLE_COUNT, AVERAGE, SUM, MINIMUM, MAXIMUM
2008
+ # threshold: 1.0, # required
2009
+ # unit: "NONE", # accepts NONE, SECONDS, MICRO_SECONDS, MILLI_SECONDS, BYTES, KILO_BYTES, MEGA_BYTES, GIGA_BYTES, TERA_BYTES, BITS, KILO_BITS, MEGA_BITS, GIGA_BITS, TERA_BITS, PERCENT, COUNT, BYTES_PER_SECOND, KILO_BYTES_PER_SECOND, MEGA_BYTES_PER_SECOND, GIGA_BYTES_PER_SECOND, TERA_BYTES_PER_SECOND, BITS_PER_SECOND, KILO_BITS_PER_SECOND, MEGA_BITS_PER_SECOND, GIGA_BITS_PER_SECOND, TERA_BITS_PER_SECOND, COUNT_PER_SECOND
2010
+ # dimensions: [
2011
+ # {
2012
+ # key: "String",
2013
+ # value: "String",
2014
+ # },
2015
+ # ],
2016
+ # },
2017
+ # },
2018
+ # },
2019
+ # ],
2020
+ # },
2021
+ # },
2022
+ # ],
2023
+ # ec2_key_name: "XmlStringMaxLen256",
2024
+ # placement: {
2025
+ # availability_zone: "XmlString", # required
2026
+ # },
2027
+ # keep_job_flow_alive_when_no_steps: false,
2028
+ # termination_protected: false,
2029
+ # hadoop_version: "XmlStringMaxLen256",
2030
+ # ec2_subnet_id: "XmlStringMaxLen256",
2031
+ # emr_managed_master_security_group: "XmlStringMaxLen256",
2032
+ # emr_managed_slave_security_group: "XmlStringMaxLen256",
2033
+ # service_access_security_group: "XmlStringMaxLen256",
2034
+ # additional_master_security_groups: ["XmlStringMaxLen256"],
2035
+ # additional_slave_security_groups: ["XmlStringMaxLen256"],
2036
+ # }
2037
+ # @!attribute [rw] master_instance_type
2038
+ # The EC2 instance type of the master node.
2039
+ # @return [String]
2040
+ #
2041
+ # @!attribute [rw] slave_instance_type
2042
+ # The EC2 instance type of the slave nodes.
2043
+ # @return [String]
2044
+ #
2045
+ # @!attribute [rw] instance_count
2046
+ # The number of EC2 instances used to execute the job flow.
2047
+ # @return [Integer]
2048
+ #
2049
+ # @!attribute [rw] instance_groups
2050
+ # Configuration for the job flow's instance groups.
2051
+ # @return [Array<Types::InstanceGroupConfig>]
2052
+ #
2053
+ # @!attribute [rw] ec2_key_name
2054
+ # The name of the EC2 key pair that can be used to ssh to the master
2055
+ # node as the user called "hadoop."
2056
+ # @return [String]
2057
+ #
2058
+ # @!attribute [rw] placement
2059
+ # The Availability Zone the job flow will run in.
2060
+ # @return [Types::PlacementType]
2061
+ #
2062
+ # @!attribute [rw] keep_job_flow_alive_when_no_steps
2063
+ # Specifies whether the job flow should be kept alive after completing
2064
+ # all steps.
2065
+ # @return [Boolean]
2066
+ #
2067
+ # @!attribute [rw] termination_protected
2068
+ # Specifies whether to lock the job flow to prevent the Amazon EC2
2069
+ # instances from being terminated by API call, user intervention, or
2070
+ # in the event of a job flow error.
2071
+ # @return [Boolean]
2072
+ #
2073
+ # @!attribute [rw] hadoop_version
2074
+ # The Hadoop version for the job flow. Valid inputs are "0.18"
2075
+ # (deprecated), "0.20" (deprecated), "0.20.205" (deprecated),
2076
+ # "1.0.3", "2.2.0", or "2.4.0". If you do not set this value,
2077
+ # the default of 0.18 is used, unless the AmiVersion parameter is set
2078
+ # in the RunJobFlow call, in which case the default version of Hadoop
2079
+ # for that AMI version is used.
2080
+ # @return [String]
2081
+ #
2082
+ # @!attribute [rw] ec2_subnet_id
2083
+ # To launch the job flow in Amazon Virtual Private Cloud (Amazon VPC),
2084
+ # set this parameter to the identifier of the Amazon VPC subnet where
2085
+ # you want the job flow to launch. If you do not specify this value,
2086
+ # the job flow is launched in the normal Amazon Web Services cloud,
2087
+ # outside of an Amazon VPC.
2088
+ #
2089
+ # Amazon VPC currently does not support cluster compute quadruple
2090
+ # extra large (cc1.4xlarge) instances. Thus you cannot specify the
2091
+ # cc1.4xlarge instance type for nodes of a job flow launched in a
2092
+ # Amazon VPC.
2093
+ # @return [String]
2094
+ #
2095
+ # @!attribute [rw] emr_managed_master_security_group
2096
+ # The identifier of the Amazon EC2 security group for the master node.
2097
+ # @return [String]
2098
+ #
2099
+ # @!attribute [rw] emr_managed_slave_security_group
2100
+ # The identifier of the Amazon EC2 security group for the slave nodes.
2101
+ # @return [String]
2102
+ #
2103
+ # @!attribute [rw] service_access_security_group
2104
+ # The identifier of the Amazon EC2 security group for the Amazon EMR
2105
+ # service to access clusters in VPC private subnets.
2106
+ # @return [String]
2107
+ #
2108
+ # @!attribute [rw] additional_master_security_groups
2109
+ # A list of additional Amazon EC2 security group IDs for the master
2110
+ # node.
2111
+ # @return [Array<String>]
2112
+ #
2113
+ # @!attribute [rw] additional_slave_security_groups
2114
+ # A list of additional Amazon EC2 security group IDs for the slave
2115
+ # nodes.
2116
+ # @return [Array<String>]
2117
+ class JobFlowInstancesConfig < Struct.new(
2118
+ :master_instance_type,
2119
+ :slave_instance_type,
2120
+ :instance_count,
2121
+ :instance_groups,
2122
+ :ec2_key_name,
2123
+ :placement,
2124
+ :keep_job_flow_alive_when_no_steps,
2125
+ :termination_protected,
2126
+ :hadoop_version,
2127
+ :ec2_subnet_id,
2128
+ :emr_managed_master_security_group,
2129
+ :emr_managed_slave_security_group,
2130
+ :service_access_security_group,
2131
+ :additional_master_security_groups,
2132
+ :additional_slave_security_groups)
2133
+ include Aws::Structure
2134
+ end
2135
+
2136
+ # Specify the type of Amazon EC2 instances to run the job flow on.
2137
+ # @!attribute [rw] master_instance_type
2138
+ # The Amazon EC2 master node instance type.
2139
+ # @return [String]
2140
+ #
2141
+ # @!attribute [rw] master_public_dns_name
2142
+ # The DNS name of the master node.
2143
+ # @return [String]
2144
+ #
2145
+ # @!attribute [rw] master_instance_id
2146
+ # The Amazon EC2 instance identifier of the master node.
2147
+ # @return [String]
2148
+ #
2149
+ # @!attribute [rw] slave_instance_type
2150
+ # The Amazon EC2 slave node instance type.
2151
+ # @return [String]
2152
+ #
2153
+ # @!attribute [rw] instance_count
2154
+ # The number of Amazon EC2 instances in the cluster. If the value is
2155
+ # 1, the same instance serves as both the master and slave node. If
2156
+ # the value is greater than 1, one instance is the master node and all
2157
+ # others are slave nodes.
2158
+ # @return [Integer]
2159
+ #
2160
+ # @!attribute [rw] instance_groups
2161
+ # Details about the job flow's instance groups.
2162
+ # @return [Array<Types::InstanceGroupDetail>]
2163
+ #
2164
+ # @!attribute [rw] normalized_instance_hours
2165
+ # An approximation of the cost of the job flow, represented in
2166
+ # m1.small/hours. This value is incremented one time for every hour
2167
+ # that an m1.small runs. Larger instances are weighted more, so an
2168
+ # Amazon EC2 instance that is roughly four times more expensive would
2169
+ # result in the normalized instance hours being incremented by four.
2170
+ # This result is only an approximation and does not reflect the actual
2171
+ # billing rate.
2172
+ # @return [Integer]
2173
+ #
2174
+ # @!attribute [rw] ec2_key_name
2175
+ # The name of an Amazon EC2 key pair that can be used to ssh to the
2176
+ # master node of job flow.
2177
+ # @return [String]
2178
+ #
2179
+ # @!attribute [rw] ec2_subnet_id
2180
+ # For job flows launched within Amazon Virtual Private Cloud, this
2181
+ # value specifies the identifier of the subnet where the job flow was
2182
+ # launched.
2183
+ # @return [String]
2184
+ #
2185
+ # @!attribute [rw] placement
2186
+ # The Amazon EC2 Availability Zone for the job flow.
2187
+ # @return [Types::PlacementType]
2188
+ #
2189
+ # @!attribute [rw] keep_job_flow_alive_when_no_steps
2190
+ # Specifies whether the job flow should terminate after completing all
2191
+ # steps.
2192
+ # @return [Boolean]
2193
+ #
2194
+ # @!attribute [rw] termination_protected
2195
+ # Specifies whether the Amazon EC2 instances in the cluster are
2196
+ # protected from termination by API calls, user intervention, or in
2197
+ # the event of a job flow error.
2198
+ # @return [Boolean]
2199
+ #
2200
+ # @!attribute [rw] hadoop_version
2201
+ # The Hadoop version for the job flow.
2202
+ # @return [String]
2203
+ class JobFlowInstancesDetail < Struct.new(
2204
+ :master_instance_type,
2205
+ :master_public_dns_name,
2206
+ :master_instance_id,
2207
+ :slave_instance_type,
2208
+ :instance_count,
2209
+ :instance_groups,
2210
+ :normalized_instance_hours,
2211
+ :ec2_key_name,
2212
+ :ec2_subnet_id,
2213
+ :placement,
2214
+ :keep_job_flow_alive_when_no_steps,
2215
+ :termination_protected,
2216
+ :hadoop_version)
2217
+ include Aws::Structure
2218
+ end
2219
+
2220
+ # A key value pair.
2221
+ # @note When making an API call, pass KeyValue
2222
+ # data as a hash:
2223
+ #
2224
+ # {
2225
+ # key: "XmlString",
2226
+ # value: "XmlString",
2227
+ # }
2228
+ # @!attribute [rw] key
2229
+ # The unique identifier of a key value pair.
2230
+ # @return [String]
2231
+ #
2232
+ # @!attribute [rw] value
2233
+ # The value part of the identified key.
2234
+ # @return [String]
2235
+ class KeyValue < Struct.new(
2236
+ :key,
2237
+ :value)
2238
+ include Aws::Structure
2239
+ end
2240
+
2241
+ # This input determines which bootstrap actions to retrieve.
2242
+ # @note When making an API call, pass ListBootstrapActionsInput
2243
+ # data as a hash:
2244
+ #
2245
+ # {
2246
+ # cluster_id: "ClusterId", # required
2247
+ # marker: "Marker",
2248
+ # }
2249
+ # @!attribute [rw] cluster_id
2250
+ # The cluster identifier for the bootstrap actions to list.
2251
+ # @return [String]
2252
+ #
2253
+ # @!attribute [rw] marker
2254
+ # The pagination token that indicates the next set of results to
2255
+ # retrieve.
2256
+ # @return [String]
2257
+ class ListBootstrapActionsInput < Struct.new(
2258
+ :cluster_id,
2259
+ :marker)
2260
+ include Aws::Structure
2261
+ end
2262
+
2263
+ # This output contains the bootstrap actions detail.
2264
+ # @!attribute [rw] bootstrap_actions
2265
+ # The bootstrap actions associated with the cluster.
2266
+ # @return [Array<Types::Command>]
2267
+ #
2268
+ # @!attribute [rw] marker
2269
+ # The pagination token that indicates the next set of results to
2270
+ # retrieve.
2271
+ # @return [String]
2272
+ class ListBootstrapActionsOutput < Struct.new(
2273
+ :bootstrap_actions,
2274
+ :marker)
2275
+ include Aws::Structure
2276
+ end
2277
+
2278
+ # This input determines how the ListClusters action filters the list of
2279
+ # clusters that it returns.
2280
+ # @note When making an API call, pass ListClustersInput
2281
+ # data as a hash:
2282
+ #
2283
+ # {
2284
+ # created_after: Time.now,
2285
+ # created_before: Time.now,
2286
+ # cluster_states: ["STARTING"], # accepts STARTING, BOOTSTRAPPING, RUNNING, WAITING, TERMINATING, TERMINATED, TERMINATED_WITH_ERRORS
2287
+ # marker: "Marker",
2288
+ # }
2289
+ # @!attribute [rw] created_after
2290
+ # The creation date and time beginning value filter for listing
2291
+ # clusters.
2292
+ # @return [Time]
2293
+ #
2294
+ # @!attribute [rw] created_before
2295
+ # The creation date and time end value filter for listing clusters.
2296
+ # @return [Time]
2297
+ #
2298
+ # @!attribute [rw] cluster_states
2299
+ # The cluster state filters to apply when listing clusters.
2300
+ # @return [Array<String>]
2301
+ #
2302
+ # @!attribute [rw] marker
2303
+ # The pagination token that indicates the next set of results to
2304
+ # retrieve.
2305
+ # @return [String]
2306
+ class ListClustersInput < Struct.new(
2307
+ :created_after,
2308
+ :created_before,
2309
+ :cluster_states,
2310
+ :marker)
2311
+ include Aws::Structure
2312
+ end
2313
+
2314
+ # This contains a ClusterSummaryList with the cluster details; for
2315
+ # example, the cluster IDs, names, and status.
2316
+ # @!attribute [rw] clusters
2317
+ # The list of clusters for the account based on the given filters.
2318
+ # @return [Array<Types::ClusterSummary>]
2319
+ #
2320
+ # @!attribute [rw] marker
2321
+ # The pagination token that indicates the next set of results to
2322
+ # retrieve.
2323
+ # @return [String]
2324
+ class ListClustersOutput < Struct.new(
2325
+ :clusters,
2326
+ :marker)
2327
+ include Aws::Structure
2328
+ end
2329
+
2330
+ # This input determines which instance groups to retrieve.
2331
+ # @note When making an API call, pass ListInstanceGroupsInput
2332
+ # data as a hash:
2333
+ #
2334
+ # {
2335
+ # cluster_id: "ClusterId", # required
2336
+ # marker: "Marker",
2337
+ # }
2338
+ # @!attribute [rw] cluster_id
2339
+ # The identifier of the cluster for which to list the instance groups.
2340
+ # @return [String]
2341
+ #
2342
+ # @!attribute [rw] marker
2343
+ # The pagination token that indicates the next set of results to
2344
+ # retrieve.
2345
+ # @return [String]
2346
+ class ListInstanceGroupsInput < Struct.new(
2347
+ :cluster_id,
2348
+ :marker)
2349
+ include Aws::Structure
2350
+ end
2351
+
2352
+ # This input determines which instance groups to retrieve.
2353
+ # @!attribute [rw] instance_groups
2354
+ # The list of instance groups for the cluster and given filters.
2355
+ # @return [Array<Types::InstanceGroup>]
2356
+ #
2357
+ # @!attribute [rw] marker
2358
+ # The pagination token that indicates the next set of results to
2359
+ # retrieve.
2360
+ # @return [String]
2361
+ class ListInstanceGroupsOutput < Struct.new(
2362
+ :instance_groups,
2363
+ :marker)
2364
+ include Aws::Structure
2365
+ end
2366
+
2367
+ # This input determines which instances to list.
2368
+ # @note When making an API call, pass ListInstancesInput
2369
+ # data as a hash:
2370
+ #
2371
+ # {
2372
+ # cluster_id: "ClusterId", # required
2373
+ # instance_group_id: "InstanceGroupId",
2374
+ # instance_group_types: ["MASTER"], # accepts MASTER, CORE, TASK
2375
+ # instance_states: ["AWAITING_FULFILLMENT"], # accepts AWAITING_FULFILLMENT, PROVISIONING, BOOTSTRAPPING, RUNNING, TERMINATED
2376
+ # marker: "Marker",
2377
+ # }
2378
+ # @!attribute [rw] cluster_id
2379
+ # The identifier of the cluster for which to list the instances.
2380
+ # @return [String]
2381
+ #
2382
+ # @!attribute [rw] instance_group_id
2383
+ # The identifier of the instance group for which to list the
2384
+ # instances.
2385
+ # @return [String]
2386
+ #
2387
+ # @!attribute [rw] instance_group_types
2388
+ # The type of instance group for which to list the instances.
2389
+ # @return [Array<String>]
2390
+ #
2391
+ # @!attribute [rw] instance_states
2392
+ # A list of instance states that will filter the instances returned
2393
+ # with this request.
2394
+ # @return [Array<String>]
2395
+ #
2396
+ # @!attribute [rw] marker
2397
+ # The pagination token that indicates the next set of results to
2398
+ # retrieve.
2399
+ # @return [String]
2400
+ class ListInstancesInput < Struct.new(
2401
+ :cluster_id,
2402
+ :instance_group_id,
2403
+ :instance_group_types,
2404
+ :instance_states,
2405
+ :marker)
2406
+ include Aws::Structure
2407
+ end
2408
+
2409
+ # This output contains the list of instances.
2410
+ # @!attribute [rw] instances
2411
+ # The list of instances for the cluster and given filters.
2412
+ # @return [Array<Types::Instance>]
2413
+ #
2414
+ # @!attribute [rw] marker
2415
+ # The pagination token that indicates the next set of results to
2416
+ # retrieve.
2417
+ # @return [String]
2418
+ class ListInstancesOutput < Struct.new(
2419
+ :instances,
2420
+ :marker)
2421
+ include Aws::Structure
2422
+ end
2423
+
2424
+ # @note When making an API call, pass ListSecurityConfigurationsInput
2425
+ # data as a hash:
2426
+ #
2427
+ # {
2428
+ # marker: "Marker",
2429
+ # }
2430
+ # @!attribute [rw] marker
2431
+ # The pagination token that indicates the set of results to retrieve.
2432
+ # @return [String]
2433
+ class ListSecurityConfigurationsInput < Struct.new(
2434
+ :marker)
2435
+ include Aws::Structure
2436
+ end
2437
+
2438
+ # @!attribute [rw] security_configurations
2439
+ # The creation date and time, and name, of each security
2440
+ # configuration.
2441
+ # @return [Array<Types::SecurityConfigurationSummary>]
2442
+ #
2443
+ # @!attribute [rw] marker
2444
+ # A pagination token that indicates the next set of results to
2445
+ # retrieve. Include the marker in the next ListSecurityConfiguration
2446
+ # call to retrieve the next page of results, if required.
2447
+ # @return [String]
2448
+ class ListSecurityConfigurationsOutput < Struct.new(
2449
+ :security_configurations,
2450
+ :marker)
2451
+ include Aws::Structure
2452
+ end
2453
+
2454
+ # This input determines which steps to list.
2455
+ # @note When making an API call, pass ListStepsInput
2456
+ # data as a hash:
2457
+ #
2458
+ # {
2459
+ # cluster_id: "ClusterId", # required
2460
+ # step_states: ["PENDING"], # accepts PENDING, CANCEL_PENDING, RUNNING, COMPLETED, CANCELLED, FAILED, INTERRUPTED
2461
+ # step_ids: ["XmlString"],
2462
+ # marker: "Marker",
2463
+ # }
2464
+ # @!attribute [rw] cluster_id
2465
+ # The identifier of the cluster for which to list the steps.
2466
+ # @return [String]
2467
+ #
2468
+ # @!attribute [rw] step_states
2469
+ # The filter to limit the step list based on certain states.
2470
+ # @return [Array<String>]
2471
+ #
2472
+ # @!attribute [rw] step_ids
2473
+ # The filter to limit the step list based on the identifier of the
2474
+ # steps.
2475
+ # @return [Array<String>]
2476
+ #
2477
+ # @!attribute [rw] marker
2478
+ # The pagination token that indicates the next set of results to
2479
+ # retrieve.
2480
+ # @return [String]
2481
+ class ListStepsInput < Struct.new(
2482
+ :cluster_id,
2483
+ :step_states,
2484
+ :step_ids,
2485
+ :marker)
2486
+ include Aws::Structure
2487
+ end
2488
+
2489
+ # This output contains the list of steps returned in reverse order. This
2490
+ # means that the last step is the first element in the list.
2491
+ # @!attribute [rw] steps
2492
+ # The filtered list of steps for the cluster.
2493
+ # @return [Array<Types::StepSummary>]
2494
+ #
2495
+ # @!attribute [rw] marker
2496
+ # The pagination token that indicates the next set of results to
2497
+ # retrieve.
2498
+ # @return [String]
2499
+ class ListStepsOutput < Struct.new(
2500
+ :steps,
2501
+ :marker)
2502
+ include Aws::Structure
2503
+ end
2504
+
2505
+ # A CloudWatch dimension, which is specified using a `Key` (known as a
2506
+ # `Name` in CloudWatch), Value pair. By default, Amazon EMR uses one
2507
+ # dimension whose `Key` is `JobFlowID` and `Value` is a variable
2508
+ # representing the cluster ID, which is `$\{emr:cluster_id\}`. This
2509
+ # enables the rule to bootstrap when the cluster ID becomes available,
2510
+ # and also enables a single automatic scaling policy to be reused for
2511
+ # multiple clusters and instance groups.
2512
+ # @note When making an API call, pass MetricDimension
2513
+ # data as a hash:
2514
+ #
2515
+ # {
2516
+ # key: "String",
2517
+ # value: "String",
2518
+ # }
2519
+ # @!attribute [rw] key
2520
+ # The dimension name.
2521
+ # @return [String]
2522
+ #
2523
+ # @!attribute [rw] value
2524
+ # The dimension value.
2525
+ # @return [String]
2526
+ class MetricDimension < Struct.new(
2527
+ :key,
2528
+ :value)
2529
+ include Aws::Structure
2530
+ end
2531
+
2532
+ # Change the size of some instance groups.
2533
+ # @note When making an API call, pass ModifyInstanceGroupsInput
2534
+ # data as a hash:
2535
+ #
2536
+ # {
2537
+ # cluster_id: "ClusterId",
2538
+ # instance_groups: [
2539
+ # {
2540
+ # instance_group_id: "XmlStringMaxLen256", # required
2541
+ # instance_count: 1,
2542
+ # ec2_instance_ids_to_terminate: ["InstanceId"],
2543
+ # shrink_policy: {
2544
+ # decommission_timeout: 1,
2545
+ # instance_resize_policy: {
2546
+ # instances_to_terminate: ["InstanceId"],
2547
+ # instances_to_protect: ["InstanceId"],
2548
+ # instance_termination_timeout: 1,
2549
+ # },
2550
+ # },
2551
+ # },
2552
+ # ],
2553
+ # }
2554
+ # @!attribute [rw] cluster_id
2555
+ # The ID of the cluster to which the instance group belongs.
2556
+ # @return [String]
2557
+ #
2558
+ # @!attribute [rw] instance_groups
2559
+ # Instance groups to change.
2560
+ # @return [Array<Types::InstanceGroupModifyConfig>]
2561
+ class ModifyInstanceGroupsInput < Struct.new(
2562
+ :cluster_id,
2563
+ :instance_groups)
2564
+ include Aws::Structure
2565
+ end
2566
+
2567
+ # The Amazon EC2 location for the job flow.
2568
+ # @note When making an API call, pass PlacementType
2569
+ # data as a hash:
2570
+ #
2571
+ # {
2572
+ # availability_zone: "XmlString", # required
2573
+ # }
2574
+ # @!attribute [rw] availability_zone
2575
+ # The Amazon EC2 Availability Zone for the job flow.
2576
+ # @return [String]
2577
+ class PlacementType < Struct.new(
2578
+ :availability_zone)
2579
+ include Aws::Structure
2580
+ end
2581
+
2582
+ # @note When making an API call, pass PutAutoScalingPolicyInput
2583
+ # data as a hash:
2584
+ #
2585
+ # {
2586
+ # cluster_id: "ClusterId", # required
2587
+ # instance_group_id: "InstanceGroupId", # required
2588
+ # auto_scaling_policy: { # required
2589
+ # constraints: { # required
2590
+ # min_capacity: 1, # required
2591
+ # max_capacity: 1, # required
2592
+ # },
2593
+ # rules: [ # required
2594
+ # {
2595
+ # name: "String", # required
2596
+ # description: "String",
2597
+ # action: { # required
2598
+ # market: "ON_DEMAND", # accepts ON_DEMAND, SPOT
2599
+ # simple_scaling_policy_configuration: { # required
2600
+ # adjustment_type: "CHANGE_IN_CAPACITY", # accepts CHANGE_IN_CAPACITY, PERCENT_CHANGE_IN_CAPACITY, EXACT_CAPACITY
2601
+ # scaling_adjustment: 1, # required
2602
+ # cool_down: 1,
2603
+ # },
2604
+ # },
2605
+ # trigger: { # required
2606
+ # cloud_watch_alarm_definition: { # required
2607
+ # comparison_operator: "GREATER_THAN_OR_EQUAL", # required, accepts GREATER_THAN_OR_EQUAL, GREATER_THAN, LESS_THAN, LESS_THAN_OR_EQUAL
2608
+ # evaluation_periods: 1,
2609
+ # metric_name: "String", # required
2610
+ # namespace: "String",
2611
+ # period: 1, # required
2612
+ # statistic: "SAMPLE_COUNT", # accepts SAMPLE_COUNT, AVERAGE, SUM, MINIMUM, MAXIMUM
2613
+ # threshold: 1.0, # required
2614
+ # unit: "NONE", # accepts NONE, SECONDS, MICRO_SECONDS, MILLI_SECONDS, BYTES, KILO_BYTES, MEGA_BYTES, GIGA_BYTES, TERA_BYTES, BITS, KILO_BITS, MEGA_BITS, GIGA_BITS, TERA_BITS, PERCENT, COUNT, BYTES_PER_SECOND, KILO_BYTES_PER_SECOND, MEGA_BYTES_PER_SECOND, GIGA_BYTES_PER_SECOND, TERA_BYTES_PER_SECOND, BITS_PER_SECOND, KILO_BITS_PER_SECOND, MEGA_BITS_PER_SECOND, GIGA_BITS_PER_SECOND, TERA_BITS_PER_SECOND, COUNT_PER_SECOND
2615
+ # dimensions: [
2616
+ # {
2617
+ # key: "String",
2618
+ # value: "String",
2619
+ # },
2620
+ # ],
2621
+ # },
2622
+ # },
2623
+ # },
2624
+ # ],
2625
+ # },
2626
+ # }
2627
+ # @!attribute [rw] cluster_id
2628
+ # Specifies the ID of a cluster. The instance group to which the
2629
+ # automatic scaling policy is applied is within this cluster.
2630
+ # @return [String]
2631
+ #
2632
+ # @!attribute [rw] instance_group_id
2633
+ # Specifies the ID of the instance group to which the automatic
2634
+ # scaling policy is applied.
2635
+ # @return [String]
2636
+ #
2637
+ # @!attribute [rw] auto_scaling_policy
2638
+ # Specifies the definition of the automatic scaling policy.
2639
+ # @return [Types::AutoScalingPolicy]
2640
+ class PutAutoScalingPolicyInput < Struct.new(
2641
+ :cluster_id,
2642
+ :instance_group_id,
2643
+ :auto_scaling_policy)
2644
+ include Aws::Structure
2645
+ end
2646
+
2647
+ # @!attribute [rw] cluster_id
2648
+ # Specifies the ID of a cluster. The instance group to which the
2649
+ # automatic scaling policy is applied is within this cluster.
2650
+ # @return [String]
2651
+ #
2652
+ # @!attribute [rw] instance_group_id
2653
+ # Specifies the ID of the instance group to which the scaling policy
2654
+ # is applied.
2655
+ # @return [String]
2656
+ #
2657
+ # @!attribute [rw] auto_scaling_policy
2658
+ # The automatic scaling policy definition.
2659
+ # @return [Types::AutoScalingPolicyDescription]
2660
+ class PutAutoScalingPolicyOutput < Struct.new(
2661
+ :cluster_id,
2662
+ :instance_group_id,
2663
+ :auto_scaling_policy)
2664
+ include Aws::Structure
2665
+ end
2666
+
2667
+ # @note When making an API call, pass RemoveAutoScalingPolicyInput
2668
+ # data as a hash:
2669
+ #
2670
+ # {
2671
+ # cluster_id: "ClusterId", # required
2672
+ # instance_group_id: "InstanceGroupId", # required
2673
+ # }
2674
+ # @!attribute [rw] cluster_id
2675
+ # Specifies the ID of a cluster. The instance group to which the
2676
+ # automatic scaling policy is applied is within this cluster.
2677
+ # @return [String]
2678
+ #
2679
+ # @!attribute [rw] instance_group_id
2680
+ # Specifies the ID of the instance group to which the scaling policy
2681
+ # is applied.
2682
+ # @return [String]
2683
+ class RemoveAutoScalingPolicyInput < Struct.new(
2684
+ :cluster_id,
2685
+ :instance_group_id)
2686
+ include Aws::Structure
2687
+ end
2688
+
2689
+ class RemoveAutoScalingPolicyOutput < Aws::EmptyStructure; end
2690
+
2691
+ # This input identifies a cluster and a list of tags to remove.
2692
+ # @note When making an API call, pass RemoveTagsInput
2693
+ # data as a hash:
2694
+ #
2695
+ # {
2696
+ # resource_id: "ResourceId", # required
2697
+ # tag_keys: ["String"], # required
2698
+ # }
2699
+ # @!attribute [rw] resource_id
2700
+ # The Amazon EMR resource identifier from which tags will be removed.
2701
+ # This value must be a cluster identifier.
2702
+ # @return [String]
2703
+ #
2704
+ # @!attribute [rw] tag_keys
2705
+ # A list of tag keys to remove from a resource.
2706
+ # @return [Array<String>]
2707
+ class RemoveTagsInput < Struct.new(
2708
+ :resource_id,
2709
+ :tag_keys)
2710
+ include Aws::Structure
2711
+ end
2712
+
2713
+ # This output indicates the result of removing tags from a resource.
2714
+ class RemoveTagsOutput < Aws::EmptyStructure; end
2715
+
2716
+ # Input to the RunJobFlow operation.
2717
+ # @note When making an API call, pass RunJobFlowInput
2718
+ # data as a hash:
2719
+ #
2720
+ # {
2721
+ # name: "XmlStringMaxLen256", # required
2722
+ # log_uri: "XmlString",
2723
+ # additional_info: "XmlString",
2724
+ # ami_version: "XmlStringMaxLen256",
2725
+ # release_label: "XmlStringMaxLen256",
2726
+ # instances: { # required
2727
+ # master_instance_type: "InstanceType",
2728
+ # slave_instance_type: "InstanceType",
2729
+ # instance_count: 1,
2730
+ # instance_groups: [
2731
+ # {
2732
+ # name: "XmlStringMaxLen256",
2733
+ # market: "ON_DEMAND", # accepts ON_DEMAND, SPOT
2734
+ # instance_role: "MASTER", # required, accepts MASTER, CORE, TASK
2735
+ # bid_price: "XmlStringMaxLen256",
2736
+ # instance_type: "InstanceType", # required
2737
+ # instance_count: 1, # required
2738
+ # configurations: [
2739
+ # {
2740
+ # classification: "String",
2741
+ # configurations: {
2742
+ # # recursive ConfigurationList
2743
+ # },
2744
+ # properties: {
2745
+ # "String" => "String",
2746
+ # },
2747
+ # },
2748
+ # ],
2749
+ # ebs_configuration: {
2750
+ # ebs_block_device_configs: [
2751
+ # {
2752
+ # volume_specification: { # required
2753
+ # volume_type: "String", # required
2754
+ # iops: 1,
2755
+ # size_in_gb: 1, # required
2756
+ # },
2757
+ # volumes_per_instance: 1,
2758
+ # },
2759
+ # ],
2760
+ # ebs_optimized: false,
2761
+ # },
2762
+ # auto_scaling_policy: {
2763
+ # constraints: { # required
2764
+ # min_capacity: 1, # required
2765
+ # max_capacity: 1, # required
2766
+ # },
2767
+ # rules: [ # required
2768
+ # {
2769
+ # name: "String", # required
2770
+ # description: "String",
2771
+ # action: { # required
2772
+ # market: "ON_DEMAND", # accepts ON_DEMAND, SPOT
2773
+ # simple_scaling_policy_configuration: { # required
2774
+ # adjustment_type: "CHANGE_IN_CAPACITY", # accepts CHANGE_IN_CAPACITY, PERCENT_CHANGE_IN_CAPACITY, EXACT_CAPACITY
2775
+ # scaling_adjustment: 1, # required
2776
+ # cool_down: 1,
2777
+ # },
2778
+ # },
2779
+ # trigger: { # required
2780
+ # cloud_watch_alarm_definition: { # required
2781
+ # comparison_operator: "GREATER_THAN_OR_EQUAL", # required, accepts GREATER_THAN_OR_EQUAL, GREATER_THAN, LESS_THAN, LESS_THAN_OR_EQUAL
2782
+ # evaluation_periods: 1,
2783
+ # metric_name: "String", # required
2784
+ # namespace: "String",
2785
+ # period: 1, # required
2786
+ # statistic: "SAMPLE_COUNT", # accepts SAMPLE_COUNT, AVERAGE, SUM, MINIMUM, MAXIMUM
2787
+ # threshold: 1.0, # required
2788
+ # unit: "NONE", # accepts NONE, SECONDS, MICRO_SECONDS, MILLI_SECONDS, BYTES, KILO_BYTES, MEGA_BYTES, GIGA_BYTES, TERA_BYTES, BITS, KILO_BITS, MEGA_BITS, GIGA_BITS, TERA_BITS, PERCENT, COUNT, BYTES_PER_SECOND, KILO_BYTES_PER_SECOND, MEGA_BYTES_PER_SECOND, GIGA_BYTES_PER_SECOND, TERA_BYTES_PER_SECOND, BITS_PER_SECOND, KILO_BITS_PER_SECOND, MEGA_BITS_PER_SECOND, GIGA_BITS_PER_SECOND, TERA_BITS_PER_SECOND, COUNT_PER_SECOND
2789
+ # dimensions: [
2790
+ # {
2791
+ # key: "String",
2792
+ # value: "String",
2793
+ # },
2794
+ # ],
2795
+ # },
2796
+ # },
2797
+ # },
2798
+ # ],
2799
+ # },
2800
+ # },
2801
+ # ],
2802
+ # ec2_key_name: "XmlStringMaxLen256",
2803
+ # placement: {
2804
+ # availability_zone: "XmlString", # required
2805
+ # },
2806
+ # keep_job_flow_alive_when_no_steps: false,
2807
+ # termination_protected: false,
2808
+ # hadoop_version: "XmlStringMaxLen256",
2809
+ # ec2_subnet_id: "XmlStringMaxLen256",
2810
+ # emr_managed_master_security_group: "XmlStringMaxLen256",
2811
+ # emr_managed_slave_security_group: "XmlStringMaxLen256",
2812
+ # service_access_security_group: "XmlStringMaxLen256",
2813
+ # additional_master_security_groups: ["XmlStringMaxLen256"],
2814
+ # additional_slave_security_groups: ["XmlStringMaxLen256"],
2815
+ # },
2816
+ # steps: [
2817
+ # {
2818
+ # name: "XmlStringMaxLen256", # required
2819
+ # action_on_failure: "TERMINATE_JOB_FLOW", # accepts TERMINATE_JOB_FLOW, TERMINATE_CLUSTER, CANCEL_AND_WAIT, CONTINUE
2820
+ # hadoop_jar_step: { # required
2821
+ # properties: [
2822
+ # {
2823
+ # key: "XmlString",
2824
+ # value: "XmlString",
2825
+ # },
2826
+ # ],
2827
+ # jar: "XmlString", # required
2828
+ # main_class: "XmlString",
2829
+ # args: ["XmlString"],
2830
+ # },
2831
+ # },
2832
+ # ],
2833
+ # bootstrap_actions: [
2834
+ # {
2835
+ # name: "XmlStringMaxLen256", # required
2836
+ # script_bootstrap_action: { # required
2837
+ # path: "XmlString", # required
2838
+ # args: ["XmlString"],
2839
+ # },
2840
+ # },
2841
+ # ],
2842
+ # supported_products: ["XmlStringMaxLen256"],
2843
+ # new_supported_products: [
2844
+ # {
2845
+ # name: "XmlStringMaxLen256",
2846
+ # args: ["XmlString"],
2847
+ # },
2848
+ # ],
2849
+ # applications: [
2850
+ # {
2851
+ # name: "String",
2852
+ # version: "String",
2853
+ # args: ["String"],
2854
+ # additional_info: {
2855
+ # "String" => "String",
2856
+ # },
2857
+ # },
2858
+ # ],
2859
+ # configurations: [
2860
+ # {
2861
+ # classification: "String",
2862
+ # configurations: {
2863
+ # # recursive ConfigurationList
2864
+ # },
2865
+ # properties: {
2866
+ # "String" => "String",
2867
+ # },
2868
+ # },
2869
+ # ],
2870
+ # visible_to_all_users: false,
2871
+ # job_flow_role: "XmlString",
2872
+ # service_role: "XmlString",
2873
+ # tags: [
2874
+ # {
2875
+ # key: "String",
2876
+ # value: "String",
2877
+ # },
2878
+ # ],
2879
+ # security_configuration: "XmlString",
2880
+ # auto_scaling_role: "XmlString",
2881
+ # scale_down_behavior: "TERMINATE_AT_INSTANCE_HOUR", # accepts TERMINATE_AT_INSTANCE_HOUR, TERMINATE_AT_TASK_COMPLETION
2882
+ # }
2883
+ # @!attribute [rw] name
2884
+ # The name of the job flow.
2885
+ # @return [String]
2886
+ #
2887
+ # @!attribute [rw] log_uri
2888
+ # The location in Amazon S3 to write the log files of the job flow. If
2889
+ # a value is not provided, logs are not created.
2890
+ # @return [String]
2891
+ #
2892
+ # @!attribute [rw] additional_info
2893
+ # A JSON string for selecting additional features.
2894
+ # @return [String]
2895
+ #
2896
+ # @!attribute [rw] ami_version
2897
+ # <note markdown="1"> For Amazon EMR releases 3.x and 2.x. For Amazon EMR releases 4.x and
2898
+ # greater, use ReleaseLabel.
2899
+ #
2900
+ # </note>
2901
+ #
2902
+ # The version of the Amazon Machine Image (AMI) to use when launching
2903
+ # Amazon EC2 instances in the job flow. The following values are
2904
+ # valid:
2905
+ #
2906
+ # * The version number of the AMI to use, for example, "2.0."
2907
+ #
2908
+ # ^
2909
+ #
2910
+ # If the AMI supports multiple versions of Hadoop (for example, AMI
2911
+ # 1.0 supports both Hadoop 0.18 and 0.20) you can use the
2912
+ # JobFlowInstancesConfig `HadoopVersion` parameter to modify the
2913
+ # version of Hadoop from the defaults shown above.
2914
+ #
2915
+ # For details about the AMI versions currently supported by Amazon
2916
+ # Elastic MapReduce, see [AMI Versions Supported in Elastic
2917
+ # MapReduce][1] in the *Amazon Elastic MapReduce Developer Guide.*
2918
+ #
2919
+ # <note markdown="1"> Previously, the EMR AMI version API parameter options allowed you to
2920
+ # use latest for the latest AMI version rather than specify a
2921
+ # numerical value. Some regions no longer support this deprecated
2922
+ # option as they only have a newer release label version of EMR, which
2923
+ # requires you to specify an EMR release label release (EMR 4.x or
2924
+ # later).
2925
+ #
2926
+ # </note>
2927
+ #
2928
+ #
2929
+ #
2930
+ # [1]: http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/EnvironmentConfig_AMIVersion.html#ami-versions-supported
2931
+ # @return [String]
2932
+ #
2933
+ # @!attribute [rw] release_label
2934
+ # <note markdown="1"> Amazon EMR releases 4.x or later.
2935
+ #
2936
+ # </note>
2937
+ #
2938
+ # The release label for the Amazon EMR release. For Amazon EMR 3.x and
2939
+ # 2.x AMIs, use amiVersion instead instead of ReleaseLabel.
2940
+ # @return [String]
2941
+ #
2942
+ # @!attribute [rw] instances
2943
+ # A specification of the number and type of Amazon EC2 instances on
2944
+ # which to run the job flow.
2945
+ # @return [Types::JobFlowInstancesConfig]
2946
+ #
2947
+ # @!attribute [rw] steps
2948
+ # A list of steps to be executed by the job flow.
2949
+ # @return [Array<Types::StepConfig>]
2950
+ #
2951
+ # @!attribute [rw] bootstrap_actions
2952
+ # A list of bootstrap actions that will be run before Hadoop is
2953
+ # started on the cluster nodes.
2954
+ # @return [Array<Types::BootstrapActionConfig>]
2955
+ #
2956
+ # @!attribute [rw] supported_products
2957
+ # <note markdown="1"> For Amazon EMR releases 3.x and 2.x. For Amazon EMR releases 4.x and
2958
+ # greater, use Applications.
2959
+ #
2960
+ # </note>
2961
+ #
2962
+ # A list of strings that indicates third-party software to use with
2963
+ # the job flow. For more information, see [Use Third Party
2964
+ # Applications with Amazon EMR][1]. Currently supported values are:
2965
+ #
2966
+ # * "mapr-m3" - launch the job flow using MapR M3 Edition.
2967
+ #
2968
+ # * "mapr-m5" - launch the job flow using MapR M5 Edition.
2969
+ #
2970
+ #
2971
+ #
2972
+ # [1]: http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-supported-products.html
2973
+ # @return [Array<String>]
2974
+ #
2975
+ # @!attribute [rw] new_supported_products
2976
+ # <note markdown="1"> For Amazon EMR releases 3.x and 2.x. For Amazon EMR releases 4.x and
2977
+ # greater, use Applications.
2978
+ #
2979
+ # </note>
2980
+ #
2981
+ # A list of strings that indicates third-party software to use with
2982
+ # the job flow that accepts a user argument list. EMR accepts and
2983
+ # forwards the argument list to the corresponding installation script
2984
+ # as bootstrap action arguments. For more information, see [Launch a
2985
+ # Job Flow on the MapR Distribution for Hadoop][1]. Currently
2986
+ # supported values are:
2987
+ #
2988
+ # * "mapr-m3" - launch the cluster using MapR M3 Edition.
2989
+ #
2990
+ # * "mapr-m5" - launch the cluster using MapR M5 Edition.
2991
+ #
2992
+ # * "mapr" with the user arguments specifying "--edition,m3" or
2993
+ # "--edition,m5" - launch the job flow using MapR M3 or M5 Edition
2994
+ # respectively.
2995
+ #
2996
+ # * "mapr-m7" - launch the cluster using MapR M7 Edition.
2997
+ #
2998
+ # * "hunk" - launch the cluster with the Hunk Big Data Analtics
2999
+ # Platform.
3000
+ #
3001
+ # * "hue"- launch the cluster with Hue installed.
3002
+ #
3003
+ # * "spark" - launch the cluster with Apache Spark installed.
3004
+ #
3005
+ # * "ganglia" - launch the cluster with the Ganglia Monitoring
3006
+ # System installed.
3007
+ #
3008
+ #
3009
+ #
3010
+ # [1]: http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-mapr.html
3011
+ # @return [Array<Types::SupportedProductConfig>]
3012
+ #
3013
+ # @!attribute [rw] applications
3014
+ # <note markdown="1"> Amazon EMR releases 4.x or later.
3015
+ #
3016
+ # </note>
3017
+ #
3018
+ # A list of applications for the cluster. Valid values are:
3019
+ # "Hadoop", "Hive", "Mahout", "Pig", and "Spark." They are
3020
+ # case insensitive.
3021
+ # @return [Array<Types::Application>]
3022
+ #
3023
+ # @!attribute [rw] configurations
3024
+ # <note markdown="1"> Amazon EMR releases 4.x or later.
3025
+ #
3026
+ # </note>
3027
+ #
3028
+ # The list of configurations supplied for the EMR cluster you are
3029
+ # creating.
3030
+ # @return [Array<Types::Configuration>]
3031
+ #
3032
+ # @!attribute [rw] visible_to_all_users
3033
+ # Whether the job flow is visible to all IAM users of the AWS account
3034
+ # associated with the job flow. If this value is set to `true`, all
3035
+ # IAM users of that AWS account can view and (if they have the proper
3036
+ # policy permissions set) manage the job flow. If it is set to
3037
+ # `false`, only the IAM user that created the job flow can view and
3038
+ # manage it.
3039
+ # @return [Boolean]
3040
+ #
3041
+ # @!attribute [rw] job_flow_role
3042
+ # Also called instance profile and EC2 role. An IAM role for an EMR
3043
+ # cluster. The EC2 instances of the cluster assume this role. The
3044
+ # default role is `EMR_EC2_DefaultRole`. In order to use the default
3045
+ # role, you must have already created it using the CLI or console.
3046
+ # @return [String]
3047
+ #
3048
+ # @!attribute [rw] service_role
3049
+ # The IAM role that will be assumed by the Amazon EMR service to
3050
+ # access AWS resources on your behalf.
3051
+ # @return [String]
3052
+ #
3053
+ # @!attribute [rw] tags
3054
+ # A list of tags to associate with a cluster and propagate to Amazon
3055
+ # EC2 instances.
3056
+ # @return [Array<Types::Tag>]
3057
+ #
3058
+ # @!attribute [rw] security_configuration
3059
+ # The name of a security configuration to apply to the cluster.
3060
+ # @return [String]
3061
+ #
3062
+ # @!attribute [rw] auto_scaling_role
3063
+ # An IAM role for automatic scaling policies. The default role is
3064
+ # `EMR_AutoScaling_DefaultRole`. The IAM role provides permissions
3065
+ # that the automatic scaling feature requires to launch and terminate
3066
+ # EC2 instances in an instance group.
3067
+ # @return [String]
3068
+ #
3069
+ # @!attribute [rw] scale_down_behavior
3070
+ # Specifies the way that individual Amazon EC2 instances terminate
3071
+ # when an automatic scale-in activity occurs or an instance group is
3072
+ # resized. `TERMINATE_AT_INSTANCE_HOUR` indicates that Amazon EMR
3073
+ # terminates nodes at the instance-hour boundary, regardless of when
3074
+ # the request to terminate the instance was submitted. This option is
3075
+ # only available with Amazon EMR 5.1.0 and later and is the default
3076
+ # for clusters created using that version.
3077
+ # `TERMINATE_AT_TASK_COMPLETION` indicates that Amazon EMR blacklists
3078
+ # and drains tasks from nodes before terminating the Amazon EC2
3079
+ # instances, regardless of the instance-hour boundary. With either
3080
+ # behavior, Amazon EMR removes the least active nodes first and blocks
3081
+ # instance termination if it could lead to HDFS corruption.
3082
+ # `TERMINATE_AT_TASK_COMPLETION` available only in Amazon EMR version
3083
+ # 4.1.0 and later, and is the default for versions of Amazon EMR
3084
+ # earlier than 5.1.0.
3085
+ # @return [String]
3086
+ class RunJobFlowInput < Struct.new(
3087
+ :name,
3088
+ :log_uri,
3089
+ :additional_info,
3090
+ :ami_version,
3091
+ :release_label,
3092
+ :instances,
3093
+ :steps,
3094
+ :bootstrap_actions,
3095
+ :supported_products,
3096
+ :new_supported_products,
3097
+ :applications,
3098
+ :configurations,
3099
+ :visible_to_all_users,
3100
+ :job_flow_role,
3101
+ :service_role,
3102
+ :tags,
3103
+ :security_configuration,
3104
+ :auto_scaling_role,
3105
+ :scale_down_behavior)
3106
+ include Aws::Structure
3107
+ end
3108
+
3109
+ # The result of the RunJobFlow operation.
3110
+ # @!attribute [rw] job_flow_id
3111
+ # An unique identifier for the job flow.
3112
+ # @return [String]
3113
+ class RunJobFlowOutput < Struct.new(
3114
+ :job_flow_id)
3115
+ include Aws::Structure
3116
+ end
3117
+
3118
+ # The type of adjustment the automatic scaling activity makes when
3119
+ # triggered, and the periodicity of the adjustment.
3120
+ # @note When making an API call, pass ScalingAction
3121
+ # data as a hash:
3122
+ #
3123
+ # {
3124
+ # market: "ON_DEMAND", # accepts ON_DEMAND, SPOT
3125
+ # simple_scaling_policy_configuration: { # required
3126
+ # adjustment_type: "CHANGE_IN_CAPACITY", # accepts CHANGE_IN_CAPACITY, PERCENT_CHANGE_IN_CAPACITY, EXACT_CAPACITY
3127
+ # scaling_adjustment: 1, # required
3128
+ # cool_down: 1,
3129
+ # },
3130
+ # }
3131
+ # @!attribute [rw] market
3132
+ # Not available for instance groups. Instance groups use the market
3133
+ # type specified for the group.
3134
+ # @return [String]
3135
+ #
3136
+ # @!attribute [rw] simple_scaling_policy_configuration
3137
+ # The type of adjustment the automatic scaling activity makes when
3138
+ # triggered, and the periodicity of the adjustment.
3139
+ # @return [Types::SimpleScalingPolicyConfiguration]
3140
+ class ScalingAction < Struct.new(
3141
+ :market,
3142
+ :simple_scaling_policy_configuration)
3143
+ include Aws::Structure
3144
+ end
3145
+
3146
+ # The upper and lower EC2 instance limits for an automatic scaling
3147
+ # policy. Automatic scaling activities triggered by automatic scaling
3148
+ # rules will not cause an instance group to grow above or below these
3149
+ # limits.
3150
+ # @note When making an API call, pass ScalingConstraints
3151
+ # data as a hash:
3152
+ #
3153
+ # {
3154
+ # min_capacity: 1, # required
3155
+ # max_capacity: 1, # required
3156
+ # }
3157
+ # @!attribute [rw] min_capacity
3158
+ # The lower boundary of EC2 instances in an instance group below which
3159
+ # scaling activities are not allowed to shrink. Scale-in activities
3160
+ # will not terminate instances below this boundary.
3161
+ # @return [Integer]
3162
+ #
3163
+ # @!attribute [rw] max_capacity
3164
+ # The upper boundary of EC2 instances in an instance group beyond
3165
+ # which scaling activities are not allowed to grow. Scale-out
3166
+ # activities will not add instances beyond this boundary.
3167
+ # @return [Integer]
3168
+ class ScalingConstraints < Struct.new(
3169
+ :min_capacity,
3170
+ :max_capacity)
3171
+ include Aws::Structure
3172
+ end
3173
+
3174
+ # A scale-in or scale-out rule that defines scaling activity, including
3175
+ # the CloudWatch metric alarm that triggers activity, how EC2 instances
3176
+ # are added or removed, and the periodicity of adjustments. The
3177
+ # automatic scaling policy for an instance group can comprise one or
3178
+ # more automatic scaling rules.
3179
+ # @note When making an API call, pass ScalingRule
3180
+ # data as a hash:
3181
+ #
3182
+ # {
3183
+ # name: "String", # required
3184
+ # description: "String",
3185
+ # action: { # required
3186
+ # market: "ON_DEMAND", # accepts ON_DEMAND, SPOT
3187
+ # simple_scaling_policy_configuration: { # required
3188
+ # adjustment_type: "CHANGE_IN_CAPACITY", # accepts CHANGE_IN_CAPACITY, PERCENT_CHANGE_IN_CAPACITY, EXACT_CAPACITY
3189
+ # scaling_adjustment: 1, # required
3190
+ # cool_down: 1,
3191
+ # },
3192
+ # },
3193
+ # trigger: { # required
3194
+ # cloud_watch_alarm_definition: { # required
3195
+ # comparison_operator: "GREATER_THAN_OR_EQUAL", # required, accepts GREATER_THAN_OR_EQUAL, GREATER_THAN, LESS_THAN, LESS_THAN_OR_EQUAL
3196
+ # evaluation_periods: 1,
3197
+ # metric_name: "String", # required
3198
+ # namespace: "String",
3199
+ # period: 1, # required
3200
+ # statistic: "SAMPLE_COUNT", # accepts SAMPLE_COUNT, AVERAGE, SUM, MINIMUM, MAXIMUM
3201
+ # threshold: 1.0, # required
3202
+ # unit: "NONE", # accepts NONE, SECONDS, MICRO_SECONDS, MILLI_SECONDS, BYTES, KILO_BYTES, MEGA_BYTES, GIGA_BYTES, TERA_BYTES, BITS, KILO_BITS, MEGA_BITS, GIGA_BITS, TERA_BITS, PERCENT, COUNT, BYTES_PER_SECOND, KILO_BYTES_PER_SECOND, MEGA_BYTES_PER_SECOND, GIGA_BYTES_PER_SECOND, TERA_BYTES_PER_SECOND, BITS_PER_SECOND, KILO_BITS_PER_SECOND, MEGA_BITS_PER_SECOND, GIGA_BITS_PER_SECOND, TERA_BITS_PER_SECOND, COUNT_PER_SECOND
3203
+ # dimensions: [
3204
+ # {
3205
+ # key: "String",
3206
+ # value: "String",
3207
+ # },
3208
+ # ],
3209
+ # },
3210
+ # },
3211
+ # }
3212
+ # @!attribute [rw] name
3213
+ # The name used to identify an automatic scaling rule. Rule names must
3214
+ # be unique within a scaling policy.
3215
+ # @return [String]
3216
+ #
3217
+ # @!attribute [rw] description
3218
+ # A friendly, more verbose description of the automatic scaling rule.
3219
+ # @return [String]
3220
+ #
3221
+ # @!attribute [rw] action
3222
+ # The conditions that trigger an automatic scaling activity.
3223
+ # @return [Types::ScalingAction]
3224
+ #
3225
+ # @!attribute [rw] trigger
3226
+ # The CloudWatch alarm definition that determines when automatic
3227
+ # scaling activity is triggered.
3228
+ # @return [Types::ScalingTrigger]
3229
+ class ScalingRule < Struct.new(
3230
+ :name,
3231
+ :description,
3232
+ :action,
3233
+ :trigger)
3234
+ include Aws::Structure
3235
+ end
3236
+
3237
+ # The conditions that trigger an automatic scaling activity.
3238
+ # @note When making an API call, pass ScalingTrigger
3239
+ # data as a hash:
3240
+ #
3241
+ # {
3242
+ # cloud_watch_alarm_definition: { # required
3243
+ # comparison_operator: "GREATER_THAN_OR_EQUAL", # required, accepts GREATER_THAN_OR_EQUAL, GREATER_THAN, LESS_THAN, LESS_THAN_OR_EQUAL
3244
+ # evaluation_periods: 1,
3245
+ # metric_name: "String", # required
3246
+ # namespace: "String",
3247
+ # period: 1, # required
3248
+ # statistic: "SAMPLE_COUNT", # accepts SAMPLE_COUNT, AVERAGE, SUM, MINIMUM, MAXIMUM
3249
+ # threshold: 1.0, # required
3250
+ # unit: "NONE", # accepts NONE, SECONDS, MICRO_SECONDS, MILLI_SECONDS, BYTES, KILO_BYTES, MEGA_BYTES, GIGA_BYTES, TERA_BYTES, BITS, KILO_BITS, MEGA_BITS, GIGA_BITS, TERA_BITS, PERCENT, COUNT, BYTES_PER_SECOND, KILO_BYTES_PER_SECOND, MEGA_BYTES_PER_SECOND, GIGA_BYTES_PER_SECOND, TERA_BYTES_PER_SECOND, BITS_PER_SECOND, KILO_BITS_PER_SECOND, MEGA_BITS_PER_SECOND, GIGA_BITS_PER_SECOND, TERA_BITS_PER_SECOND, COUNT_PER_SECOND
3251
+ # dimensions: [
3252
+ # {
3253
+ # key: "String",
3254
+ # value: "String",
3255
+ # },
3256
+ # ],
3257
+ # },
3258
+ # }
3259
+ # @!attribute [rw] cloud_watch_alarm_definition
3260
+ # The definition of a CloudWatch metric alarm. When the defined alarm
3261
+ # conditions are met along with other trigger parameters, scaling
3262
+ # activity begins.
3263
+ # @return [Types::CloudWatchAlarmDefinition]
3264
+ class ScalingTrigger < Struct.new(
3265
+ :cloud_watch_alarm_definition)
3266
+ include Aws::Structure
3267
+ end
3268
+
3269
+ # Configuration of the script to run during a bootstrap action.
3270
+ # @note When making an API call, pass ScriptBootstrapActionConfig
3271
+ # data as a hash:
3272
+ #
3273
+ # {
3274
+ # path: "XmlString", # required
3275
+ # args: ["XmlString"],
3276
+ # }
3277
+ # @!attribute [rw] path
3278
+ # Location of the script to run during a bootstrap action. Can be
3279
+ # either a location in Amazon S3 or on a local file system.
3280
+ # @return [String]
3281
+ #
3282
+ # @!attribute [rw] args
3283
+ # A list of command line arguments to pass to the bootstrap action
3284
+ # script.
3285
+ # @return [Array<String>]
3286
+ class ScriptBootstrapActionConfig < Struct.new(
3287
+ :path,
3288
+ :args)
3289
+ include Aws::Structure
3290
+ end
3291
+
3292
+ # The creation date and time, and name, of a security configuration.
3293
+ # @!attribute [rw] name
3294
+ # The name of the security configuration.
3295
+ # @return [String]
3296
+ #
3297
+ # @!attribute [rw] creation_date_time
3298
+ # The date and time the security configuration was created.
3299
+ # @return [Time]
3300
+ class SecurityConfigurationSummary < Struct.new(
3301
+ :name,
3302
+ :creation_date_time)
3303
+ include Aws::Structure
3304
+ end
3305
+
3306
+ # The input argument to the TerminationProtection operation.
3307
+ # @note When making an API call, pass SetTerminationProtectionInput
3308
+ # data as a hash:
3309
+ #
3310
+ # {
3311
+ # job_flow_ids: ["XmlString"], # required
3312
+ # termination_protected: false, # required
3313
+ # }
3314
+ # @!attribute [rw] job_flow_ids
3315
+ # A list of strings that uniquely identify the job flows to protect.
3316
+ # This identifier is returned by RunJobFlow and can also be obtained
3317
+ # from DescribeJobFlows .
3318
+ # @return [Array<String>]
3319
+ #
3320
+ # @!attribute [rw] termination_protected
3321
+ # A Boolean that indicates whether to protect the job flow and prevent
3322
+ # the Amazon EC2 instances in the cluster from shutting down due to
3323
+ # API calls, user intervention, or job-flow error.
3324
+ # @return [Boolean]
3325
+ class SetTerminationProtectionInput < Struct.new(
3326
+ :job_flow_ids,
3327
+ :termination_protected)
3328
+ include Aws::Structure
3329
+ end
3330
+
3331
+ # The input to the SetVisibleToAllUsers action.
3332
+ # @note When making an API call, pass SetVisibleToAllUsersInput
3333
+ # data as a hash:
3334
+ #
3335
+ # {
3336
+ # job_flow_ids: ["XmlString"], # required
3337
+ # visible_to_all_users: false, # required
3338
+ # }
3339
+ # @!attribute [rw] job_flow_ids
3340
+ # Identifiers of the job flows to receive the new visibility setting.
3341
+ # @return [Array<String>]
3342
+ #
3343
+ # @!attribute [rw] visible_to_all_users
3344
+ # Whether the specified job flows are visible to all IAM users of the
3345
+ # AWS account associated with the job flow. If this value is set to
3346
+ # True, all IAM users of that AWS account can view and, if they have
3347
+ # the proper IAM policy permissions set, manage the job flows. If it
3348
+ # is set to False, only the IAM user that created a job flow can view
3349
+ # and manage it.
3350
+ # @return [Boolean]
3351
+ class SetVisibleToAllUsersInput < Struct.new(
3352
+ :job_flow_ids,
3353
+ :visible_to_all_users)
3354
+ include Aws::Structure
3355
+ end
3356
+
3357
+ # Policy for customizing shrink operations. Allows configuration of
3358
+ # decommissioning timeout and targeted instance shrinking.
3359
+ # @note When making an API call, pass ShrinkPolicy
3360
+ # data as a hash:
3361
+ #
3362
+ # {
3363
+ # decommission_timeout: 1,
3364
+ # instance_resize_policy: {
3365
+ # instances_to_terminate: ["InstanceId"],
3366
+ # instances_to_protect: ["InstanceId"],
3367
+ # instance_termination_timeout: 1,
3368
+ # },
3369
+ # }
3370
+ # @!attribute [rw] decommission_timeout
3371
+ # The desired timeout for decommissioning an instance. Overrides the
3372
+ # default YARN decommissioning timeout.
3373
+ # @return [Integer]
3374
+ #
3375
+ # @!attribute [rw] instance_resize_policy
3376
+ # Custom policy for requesting termination protection or termination
3377
+ # of specific instances when shrinking an instance group.
3378
+ # @return [Types::InstanceResizePolicy]
3379
+ class ShrinkPolicy < Struct.new(
3380
+ :decommission_timeout,
3381
+ :instance_resize_policy)
3382
+ include Aws::Structure
3383
+ end
3384
+
3385
+ # An automatic scaling configuration, which describes how the policy
3386
+ # adds or removes instances, the cooldown period, and the number of EC2
3387
+ # instances that will be added each time the CloudWatch metric alarm
3388
+ # condition is satisfied.
3389
+ # @note When making an API call, pass SimpleScalingPolicyConfiguration
3390
+ # data as a hash:
3391
+ #
3392
+ # {
3393
+ # adjustment_type: "CHANGE_IN_CAPACITY", # accepts CHANGE_IN_CAPACITY, PERCENT_CHANGE_IN_CAPACITY, EXACT_CAPACITY
3394
+ # scaling_adjustment: 1, # required
3395
+ # cool_down: 1,
3396
+ # }
3397
+ # @!attribute [rw] adjustment_type
3398
+ # The way in which EC2 instances are added (if `ScalingAdjustment` is
3399
+ # a positive number) or terminated (if `ScalingAdjustment` is a
3400
+ # negative number) each time the scaling activity is triggered.
3401
+ # `CHANGE_IN_CAPACITY` is the default. `CHANGE_IN_CAPACITY` indicates
3402
+ # that the EC2 instance count increments or decrements by
3403
+ # `ScalingAdjustment`, which should be expressed as an integer.
3404
+ # `PERCENT_CHANGE_IN_CAPACITY` indicates the instance count increments
3405
+ # or decrements by the percentage specified by `ScalingAdjustment`,
3406
+ # which should be expressed as a decimal, for example, 0.20 indicates
3407
+ # an increase in 20% increments of cluster capacity. `EXACT_CAPACITY`
3408
+ # indicates the scaling activity results in an instance group with the
3409
+ # number of EC2 instances specified by `ScalingAdjustment`, which
3410
+ # should be expressed as a positive integer.
3411
+ # @return [String]
3412
+ #
3413
+ # @!attribute [rw] scaling_adjustment
3414
+ # The amount by which to scale in or scale out, based on the specified
3415
+ # `AdjustmentType`. A positive value adds to the instance group's EC2
3416
+ # instance count while a negative number removes instances. If
3417
+ # `AdjustmentType` is set to `EXACT_CAPACITY`, the number should only
3418
+ # be a positive integer. If `AdjustmentType` is set to
3419
+ # `PERCENT_CHANGE_IN_CAPACITY`, the value should express the
3420
+ # percentage as a decimal. For example, -0.20 indicates a decrease in
3421
+ # 20% increments of cluster capacity.
3422
+ # @return [Integer]
3423
+ #
3424
+ # @!attribute [rw] cool_down
3425
+ # The amount of time, in seconds, after a scaling activity completes
3426
+ # before any further trigger-related scaling activities can start. The
3427
+ # default value is 0.
3428
+ # @return [Integer]
3429
+ class SimpleScalingPolicyConfiguration < Struct.new(
3430
+ :adjustment_type,
3431
+ :scaling_adjustment,
3432
+ :cool_down)
3433
+ include Aws::Structure
3434
+ end
3435
+
3436
+ # This represents a step in a cluster.
3437
+ # @!attribute [rw] id
3438
+ # The identifier of the cluster step.
3439
+ # @return [String]
3440
+ #
3441
+ # @!attribute [rw] name
3442
+ # The name of the cluster step.
3443
+ # @return [String]
3444
+ #
3445
+ # @!attribute [rw] config
3446
+ # The Hadoop job configuration of the cluster step.
3447
+ # @return [Types::HadoopStepConfig]
3448
+ #
3449
+ # @!attribute [rw] action_on_failure
3450
+ # This specifies what action to take when the cluster step fails.
3451
+ # Possible values are TERMINATE\_CLUSTER, CANCEL\_AND\_WAIT, and
3452
+ # CONTINUE.
3453
+ # @return [String]
3454
+ #
3455
+ # @!attribute [rw] status
3456
+ # The current execution status details of the cluster step.
3457
+ # @return [Types::StepStatus]
3458
+ class Step < Struct.new(
3459
+ :id,
3460
+ :name,
3461
+ :config,
3462
+ :action_on_failure,
3463
+ :status)
3464
+ include Aws::Structure
3465
+ end
3466
+
3467
+ # Specification of a job flow step.
3468
+ # @note When making an API call, pass StepConfig
3469
+ # data as a hash:
3470
+ #
3471
+ # {
3472
+ # name: "XmlStringMaxLen256", # required
3473
+ # action_on_failure: "TERMINATE_JOB_FLOW", # accepts TERMINATE_JOB_FLOW, TERMINATE_CLUSTER, CANCEL_AND_WAIT, CONTINUE
3474
+ # hadoop_jar_step: { # required
3475
+ # properties: [
3476
+ # {
3477
+ # key: "XmlString",
3478
+ # value: "XmlString",
3479
+ # },
3480
+ # ],
3481
+ # jar: "XmlString", # required
3482
+ # main_class: "XmlString",
3483
+ # args: ["XmlString"],
3484
+ # },
3485
+ # }
3486
+ # @!attribute [rw] name
3487
+ # The name of the job flow step.
3488
+ # @return [String]
3489
+ #
3490
+ # @!attribute [rw] action_on_failure
3491
+ # The action to take if the job flow step fails.
3492
+ # @return [String]
3493
+ #
3494
+ # @!attribute [rw] hadoop_jar_step
3495
+ # The JAR file used for the job flow step.
3496
+ # @return [Types::HadoopJarStepConfig]
3497
+ class StepConfig < Struct.new(
3498
+ :name,
3499
+ :action_on_failure,
3500
+ :hadoop_jar_step)
3501
+ include Aws::Structure
3502
+ end
3503
+
3504
+ # Combines the execution state and configuration of a step.
3505
+ # @!attribute [rw] step_config
3506
+ # The step configuration.
3507
+ # @return [Types::StepConfig]
3508
+ #
3509
+ # @!attribute [rw] execution_status_detail
3510
+ # The description of the step status.
3511
+ # @return [Types::StepExecutionStatusDetail]
3512
+ class StepDetail < Struct.new(
3513
+ :step_config,
3514
+ :execution_status_detail)
3515
+ include Aws::Structure
3516
+ end
3517
+
3518
+ # The execution state of a step.
3519
+ # @!attribute [rw] state
3520
+ # The state of the job flow step.
3521
+ # @return [String]
3522
+ #
3523
+ # @!attribute [rw] creation_date_time
3524
+ # The creation date and time of the step.
3525
+ # @return [Time]
3526
+ #
3527
+ # @!attribute [rw] start_date_time
3528
+ # The start date and time of the step.
3529
+ # @return [Time]
3530
+ #
3531
+ # @!attribute [rw] end_date_time
3532
+ # The completion date and time of the step.
3533
+ # @return [Time]
3534
+ #
3535
+ # @!attribute [rw] last_state_change_reason
3536
+ # A description of the step's current state.
3537
+ # @return [String]
3538
+ class StepExecutionStatusDetail < Struct.new(
3539
+ :state,
3540
+ :creation_date_time,
3541
+ :start_date_time,
3542
+ :end_date_time,
3543
+ :last_state_change_reason)
3544
+ include Aws::Structure
3545
+ end
3546
+
3547
+ # The details of the step state change reason.
3548
+ # @!attribute [rw] code
3549
+ # The programmable code for the state change reason. Note: Currently,
3550
+ # the service provides no code for the state change.
3551
+ # @return [String]
3552
+ #
3553
+ # @!attribute [rw] message
3554
+ # The descriptive message for the state change reason.
3555
+ # @return [String]
3556
+ class StepStateChangeReason < Struct.new(
3557
+ :code,
3558
+ :message)
3559
+ include Aws::Structure
3560
+ end
3561
+
3562
+ # The execution status details of the cluster step.
3563
+ # @!attribute [rw] state
3564
+ # The execution state of the cluster step.
3565
+ # @return [String]
3566
+ #
3567
+ # @!attribute [rw] state_change_reason
3568
+ # The reason for the step execution status change.
3569
+ # @return [Types::StepStateChangeReason]
3570
+ #
3571
+ # @!attribute [rw] failure_details
3572
+ # The details for the step failure including reason, message, and log
3573
+ # file path where the root cause was identified.
3574
+ # @return [Types::FailureDetails]
3575
+ #
3576
+ # @!attribute [rw] timeline
3577
+ # The timeline of the cluster step status over time.
3578
+ # @return [Types::StepTimeline]
3579
+ class StepStatus < Struct.new(
3580
+ :state,
3581
+ :state_change_reason,
3582
+ :failure_details,
3583
+ :timeline)
3584
+ include Aws::Structure
3585
+ end
3586
+
3587
+ # The summary of the cluster step.
3588
+ # @!attribute [rw] id
3589
+ # The identifier of the cluster step.
3590
+ # @return [String]
3591
+ #
3592
+ # @!attribute [rw] name
3593
+ # The name of the cluster step.
3594
+ # @return [String]
3595
+ #
3596
+ # @!attribute [rw] config
3597
+ # The Hadoop job configuration of the cluster step.
3598
+ # @return [Types::HadoopStepConfig]
3599
+ #
3600
+ # @!attribute [rw] action_on_failure
3601
+ # This specifies what action to take when the cluster step fails.
3602
+ # Possible values are TERMINATE\_CLUSTER, CANCEL\_AND\_WAIT, and
3603
+ # CONTINUE.
3604
+ # @return [String]
3605
+ #
3606
+ # @!attribute [rw] status
3607
+ # The current execution status details of the cluster step.
3608
+ # @return [Types::StepStatus]
3609
+ class StepSummary < Struct.new(
3610
+ :id,
3611
+ :name,
3612
+ :config,
3613
+ :action_on_failure,
3614
+ :status)
3615
+ include Aws::Structure
3616
+ end
3617
+
3618
+ # The timeline of the cluster step lifecycle.
3619
+ # @!attribute [rw] creation_date_time
3620
+ # The date and time when the cluster step was created.
3621
+ # @return [Time]
3622
+ #
3623
+ # @!attribute [rw] start_date_time
3624
+ # The date and time when the cluster step execution started.
3625
+ # @return [Time]
3626
+ #
3627
+ # @!attribute [rw] end_date_time
3628
+ # The date and time when the cluster step execution completed or
3629
+ # failed.
3630
+ # @return [Time]
3631
+ class StepTimeline < Struct.new(
3632
+ :creation_date_time,
3633
+ :start_date_time,
3634
+ :end_date_time)
3635
+ include Aws::Structure
3636
+ end
3637
+
3638
+ # The list of supported product configurations which allow user-supplied
3639
+ # arguments. EMR accepts these arguments and forwards them to the
3640
+ # corresponding installation script as bootstrap action arguments.
3641
+ # @note When making an API call, pass SupportedProductConfig
3642
+ # data as a hash:
3643
+ #
3644
+ # {
3645
+ # name: "XmlStringMaxLen256",
3646
+ # args: ["XmlString"],
3647
+ # }
3648
+ # @!attribute [rw] name
3649
+ # The name of the product configuration.
3650
+ # @return [String]
3651
+ #
3652
+ # @!attribute [rw] args
3653
+ # The list of user-supplied arguments.
3654
+ # @return [Array<String>]
3655
+ class SupportedProductConfig < Struct.new(
3656
+ :name,
3657
+ :args)
3658
+ include Aws::Structure
3659
+ end
3660
+
3661
+ # A key/value pair containing user-defined metadata that you can
3662
+ # associate with an Amazon EMR resource. Tags make it easier to
3663
+ # associate clusters in various ways, such as grouping clusters to track
3664
+ # your Amazon EMR resource allocation costs. For more information, see
3665
+ # [Tagging Amazon EMR Resources][1].
3666
+ #
3667
+ #
3668
+ #
3669
+ # [1]: http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-tags.html
3670
+ # @note When making an API call, pass Tag
3671
+ # data as a hash:
3672
+ #
3673
+ # {
3674
+ # key: "String",
3675
+ # value: "String",
3676
+ # }
3677
+ # @!attribute [rw] key
3678
+ # A user-defined key, which is the minimum required information for a
3679
+ # valid tag. For more information, see [Tagging Amazon EMR
3680
+ # Resources][1].
3681
+ #
3682
+ #
3683
+ #
3684
+ # [1]: http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-tags.html
3685
+ # @return [String]
3686
+ #
3687
+ # @!attribute [rw] value
3688
+ # A user-defined value, which is optional in a tag. For more
3689
+ # information, see [Tagging Amazon EMR Resources][1].
3690
+ #
3691
+ #
3692
+ #
3693
+ # [1]: http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-tags.html
3694
+ # @return [String]
3695
+ class Tag < Struct.new(
3696
+ :key,
3697
+ :value)
3698
+ include Aws::Structure
3699
+ end
3700
+
3701
+ # Input to the TerminateJobFlows operation.
3702
+ # @note When making an API call, pass TerminateJobFlowsInput
3703
+ # data as a hash:
3704
+ #
3705
+ # {
3706
+ # job_flow_ids: ["XmlString"], # required
3707
+ # }
3708
+ # @!attribute [rw] job_flow_ids
3709
+ # A list of job flows to be shutdown.
3710
+ # @return [Array<String>]
3711
+ class TerminateJobFlowsInput < Struct.new(
3712
+ :job_flow_ids)
3713
+ include Aws::Structure
3714
+ end
3715
+
3716
+ # EBS volume specifications such as volume type, IOPS, and size (GiB)
3717
+ # that will be requested for the EBS volume attached to an EC2 instance
3718
+ # in the cluster.
3719
+ # @note When making an API call, pass VolumeSpecification
3720
+ # data as a hash:
3721
+ #
3722
+ # {
3723
+ # volume_type: "String", # required
3724
+ # iops: 1,
3725
+ # size_in_gb: 1, # required
3726
+ # }
3727
+ # @!attribute [rw] volume_type
3728
+ # The volume type. Volume types supported are gp2, io1, standard.
3729
+ # @return [String]
3730
+ #
3731
+ # @!attribute [rw] iops
3732
+ # The number of I/O operations per second (IOPS) that the volume
3733
+ # supports.
3734
+ # @return [Integer]
3735
+ #
3736
+ # @!attribute [rw] size_in_gb
3737
+ # The volume size, in gibibytes (GiB). This can be a number from 1 -
3738
+ # 1024. If the volume type is EBS-optimized, the minimum value is 10.
3739
+ # @return [Integer]
3740
+ class VolumeSpecification < Struct.new(
3741
+ :volume_type,
3742
+ :iops,
3743
+ :size_in_gb)
3744
+ include Aws::Structure
3745
+ end
3746
+
3747
+ end
3748
+ end
3749
+ end