1// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
2
3package emr
4
5import (
6	"fmt"
7	"time"
8
9	"github.com/aws/aws-sdk-go/aws"
10	"github.com/aws/aws-sdk-go/aws/awsutil"
11	"github.com/aws/aws-sdk-go/aws/request"
12	"github.com/aws/aws-sdk-go/private/protocol"
13	"github.com/aws/aws-sdk-go/private/protocol/jsonrpc"
14)
15
16const opAddInstanceFleet = "AddInstanceFleet"
17
18// AddInstanceFleetRequest generates a "aws/request.Request" representing the
19// client's request for the AddInstanceFleet operation. The "output" return
20// value will be populated with the request's response once the request completes
21// successfully.
22//
23// Use "Send" method on the returned Request to send the API call to the service.
24// the "output" return value is not valid until after Send returns without error.
25//
26// See AddInstanceFleet for more information on using the AddInstanceFleet
27// API call, and error handling.
28//
29// This method is useful when you want to inject custom logic or configuration
30// into the SDK's request lifecycle. Such as custom headers, or retry logic.
31//
32//
33//    // Example sending a request using the AddInstanceFleetRequest method.
34//    req, resp := client.AddInstanceFleetRequest(params)
35//
36//    err := req.Send()
37//    if err == nil { // resp is now filled
38//        fmt.Println(resp)
39//    }
40//
41// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddInstanceFleet
42func (c *EMR) AddInstanceFleetRequest(input *AddInstanceFleetInput) (req *request.Request, output *AddInstanceFleetOutput) {
43	op := &request.Operation{
44		Name:       opAddInstanceFleet,
45		HTTPMethod: "POST",
46		HTTPPath:   "/",
47	}
48
49	if input == nil {
50		input = &AddInstanceFleetInput{}
51	}
52
53	output = &AddInstanceFleetOutput{}
54	req = c.newRequest(op, input, output)
55	return
56}
57
58// AddInstanceFleet API operation for Amazon Elastic MapReduce.
59//
60// Adds an instance fleet to a running cluster.
61//
62// The instance fleet configuration is available only in Amazon EMR versions
63// 4.8.0 and later, excluding 5.0.x.
64//
65// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
66// with awserr.Error's Code and Message methods to get detailed information about
67// the error.
68//
69// See the AWS API reference guide for Amazon Elastic MapReduce's
70// API operation AddInstanceFleet for usage and error information.
71//
72// Returned Error Types:
73//   * InternalServerException
74//   This exception occurs when there is an internal failure in the EMR service.
75//
76//   * InvalidRequestException
77//   This exception occurs when there is something wrong with user input.
78//
79// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddInstanceFleet
80func (c *EMR) AddInstanceFleet(input *AddInstanceFleetInput) (*AddInstanceFleetOutput, error) {
81	req, out := c.AddInstanceFleetRequest(input)
82	return out, req.Send()
83}
84
85// AddInstanceFleetWithContext is the same as AddInstanceFleet with the addition of
86// the ability to pass a context and additional request options.
87//
88// See AddInstanceFleet for details on how to use this API operation.
89//
90// The context must be non-nil and will be used for request cancellation. If
91// the context is nil a panic will occur. In the future the SDK may create
92// sub-contexts for http.Requests. See https://golang.org/pkg/context/
93// for more information on using Contexts.
94func (c *EMR) AddInstanceFleetWithContext(ctx aws.Context, input *AddInstanceFleetInput, opts ...request.Option) (*AddInstanceFleetOutput, error) {
95	req, out := c.AddInstanceFleetRequest(input)
96	req.SetContext(ctx)
97	req.ApplyOptions(opts...)
98	return out, req.Send()
99}
100
101const opAddInstanceGroups = "AddInstanceGroups"
102
103// AddInstanceGroupsRequest generates a "aws/request.Request" representing the
104// client's request for the AddInstanceGroups operation. The "output" return
105// value will be populated with the request's response once the request completes
106// successfully.
107//
108// Use "Send" method on the returned Request to send the API call to the service.
109// the "output" return value is not valid until after Send returns without error.
110//
111// See AddInstanceGroups for more information on using the AddInstanceGroups
112// API call, and error handling.
113//
114// This method is useful when you want to inject custom logic or configuration
115// into the SDK's request lifecycle. Such as custom headers, or retry logic.
116//
117//
118//    // Example sending a request using the AddInstanceGroupsRequest method.
119//    req, resp := client.AddInstanceGroupsRequest(params)
120//
121//    err := req.Send()
122//    if err == nil { // resp is now filled
123//        fmt.Println(resp)
124//    }
125//
126// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddInstanceGroups
127func (c *EMR) AddInstanceGroupsRequest(input *AddInstanceGroupsInput) (req *request.Request, output *AddInstanceGroupsOutput) {
128	op := &request.Operation{
129		Name:       opAddInstanceGroups,
130		HTTPMethod: "POST",
131		HTTPPath:   "/",
132	}
133
134	if input == nil {
135		input = &AddInstanceGroupsInput{}
136	}
137
138	output = &AddInstanceGroupsOutput{}
139	req = c.newRequest(op, input, output)
140	return
141}
142
143// AddInstanceGroups API operation for Amazon Elastic MapReduce.
144//
145// Adds one or more instance groups to a running cluster.
146//
147// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
148// with awserr.Error's Code and Message methods to get detailed information about
149// the error.
150//
151// See the AWS API reference guide for Amazon Elastic MapReduce's
152// API operation AddInstanceGroups for usage and error information.
153//
154// Returned Error Types:
155//   * InternalServerError
156//   Indicates that an error occurred while processing the request and that the
157//   request was not completed.
158//
159// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddInstanceGroups
160func (c *EMR) AddInstanceGroups(input *AddInstanceGroupsInput) (*AddInstanceGroupsOutput, error) {
161	req, out := c.AddInstanceGroupsRequest(input)
162	return out, req.Send()
163}
164
165// AddInstanceGroupsWithContext is the same as AddInstanceGroups with the addition of
166// the ability to pass a context and additional request options.
167//
168// See AddInstanceGroups for details on how to use this API operation.
169//
170// The context must be non-nil and will be used for request cancellation. If
171// the context is nil a panic will occur. In the future the SDK may create
172// sub-contexts for http.Requests. See https://golang.org/pkg/context/
173// for more information on using Contexts.
174func (c *EMR) AddInstanceGroupsWithContext(ctx aws.Context, input *AddInstanceGroupsInput, opts ...request.Option) (*AddInstanceGroupsOutput, error) {
175	req, out := c.AddInstanceGroupsRequest(input)
176	req.SetContext(ctx)
177	req.ApplyOptions(opts...)
178	return out, req.Send()
179}
180
181const opAddJobFlowSteps = "AddJobFlowSteps"
182
183// AddJobFlowStepsRequest generates a "aws/request.Request" representing the
184// client's request for the AddJobFlowSteps operation. The "output" return
185// value will be populated with the request's response once the request completes
186// successfully.
187//
188// Use "Send" method on the returned Request to send the API call to the service.
189// the "output" return value is not valid until after Send returns without error.
190//
191// See AddJobFlowSteps for more information on using the AddJobFlowSteps
192// API call, and error handling.
193//
194// This method is useful when you want to inject custom logic or configuration
195// into the SDK's request lifecycle. Such as custom headers, or retry logic.
196//
197//
198//    // Example sending a request using the AddJobFlowStepsRequest method.
199//    req, resp := client.AddJobFlowStepsRequest(params)
200//
201//    err := req.Send()
202//    if err == nil { // resp is now filled
203//        fmt.Println(resp)
204//    }
205//
206// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddJobFlowSteps
207func (c *EMR) AddJobFlowStepsRequest(input *AddJobFlowStepsInput) (req *request.Request, output *AddJobFlowStepsOutput) {
208	op := &request.Operation{
209		Name:       opAddJobFlowSteps,
210		HTTPMethod: "POST",
211		HTTPPath:   "/",
212	}
213
214	if input == nil {
215		input = &AddJobFlowStepsInput{}
216	}
217
218	output = &AddJobFlowStepsOutput{}
219	req = c.newRequest(op, input, output)
220	return
221}
222
223// AddJobFlowSteps API operation for Amazon Elastic MapReduce.
224//
225// AddJobFlowSteps adds new steps to a running cluster. A maximum of 256 steps
226// are allowed in each job flow.
227//
228// If your cluster is long-running (such as a Hive data warehouse) or complex,
229// you may require more than 256 steps to process your data. You can bypass
230// the 256-step limitation in various ways, including using SSH to connect to
231// the master node and submitting queries directly to the software running on
232// the master node, such as Hive and Hadoop. For more information on how to
233// do this, see Add More than 256 Steps to a Cluster (https://docs.aws.amazon.com/emr/latest/ManagementGuide/AddMoreThan256Steps.html)
234// in the Amazon EMR Management Guide.
235//
236// A step specifies the location of a JAR file stored either on the master node
237// of the cluster or in Amazon S3. Each step is performed by the main function
238// of the main class of the JAR file. The main class can be specified either
239// in the manifest of the JAR or by using the MainFunction parameter of the
240// step.
241//
242// Amazon EMR executes each step in the order listed. For a step to be considered
243// complete, the main function must exit with a zero exit code and all Hadoop
244// jobs started while the step was running must have completed and run successfully.
245//
246// You can only add steps to a cluster that is in one of the following states:
247// STARTING, BOOTSTRAPPING, RUNNING, or WAITING.
248//
249// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
250// with awserr.Error's Code and Message methods to get detailed information about
251// the error.
252//
253// See the AWS API reference guide for Amazon Elastic MapReduce's
254// API operation AddJobFlowSteps for usage and error information.
255//
256// Returned Error Types:
257//   * InternalServerError
258//   Indicates that an error occurred while processing the request and that the
259//   request was not completed.
260//
261// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddJobFlowSteps
262func (c *EMR) AddJobFlowSteps(input *AddJobFlowStepsInput) (*AddJobFlowStepsOutput, error) {
263	req, out := c.AddJobFlowStepsRequest(input)
264	return out, req.Send()
265}
266
267// AddJobFlowStepsWithContext is the same as AddJobFlowSteps with the addition of
268// the ability to pass a context and additional request options.
269//
270// See AddJobFlowSteps for details on how to use this API operation.
271//
272// The context must be non-nil and will be used for request cancellation. If
273// the context is nil a panic will occur. In the future the SDK may create
274// sub-contexts for http.Requests. See https://golang.org/pkg/context/
275// for more information on using Contexts.
276func (c *EMR) AddJobFlowStepsWithContext(ctx aws.Context, input *AddJobFlowStepsInput, opts ...request.Option) (*AddJobFlowStepsOutput, error) {
277	req, out := c.AddJobFlowStepsRequest(input)
278	req.SetContext(ctx)
279	req.ApplyOptions(opts...)
280	return out, req.Send()
281}
282
283const opAddTags = "AddTags"
284
285// AddTagsRequest generates a "aws/request.Request" representing the
286// client's request for the AddTags operation. The "output" return
287// value will be populated with the request's response once the request completes
288// successfully.
289//
290// Use "Send" method on the returned Request to send the API call to the service.
291// the "output" return value is not valid until after Send returns without error.
292//
293// See AddTags for more information on using the AddTags
294// API call, and error handling.
295//
296// This method is useful when you want to inject custom logic or configuration
297// into the SDK's request lifecycle. Such as custom headers, or retry logic.
298//
299//
300//    // Example sending a request using the AddTagsRequest method.
301//    req, resp := client.AddTagsRequest(params)
302//
303//    err := req.Send()
304//    if err == nil { // resp is now filled
305//        fmt.Println(resp)
306//    }
307//
308// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddTags
309func (c *EMR) AddTagsRequest(input *AddTagsInput) (req *request.Request, output *AddTagsOutput) {
310	op := &request.Operation{
311		Name:       opAddTags,
312		HTTPMethod: "POST",
313		HTTPPath:   "/",
314	}
315
316	if input == nil {
317		input = &AddTagsInput{}
318	}
319
320	output = &AddTagsOutput{}
321	req = c.newRequest(op, input, output)
322	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
323	return
324}
325
326// AddTags API operation for Amazon Elastic MapReduce.
327//
328// Adds tags to an Amazon EMR resource. Tags make it easier to associate clusters
329// in various ways, such as grouping clusters to track your Amazon EMR resource
330// allocation costs. For more information, see Tag Clusters (https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html).
331//
332// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
333// with awserr.Error's Code and Message methods to get detailed information about
334// the error.
335//
336// See the AWS API reference guide for Amazon Elastic MapReduce's
337// API operation AddTags for usage and error information.
338//
339// Returned Error Types:
340//   * InternalServerException
341//   This exception occurs when there is an internal failure in the EMR service.
342//
343//   * InvalidRequestException
344//   This exception occurs when there is something wrong with user input.
345//
346// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/AddTags
347func (c *EMR) AddTags(input *AddTagsInput) (*AddTagsOutput, error) {
348	req, out := c.AddTagsRequest(input)
349	return out, req.Send()
350}
351
352// AddTagsWithContext is the same as AddTags with the addition of
353// the ability to pass a context and additional request options.
354//
355// See AddTags for details on how to use this API operation.
356//
357// The context must be non-nil and will be used for request cancellation. If
358// the context is nil a panic will occur. In the future the SDK may create
359// sub-contexts for http.Requests. See https://golang.org/pkg/context/
360// for more information on using Contexts.
361func (c *EMR) AddTagsWithContext(ctx aws.Context, input *AddTagsInput, opts ...request.Option) (*AddTagsOutput, error) {
362	req, out := c.AddTagsRequest(input)
363	req.SetContext(ctx)
364	req.ApplyOptions(opts...)
365	return out, req.Send()
366}
367
368const opCancelSteps = "CancelSteps"
369
370// CancelStepsRequest generates a "aws/request.Request" representing the
371// client's request for the CancelSteps operation. The "output" return
372// value will be populated with the request's response once the request completes
373// successfully.
374//
375// Use "Send" method on the returned Request to send the API call to the service.
376// the "output" return value is not valid until after Send returns without error.
377//
378// See CancelSteps for more information on using the CancelSteps
379// API call, and error handling.
380//
381// This method is useful when you want to inject custom logic or configuration
382// into the SDK's request lifecycle. Such as custom headers, or retry logic.
383//
384//
385//    // Example sending a request using the CancelStepsRequest method.
386//    req, resp := client.CancelStepsRequest(params)
387//
388//    err := req.Send()
389//    if err == nil { // resp is now filled
390//        fmt.Println(resp)
391//    }
392//
393// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/CancelSteps
394func (c *EMR) CancelStepsRequest(input *CancelStepsInput) (req *request.Request, output *CancelStepsOutput) {
395	op := &request.Operation{
396		Name:       opCancelSteps,
397		HTTPMethod: "POST",
398		HTTPPath:   "/",
399	}
400
401	if input == nil {
402		input = &CancelStepsInput{}
403	}
404
405	output = &CancelStepsOutput{}
406	req = c.newRequest(op, input, output)
407	return
408}
409
410// CancelSteps API operation for Amazon Elastic MapReduce.
411//
412// Cancels a pending step or steps in a running cluster. Available only in Amazon
413// EMR versions 4.8.0 and later, excluding version 5.0.0. A maximum of 256 steps
414// are allowed in each CancelSteps request. CancelSteps is idempotent but asynchronous;
415// it does not guarantee a step will be canceled, even if the request is successfully
416// submitted. You can only cancel steps that are in a PENDING state.
417//
418// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
419// with awserr.Error's Code and Message methods to get detailed information about
420// the error.
421//
422// See the AWS API reference guide for Amazon Elastic MapReduce's
423// API operation CancelSteps for usage and error information.
424//
425// Returned Error Types:
426//   * InternalServerError
427//   Indicates that an error occurred while processing the request and that the
428//   request was not completed.
429//
430//   * InvalidRequestException
431//   This exception occurs when there is something wrong with user input.
432//
433// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/CancelSteps
434func (c *EMR) CancelSteps(input *CancelStepsInput) (*CancelStepsOutput, error) {
435	req, out := c.CancelStepsRequest(input)
436	return out, req.Send()
437}
438
439// CancelStepsWithContext is the same as CancelSteps with the addition of
440// the ability to pass a context and additional request options.
441//
442// See CancelSteps for details on how to use this API operation.
443//
444// The context must be non-nil and will be used for request cancellation. If
445// the context is nil a panic will occur. In the future the SDK may create
446// sub-contexts for http.Requests. See https://golang.org/pkg/context/
447// for more information on using Contexts.
448func (c *EMR) CancelStepsWithContext(ctx aws.Context, input *CancelStepsInput, opts ...request.Option) (*CancelStepsOutput, error) {
449	req, out := c.CancelStepsRequest(input)
450	req.SetContext(ctx)
451	req.ApplyOptions(opts...)
452	return out, req.Send()
453}
454
455const opCreateSecurityConfiguration = "CreateSecurityConfiguration"
456
457// CreateSecurityConfigurationRequest generates a "aws/request.Request" representing the
458// client's request for the CreateSecurityConfiguration operation. The "output" return
459// value will be populated with the request's response once the request completes
460// successfully.
461//
462// Use "Send" method on the returned Request to send the API call to the service.
463// the "output" return value is not valid until after Send returns without error.
464//
465// See CreateSecurityConfiguration for more information on using the CreateSecurityConfiguration
466// API call, and error handling.
467//
468// This method is useful when you want to inject custom logic or configuration
469// into the SDK's request lifecycle. Such as custom headers, or retry logic.
470//
471//
472//    // Example sending a request using the CreateSecurityConfigurationRequest method.
473//    req, resp := client.CreateSecurityConfigurationRequest(params)
474//
475//    err := req.Send()
476//    if err == nil { // resp is now filled
477//        fmt.Println(resp)
478//    }
479//
480// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/CreateSecurityConfiguration
481func (c *EMR) CreateSecurityConfigurationRequest(input *CreateSecurityConfigurationInput) (req *request.Request, output *CreateSecurityConfigurationOutput) {
482	op := &request.Operation{
483		Name:       opCreateSecurityConfiguration,
484		HTTPMethod: "POST",
485		HTTPPath:   "/",
486	}
487
488	if input == nil {
489		input = &CreateSecurityConfigurationInput{}
490	}
491
492	output = &CreateSecurityConfigurationOutput{}
493	req = c.newRequest(op, input, output)
494	return
495}
496
497// CreateSecurityConfiguration API operation for Amazon Elastic MapReduce.
498//
499// Creates a security configuration, which is stored in the service and can
500// be specified when a cluster is created.
501//
502// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
503// with awserr.Error's Code and Message methods to get detailed information about
504// the error.
505//
506// See the AWS API reference guide for Amazon Elastic MapReduce's
507// API operation CreateSecurityConfiguration for usage and error information.
508//
509// Returned Error Types:
510//   * InternalServerException
511//   This exception occurs when there is an internal failure in the EMR service.
512//
513//   * InvalidRequestException
514//   This exception occurs when there is something wrong with user input.
515//
516// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/CreateSecurityConfiguration
517func (c *EMR) CreateSecurityConfiguration(input *CreateSecurityConfigurationInput) (*CreateSecurityConfigurationOutput, error) {
518	req, out := c.CreateSecurityConfigurationRequest(input)
519	return out, req.Send()
520}
521
522// CreateSecurityConfigurationWithContext is the same as CreateSecurityConfiguration with the addition of
523// the ability to pass a context and additional request options.
524//
525// See CreateSecurityConfiguration for details on how to use this API operation.
526//
527// The context must be non-nil and will be used for request cancellation. If
528// the context is nil a panic will occur. In the future the SDK may create
529// sub-contexts for http.Requests. See https://golang.org/pkg/context/
530// for more information on using Contexts.
531func (c *EMR) CreateSecurityConfigurationWithContext(ctx aws.Context, input *CreateSecurityConfigurationInput, opts ...request.Option) (*CreateSecurityConfigurationOutput, error) {
532	req, out := c.CreateSecurityConfigurationRequest(input)
533	req.SetContext(ctx)
534	req.ApplyOptions(opts...)
535	return out, req.Send()
536}
537
538const opDeleteSecurityConfiguration = "DeleteSecurityConfiguration"
539
540// DeleteSecurityConfigurationRequest generates a "aws/request.Request" representing the
541// client's request for the DeleteSecurityConfiguration operation. The "output" return
542// value will be populated with the request's response once the request completes
543// successfully.
544//
545// Use "Send" method on the returned Request to send the API call to the service.
546// the "output" return value is not valid until after Send returns without error.
547//
548// See DeleteSecurityConfiguration for more information on using the DeleteSecurityConfiguration
549// API call, and error handling.
550//
551// This method is useful when you want to inject custom logic or configuration
552// into the SDK's request lifecycle. Such as custom headers, or retry logic.
553//
554//
555//    // Example sending a request using the DeleteSecurityConfigurationRequest method.
556//    req, resp := client.DeleteSecurityConfigurationRequest(params)
557//
558//    err := req.Send()
559//    if err == nil { // resp is now filled
560//        fmt.Println(resp)
561//    }
562//
563// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DeleteSecurityConfiguration
564func (c *EMR) DeleteSecurityConfigurationRequest(input *DeleteSecurityConfigurationInput) (req *request.Request, output *DeleteSecurityConfigurationOutput) {
565	op := &request.Operation{
566		Name:       opDeleteSecurityConfiguration,
567		HTTPMethod: "POST",
568		HTTPPath:   "/",
569	}
570
571	if input == nil {
572		input = &DeleteSecurityConfigurationInput{}
573	}
574
575	output = &DeleteSecurityConfigurationOutput{}
576	req = c.newRequest(op, input, output)
577	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
578	return
579}
580
581// DeleteSecurityConfiguration API operation for Amazon Elastic MapReduce.
582//
583// Deletes a security configuration.
584//
585// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
586// with awserr.Error's Code and Message methods to get detailed information about
587// the error.
588//
589// See the AWS API reference guide for Amazon Elastic MapReduce's
590// API operation DeleteSecurityConfiguration for usage and error information.
591//
592// Returned Error Types:
593//   * InternalServerException
594//   This exception occurs when there is an internal failure in the EMR service.
595//
596//   * InvalidRequestException
597//   This exception occurs when there is something wrong with user input.
598//
599// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DeleteSecurityConfiguration
600func (c *EMR) DeleteSecurityConfiguration(input *DeleteSecurityConfigurationInput) (*DeleteSecurityConfigurationOutput, error) {
601	req, out := c.DeleteSecurityConfigurationRequest(input)
602	return out, req.Send()
603}
604
605// DeleteSecurityConfigurationWithContext is the same as DeleteSecurityConfiguration with the addition of
606// the ability to pass a context and additional request options.
607//
608// See DeleteSecurityConfiguration for details on how to use this API operation.
609//
610// The context must be non-nil and will be used for request cancellation. If
611// the context is nil a panic will occur. In the future the SDK may create
612// sub-contexts for http.Requests. See https://golang.org/pkg/context/
613// for more information on using Contexts.
614func (c *EMR) DeleteSecurityConfigurationWithContext(ctx aws.Context, input *DeleteSecurityConfigurationInput, opts ...request.Option) (*DeleteSecurityConfigurationOutput, error) {
615	req, out := c.DeleteSecurityConfigurationRequest(input)
616	req.SetContext(ctx)
617	req.ApplyOptions(opts...)
618	return out, req.Send()
619}
620
621const opDescribeCluster = "DescribeCluster"
622
623// DescribeClusterRequest generates a "aws/request.Request" representing the
624// client's request for the DescribeCluster operation. The "output" return
625// value will be populated with the request's response once the request completes
626// successfully.
627//
628// Use "Send" method on the returned Request to send the API call to the service.
629// the "output" return value is not valid until after Send returns without error.
630//
631// See DescribeCluster for more information on using the DescribeCluster
632// API call, and error handling.
633//
634// This method is useful when you want to inject custom logic or configuration
635// into the SDK's request lifecycle. Such as custom headers, or retry logic.
636//
637//
638//    // Example sending a request using the DescribeClusterRequest method.
639//    req, resp := client.DescribeClusterRequest(params)
640//
641//    err := req.Send()
642//    if err == nil { // resp is now filled
643//        fmt.Println(resp)
644//    }
645//
646// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeCluster
647func (c *EMR) DescribeClusterRequest(input *DescribeClusterInput) (req *request.Request, output *DescribeClusterOutput) {
648	op := &request.Operation{
649		Name:       opDescribeCluster,
650		HTTPMethod: "POST",
651		HTTPPath:   "/",
652	}
653
654	if input == nil {
655		input = &DescribeClusterInput{}
656	}
657
658	output = &DescribeClusterOutput{}
659	req = c.newRequest(op, input, output)
660	return
661}
662
663// DescribeCluster API operation for Amazon Elastic MapReduce.
664//
665// Provides cluster-level details including status, hardware and software configuration,
666// VPC settings, and so on.
667//
668// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
669// with awserr.Error's Code and Message methods to get detailed information about
670// the error.
671//
672// See the AWS API reference guide for Amazon Elastic MapReduce's
673// API operation DescribeCluster for usage and error information.
674//
675// Returned Error Types:
676//   * InternalServerException
677//   This exception occurs when there is an internal failure in the EMR service.
678//
679//   * InvalidRequestException
680//   This exception occurs when there is something wrong with user input.
681//
682// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeCluster
683func (c *EMR) DescribeCluster(input *DescribeClusterInput) (*DescribeClusterOutput, error) {
684	req, out := c.DescribeClusterRequest(input)
685	return out, req.Send()
686}
687
688// DescribeClusterWithContext is the same as DescribeCluster with the addition of
689// the ability to pass a context and additional request options.
690//
691// See DescribeCluster for details on how to use this API operation.
692//
693// The context must be non-nil and will be used for request cancellation. If
694// the context is nil a panic will occur. In the future the SDK may create
695// sub-contexts for http.Requests. See https://golang.org/pkg/context/
696// for more information on using Contexts.
697func (c *EMR) DescribeClusterWithContext(ctx aws.Context, input *DescribeClusterInput, opts ...request.Option) (*DescribeClusterOutput, error) {
698	req, out := c.DescribeClusterRequest(input)
699	req.SetContext(ctx)
700	req.ApplyOptions(opts...)
701	return out, req.Send()
702}
703
704const opDescribeJobFlows = "DescribeJobFlows"
705
706// DescribeJobFlowsRequest generates a "aws/request.Request" representing the
707// client's request for the DescribeJobFlows operation. The "output" return
708// value will be populated with the request's response once the request completes
709// successfully.
710//
711// Use "Send" method on the returned Request to send the API call to the service.
712// the "output" return value is not valid until after Send returns without error.
713//
714// See DescribeJobFlows for more information on using the DescribeJobFlows
715// API call, and error handling.
716//
717// This method is useful when you want to inject custom logic or configuration
718// into the SDK's request lifecycle. Such as custom headers, or retry logic.
719//
720//
721//    // Example sending a request using the DescribeJobFlowsRequest method.
722//    req, resp := client.DescribeJobFlowsRequest(params)
723//
724//    err := req.Send()
725//    if err == nil { // resp is now filled
726//        fmt.Println(resp)
727//    }
728//
729// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeJobFlows
730//
731// Deprecated: DescribeJobFlows has been deprecated
732func (c *EMR) DescribeJobFlowsRequest(input *DescribeJobFlowsInput) (req *request.Request, output *DescribeJobFlowsOutput) {
733	if c.Client.Config.Logger != nil {
734		c.Client.Config.Logger.Log("This operation, DescribeJobFlows, has been deprecated")
735	}
736	op := &request.Operation{
737		Name:       opDescribeJobFlows,
738		HTTPMethod: "POST",
739		HTTPPath:   "/",
740	}
741
742	if input == nil {
743		input = &DescribeJobFlowsInput{}
744	}
745
746	output = &DescribeJobFlowsOutput{}
747	req = c.newRequest(op, input, output)
748	return
749}
750
751// DescribeJobFlows API operation for Amazon Elastic MapReduce.
752//
753// This API is deprecated and will eventually be removed. We recommend you use
754// ListClusters, DescribeCluster, ListSteps, ListInstanceGroups and ListBootstrapActions
755// instead.
756//
757// DescribeJobFlows returns a list of job flows that match all of the supplied
758// parameters. The parameters can include a list of job flow IDs, job flow states,
759// and restrictions on job flow creation date and time.
760//
761// Regardless of supplied parameters, only job flows created within the last
762// two months are returned.
763//
764// If no parameters are supplied, then job flows matching either of the following
765// criteria are returned:
766//
767//    * Job flows created and completed in the last two weeks
768//
769//    * Job flows created within the last two months that are in one of the
770//    following states: RUNNING, WAITING, SHUTTING_DOWN, STARTING
771//
772// Amazon EMR can return a maximum of 512 job flow descriptions.
773//
774// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
775// with awserr.Error's Code and Message methods to get detailed information about
776// the error.
777//
778// See the AWS API reference guide for Amazon Elastic MapReduce's
779// API operation DescribeJobFlows for usage and error information.
780//
781// Returned Error Types:
782//   * InternalServerError
783//   Indicates that an error occurred while processing the request and that the
784//   request was not completed.
785//
786// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeJobFlows
787//
788// Deprecated: DescribeJobFlows has been deprecated
789func (c *EMR) DescribeJobFlows(input *DescribeJobFlowsInput) (*DescribeJobFlowsOutput, error) {
790	req, out := c.DescribeJobFlowsRequest(input)
791	return out, req.Send()
792}
793
794// DescribeJobFlowsWithContext is the same as DescribeJobFlows with the addition of
795// the ability to pass a context and additional request options.
796//
797// See DescribeJobFlows for details on how to use this API operation.
798//
799// The context must be non-nil and will be used for request cancellation. If
800// the context is nil a panic will occur. In the future the SDK may create
801// sub-contexts for http.Requests. See https://golang.org/pkg/context/
802// for more information on using Contexts.
803//
804// Deprecated: DescribeJobFlowsWithContext has been deprecated
805func (c *EMR) DescribeJobFlowsWithContext(ctx aws.Context, input *DescribeJobFlowsInput, opts ...request.Option) (*DescribeJobFlowsOutput, error) {
806	req, out := c.DescribeJobFlowsRequest(input)
807	req.SetContext(ctx)
808	req.ApplyOptions(opts...)
809	return out, req.Send()
810}
811
812const opDescribeSecurityConfiguration = "DescribeSecurityConfiguration"
813
814// DescribeSecurityConfigurationRequest generates a "aws/request.Request" representing the
815// client's request for the DescribeSecurityConfiguration operation. The "output" return
816// value will be populated with the request's response once the request completes
817// successfully.
818//
819// Use "Send" method on the returned Request to send the API call to the service.
820// the "output" return value is not valid until after Send returns without error.
821//
822// See DescribeSecurityConfiguration for more information on using the DescribeSecurityConfiguration
823// API call, and error handling.
824//
825// This method is useful when you want to inject custom logic or configuration
826// into the SDK's request lifecycle. Such as custom headers, or retry logic.
827//
828//
829//    // Example sending a request using the DescribeSecurityConfigurationRequest method.
830//    req, resp := client.DescribeSecurityConfigurationRequest(params)
831//
832//    err := req.Send()
833//    if err == nil { // resp is now filled
834//        fmt.Println(resp)
835//    }
836//
837// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeSecurityConfiguration
838func (c *EMR) DescribeSecurityConfigurationRequest(input *DescribeSecurityConfigurationInput) (req *request.Request, output *DescribeSecurityConfigurationOutput) {
839	op := &request.Operation{
840		Name:       opDescribeSecurityConfiguration,
841		HTTPMethod: "POST",
842		HTTPPath:   "/",
843	}
844
845	if input == nil {
846		input = &DescribeSecurityConfigurationInput{}
847	}
848
849	output = &DescribeSecurityConfigurationOutput{}
850	req = c.newRequest(op, input, output)
851	return
852}
853
854// DescribeSecurityConfiguration API operation for Amazon Elastic MapReduce.
855//
856// Provides the details of a security configuration by returning the configuration
857// JSON.
858//
859// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
860// with awserr.Error's Code and Message methods to get detailed information about
861// the error.
862//
863// See the AWS API reference guide for Amazon Elastic MapReduce's
864// API operation DescribeSecurityConfiguration for usage and error information.
865//
866// Returned Error Types:
867//   * InternalServerException
868//   This exception occurs when there is an internal failure in the EMR service.
869//
870//   * InvalidRequestException
871//   This exception occurs when there is something wrong with user input.
872//
873// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeSecurityConfiguration
874func (c *EMR) DescribeSecurityConfiguration(input *DescribeSecurityConfigurationInput) (*DescribeSecurityConfigurationOutput, error) {
875	req, out := c.DescribeSecurityConfigurationRequest(input)
876	return out, req.Send()
877}
878
879// DescribeSecurityConfigurationWithContext is the same as DescribeSecurityConfiguration with the addition of
880// the ability to pass a context and additional request options.
881//
882// See DescribeSecurityConfiguration for details on how to use this API operation.
883//
884// The context must be non-nil and will be used for request cancellation. If
885// the context is nil a panic will occur. In the future the SDK may create
886// sub-contexts for http.Requests. See https://golang.org/pkg/context/
887// for more information on using Contexts.
888func (c *EMR) DescribeSecurityConfigurationWithContext(ctx aws.Context, input *DescribeSecurityConfigurationInput, opts ...request.Option) (*DescribeSecurityConfigurationOutput, error) {
889	req, out := c.DescribeSecurityConfigurationRequest(input)
890	req.SetContext(ctx)
891	req.ApplyOptions(opts...)
892	return out, req.Send()
893}
894
895const opDescribeStep = "DescribeStep"
896
897// DescribeStepRequest generates a "aws/request.Request" representing the
898// client's request for the DescribeStep operation. The "output" return
899// value will be populated with the request's response once the request completes
900// successfully.
901//
902// Use "Send" method on the returned Request to send the API call to the service.
903// the "output" return value is not valid until after Send returns without error.
904//
905// See DescribeStep for more information on using the DescribeStep
906// API call, and error handling.
907//
908// This method is useful when you want to inject custom logic or configuration
909// into the SDK's request lifecycle. Such as custom headers, or retry logic.
910//
911//
912//    // Example sending a request using the DescribeStepRequest method.
913//    req, resp := client.DescribeStepRequest(params)
914//
915//    err := req.Send()
916//    if err == nil { // resp is now filled
917//        fmt.Println(resp)
918//    }
919//
920// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeStep
921func (c *EMR) DescribeStepRequest(input *DescribeStepInput) (req *request.Request, output *DescribeStepOutput) {
922	op := &request.Operation{
923		Name:       opDescribeStep,
924		HTTPMethod: "POST",
925		HTTPPath:   "/",
926	}
927
928	if input == nil {
929		input = &DescribeStepInput{}
930	}
931
932	output = &DescribeStepOutput{}
933	req = c.newRequest(op, input, output)
934	return
935}
936
937// DescribeStep API operation for Amazon Elastic MapReduce.
938//
939// Provides more detail about the cluster step.
940//
941// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
942// with awserr.Error's Code and Message methods to get detailed information about
943// the error.
944//
945// See the AWS API reference guide for Amazon Elastic MapReduce's
946// API operation DescribeStep for usage and error information.
947//
948// Returned Error Types:
949//   * InternalServerException
950//   This exception occurs when there is an internal failure in the EMR service.
951//
952//   * InvalidRequestException
953//   This exception occurs when there is something wrong with user input.
954//
955// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/DescribeStep
956func (c *EMR) DescribeStep(input *DescribeStepInput) (*DescribeStepOutput, error) {
957	req, out := c.DescribeStepRequest(input)
958	return out, req.Send()
959}
960
961// DescribeStepWithContext is the same as DescribeStep with the addition of
962// the ability to pass a context and additional request options.
963//
964// See DescribeStep for details on how to use this API operation.
965//
966// The context must be non-nil and will be used for request cancellation. If
967// the context is nil a panic will occur. In the future the SDK may create
968// sub-contexts for http.Requests. See https://golang.org/pkg/context/
969// for more information on using Contexts.
970func (c *EMR) DescribeStepWithContext(ctx aws.Context, input *DescribeStepInput, opts ...request.Option) (*DescribeStepOutput, error) {
971	req, out := c.DescribeStepRequest(input)
972	req.SetContext(ctx)
973	req.ApplyOptions(opts...)
974	return out, req.Send()
975}
976
977const opGetBlockPublicAccessConfiguration = "GetBlockPublicAccessConfiguration"
978
979// GetBlockPublicAccessConfigurationRequest generates a "aws/request.Request" representing the
980// client's request for the GetBlockPublicAccessConfiguration operation. The "output" return
981// value will be populated with the request's response once the request completes
982// successfully.
983//
984// Use "Send" method on the returned Request to send the API call to the service.
985// the "output" return value is not valid until after Send returns without error.
986//
987// See GetBlockPublicAccessConfiguration for more information on using the GetBlockPublicAccessConfiguration
988// API call, and error handling.
989//
990// This method is useful when you want to inject custom logic or configuration
991// into the SDK's request lifecycle. Such as custom headers, or retry logic.
992//
993//
994//    // Example sending a request using the GetBlockPublicAccessConfigurationRequest method.
995//    req, resp := client.GetBlockPublicAccessConfigurationRequest(params)
996//
997//    err := req.Send()
998//    if err == nil { // resp is now filled
999//        fmt.Println(resp)
1000//    }
1001//
1002// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/GetBlockPublicAccessConfiguration
1003func (c *EMR) GetBlockPublicAccessConfigurationRequest(input *GetBlockPublicAccessConfigurationInput) (req *request.Request, output *GetBlockPublicAccessConfigurationOutput) {
1004	op := &request.Operation{
1005		Name:       opGetBlockPublicAccessConfiguration,
1006		HTTPMethod: "POST",
1007		HTTPPath:   "/",
1008	}
1009
1010	if input == nil {
1011		input = &GetBlockPublicAccessConfigurationInput{}
1012	}
1013
1014	output = &GetBlockPublicAccessConfigurationOutput{}
1015	req = c.newRequest(op, input, output)
1016	return
1017}
1018
1019// GetBlockPublicAccessConfiguration API operation for Amazon Elastic MapReduce.
1020//
1021// Returns the Amazon EMR block public access configuration for your AWS account
1022// in the current Region. For more information see Configure Block Public Access
1023// for Amazon EMR (https://docs.aws.amazon.com/emr/latest/ManagementGuide/configure-block-public-access.html)
1024// in the Amazon EMR Management Guide.
1025//
1026// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1027// with awserr.Error's Code and Message methods to get detailed information about
1028// the error.
1029//
1030// See the AWS API reference guide for Amazon Elastic MapReduce's
1031// API operation GetBlockPublicAccessConfiguration for usage and error information.
1032//
1033// Returned Error Types:
1034//   * InternalServerException
1035//   This exception occurs when there is an internal failure in the EMR service.
1036//
1037//   * InvalidRequestException
1038//   This exception occurs when there is something wrong with user input.
1039//
1040// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/GetBlockPublicAccessConfiguration
1041func (c *EMR) GetBlockPublicAccessConfiguration(input *GetBlockPublicAccessConfigurationInput) (*GetBlockPublicAccessConfigurationOutput, error) {
1042	req, out := c.GetBlockPublicAccessConfigurationRequest(input)
1043	return out, req.Send()
1044}
1045
1046// GetBlockPublicAccessConfigurationWithContext is the same as GetBlockPublicAccessConfiguration with the addition of
1047// the ability to pass a context and additional request options.
1048//
1049// See GetBlockPublicAccessConfiguration for details on how to use this API operation.
1050//
1051// The context must be non-nil and will be used for request cancellation. If
1052// the context is nil a panic will occur. In the future the SDK may create
1053// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1054// for more information on using Contexts.
1055func (c *EMR) GetBlockPublicAccessConfigurationWithContext(ctx aws.Context, input *GetBlockPublicAccessConfigurationInput, opts ...request.Option) (*GetBlockPublicAccessConfigurationOutput, error) {
1056	req, out := c.GetBlockPublicAccessConfigurationRequest(input)
1057	req.SetContext(ctx)
1058	req.ApplyOptions(opts...)
1059	return out, req.Send()
1060}
1061
1062const opGetManagedScalingPolicy = "GetManagedScalingPolicy"
1063
1064// GetManagedScalingPolicyRequest generates a "aws/request.Request" representing the
1065// client's request for the GetManagedScalingPolicy operation. The "output" return
1066// value will be populated with the request's response once the request completes
1067// successfully.
1068//
1069// Use "Send" method on the returned Request to send the API call to the service.
1070// the "output" return value is not valid until after Send returns without error.
1071//
1072// See GetManagedScalingPolicy for more information on using the GetManagedScalingPolicy
1073// API call, and error handling.
1074//
1075// This method is useful when you want to inject custom logic or configuration
1076// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1077//
1078//
1079//    // Example sending a request using the GetManagedScalingPolicyRequest method.
1080//    req, resp := client.GetManagedScalingPolicyRequest(params)
1081//
1082//    err := req.Send()
1083//    if err == nil { // resp is now filled
1084//        fmt.Println(resp)
1085//    }
1086//
1087// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/GetManagedScalingPolicy
1088func (c *EMR) GetManagedScalingPolicyRequest(input *GetManagedScalingPolicyInput) (req *request.Request, output *GetManagedScalingPolicyOutput) {
1089	op := &request.Operation{
1090		Name:       opGetManagedScalingPolicy,
1091		HTTPMethod: "POST",
1092		HTTPPath:   "/",
1093	}
1094
1095	if input == nil {
1096		input = &GetManagedScalingPolicyInput{}
1097	}
1098
1099	output = &GetManagedScalingPolicyOutput{}
1100	req = c.newRequest(op, input, output)
1101	return
1102}
1103
1104// GetManagedScalingPolicy API operation for Amazon Elastic MapReduce.
1105//
1106// Fetches the attached managed scaling policy for an Amazon EMR cluster.
1107//
1108// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1109// with awserr.Error's Code and Message methods to get detailed information about
1110// the error.
1111//
1112// See the AWS API reference guide for Amazon Elastic MapReduce's
1113// API operation GetManagedScalingPolicy for usage and error information.
1114// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/GetManagedScalingPolicy
1115func (c *EMR) GetManagedScalingPolicy(input *GetManagedScalingPolicyInput) (*GetManagedScalingPolicyOutput, error) {
1116	req, out := c.GetManagedScalingPolicyRequest(input)
1117	return out, req.Send()
1118}
1119
1120// GetManagedScalingPolicyWithContext is the same as GetManagedScalingPolicy with the addition of
1121// the ability to pass a context and additional request options.
1122//
1123// See GetManagedScalingPolicy for details on how to use this API operation.
1124//
1125// The context must be non-nil and will be used for request cancellation. If
1126// the context is nil a panic will occur. In the future the SDK may create
1127// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1128// for more information on using Contexts.
1129func (c *EMR) GetManagedScalingPolicyWithContext(ctx aws.Context, input *GetManagedScalingPolicyInput, opts ...request.Option) (*GetManagedScalingPolicyOutput, error) {
1130	req, out := c.GetManagedScalingPolicyRequest(input)
1131	req.SetContext(ctx)
1132	req.ApplyOptions(opts...)
1133	return out, req.Send()
1134}
1135
1136const opListBootstrapActions = "ListBootstrapActions"
1137
1138// ListBootstrapActionsRequest generates a "aws/request.Request" representing the
1139// client's request for the ListBootstrapActions operation. The "output" return
1140// value will be populated with the request's response once the request completes
1141// successfully.
1142//
1143// Use "Send" method on the returned Request to send the API call to the service.
1144// the "output" return value is not valid until after Send returns without error.
1145//
1146// See ListBootstrapActions for more information on using the ListBootstrapActions
1147// API call, and error handling.
1148//
1149// This method is useful when you want to inject custom logic or configuration
1150// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1151//
1152//
1153//    // Example sending a request using the ListBootstrapActionsRequest method.
1154//    req, resp := client.ListBootstrapActionsRequest(params)
1155//
1156//    err := req.Send()
1157//    if err == nil { // resp is now filled
1158//        fmt.Println(resp)
1159//    }
1160//
1161// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListBootstrapActions
1162func (c *EMR) ListBootstrapActionsRequest(input *ListBootstrapActionsInput) (req *request.Request, output *ListBootstrapActionsOutput) {
1163	op := &request.Operation{
1164		Name:       opListBootstrapActions,
1165		HTTPMethod: "POST",
1166		HTTPPath:   "/",
1167		Paginator: &request.Paginator{
1168			InputTokens:     []string{"Marker"},
1169			OutputTokens:    []string{"Marker"},
1170			LimitToken:      "",
1171			TruncationToken: "",
1172		},
1173	}
1174
1175	if input == nil {
1176		input = &ListBootstrapActionsInput{}
1177	}
1178
1179	output = &ListBootstrapActionsOutput{}
1180	req = c.newRequest(op, input, output)
1181	return
1182}
1183
1184// ListBootstrapActions API operation for Amazon Elastic MapReduce.
1185//
1186// Provides information about the bootstrap actions associated with a cluster.
1187//
1188// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1189// with awserr.Error's Code and Message methods to get detailed information about
1190// the error.
1191//
1192// See the AWS API reference guide for Amazon Elastic MapReduce's
1193// API operation ListBootstrapActions for usage and error information.
1194//
1195// Returned Error Types:
1196//   * InternalServerException
1197//   This exception occurs when there is an internal failure in the EMR service.
1198//
1199//   * InvalidRequestException
1200//   This exception occurs when there is something wrong with user input.
1201//
1202// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListBootstrapActions
1203func (c *EMR) ListBootstrapActions(input *ListBootstrapActionsInput) (*ListBootstrapActionsOutput, error) {
1204	req, out := c.ListBootstrapActionsRequest(input)
1205	return out, req.Send()
1206}
1207
1208// ListBootstrapActionsWithContext is the same as ListBootstrapActions with the addition of
1209// the ability to pass a context and additional request options.
1210//
1211// See ListBootstrapActions for details on how to use this API operation.
1212//
1213// The context must be non-nil and will be used for request cancellation. If
1214// the context is nil a panic will occur. In the future the SDK may create
1215// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1216// for more information on using Contexts.
1217func (c *EMR) ListBootstrapActionsWithContext(ctx aws.Context, input *ListBootstrapActionsInput, opts ...request.Option) (*ListBootstrapActionsOutput, error) {
1218	req, out := c.ListBootstrapActionsRequest(input)
1219	req.SetContext(ctx)
1220	req.ApplyOptions(opts...)
1221	return out, req.Send()
1222}
1223
1224// ListBootstrapActionsPages iterates over the pages of a ListBootstrapActions operation,
1225// calling the "fn" function with the response data for each page. To stop
1226// iterating, return false from the fn function.
1227//
1228// See ListBootstrapActions method for more information on how to use this operation.
1229//
1230// Note: This operation can generate multiple requests to a service.
1231//
1232//    // Example iterating over at most 3 pages of a ListBootstrapActions operation.
1233//    pageNum := 0
1234//    err := client.ListBootstrapActionsPages(params,
1235//        func(page *emr.ListBootstrapActionsOutput, lastPage bool) bool {
1236//            pageNum++
1237//            fmt.Println(page)
1238//            return pageNum <= 3
1239//        })
1240//
1241func (c *EMR) ListBootstrapActionsPages(input *ListBootstrapActionsInput, fn func(*ListBootstrapActionsOutput, bool) bool) error {
1242	return c.ListBootstrapActionsPagesWithContext(aws.BackgroundContext(), input, fn)
1243}
1244
1245// ListBootstrapActionsPagesWithContext same as ListBootstrapActionsPages except
1246// it takes a Context and allows setting request options on the pages.
1247//
1248// The context must be non-nil and will be used for request cancellation. If
1249// the context is nil a panic will occur. In the future the SDK may create
1250// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1251// for more information on using Contexts.
1252func (c *EMR) ListBootstrapActionsPagesWithContext(ctx aws.Context, input *ListBootstrapActionsInput, fn func(*ListBootstrapActionsOutput, bool) bool, opts ...request.Option) error {
1253	p := request.Pagination{
1254		NewRequest: func() (*request.Request, error) {
1255			var inCpy *ListBootstrapActionsInput
1256			if input != nil {
1257				tmp := *input
1258				inCpy = &tmp
1259			}
1260			req, _ := c.ListBootstrapActionsRequest(inCpy)
1261			req.SetContext(ctx)
1262			req.ApplyOptions(opts...)
1263			return req, nil
1264		},
1265	}
1266
1267	for p.Next() {
1268		if !fn(p.Page().(*ListBootstrapActionsOutput), !p.HasNextPage()) {
1269			break
1270		}
1271	}
1272
1273	return p.Err()
1274}
1275
1276const opListClusters = "ListClusters"
1277
1278// ListClustersRequest generates a "aws/request.Request" representing the
1279// client's request for the ListClusters operation. The "output" return
1280// value will be populated with the request's response once the request completes
1281// successfully.
1282//
1283// Use "Send" method on the returned Request to send the API call to the service.
1284// the "output" return value is not valid until after Send returns without error.
1285//
1286// See ListClusters for more information on using the ListClusters
1287// API call, and error handling.
1288//
1289// This method is useful when you want to inject custom logic or configuration
1290// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1291//
1292//
1293//    // Example sending a request using the ListClustersRequest method.
1294//    req, resp := client.ListClustersRequest(params)
1295//
1296//    err := req.Send()
1297//    if err == nil { // resp is now filled
1298//        fmt.Println(resp)
1299//    }
1300//
1301// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListClusters
1302func (c *EMR) ListClustersRequest(input *ListClustersInput) (req *request.Request, output *ListClustersOutput) {
1303	op := &request.Operation{
1304		Name:       opListClusters,
1305		HTTPMethod: "POST",
1306		HTTPPath:   "/",
1307		Paginator: &request.Paginator{
1308			InputTokens:     []string{"Marker"},
1309			OutputTokens:    []string{"Marker"},
1310			LimitToken:      "",
1311			TruncationToken: "",
1312		},
1313	}
1314
1315	if input == nil {
1316		input = &ListClustersInput{}
1317	}
1318
1319	output = &ListClustersOutput{}
1320	req = c.newRequest(op, input, output)
1321	return
1322}
1323
1324// ListClusters API operation for Amazon Elastic MapReduce.
1325//
1326// Provides the status of all clusters visible to this AWS account. Allows you
1327// to filter the list of clusters based on certain criteria; for example, filtering
1328// by cluster creation date and time or by status. This call returns a maximum
1329// of 50 clusters per call, but returns a marker to track the paging of the
1330// cluster list across multiple ListClusters calls.
1331//
1332// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1333// with awserr.Error's Code and Message methods to get detailed information about
1334// the error.
1335//
1336// See the AWS API reference guide for Amazon Elastic MapReduce's
1337// API operation ListClusters for usage and error information.
1338//
1339// Returned Error Types:
1340//   * InternalServerException
1341//   This exception occurs when there is an internal failure in the EMR service.
1342//
1343//   * InvalidRequestException
1344//   This exception occurs when there is something wrong with user input.
1345//
1346// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListClusters
1347func (c *EMR) ListClusters(input *ListClustersInput) (*ListClustersOutput, error) {
1348	req, out := c.ListClustersRequest(input)
1349	return out, req.Send()
1350}
1351
1352// ListClustersWithContext is the same as ListClusters with the addition of
1353// the ability to pass a context and additional request options.
1354//
1355// See ListClusters for details on how to use this API operation.
1356//
1357// The context must be non-nil and will be used for request cancellation. If
1358// the context is nil a panic will occur. In the future the SDK may create
1359// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1360// for more information on using Contexts.
1361func (c *EMR) ListClustersWithContext(ctx aws.Context, input *ListClustersInput, opts ...request.Option) (*ListClustersOutput, error) {
1362	req, out := c.ListClustersRequest(input)
1363	req.SetContext(ctx)
1364	req.ApplyOptions(opts...)
1365	return out, req.Send()
1366}
1367
1368// ListClustersPages iterates over the pages of a ListClusters operation,
1369// calling the "fn" function with the response data for each page. To stop
1370// iterating, return false from the fn function.
1371//
1372// See ListClusters method for more information on how to use this operation.
1373//
1374// Note: This operation can generate multiple requests to a service.
1375//
1376//    // Example iterating over at most 3 pages of a ListClusters operation.
1377//    pageNum := 0
1378//    err := client.ListClustersPages(params,
1379//        func(page *emr.ListClustersOutput, lastPage bool) bool {
1380//            pageNum++
1381//            fmt.Println(page)
1382//            return pageNum <= 3
1383//        })
1384//
1385func (c *EMR) ListClustersPages(input *ListClustersInput, fn func(*ListClustersOutput, bool) bool) error {
1386	return c.ListClustersPagesWithContext(aws.BackgroundContext(), input, fn)
1387}
1388
1389// ListClustersPagesWithContext same as ListClustersPages except
1390// it takes a Context and allows setting request options on the pages.
1391//
1392// The context must be non-nil and will be used for request cancellation. If
1393// the context is nil a panic will occur. In the future the SDK may create
1394// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1395// for more information on using Contexts.
1396func (c *EMR) ListClustersPagesWithContext(ctx aws.Context, input *ListClustersInput, fn func(*ListClustersOutput, bool) bool, opts ...request.Option) error {
1397	p := request.Pagination{
1398		NewRequest: func() (*request.Request, error) {
1399			var inCpy *ListClustersInput
1400			if input != nil {
1401				tmp := *input
1402				inCpy = &tmp
1403			}
1404			req, _ := c.ListClustersRequest(inCpy)
1405			req.SetContext(ctx)
1406			req.ApplyOptions(opts...)
1407			return req, nil
1408		},
1409	}
1410
1411	for p.Next() {
1412		if !fn(p.Page().(*ListClustersOutput), !p.HasNextPage()) {
1413			break
1414		}
1415	}
1416
1417	return p.Err()
1418}
1419
1420const opListInstanceFleets = "ListInstanceFleets"
1421
1422// ListInstanceFleetsRequest generates a "aws/request.Request" representing the
1423// client's request for the ListInstanceFleets operation. The "output" return
1424// value will be populated with the request's response once the request completes
1425// successfully.
1426//
1427// Use "Send" method on the returned Request to send the API call to the service.
1428// the "output" return value is not valid until after Send returns without error.
1429//
1430// See ListInstanceFleets for more information on using the ListInstanceFleets
1431// API call, and error handling.
1432//
1433// This method is useful when you want to inject custom logic or configuration
1434// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1435//
1436//
1437//    // Example sending a request using the ListInstanceFleetsRequest method.
1438//    req, resp := client.ListInstanceFleetsRequest(params)
1439//
1440//    err := req.Send()
1441//    if err == nil { // resp is now filled
1442//        fmt.Println(resp)
1443//    }
1444//
1445// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstanceFleets
1446func (c *EMR) ListInstanceFleetsRequest(input *ListInstanceFleetsInput) (req *request.Request, output *ListInstanceFleetsOutput) {
1447	op := &request.Operation{
1448		Name:       opListInstanceFleets,
1449		HTTPMethod: "POST",
1450		HTTPPath:   "/",
1451		Paginator: &request.Paginator{
1452			InputTokens:     []string{"Marker"},
1453			OutputTokens:    []string{"Marker"},
1454			LimitToken:      "",
1455			TruncationToken: "",
1456		},
1457	}
1458
1459	if input == nil {
1460		input = &ListInstanceFleetsInput{}
1461	}
1462
1463	output = &ListInstanceFleetsOutput{}
1464	req = c.newRequest(op, input, output)
1465	return
1466}
1467
1468// ListInstanceFleets API operation for Amazon Elastic MapReduce.
1469//
1470// Lists all available details about the instance fleets in a cluster.
1471//
1472// The instance fleet configuration is available only in Amazon EMR versions
1473// 4.8.0 and later, excluding 5.0.x versions.
1474//
1475// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1476// with awserr.Error's Code and Message methods to get detailed information about
1477// the error.
1478//
1479// See the AWS API reference guide for Amazon Elastic MapReduce's
1480// API operation ListInstanceFleets for usage and error information.
1481//
1482// Returned Error Types:
1483//   * InternalServerException
1484//   This exception occurs when there is an internal failure in the EMR service.
1485//
1486//   * InvalidRequestException
1487//   This exception occurs when there is something wrong with user input.
1488//
1489// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstanceFleets
1490func (c *EMR) ListInstanceFleets(input *ListInstanceFleetsInput) (*ListInstanceFleetsOutput, error) {
1491	req, out := c.ListInstanceFleetsRequest(input)
1492	return out, req.Send()
1493}
1494
1495// ListInstanceFleetsWithContext is the same as ListInstanceFleets with the addition of
1496// the ability to pass a context and additional request options.
1497//
1498// See ListInstanceFleets for details on how to use this API operation.
1499//
1500// The context must be non-nil and will be used for request cancellation. If
1501// the context is nil a panic will occur. In the future the SDK may create
1502// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1503// for more information on using Contexts.
1504func (c *EMR) ListInstanceFleetsWithContext(ctx aws.Context, input *ListInstanceFleetsInput, opts ...request.Option) (*ListInstanceFleetsOutput, error) {
1505	req, out := c.ListInstanceFleetsRequest(input)
1506	req.SetContext(ctx)
1507	req.ApplyOptions(opts...)
1508	return out, req.Send()
1509}
1510
1511// ListInstanceFleetsPages iterates over the pages of a ListInstanceFleets operation,
1512// calling the "fn" function with the response data for each page. To stop
1513// iterating, return false from the fn function.
1514//
1515// See ListInstanceFleets method for more information on how to use this operation.
1516//
1517// Note: This operation can generate multiple requests to a service.
1518//
1519//    // Example iterating over at most 3 pages of a ListInstanceFleets operation.
1520//    pageNum := 0
1521//    err := client.ListInstanceFleetsPages(params,
1522//        func(page *emr.ListInstanceFleetsOutput, lastPage bool) bool {
1523//            pageNum++
1524//            fmt.Println(page)
1525//            return pageNum <= 3
1526//        })
1527//
1528func (c *EMR) ListInstanceFleetsPages(input *ListInstanceFleetsInput, fn func(*ListInstanceFleetsOutput, bool) bool) error {
1529	return c.ListInstanceFleetsPagesWithContext(aws.BackgroundContext(), input, fn)
1530}
1531
1532// ListInstanceFleetsPagesWithContext same as ListInstanceFleetsPages except
1533// it takes a Context and allows setting request options on the pages.
1534//
1535// The context must be non-nil and will be used for request cancellation. If
1536// the context is nil a panic will occur. In the future the SDK may create
1537// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1538// for more information on using Contexts.
1539func (c *EMR) ListInstanceFleetsPagesWithContext(ctx aws.Context, input *ListInstanceFleetsInput, fn func(*ListInstanceFleetsOutput, bool) bool, opts ...request.Option) error {
1540	p := request.Pagination{
1541		NewRequest: func() (*request.Request, error) {
1542			var inCpy *ListInstanceFleetsInput
1543			if input != nil {
1544				tmp := *input
1545				inCpy = &tmp
1546			}
1547			req, _ := c.ListInstanceFleetsRequest(inCpy)
1548			req.SetContext(ctx)
1549			req.ApplyOptions(opts...)
1550			return req, nil
1551		},
1552	}
1553
1554	for p.Next() {
1555		if !fn(p.Page().(*ListInstanceFleetsOutput), !p.HasNextPage()) {
1556			break
1557		}
1558	}
1559
1560	return p.Err()
1561}
1562
1563const opListInstanceGroups = "ListInstanceGroups"
1564
1565// ListInstanceGroupsRequest generates a "aws/request.Request" representing the
1566// client's request for the ListInstanceGroups operation. The "output" return
1567// value will be populated with the request's response once the request completes
1568// successfully.
1569//
1570// Use "Send" method on the returned Request to send the API call to the service.
1571// the "output" return value is not valid until after Send returns without error.
1572//
1573// See ListInstanceGroups for more information on using the ListInstanceGroups
1574// API call, and error handling.
1575//
1576// This method is useful when you want to inject custom logic or configuration
1577// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1578//
1579//
1580//    // Example sending a request using the ListInstanceGroupsRequest method.
1581//    req, resp := client.ListInstanceGroupsRequest(params)
1582//
1583//    err := req.Send()
1584//    if err == nil { // resp is now filled
1585//        fmt.Println(resp)
1586//    }
1587//
1588// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstanceGroups
1589func (c *EMR) ListInstanceGroupsRequest(input *ListInstanceGroupsInput) (req *request.Request, output *ListInstanceGroupsOutput) {
1590	op := &request.Operation{
1591		Name:       opListInstanceGroups,
1592		HTTPMethod: "POST",
1593		HTTPPath:   "/",
1594		Paginator: &request.Paginator{
1595			InputTokens:     []string{"Marker"},
1596			OutputTokens:    []string{"Marker"},
1597			LimitToken:      "",
1598			TruncationToken: "",
1599		},
1600	}
1601
1602	if input == nil {
1603		input = &ListInstanceGroupsInput{}
1604	}
1605
1606	output = &ListInstanceGroupsOutput{}
1607	req = c.newRequest(op, input, output)
1608	return
1609}
1610
1611// ListInstanceGroups API operation for Amazon Elastic MapReduce.
1612//
1613// Provides all available details about the instance groups in a cluster.
1614//
1615// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1616// with awserr.Error's Code and Message methods to get detailed information about
1617// the error.
1618//
1619// See the AWS API reference guide for Amazon Elastic MapReduce's
1620// API operation ListInstanceGroups for usage and error information.
1621//
1622// Returned Error Types:
1623//   * InternalServerException
1624//   This exception occurs when there is an internal failure in the EMR service.
1625//
1626//   * InvalidRequestException
1627//   This exception occurs when there is something wrong with user input.
1628//
1629// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstanceGroups
1630func (c *EMR) ListInstanceGroups(input *ListInstanceGroupsInput) (*ListInstanceGroupsOutput, error) {
1631	req, out := c.ListInstanceGroupsRequest(input)
1632	return out, req.Send()
1633}
1634
1635// ListInstanceGroupsWithContext is the same as ListInstanceGroups with the addition of
1636// the ability to pass a context and additional request options.
1637//
1638// See ListInstanceGroups for details on how to use this API operation.
1639//
1640// The context must be non-nil and will be used for request cancellation. If
1641// the context is nil a panic will occur. In the future the SDK may create
1642// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1643// for more information on using Contexts.
1644func (c *EMR) ListInstanceGroupsWithContext(ctx aws.Context, input *ListInstanceGroupsInput, opts ...request.Option) (*ListInstanceGroupsOutput, error) {
1645	req, out := c.ListInstanceGroupsRequest(input)
1646	req.SetContext(ctx)
1647	req.ApplyOptions(opts...)
1648	return out, req.Send()
1649}
1650
1651// ListInstanceGroupsPages iterates over the pages of a ListInstanceGroups operation,
1652// calling the "fn" function with the response data for each page. To stop
1653// iterating, return false from the fn function.
1654//
1655// See ListInstanceGroups method for more information on how to use this operation.
1656//
1657// Note: This operation can generate multiple requests to a service.
1658//
1659//    // Example iterating over at most 3 pages of a ListInstanceGroups operation.
1660//    pageNum := 0
1661//    err := client.ListInstanceGroupsPages(params,
1662//        func(page *emr.ListInstanceGroupsOutput, lastPage bool) bool {
1663//            pageNum++
1664//            fmt.Println(page)
1665//            return pageNum <= 3
1666//        })
1667//
1668func (c *EMR) ListInstanceGroupsPages(input *ListInstanceGroupsInput, fn func(*ListInstanceGroupsOutput, bool) bool) error {
1669	return c.ListInstanceGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
1670}
1671
1672// ListInstanceGroupsPagesWithContext same as ListInstanceGroupsPages except
1673// it takes a Context and allows setting request options on the pages.
1674//
1675// The context must be non-nil and will be used for request cancellation. If
1676// the context is nil a panic will occur. In the future the SDK may create
1677// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1678// for more information on using Contexts.
1679func (c *EMR) ListInstanceGroupsPagesWithContext(ctx aws.Context, input *ListInstanceGroupsInput, fn func(*ListInstanceGroupsOutput, bool) bool, opts ...request.Option) error {
1680	p := request.Pagination{
1681		NewRequest: func() (*request.Request, error) {
1682			var inCpy *ListInstanceGroupsInput
1683			if input != nil {
1684				tmp := *input
1685				inCpy = &tmp
1686			}
1687			req, _ := c.ListInstanceGroupsRequest(inCpy)
1688			req.SetContext(ctx)
1689			req.ApplyOptions(opts...)
1690			return req, nil
1691		},
1692	}
1693
1694	for p.Next() {
1695		if !fn(p.Page().(*ListInstanceGroupsOutput), !p.HasNextPage()) {
1696			break
1697		}
1698	}
1699
1700	return p.Err()
1701}
1702
1703const opListInstances = "ListInstances"
1704
1705// ListInstancesRequest generates a "aws/request.Request" representing the
1706// client's request for the ListInstances operation. The "output" return
1707// value will be populated with the request's response once the request completes
1708// successfully.
1709//
1710// Use "Send" method on the returned Request to send the API call to the service.
1711// the "output" return value is not valid until after Send returns without error.
1712//
1713// See ListInstances for more information on using the ListInstances
1714// API call, and error handling.
1715//
1716// This method is useful when you want to inject custom logic or configuration
1717// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1718//
1719//
1720//    // Example sending a request using the ListInstancesRequest method.
1721//    req, resp := client.ListInstancesRequest(params)
1722//
1723//    err := req.Send()
1724//    if err == nil { // resp is now filled
1725//        fmt.Println(resp)
1726//    }
1727//
1728// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstances
1729func (c *EMR) ListInstancesRequest(input *ListInstancesInput) (req *request.Request, output *ListInstancesOutput) {
1730	op := &request.Operation{
1731		Name:       opListInstances,
1732		HTTPMethod: "POST",
1733		HTTPPath:   "/",
1734		Paginator: &request.Paginator{
1735			InputTokens:     []string{"Marker"},
1736			OutputTokens:    []string{"Marker"},
1737			LimitToken:      "",
1738			TruncationToken: "",
1739		},
1740	}
1741
1742	if input == nil {
1743		input = &ListInstancesInput{}
1744	}
1745
1746	output = &ListInstancesOutput{}
1747	req = c.newRequest(op, input, output)
1748	return
1749}
1750
1751// ListInstances API operation for Amazon Elastic MapReduce.
1752//
1753// Provides information for all active EC2 instances and EC2 instances terminated
1754// in the last 30 days, up to a maximum of 2,000. EC2 instances in any of the
1755// following states are considered active: AWAITING_FULFILLMENT, PROVISIONING,
1756// BOOTSTRAPPING, RUNNING.
1757//
1758// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1759// with awserr.Error's Code and Message methods to get detailed information about
1760// the error.
1761//
1762// See the AWS API reference guide for Amazon Elastic MapReduce's
1763// API operation ListInstances for usage and error information.
1764//
1765// Returned Error Types:
1766//   * InternalServerException
1767//   This exception occurs when there is an internal failure in the EMR service.
1768//
1769//   * InvalidRequestException
1770//   This exception occurs when there is something wrong with user input.
1771//
1772// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstances
1773func (c *EMR) ListInstances(input *ListInstancesInput) (*ListInstancesOutput, error) {
1774	req, out := c.ListInstancesRequest(input)
1775	return out, req.Send()
1776}
1777
1778// ListInstancesWithContext is the same as ListInstances with the addition of
1779// the ability to pass a context and additional request options.
1780//
1781// See ListInstances for details on how to use this API operation.
1782//
1783// The context must be non-nil and will be used for request cancellation. If
1784// the context is nil a panic will occur. In the future the SDK may create
1785// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1786// for more information on using Contexts.
1787func (c *EMR) ListInstancesWithContext(ctx aws.Context, input *ListInstancesInput, opts ...request.Option) (*ListInstancesOutput, error) {
1788	req, out := c.ListInstancesRequest(input)
1789	req.SetContext(ctx)
1790	req.ApplyOptions(opts...)
1791	return out, req.Send()
1792}
1793
1794// ListInstancesPages iterates over the pages of a ListInstances operation,
1795// calling the "fn" function with the response data for each page. To stop
1796// iterating, return false from the fn function.
1797//
1798// See ListInstances method for more information on how to use this operation.
1799//
1800// Note: This operation can generate multiple requests to a service.
1801//
1802//    // Example iterating over at most 3 pages of a ListInstances operation.
1803//    pageNum := 0
1804//    err := client.ListInstancesPages(params,
1805//        func(page *emr.ListInstancesOutput, lastPage bool) bool {
1806//            pageNum++
1807//            fmt.Println(page)
1808//            return pageNum <= 3
1809//        })
1810//
1811func (c *EMR) ListInstancesPages(input *ListInstancesInput, fn func(*ListInstancesOutput, bool) bool) error {
1812	return c.ListInstancesPagesWithContext(aws.BackgroundContext(), input, fn)
1813}
1814
1815// ListInstancesPagesWithContext same as ListInstancesPages except
1816// it takes a Context and allows setting request options on the pages.
1817//
1818// The context must be non-nil and will be used for request cancellation. If
1819// the context is nil a panic will occur. In the future the SDK may create
1820// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1821// for more information on using Contexts.
1822func (c *EMR) ListInstancesPagesWithContext(ctx aws.Context, input *ListInstancesInput, fn func(*ListInstancesOutput, bool) bool, opts ...request.Option) error {
1823	p := request.Pagination{
1824		NewRequest: func() (*request.Request, error) {
1825			var inCpy *ListInstancesInput
1826			if input != nil {
1827				tmp := *input
1828				inCpy = &tmp
1829			}
1830			req, _ := c.ListInstancesRequest(inCpy)
1831			req.SetContext(ctx)
1832			req.ApplyOptions(opts...)
1833			return req, nil
1834		},
1835	}
1836
1837	for p.Next() {
1838		if !fn(p.Page().(*ListInstancesOutput), !p.HasNextPage()) {
1839			break
1840		}
1841	}
1842
1843	return p.Err()
1844}
1845
1846const opListSecurityConfigurations = "ListSecurityConfigurations"
1847
1848// ListSecurityConfigurationsRequest generates a "aws/request.Request" representing the
1849// client's request for the ListSecurityConfigurations operation. The "output" return
1850// value will be populated with the request's response once the request completes
1851// successfully.
1852//
1853// Use "Send" method on the returned Request to send the API call to the service.
1854// the "output" return value is not valid until after Send returns without error.
1855//
1856// See ListSecurityConfigurations for more information on using the ListSecurityConfigurations
1857// API call, and error handling.
1858//
1859// This method is useful when you want to inject custom logic or configuration
1860// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1861//
1862//
1863//    // Example sending a request using the ListSecurityConfigurationsRequest method.
1864//    req, resp := client.ListSecurityConfigurationsRequest(params)
1865//
1866//    err := req.Send()
1867//    if err == nil { // resp is now filled
1868//        fmt.Println(resp)
1869//    }
1870//
1871// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListSecurityConfigurations
1872func (c *EMR) ListSecurityConfigurationsRequest(input *ListSecurityConfigurationsInput) (req *request.Request, output *ListSecurityConfigurationsOutput) {
1873	op := &request.Operation{
1874		Name:       opListSecurityConfigurations,
1875		HTTPMethod: "POST",
1876		HTTPPath:   "/",
1877		Paginator: &request.Paginator{
1878			InputTokens:     []string{"Marker"},
1879			OutputTokens:    []string{"Marker"},
1880			LimitToken:      "",
1881			TruncationToken: "",
1882		},
1883	}
1884
1885	if input == nil {
1886		input = &ListSecurityConfigurationsInput{}
1887	}
1888
1889	output = &ListSecurityConfigurationsOutput{}
1890	req = c.newRequest(op, input, output)
1891	return
1892}
1893
1894// ListSecurityConfigurations API operation for Amazon Elastic MapReduce.
1895//
1896// Lists all the security configurations visible to this account, providing
1897// their creation dates and times, and their names. This call returns a maximum
1898// of 50 clusters per call, but returns a marker to track the paging of the
1899// cluster list across multiple ListSecurityConfigurations calls.
1900//
1901// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1902// with awserr.Error's Code and Message methods to get detailed information about
1903// the error.
1904//
1905// See the AWS API reference guide for Amazon Elastic MapReduce's
1906// API operation ListSecurityConfigurations for usage and error information.
1907//
1908// Returned Error Types:
1909//   * InternalServerException
1910//   This exception occurs when there is an internal failure in the EMR service.
1911//
1912//   * InvalidRequestException
1913//   This exception occurs when there is something wrong with user input.
1914//
1915// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListSecurityConfigurations
1916func (c *EMR) ListSecurityConfigurations(input *ListSecurityConfigurationsInput) (*ListSecurityConfigurationsOutput, error) {
1917	req, out := c.ListSecurityConfigurationsRequest(input)
1918	return out, req.Send()
1919}
1920
1921// ListSecurityConfigurationsWithContext is the same as ListSecurityConfigurations with the addition of
1922// the ability to pass a context and additional request options.
1923//
1924// See ListSecurityConfigurations for details on how to use this API operation.
1925//
1926// The context must be non-nil and will be used for request cancellation. If
1927// the context is nil a panic will occur. In the future the SDK may create
1928// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1929// for more information on using Contexts.
1930func (c *EMR) ListSecurityConfigurationsWithContext(ctx aws.Context, input *ListSecurityConfigurationsInput, opts ...request.Option) (*ListSecurityConfigurationsOutput, error) {
1931	req, out := c.ListSecurityConfigurationsRequest(input)
1932	req.SetContext(ctx)
1933	req.ApplyOptions(opts...)
1934	return out, req.Send()
1935}
1936
1937// ListSecurityConfigurationsPages iterates over the pages of a ListSecurityConfigurations operation,
1938// calling the "fn" function with the response data for each page. To stop
1939// iterating, return false from the fn function.
1940//
1941// See ListSecurityConfigurations method for more information on how to use this operation.
1942//
1943// Note: This operation can generate multiple requests to a service.
1944//
1945//    // Example iterating over at most 3 pages of a ListSecurityConfigurations operation.
1946//    pageNum := 0
1947//    err := client.ListSecurityConfigurationsPages(params,
1948//        func(page *emr.ListSecurityConfigurationsOutput, lastPage bool) bool {
1949//            pageNum++
1950//            fmt.Println(page)
1951//            return pageNum <= 3
1952//        })
1953//
1954func (c *EMR) ListSecurityConfigurationsPages(input *ListSecurityConfigurationsInput, fn func(*ListSecurityConfigurationsOutput, bool) bool) error {
1955	return c.ListSecurityConfigurationsPagesWithContext(aws.BackgroundContext(), input, fn)
1956}
1957
1958// ListSecurityConfigurationsPagesWithContext same as ListSecurityConfigurationsPages except
1959// it takes a Context and allows setting request options on the pages.
1960//
1961// The context must be non-nil and will be used for request cancellation. If
1962// the context is nil a panic will occur. In the future the SDK may create
1963// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1964// for more information on using Contexts.
1965func (c *EMR) ListSecurityConfigurationsPagesWithContext(ctx aws.Context, input *ListSecurityConfigurationsInput, fn func(*ListSecurityConfigurationsOutput, bool) bool, opts ...request.Option) error {
1966	p := request.Pagination{
1967		NewRequest: func() (*request.Request, error) {
1968			var inCpy *ListSecurityConfigurationsInput
1969			if input != nil {
1970				tmp := *input
1971				inCpy = &tmp
1972			}
1973			req, _ := c.ListSecurityConfigurationsRequest(inCpy)
1974			req.SetContext(ctx)
1975			req.ApplyOptions(opts...)
1976			return req, nil
1977		},
1978	}
1979
1980	for p.Next() {
1981		if !fn(p.Page().(*ListSecurityConfigurationsOutput), !p.HasNextPage()) {
1982			break
1983		}
1984	}
1985
1986	return p.Err()
1987}
1988
1989const opListSteps = "ListSteps"
1990
1991// ListStepsRequest generates a "aws/request.Request" representing the
1992// client's request for the ListSteps operation. The "output" return
1993// value will be populated with the request's response once the request completes
1994// successfully.
1995//
1996// Use "Send" method on the returned Request to send the API call to the service.
1997// the "output" return value is not valid until after Send returns without error.
1998//
1999// See ListSteps for more information on using the ListSteps
2000// API call, and error handling.
2001//
2002// This method is useful when you want to inject custom logic or configuration
2003// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2004//
2005//
2006//    // Example sending a request using the ListStepsRequest method.
2007//    req, resp := client.ListStepsRequest(params)
2008//
2009//    err := req.Send()
2010//    if err == nil { // resp is now filled
2011//        fmt.Println(resp)
2012//    }
2013//
2014// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListSteps
2015func (c *EMR) ListStepsRequest(input *ListStepsInput) (req *request.Request, output *ListStepsOutput) {
2016	op := &request.Operation{
2017		Name:       opListSteps,
2018		HTTPMethod: "POST",
2019		HTTPPath:   "/",
2020		Paginator: &request.Paginator{
2021			InputTokens:     []string{"Marker"},
2022			OutputTokens:    []string{"Marker"},
2023			LimitToken:      "",
2024			TruncationToken: "",
2025		},
2026	}
2027
2028	if input == nil {
2029		input = &ListStepsInput{}
2030	}
2031
2032	output = &ListStepsOutput{}
2033	req = c.newRequest(op, input, output)
2034	return
2035}
2036
2037// ListSteps API operation for Amazon Elastic MapReduce.
2038//
2039// Provides a list of steps for the cluster in reverse order unless you specify
2040// stepIds with the request of filter by StepStates. You can specify a maximum
2041// of ten stepIDs.
2042//
2043// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2044// with awserr.Error's Code and Message methods to get detailed information about
2045// the error.
2046//
2047// See the AWS API reference guide for Amazon Elastic MapReduce's
2048// API operation ListSteps for usage and error information.
2049//
2050// Returned Error Types:
2051//   * InternalServerException
2052//   This exception occurs when there is an internal failure in the EMR service.
2053//
2054//   * InvalidRequestException
2055//   This exception occurs when there is something wrong with user input.
2056//
2057// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListSteps
2058func (c *EMR) ListSteps(input *ListStepsInput) (*ListStepsOutput, error) {
2059	req, out := c.ListStepsRequest(input)
2060	return out, req.Send()
2061}
2062
2063// ListStepsWithContext is the same as ListSteps with the addition of
2064// the ability to pass a context and additional request options.
2065//
2066// See ListSteps for details on how to use this API operation.
2067//
2068// The context must be non-nil and will be used for request cancellation. If
2069// the context is nil a panic will occur. In the future the SDK may create
2070// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2071// for more information on using Contexts.
2072func (c *EMR) ListStepsWithContext(ctx aws.Context, input *ListStepsInput, opts ...request.Option) (*ListStepsOutput, error) {
2073	req, out := c.ListStepsRequest(input)
2074	req.SetContext(ctx)
2075	req.ApplyOptions(opts...)
2076	return out, req.Send()
2077}
2078
2079// ListStepsPages iterates over the pages of a ListSteps operation,
2080// calling the "fn" function with the response data for each page. To stop
2081// iterating, return false from the fn function.
2082//
2083// See ListSteps method for more information on how to use this operation.
2084//
2085// Note: This operation can generate multiple requests to a service.
2086//
2087//    // Example iterating over at most 3 pages of a ListSteps operation.
2088//    pageNum := 0
2089//    err := client.ListStepsPages(params,
2090//        func(page *emr.ListStepsOutput, lastPage bool) bool {
2091//            pageNum++
2092//            fmt.Println(page)
2093//            return pageNum <= 3
2094//        })
2095//
2096func (c *EMR) ListStepsPages(input *ListStepsInput, fn func(*ListStepsOutput, bool) bool) error {
2097	return c.ListStepsPagesWithContext(aws.BackgroundContext(), input, fn)
2098}
2099
2100// ListStepsPagesWithContext same as ListStepsPages except
2101// it takes a Context and allows setting request options on the pages.
2102//
2103// The context must be non-nil and will be used for request cancellation. If
2104// the context is nil a panic will occur. In the future the SDK may create
2105// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2106// for more information on using Contexts.
2107func (c *EMR) ListStepsPagesWithContext(ctx aws.Context, input *ListStepsInput, fn func(*ListStepsOutput, bool) bool, opts ...request.Option) error {
2108	p := request.Pagination{
2109		NewRequest: func() (*request.Request, error) {
2110			var inCpy *ListStepsInput
2111			if input != nil {
2112				tmp := *input
2113				inCpy = &tmp
2114			}
2115			req, _ := c.ListStepsRequest(inCpy)
2116			req.SetContext(ctx)
2117			req.ApplyOptions(opts...)
2118			return req, nil
2119		},
2120	}
2121
2122	for p.Next() {
2123		if !fn(p.Page().(*ListStepsOutput), !p.HasNextPage()) {
2124			break
2125		}
2126	}
2127
2128	return p.Err()
2129}
2130
2131const opModifyCluster = "ModifyCluster"
2132
2133// ModifyClusterRequest generates a "aws/request.Request" representing the
2134// client's request for the ModifyCluster operation. The "output" return
2135// value will be populated with the request's response once the request completes
2136// successfully.
2137//
2138// Use "Send" method on the returned Request to send the API call to the service.
2139// the "output" return value is not valid until after Send returns without error.
2140//
2141// See ModifyCluster for more information on using the ModifyCluster
2142// API call, and error handling.
2143//
2144// This method is useful when you want to inject custom logic or configuration
2145// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2146//
2147//
2148//    // Example sending a request using the ModifyClusterRequest method.
2149//    req, resp := client.ModifyClusterRequest(params)
2150//
2151//    err := req.Send()
2152//    if err == nil { // resp is now filled
2153//        fmt.Println(resp)
2154//    }
2155//
2156// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ModifyCluster
2157func (c *EMR) ModifyClusterRequest(input *ModifyClusterInput) (req *request.Request, output *ModifyClusterOutput) {
2158	op := &request.Operation{
2159		Name:       opModifyCluster,
2160		HTTPMethod: "POST",
2161		HTTPPath:   "/",
2162	}
2163
2164	if input == nil {
2165		input = &ModifyClusterInput{}
2166	}
2167
2168	output = &ModifyClusterOutput{}
2169	req = c.newRequest(op, input, output)
2170	return
2171}
2172
2173// ModifyCluster API operation for Amazon Elastic MapReduce.
2174//
2175// Modifies the number of steps that can be executed concurrently for the cluster
2176// specified using ClusterID.
2177//
2178// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2179// with awserr.Error's Code and Message methods to get detailed information about
2180// the error.
2181//
2182// See the AWS API reference guide for Amazon Elastic MapReduce's
2183// API operation ModifyCluster for usage and error information.
2184//
2185// Returned Error Types:
2186//   * InternalServerError
2187//   Indicates that an error occurred while processing the request and that the
2188//   request was not completed.
2189//
2190//   * InvalidRequestException
2191//   This exception occurs when there is something wrong with user input.
2192//
2193// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ModifyCluster
2194func (c *EMR) ModifyCluster(input *ModifyClusterInput) (*ModifyClusterOutput, error) {
2195	req, out := c.ModifyClusterRequest(input)
2196	return out, req.Send()
2197}
2198
2199// ModifyClusterWithContext is the same as ModifyCluster with the addition of
2200// the ability to pass a context and additional request options.
2201//
2202// See ModifyCluster for details on how to use this API operation.
2203//
2204// The context must be non-nil and will be used for request cancellation. If
2205// the context is nil a panic will occur. In the future the SDK may create
2206// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2207// for more information on using Contexts.
2208func (c *EMR) ModifyClusterWithContext(ctx aws.Context, input *ModifyClusterInput, opts ...request.Option) (*ModifyClusterOutput, error) {
2209	req, out := c.ModifyClusterRequest(input)
2210	req.SetContext(ctx)
2211	req.ApplyOptions(opts...)
2212	return out, req.Send()
2213}
2214
2215const opModifyInstanceFleet = "ModifyInstanceFleet"
2216
2217// ModifyInstanceFleetRequest generates a "aws/request.Request" representing the
2218// client's request for the ModifyInstanceFleet operation. The "output" return
2219// value will be populated with the request's response once the request completes
2220// successfully.
2221//
2222// Use "Send" method on the returned Request to send the API call to the service.
2223// the "output" return value is not valid until after Send returns without error.
2224//
2225// See ModifyInstanceFleet for more information on using the ModifyInstanceFleet
2226// API call, and error handling.
2227//
2228// This method is useful when you want to inject custom logic or configuration
2229// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2230//
2231//
2232//    // Example sending a request using the ModifyInstanceFleetRequest method.
2233//    req, resp := client.ModifyInstanceFleetRequest(params)
2234//
2235//    err := req.Send()
2236//    if err == nil { // resp is now filled
2237//        fmt.Println(resp)
2238//    }
2239//
2240// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ModifyInstanceFleet
2241func (c *EMR) ModifyInstanceFleetRequest(input *ModifyInstanceFleetInput) (req *request.Request, output *ModifyInstanceFleetOutput) {
2242	op := &request.Operation{
2243		Name:       opModifyInstanceFleet,
2244		HTTPMethod: "POST",
2245		HTTPPath:   "/",
2246	}
2247
2248	if input == nil {
2249		input = &ModifyInstanceFleetInput{}
2250	}
2251
2252	output = &ModifyInstanceFleetOutput{}
2253	req = c.newRequest(op, input, output)
2254	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2255	return
2256}
2257
2258// ModifyInstanceFleet API operation for Amazon Elastic MapReduce.
2259//
2260// Modifies the target On-Demand and target Spot capacities for the instance
2261// fleet with the specified InstanceFleetID within the cluster specified using
2262// ClusterID. The call either succeeds or fails atomically.
2263//
2264// The instance fleet configuration is available only in Amazon EMR versions
2265// 4.8.0 and later, excluding 5.0.x versions.
2266//
2267// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2268// with awserr.Error's Code and Message methods to get detailed information about
2269// the error.
2270//
2271// See the AWS API reference guide for Amazon Elastic MapReduce's
2272// API operation ModifyInstanceFleet for usage and error information.
2273//
2274// Returned Error Types:
2275//   * InternalServerException
2276//   This exception occurs when there is an internal failure in the EMR service.
2277//
2278//   * InvalidRequestException
2279//   This exception occurs when there is something wrong with user input.
2280//
2281// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ModifyInstanceFleet
2282func (c *EMR) ModifyInstanceFleet(input *ModifyInstanceFleetInput) (*ModifyInstanceFleetOutput, error) {
2283	req, out := c.ModifyInstanceFleetRequest(input)
2284	return out, req.Send()
2285}
2286
2287// ModifyInstanceFleetWithContext is the same as ModifyInstanceFleet with the addition of
2288// the ability to pass a context and additional request options.
2289//
2290// See ModifyInstanceFleet for details on how to use this API operation.
2291//
2292// The context must be non-nil and will be used for request cancellation. If
2293// the context is nil a panic will occur. In the future the SDK may create
2294// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2295// for more information on using Contexts.
2296func (c *EMR) ModifyInstanceFleetWithContext(ctx aws.Context, input *ModifyInstanceFleetInput, opts ...request.Option) (*ModifyInstanceFleetOutput, error) {
2297	req, out := c.ModifyInstanceFleetRequest(input)
2298	req.SetContext(ctx)
2299	req.ApplyOptions(opts...)
2300	return out, req.Send()
2301}
2302
2303const opModifyInstanceGroups = "ModifyInstanceGroups"
2304
2305// ModifyInstanceGroupsRequest generates a "aws/request.Request" representing the
2306// client's request for the ModifyInstanceGroups operation. The "output" return
2307// value will be populated with the request's response once the request completes
2308// successfully.
2309//
2310// Use "Send" method on the returned Request to send the API call to the service.
2311// the "output" return value is not valid until after Send returns without error.
2312//
2313// See ModifyInstanceGroups for more information on using the ModifyInstanceGroups
2314// API call, and error handling.
2315//
2316// This method is useful when you want to inject custom logic or configuration
2317// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2318//
2319//
2320//    // Example sending a request using the ModifyInstanceGroupsRequest method.
2321//    req, resp := client.ModifyInstanceGroupsRequest(params)
2322//
2323//    err := req.Send()
2324//    if err == nil { // resp is now filled
2325//        fmt.Println(resp)
2326//    }
2327//
2328// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ModifyInstanceGroups
2329func (c *EMR) ModifyInstanceGroupsRequest(input *ModifyInstanceGroupsInput) (req *request.Request, output *ModifyInstanceGroupsOutput) {
2330	op := &request.Operation{
2331		Name:       opModifyInstanceGroups,
2332		HTTPMethod: "POST",
2333		HTTPPath:   "/",
2334	}
2335
2336	if input == nil {
2337		input = &ModifyInstanceGroupsInput{}
2338	}
2339
2340	output = &ModifyInstanceGroupsOutput{}
2341	req = c.newRequest(op, input, output)
2342	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2343	return
2344}
2345
2346// ModifyInstanceGroups API operation for Amazon Elastic MapReduce.
2347//
2348// ModifyInstanceGroups modifies the number of nodes and configuration settings
2349// of an instance group. The input parameters include the new target instance
2350// count for the group and the instance group ID. The call will either succeed
2351// or fail atomically.
2352//
2353// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2354// with awserr.Error's Code and Message methods to get detailed information about
2355// the error.
2356//
2357// See the AWS API reference guide for Amazon Elastic MapReduce's
2358// API operation ModifyInstanceGroups for usage and error information.
2359//
2360// Returned Error Types:
2361//   * InternalServerError
2362//   Indicates that an error occurred while processing the request and that the
2363//   request was not completed.
2364//
2365// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ModifyInstanceGroups
2366func (c *EMR) ModifyInstanceGroups(input *ModifyInstanceGroupsInput) (*ModifyInstanceGroupsOutput, error) {
2367	req, out := c.ModifyInstanceGroupsRequest(input)
2368	return out, req.Send()
2369}
2370
2371// ModifyInstanceGroupsWithContext is the same as ModifyInstanceGroups with the addition of
2372// the ability to pass a context and additional request options.
2373//
2374// See ModifyInstanceGroups for details on how to use this API operation.
2375//
2376// The context must be non-nil and will be used for request cancellation. If
2377// the context is nil a panic will occur. In the future the SDK may create
2378// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2379// for more information on using Contexts.
2380func (c *EMR) ModifyInstanceGroupsWithContext(ctx aws.Context, input *ModifyInstanceGroupsInput, opts ...request.Option) (*ModifyInstanceGroupsOutput, error) {
2381	req, out := c.ModifyInstanceGroupsRequest(input)
2382	req.SetContext(ctx)
2383	req.ApplyOptions(opts...)
2384	return out, req.Send()
2385}
2386
2387const opPutAutoScalingPolicy = "PutAutoScalingPolicy"
2388
2389// PutAutoScalingPolicyRequest generates a "aws/request.Request" representing the
2390// client's request for the PutAutoScalingPolicy operation. The "output" return
2391// value will be populated with the request's response once the request completes
2392// successfully.
2393//
2394// Use "Send" method on the returned Request to send the API call to the service.
2395// the "output" return value is not valid until after Send returns without error.
2396//
2397// See PutAutoScalingPolicy for more information on using the PutAutoScalingPolicy
2398// API call, and error handling.
2399//
2400// This method is useful when you want to inject custom logic or configuration
2401// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2402//
2403//
2404//    // Example sending a request using the PutAutoScalingPolicyRequest method.
2405//    req, resp := client.PutAutoScalingPolicyRequest(params)
2406//
2407//    err := req.Send()
2408//    if err == nil { // resp is now filled
2409//        fmt.Println(resp)
2410//    }
2411//
2412// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/PutAutoScalingPolicy
2413func (c *EMR) PutAutoScalingPolicyRequest(input *PutAutoScalingPolicyInput) (req *request.Request, output *PutAutoScalingPolicyOutput) {
2414	op := &request.Operation{
2415		Name:       opPutAutoScalingPolicy,
2416		HTTPMethod: "POST",
2417		HTTPPath:   "/",
2418	}
2419
2420	if input == nil {
2421		input = &PutAutoScalingPolicyInput{}
2422	}
2423
2424	output = &PutAutoScalingPolicyOutput{}
2425	req = c.newRequest(op, input, output)
2426	return
2427}
2428
2429// PutAutoScalingPolicy API operation for Amazon Elastic MapReduce.
2430//
2431// Creates or updates an automatic scaling policy for a core instance group
2432// or task instance group in an Amazon EMR cluster. The automatic scaling policy
2433// defines how an instance group dynamically adds and terminates EC2 instances
2434// in response to the value of a CloudWatch metric.
2435//
2436// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2437// with awserr.Error's Code and Message methods to get detailed information about
2438// the error.
2439//
2440// See the AWS API reference guide for Amazon Elastic MapReduce's
2441// API operation PutAutoScalingPolicy for usage and error information.
2442// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/PutAutoScalingPolicy
2443func (c *EMR) PutAutoScalingPolicy(input *PutAutoScalingPolicyInput) (*PutAutoScalingPolicyOutput, error) {
2444	req, out := c.PutAutoScalingPolicyRequest(input)
2445	return out, req.Send()
2446}
2447
2448// PutAutoScalingPolicyWithContext is the same as PutAutoScalingPolicy with the addition of
2449// the ability to pass a context and additional request options.
2450//
2451// See PutAutoScalingPolicy for details on how to use this API operation.
2452//
2453// The context must be non-nil and will be used for request cancellation. If
2454// the context is nil a panic will occur. In the future the SDK may create
2455// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2456// for more information on using Contexts.
2457func (c *EMR) PutAutoScalingPolicyWithContext(ctx aws.Context, input *PutAutoScalingPolicyInput, opts ...request.Option) (*PutAutoScalingPolicyOutput, error) {
2458	req, out := c.PutAutoScalingPolicyRequest(input)
2459	req.SetContext(ctx)
2460	req.ApplyOptions(opts...)
2461	return out, req.Send()
2462}
2463
2464const opPutBlockPublicAccessConfiguration = "PutBlockPublicAccessConfiguration"
2465
2466// PutBlockPublicAccessConfigurationRequest generates a "aws/request.Request" representing the
2467// client's request for the PutBlockPublicAccessConfiguration operation. The "output" return
2468// value will be populated with the request's response once the request completes
2469// successfully.
2470//
2471// Use "Send" method on the returned Request to send the API call to the service.
2472// the "output" return value is not valid until after Send returns without error.
2473//
2474// See PutBlockPublicAccessConfiguration for more information on using the PutBlockPublicAccessConfiguration
2475// API call, and error handling.
2476//
2477// This method is useful when you want to inject custom logic or configuration
2478// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2479//
2480//
2481//    // Example sending a request using the PutBlockPublicAccessConfigurationRequest method.
2482//    req, resp := client.PutBlockPublicAccessConfigurationRequest(params)
2483//
2484//    err := req.Send()
2485//    if err == nil { // resp is now filled
2486//        fmt.Println(resp)
2487//    }
2488//
2489// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/PutBlockPublicAccessConfiguration
2490func (c *EMR) PutBlockPublicAccessConfigurationRequest(input *PutBlockPublicAccessConfigurationInput) (req *request.Request, output *PutBlockPublicAccessConfigurationOutput) {
2491	op := &request.Operation{
2492		Name:       opPutBlockPublicAccessConfiguration,
2493		HTTPMethod: "POST",
2494		HTTPPath:   "/",
2495	}
2496
2497	if input == nil {
2498		input = &PutBlockPublicAccessConfigurationInput{}
2499	}
2500
2501	output = &PutBlockPublicAccessConfigurationOutput{}
2502	req = c.newRequest(op, input, output)
2503	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2504	return
2505}
2506
2507// PutBlockPublicAccessConfiguration API operation for Amazon Elastic MapReduce.
2508//
2509// Creates or updates an Amazon EMR block public access configuration for your
2510// AWS account in the current Region. For more information see Configure Block
2511// Public Access for Amazon EMR (https://docs.aws.amazon.com/emr/latest/ManagementGuide/configure-block-public-access.html)
2512// in the Amazon EMR Management Guide.
2513//
2514// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2515// with awserr.Error's Code and Message methods to get detailed information about
2516// the error.
2517//
2518// See the AWS API reference guide for Amazon Elastic MapReduce's
2519// API operation PutBlockPublicAccessConfiguration for usage and error information.
2520//
2521// Returned Error Types:
2522//   * InternalServerException
2523//   This exception occurs when there is an internal failure in the EMR service.
2524//
2525//   * InvalidRequestException
2526//   This exception occurs when there is something wrong with user input.
2527//
2528// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/PutBlockPublicAccessConfiguration
2529func (c *EMR) PutBlockPublicAccessConfiguration(input *PutBlockPublicAccessConfigurationInput) (*PutBlockPublicAccessConfigurationOutput, error) {
2530	req, out := c.PutBlockPublicAccessConfigurationRequest(input)
2531	return out, req.Send()
2532}
2533
2534// PutBlockPublicAccessConfigurationWithContext is the same as PutBlockPublicAccessConfiguration with the addition of
2535// the ability to pass a context and additional request options.
2536//
2537// See PutBlockPublicAccessConfiguration for details on how to use this API operation.
2538//
2539// The context must be non-nil and will be used for request cancellation. If
2540// the context is nil a panic will occur. In the future the SDK may create
2541// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2542// for more information on using Contexts.
2543func (c *EMR) PutBlockPublicAccessConfigurationWithContext(ctx aws.Context, input *PutBlockPublicAccessConfigurationInput, opts ...request.Option) (*PutBlockPublicAccessConfigurationOutput, error) {
2544	req, out := c.PutBlockPublicAccessConfigurationRequest(input)
2545	req.SetContext(ctx)
2546	req.ApplyOptions(opts...)
2547	return out, req.Send()
2548}
2549
2550const opPutManagedScalingPolicy = "PutManagedScalingPolicy"
2551
2552// PutManagedScalingPolicyRequest generates a "aws/request.Request" representing the
2553// client's request for the PutManagedScalingPolicy operation. The "output" return
2554// value will be populated with the request's response once the request completes
2555// successfully.
2556//
2557// Use "Send" method on the returned Request to send the API call to the service.
2558// the "output" return value is not valid until after Send returns without error.
2559//
2560// See PutManagedScalingPolicy for more information on using the PutManagedScalingPolicy
2561// API call, and error handling.
2562//
2563// This method is useful when you want to inject custom logic or configuration
2564// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2565//
2566//
2567//    // Example sending a request using the PutManagedScalingPolicyRequest method.
2568//    req, resp := client.PutManagedScalingPolicyRequest(params)
2569//
2570//    err := req.Send()
2571//    if err == nil { // resp is now filled
2572//        fmt.Println(resp)
2573//    }
2574//
2575// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/PutManagedScalingPolicy
2576func (c *EMR) PutManagedScalingPolicyRequest(input *PutManagedScalingPolicyInput) (req *request.Request, output *PutManagedScalingPolicyOutput) {
2577	op := &request.Operation{
2578		Name:       opPutManagedScalingPolicy,
2579		HTTPMethod: "POST",
2580		HTTPPath:   "/",
2581	}
2582
2583	if input == nil {
2584		input = &PutManagedScalingPolicyInput{}
2585	}
2586
2587	output = &PutManagedScalingPolicyOutput{}
2588	req = c.newRequest(op, input, output)
2589	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2590	return
2591}
2592
2593// PutManagedScalingPolicy API operation for Amazon Elastic MapReduce.
2594//
2595// Creates or updates a managed scaling policy for an Amazon EMR cluster. The
2596// managed scaling policy defines the limits for resources, such as EC2 instances
2597// that can be added or terminated from a cluster. The policy only applies to
2598// the core and task nodes. The master node cannot be scaled after initial configuration.
2599//
2600// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2601// with awserr.Error's Code and Message methods to get detailed information about
2602// the error.
2603//
2604// See the AWS API reference guide for Amazon Elastic MapReduce's
2605// API operation PutManagedScalingPolicy for usage and error information.
2606// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/PutManagedScalingPolicy
2607func (c *EMR) PutManagedScalingPolicy(input *PutManagedScalingPolicyInput) (*PutManagedScalingPolicyOutput, error) {
2608	req, out := c.PutManagedScalingPolicyRequest(input)
2609	return out, req.Send()
2610}
2611
2612// PutManagedScalingPolicyWithContext is the same as PutManagedScalingPolicy with the addition of
2613// the ability to pass a context and additional request options.
2614//
2615// See PutManagedScalingPolicy for details on how to use this API operation.
2616//
2617// The context must be non-nil and will be used for request cancellation. If
2618// the context is nil a panic will occur. In the future the SDK may create
2619// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2620// for more information on using Contexts.
2621func (c *EMR) PutManagedScalingPolicyWithContext(ctx aws.Context, input *PutManagedScalingPolicyInput, opts ...request.Option) (*PutManagedScalingPolicyOutput, error) {
2622	req, out := c.PutManagedScalingPolicyRequest(input)
2623	req.SetContext(ctx)
2624	req.ApplyOptions(opts...)
2625	return out, req.Send()
2626}
2627
2628const opRemoveAutoScalingPolicy = "RemoveAutoScalingPolicy"
2629
2630// RemoveAutoScalingPolicyRequest generates a "aws/request.Request" representing the
2631// client's request for the RemoveAutoScalingPolicy operation. The "output" return
2632// value will be populated with the request's response once the request completes
2633// successfully.
2634//
2635// Use "Send" method on the returned Request to send the API call to the service.
2636// the "output" return value is not valid until after Send returns without error.
2637//
2638// See RemoveAutoScalingPolicy for more information on using the RemoveAutoScalingPolicy
2639// API call, and error handling.
2640//
2641// This method is useful when you want to inject custom logic or configuration
2642// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2643//
2644//
2645//    // Example sending a request using the RemoveAutoScalingPolicyRequest method.
2646//    req, resp := client.RemoveAutoScalingPolicyRequest(params)
2647//
2648//    err := req.Send()
2649//    if err == nil { // resp is now filled
2650//        fmt.Println(resp)
2651//    }
2652//
2653// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RemoveAutoScalingPolicy
2654func (c *EMR) RemoveAutoScalingPolicyRequest(input *RemoveAutoScalingPolicyInput) (req *request.Request, output *RemoveAutoScalingPolicyOutput) {
2655	op := &request.Operation{
2656		Name:       opRemoveAutoScalingPolicy,
2657		HTTPMethod: "POST",
2658		HTTPPath:   "/",
2659	}
2660
2661	if input == nil {
2662		input = &RemoveAutoScalingPolicyInput{}
2663	}
2664
2665	output = &RemoveAutoScalingPolicyOutput{}
2666	req = c.newRequest(op, input, output)
2667	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2668	return
2669}
2670
2671// RemoveAutoScalingPolicy API operation for Amazon Elastic MapReduce.
2672//
2673// Removes an automatic scaling policy from a specified instance group within
2674// an EMR cluster.
2675//
2676// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2677// with awserr.Error's Code and Message methods to get detailed information about
2678// the error.
2679//
2680// See the AWS API reference guide for Amazon Elastic MapReduce's
2681// API operation RemoveAutoScalingPolicy for usage and error information.
2682// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RemoveAutoScalingPolicy
2683func (c *EMR) RemoveAutoScalingPolicy(input *RemoveAutoScalingPolicyInput) (*RemoveAutoScalingPolicyOutput, error) {
2684	req, out := c.RemoveAutoScalingPolicyRequest(input)
2685	return out, req.Send()
2686}
2687
2688// RemoveAutoScalingPolicyWithContext is the same as RemoveAutoScalingPolicy with the addition of
2689// the ability to pass a context and additional request options.
2690//
2691// See RemoveAutoScalingPolicy for details on how to use this API operation.
2692//
2693// The context must be non-nil and will be used for request cancellation. If
2694// the context is nil a panic will occur. In the future the SDK may create
2695// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2696// for more information on using Contexts.
2697func (c *EMR) RemoveAutoScalingPolicyWithContext(ctx aws.Context, input *RemoveAutoScalingPolicyInput, opts ...request.Option) (*RemoveAutoScalingPolicyOutput, error) {
2698	req, out := c.RemoveAutoScalingPolicyRequest(input)
2699	req.SetContext(ctx)
2700	req.ApplyOptions(opts...)
2701	return out, req.Send()
2702}
2703
2704const opRemoveManagedScalingPolicy = "RemoveManagedScalingPolicy"
2705
2706// RemoveManagedScalingPolicyRequest generates a "aws/request.Request" representing the
2707// client's request for the RemoveManagedScalingPolicy operation. The "output" return
2708// value will be populated with the request's response once the request completes
2709// successfully.
2710//
2711// Use "Send" method on the returned Request to send the API call to the service.
2712// the "output" return value is not valid until after Send returns without error.
2713//
2714// See RemoveManagedScalingPolicy for more information on using the RemoveManagedScalingPolicy
2715// API call, and error handling.
2716//
2717// This method is useful when you want to inject custom logic or configuration
2718// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2719//
2720//
2721//    // Example sending a request using the RemoveManagedScalingPolicyRequest method.
2722//    req, resp := client.RemoveManagedScalingPolicyRequest(params)
2723//
2724//    err := req.Send()
2725//    if err == nil { // resp is now filled
2726//        fmt.Println(resp)
2727//    }
2728//
2729// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RemoveManagedScalingPolicy
2730func (c *EMR) RemoveManagedScalingPolicyRequest(input *RemoveManagedScalingPolicyInput) (req *request.Request, output *RemoveManagedScalingPolicyOutput) {
2731	op := &request.Operation{
2732		Name:       opRemoveManagedScalingPolicy,
2733		HTTPMethod: "POST",
2734		HTTPPath:   "/",
2735	}
2736
2737	if input == nil {
2738		input = &RemoveManagedScalingPolicyInput{}
2739	}
2740
2741	output = &RemoveManagedScalingPolicyOutput{}
2742	req = c.newRequest(op, input, output)
2743	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2744	return
2745}
2746
2747// RemoveManagedScalingPolicy API operation for Amazon Elastic MapReduce.
2748//
2749// Removes a managed scaling policy from a specified EMR cluster.
2750//
2751// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2752// with awserr.Error's Code and Message methods to get detailed information about
2753// the error.
2754//
2755// See the AWS API reference guide for Amazon Elastic MapReduce's
2756// API operation RemoveManagedScalingPolicy for usage and error information.
2757// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RemoveManagedScalingPolicy
2758func (c *EMR) RemoveManagedScalingPolicy(input *RemoveManagedScalingPolicyInput) (*RemoveManagedScalingPolicyOutput, error) {
2759	req, out := c.RemoveManagedScalingPolicyRequest(input)
2760	return out, req.Send()
2761}
2762
2763// RemoveManagedScalingPolicyWithContext is the same as RemoveManagedScalingPolicy with the addition of
2764// the ability to pass a context and additional request options.
2765//
2766// See RemoveManagedScalingPolicy for details on how to use this API operation.
2767//
2768// The context must be non-nil and will be used for request cancellation. If
2769// the context is nil a panic will occur. In the future the SDK may create
2770// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2771// for more information on using Contexts.
2772func (c *EMR) RemoveManagedScalingPolicyWithContext(ctx aws.Context, input *RemoveManagedScalingPolicyInput, opts ...request.Option) (*RemoveManagedScalingPolicyOutput, error) {
2773	req, out := c.RemoveManagedScalingPolicyRequest(input)
2774	req.SetContext(ctx)
2775	req.ApplyOptions(opts...)
2776	return out, req.Send()
2777}
2778
2779const opRemoveTags = "RemoveTags"
2780
2781// RemoveTagsRequest generates a "aws/request.Request" representing the
2782// client's request for the RemoveTags operation. The "output" return
2783// value will be populated with the request's response once the request completes
2784// successfully.
2785//
2786// Use "Send" method on the returned Request to send the API call to the service.
2787// the "output" return value is not valid until after Send returns without error.
2788//
2789// See RemoveTags for more information on using the RemoveTags
2790// API call, and error handling.
2791//
2792// This method is useful when you want to inject custom logic or configuration
2793// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2794//
2795//
2796//    // Example sending a request using the RemoveTagsRequest method.
2797//    req, resp := client.RemoveTagsRequest(params)
2798//
2799//    err := req.Send()
2800//    if err == nil { // resp is now filled
2801//        fmt.Println(resp)
2802//    }
2803//
2804// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RemoveTags
2805func (c *EMR) RemoveTagsRequest(input *RemoveTagsInput) (req *request.Request, output *RemoveTagsOutput) {
2806	op := &request.Operation{
2807		Name:       opRemoveTags,
2808		HTTPMethod: "POST",
2809		HTTPPath:   "/",
2810	}
2811
2812	if input == nil {
2813		input = &RemoveTagsInput{}
2814	}
2815
2816	output = &RemoveTagsOutput{}
2817	req = c.newRequest(op, input, output)
2818	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2819	return
2820}
2821
2822// RemoveTags API operation for Amazon Elastic MapReduce.
2823//
2824// Removes tags from an Amazon EMR resource. Tags make it easier to associate
2825// clusters in various ways, such as grouping clusters to track your Amazon
2826// EMR resource allocation costs. For more information, see Tag Clusters (https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html).
2827//
2828// The following example removes the stack tag with value Prod from a cluster:
2829//
2830// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2831// with awserr.Error's Code and Message methods to get detailed information about
2832// the error.
2833//
2834// See the AWS API reference guide for Amazon Elastic MapReduce's
2835// API operation RemoveTags for usage and error information.
2836//
2837// Returned Error Types:
2838//   * InternalServerException
2839//   This exception occurs when there is an internal failure in the EMR service.
2840//
2841//   * InvalidRequestException
2842//   This exception occurs when there is something wrong with user input.
2843//
2844// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RemoveTags
2845func (c *EMR) RemoveTags(input *RemoveTagsInput) (*RemoveTagsOutput, error) {
2846	req, out := c.RemoveTagsRequest(input)
2847	return out, req.Send()
2848}
2849
2850// RemoveTagsWithContext is the same as RemoveTags with the addition of
2851// the ability to pass a context and additional request options.
2852//
2853// See RemoveTags for details on how to use this API operation.
2854//
2855// The context must be non-nil and will be used for request cancellation. If
2856// the context is nil a panic will occur. In the future the SDK may create
2857// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2858// for more information on using Contexts.
2859func (c *EMR) RemoveTagsWithContext(ctx aws.Context, input *RemoveTagsInput, opts ...request.Option) (*RemoveTagsOutput, error) {
2860	req, out := c.RemoveTagsRequest(input)
2861	req.SetContext(ctx)
2862	req.ApplyOptions(opts...)
2863	return out, req.Send()
2864}
2865
2866const opRunJobFlow = "RunJobFlow"
2867
2868// RunJobFlowRequest generates a "aws/request.Request" representing the
2869// client's request for the RunJobFlow operation. The "output" return
2870// value will be populated with the request's response once the request completes
2871// successfully.
2872//
2873// Use "Send" method on the returned Request to send the API call to the service.
2874// the "output" return value is not valid until after Send returns without error.
2875//
2876// See RunJobFlow for more information on using the RunJobFlow
2877// API call, and error handling.
2878//
2879// This method is useful when you want to inject custom logic or configuration
2880// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2881//
2882//
2883//    // Example sending a request using the RunJobFlowRequest method.
2884//    req, resp := client.RunJobFlowRequest(params)
2885//
2886//    err := req.Send()
2887//    if err == nil { // resp is now filled
2888//        fmt.Println(resp)
2889//    }
2890//
2891// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RunJobFlow
2892func (c *EMR) RunJobFlowRequest(input *RunJobFlowInput) (req *request.Request, output *RunJobFlowOutput) {
2893	op := &request.Operation{
2894		Name:       opRunJobFlow,
2895		HTTPMethod: "POST",
2896		HTTPPath:   "/",
2897	}
2898
2899	if input == nil {
2900		input = &RunJobFlowInput{}
2901	}
2902
2903	output = &RunJobFlowOutput{}
2904	req = c.newRequest(op, input, output)
2905	return
2906}
2907
2908// RunJobFlow API operation for Amazon Elastic MapReduce.
2909//
2910// RunJobFlow creates and starts running a new cluster (job flow). The cluster
2911// runs the steps specified. After the steps complete, the cluster stops and
2912// the HDFS partition is lost. To prevent loss of data, configure the last step
2913// of the job flow to store results in Amazon S3. If the JobFlowInstancesConfig
2914// KeepJobFlowAliveWhenNoSteps parameter is set to TRUE, the cluster transitions
2915// to the WAITING state rather than shutting down after the steps have completed.
2916//
2917// For additional protection, you can set the JobFlowInstancesConfig TerminationProtected
2918// parameter to TRUE to lock the cluster and prevent it from being terminated
2919// by API call, user intervention, or in the event of a job flow error.
2920//
2921// A maximum of 256 steps are allowed in each job flow.
2922//
2923// If your cluster is long-running (such as a Hive data warehouse) or complex,
2924// you may require more than 256 steps to process your data. You can bypass
2925// the 256-step limitation in various ways, including using the SSH shell to
2926// connect to the master node and submitting queries directly to the software
2927// running on the master node, such as Hive and Hadoop. For more information
2928// on how to do this, see Add More than 256 Steps to a Cluster (https://docs.aws.amazon.com/emr/latest/ManagementGuide/AddMoreThan256Steps.html)
2929// in the Amazon EMR Management Guide.
2930//
2931// For long running clusters, we recommend that you periodically store your
2932// results.
2933//
2934// The instance fleets configuration is available only in Amazon EMR versions
2935// 4.8.0 and later, excluding 5.0.x versions. The RunJobFlow request can contain
2936// InstanceFleets parameters or InstanceGroups parameters, but not both.
2937//
2938// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2939// with awserr.Error's Code and Message methods to get detailed information about
2940// the error.
2941//
2942// See the AWS API reference guide for Amazon Elastic MapReduce's
2943// API operation RunJobFlow for usage and error information.
2944//
2945// Returned Error Types:
2946//   * InternalServerError
2947//   Indicates that an error occurred while processing the request and that the
2948//   request was not completed.
2949//
2950// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RunJobFlow
2951func (c *EMR) RunJobFlow(input *RunJobFlowInput) (*RunJobFlowOutput, error) {
2952	req, out := c.RunJobFlowRequest(input)
2953	return out, req.Send()
2954}
2955
2956// RunJobFlowWithContext is the same as RunJobFlow with the addition of
2957// the ability to pass a context and additional request options.
2958//
2959// See RunJobFlow for details on how to use this API operation.
2960//
2961// The context must be non-nil and will be used for request cancellation. If
2962// the context is nil a panic will occur. In the future the SDK may create
2963// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2964// for more information on using Contexts.
2965func (c *EMR) RunJobFlowWithContext(ctx aws.Context, input *RunJobFlowInput, opts ...request.Option) (*RunJobFlowOutput, error) {
2966	req, out := c.RunJobFlowRequest(input)
2967	req.SetContext(ctx)
2968	req.ApplyOptions(opts...)
2969	return out, req.Send()
2970}
2971
2972const opSetTerminationProtection = "SetTerminationProtection"
2973
2974// SetTerminationProtectionRequest generates a "aws/request.Request" representing the
2975// client's request for the SetTerminationProtection operation. The "output" return
2976// value will be populated with the request's response once the request completes
2977// successfully.
2978//
2979// Use "Send" method on the returned Request to send the API call to the service.
2980// the "output" return value is not valid until after Send returns without error.
2981//
2982// See SetTerminationProtection for more information on using the SetTerminationProtection
2983// API call, and error handling.
2984//
2985// This method is useful when you want to inject custom logic or configuration
2986// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2987//
2988//
2989//    // Example sending a request using the SetTerminationProtectionRequest method.
2990//    req, resp := client.SetTerminationProtectionRequest(params)
2991//
2992//    err := req.Send()
2993//    if err == nil { // resp is now filled
2994//        fmt.Println(resp)
2995//    }
2996//
2997// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/SetTerminationProtection
2998func (c *EMR) SetTerminationProtectionRequest(input *SetTerminationProtectionInput) (req *request.Request, output *SetTerminationProtectionOutput) {
2999	op := &request.Operation{
3000		Name:       opSetTerminationProtection,
3001		HTTPMethod: "POST",
3002		HTTPPath:   "/",
3003	}
3004
3005	if input == nil {
3006		input = &SetTerminationProtectionInput{}
3007	}
3008
3009	output = &SetTerminationProtectionOutput{}
3010	req = c.newRequest(op, input, output)
3011	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
3012	return
3013}
3014
3015// SetTerminationProtection API operation for Amazon Elastic MapReduce.
3016//
3017// SetTerminationProtection locks a cluster (job flow) so the EC2 instances
3018// in the cluster cannot be terminated by user intervention, an API call, or
3019// in the event of a job-flow error. The cluster still terminates upon successful
3020// completion of the job flow. Calling SetTerminationProtection on a cluster
3021// is similar to calling the Amazon EC2 DisableAPITermination API on all EC2
3022// instances in a cluster.
3023//
3024// SetTerminationProtection is used to prevent accidental termination of a cluster
3025// and to ensure that in the event of an error, the instances persist so that
3026// you can recover any data stored in their ephemeral instance storage.
3027//
3028// To terminate a cluster that has been locked by setting SetTerminationProtection
3029// to true, you must first unlock the job flow by a subsequent call to SetTerminationProtection
3030// in which you set the value to false.
3031//
3032// For more information, seeManaging Cluster Termination (https://docs.aws.amazon.com/emr/latest/ManagementGuide/UsingEMR_TerminationProtection.html)
3033// in the Amazon EMR Management Guide.
3034//
3035// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3036// with awserr.Error's Code and Message methods to get detailed information about
3037// the error.
3038//
3039// See the AWS API reference guide for Amazon Elastic MapReduce's
3040// API operation SetTerminationProtection for usage and error information.
3041//
3042// Returned Error Types:
3043//   * InternalServerError
3044//   Indicates that an error occurred while processing the request and that the
3045//   request was not completed.
3046//
3047// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/SetTerminationProtection
3048func (c *EMR) SetTerminationProtection(input *SetTerminationProtectionInput) (*SetTerminationProtectionOutput, error) {
3049	req, out := c.SetTerminationProtectionRequest(input)
3050	return out, req.Send()
3051}
3052
3053// SetTerminationProtectionWithContext is the same as SetTerminationProtection with the addition of
3054// the ability to pass a context and additional request options.
3055//
3056// See SetTerminationProtection for details on how to use this API operation.
3057//
3058// The context must be non-nil and will be used for request cancellation. If
3059// the context is nil a panic will occur. In the future the SDK may create
3060// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3061// for more information on using Contexts.
3062func (c *EMR) SetTerminationProtectionWithContext(ctx aws.Context, input *SetTerminationProtectionInput, opts ...request.Option) (*SetTerminationProtectionOutput, error) {
3063	req, out := c.SetTerminationProtectionRequest(input)
3064	req.SetContext(ctx)
3065	req.ApplyOptions(opts...)
3066	return out, req.Send()
3067}
3068
3069const opSetVisibleToAllUsers = "SetVisibleToAllUsers"
3070
3071// SetVisibleToAllUsersRequest generates a "aws/request.Request" representing the
3072// client's request for the SetVisibleToAllUsers operation. The "output" return
3073// value will be populated with the request's response once the request completes
3074// successfully.
3075//
3076// Use "Send" method on the returned Request to send the API call to the service.
3077// the "output" return value is not valid until after Send returns without error.
3078//
3079// See SetVisibleToAllUsers for more information on using the SetVisibleToAllUsers
3080// API call, and error handling.
3081//
3082// This method is useful when you want to inject custom logic or configuration
3083// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3084//
3085//
3086//    // Example sending a request using the SetVisibleToAllUsersRequest method.
3087//    req, resp := client.SetVisibleToAllUsersRequest(params)
3088//
3089//    err := req.Send()
3090//    if err == nil { // resp is now filled
3091//        fmt.Println(resp)
3092//    }
3093//
3094// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/SetVisibleToAllUsers
3095func (c *EMR) SetVisibleToAllUsersRequest(input *SetVisibleToAllUsersInput) (req *request.Request, output *SetVisibleToAllUsersOutput) {
3096	op := &request.Operation{
3097		Name:       opSetVisibleToAllUsers,
3098		HTTPMethod: "POST",
3099		HTTPPath:   "/",
3100	}
3101
3102	if input == nil {
3103		input = &SetVisibleToAllUsersInput{}
3104	}
3105
3106	output = &SetVisibleToAllUsersOutput{}
3107	req = c.newRequest(op, input, output)
3108	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
3109	return
3110}
3111
3112// SetVisibleToAllUsers API operation for Amazon Elastic MapReduce.
3113//
3114// Sets the Cluster$VisibleToAllUsers value, which determines whether the cluster
3115// is visible to all IAM users of the AWS account associated with the cluster.
3116// Only the IAM user who created the cluster or the AWS account root user can
3117// call this action. The default value, true, indicates that all IAM users in
3118// the AWS account can perform cluster actions if they have the proper IAM policy
3119// permissions. If set to false, only the IAM user that created the cluster
3120// can perform actions. This action works on running clusters. You can override
3121// the default true setting when you create a cluster by using the VisibleToAllUsers
3122// parameter with RunJobFlow.
3123//
3124// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3125// with awserr.Error's Code and Message methods to get detailed information about
3126// the error.
3127//
3128// See the AWS API reference guide for Amazon Elastic MapReduce's
3129// API operation SetVisibleToAllUsers for usage and error information.
3130//
3131// Returned Error Types:
3132//   * InternalServerError
3133//   Indicates that an error occurred while processing the request and that the
3134//   request was not completed.
3135//
3136// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/SetVisibleToAllUsers
3137func (c *EMR) SetVisibleToAllUsers(input *SetVisibleToAllUsersInput) (*SetVisibleToAllUsersOutput, error) {
3138	req, out := c.SetVisibleToAllUsersRequest(input)
3139	return out, req.Send()
3140}
3141
3142// SetVisibleToAllUsersWithContext is the same as SetVisibleToAllUsers with the addition of
3143// the ability to pass a context and additional request options.
3144//
3145// See SetVisibleToAllUsers for details on how to use this API operation.
3146//
3147// The context must be non-nil and will be used for request cancellation. If
3148// the context is nil a panic will occur. In the future the SDK may create
3149// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3150// for more information on using Contexts.
3151func (c *EMR) SetVisibleToAllUsersWithContext(ctx aws.Context, input *SetVisibleToAllUsersInput, opts ...request.Option) (*SetVisibleToAllUsersOutput, error) {
3152	req, out := c.SetVisibleToAllUsersRequest(input)
3153	req.SetContext(ctx)
3154	req.ApplyOptions(opts...)
3155	return out, req.Send()
3156}
3157
3158const opTerminateJobFlows = "TerminateJobFlows"
3159
3160// TerminateJobFlowsRequest generates a "aws/request.Request" representing the
3161// client's request for the TerminateJobFlows operation. The "output" return
3162// value will be populated with the request's response once the request completes
3163// successfully.
3164//
3165// Use "Send" method on the returned Request to send the API call to the service.
3166// the "output" return value is not valid until after Send returns without error.
3167//
3168// See TerminateJobFlows for more information on using the TerminateJobFlows
3169// API call, and error handling.
3170//
3171// This method is useful when you want to inject custom logic or configuration
3172// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3173//
3174//
3175//    // Example sending a request using the TerminateJobFlowsRequest method.
3176//    req, resp := client.TerminateJobFlowsRequest(params)
3177//
3178//    err := req.Send()
3179//    if err == nil { // resp is now filled
3180//        fmt.Println(resp)
3181//    }
3182//
3183// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/TerminateJobFlows
3184func (c *EMR) TerminateJobFlowsRequest(input *TerminateJobFlowsInput) (req *request.Request, output *TerminateJobFlowsOutput) {
3185	op := &request.Operation{
3186		Name:       opTerminateJobFlows,
3187		HTTPMethod: "POST",
3188		HTTPPath:   "/",
3189	}
3190
3191	if input == nil {
3192		input = &TerminateJobFlowsInput{}
3193	}
3194
3195	output = &TerminateJobFlowsOutput{}
3196	req = c.newRequest(op, input, output)
3197	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
3198	return
3199}
3200
3201// TerminateJobFlows API operation for Amazon Elastic MapReduce.
3202//
3203// TerminateJobFlows shuts a list of clusters (job flows) down. When a job flow
3204// is shut down, any step not yet completed is canceled and the EC2 instances
3205// on which the cluster is running are stopped. Any log files not already saved
3206// are uploaded to Amazon S3 if a LogUri was specified when the cluster was
3207// created.
3208//
3209// The maximum number of clusters allowed is 10. The call to TerminateJobFlows
3210// is asynchronous. Depending on the configuration of the cluster, it may take
3211// up to 1-5 minutes for the cluster to completely terminate and release allocated
3212// resources, such as Amazon EC2 instances.
3213//
3214// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3215// with awserr.Error's Code and Message methods to get detailed information about
3216// the error.
3217//
3218// See the AWS API reference guide for Amazon Elastic MapReduce's
3219// API operation TerminateJobFlows for usage and error information.
3220//
3221// Returned Error Types:
3222//   * InternalServerError
3223//   Indicates that an error occurred while processing the request and that the
3224//   request was not completed.
3225//
3226// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/TerminateJobFlows
3227func (c *EMR) TerminateJobFlows(input *TerminateJobFlowsInput) (*TerminateJobFlowsOutput, error) {
3228	req, out := c.TerminateJobFlowsRequest(input)
3229	return out, req.Send()
3230}
3231
3232// TerminateJobFlowsWithContext is the same as TerminateJobFlows with the addition of
3233// the ability to pass a context and additional request options.
3234//
3235// See TerminateJobFlows for details on how to use this API operation.
3236//
3237// The context must be non-nil and will be used for request cancellation. If
3238// the context is nil a panic will occur. In the future the SDK may create
3239// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3240// for more information on using Contexts.
3241func (c *EMR) TerminateJobFlowsWithContext(ctx aws.Context, input *TerminateJobFlowsInput, opts ...request.Option) (*TerminateJobFlowsOutput, error) {
3242	req, out := c.TerminateJobFlowsRequest(input)
3243	req.SetContext(ctx)
3244	req.ApplyOptions(opts...)
3245	return out, req.Send()
3246}
3247
3248type AddInstanceFleetInput struct {
3249	_ struct{} `type:"structure"`
3250
3251	// The unique identifier of the cluster.
3252	//
3253	// ClusterId is a required field
3254	ClusterId *string `type:"string" required:"true"`
3255
3256	// Specifies the configuration of the instance fleet.
3257	//
3258	// InstanceFleet is a required field
3259	InstanceFleet *InstanceFleetConfig `type:"structure" required:"true"`
3260}
3261
3262// String returns the string representation
3263func (s AddInstanceFleetInput) String() string {
3264	return awsutil.Prettify(s)
3265}
3266
3267// GoString returns the string representation
3268func (s AddInstanceFleetInput) GoString() string {
3269	return s.String()
3270}
3271
3272// Validate inspects the fields of the type to determine if they are valid.
3273func (s *AddInstanceFleetInput) Validate() error {
3274	invalidParams := request.ErrInvalidParams{Context: "AddInstanceFleetInput"}
3275	if s.ClusterId == nil {
3276		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
3277	}
3278	if s.InstanceFleet == nil {
3279		invalidParams.Add(request.NewErrParamRequired("InstanceFleet"))
3280	}
3281	if s.InstanceFleet != nil {
3282		if err := s.InstanceFleet.Validate(); err != nil {
3283			invalidParams.AddNested("InstanceFleet", err.(request.ErrInvalidParams))
3284		}
3285	}
3286
3287	if invalidParams.Len() > 0 {
3288		return invalidParams
3289	}
3290	return nil
3291}
3292
3293// SetClusterId sets the ClusterId field's value.
3294func (s *AddInstanceFleetInput) SetClusterId(v string) *AddInstanceFleetInput {
3295	s.ClusterId = &v
3296	return s
3297}
3298
3299// SetInstanceFleet sets the InstanceFleet field's value.
3300func (s *AddInstanceFleetInput) SetInstanceFleet(v *InstanceFleetConfig) *AddInstanceFleetInput {
3301	s.InstanceFleet = v
3302	return s
3303}
3304
3305type AddInstanceFleetOutput struct {
3306	_ struct{} `type:"structure"`
3307
3308	// The Amazon Resource Name of the cluster.
3309	ClusterArn *string `min:"20" type:"string"`
3310
3311	// The unique identifier of the cluster.
3312	ClusterId *string `type:"string"`
3313
3314	// The unique identifier of the instance fleet.
3315	InstanceFleetId *string `type:"string"`
3316}
3317
3318// String returns the string representation
3319func (s AddInstanceFleetOutput) String() string {
3320	return awsutil.Prettify(s)
3321}
3322
3323// GoString returns the string representation
3324func (s AddInstanceFleetOutput) GoString() string {
3325	return s.String()
3326}
3327
3328// SetClusterArn sets the ClusterArn field's value.
3329func (s *AddInstanceFleetOutput) SetClusterArn(v string) *AddInstanceFleetOutput {
3330	s.ClusterArn = &v
3331	return s
3332}
3333
3334// SetClusterId sets the ClusterId field's value.
3335func (s *AddInstanceFleetOutput) SetClusterId(v string) *AddInstanceFleetOutput {
3336	s.ClusterId = &v
3337	return s
3338}
3339
3340// SetInstanceFleetId sets the InstanceFleetId field's value.
3341func (s *AddInstanceFleetOutput) SetInstanceFleetId(v string) *AddInstanceFleetOutput {
3342	s.InstanceFleetId = &v
3343	return s
3344}
3345
3346// Input to an AddInstanceGroups call.
3347type AddInstanceGroupsInput struct {
3348	_ struct{} `type:"structure"`
3349
3350	// Instance groups to add.
3351	//
3352	// InstanceGroups is a required field
3353	InstanceGroups []*InstanceGroupConfig `type:"list" required:"true"`
3354
3355	// Job flow in which to add the instance groups.
3356	//
3357	// JobFlowId is a required field
3358	JobFlowId *string `type:"string" required:"true"`
3359}
3360
3361// String returns the string representation
3362func (s AddInstanceGroupsInput) String() string {
3363	return awsutil.Prettify(s)
3364}
3365
3366// GoString returns the string representation
3367func (s AddInstanceGroupsInput) GoString() string {
3368	return s.String()
3369}
3370
3371// Validate inspects the fields of the type to determine if they are valid.
3372func (s *AddInstanceGroupsInput) Validate() error {
3373	invalidParams := request.ErrInvalidParams{Context: "AddInstanceGroupsInput"}
3374	if s.InstanceGroups == nil {
3375		invalidParams.Add(request.NewErrParamRequired("InstanceGroups"))
3376	}
3377	if s.JobFlowId == nil {
3378		invalidParams.Add(request.NewErrParamRequired("JobFlowId"))
3379	}
3380	if s.InstanceGroups != nil {
3381		for i, v := range s.InstanceGroups {
3382			if v == nil {
3383				continue
3384			}
3385			if err := v.Validate(); err != nil {
3386				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "InstanceGroups", i), err.(request.ErrInvalidParams))
3387			}
3388		}
3389	}
3390
3391	if invalidParams.Len() > 0 {
3392		return invalidParams
3393	}
3394	return nil
3395}
3396
3397// SetInstanceGroups sets the InstanceGroups field's value.
3398func (s *AddInstanceGroupsInput) SetInstanceGroups(v []*InstanceGroupConfig) *AddInstanceGroupsInput {
3399	s.InstanceGroups = v
3400	return s
3401}
3402
3403// SetJobFlowId sets the JobFlowId field's value.
3404func (s *AddInstanceGroupsInput) SetJobFlowId(v string) *AddInstanceGroupsInput {
3405	s.JobFlowId = &v
3406	return s
3407}
3408
3409// Output from an AddInstanceGroups call.
3410type AddInstanceGroupsOutput struct {
3411	_ struct{} `type:"structure"`
3412
3413	// The Amazon Resource Name of the cluster.
3414	ClusterArn *string `min:"20" type:"string"`
3415
3416	// Instance group IDs of the newly created instance groups.
3417	InstanceGroupIds []*string `type:"list"`
3418
3419	// The job flow ID in which the instance groups are added.
3420	JobFlowId *string `type:"string"`
3421}
3422
3423// String returns the string representation
3424func (s AddInstanceGroupsOutput) String() string {
3425	return awsutil.Prettify(s)
3426}
3427
3428// GoString returns the string representation
3429func (s AddInstanceGroupsOutput) GoString() string {
3430	return s.String()
3431}
3432
3433// SetClusterArn sets the ClusterArn field's value.
3434func (s *AddInstanceGroupsOutput) SetClusterArn(v string) *AddInstanceGroupsOutput {
3435	s.ClusterArn = &v
3436	return s
3437}
3438
3439// SetInstanceGroupIds sets the InstanceGroupIds field's value.
3440func (s *AddInstanceGroupsOutput) SetInstanceGroupIds(v []*string) *AddInstanceGroupsOutput {
3441	s.InstanceGroupIds = v
3442	return s
3443}
3444
3445// SetJobFlowId sets the JobFlowId field's value.
3446func (s *AddInstanceGroupsOutput) SetJobFlowId(v string) *AddInstanceGroupsOutput {
3447	s.JobFlowId = &v
3448	return s
3449}
3450
3451// The input argument to the AddJobFlowSteps operation.
3452type AddJobFlowStepsInput struct {
3453	_ struct{} `type:"structure"`
3454
3455	// A string that uniquely identifies the job flow. This identifier is returned
3456	// by RunJobFlow and can also be obtained from ListClusters.
3457	//
3458	// JobFlowId is a required field
3459	JobFlowId *string `type:"string" required:"true"`
3460
3461	// A list of StepConfig to be executed by the job flow.
3462	//
3463	// Steps is a required field
3464	Steps []*StepConfig `type:"list" required:"true"`
3465}
3466
3467// String returns the string representation
3468func (s AddJobFlowStepsInput) String() string {
3469	return awsutil.Prettify(s)
3470}
3471
3472// GoString returns the string representation
3473func (s AddJobFlowStepsInput) GoString() string {
3474	return s.String()
3475}
3476
3477// Validate inspects the fields of the type to determine if they are valid.
3478func (s *AddJobFlowStepsInput) Validate() error {
3479	invalidParams := request.ErrInvalidParams{Context: "AddJobFlowStepsInput"}
3480	if s.JobFlowId == nil {
3481		invalidParams.Add(request.NewErrParamRequired("JobFlowId"))
3482	}
3483	if s.Steps == nil {
3484		invalidParams.Add(request.NewErrParamRequired("Steps"))
3485	}
3486	if s.Steps != nil {
3487		for i, v := range s.Steps {
3488			if v == nil {
3489				continue
3490			}
3491			if err := v.Validate(); err != nil {
3492				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Steps", i), err.(request.ErrInvalidParams))
3493			}
3494		}
3495	}
3496
3497	if invalidParams.Len() > 0 {
3498		return invalidParams
3499	}
3500	return nil
3501}
3502
3503// SetJobFlowId sets the JobFlowId field's value.
3504func (s *AddJobFlowStepsInput) SetJobFlowId(v string) *AddJobFlowStepsInput {
3505	s.JobFlowId = &v
3506	return s
3507}
3508
3509// SetSteps sets the Steps field's value.
3510func (s *AddJobFlowStepsInput) SetSteps(v []*StepConfig) *AddJobFlowStepsInput {
3511	s.Steps = v
3512	return s
3513}
3514
3515// The output for the AddJobFlowSteps operation.
3516type AddJobFlowStepsOutput struct {
3517	_ struct{} `type:"structure"`
3518
3519	// The identifiers of the list of steps added to the job flow.
3520	StepIds []*string `type:"list"`
3521}
3522
3523// String returns the string representation
3524func (s AddJobFlowStepsOutput) String() string {
3525	return awsutil.Prettify(s)
3526}
3527
3528// GoString returns the string representation
3529func (s AddJobFlowStepsOutput) GoString() string {
3530	return s.String()
3531}
3532
3533// SetStepIds sets the StepIds field's value.
3534func (s *AddJobFlowStepsOutput) SetStepIds(v []*string) *AddJobFlowStepsOutput {
3535	s.StepIds = v
3536	return s
3537}
3538
3539// This input identifies a cluster and a list of tags to attach.
3540type AddTagsInput struct {
3541	_ struct{} `type:"structure"`
3542
3543	// The Amazon EMR resource identifier to which tags will be added. This value
3544	// must be a cluster identifier.
3545	//
3546	// ResourceId is a required field
3547	ResourceId *string `type:"string" required:"true"`
3548
3549	// A list of tags to associate with a cluster and propagate to EC2 instances.
3550	// Tags are user-defined key/value pairs that consist of a required key string
3551	// with a maximum of 128 characters, and an optional value string with a maximum
3552	// of 256 characters.
3553	//
3554	// Tags is a required field
3555	Tags []*Tag `type:"list" required:"true"`
3556}
3557
3558// String returns the string representation
3559func (s AddTagsInput) String() string {
3560	return awsutil.Prettify(s)
3561}
3562
3563// GoString returns the string representation
3564func (s AddTagsInput) GoString() string {
3565	return s.String()
3566}
3567
3568// Validate inspects the fields of the type to determine if they are valid.
3569func (s *AddTagsInput) Validate() error {
3570	invalidParams := request.ErrInvalidParams{Context: "AddTagsInput"}
3571	if s.ResourceId == nil {
3572		invalidParams.Add(request.NewErrParamRequired("ResourceId"))
3573	}
3574	if s.Tags == nil {
3575		invalidParams.Add(request.NewErrParamRequired("Tags"))
3576	}
3577
3578	if invalidParams.Len() > 0 {
3579		return invalidParams
3580	}
3581	return nil
3582}
3583
3584// SetResourceId sets the ResourceId field's value.
3585func (s *AddTagsInput) SetResourceId(v string) *AddTagsInput {
3586	s.ResourceId = &v
3587	return s
3588}
3589
3590// SetTags sets the Tags field's value.
3591func (s *AddTagsInput) SetTags(v []*Tag) *AddTagsInput {
3592	s.Tags = v
3593	return s
3594}
3595
3596// This output indicates the result of adding tags to a resource.
3597type AddTagsOutput struct {
3598	_ struct{} `type:"structure"`
3599}
3600
3601// String returns the string representation
3602func (s AddTagsOutput) String() string {
3603	return awsutil.Prettify(s)
3604}
3605
3606// GoString returns the string representation
3607func (s AddTagsOutput) GoString() string {
3608	return s.String()
3609}
3610
3611// With Amazon EMR release version 4.0 and later, the only accepted parameter
3612// is the application name. To pass arguments to applications, you use configuration
3613// classifications specified using configuration JSON objects. For more information,
3614// see Configuring Applications (https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html).
3615//
3616// With earlier Amazon EMR releases, the application is any Amazon or third-party
3617// software that you can add to the cluster. This structure contains a list
3618// of strings that indicates the software to use with the cluster and accepts
3619// a user argument list. Amazon EMR accepts and forwards the argument list to
3620// the corresponding installation script as bootstrap action argument.
3621type Application struct {
3622	_ struct{} `type:"structure"`
3623
3624	// This option is for advanced users only. This is meta information about third-party
3625	// applications that third-party vendors use for testing purposes.
3626	AdditionalInfo map[string]*string `type:"map"`
3627
3628	// Arguments for Amazon EMR to pass to the application.
3629	Args []*string `type:"list"`
3630
3631	// The name of the application.
3632	Name *string `type:"string"`
3633
3634	// The version of the application.
3635	Version *string `type:"string"`
3636}
3637
3638// String returns the string representation
3639func (s Application) String() string {
3640	return awsutil.Prettify(s)
3641}
3642
3643// GoString returns the string representation
3644func (s Application) GoString() string {
3645	return s.String()
3646}
3647
3648// SetAdditionalInfo sets the AdditionalInfo field's value.
3649func (s *Application) SetAdditionalInfo(v map[string]*string) *Application {
3650	s.AdditionalInfo = v
3651	return s
3652}
3653
3654// SetArgs sets the Args field's value.
3655func (s *Application) SetArgs(v []*string) *Application {
3656	s.Args = v
3657	return s
3658}
3659
3660// SetName sets the Name field's value.
3661func (s *Application) SetName(v string) *Application {
3662	s.Name = &v
3663	return s
3664}
3665
3666// SetVersion sets the Version field's value.
3667func (s *Application) SetVersion(v string) *Application {
3668	s.Version = &v
3669	return s
3670}
3671
3672// An automatic scaling policy for a core instance group or task instance group
3673// in an Amazon EMR cluster. An automatic scaling policy defines how an instance
3674// group dynamically adds and terminates EC2 instances in response to the value
3675// of a CloudWatch metric. See PutAutoScalingPolicy.
3676type AutoScalingPolicy struct {
3677	_ struct{} `type:"structure"`
3678
3679	// The upper and lower EC2 instance limits for an automatic scaling policy.
3680	// Automatic scaling activity will not cause an instance group to grow above
3681	// or below these limits.
3682	//
3683	// Constraints is a required field
3684	Constraints *ScalingConstraints `type:"structure" required:"true"`
3685
3686	// The scale-in and scale-out rules that comprise the automatic scaling policy.
3687	//
3688	// Rules is a required field
3689	Rules []*ScalingRule `type:"list" required:"true"`
3690}
3691
3692// String returns the string representation
3693func (s AutoScalingPolicy) String() string {
3694	return awsutil.Prettify(s)
3695}
3696
3697// GoString returns the string representation
3698func (s AutoScalingPolicy) GoString() string {
3699	return s.String()
3700}
3701
3702// Validate inspects the fields of the type to determine if they are valid.
3703func (s *AutoScalingPolicy) Validate() error {
3704	invalidParams := request.ErrInvalidParams{Context: "AutoScalingPolicy"}
3705	if s.Constraints == nil {
3706		invalidParams.Add(request.NewErrParamRequired("Constraints"))
3707	}
3708	if s.Rules == nil {
3709		invalidParams.Add(request.NewErrParamRequired("Rules"))
3710	}
3711	if s.Constraints != nil {
3712		if err := s.Constraints.Validate(); err != nil {
3713			invalidParams.AddNested("Constraints", err.(request.ErrInvalidParams))
3714		}
3715	}
3716	if s.Rules != nil {
3717		for i, v := range s.Rules {
3718			if v == nil {
3719				continue
3720			}
3721			if err := v.Validate(); err != nil {
3722				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
3723			}
3724		}
3725	}
3726
3727	if invalidParams.Len() > 0 {
3728		return invalidParams
3729	}
3730	return nil
3731}
3732
3733// SetConstraints sets the Constraints field's value.
3734func (s *AutoScalingPolicy) SetConstraints(v *ScalingConstraints) *AutoScalingPolicy {
3735	s.Constraints = v
3736	return s
3737}
3738
3739// SetRules sets the Rules field's value.
3740func (s *AutoScalingPolicy) SetRules(v []*ScalingRule) *AutoScalingPolicy {
3741	s.Rules = v
3742	return s
3743}
3744
3745// An automatic scaling policy for a core instance group or task instance group
3746// in an Amazon EMR cluster. The automatic scaling policy defines how an instance
3747// group dynamically adds and terminates EC2 instances in response to the value
3748// of a CloudWatch metric. See PutAutoScalingPolicy.
3749type AutoScalingPolicyDescription struct {
3750	_ struct{} `type:"structure"`
3751
3752	// The upper and lower EC2 instance limits for an automatic scaling policy.
3753	// Automatic scaling activity will not cause an instance group to grow above
3754	// or below these limits.
3755	Constraints *ScalingConstraints `type:"structure"`
3756
3757	// The scale-in and scale-out rules that comprise the automatic scaling policy.
3758	Rules []*ScalingRule `type:"list"`
3759
3760	// The status of an automatic scaling policy.
3761	Status *AutoScalingPolicyStatus `type:"structure"`
3762}
3763
3764// String returns the string representation
3765func (s AutoScalingPolicyDescription) String() string {
3766	return awsutil.Prettify(s)
3767}
3768
3769// GoString returns the string representation
3770func (s AutoScalingPolicyDescription) GoString() string {
3771	return s.String()
3772}
3773
3774// SetConstraints sets the Constraints field's value.
3775func (s *AutoScalingPolicyDescription) SetConstraints(v *ScalingConstraints) *AutoScalingPolicyDescription {
3776	s.Constraints = v
3777	return s
3778}
3779
3780// SetRules sets the Rules field's value.
3781func (s *AutoScalingPolicyDescription) SetRules(v []*ScalingRule) *AutoScalingPolicyDescription {
3782	s.Rules = v
3783	return s
3784}
3785
3786// SetStatus sets the Status field's value.
3787func (s *AutoScalingPolicyDescription) SetStatus(v *AutoScalingPolicyStatus) *AutoScalingPolicyDescription {
3788	s.Status = v
3789	return s
3790}
3791
3792// The reason for an AutoScalingPolicyStatus change.
3793type AutoScalingPolicyStateChangeReason struct {
3794	_ struct{} `type:"structure"`
3795
3796	// The code indicating the reason for the change in status.USER_REQUEST indicates
3797	// that the scaling policy status was changed by a user. PROVISION_FAILURE indicates
3798	// that the status change was because the policy failed to provision. CLEANUP_FAILURE
3799	// indicates an error.
3800	Code *string `type:"string" enum:"AutoScalingPolicyStateChangeReasonCode"`
3801
3802	// A friendly, more verbose message that accompanies an automatic scaling policy
3803	// state change.
3804	Message *string `type:"string"`
3805}
3806
3807// String returns the string representation
3808func (s AutoScalingPolicyStateChangeReason) String() string {
3809	return awsutil.Prettify(s)
3810}
3811
3812// GoString returns the string representation
3813func (s AutoScalingPolicyStateChangeReason) GoString() string {
3814	return s.String()
3815}
3816
3817// SetCode sets the Code field's value.
3818func (s *AutoScalingPolicyStateChangeReason) SetCode(v string) *AutoScalingPolicyStateChangeReason {
3819	s.Code = &v
3820	return s
3821}
3822
3823// SetMessage sets the Message field's value.
3824func (s *AutoScalingPolicyStateChangeReason) SetMessage(v string) *AutoScalingPolicyStateChangeReason {
3825	s.Message = &v
3826	return s
3827}
3828
3829// The status of an automatic scaling policy.
3830type AutoScalingPolicyStatus struct {
3831	_ struct{} `type:"structure"`
3832
3833	// Indicates the status of the automatic scaling policy.
3834	State *string `type:"string" enum:"AutoScalingPolicyState"`
3835
3836	// The reason for a change in status.
3837	StateChangeReason *AutoScalingPolicyStateChangeReason `type:"structure"`
3838}
3839
3840// String returns the string representation
3841func (s AutoScalingPolicyStatus) String() string {
3842	return awsutil.Prettify(s)
3843}
3844
3845// GoString returns the string representation
3846func (s AutoScalingPolicyStatus) GoString() string {
3847	return s.String()
3848}
3849
3850// SetState sets the State field's value.
3851func (s *AutoScalingPolicyStatus) SetState(v string) *AutoScalingPolicyStatus {
3852	s.State = &v
3853	return s
3854}
3855
3856// SetStateChangeReason sets the StateChangeReason field's value.
3857func (s *AutoScalingPolicyStatus) SetStateChangeReason(v *AutoScalingPolicyStateChangeReason) *AutoScalingPolicyStatus {
3858	s.StateChangeReason = v
3859	return s
3860}
3861
3862// A configuration for Amazon EMR block public access. When BlockPublicSecurityGroupRules
3863// is set to true, Amazon EMR prevents cluster creation if one of the cluster's
3864// security groups has a rule that allows inbound traffic from 0.0.0.0/0 or
3865// ::/0 on a port, unless the port is specified as an exception using PermittedPublicSecurityGroupRuleRanges.
3866type BlockPublicAccessConfiguration struct {
3867	_ struct{} `type:"structure"`
3868
3869	// Indicates whether EMR block public access is enabled (true) or disabled (false).
3870	// By default, the value is false for accounts that have created EMR clusters
3871	// before July 2019. For accounts created after this, the default is true.
3872	//
3873	// BlockPublicSecurityGroupRules is a required field
3874	BlockPublicSecurityGroupRules *bool `type:"boolean" required:"true"`
3875
3876	// Specifies ports and port ranges that are permitted to have security group
3877	// rules that allow inbound traffic from all public sources. For example, if
3878	// Port 23 (Telnet) is specified for PermittedPublicSecurityGroupRuleRanges,
3879	// Amazon EMR allows cluster creation if a security group associated with the
3880	// cluster has a rule that allows inbound traffic on Port 23 from IPv4 0.0.0.0/0
3881	// or IPv6 port ::/0 as the source.
3882	//
3883	// By default, Port 22, which is used for SSH access to the cluster EC2 instances,
3884	// is in the list of PermittedPublicSecurityGroupRuleRanges.
3885	PermittedPublicSecurityGroupRuleRanges []*PortRange `type:"list"`
3886}
3887
3888// String returns the string representation
3889func (s BlockPublicAccessConfiguration) String() string {
3890	return awsutil.Prettify(s)
3891}
3892
3893// GoString returns the string representation
3894func (s BlockPublicAccessConfiguration) GoString() string {
3895	return s.String()
3896}
3897
3898// Validate inspects the fields of the type to determine if they are valid.
3899func (s *BlockPublicAccessConfiguration) Validate() error {
3900	invalidParams := request.ErrInvalidParams{Context: "BlockPublicAccessConfiguration"}
3901	if s.BlockPublicSecurityGroupRules == nil {
3902		invalidParams.Add(request.NewErrParamRequired("BlockPublicSecurityGroupRules"))
3903	}
3904	if s.PermittedPublicSecurityGroupRuleRanges != nil {
3905		for i, v := range s.PermittedPublicSecurityGroupRuleRanges {
3906			if v == nil {
3907				continue
3908			}
3909			if err := v.Validate(); err != nil {
3910				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "PermittedPublicSecurityGroupRuleRanges", i), err.(request.ErrInvalidParams))
3911			}
3912		}
3913	}
3914
3915	if invalidParams.Len() > 0 {
3916		return invalidParams
3917	}
3918	return nil
3919}
3920
3921// SetBlockPublicSecurityGroupRules sets the BlockPublicSecurityGroupRules field's value.
3922func (s *BlockPublicAccessConfiguration) SetBlockPublicSecurityGroupRules(v bool) *BlockPublicAccessConfiguration {
3923	s.BlockPublicSecurityGroupRules = &v
3924	return s
3925}
3926
3927// SetPermittedPublicSecurityGroupRuleRanges sets the PermittedPublicSecurityGroupRuleRanges field's value.
3928func (s *BlockPublicAccessConfiguration) SetPermittedPublicSecurityGroupRuleRanges(v []*PortRange) *BlockPublicAccessConfiguration {
3929	s.PermittedPublicSecurityGroupRuleRanges = v
3930	return s
3931}
3932
3933// Properties that describe the AWS principal that created the BlockPublicAccessConfiguration
3934// using the PutBlockPublicAccessConfiguration action as well as the date and
3935// time that the configuration was created. Each time a configuration for block
3936// public access is updated, Amazon EMR updates this metadata.
3937type BlockPublicAccessConfigurationMetadata struct {
3938	_ struct{} `type:"structure"`
3939
3940	// The Amazon Resource Name that created or last modified the configuration.
3941	//
3942	// CreatedByArn is a required field
3943	CreatedByArn *string `min:"20" type:"string" required:"true"`
3944
3945	// The date and time that the configuration was created.
3946	//
3947	// CreationDateTime is a required field
3948	CreationDateTime *time.Time `type:"timestamp" required:"true"`
3949}
3950
3951// String returns the string representation
3952func (s BlockPublicAccessConfigurationMetadata) String() string {
3953	return awsutil.Prettify(s)
3954}
3955
3956// GoString returns the string representation
3957func (s BlockPublicAccessConfigurationMetadata) GoString() string {
3958	return s.String()
3959}
3960
3961// SetCreatedByArn sets the CreatedByArn field's value.
3962func (s *BlockPublicAccessConfigurationMetadata) SetCreatedByArn(v string) *BlockPublicAccessConfigurationMetadata {
3963	s.CreatedByArn = &v
3964	return s
3965}
3966
3967// SetCreationDateTime sets the CreationDateTime field's value.
3968func (s *BlockPublicAccessConfigurationMetadata) SetCreationDateTime(v time.Time) *BlockPublicAccessConfigurationMetadata {
3969	s.CreationDateTime = &v
3970	return s
3971}
3972
3973// Configuration of a bootstrap action.
3974type BootstrapActionConfig struct {
3975	_ struct{} `type:"structure"`
3976
3977	// The name of the bootstrap action.
3978	//
3979	// Name is a required field
3980	Name *string `type:"string" required:"true"`
3981
3982	// The script run by the bootstrap action.
3983	//
3984	// ScriptBootstrapAction is a required field
3985	ScriptBootstrapAction *ScriptBootstrapActionConfig `type:"structure" required:"true"`
3986}
3987
3988// String returns the string representation
3989func (s BootstrapActionConfig) String() string {
3990	return awsutil.Prettify(s)
3991}
3992
3993// GoString returns the string representation
3994func (s BootstrapActionConfig) GoString() string {
3995	return s.String()
3996}
3997
3998// Validate inspects the fields of the type to determine if they are valid.
3999func (s *BootstrapActionConfig) Validate() error {
4000	invalidParams := request.ErrInvalidParams{Context: "BootstrapActionConfig"}
4001	if s.Name == nil {
4002		invalidParams.Add(request.NewErrParamRequired("Name"))
4003	}
4004	if s.ScriptBootstrapAction == nil {
4005		invalidParams.Add(request.NewErrParamRequired("ScriptBootstrapAction"))
4006	}
4007	if s.ScriptBootstrapAction != nil {
4008		if err := s.ScriptBootstrapAction.Validate(); err != nil {
4009			invalidParams.AddNested("ScriptBootstrapAction", err.(request.ErrInvalidParams))
4010		}
4011	}
4012
4013	if invalidParams.Len() > 0 {
4014		return invalidParams
4015	}
4016	return nil
4017}
4018
4019// SetName sets the Name field's value.
4020func (s *BootstrapActionConfig) SetName(v string) *BootstrapActionConfig {
4021	s.Name = &v
4022	return s
4023}
4024
4025// SetScriptBootstrapAction sets the ScriptBootstrapAction field's value.
4026func (s *BootstrapActionConfig) SetScriptBootstrapAction(v *ScriptBootstrapActionConfig) *BootstrapActionConfig {
4027	s.ScriptBootstrapAction = v
4028	return s
4029}
4030
4031// Reports the configuration of a bootstrap action in a cluster (job flow).
4032type BootstrapActionDetail struct {
4033	_ struct{} `type:"structure"`
4034
4035	// A description of the bootstrap action.
4036	BootstrapActionConfig *BootstrapActionConfig `type:"structure"`
4037}
4038
4039// String returns the string representation
4040func (s BootstrapActionDetail) String() string {
4041	return awsutil.Prettify(s)
4042}
4043
4044// GoString returns the string representation
4045func (s BootstrapActionDetail) GoString() string {
4046	return s.String()
4047}
4048
4049// SetBootstrapActionConfig sets the BootstrapActionConfig field's value.
4050func (s *BootstrapActionDetail) SetBootstrapActionConfig(v *BootstrapActionConfig) *BootstrapActionDetail {
4051	s.BootstrapActionConfig = v
4052	return s
4053}
4054
4055// Specification of the status of a CancelSteps request. Available only in Amazon
4056// EMR version 4.8.0 and later, excluding version 5.0.0.
4057type CancelStepsInfo struct {
4058	_ struct{} `type:"structure"`
4059
4060	// The reason for the failure if the CancelSteps request fails.
4061	Reason *string `type:"string"`
4062
4063	// The status of a CancelSteps Request. The value may be SUBMITTED or FAILED.
4064	Status *string `type:"string" enum:"CancelStepsRequestStatus"`
4065
4066	// The encrypted StepId of a step.
4067	StepId *string `type:"string"`
4068}
4069
4070// String returns the string representation
4071func (s CancelStepsInfo) String() string {
4072	return awsutil.Prettify(s)
4073}
4074
4075// GoString returns the string representation
4076func (s CancelStepsInfo) GoString() string {
4077	return s.String()
4078}
4079
4080// SetReason sets the Reason field's value.
4081func (s *CancelStepsInfo) SetReason(v string) *CancelStepsInfo {
4082	s.Reason = &v
4083	return s
4084}
4085
4086// SetStatus sets the Status field's value.
4087func (s *CancelStepsInfo) SetStatus(v string) *CancelStepsInfo {
4088	s.Status = &v
4089	return s
4090}
4091
4092// SetStepId sets the StepId field's value.
4093func (s *CancelStepsInfo) SetStepId(v string) *CancelStepsInfo {
4094	s.StepId = &v
4095	return s
4096}
4097
4098// The input argument to the CancelSteps operation.
4099type CancelStepsInput struct {
4100	_ struct{} `type:"structure"`
4101
4102	// The ClusterID for which specified steps will be canceled. Use RunJobFlow
4103	// and ListClusters to get ClusterIDs.
4104	//
4105	// ClusterId is a required field
4106	ClusterId *string `type:"string" required:"true"`
4107
4108	// The option to choose for cancelling RUNNING steps. By default, the value
4109	// is SEND_INTERRUPT.
4110	StepCancellationOption *string `type:"string" enum:"StepCancellationOption"`
4111
4112	// The list of StepIDs to cancel. Use ListSteps to get steps and their states
4113	// for the specified cluster.
4114	//
4115	// StepIds is a required field
4116	StepIds []*string `type:"list" required:"true"`
4117}
4118
4119// String returns the string representation
4120func (s CancelStepsInput) String() string {
4121	return awsutil.Prettify(s)
4122}
4123
4124// GoString returns the string representation
4125func (s CancelStepsInput) GoString() string {
4126	return s.String()
4127}
4128
4129// Validate inspects the fields of the type to determine if they are valid.
4130func (s *CancelStepsInput) Validate() error {
4131	invalidParams := request.ErrInvalidParams{Context: "CancelStepsInput"}
4132	if s.ClusterId == nil {
4133		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
4134	}
4135	if s.StepIds == nil {
4136		invalidParams.Add(request.NewErrParamRequired("StepIds"))
4137	}
4138
4139	if invalidParams.Len() > 0 {
4140		return invalidParams
4141	}
4142	return nil
4143}
4144
4145// SetClusterId sets the ClusterId field's value.
4146func (s *CancelStepsInput) SetClusterId(v string) *CancelStepsInput {
4147	s.ClusterId = &v
4148	return s
4149}
4150
4151// SetStepCancellationOption sets the StepCancellationOption field's value.
4152func (s *CancelStepsInput) SetStepCancellationOption(v string) *CancelStepsInput {
4153	s.StepCancellationOption = &v
4154	return s
4155}
4156
4157// SetStepIds sets the StepIds field's value.
4158func (s *CancelStepsInput) SetStepIds(v []*string) *CancelStepsInput {
4159	s.StepIds = v
4160	return s
4161}
4162
4163// The output for the CancelSteps operation.
4164type CancelStepsOutput struct {
4165	_ struct{} `type:"structure"`
4166
4167	// A list of CancelStepsInfo, which shows the status of specified cancel requests
4168	// for each StepID specified.
4169	CancelStepsInfoList []*CancelStepsInfo `type:"list"`
4170}
4171
4172// String returns the string representation
4173func (s CancelStepsOutput) String() string {
4174	return awsutil.Prettify(s)
4175}
4176
4177// GoString returns the string representation
4178func (s CancelStepsOutput) GoString() string {
4179	return s.String()
4180}
4181
4182// SetCancelStepsInfoList sets the CancelStepsInfoList field's value.
4183func (s *CancelStepsOutput) SetCancelStepsInfoList(v []*CancelStepsInfo) *CancelStepsOutput {
4184	s.CancelStepsInfoList = v
4185	return s
4186}
4187
4188// The definition of a CloudWatch metric alarm, which determines when an automatic
4189// scaling activity is triggered. When the defined alarm conditions are satisfied,
4190// scaling activity begins.
4191type CloudWatchAlarmDefinition struct {
4192	_ struct{} `type:"structure"`
4193
4194	// Determines how the metric specified by MetricName is compared to the value
4195	// specified by Threshold.
4196	//
4197	// ComparisonOperator is a required field
4198	ComparisonOperator *string `type:"string" required:"true" enum:"ComparisonOperator"`
4199
4200	// A CloudWatch metric dimension.
4201	Dimensions []*MetricDimension `type:"list"`
4202
4203	// The number of periods, in five-minute increments, during which the alarm
4204	// condition must exist before the alarm triggers automatic scaling activity.
4205	// The default value is 1.
4206	EvaluationPeriods *int64 `type:"integer"`
4207
4208	// The name of the CloudWatch metric that is watched to determine an alarm condition.
4209	//
4210	// MetricName is a required field
4211	MetricName *string `type:"string" required:"true"`
4212
4213	// The namespace for the CloudWatch metric. The default is AWS/ElasticMapReduce.
4214	Namespace *string `type:"string"`
4215
4216	// The period, in seconds, over which the statistic is applied. EMR CloudWatch
4217	// metrics are emitted every five minutes (300 seconds), so if an EMR CloudWatch
4218	// metric is specified, specify 300.
4219	//
4220	// Period is a required field
4221	Period *int64 `type:"integer" required:"true"`
4222
4223	// The statistic to apply to the metric associated with the alarm. The default
4224	// is AVERAGE.
4225	Statistic *string `type:"string" enum:"Statistic"`
4226
4227	// The value against which the specified statistic is compared.
4228	//
4229	// Threshold is a required field
4230	Threshold *float64 `type:"double" required:"true"`
4231
4232	// The unit of measure associated with the CloudWatch metric being watched.
4233	// The value specified for Unit must correspond to the units specified in the
4234	// CloudWatch metric.
4235	Unit *string `type:"string" enum:"Unit"`
4236}
4237
4238// String returns the string representation
4239func (s CloudWatchAlarmDefinition) String() string {
4240	return awsutil.Prettify(s)
4241}
4242
4243// GoString returns the string representation
4244func (s CloudWatchAlarmDefinition) GoString() string {
4245	return s.String()
4246}
4247
4248// Validate inspects the fields of the type to determine if they are valid.
4249func (s *CloudWatchAlarmDefinition) Validate() error {
4250	invalidParams := request.ErrInvalidParams{Context: "CloudWatchAlarmDefinition"}
4251	if s.ComparisonOperator == nil {
4252		invalidParams.Add(request.NewErrParamRequired("ComparisonOperator"))
4253	}
4254	if s.MetricName == nil {
4255		invalidParams.Add(request.NewErrParamRequired("MetricName"))
4256	}
4257	if s.Period == nil {
4258		invalidParams.Add(request.NewErrParamRequired("Period"))
4259	}
4260	if s.Threshold == nil {
4261		invalidParams.Add(request.NewErrParamRequired("Threshold"))
4262	}
4263
4264	if invalidParams.Len() > 0 {
4265		return invalidParams
4266	}
4267	return nil
4268}
4269
4270// SetComparisonOperator sets the ComparisonOperator field's value.
4271func (s *CloudWatchAlarmDefinition) SetComparisonOperator(v string) *CloudWatchAlarmDefinition {
4272	s.ComparisonOperator = &v
4273	return s
4274}
4275
4276// SetDimensions sets the Dimensions field's value.
4277func (s *CloudWatchAlarmDefinition) SetDimensions(v []*MetricDimension) *CloudWatchAlarmDefinition {
4278	s.Dimensions = v
4279	return s
4280}
4281
4282// SetEvaluationPeriods sets the EvaluationPeriods field's value.
4283func (s *CloudWatchAlarmDefinition) SetEvaluationPeriods(v int64) *CloudWatchAlarmDefinition {
4284	s.EvaluationPeriods = &v
4285	return s
4286}
4287
4288// SetMetricName sets the MetricName field's value.
4289func (s *CloudWatchAlarmDefinition) SetMetricName(v string) *CloudWatchAlarmDefinition {
4290	s.MetricName = &v
4291	return s
4292}
4293
4294// SetNamespace sets the Namespace field's value.
4295func (s *CloudWatchAlarmDefinition) SetNamespace(v string) *CloudWatchAlarmDefinition {
4296	s.Namespace = &v
4297	return s
4298}
4299
4300// SetPeriod sets the Period field's value.
4301func (s *CloudWatchAlarmDefinition) SetPeriod(v int64) *CloudWatchAlarmDefinition {
4302	s.Period = &v
4303	return s
4304}
4305
4306// SetStatistic sets the Statistic field's value.
4307func (s *CloudWatchAlarmDefinition) SetStatistic(v string) *CloudWatchAlarmDefinition {
4308	s.Statistic = &v
4309	return s
4310}
4311
4312// SetThreshold sets the Threshold field's value.
4313func (s *CloudWatchAlarmDefinition) SetThreshold(v float64) *CloudWatchAlarmDefinition {
4314	s.Threshold = &v
4315	return s
4316}
4317
4318// SetUnit sets the Unit field's value.
4319func (s *CloudWatchAlarmDefinition) SetUnit(v string) *CloudWatchAlarmDefinition {
4320	s.Unit = &v
4321	return s
4322}
4323
4324// The detailed description of the cluster.
4325type Cluster struct {
4326	_ struct{} `type:"structure"`
4327
4328	// The applications installed on this cluster.
4329	Applications []*Application `type:"list"`
4330
4331	// An IAM role for automatic scaling policies. The default role is EMR_AutoScaling_DefaultRole.
4332	// The IAM role provides permissions that the automatic scaling feature requires
4333	// to launch and terminate EC2 instances in an instance group.
4334	AutoScalingRole *string `type:"string"`
4335
4336	// Specifies whether the cluster should terminate after completing all steps.
4337	AutoTerminate *bool `type:"boolean"`
4338
4339	// The Amazon Resource Name of the cluster.
4340	ClusterArn *string `min:"20" type:"string"`
4341
4342	// Applies only to Amazon EMR releases 4.x and later. The list of Configurations
4343	// supplied to the EMR cluster.
4344	Configurations []*Configuration `type:"list"`
4345
4346	// Available only in Amazon EMR version 5.7.0 and later. The ID of a custom
4347	// Amazon EBS-backed Linux AMI if the cluster uses a custom AMI.
4348	CustomAmiId *string `type:"string"`
4349
4350	// The size, in GiB, of the EBS root device volume of the Linux AMI that is
4351	// used for each EC2 instance. Available in Amazon EMR version 4.x and later.
4352	EbsRootVolumeSize *int64 `type:"integer"`
4353
4354	// Provides information about the EC2 instances in a cluster grouped by category.
4355	// For example, key name, subnet ID, IAM instance profile, and so on.
4356	Ec2InstanceAttributes *Ec2InstanceAttributes `type:"structure"`
4357
4358	// The unique identifier for the cluster.
4359	Id *string `type:"string"`
4360
4361	//
4362	// The instance fleet configuration is available only in Amazon EMR versions
4363	// 4.8.0 and later, excluding 5.0.x versions.
4364	//
4365	// The instance group configuration of the cluster. A value of INSTANCE_GROUP
4366	// indicates a uniform instance group configuration. A value of INSTANCE_FLEET
4367	// indicates an instance fleets configuration.
4368	InstanceCollectionType *string `type:"string" enum:"InstanceCollectionType"`
4369
4370	// Attributes for Kerberos configuration when Kerberos authentication is enabled
4371	// using a security configuration. For more information see Use Kerberos Authentication
4372	// (https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-kerberos.html)
4373	// in the EMR Management Guide.
4374	KerberosAttributes *KerberosAttributes `type:"structure"`
4375
4376	// The AWS KMS customer master key (CMK) used for encrypting log files. This
4377	// attribute is only available with EMR version 5.30.0 and later, excluding
4378	// EMR 6.0.0.
4379	LogEncryptionKmsKeyId *string `type:"string"`
4380
4381	// The path to the Amazon S3 location where logs for this cluster are stored.
4382	LogUri *string `type:"string"`
4383
4384	// The DNS name of the master node. If the cluster is on a private subnet, this
4385	// is the private DNS name. On a public subnet, this is the public DNS name.
4386	MasterPublicDnsName *string `type:"string"`
4387
4388	// The name of the cluster.
4389	Name *string `type:"string"`
4390
4391	// An approximation of the cost of the cluster, represented in m1.small/hours.
4392	// This value is incremented one time for every hour an m1.small instance runs.
4393	// Larger instances are weighted more, so an EC2 instance that is roughly four
4394	// times more expensive would result in the normalized instance hours being
4395	// incremented by four. This result is only an approximation and does not reflect
4396	// the actual billing rate.
4397	NormalizedInstanceHours *int64 `type:"integer"`
4398
4399	// The Amazon Resource Name (ARN) of the Outpost where the cluster is launched.
4400	OutpostArn *string `type:"string"`
4401
4402	// The Amazon EMR release label, which determines the version of open-source
4403	// application packages installed on the cluster. Release labels are in the
4404	// form emr-x.x.x, where x.x.x is an Amazon EMR release version such as emr-5.14.0.
4405	// For more information about Amazon EMR release versions and included application
4406	// versions and features, see https://docs.aws.amazon.com/emr/latest/ReleaseGuide/
4407	// (https://docs.aws.amazon.com/emr/latest/ReleaseGuide/). The release label
4408	// applies only to Amazon EMR releases version 4.0 and later. Earlier versions
4409	// use AmiVersion.
4410	ReleaseLabel *string `type:"string"`
4411
4412	// Applies only when CustomAmiID is used. Specifies the type of updates that
4413	// are applied from the Amazon Linux AMI package repositories when an instance
4414	// boots using the AMI.
4415	RepoUpgradeOnBoot *string `type:"string" enum:"RepoUpgradeOnBoot"`
4416
4417	// The AMI version requested for this cluster.
4418	RequestedAmiVersion *string `type:"string"`
4419
4420	// The AMI version running on this cluster.
4421	RunningAmiVersion *string `type:"string"`
4422
4423	// The way that individual Amazon EC2 instances terminate when an automatic
4424	// scale-in activity occurs or an instance group is resized. TERMINATE_AT_INSTANCE_HOUR
4425	// indicates that Amazon EMR terminates nodes at the instance-hour boundary,
4426	// regardless of when the request to terminate the instance was submitted. This
4427	// option is only available with Amazon EMR 5.1.0 and later and is the default
4428	// for clusters created using that version. TERMINATE_AT_TASK_COMPLETION indicates
4429	// that Amazon EMR blacklists and drains tasks from nodes before terminating
4430	// the Amazon EC2 instances, regardless of the instance-hour boundary. With
4431	// either behavior, Amazon EMR removes the least active nodes first and blocks
4432	// instance termination if it could lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION
4433	// is available only in Amazon EMR version 4.1.0 and later, and is the default
4434	// for versions of Amazon EMR earlier than 5.1.0.
4435	ScaleDownBehavior *string `type:"string" enum:"ScaleDownBehavior"`
4436
4437	// The name of the security configuration applied to the cluster.
4438	SecurityConfiguration *string `type:"string"`
4439
4440	// The IAM role that will be assumed by the Amazon EMR service to access AWS
4441	// resources on your behalf.
4442	ServiceRole *string `type:"string"`
4443
4444	// The current status details about the cluster.
4445	Status *ClusterStatus `type:"structure"`
4446
4447	// Specifies the number of steps that can be executed concurrently.
4448	StepConcurrencyLevel *int64 `type:"integer"`
4449
4450	// A list of tags associated with a cluster.
4451	Tags []*Tag `type:"list"`
4452
4453	// Indicates whether Amazon EMR will lock the cluster to prevent the EC2 instances
4454	// from being terminated by an API call or user intervention, or in the event
4455	// of a cluster error.
4456	TerminationProtected *bool `type:"boolean"`
4457
4458	// Indicates whether the cluster is visible to all IAM users of the AWS account
4459	// associated with the cluster. The default value, true, indicates that all
4460	// IAM users in the AWS account can perform cluster actions if they have the
4461	// proper IAM policy permissions. If this value is false, only the IAM user
4462	// that created the cluster can perform actions. This value can be changed on
4463	// a running cluster by using the SetVisibleToAllUsers action. You can override
4464	// the default value of true when you create a cluster by using the VisibleToAllUsers
4465	// parameter of the RunJobFlow action.
4466	VisibleToAllUsers *bool `type:"boolean"`
4467}
4468
4469// String returns the string representation
4470func (s Cluster) String() string {
4471	return awsutil.Prettify(s)
4472}
4473
4474// GoString returns the string representation
4475func (s Cluster) GoString() string {
4476	return s.String()
4477}
4478
4479// SetApplications sets the Applications field's value.
4480func (s *Cluster) SetApplications(v []*Application) *Cluster {
4481	s.Applications = v
4482	return s
4483}
4484
4485// SetAutoScalingRole sets the AutoScalingRole field's value.
4486func (s *Cluster) SetAutoScalingRole(v string) *Cluster {
4487	s.AutoScalingRole = &v
4488	return s
4489}
4490
4491// SetAutoTerminate sets the AutoTerminate field's value.
4492func (s *Cluster) SetAutoTerminate(v bool) *Cluster {
4493	s.AutoTerminate = &v
4494	return s
4495}
4496
4497// SetClusterArn sets the ClusterArn field's value.
4498func (s *Cluster) SetClusterArn(v string) *Cluster {
4499	s.ClusterArn = &v
4500	return s
4501}
4502
4503// SetConfigurations sets the Configurations field's value.
4504func (s *Cluster) SetConfigurations(v []*Configuration) *Cluster {
4505	s.Configurations = v
4506	return s
4507}
4508
4509// SetCustomAmiId sets the CustomAmiId field's value.
4510func (s *Cluster) SetCustomAmiId(v string) *Cluster {
4511	s.CustomAmiId = &v
4512	return s
4513}
4514
4515// SetEbsRootVolumeSize sets the EbsRootVolumeSize field's value.
4516func (s *Cluster) SetEbsRootVolumeSize(v int64) *Cluster {
4517	s.EbsRootVolumeSize = &v
4518	return s
4519}
4520
4521// SetEc2InstanceAttributes sets the Ec2InstanceAttributes field's value.
4522func (s *Cluster) SetEc2InstanceAttributes(v *Ec2InstanceAttributes) *Cluster {
4523	s.Ec2InstanceAttributes = v
4524	return s
4525}
4526
4527// SetId sets the Id field's value.
4528func (s *Cluster) SetId(v string) *Cluster {
4529	s.Id = &v
4530	return s
4531}
4532
4533// SetInstanceCollectionType sets the InstanceCollectionType field's value.
4534func (s *Cluster) SetInstanceCollectionType(v string) *Cluster {
4535	s.InstanceCollectionType = &v
4536	return s
4537}
4538
4539// SetKerberosAttributes sets the KerberosAttributes field's value.
4540func (s *Cluster) SetKerberosAttributes(v *KerberosAttributes) *Cluster {
4541	s.KerberosAttributes = v
4542	return s
4543}
4544
4545// SetLogEncryptionKmsKeyId sets the LogEncryptionKmsKeyId field's value.
4546func (s *Cluster) SetLogEncryptionKmsKeyId(v string) *Cluster {
4547	s.LogEncryptionKmsKeyId = &v
4548	return s
4549}
4550
4551// SetLogUri sets the LogUri field's value.
4552func (s *Cluster) SetLogUri(v string) *Cluster {
4553	s.LogUri = &v
4554	return s
4555}
4556
4557// SetMasterPublicDnsName sets the MasterPublicDnsName field's value.
4558func (s *Cluster) SetMasterPublicDnsName(v string) *Cluster {
4559	s.MasterPublicDnsName = &v
4560	return s
4561}
4562
4563// SetName sets the Name field's value.
4564func (s *Cluster) SetName(v string) *Cluster {
4565	s.Name = &v
4566	return s
4567}
4568
4569// SetNormalizedInstanceHours sets the NormalizedInstanceHours field's value.
4570func (s *Cluster) SetNormalizedInstanceHours(v int64) *Cluster {
4571	s.NormalizedInstanceHours = &v
4572	return s
4573}
4574
4575// SetOutpostArn sets the OutpostArn field's value.
4576func (s *Cluster) SetOutpostArn(v string) *Cluster {
4577	s.OutpostArn = &v
4578	return s
4579}
4580
4581// SetReleaseLabel sets the ReleaseLabel field's value.
4582func (s *Cluster) SetReleaseLabel(v string) *Cluster {
4583	s.ReleaseLabel = &v
4584	return s
4585}
4586
4587// SetRepoUpgradeOnBoot sets the RepoUpgradeOnBoot field's value.
4588func (s *Cluster) SetRepoUpgradeOnBoot(v string) *Cluster {
4589	s.RepoUpgradeOnBoot = &v
4590	return s
4591}
4592
4593// SetRequestedAmiVersion sets the RequestedAmiVersion field's value.
4594func (s *Cluster) SetRequestedAmiVersion(v string) *Cluster {
4595	s.RequestedAmiVersion = &v
4596	return s
4597}
4598
4599// SetRunningAmiVersion sets the RunningAmiVersion field's value.
4600func (s *Cluster) SetRunningAmiVersion(v string) *Cluster {
4601	s.RunningAmiVersion = &v
4602	return s
4603}
4604
4605// SetScaleDownBehavior sets the ScaleDownBehavior field's value.
4606func (s *Cluster) SetScaleDownBehavior(v string) *Cluster {
4607	s.ScaleDownBehavior = &v
4608	return s
4609}
4610
4611// SetSecurityConfiguration sets the SecurityConfiguration field's value.
4612func (s *Cluster) SetSecurityConfiguration(v string) *Cluster {
4613	s.SecurityConfiguration = &v
4614	return s
4615}
4616
4617// SetServiceRole sets the ServiceRole field's value.
4618func (s *Cluster) SetServiceRole(v string) *Cluster {
4619	s.ServiceRole = &v
4620	return s
4621}
4622
4623// SetStatus sets the Status field's value.
4624func (s *Cluster) SetStatus(v *ClusterStatus) *Cluster {
4625	s.Status = v
4626	return s
4627}
4628
4629// SetStepConcurrencyLevel sets the StepConcurrencyLevel field's value.
4630func (s *Cluster) SetStepConcurrencyLevel(v int64) *Cluster {
4631	s.StepConcurrencyLevel = &v
4632	return s
4633}
4634
4635// SetTags sets the Tags field's value.
4636func (s *Cluster) SetTags(v []*Tag) *Cluster {
4637	s.Tags = v
4638	return s
4639}
4640
4641// SetTerminationProtected sets the TerminationProtected field's value.
4642func (s *Cluster) SetTerminationProtected(v bool) *Cluster {
4643	s.TerminationProtected = &v
4644	return s
4645}
4646
4647// SetVisibleToAllUsers sets the VisibleToAllUsers field's value.
4648func (s *Cluster) SetVisibleToAllUsers(v bool) *Cluster {
4649	s.VisibleToAllUsers = &v
4650	return s
4651}
4652
4653// The reason that the cluster changed to its current state.
4654type ClusterStateChangeReason struct {
4655	_ struct{} `type:"structure"`
4656
4657	// The programmatic code for the state change reason.
4658	Code *string `type:"string" enum:"ClusterStateChangeReasonCode"`
4659
4660	// The descriptive message for the state change reason.
4661	Message *string `type:"string"`
4662}
4663
4664// String returns the string representation
4665func (s ClusterStateChangeReason) String() string {
4666	return awsutil.Prettify(s)
4667}
4668
4669// GoString returns the string representation
4670func (s ClusterStateChangeReason) GoString() string {
4671	return s.String()
4672}
4673
4674// SetCode sets the Code field's value.
4675func (s *ClusterStateChangeReason) SetCode(v string) *ClusterStateChangeReason {
4676	s.Code = &v
4677	return s
4678}
4679
4680// SetMessage sets the Message field's value.
4681func (s *ClusterStateChangeReason) SetMessage(v string) *ClusterStateChangeReason {
4682	s.Message = &v
4683	return s
4684}
4685
4686// The detailed status of the cluster.
4687type ClusterStatus struct {
4688	_ struct{} `type:"structure"`
4689
4690	// The current state of the cluster.
4691	State *string `type:"string" enum:"ClusterState"`
4692
4693	// The reason for the cluster status change.
4694	StateChangeReason *ClusterStateChangeReason `type:"structure"`
4695
4696	// A timeline that represents the status of a cluster over the lifetime of the
4697	// cluster.
4698	Timeline *ClusterTimeline `type:"structure"`
4699}
4700
4701// String returns the string representation
4702func (s ClusterStatus) String() string {
4703	return awsutil.Prettify(s)
4704}
4705
4706// GoString returns the string representation
4707func (s ClusterStatus) GoString() string {
4708	return s.String()
4709}
4710
4711// SetState sets the State field's value.
4712func (s *ClusterStatus) SetState(v string) *ClusterStatus {
4713	s.State = &v
4714	return s
4715}
4716
4717// SetStateChangeReason sets the StateChangeReason field's value.
4718func (s *ClusterStatus) SetStateChangeReason(v *ClusterStateChangeReason) *ClusterStatus {
4719	s.StateChangeReason = v
4720	return s
4721}
4722
4723// SetTimeline sets the Timeline field's value.
4724func (s *ClusterStatus) SetTimeline(v *ClusterTimeline) *ClusterStatus {
4725	s.Timeline = v
4726	return s
4727}
4728
4729// The summary description of the cluster.
4730type ClusterSummary struct {
4731	_ struct{} `type:"structure"`
4732
4733	// The Amazon Resource Name of the cluster.
4734	ClusterArn *string `min:"20" type:"string"`
4735
4736	// The unique identifier for the cluster.
4737	Id *string `type:"string"`
4738
4739	// The name of the cluster.
4740	Name *string `type:"string"`
4741
4742	// An approximation of the cost of the cluster, represented in m1.small/hours.
4743	// This value is incremented one time for every hour an m1.small instance runs.
4744	// Larger instances are weighted more, so an EC2 instance that is roughly four
4745	// times more expensive would result in the normalized instance hours being
4746	// incremented by four. This result is only an approximation and does not reflect
4747	// the actual billing rate.
4748	NormalizedInstanceHours *int64 `type:"integer"`
4749
4750	// The Amazon Resource Name (ARN) of the Outpost where the cluster is launched.
4751	OutpostArn *string `type:"string"`
4752
4753	// The details about the current status of the cluster.
4754	Status *ClusterStatus `type:"structure"`
4755}
4756
4757// String returns the string representation
4758func (s ClusterSummary) String() string {
4759	return awsutil.Prettify(s)
4760}
4761
4762// GoString returns the string representation
4763func (s ClusterSummary) GoString() string {
4764	return s.String()
4765}
4766
4767// SetClusterArn sets the ClusterArn field's value.
4768func (s *ClusterSummary) SetClusterArn(v string) *ClusterSummary {
4769	s.ClusterArn = &v
4770	return s
4771}
4772
4773// SetId sets the Id field's value.
4774func (s *ClusterSummary) SetId(v string) *ClusterSummary {
4775	s.Id = &v
4776	return s
4777}
4778
4779// SetName sets the Name field's value.
4780func (s *ClusterSummary) SetName(v string) *ClusterSummary {
4781	s.Name = &v
4782	return s
4783}
4784
4785// SetNormalizedInstanceHours sets the NormalizedInstanceHours field's value.
4786func (s *ClusterSummary) SetNormalizedInstanceHours(v int64) *ClusterSummary {
4787	s.NormalizedInstanceHours = &v
4788	return s
4789}
4790
4791// SetOutpostArn sets the OutpostArn field's value.
4792func (s *ClusterSummary) SetOutpostArn(v string) *ClusterSummary {
4793	s.OutpostArn = &v
4794	return s
4795}
4796
4797// SetStatus sets the Status field's value.
4798func (s *ClusterSummary) SetStatus(v *ClusterStatus) *ClusterSummary {
4799	s.Status = v
4800	return s
4801}
4802
4803// Represents the timeline of the cluster's lifecycle.
4804type ClusterTimeline struct {
4805	_ struct{} `type:"structure"`
4806
4807	// The creation date and time of the cluster.
4808	CreationDateTime *time.Time `type:"timestamp"`
4809
4810	// The date and time when the cluster was terminated.
4811	EndDateTime *time.Time `type:"timestamp"`
4812
4813	// The date and time when the cluster was ready to execute steps.
4814	ReadyDateTime *time.Time `type:"timestamp"`
4815}
4816
4817// String returns the string representation
4818func (s ClusterTimeline) String() string {
4819	return awsutil.Prettify(s)
4820}
4821
4822// GoString returns the string representation
4823func (s ClusterTimeline) GoString() string {
4824	return s.String()
4825}
4826
4827// SetCreationDateTime sets the CreationDateTime field's value.
4828func (s *ClusterTimeline) SetCreationDateTime(v time.Time) *ClusterTimeline {
4829	s.CreationDateTime = &v
4830	return s
4831}
4832
4833// SetEndDateTime sets the EndDateTime field's value.
4834func (s *ClusterTimeline) SetEndDateTime(v time.Time) *ClusterTimeline {
4835	s.EndDateTime = &v
4836	return s
4837}
4838
4839// SetReadyDateTime sets the ReadyDateTime field's value.
4840func (s *ClusterTimeline) SetReadyDateTime(v time.Time) *ClusterTimeline {
4841	s.ReadyDateTime = &v
4842	return s
4843}
4844
4845// An entity describing an executable that runs on a cluster.
4846type Command struct {
4847	_ struct{} `type:"structure"`
4848
4849	// Arguments for Amazon EMR to pass to the command for execution.
4850	Args []*string `type:"list"`
4851
4852	// The name of the command.
4853	Name *string `type:"string"`
4854
4855	// The Amazon S3 location of the command script.
4856	ScriptPath *string `type:"string"`
4857}
4858
4859// String returns the string representation
4860func (s Command) String() string {
4861	return awsutil.Prettify(s)
4862}
4863
4864// GoString returns the string representation
4865func (s Command) GoString() string {
4866	return s.String()
4867}
4868
4869// SetArgs sets the Args field's value.
4870func (s *Command) SetArgs(v []*string) *Command {
4871	s.Args = v
4872	return s
4873}
4874
4875// SetName sets the Name field's value.
4876func (s *Command) SetName(v string) *Command {
4877	s.Name = &v
4878	return s
4879}
4880
4881// SetScriptPath sets the ScriptPath field's value.
4882func (s *Command) SetScriptPath(v string) *Command {
4883	s.ScriptPath = &v
4884	return s
4885}
4886
4887// The EC2 unit limits for a managed scaling policy. The managed scaling activity
4888// of a cluster can not be above or below these limits. The limit only applies
4889// to the core and task nodes. The master node cannot be scaled after initial
4890// configuration.
4891type ComputeLimits struct {
4892	_ struct{} `type:"structure"`
4893
4894	// The upper boundary of EC2 units. It is measured through VCPU cores or instances
4895	// for instance groups and measured through units for instance fleets. Managed
4896	// scaling activities are not allowed beyond this boundary. The limit only applies
4897	// to the core and task nodes. The master node cannot be scaled after initial
4898	// configuration.
4899	//
4900	// MaximumCapacityUnits is a required field
4901	MaximumCapacityUnits *int64 `type:"integer" required:"true"`
4902
4903	// The upper boundary of EC2 units for core node type in a cluster. It is measured
4904	// through VCPU cores or instances for instance groups and measured through
4905	// units for instance fleets. The core units are not allowed to scale beyond
4906	// this boundary. The parameter is used to split capacity allocation between
4907	// core and task nodes.
4908	MaximumCoreCapacityUnits *int64 `type:"integer"`
4909
4910	// The upper boundary of On-Demand EC2 units. It is measured through VCPU cores
4911	// or instances for instance groups and measured through units for instance
4912	// fleets. The On-Demand units are not allowed to scale beyond this boundary.
4913	// The parameter is used to split capacity allocation between On-Demand and
4914	// Spot instances.
4915	MaximumOnDemandCapacityUnits *int64 `type:"integer"`
4916
4917	// The lower boundary of EC2 units. It is measured through VCPU cores or instances
4918	// for instance groups and measured through units for instance fleets. Managed
4919	// scaling activities are not allowed beyond this boundary. The limit only applies
4920	// to the core and task nodes. The master node cannot be scaled after initial
4921	// configuration.
4922	//
4923	// MinimumCapacityUnits is a required field
4924	MinimumCapacityUnits *int64 `type:"integer" required:"true"`
4925
4926	// The unit type used for specifying a managed scaling policy.
4927	//
4928	// UnitType is a required field
4929	UnitType *string `type:"string" required:"true" enum:"ComputeLimitsUnitType"`
4930}
4931
4932// String returns the string representation
4933func (s ComputeLimits) String() string {
4934	return awsutil.Prettify(s)
4935}
4936
4937// GoString returns the string representation
4938func (s ComputeLimits) GoString() string {
4939	return s.String()
4940}
4941
4942// Validate inspects the fields of the type to determine if they are valid.
4943func (s *ComputeLimits) Validate() error {
4944	invalidParams := request.ErrInvalidParams{Context: "ComputeLimits"}
4945	if s.MaximumCapacityUnits == nil {
4946		invalidParams.Add(request.NewErrParamRequired("MaximumCapacityUnits"))
4947	}
4948	if s.MinimumCapacityUnits == nil {
4949		invalidParams.Add(request.NewErrParamRequired("MinimumCapacityUnits"))
4950	}
4951	if s.UnitType == nil {
4952		invalidParams.Add(request.NewErrParamRequired("UnitType"))
4953	}
4954
4955	if invalidParams.Len() > 0 {
4956		return invalidParams
4957	}
4958	return nil
4959}
4960
4961// SetMaximumCapacityUnits sets the MaximumCapacityUnits field's value.
4962func (s *ComputeLimits) SetMaximumCapacityUnits(v int64) *ComputeLimits {
4963	s.MaximumCapacityUnits = &v
4964	return s
4965}
4966
4967// SetMaximumCoreCapacityUnits sets the MaximumCoreCapacityUnits field's value.
4968func (s *ComputeLimits) SetMaximumCoreCapacityUnits(v int64) *ComputeLimits {
4969	s.MaximumCoreCapacityUnits = &v
4970	return s
4971}
4972
4973// SetMaximumOnDemandCapacityUnits sets the MaximumOnDemandCapacityUnits field's value.
4974func (s *ComputeLimits) SetMaximumOnDemandCapacityUnits(v int64) *ComputeLimits {
4975	s.MaximumOnDemandCapacityUnits = &v
4976	return s
4977}
4978
4979// SetMinimumCapacityUnits sets the MinimumCapacityUnits field's value.
4980func (s *ComputeLimits) SetMinimumCapacityUnits(v int64) *ComputeLimits {
4981	s.MinimumCapacityUnits = &v
4982	return s
4983}
4984
4985// SetUnitType sets the UnitType field's value.
4986func (s *ComputeLimits) SetUnitType(v string) *ComputeLimits {
4987	s.UnitType = &v
4988	return s
4989}
4990
4991//
4992// Amazon EMR releases 4.x or later.
4993//
4994// An optional configuration specification to be used when provisioning cluster
4995// instances, which can include configurations for applications and software
4996// bundled with Amazon EMR. A configuration consists of a classification, properties,
4997// and optional nested configurations. A classification refers to an application-specific
4998// configuration file. Properties are the settings you want to change in that
4999// file. For more information, see Configuring Applications (https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html).
5000type Configuration struct {
5001	_ struct{} `type:"structure"`
5002
5003	// The classification within a configuration.
5004	Classification *string `type:"string"`
5005
5006	// A list of additional configurations to apply within a configuration object.
5007	Configurations []*Configuration `type:"list"`
5008
5009	// A set of properties specified within a configuration classification.
5010	Properties map[string]*string `type:"map"`
5011}
5012
5013// String returns the string representation
5014func (s Configuration) String() string {
5015	return awsutil.Prettify(s)
5016}
5017
5018// GoString returns the string representation
5019func (s Configuration) GoString() string {
5020	return s.String()
5021}
5022
5023// SetClassification sets the Classification field's value.
5024func (s *Configuration) SetClassification(v string) *Configuration {
5025	s.Classification = &v
5026	return s
5027}
5028
5029// SetConfigurations sets the Configurations field's value.
5030func (s *Configuration) SetConfigurations(v []*Configuration) *Configuration {
5031	s.Configurations = v
5032	return s
5033}
5034
5035// SetProperties sets the Properties field's value.
5036func (s *Configuration) SetProperties(v map[string]*string) *Configuration {
5037	s.Properties = v
5038	return s
5039}
5040
5041type CreateSecurityConfigurationInput struct {
5042	_ struct{} `type:"structure"`
5043
5044	// The name of the security configuration.
5045	//
5046	// Name is a required field
5047	Name *string `type:"string" required:"true"`
5048
5049	// The security configuration details in JSON format. For JSON parameters and
5050	// examples, see Use Security Configurations to Set Up Cluster Security (https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-security-configurations.html)
5051	// in the Amazon EMR Management Guide.
5052	//
5053	// SecurityConfiguration is a required field
5054	SecurityConfiguration *string `type:"string" required:"true"`
5055}
5056
5057// String returns the string representation
5058func (s CreateSecurityConfigurationInput) String() string {
5059	return awsutil.Prettify(s)
5060}
5061
5062// GoString returns the string representation
5063func (s CreateSecurityConfigurationInput) GoString() string {
5064	return s.String()
5065}
5066
5067// Validate inspects the fields of the type to determine if they are valid.
5068func (s *CreateSecurityConfigurationInput) Validate() error {
5069	invalidParams := request.ErrInvalidParams{Context: "CreateSecurityConfigurationInput"}
5070	if s.Name == nil {
5071		invalidParams.Add(request.NewErrParamRequired("Name"))
5072	}
5073	if s.SecurityConfiguration == nil {
5074		invalidParams.Add(request.NewErrParamRequired("SecurityConfiguration"))
5075	}
5076
5077	if invalidParams.Len() > 0 {
5078		return invalidParams
5079	}
5080	return nil
5081}
5082
5083// SetName sets the Name field's value.
5084func (s *CreateSecurityConfigurationInput) SetName(v string) *CreateSecurityConfigurationInput {
5085	s.Name = &v
5086	return s
5087}
5088
5089// SetSecurityConfiguration sets the SecurityConfiguration field's value.
5090func (s *CreateSecurityConfigurationInput) SetSecurityConfiguration(v string) *CreateSecurityConfigurationInput {
5091	s.SecurityConfiguration = &v
5092	return s
5093}
5094
5095type CreateSecurityConfigurationOutput struct {
5096	_ struct{} `type:"structure"`
5097
5098	// The date and time the security configuration was created.
5099	//
5100	// CreationDateTime is a required field
5101	CreationDateTime *time.Time `type:"timestamp" required:"true"`
5102
5103	// The name of the security configuration.
5104	//
5105	// Name is a required field
5106	Name *string `type:"string" required:"true"`
5107}
5108
5109// String returns the string representation
5110func (s CreateSecurityConfigurationOutput) String() string {
5111	return awsutil.Prettify(s)
5112}
5113
5114// GoString returns the string representation
5115func (s CreateSecurityConfigurationOutput) GoString() string {
5116	return s.String()
5117}
5118
5119// SetCreationDateTime sets the CreationDateTime field's value.
5120func (s *CreateSecurityConfigurationOutput) SetCreationDateTime(v time.Time) *CreateSecurityConfigurationOutput {
5121	s.CreationDateTime = &v
5122	return s
5123}
5124
5125// SetName sets the Name field's value.
5126func (s *CreateSecurityConfigurationOutput) SetName(v string) *CreateSecurityConfigurationOutput {
5127	s.Name = &v
5128	return s
5129}
5130
5131type DeleteSecurityConfigurationInput struct {
5132	_ struct{} `type:"structure"`
5133
5134	// The name of the security configuration.
5135	//
5136	// Name is a required field
5137	Name *string `type:"string" required:"true"`
5138}
5139
5140// String returns the string representation
5141func (s DeleteSecurityConfigurationInput) String() string {
5142	return awsutil.Prettify(s)
5143}
5144
5145// GoString returns the string representation
5146func (s DeleteSecurityConfigurationInput) GoString() string {
5147	return s.String()
5148}
5149
5150// Validate inspects the fields of the type to determine if they are valid.
5151func (s *DeleteSecurityConfigurationInput) Validate() error {
5152	invalidParams := request.ErrInvalidParams{Context: "DeleteSecurityConfigurationInput"}
5153	if s.Name == nil {
5154		invalidParams.Add(request.NewErrParamRequired("Name"))
5155	}
5156
5157	if invalidParams.Len() > 0 {
5158		return invalidParams
5159	}
5160	return nil
5161}
5162
5163// SetName sets the Name field's value.
5164func (s *DeleteSecurityConfigurationInput) SetName(v string) *DeleteSecurityConfigurationInput {
5165	s.Name = &v
5166	return s
5167}
5168
5169type DeleteSecurityConfigurationOutput struct {
5170	_ struct{} `type:"structure"`
5171}
5172
5173// String returns the string representation
5174func (s DeleteSecurityConfigurationOutput) String() string {
5175	return awsutil.Prettify(s)
5176}
5177
5178// GoString returns the string representation
5179func (s DeleteSecurityConfigurationOutput) GoString() string {
5180	return s.String()
5181}
5182
5183// This input determines which cluster to describe.
5184type DescribeClusterInput struct {
5185	_ struct{} `type:"structure"`
5186
5187	// The identifier of the cluster to describe.
5188	//
5189	// ClusterId is a required field
5190	ClusterId *string `type:"string" required:"true"`
5191}
5192
5193// String returns the string representation
5194func (s DescribeClusterInput) String() string {
5195	return awsutil.Prettify(s)
5196}
5197
5198// GoString returns the string representation
5199func (s DescribeClusterInput) GoString() string {
5200	return s.String()
5201}
5202
5203// Validate inspects the fields of the type to determine if they are valid.
5204func (s *DescribeClusterInput) Validate() error {
5205	invalidParams := request.ErrInvalidParams{Context: "DescribeClusterInput"}
5206	if s.ClusterId == nil {
5207		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
5208	}
5209
5210	if invalidParams.Len() > 0 {
5211		return invalidParams
5212	}
5213	return nil
5214}
5215
5216// SetClusterId sets the ClusterId field's value.
5217func (s *DescribeClusterInput) SetClusterId(v string) *DescribeClusterInput {
5218	s.ClusterId = &v
5219	return s
5220}
5221
5222// This output contains the description of the cluster.
5223type DescribeClusterOutput struct {
5224	_ struct{} `type:"structure"`
5225
5226	// This output contains the details for the requested cluster.
5227	Cluster *Cluster `type:"structure"`
5228}
5229
5230// String returns the string representation
5231func (s DescribeClusterOutput) String() string {
5232	return awsutil.Prettify(s)
5233}
5234
5235// GoString returns the string representation
5236func (s DescribeClusterOutput) GoString() string {
5237	return s.String()
5238}
5239
5240// SetCluster sets the Cluster field's value.
5241func (s *DescribeClusterOutput) SetCluster(v *Cluster) *DescribeClusterOutput {
5242	s.Cluster = v
5243	return s
5244}
5245
5246// The input for the DescribeJobFlows operation.
5247type DescribeJobFlowsInput struct {
5248	_ struct{} `type:"structure"`
5249
5250	// Return only job flows created after this date and time.
5251	CreatedAfter *time.Time `type:"timestamp"`
5252
5253	// Return only job flows created before this date and time.
5254	CreatedBefore *time.Time `type:"timestamp"`
5255
5256	// Return only job flows whose job flow ID is contained in this list.
5257	JobFlowIds []*string `type:"list"`
5258
5259	// Return only job flows whose state is contained in this list.
5260	JobFlowStates []*string `type:"list"`
5261}
5262
5263// String returns the string representation
5264func (s DescribeJobFlowsInput) String() string {
5265	return awsutil.Prettify(s)
5266}
5267
5268// GoString returns the string representation
5269func (s DescribeJobFlowsInput) GoString() string {
5270	return s.String()
5271}
5272
5273// SetCreatedAfter sets the CreatedAfter field's value.
5274func (s *DescribeJobFlowsInput) SetCreatedAfter(v time.Time) *DescribeJobFlowsInput {
5275	s.CreatedAfter = &v
5276	return s
5277}
5278
5279// SetCreatedBefore sets the CreatedBefore field's value.
5280func (s *DescribeJobFlowsInput) SetCreatedBefore(v time.Time) *DescribeJobFlowsInput {
5281	s.CreatedBefore = &v
5282	return s
5283}
5284
5285// SetJobFlowIds sets the JobFlowIds field's value.
5286func (s *DescribeJobFlowsInput) SetJobFlowIds(v []*string) *DescribeJobFlowsInput {
5287	s.JobFlowIds = v
5288	return s
5289}
5290
5291// SetJobFlowStates sets the JobFlowStates field's value.
5292func (s *DescribeJobFlowsInput) SetJobFlowStates(v []*string) *DescribeJobFlowsInput {
5293	s.JobFlowStates = v
5294	return s
5295}
5296
5297// The output for the DescribeJobFlows operation.
5298type DescribeJobFlowsOutput struct {
5299	_ struct{} `type:"structure"`
5300
5301	// A list of job flows matching the parameters supplied.
5302	JobFlows []*JobFlowDetail `type:"list"`
5303}
5304
5305// String returns the string representation
5306func (s DescribeJobFlowsOutput) String() string {
5307	return awsutil.Prettify(s)
5308}
5309
5310// GoString returns the string representation
5311func (s DescribeJobFlowsOutput) GoString() string {
5312	return s.String()
5313}
5314
5315// SetJobFlows sets the JobFlows field's value.
5316func (s *DescribeJobFlowsOutput) SetJobFlows(v []*JobFlowDetail) *DescribeJobFlowsOutput {
5317	s.JobFlows = v
5318	return s
5319}
5320
5321type DescribeSecurityConfigurationInput struct {
5322	_ struct{} `type:"structure"`
5323
5324	// The name of the security configuration.
5325	//
5326	// Name is a required field
5327	Name *string `type:"string" required:"true"`
5328}
5329
5330// String returns the string representation
5331func (s DescribeSecurityConfigurationInput) String() string {
5332	return awsutil.Prettify(s)
5333}
5334
5335// GoString returns the string representation
5336func (s DescribeSecurityConfigurationInput) GoString() string {
5337	return s.String()
5338}
5339
5340// Validate inspects the fields of the type to determine if they are valid.
5341func (s *DescribeSecurityConfigurationInput) Validate() error {
5342	invalidParams := request.ErrInvalidParams{Context: "DescribeSecurityConfigurationInput"}
5343	if s.Name == nil {
5344		invalidParams.Add(request.NewErrParamRequired("Name"))
5345	}
5346
5347	if invalidParams.Len() > 0 {
5348		return invalidParams
5349	}
5350	return nil
5351}
5352
5353// SetName sets the Name field's value.
5354func (s *DescribeSecurityConfigurationInput) SetName(v string) *DescribeSecurityConfigurationInput {
5355	s.Name = &v
5356	return s
5357}
5358
5359type DescribeSecurityConfigurationOutput struct {
5360	_ struct{} `type:"structure"`
5361
5362	// The date and time the security configuration was created
5363	CreationDateTime *time.Time `type:"timestamp"`
5364
5365	// The name of the security configuration.
5366	Name *string `type:"string"`
5367
5368	// The security configuration details in JSON format.
5369	SecurityConfiguration *string `type:"string"`
5370}
5371
5372// String returns the string representation
5373func (s DescribeSecurityConfigurationOutput) String() string {
5374	return awsutil.Prettify(s)
5375}
5376
5377// GoString returns the string representation
5378func (s DescribeSecurityConfigurationOutput) GoString() string {
5379	return s.String()
5380}
5381
5382// SetCreationDateTime sets the CreationDateTime field's value.
5383func (s *DescribeSecurityConfigurationOutput) SetCreationDateTime(v time.Time) *DescribeSecurityConfigurationOutput {
5384	s.CreationDateTime = &v
5385	return s
5386}
5387
5388// SetName sets the Name field's value.
5389func (s *DescribeSecurityConfigurationOutput) SetName(v string) *DescribeSecurityConfigurationOutput {
5390	s.Name = &v
5391	return s
5392}
5393
5394// SetSecurityConfiguration sets the SecurityConfiguration field's value.
5395func (s *DescribeSecurityConfigurationOutput) SetSecurityConfiguration(v string) *DescribeSecurityConfigurationOutput {
5396	s.SecurityConfiguration = &v
5397	return s
5398}
5399
5400// This input determines which step to describe.
5401type DescribeStepInput struct {
5402	_ struct{} `type:"structure"`
5403
5404	// The identifier of the cluster with steps to describe.
5405	//
5406	// ClusterId is a required field
5407	ClusterId *string `type:"string" required:"true"`
5408
5409	// The identifier of the step to describe.
5410	//
5411	// StepId is a required field
5412	StepId *string `type:"string" required:"true"`
5413}
5414
5415// String returns the string representation
5416func (s DescribeStepInput) String() string {
5417	return awsutil.Prettify(s)
5418}
5419
5420// GoString returns the string representation
5421func (s DescribeStepInput) GoString() string {
5422	return s.String()
5423}
5424
5425// Validate inspects the fields of the type to determine if they are valid.
5426func (s *DescribeStepInput) Validate() error {
5427	invalidParams := request.ErrInvalidParams{Context: "DescribeStepInput"}
5428	if s.ClusterId == nil {
5429		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
5430	}
5431	if s.StepId == nil {
5432		invalidParams.Add(request.NewErrParamRequired("StepId"))
5433	}
5434
5435	if invalidParams.Len() > 0 {
5436		return invalidParams
5437	}
5438	return nil
5439}
5440
5441// SetClusterId sets the ClusterId field's value.
5442func (s *DescribeStepInput) SetClusterId(v string) *DescribeStepInput {
5443	s.ClusterId = &v
5444	return s
5445}
5446
5447// SetStepId sets the StepId field's value.
5448func (s *DescribeStepInput) SetStepId(v string) *DescribeStepInput {
5449	s.StepId = &v
5450	return s
5451}
5452
5453// This output contains the description of the cluster step.
5454type DescribeStepOutput struct {
5455	_ struct{} `type:"structure"`
5456
5457	// The step details for the requested step identifier.
5458	Step *Step `type:"structure"`
5459}
5460
5461// String returns the string representation
5462func (s DescribeStepOutput) String() string {
5463	return awsutil.Prettify(s)
5464}
5465
5466// GoString returns the string representation
5467func (s DescribeStepOutput) GoString() string {
5468	return s.String()
5469}
5470
5471// SetStep sets the Step field's value.
5472func (s *DescribeStepOutput) SetStep(v *Step) *DescribeStepOutput {
5473	s.Step = v
5474	return s
5475}
5476
5477// Configuration of requested EBS block device associated with the instance
5478// group.
5479type EbsBlockDevice struct {
5480	_ struct{} `type:"structure"`
5481
5482	// The device name that is exposed to the instance, such as /dev/sdh.
5483	Device *string `type:"string"`
5484
5485	// EBS volume specifications such as volume type, IOPS, and size (GiB) that
5486	// will be requested for the EBS volume attached to an EC2 instance in the cluster.
5487	VolumeSpecification *VolumeSpecification `type:"structure"`
5488}
5489
5490// String returns the string representation
5491func (s EbsBlockDevice) String() string {
5492	return awsutil.Prettify(s)
5493}
5494
5495// GoString returns the string representation
5496func (s EbsBlockDevice) GoString() string {
5497	return s.String()
5498}
5499
5500// SetDevice sets the Device field's value.
5501func (s *EbsBlockDevice) SetDevice(v string) *EbsBlockDevice {
5502	s.Device = &v
5503	return s
5504}
5505
5506// SetVolumeSpecification sets the VolumeSpecification field's value.
5507func (s *EbsBlockDevice) SetVolumeSpecification(v *VolumeSpecification) *EbsBlockDevice {
5508	s.VolumeSpecification = v
5509	return s
5510}
5511
5512// Configuration of requested EBS block device associated with the instance
5513// group with count of volumes that will be associated to every instance.
5514type EbsBlockDeviceConfig struct {
5515	_ struct{} `type:"structure"`
5516
5517	// EBS volume specifications such as volume type, IOPS, and size (GiB) that
5518	// will be requested for the EBS volume attached to an EC2 instance in the cluster.
5519	//
5520	// VolumeSpecification is a required field
5521	VolumeSpecification *VolumeSpecification `type:"structure" required:"true"`
5522
5523	// Number of EBS volumes with a specific volume configuration that will be associated
5524	// with every instance in the instance group
5525	VolumesPerInstance *int64 `type:"integer"`
5526}
5527
5528// String returns the string representation
5529func (s EbsBlockDeviceConfig) String() string {
5530	return awsutil.Prettify(s)
5531}
5532
5533// GoString returns the string representation
5534func (s EbsBlockDeviceConfig) GoString() string {
5535	return s.String()
5536}
5537
5538// Validate inspects the fields of the type to determine if they are valid.
5539func (s *EbsBlockDeviceConfig) Validate() error {
5540	invalidParams := request.ErrInvalidParams{Context: "EbsBlockDeviceConfig"}
5541	if s.VolumeSpecification == nil {
5542		invalidParams.Add(request.NewErrParamRequired("VolumeSpecification"))
5543	}
5544	if s.VolumeSpecification != nil {
5545		if err := s.VolumeSpecification.Validate(); err != nil {
5546			invalidParams.AddNested("VolumeSpecification", err.(request.ErrInvalidParams))
5547		}
5548	}
5549
5550	if invalidParams.Len() > 0 {
5551		return invalidParams
5552	}
5553	return nil
5554}
5555
5556// SetVolumeSpecification sets the VolumeSpecification field's value.
5557func (s *EbsBlockDeviceConfig) SetVolumeSpecification(v *VolumeSpecification) *EbsBlockDeviceConfig {
5558	s.VolumeSpecification = v
5559	return s
5560}
5561
5562// SetVolumesPerInstance sets the VolumesPerInstance field's value.
5563func (s *EbsBlockDeviceConfig) SetVolumesPerInstance(v int64) *EbsBlockDeviceConfig {
5564	s.VolumesPerInstance = &v
5565	return s
5566}
5567
5568// The Amazon EBS configuration of a cluster instance.
5569type EbsConfiguration struct {
5570	_ struct{} `type:"structure"`
5571
5572	// An array of Amazon EBS volume specifications attached to a cluster instance.
5573	EbsBlockDeviceConfigs []*EbsBlockDeviceConfig `type:"list"`
5574
5575	// Indicates whether an Amazon EBS volume is EBS-optimized.
5576	EbsOptimized *bool `type:"boolean"`
5577}
5578
5579// String returns the string representation
5580func (s EbsConfiguration) String() string {
5581	return awsutil.Prettify(s)
5582}
5583
5584// GoString returns the string representation
5585func (s EbsConfiguration) GoString() string {
5586	return s.String()
5587}
5588
5589// Validate inspects the fields of the type to determine if they are valid.
5590func (s *EbsConfiguration) Validate() error {
5591	invalidParams := request.ErrInvalidParams{Context: "EbsConfiguration"}
5592	if s.EbsBlockDeviceConfigs != nil {
5593		for i, v := range s.EbsBlockDeviceConfigs {
5594			if v == nil {
5595				continue
5596			}
5597			if err := v.Validate(); err != nil {
5598				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "EbsBlockDeviceConfigs", i), err.(request.ErrInvalidParams))
5599			}
5600		}
5601	}
5602
5603	if invalidParams.Len() > 0 {
5604		return invalidParams
5605	}
5606	return nil
5607}
5608
5609// SetEbsBlockDeviceConfigs sets the EbsBlockDeviceConfigs field's value.
5610func (s *EbsConfiguration) SetEbsBlockDeviceConfigs(v []*EbsBlockDeviceConfig) *EbsConfiguration {
5611	s.EbsBlockDeviceConfigs = v
5612	return s
5613}
5614
5615// SetEbsOptimized sets the EbsOptimized field's value.
5616func (s *EbsConfiguration) SetEbsOptimized(v bool) *EbsConfiguration {
5617	s.EbsOptimized = &v
5618	return s
5619}
5620
5621// EBS block device that's attached to an EC2 instance.
5622type EbsVolume struct {
5623	_ struct{} `type:"structure"`
5624
5625	// The device name that is exposed to the instance, such as /dev/sdh.
5626	Device *string `type:"string"`
5627
5628	// The volume identifier of the EBS volume.
5629	VolumeId *string `type:"string"`
5630}
5631
5632// String returns the string representation
5633func (s EbsVolume) String() string {
5634	return awsutil.Prettify(s)
5635}
5636
5637// GoString returns the string representation
5638func (s EbsVolume) GoString() string {
5639	return s.String()
5640}
5641
5642// SetDevice sets the Device field's value.
5643func (s *EbsVolume) SetDevice(v string) *EbsVolume {
5644	s.Device = &v
5645	return s
5646}
5647
5648// SetVolumeId sets the VolumeId field's value.
5649func (s *EbsVolume) SetVolumeId(v string) *EbsVolume {
5650	s.VolumeId = &v
5651	return s
5652}
5653
5654// Provides information about the EC2 instances in a cluster grouped by category.
5655// For example, key name, subnet ID, IAM instance profile, and so on.
5656type Ec2InstanceAttributes struct {
5657	_ struct{} `type:"structure"`
5658
5659	// A list of additional Amazon EC2 security group IDs for the master node.
5660	AdditionalMasterSecurityGroups []*string `type:"list"`
5661
5662	// A list of additional Amazon EC2 security group IDs for the core and task
5663	// nodes.
5664	AdditionalSlaveSecurityGroups []*string `type:"list"`
5665
5666	// The Availability Zone in which the cluster will run.
5667	Ec2AvailabilityZone *string `type:"string"`
5668
5669	// The name of the Amazon EC2 key pair to use when connecting with SSH into
5670	// the master node as a user named "hadoop".
5671	Ec2KeyName *string `type:"string"`
5672
5673	// Set this parameter to the identifier of the Amazon VPC subnet where you want
5674	// the cluster to launch. If you do not specify this value, and your account
5675	// supports EC2-Classic, the cluster launches in EC2-Classic.
5676	Ec2SubnetId *string `type:"string"`
5677
5678	// The identifier of the Amazon EC2 security group for the master node.
5679	EmrManagedMasterSecurityGroup *string `type:"string"`
5680
5681	// The identifier of the Amazon EC2 security group for the core and task nodes.
5682	EmrManagedSlaveSecurityGroup *string `type:"string"`
5683
5684	// The IAM role that was specified when the cluster was launched. The EC2 instances
5685	// of the cluster assume this role.
5686	IamInstanceProfile *string `type:"string"`
5687
5688	// Applies to clusters configured with the instance fleets option. Specifies
5689	// one or more Availability Zones in which to launch EC2 cluster instances when
5690	// the EC2-Classic network configuration is supported. Amazon EMR chooses the
5691	// Availability Zone with the best fit from among the list of RequestedEc2AvailabilityZones,
5692	// and then launches all cluster instances within that Availability Zone. If
5693	// you do not specify this value, Amazon EMR chooses the Availability Zone for
5694	// you. RequestedEc2SubnetIDs and RequestedEc2AvailabilityZones cannot be specified
5695	// together.
5696	RequestedEc2AvailabilityZones []*string `type:"list"`
5697
5698	// Applies to clusters configured with the instance fleets option. Specifies
5699	// the unique identifier of one or more Amazon EC2 subnets in which to launch
5700	// EC2 cluster instances. Subnets must exist within the same VPC. Amazon EMR
5701	// chooses the EC2 subnet with the best fit from among the list of RequestedEc2SubnetIds,
5702	// and then launches all cluster instances within that Subnet. If this value
5703	// is not specified, and the account and Region support EC2-Classic networks,
5704	// the cluster launches instances in the EC2-Classic network and uses RequestedEc2AvailabilityZones
5705	// instead of this setting. If EC2-Classic is not supported, and no Subnet is
5706	// specified, Amazon EMR chooses the subnet for you. RequestedEc2SubnetIDs and
5707	// RequestedEc2AvailabilityZones cannot be specified together.
5708	RequestedEc2SubnetIds []*string `type:"list"`
5709
5710	// The identifier of the Amazon EC2 security group for the Amazon EMR service
5711	// to access clusters in VPC private subnets.
5712	ServiceAccessSecurityGroup *string `type:"string"`
5713}
5714
5715// String returns the string representation
5716func (s Ec2InstanceAttributes) String() string {
5717	return awsutil.Prettify(s)
5718}
5719
5720// GoString returns the string representation
5721func (s Ec2InstanceAttributes) GoString() string {
5722	return s.String()
5723}
5724
5725// SetAdditionalMasterSecurityGroups sets the AdditionalMasterSecurityGroups field's value.
5726func (s *Ec2InstanceAttributes) SetAdditionalMasterSecurityGroups(v []*string) *Ec2InstanceAttributes {
5727	s.AdditionalMasterSecurityGroups = v
5728	return s
5729}
5730
5731// SetAdditionalSlaveSecurityGroups sets the AdditionalSlaveSecurityGroups field's value.
5732func (s *Ec2InstanceAttributes) SetAdditionalSlaveSecurityGroups(v []*string) *Ec2InstanceAttributes {
5733	s.AdditionalSlaveSecurityGroups = v
5734	return s
5735}
5736
5737// SetEc2AvailabilityZone sets the Ec2AvailabilityZone field's value.
5738func (s *Ec2InstanceAttributes) SetEc2AvailabilityZone(v string) *Ec2InstanceAttributes {
5739	s.Ec2AvailabilityZone = &v
5740	return s
5741}
5742
5743// SetEc2KeyName sets the Ec2KeyName field's value.
5744func (s *Ec2InstanceAttributes) SetEc2KeyName(v string) *Ec2InstanceAttributes {
5745	s.Ec2KeyName = &v
5746	return s
5747}
5748
5749// SetEc2SubnetId sets the Ec2SubnetId field's value.
5750func (s *Ec2InstanceAttributes) SetEc2SubnetId(v string) *Ec2InstanceAttributes {
5751	s.Ec2SubnetId = &v
5752	return s
5753}
5754
5755// SetEmrManagedMasterSecurityGroup sets the EmrManagedMasterSecurityGroup field's value.
5756func (s *Ec2InstanceAttributes) SetEmrManagedMasterSecurityGroup(v string) *Ec2InstanceAttributes {
5757	s.EmrManagedMasterSecurityGroup = &v
5758	return s
5759}
5760
5761// SetEmrManagedSlaveSecurityGroup sets the EmrManagedSlaveSecurityGroup field's value.
5762func (s *Ec2InstanceAttributes) SetEmrManagedSlaveSecurityGroup(v string) *Ec2InstanceAttributes {
5763	s.EmrManagedSlaveSecurityGroup = &v
5764	return s
5765}
5766
5767// SetIamInstanceProfile sets the IamInstanceProfile field's value.
5768func (s *Ec2InstanceAttributes) SetIamInstanceProfile(v string) *Ec2InstanceAttributes {
5769	s.IamInstanceProfile = &v
5770	return s
5771}
5772
5773// SetRequestedEc2AvailabilityZones sets the RequestedEc2AvailabilityZones field's value.
5774func (s *Ec2InstanceAttributes) SetRequestedEc2AvailabilityZones(v []*string) *Ec2InstanceAttributes {
5775	s.RequestedEc2AvailabilityZones = v
5776	return s
5777}
5778
5779// SetRequestedEc2SubnetIds sets the RequestedEc2SubnetIds field's value.
5780func (s *Ec2InstanceAttributes) SetRequestedEc2SubnetIds(v []*string) *Ec2InstanceAttributes {
5781	s.RequestedEc2SubnetIds = v
5782	return s
5783}
5784
5785// SetServiceAccessSecurityGroup sets the ServiceAccessSecurityGroup field's value.
5786func (s *Ec2InstanceAttributes) SetServiceAccessSecurityGroup(v string) *Ec2InstanceAttributes {
5787	s.ServiceAccessSecurityGroup = &v
5788	return s
5789}
5790
5791// The details of the step failure. The service attempts to detect the root
5792// cause for many common failures.
5793type FailureDetails struct {
5794	_ struct{} `type:"structure"`
5795
5796	// The path to the log file where the step failure root cause was originally
5797	// recorded.
5798	LogFile *string `type:"string"`
5799
5800	// The descriptive message including the error the EMR service has identified
5801	// as the cause of step failure. This is text from an error log that describes
5802	// the root cause of the failure.
5803	Message *string `type:"string"`
5804
5805	// The reason for the step failure. In the case where the service cannot successfully
5806	// determine the root cause of the failure, it returns "Unknown Error" as a
5807	// reason.
5808	Reason *string `type:"string"`
5809}
5810
5811// String returns the string representation
5812func (s FailureDetails) String() string {
5813	return awsutil.Prettify(s)
5814}
5815
5816// GoString returns the string representation
5817func (s FailureDetails) GoString() string {
5818	return s.String()
5819}
5820
5821// SetLogFile sets the LogFile field's value.
5822func (s *FailureDetails) SetLogFile(v string) *FailureDetails {
5823	s.LogFile = &v
5824	return s
5825}
5826
5827// SetMessage sets the Message field's value.
5828func (s *FailureDetails) SetMessage(v string) *FailureDetails {
5829	s.Message = &v
5830	return s
5831}
5832
5833// SetReason sets the Reason field's value.
5834func (s *FailureDetails) SetReason(v string) *FailureDetails {
5835	s.Reason = &v
5836	return s
5837}
5838
5839type GetBlockPublicAccessConfigurationInput struct {
5840	_ struct{} `type:"structure"`
5841}
5842
5843// String returns the string representation
5844func (s GetBlockPublicAccessConfigurationInput) String() string {
5845	return awsutil.Prettify(s)
5846}
5847
5848// GoString returns the string representation
5849func (s GetBlockPublicAccessConfigurationInput) GoString() string {
5850	return s.String()
5851}
5852
5853type GetBlockPublicAccessConfigurationOutput struct {
5854	_ struct{} `type:"structure"`
5855
5856	// A configuration for Amazon EMR block public access. The configuration applies
5857	// to all clusters created in your account for the current Region. The configuration
5858	// specifies whether block public access is enabled. If block public access
5859	// is enabled, security groups associated with the cluster cannot have rules
5860	// that allow inbound traffic from 0.0.0.0/0 or ::/0 on a port, unless the port
5861	// is specified as an exception using PermittedPublicSecurityGroupRuleRanges
5862	// in the BlockPublicAccessConfiguration. By default, Port 22 (SSH) is an exception,
5863	// and public access is allowed on this port. You can change this by updating
5864	// the block public access configuration to remove the exception.
5865	//
5866	// For accounts that created clusters in a Region before November 25, 2019,
5867	// block public access is disabled by default in that Region. To use this feature,
5868	// you must manually enable and configure it. For accounts that did not create
5869	// an EMR cluster in a Region before this date, block public access is enabled
5870	// by default in that Region.
5871	//
5872	// BlockPublicAccessConfiguration is a required field
5873	BlockPublicAccessConfiguration *BlockPublicAccessConfiguration `type:"structure" required:"true"`
5874
5875	// Properties that describe the AWS principal that created the BlockPublicAccessConfiguration
5876	// using the PutBlockPublicAccessConfiguration action as well as the date and
5877	// time that the configuration was created. Each time a configuration for block
5878	// public access is updated, Amazon EMR updates this metadata.
5879	//
5880	// BlockPublicAccessConfigurationMetadata is a required field
5881	BlockPublicAccessConfigurationMetadata *BlockPublicAccessConfigurationMetadata `type:"structure" required:"true"`
5882}
5883
5884// String returns the string representation
5885func (s GetBlockPublicAccessConfigurationOutput) String() string {
5886	return awsutil.Prettify(s)
5887}
5888
5889// GoString returns the string representation
5890func (s GetBlockPublicAccessConfigurationOutput) GoString() string {
5891	return s.String()
5892}
5893
5894// SetBlockPublicAccessConfiguration sets the BlockPublicAccessConfiguration field's value.
5895func (s *GetBlockPublicAccessConfigurationOutput) SetBlockPublicAccessConfiguration(v *BlockPublicAccessConfiguration) *GetBlockPublicAccessConfigurationOutput {
5896	s.BlockPublicAccessConfiguration = v
5897	return s
5898}
5899
5900// SetBlockPublicAccessConfigurationMetadata sets the BlockPublicAccessConfigurationMetadata field's value.
5901func (s *GetBlockPublicAccessConfigurationOutput) SetBlockPublicAccessConfigurationMetadata(v *BlockPublicAccessConfigurationMetadata) *GetBlockPublicAccessConfigurationOutput {
5902	s.BlockPublicAccessConfigurationMetadata = v
5903	return s
5904}
5905
5906type GetManagedScalingPolicyInput struct {
5907	_ struct{} `type:"structure"`
5908
5909	// Specifies the ID of the cluster for which the managed scaling policy will
5910	// be fetched.
5911	//
5912	// ClusterId is a required field
5913	ClusterId *string `type:"string" required:"true"`
5914}
5915
5916// String returns the string representation
5917func (s GetManagedScalingPolicyInput) String() string {
5918	return awsutil.Prettify(s)
5919}
5920
5921// GoString returns the string representation
5922func (s GetManagedScalingPolicyInput) GoString() string {
5923	return s.String()
5924}
5925
5926// Validate inspects the fields of the type to determine if they are valid.
5927func (s *GetManagedScalingPolicyInput) Validate() error {
5928	invalidParams := request.ErrInvalidParams{Context: "GetManagedScalingPolicyInput"}
5929	if s.ClusterId == nil {
5930		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
5931	}
5932
5933	if invalidParams.Len() > 0 {
5934		return invalidParams
5935	}
5936	return nil
5937}
5938
5939// SetClusterId sets the ClusterId field's value.
5940func (s *GetManagedScalingPolicyInput) SetClusterId(v string) *GetManagedScalingPolicyInput {
5941	s.ClusterId = &v
5942	return s
5943}
5944
5945type GetManagedScalingPolicyOutput struct {
5946	_ struct{} `type:"structure"`
5947
5948	// Specifies the managed scaling policy that is attached to an Amazon EMR cluster.
5949	ManagedScalingPolicy *ManagedScalingPolicy `type:"structure"`
5950}
5951
5952// String returns the string representation
5953func (s GetManagedScalingPolicyOutput) String() string {
5954	return awsutil.Prettify(s)
5955}
5956
5957// GoString returns the string representation
5958func (s GetManagedScalingPolicyOutput) GoString() string {
5959	return s.String()
5960}
5961
5962// SetManagedScalingPolicy sets the ManagedScalingPolicy field's value.
5963func (s *GetManagedScalingPolicyOutput) SetManagedScalingPolicy(v *ManagedScalingPolicy) *GetManagedScalingPolicyOutput {
5964	s.ManagedScalingPolicy = v
5965	return s
5966}
5967
5968// A job flow step consisting of a JAR file whose main function will be executed.
5969// The main function submits a job for Hadoop to execute and waits for the job
5970// to finish or fail.
5971type HadoopJarStepConfig struct {
5972	_ struct{} `type:"structure"`
5973
5974	// A list of command line arguments passed to the JAR file's main function when
5975	// executed.
5976	Args []*string `type:"list"`
5977
5978	// A path to a JAR file run during the step.
5979	//
5980	// Jar is a required field
5981	Jar *string `type:"string" required:"true"`
5982
5983	// The name of the main class in the specified Java file. If not specified,
5984	// the JAR file should specify a Main-Class in its manifest file.
5985	MainClass *string `type:"string"`
5986
5987	// A list of Java properties that are set when the step runs. You can use these
5988	// properties to pass key value pairs to your main function.
5989	Properties []*KeyValue `type:"list"`
5990}
5991
5992// String returns the string representation
5993func (s HadoopJarStepConfig) String() string {
5994	return awsutil.Prettify(s)
5995}
5996
5997// GoString returns the string representation
5998func (s HadoopJarStepConfig) GoString() string {
5999	return s.String()
6000}
6001
6002// Validate inspects the fields of the type to determine if they are valid.
6003func (s *HadoopJarStepConfig) Validate() error {
6004	invalidParams := request.ErrInvalidParams{Context: "HadoopJarStepConfig"}
6005	if s.Jar == nil {
6006		invalidParams.Add(request.NewErrParamRequired("Jar"))
6007	}
6008
6009	if invalidParams.Len() > 0 {
6010		return invalidParams
6011	}
6012	return nil
6013}
6014
6015// SetArgs sets the Args field's value.
6016func (s *HadoopJarStepConfig) SetArgs(v []*string) *HadoopJarStepConfig {
6017	s.Args = v
6018	return s
6019}
6020
6021// SetJar sets the Jar field's value.
6022func (s *HadoopJarStepConfig) SetJar(v string) *HadoopJarStepConfig {
6023	s.Jar = &v
6024	return s
6025}
6026
6027// SetMainClass sets the MainClass field's value.
6028func (s *HadoopJarStepConfig) SetMainClass(v string) *HadoopJarStepConfig {
6029	s.MainClass = &v
6030	return s
6031}
6032
6033// SetProperties sets the Properties field's value.
6034func (s *HadoopJarStepConfig) SetProperties(v []*KeyValue) *HadoopJarStepConfig {
6035	s.Properties = v
6036	return s
6037}
6038
6039// A cluster step consisting of a JAR file whose main function will be executed.
6040// The main function submits a job for Hadoop to execute and waits for the job
6041// to finish or fail.
6042type HadoopStepConfig struct {
6043	_ struct{} `type:"structure"`
6044
6045	// The list of command line arguments to pass to the JAR file's main function
6046	// for execution.
6047	Args []*string `type:"list"`
6048
6049	// The path to the JAR file that runs during the step.
6050	Jar *string `type:"string"`
6051
6052	// The name of the main class in the specified Java file. If not specified,
6053	// the JAR file should specify a main class in its manifest file.
6054	MainClass *string `type:"string"`
6055
6056	// The list of Java properties that are set when the step runs. You can use
6057	// these properties to pass key value pairs to your main function.
6058	Properties map[string]*string `type:"map"`
6059}
6060
6061// String returns the string representation
6062func (s HadoopStepConfig) String() string {
6063	return awsutil.Prettify(s)
6064}
6065
6066// GoString returns the string representation
6067func (s HadoopStepConfig) GoString() string {
6068	return s.String()
6069}
6070
6071// SetArgs sets the Args field's value.
6072func (s *HadoopStepConfig) SetArgs(v []*string) *HadoopStepConfig {
6073	s.Args = v
6074	return s
6075}
6076
6077// SetJar sets the Jar field's value.
6078func (s *HadoopStepConfig) SetJar(v string) *HadoopStepConfig {
6079	s.Jar = &v
6080	return s
6081}
6082
6083// SetMainClass sets the MainClass field's value.
6084func (s *HadoopStepConfig) SetMainClass(v string) *HadoopStepConfig {
6085	s.MainClass = &v
6086	return s
6087}
6088
6089// SetProperties sets the Properties field's value.
6090func (s *HadoopStepConfig) SetProperties(v map[string]*string) *HadoopStepConfig {
6091	s.Properties = v
6092	return s
6093}
6094
6095// Represents an EC2 instance provisioned as part of cluster.
6096type Instance struct {
6097	_ struct{} `type:"structure"`
6098
6099	// The list of EBS volumes that are attached to this instance.
6100	EbsVolumes []*EbsVolume `type:"list"`
6101
6102	// The unique identifier of the instance in Amazon EC2.
6103	Ec2InstanceId *string `type:"string"`
6104
6105	// The unique identifier for the instance in Amazon EMR.
6106	Id *string `type:"string"`
6107
6108	// The unique identifier of the instance fleet to which an EC2 instance belongs.
6109	InstanceFleetId *string `type:"string"`
6110
6111	// The identifier of the instance group to which this instance belongs.
6112	InstanceGroupId *string `type:"string"`
6113
6114	// The EC2 instance type, for example m3.xlarge.
6115	InstanceType *string `min:"1" type:"string"`
6116
6117	// The instance purchasing option. Valid values are ON_DEMAND or SPOT.
6118	Market *string `type:"string" enum:"MarketType"`
6119
6120	// The private DNS name of the instance.
6121	PrivateDnsName *string `type:"string"`
6122
6123	// The private IP address of the instance.
6124	PrivateIpAddress *string `type:"string"`
6125
6126	// The public DNS name of the instance.
6127	PublicDnsName *string `type:"string"`
6128
6129	// The public IP address of the instance.
6130	PublicIpAddress *string `type:"string"`
6131
6132	// The current status of the instance.
6133	Status *InstanceStatus `type:"structure"`
6134}
6135
6136// String returns the string representation
6137func (s Instance) String() string {
6138	return awsutil.Prettify(s)
6139}
6140
6141// GoString returns the string representation
6142func (s Instance) GoString() string {
6143	return s.String()
6144}
6145
6146// SetEbsVolumes sets the EbsVolumes field's value.
6147func (s *Instance) SetEbsVolumes(v []*EbsVolume) *Instance {
6148	s.EbsVolumes = v
6149	return s
6150}
6151
6152// SetEc2InstanceId sets the Ec2InstanceId field's value.
6153func (s *Instance) SetEc2InstanceId(v string) *Instance {
6154	s.Ec2InstanceId = &v
6155	return s
6156}
6157
6158// SetId sets the Id field's value.
6159func (s *Instance) SetId(v string) *Instance {
6160	s.Id = &v
6161	return s
6162}
6163
6164// SetInstanceFleetId sets the InstanceFleetId field's value.
6165func (s *Instance) SetInstanceFleetId(v string) *Instance {
6166	s.InstanceFleetId = &v
6167	return s
6168}
6169
6170// SetInstanceGroupId sets the InstanceGroupId field's value.
6171func (s *Instance) SetInstanceGroupId(v string) *Instance {
6172	s.InstanceGroupId = &v
6173	return s
6174}
6175
6176// SetInstanceType sets the InstanceType field's value.
6177func (s *Instance) SetInstanceType(v string) *Instance {
6178	s.InstanceType = &v
6179	return s
6180}
6181
6182// SetMarket sets the Market field's value.
6183func (s *Instance) SetMarket(v string) *Instance {
6184	s.Market = &v
6185	return s
6186}
6187
6188// SetPrivateDnsName sets the PrivateDnsName field's value.
6189func (s *Instance) SetPrivateDnsName(v string) *Instance {
6190	s.PrivateDnsName = &v
6191	return s
6192}
6193
6194// SetPrivateIpAddress sets the PrivateIpAddress field's value.
6195func (s *Instance) SetPrivateIpAddress(v string) *Instance {
6196	s.PrivateIpAddress = &v
6197	return s
6198}
6199
6200// SetPublicDnsName sets the PublicDnsName field's value.
6201func (s *Instance) SetPublicDnsName(v string) *Instance {
6202	s.PublicDnsName = &v
6203	return s
6204}
6205
6206// SetPublicIpAddress sets the PublicIpAddress field's value.
6207func (s *Instance) SetPublicIpAddress(v string) *Instance {
6208	s.PublicIpAddress = &v
6209	return s
6210}
6211
6212// SetStatus sets the Status field's value.
6213func (s *Instance) SetStatus(v *InstanceStatus) *Instance {
6214	s.Status = v
6215	return s
6216}
6217
6218// Describes an instance fleet, which is a group of EC2 instances that host
6219// a particular node type (master, core, or task) in an Amazon EMR cluster.
6220// Instance fleets can consist of a mix of instance types and On-Demand and
6221// Spot instances, which are provisioned to meet a defined target capacity.
6222//
6223// The instance fleet configuration is available only in Amazon EMR versions
6224// 4.8.0 and later, excluding 5.0.x versions.
6225type InstanceFleet struct {
6226	_ struct{} `type:"structure"`
6227
6228	// The unique identifier of the instance fleet.
6229	Id *string `type:"string"`
6230
6231	// The node type that the instance fleet hosts. Valid values are MASTER, CORE,
6232	// or TASK.
6233	InstanceFleetType *string `type:"string" enum:"InstanceFleetType"`
6234
6235	// The specification for the instance types that comprise an instance fleet.
6236	// Up to five unique instance specifications may be defined for each instance
6237	// fleet.
6238	InstanceTypeSpecifications []*InstanceTypeSpecification `type:"list"`
6239
6240	// Describes the launch specification for an instance fleet.
6241	LaunchSpecifications *InstanceFleetProvisioningSpecifications `type:"structure"`
6242
6243	// A friendly name for the instance fleet.
6244	Name *string `type:"string"`
6245
6246	// The number of On-Demand units that have been provisioned for the instance
6247	// fleet to fulfill TargetOnDemandCapacity. This provisioned capacity might
6248	// be less than or greater than TargetOnDemandCapacity.
6249	ProvisionedOnDemandCapacity *int64 `type:"integer"`
6250
6251	// The number of Spot units that have been provisioned for this instance fleet
6252	// to fulfill TargetSpotCapacity. This provisioned capacity might be less than
6253	// or greater than TargetSpotCapacity.
6254	ProvisionedSpotCapacity *int64 `type:"integer"`
6255
6256	// The current status of the instance fleet.
6257	Status *InstanceFleetStatus `type:"structure"`
6258
6259	// The target capacity of On-Demand units for the instance fleet, which determines
6260	// how many On-Demand instances to provision. When the instance fleet launches,
6261	// Amazon EMR tries to provision On-Demand instances as specified by InstanceTypeConfig.
6262	// Each instance configuration has a specified WeightedCapacity. When an On-Demand
6263	// instance is provisioned, the WeightedCapacity units count toward the target
6264	// capacity. Amazon EMR provisions instances until the target capacity is totally
6265	// fulfilled, even if this results in an overage. For example, if there are
6266	// 2 units remaining to fulfill capacity, and Amazon EMR can only provision
6267	// an instance with a WeightedCapacity of 5 units, the instance is provisioned,
6268	// and the target capacity is exceeded by 3 units. You can use InstanceFleet$ProvisionedOnDemandCapacity
6269	// to determine the Spot capacity units that have been provisioned for the instance
6270	// fleet.
6271	//
6272	// If not specified or set to 0, only Spot instances are provisioned for the
6273	// instance fleet using TargetSpotCapacity. At least one of TargetSpotCapacity
6274	// and TargetOnDemandCapacity should be greater than 0. For a master instance
6275	// fleet, only one of TargetSpotCapacity and TargetOnDemandCapacity can be specified,
6276	// and its value must be 1.
6277	TargetOnDemandCapacity *int64 `type:"integer"`
6278
6279	// The target capacity of Spot units for the instance fleet, which determines
6280	// how many Spot instances to provision. When the instance fleet launches, Amazon
6281	// EMR tries to provision Spot instances as specified by InstanceTypeConfig.
6282	// Each instance configuration has a specified WeightedCapacity. When a Spot
6283	// instance is provisioned, the WeightedCapacity units count toward the target
6284	// capacity. Amazon EMR provisions instances until the target capacity is totally
6285	// fulfilled, even if this results in an overage. For example, if there are
6286	// 2 units remaining to fulfill capacity, and Amazon EMR can only provision
6287	// an instance with a WeightedCapacity of 5 units, the instance is provisioned,
6288	// and the target capacity is exceeded by 3 units. You can use InstanceFleet$ProvisionedSpotCapacity
6289	// to determine the Spot capacity units that have been provisioned for the instance
6290	// fleet.
6291	//
6292	// If not specified or set to 0, only On-Demand instances are provisioned for
6293	// the instance fleet. At least one of TargetSpotCapacity and TargetOnDemandCapacity
6294	// should be greater than 0. For a master instance fleet, only one of TargetSpotCapacity
6295	// and TargetOnDemandCapacity can be specified, and its value must be 1.
6296	TargetSpotCapacity *int64 `type:"integer"`
6297}
6298
6299// String returns the string representation
6300func (s InstanceFleet) String() string {
6301	return awsutil.Prettify(s)
6302}
6303
6304// GoString returns the string representation
6305func (s InstanceFleet) GoString() string {
6306	return s.String()
6307}
6308
6309// SetId sets the Id field's value.
6310func (s *InstanceFleet) SetId(v string) *InstanceFleet {
6311	s.Id = &v
6312	return s
6313}
6314
6315// SetInstanceFleetType sets the InstanceFleetType field's value.
6316func (s *InstanceFleet) SetInstanceFleetType(v string) *InstanceFleet {
6317	s.InstanceFleetType = &v
6318	return s
6319}
6320
6321// SetInstanceTypeSpecifications sets the InstanceTypeSpecifications field's value.
6322func (s *InstanceFleet) SetInstanceTypeSpecifications(v []*InstanceTypeSpecification) *InstanceFleet {
6323	s.InstanceTypeSpecifications = v
6324	return s
6325}
6326
6327// SetLaunchSpecifications sets the LaunchSpecifications field's value.
6328func (s *InstanceFleet) SetLaunchSpecifications(v *InstanceFleetProvisioningSpecifications) *InstanceFleet {
6329	s.LaunchSpecifications = v
6330	return s
6331}
6332
6333// SetName sets the Name field's value.
6334func (s *InstanceFleet) SetName(v string) *InstanceFleet {
6335	s.Name = &v
6336	return s
6337}
6338
6339// SetProvisionedOnDemandCapacity sets the ProvisionedOnDemandCapacity field's value.
6340func (s *InstanceFleet) SetProvisionedOnDemandCapacity(v int64) *InstanceFleet {
6341	s.ProvisionedOnDemandCapacity = &v
6342	return s
6343}
6344
6345// SetProvisionedSpotCapacity sets the ProvisionedSpotCapacity field's value.
6346func (s *InstanceFleet) SetProvisionedSpotCapacity(v int64) *InstanceFleet {
6347	s.ProvisionedSpotCapacity = &v
6348	return s
6349}
6350
6351// SetStatus sets the Status field's value.
6352func (s *InstanceFleet) SetStatus(v *InstanceFleetStatus) *InstanceFleet {
6353	s.Status = v
6354	return s
6355}
6356
6357// SetTargetOnDemandCapacity sets the TargetOnDemandCapacity field's value.
6358func (s *InstanceFleet) SetTargetOnDemandCapacity(v int64) *InstanceFleet {
6359	s.TargetOnDemandCapacity = &v
6360	return s
6361}
6362
6363// SetTargetSpotCapacity sets the TargetSpotCapacity field's value.
6364func (s *InstanceFleet) SetTargetSpotCapacity(v int64) *InstanceFleet {
6365	s.TargetSpotCapacity = &v
6366	return s
6367}
6368
6369// The configuration that defines an instance fleet.
6370//
6371// The instance fleet configuration is available only in Amazon EMR versions
6372// 4.8.0 and later, excluding 5.0.x versions.
6373type InstanceFleetConfig struct {
6374	_ struct{} `type:"structure"`
6375
6376	// The node type that the instance fleet hosts. Valid values are MASTER,CORE,and
6377	// TASK.
6378	//
6379	// InstanceFleetType is a required field
6380	InstanceFleetType *string `type:"string" required:"true" enum:"InstanceFleetType"`
6381
6382	// The instance type configurations that define the EC2 instances in the instance
6383	// fleet.
6384	InstanceTypeConfigs []*InstanceTypeConfig `type:"list"`
6385
6386	// The launch specification for the instance fleet.
6387	LaunchSpecifications *InstanceFleetProvisioningSpecifications `type:"structure"`
6388
6389	// The friendly name of the instance fleet.
6390	Name *string `type:"string"`
6391
6392	// The target capacity of On-Demand units for the instance fleet, which determines
6393	// how many On-Demand instances to provision. When the instance fleet launches,
6394	// Amazon EMR tries to provision On-Demand instances as specified by InstanceTypeConfig.
6395	// Each instance configuration has a specified WeightedCapacity. When an On-Demand
6396	// instance is provisioned, the WeightedCapacity units count toward the target
6397	// capacity. Amazon EMR provisions instances until the target capacity is totally
6398	// fulfilled, even if this results in an overage. For example, if there are
6399	// 2 units remaining to fulfill capacity, and Amazon EMR can only provision
6400	// an instance with a WeightedCapacity of 5 units, the instance is provisioned,
6401	// and the target capacity is exceeded by 3 units.
6402	//
6403	// If not specified or set to 0, only Spot instances are provisioned for the
6404	// instance fleet using TargetSpotCapacity. At least one of TargetSpotCapacity
6405	// and TargetOnDemandCapacity should be greater than 0. For a master instance
6406	// fleet, only one of TargetSpotCapacity and TargetOnDemandCapacity can be specified,
6407	// and its value must be 1.
6408	TargetOnDemandCapacity *int64 `type:"integer"`
6409
6410	// The target capacity of Spot units for the instance fleet, which determines
6411	// how many Spot instances to provision. When the instance fleet launches, Amazon
6412	// EMR tries to provision Spot instances as specified by InstanceTypeConfig.
6413	// Each instance configuration has a specified WeightedCapacity. When a Spot
6414	// instance is provisioned, the WeightedCapacity units count toward the target
6415	// capacity. Amazon EMR provisions instances until the target capacity is totally
6416	// fulfilled, even if this results in an overage. For example, if there are
6417	// 2 units remaining to fulfill capacity, and Amazon EMR can only provision
6418	// an instance with a WeightedCapacity of 5 units, the instance is provisioned,
6419	// and the target capacity is exceeded by 3 units.
6420	//
6421	// If not specified or set to 0, only On-Demand instances are provisioned for
6422	// the instance fleet. At least one of TargetSpotCapacity and TargetOnDemandCapacity
6423	// should be greater than 0. For a master instance fleet, only one of TargetSpotCapacity
6424	// and TargetOnDemandCapacity can be specified, and its value must be 1.
6425	TargetSpotCapacity *int64 `type:"integer"`
6426}
6427
6428// String returns the string representation
6429func (s InstanceFleetConfig) String() string {
6430	return awsutil.Prettify(s)
6431}
6432
6433// GoString returns the string representation
6434func (s InstanceFleetConfig) GoString() string {
6435	return s.String()
6436}
6437
6438// Validate inspects the fields of the type to determine if they are valid.
6439func (s *InstanceFleetConfig) Validate() error {
6440	invalidParams := request.ErrInvalidParams{Context: "InstanceFleetConfig"}
6441	if s.InstanceFleetType == nil {
6442		invalidParams.Add(request.NewErrParamRequired("InstanceFleetType"))
6443	}
6444	if s.InstanceTypeConfigs != nil {
6445		for i, v := range s.InstanceTypeConfigs {
6446			if v == nil {
6447				continue
6448			}
6449			if err := v.Validate(); err != nil {
6450				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "InstanceTypeConfigs", i), err.(request.ErrInvalidParams))
6451			}
6452		}
6453	}
6454	if s.LaunchSpecifications != nil {
6455		if err := s.LaunchSpecifications.Validate(); err != nil {
6456			invalidParams.AddNested("LaunchSpecifications", err.(request.ErrInvalidParams))
6457		}
6458	}
6459
6460	if invalidParams.Len() > 0 {
6461		return invalidParams
6462	}
6463	return nil
6464}
6465
6466// SetInstanceFleetType sets the InstanceFleetType field's value.
6467func (s *InstanceFleetConfig) SetInstanceFleetType(v string) *InstanceFleetConfig {
6468	s.InstanceFleetType = &v
6469	return s
6470}
6471
6472// SetInstanceTypeConfigs sets the InstanceTypeConfigs field's value.
6473func (s *InstanceFleetConfig) SetInstanceTypeConfigs(v []*InstanceTypeConfig) *InstanceFleetConfig {
6474	s.InstanceTypeConfigs = v
6475	return s
6476}
6477
6478// SetLaunchSpecifications sets the LaunchSpecifications field's value.
6479func (s *InstanceFleetConfig) SetLaunchSpecifications(v *InstanceFleetProvisioningSpecifications) *InstanceFleetConfig {
6480	s.LaunchSpecifications = v
6481	return s
6482}
6483
6484// SetName sets the Name field's value.
6485func (s *InstanceFleetConfig) SetName(v string) *InstanceFleetConfig {
6486	s.Name = &v
6487	return s
6488}
6489
6490// SetTargetOnDemandCapacity sets the TargetOnDemandCapacity field's value.
6491func (s *InstanceFleetConfig) SetTargetOnDemandCapacity(v int64) *InstanceFleetConfig {
6492	s.TargetOnDemandCapacity = &v
6493	return s
6494}
6495
6496// SetTargetSpotCapacity sets the TargetSpotCapacity field's value.
6497func (s *InstanceFleetConfig) SetTargetSpotCapacity(v int64) *InstanceFleetConfig {
6498	s.TargetSpotCapacity = &v
6499	return s
6500}
6501
6502// Configuration parameters for an instance fleet modification request.
6503//
6504// The instance fleet configuration is available only in Amazon EMR versions
6505// 4.8.0 and later, excluding 5.0.x versions.
6506type InstanceFleetModifyConfig struct {
6507	_ struct{} `type:"structure"`
6508
6509	// A unique identifier for the instance fleet.
6510	//
6511	// InstanceFleetId is a required field
6512	InstanceFleetId *string `type:"string" required:"true"`
6513
6514	// The target capacity of On-Demand units for the instance fleet. For more information
6515	// see InstanceFleetConfig$TargetOnDemandCapacity.
6516	TargetOnDemandCapacity *int64 `type:"integer"`
6517
6518	// The target capacity of Spot units for the instance fleet. For more information,
6519	// see InstanceFleetConfig$TargetSpotCapacity.
6520	TargetSpotCapacity *int64 `type:"integer"`
6521}
6522
6523// String returns the string representation
6524func (s InstanceFleetModifyConfig) String() string {
6525	return awsutil.Prettify(s)
6526}
6527
6528// GoString returns the string representation
6529func (s InstanceFleetModifyConfig) GoString() string {
6530	return s.String()
6531}
6532
6533// Validate inspects the fields of the type to determine if they are valid.
6534func (s *InstanceFleetModifyConfig) Validate() error {
6535	invalidParams := request.ErrInvalidParams{Context: "InstanceFleetModifyConfig"}
6536	if s.InstanceFleetId == nil {
6537		invalidParams.Add(request.NewErrParamRequired("InstanceFleetId"))
6538	}
6539
6540	if invalidParams.Len() > 0 {
6541		return invalidParams
6542	}
6543	return nil
6544}
6545
6546// SetInstanceFleetId sets the InstanceFleetId field's value.
6547func (s *InstanceFleetModifyConfig) SetInstanceFleetId(v string) *InstanceFleetModifyConfig {
6548	s.InstanceFleetId = &v
6549	return s
6550}
6551
6552// SetTargetOnDemandCapacity sets the TargetOnDemandCapacity field's value.
6553func (s *InstanceFleetModifyConfig) SetTargetOnDemandCapacity(v int64) *InstanceFleetModifyConfig {
6554	s.TargetOnDemandCapacity = &v
6555	return s
6556}
6557
6558// SetTargetSpotCapacity sets the TargetSpotCapacity field's value.
6559func (s *InstanceFleetModifyConfig) SetTargetSpotCapacity(v int64) *InstanceFleetModifyConfig {
6560	s.TargetSpotCapacity = &v
6561	return s
6562}
6563
6564// The launch specification for Spot instances in the fleet, which determines
6565// the defined duration, provisioning timeout behavior, and allocation strategy.
6566//
6567// The instance fleet configuration is available only in Amazon EMR versions
6568// 4.8.0 and later, excluding 5.0.x versions. On-Demand and Spot instance allocation
6569// strategies are available in Amazon EMR version 5.12.1 and later.
6570type InstanceFleetProvisioningSpecifications struct {
6571	_ struct{} `type:"structure"`
6572
6573	// The launch specification for On-Demand instances in the instance fleet, which
6574	// determines the allocation strategy.
6575	//
6576	// The instance fleet configuration is available only in Amazon EMR versions
6577	// 4.8.0 and later, excluding 5.0.x versions. On-Demand instances allocation
6578	// strategy is available in Amazon EMR version 5.12.1 and later.
6579	OnDemandSpecification *OnDemandProvisioningSpecification `type:"structure"`
6580
6581	// The launch specification for Spot instances in the fleet, which determines
6582	// the defined duration, provisioning timeout behavior, and allocation strategy.
6583	SpotSpecification *SpotProvisioningSpecification `type:"structure"`
6584}
6585
6586// String returns the string representation
6587func (s InstanceFleetProvisioningSpecifications) String() string {
6588	return awsutil.Prettify(s)
6589}
6590
6591// GoString returns the string representation
6592func (s InstanceFleetProvisioningSpecifications) GoString() string {
6593	return s.String()
6594}
6595
6596// Validate inspects the fields of the type to determine if they are valid.
6597func (s *InstanceFleetProvisioningSpecifications) Validate() error {
6598	invalidParams := request.ErrInvalidParams{Context: "InstanceFleetProvisioningSpecifications"}
6599	if s.OnDemandSpecification != nil {
6600		if err := s.OnDemandSpecification.Validate(); err != nil {
6601			invalidParams.AddNested("OnDemandSpecification", err.(request.ErrInvalidParams))
6602		}
6603	}
6604	if s.SpotSpecification != nil {
6605		if err := s.SpotSpecification.Validate(); err != nil {
6606			invalidParams.AddNested("SpotSpecification", err.(request.ErrInvalidParams))
6607		}
6608	}
6609
6610	if invalidParams.Len() > 0 {
6611		return invalidParams
6612	}
6613	return nil
6614}
6615
6616// SetOnDemandSpecification sets the OnDemandSpecification field's value.
6617func (s *InstanceFleetProvisioningSpecifications) SetOnDemandSpecification(v *OnDemandProvisioningSpecification) *InstanceFleetProvisioningSpecifications {
6618	s.OnDemandSpecification = v
6619	return s
6620}
6621
6622// SetSpotSpecification sets the SpotSpecification field's value.
6623func (s *InstanceFleetProvisioningSpecifications) SetSpotSpecification(v *SpotProvisioningSpecification) *InstanceFleetProvisioningSpecifications {
6624	s.SpotSpecification = v
6625	return s
6626}
6627
6628// Provides status change reason details for the instance fleet.
6629//
6630// The instance fleet configuration is available only in Amazon EMR versions
6631// 4.8.0 and later, excluding 5.0.x versions.
6632type InstanceFleetStateChangeReason struct {
6633	_ struct{} `type:"structure"`
6634
6635	// A code corresponding to the reason the state change occurred.
6636	Code *string `type:"string" enum:"InstanceFleetStateChangeReasonCode"`
6637
6638	// An explanatory message.
6639	Message *string `type:"string"`
6640}
6641
6642// String returns the string representation
6643func (s InstanceFleetStateChangeReason) String() string {
6644	return awsutil.Prettify(s)
6645}
6646
6647// GoString returns the string representation
6648func (s InstanceFleetStateChangeReason) GoString() string {
6649	return s.String()
6650}
6651
6652// SetCode sets the Code field's value.
6653func (s *InstanceFleetStateChangeReason) SetCode(v string) *InstanceFleetStateChangeReason {
6654	s.Code = &v
6655	return s
6656}
6657
6658// SetMessage sets the Message field's value.
6659func (s *InstanceFleetStateChangeReason) SetMessage(v string) *InstanceFleetStateChangeReason {
6660	s.Message = &v
6661	return s
6662}
6663
6664// The status of the instance fleet.
6665//
6666// The instance fleet configuration is available only in Amazon EMR versions
6667// 4.8.0 and later, excluding 5.0.x versions.
6668type InstanceFleetStatus struct {
6669	_ struct{} `type:"structure"`
6670
6671	// A code representing the instance fleet status.
6672	//
6673	//    * PROVISIONING—The instance fleet is provisioning EC2 resources and
6674	//    is not yet ready to run jobs.
6675	//
6676	//    * BOOTSTRAPPING—EC2 instances and other resources have been provisioned
6677	//    and the bootstrap actions specified for the instances are underway.
6678	//
6679	//    * RUNNING—EC2 instances and other resources are running. They are either
6680	//    executing jobs or waiting to execute jobs.
6681	//
6682	//    * RESIZING—A resize operation is underway. EC2 instances are either
6683	//    being added or removed.
6684	//
6685	//    * SUSPENDED—A resize operation could not complete. Existing EC2 instances
6686	//    are running, but instances can't be added or removed.
6687	//
6688	//    * TERMINATING—The instance fleet is terminating EC2 instances.
6689	//
6690	//    * TERMINATED—The instance fleet is no longer active, and all EC2 instances
6691	//    have been terminated.
6692	State *string `type:"string" enum:"InstanceFleetState"`
6693
6694	// Provides status change reason details for the instance fleet.
6695	StateChangeReason *InstanceFleetStateChangeReason `type:"structure"`
6696
6697	// Provides historical timestamps for the instance fleet, including the time
6698	// of creation, the time it became ready to run jobs, and the time of termination.
6699	Timeline *InstanceFleetTimeline `type:"structure"`
6700}
6701
6702// String returns the string representation
6703func (s InstanceFleetStatus) String() string {
6704	return awsutil.Prettify(s)
6705}
6706
6707// GoString returns the string representation
6708func (s InstanceFleetStatus) GoString() string {
6709	return s.String()
6710}
6711
6712// SetState sets the State field's value.
6713func (s *InstanceFleetStatus) SetState(v string) *InstanceFleetStatus {
6714	s.State = &v
6715	return s
6716}
6717
6718// SetStateChangeReason sets the StateChangeReason field's value.
6719func (s *InstanceFleetStatus) SetStateChangeReason(v *InstanceFleetStateChangeReason) *InstanceFleetStatus {
6720	s.StateChangeReason = v
6721	return s
6722}
6723
6724// SetTimeline sets the Timeline field's value.
6725func (s *InstanceFleetStatus) SetTimeline(v *InstanceFleetTimeline) *InstanceFleetStatus {
6726	s.Timeline = v
6727	return s
6728}
6729
6730// Provides historical timestamps for the instance fleet, including the time
6731// of creation, the time it became ready to run jobs, and the time of termination.
6732//
6733// The instance fleet configuration is available only in Amazon EMR versions
6734// 4.8.0 and later, excluding 5.0.x versions.
6735type InstanceFleetTimeline struct {
6736	_ struct{} `type:"structure"`
6737
6738	// The time and date the instance fleet was created.
6739	CreationDateTime *time.Time `type:"timestamp"`
6740
6741	// The time and date the instance fleet terminated.
6742	EndDateTime *time.Time `type:"timestamp"`
6743
6744	// The time and date the instance fleet was ready to run jobs.
6745	ReadyDateTime *time.Time `type:"timestamp"`
6746}
6747
6748// String returns the string representation
6749func (s InstanceFleetTimeline) String() string {
6750	return awsutil.Prettify(s)
6751}
6752
6753// GoString returns the string representation
6754func (s InstanceFleetTimeline) GoString() string {
6755	return s.String()
6756}
6757
6758// SetCreationDateTime sets the CreationDateTime field's value.
6759func (s *InstanceFleetTimeline) SetCreationDateTime(v time.Time) *InstanceFleetTimeline {
6760	s.CreationDateTime = &v
6761	return s
6762}
6763
6764// SetEndDateTime sets the EndDateTime field's value.
6765func (s *InstanceFleetTimeline) SetEndDateTime(v time.Time) *InstanceFleetTimeline {
6766	s.EndDateTime = &v
6767	return s
6768}
6769
6770// SetReadyDateTime sets the ReadyDateTime field's value.
6771func (s *InstanceFleetTimeline) SetReadyDateTime(v time.Time) *InstanceFleetTimeline {
6772	s.ReadyDateTime = &v
6773	return s
6774}
6775
6776// This entity represents an instance group, which is a group of instances that
6777// have common purpose. For example, CORE instance group is used for HDFS.
6778type InstanceGroup struct {
6779	_ struct{} `type:"structure"`
6780
6781	// An automatic scaling policy for a core instance group or task instance group
6782	// in an Amazon EMR cluster. The automatic scaling policy defines how an instance
6783	// group dynamically adds and terminates EC2 instances in response to the value
6784	// of a CloudWatch metric. See PutAutoScalingPolicy.
6785	AutoScalingPolicy *AutoScalingPolicyDescription `type:"structure"`
6786
6787	// The bid price for each EC2 Spot instance type as defined by InstanceType.
6788	// Expressed in USD. If neither BidPrice nor BidPriceAsPercentageOfOnDemandPrice
6789	// is provided, BidPriceAsPercentageOfOnDemandPrice defaults to 100%.
6790	BidPrice *string `type:"string"`
6791
6792	//
6793	// Amazon EMR releases 4.x or later.
6794	//
6795	// The list of configurations supplied for an EMR cluster instance group. You
6796	// can specify a separate configuration for each instance group (master, core,
6797	// and task).
6798	Configurations []*Configuration `type:"list"`
6799
6800	// The version number of the requested configuration specification for this
6801	// instance group.
6802	ConfigurationsVersion *int64 `type:"long"`
6803
6804	// The EBS block devices that are mapped to this instance group.
6805	EbsBlockDevices []*EbsBlockDevice `type:"list"`
6806
6807	// If the instance group is EBS-optimized. An Amazon EBS-optimized instance
6808	// uses an optimized configuration stack and provides additional, dedicated
6809	// capacity for Amazon EBS I/O.
6810	EbsOptimized *bool `type:"boolean"`
6811
6812	// The identifier of the instance group.
6813	Id *string `type:"string"`
6814
6815	// The type of the instance group. Valid values are MASTER, CORE or TASK.
6816	InstanceGroupType *string `type:"string" enum:"InstanceGroupType"`
6817
6818	// The EC2 instance type for all instances in the instance group.
6819	InstanceType *string `min:"1" type:"string"`
6820
6821	// A list of configurations that were successfully applied for an instance group
6822	// last time.
6823	LastSuccessfullyAppliedConfigurations []*Configuration `type:"list"`
6824
6825	// The version number of a configuration specification that was successfully
6826	// applied for an instance group last time.
6827	LastSuccessfullyAppliedConfigurationsVersion *int64 `type:"long"`
6828
6829	// The marketplace to provision instances for this group. Valid values are ON_DEMAND
6830	// or SPOT.
6831	Market *string `type:"string" enum:"MarketType"`
6832
6833	// The name of the instance group.
6834	Name *string `type:"string"`
6835
6836	// The target number of instances for the instance group.
6837	RequestedInstanceCount *int64 `type:"integer"`
6838
6839	// The number of instances currently running in this instance group.
6840	RunningInstanceCount *int64 `type:"integer"`
6841
6842	// Policy for customizing shrink operations.
6843	ShrinkPolicy *ShrinkPolicy `type:"structure"`
6844
6845	// The current status of the instance group.
6846	Status *InstanceGroupStatus `type:"structure"`
6847}
6848
6849// String returns the string representation
6850func (s InstanceGroup) String() string {
6851	return awsutil.Prettify(s)
6852}
6853
6854// GoString returns the string representation
6855func (s InstanceGroup) GoString() string {
6856	return s.String()
6857}
6858
6859// SetAutoScalingPolicy sets the AutoScalingPolicy field's value.
6860func (s *InstanceGroup) SetAutoScalingPolicy(v *AutoScalingPolicyDescription) *InstanceGroup {
6861	s.AutoScalingPolicy = v
6862	return s
6863}
6864
6865// SetBidPrice sets the BidPrice field's value.
6866func (s *InstanceGroup) SetBidPrice(v string) *InstanceGroup {
6867	s.BidPrice = &v
6868	return s
6869}
6870
6871// SetConfigurations sets the Configurations field's value.
6872func (s *InstanceGroup) SetConfigurations(v []*Configuration) *InstanceGroup {
6873	s.Configurations = v
6874	return s
6875}
6876
6877// SetConfigurationsVersion sets the ConfigurationsVersion field's value.
6878func (s *InstanceGroup) SetConfigurationsVersion(v int64) *InstanceGroup {
6879	s.ConfigurationsVersion = &v
6880	return s
6881}
6882
6883// SetEbsBlockDevices sets the EbsBlockDevices field's value.
6884func (s *InstanceGroup) SetEbsBlockDevices(v []*EbsBlockDevice) *InstanceGroup {
6885	s.EbsBlockDevices = v
6886	return s
6887}
6888
6889// SetEbsOptimized sets the EbsOptimized field's value.
6890func (s *InstanceGroup) SetEbsOptimized(v bool) *InstanceGroup {
6891	s.EbsOptimized = &v
6892	return s
6893}
6894
6895// SetId sets the Id field's value.
6896func (s *InstanceGroup) SetId(v string) *InstanceGroup {
6897	s.Id = &v
6898	return s
6899}
6900
6901// SetInstanceGroupType sets the InstanceGroupType field's value.
6902func (s *InstanceGroup) SetInstanceGroupType(v string) *InstanceGroup {
6903	s.InstanceGroupType = &v
6904	return s
6905}
6906
6907// SetInstanceType sets the InstanceType field's value.
6908func (s *InstanceGroup) SetInstanceType(v string) *InstanceGroup {
6909	s.InstanceType = &v
6910	return s
6911}
6912
6913// SetLastSuccessfullyAppliedConfigurations sets the LastSuccessfullyAppliedConfigurations field's value.
6914func (s *InstanceGroup) SetLastSuccessfullyAppliedConfigurations(v []*Configuration) *InstanceGroup {
6915	s.LastSuccessfullyAppliedConfigurations = v
6916	return s
6917}
6918
6919// SetLastSuccessfullyAppliedConfigurationsVersion sets the LastSuccessfullyAppliedConfigurationsVersion field's value.
6920func (s *InstanceGroup) SetLastSuccessfullyAppliedConfigurationsVersion(v int64) *InstanceGroup {
6921	s.LastSuccessfullyAppliedConfigurationsVersion = &v
6922	return s
6923}
6924
6925// SetMarket sets the Market field's value.
6926func (s *InstanceGroup) SetMarket(v string) *InstanceGroup {
6927	s.Market = &v
6928	return s
6929}
6930
6931// SetName sets the Name field's value.
6932func (s *InstanceGroup) SetName(v string) *InstanceGroup {
6933	s.Name = &v
6934	return s
6935}
6936
6937// SetRequestedInstanceCount sets the RequestedInstanceCount field's value.
6938func (s *InstanceGroup) SetRequestedInstanceCount(v int64) *InstanceGroup {
6939	s.RequestedInstanceCount = &v
6940	return s
6941}
6942
6943// SetRunningInstanceCount sets the RunningInstanceCount field's value.
6944func (s *InstanceGroup) SetRunningInstanceCount(v int64) *InstanceGroup {
6945	s.RunningInstanceCount = &v
6946	return s
6947}
6948
6949// SetShrinkPolicy sets the ShrinkPolicy field's value.
6950func (s *InstanceGroup) SetShrinkPolicy(v *ShrinkPolicy) *InstanceGroup {
6951	s.ShrinkPolicy = v
6952	return s
6953}
6954
6955// SetStatus sets the Status field's value.
6956func (s *InstanceGroup) SetStatus(v *InstanceGroupStatus) *InstanceGroup {
6957	s.Status = v
6958	return s
6959}
6960
6961// Configuration defining a new instance group.
6962type InstanceGroupConfig struct {
6963	_ struct{} `type:"structure"`
6964
6965	// An automatic scaling policy for a core instance group or task instance group
6966	// in an Amazon EMR cluster. The automatic scaling policy defines how an instance
6967	// group dynamically adds and terminates EC2 instances in response to the value
6968	// of a CloudWatch metric. See PutAutoScalingPolicy.
6969	AutoScalingPolicy *AutoScalingPolicy `type:"structure"`
6970
6971	// The bid price for each EC2 Spot instance type as defined by InstanceType.
6972	// Expressed in USD. If neither BidPrice nor BidPriceAsPercentageOfOnDemandPrice
6973	// is provided, BidPriceAsPercentageOfOnDemandPrice defaults to 100%.
6974	BidPrice *string `type:"string"`
6975
6976	//
6977	// Amazon EMR releases 4.x or later.
6978	//
6979	// The list of configurations supplied for an EMR cluster instance group. You
6980	// can specify a separate configuration for each instance group (master, core,
6981	// and task).
6982	Configurations []*Configuration `type:"list"`
6983
6984	// EBS configurations that will be attached to each EC2 instance in the instance
6985	// group.
6986	EbsConfiguration *EbsConfiguration `type:"structure"`
6987
6988	// Target number of instances for the instance group.
6989	//
6990	// InstanceCount is a required field
6991	InstanceCount *int64 `type:"integer" required:"true"`
6992
6993	// The role of the instance group in the cluster.
6994	//
6995	// InstanceRole is a required field
6996	InstanceRole *string `type:"string" required:"true" enum:"InstanceRoleType"`
6997
6998	// The EC2 instance type for all instances in the instance group.
6999	//
7000	// InstanceType is a required field
7001	InstanceType *string `min:"1" type:"string" required:"true"`
7002
7003	// Market type of the EC2 instances used to create a cluster node.
7004	Market *string `type:"string" enum:"MarketType"`
7005
7006	// Friendly name given to the instance group.
7007	Name *string `type:"string"`
7008}
7009
7010// String returns the string representation
7011func (s InstanceGroupConfig) String() string {
7012	return awsutil.Prettify(s)
7013}
7014
7015// GoString returns the string representation
7016func (s InstanceGroupConfig) GoString() string {
7017	return s.String()
7018}
7019
7020// Validate inspects the fields of the type to determine if they are valid.
7021func (s *InstanceGroupConfig) Validate() error {
7022	invalidParams := request.ErrInvalidParams{Context: "InstanceGroupConfig"}
7023	if s.InstanceCount == nil {
7024		invalidParams.Add(request.NewErrParamRequired("InstanceCount"))
7025	}
7026	if s.InstanceRole == nil {
7027		invalidParams.Add(request.NewErrParamRequired("InstanceRole"))
7028	}
7029	if s.InstanceType == nil {
7030		invalidParams.Add(request.NewErrParamRequired("InstanceType"))
7031	}
7032	if s.InstanceType != nil && len(*s.InstanceType) < 1 {
7033		invalidParams.Add(request.NewErrParamMinLen("InstanceType", 1))
7034	}
7035	if s.AutoScalingPolicy != nil {
7036		if err := s.AutoScalingPolicy.Validate(); err != nil {
7037			invalidParams.AddNested("AutoScalingPolicy", err.(request.ErrInvalidParams))
7038		}
7039	}
7040	if s.EbsConfiguration != nil {
7041		if err := s.EbsConfiguration.Validate(); err != nil {
7042			invalidParams.AddNested("EbsConfiguration", err.(request.ErrInvalidParams))
7043		}
7044	}
7045
7046	if invalidParams.Len() > 0 {
7047		return invalidParams
7048	}
7049	return nil
7050}
7051
7052// SetAutoScalingPolicy sets the AutoScalingPolicy field's value.
7053func (s *InstanceGroupConfig) SetAutoScalingPolicy(v *AutoScalingPolicy) *InstanceGroupConfig {
7054	s.AutoScalingPolicy = v
7055	return s
7056}
7057
7058// SetBidPrice sets the BidPrice field's value.
7059func (s *InstanceGroupConfig) SetBidPrice(v string) *InstanceGroupConfig {
7060	s.BidPrice = &v
7061	return s
7062}
7063
7064// SetConfigurations sets the Configurations field's value.
7065func (s *InstanceGroupConfig) SetConfigurations(v []*Configuration) *InstanceGroupConfig {
7066	s.Configurations = v
7067	return s
7068}
7069
7070// SetEbsConfiguration sets the EbsConfiguration field's value.
7071func (s *InstanceGroupConfig) SetEbsConfiguration(v *EbsConfiguration) *InstanceGroupConfig {
7072	s.EbsConfiguration = v
7073	return s
7074}
7075
7076// SetInstanceCount sets the InstanceCount field's value.
7077func (s *InstanceGroupConfig) SetInstanceCount(v int64) *InstanceGroupConfig {
7078	s.InstanceCount = &v
7079	return s
7080}
7081
7082// SetInstanceRole sets the InstanceRole field's value.
7083func (s *InstanceGroupConfig) SetInstanceRole(v string) *InstanceGroupConfig {
7084	s.InstanceRole = &v
7085	return s
7086}
7087
7088// SetInstanceType sets the InstanceType field's value.
7089func (s *InstanceGroupConfig) SetInstanceType(v string) *InstanceGroupConfig {
7090	s.InstanceType = &v
7091	return s
7092}
7093
7094// SetMarket sets the Market field's value.
7095func (s *InstanceGroupConfig) SetMarket(v string) *InstanceGroupConfig {
7096	s.Market = &v
7097	return s
7098}
7099
7100// SetName sets the Name field's value.
7101func (s *InstanceGroupConfig) SetName(v string) *InstanceGroupConfig {
7102	s.Name = &v
7103	return s
7104}
7105
7106// Detailed information about an instance group.
7107type InstanceGroupDetail struct {
7108	_ struct{} `type:"structure"`
7109
7110	// The bid price for each EC2 Spot instance type as defined by InstanceType.
7111	// Expressed in USD. If neither BidPrice nor BidPriceAsPercentageOfOnDemandPrice
7112	// is provided, BidPriceAsPercentageOfOnDemandPrice defaults to 100%.
7113	BidPrice *string `type:"string"`
7114
7115	// The date/time the instance group was created.
7116	//
7117	// CreationDateTime is a required field
7118	CreationDateTime *time.Time `type:"timestamp" required:"true"`
7119
7120	// The date/time the instance group was terminated.
7121	EndDateTime *time.Time `type:"timestamp"`
7122
7123	// Unique identifier for the instance group.
7124	InstanceGroupId *string `type:"string"`
7125
7126	// Target number of instances to run in the instance group.
7127	//
7128	// InstanceRequestCount is a required field
7129	InstanceRequestCount *int64 `type:"integer" required:"true"`
7130
7131	// Instance group role in the cluster
7132	//
7133	// InstanceRole is a required field
7134	InstanceRole *string `type:"string" required:"true" enum:"InstanceRoleType"`
7135
7136	// Actual count of running instances.
7137	//
7138	// InstanceRunningCount is a required field
7139	InstanceRunningCount *int64 `type:"integer" required:"true"`
7140
7141	// EC2 instance type.
7142	//
7143	// InstanceType is a required field
7144	InstanceType *string `min:"1" type:"string" required:"true"`
7145
7146	// Details regarding the state of the instance group.
7147	LastStateChangeReason *string `type:"string"`
7148
7149	// Market type of the EC2 instances used to create a cluster node.
7150	//
7151	// Market is a required field
7152	Market *string `type:"string" required:"true" enum:"MarketType"`
7153
7154	// Friendly name for the instance group.
7155	Name *string `type:"string"`
7156
7157	// The date/time the instance group was available to the cluster.
7158	ReadyDateTime *time.Time `type:"timestamp"`
7159
7160	// The date/time the instance group was started.
7161	StartDateTime *time.Time `type:"timestamp"`
7162
7163	// State of instance group. The following values are deprecated: STARTING, TERMINATED,
7164	// and FAILED.
7165	//
7166	// State is a required field
7167	State *string `type:"string" required:"true" enum:"InstanceGroupState"`
7168}
7169
7170// String returns the string representation
7171func (s InstanceGroupDetail) String() string {
7172	return awsutil.Prettify(s)
7173}
7174
7175// GoString returns the string representation
7176func (s InstanceGroupDetail) GoString() string {
7177	return s.String()
7178}
7179
7180// SetBidPrice sets the BidPrice field's value.
7181func (s *InstanceGroupDetail) SetBidPrice(v string) *InstanceGroupDetail {
7182	s.BidPrice = &v
7183	return s
7184}
7185
7186// SetCreationDateTime sets the CreationDateTime field's value.
7187func (s *InstanceGroupDetail) SetCreationDateTime(v time.Time) *InstanceGroupDetail {
7188	s.CreationDateTime = &v
7189	return s
7190}
7191
7192// SetEndDateTime sets the EndDateTime field's value.
7193func (s *InstanceGroupDetail) SetEndDateTime(v time.Time) *InstanceGroupDetail {
7194	s.EndDateTime = &v
7195	return s
7196}
7197
7198// SetInstanceGroupId sets the InstanceGroupId field's value.
7199func (s *InstanceGroupDetail) SetInstanceGroupId(v string) *InstanceGroupDetail {
7200	s.InstanceGroupId = &v
7201	return s
7202}
7203
7204// SetInstanceRequestCount sets the InstanceRequestCount field's value.
7205func (s *InstanceGroupDetail) SetInstanceRequestCount(v int64) *InstanceGroupDetail {
7206	s.InstanceRequestCount = &v
7207	return s
7208}
7209
7210// SetInstanceRole sets the InstanceRole field's value.
7211func (s *InstanceGroupDetail) SetInstanceRole(v string) *InstanceGroupDetail {
7212	s.InstanceRole = &v
7213	return s
7214}
7215
7216// SetInstanceRunningCount sets the InstanceRunningCount field's value.
7217func (s *InstanceGroupDetail) SetInstanceRunningCount(v int64) *InstanceGroupDetail {
7218	s.InstanceRunningCount = &v
7219	return s
7220}
7221
7222// SetInstanceType sets the InstanceType field's value.
7223func (s *InstanceGroupDetail) SetInstanceType(v string) *InstanceGroupDetail {
7224	s.InstanceType = &v
7225	return s
7226}
7227
7228// SetLastStateChangeReason sets the LastStateChangeReason field's value.
7229func (s *InstanceGroupDetail) SetLastStateChangeReason(v string) *InstanceGroupDetail {
7230	s.LastStateChangeReason = &v
7231	return s
7232}
7233
7234// SetMarket sets the Market field's value.
7235func (s *InstanceGroupDetail) SetMarket(v string) *InstanceGroupDetail {
7236	s.Market = &v
7237	return s
7238}
7239
7240// SetName sets the Name field's value.
7241func (s *InstanceGroupDetail) SetName(v string) *InstanceGroupDetail {
7242	s.Name = &v
7243	return s
7244}
7245
7246// SetReadyDateTime sets the ReadyDateTime field's value.
7247func (s *InstanceGroupDetail) SetReadyDateTime(v time.Time) *InstanceGroupDetail {
7248	s.ReadyDateTime = &v
7249	return s
7250}
7251
7252// SetStartDateTime sets the StartDateTime field's value.
7253func (s *InstanceGroupDetail) SetStartDateTime(v time.Time) *InstanceGroupDetail {
7254	s.StartDateTime = &v
7255	return s
7256}
7257
7258// SetState sets the State field's value.
7259func (s *InstanceGroupDetail) SetState(v string) *InstanceGroupDetail {
7260	s.State = &v
7261	return s
7262}
7263
7264// Modify the size or configurations of an instance group.
7265type InstanceGroupModifyConfig struct {
7266	_ struct{} `type:"structure"`
7267
7268	// A list of new or modified configurations to apply for an instance group.
7269	Configurations []*Configuration `type:"list"`
7270
7271	// The EC2 InstanceIds to terminate. After you terminate the instances, the
7272	// instance group will not return to its original requested size.
7273	EC2InstanceIdsToTerminate []*string `type:"list"`
7274
7275	// Target size for the instance group.
7276	InstanceCount *int64 `type:"integer"`
7277
7278	// Unique ID of the instance group to expand or shrink.
7279	//
7280	// InstanceGroupId is a required field
7281	InstanceGroupId *string `type:"string" required:"true"`
7282
7283	// Policy for customizing shrink operations.
7284	ShrinkPolicy *ShrinkPolicy `type:"structure"`
7285}
7286
7287// String returns the string representation
7288func (s InstanceGroupModifyConfig) String() string {
7289	return awsutil.Prettify(s)
7290}
7291
7292// GoString returns the string representation
7293func (s InstanceGroupModifyConfig) GoString() string {
7294	return s.String()
7295}
7296
7297// Validate inspects the fields of the type to determine if they are valid.
7298func (s *InstanceGroupModifyConfig) Validate() error {
7299	invalidParams := request.ErrInvalidParams{Context: "InstanceGroupModifyConfig"}
7300	if s.InstanceGroupId == nil {
7301		invalidParams.Add(request.NewErrParamRequired("InstanceGroupId"))
7302	}
7303
7304	if invalidParams.Len() > 0 {
7305		return invalidParams
7306	}
7307	return nil
7308}
7309
7310// SetConfigurations sets the Configurations field's value.
7311func (s *InstanceGroupModifyConfig) SetConfigurations(v []*Configuration) *InstanceGroupModifyConfig {
7312	s.Configurations = v
7313	return s
7314}
7315
7316// SetEC2InstanceIdsToTerminate sets the EC2InstanceIdsToTerminate field's value.
7317func (s *InstanceGroupModifyConfig) SetEC2InstanceIdsToTerminate(v []*string) *InstanceGroupModifyConfig {
7318	s.EC2InstanceIdsToTerminate = v
7319	return s
7320}
7321
7322// SetInstanceCount sets the InstanceCount field's value.
7323func (s *InstanceGroupModifyConfig) SetInstanceCount(v int64) *InstanceGroupModifyConfig {
7324	s.InstanceCount = &v
7325	return s
7326}
7327
7328// SetInstanceGroupId sets the InstanceGroupId field's value.
7329func (s *InstanceGroupModifyConfig) SetInstanceGroupId(v string) *InstanceGroupModifyConfig {
7330	s.InstanceGroupId = &v
7331	return s
7332}
7333
7334// SetShrinkPolicy sets the ShrinkPolicy field's value.
7335func (s *InstanceGroupModifyConfig) SetShrinkPolicy(v *ShrinkPolicy) *InstanceGroupModifyConfig {
7336	s.ShrinkPolicy = v
7337	return s
7338}
7339
7340// The status change reason details for the instance group.
7341type InstanceGroupStateChangeReason struct {
7342	_ struct{} `type:"structure"`
7343
7344	// The programmable code for the state change reason.
7345	Code *string `type:"string" enum:"InstanceGroupStateChangeReasonCode"`
7346
7347	// The status change reason description.
7348	Message *string `type:"string"`
7349}
7350
7351// String returns the string representation
7352func (s InstanceGroupStateChangeReason) String() string {
7353	return awsutil.Prettify(s)
7354}
7355
7356// GoString returns the string representation
7357func (s InstanceGroupStateChangeReason) GoString() string {
7358	return s.String()
7359}
7360
7361// SetCode sets the Code field's value.
7362func (s *InstanceGroupStateChangeReason) SetCode(v string) *InstanceGroupStateChangeReason {
7363	s.Code = &v
7364	return s
7365}
7366
7367// SetMessage sets the Message field's value.
7368func (s *InstanceGroupStateChangeReason) SetMessage(v string) *InstanceGroupStateChangeReason {
7369	s.Message = &v
7370	return s
7371}
7372
7373// The details of the instance group status.
7374type InstanceGroupStatus struct {
7375	_ struct{} `type:"structure"`
7376
7377	// The current state of the instance group.
7378	State *string `type:"string" enum:"InstanceGroupState"`
7379
7380	// The status change reason details for the instance group.
7381	StateChangeReason *InstanceGroupStateChangeReason `type:"structure"`
7382
7383	// The timeline of the instance group status over time.
7384	Timeline *InstanceGroupTimeline `type:"structure"`
7385}
7386
7387// String returns the string representation
7388func (s InstanceGroupStatus) String() string {
7389	return awsutil.Prettify(s)
7390}
7391
7392// GoString returns the string representation
7393func (s InstanceGroupStatus) GoString() string {
7394	return s.String()
7395}
7396
7397// SetState sets the State field's value.
7398func (s *InstanceGroupStatus) SetState(v string) *InstanceGroupStatus {
7399	s.State = &v
7400	return s
7401}
7402
7403// SetStateChangeReason sets the StateChangeReason field's value.
7404func (s *InstanceGroupStatus) SetStateChangeReason(v *InstanceGroupStateChangeReason) *InstanceGroupStatus {
7405	s.StateChangeReason = v
7406	return s
7407}
7408
7409// SetTimeline sets the Timeline field's value.
7410func (s *InstanceGroupStatus) SetTimeline(v *InstanceGroupTimeline) *InstanceGroupStatus {
7411	s.Timeline = v
7412	return s
7413}
7414
7415// The timeline of the instance group lifecycle.
7416type InstanceGroupTimeline struct {
7417	_ struct{} `type:"structure"`
7418
7419	// The creation date and time of the instance group.
7420	CreationDateTime *time.Time `type:"timestamp"`
7421
7422	// The date and time when the instance group terminated.
7423	EndDateTime *time.Time `type:"timestamp"`
7424
7425	// The date and time when the instance group became ready to perform tasks.
7426	ReadyDateTime *time.Time `type:"timestamp"`
7427}
7428
7429// String returns the string representation
7430func (s InstanceGroupTimeline) String() string {
7431	return awsutil.Prettify(s)
7432}
7433
7434// GoString returns the string representation
7435func (s InstanceGroupTimeline) GoString() string {
7436	return s.String()
7437}
7438
7439// SetCreationDateTime sets the CreationDateTime field's value.
7440func (s *InstanceGroupTimeline) SetCreationDateTime(v time.Time) *InstanceGroupTimeline {
7441	s.CreationDateTime = &v
7442	return s
7443}
7444
7445// SetEndDateTime sets the EndDateTime field's value.
7446func (s *InstanceGroupTimeline) SetEndDateTime(v time.Time) *InstanceGroupTimeline {
7447	s.EndDateTime = &v
7448	return s
7449}
7450
7451// SetReadyDateTime sets the ReadyDateTime field's value.
7452func (s *InstanceGroupTimeline) SetReadyDateTime(v time.Time) *InstanceGroupTimeline {
7453	s.ReadyDateTime = &v
7454	return s
7455}
7456
7457// Custom policy for requesting termination protection or termination of specific
7458// instances when shrinking an instance group.
7459type InstanceResizePolicy struct {
7460	_ struct{} `type:"structure"`
7461
7462	// Decommissioning timeout override for the specific list of instances to be
7463	// terminated.
7464	InstanceTerminationTimeout *int64 `type:"integer"`
7465
7466	// Specific list of instances to be protected when shrinking an instance group.
7467	InstancesToProtect []*string `type:"list"`
7468
7469	// Specific list of instances to be terminated when shrinking an instance group.
7470	InstancesToTerminate []*string `type:"list"`
7471}
7472
7473// String returns the string representation
7474func (s InstanceResizePolicy) String() string {
7475	return awsutil.Prettify(s)
7476}
7477
7478// GoString returns the string representation
7479func (s InstanceResizePolicy) GoString() string {
7480	return s.String()
7481}
7482
7483// SetInstanceTerminationTimeout sets the InstanceTerminationTimeout field's value.
7484func (s *InstanceResizePolicy) SetInstanceTerminationTimeout(v int64) *InstanceResizePolicy {
7485	s.InstanceTerminationTimeout = &v
7486	return s
7487}
7488
7489// SetInstancesToProtect sets the InstancesToProtect field's value.
7490func (s *InstanceResizePolicy) SetInstancesToProtect(v []*string) *InstanceResizePolicy {
7491	s.InstancesToProtect = v
7492	return s
7493}
7494
7495// SetInstancesToTerminate sets the InstancesToTerminate field's value.
7496func (s *InstanceResizePolicy) SetInstancesToTerminate(v []*string) *InstanceResizePolicy {
7497	s.InstancesToTerminate = v
7498	return s
7499}
7500
7501// The details of the status change reason for the instance.
7502type InstanceStateChangeReason struct {
7503	_ struct{} `type:"structure"`
7504
7505	// The programmable code for the state change reason.
7506	Code *string `type:"string" enum:"InstanceStateChangeReasonCode"`
7507
7508	// The status change reason description.
7509	Message *string `type:"string"`
7510}
7511
7512// String returns the string representation
7513func (s InstanceStateChangeReason) String() string {
7514	return awsutil.Prettify(s)
7515}
7516
7517// GoString returns the string representation
7518func (s InstanceStateChangeReason) GoString() string {
7519	return s.String()
7520}
7521
7522// SetCode sets the Code field's value.
7523func (s *InstanceStateChangeReason) SetCode(v string) *InstanceStateChangeReason {
7524	s.Code = &v
7525	return s
7526}
7527
7528// SetMessage sets the Message field's value.
7529func (s *InstanceStateChangeReason) SetMessage(v string) *InstanceStateChangeReason {
7530	s.Message = &v
7531	return s
7532}
7533
7534// The instance status details.
7535type InstanceStatus struct {
7536	_ struct{} `type:"structure"`
7537
7538	// The current state of the instance.
7539	State *string `type:"string" enum:"InstanceState"`
7540
7541	// The details of the status change reason for the instance.
7542	StateChangeReason *InstanceStateChangeReason `type:"structure"`
7543
7544	// The timeline of the instance status over time.
7545	Timeline *InstanceTimeline `type:"structure"`
7546}
7547
7548// String returns the string representation
7549func (s InstanceStatus) String() string {
7550	return awsutil.Prettify(s)
7551}
7552
7553// GoString returns the string representation
7554func (s InstanceStatus) GoString() string {
7555	return s.String()
7556}
7557
7558// SetState sets the State field's value.
7559func (s *InstanceStatus) SetState(v string) *InstanceStatus {
7560	s.State = &v
7561	return s
7562}
7563
7564// SetStateChangeReason sets the StateChangeReason field's value.
7565func (s *InstanceStatus) SetStateChangeReason(v *InstanceStateChangeReason) *InstanceStatus {
7566	s.StateChangeReason = v
7567	return s
7568}
7569
7570// SetTimeline sets the Timeline field's value.
7571func (s *InstanceStatus) SetTimeline(v *InstanceTimeline) *InstanceStatus {
7572	s.Timeline = v
7573	return s
7574}
7575
7576// The timeline of the instance lifecycle.
7577type InstanceTimeline struct {
7578	_ struct{} `type:"structure"`
7579
7580	// The creation date and time of the instance.
7581	CreationDateTime *time.Time `type:"timestamp"`
7582
7583	// The date and time when the instance was terminated.
7584	EndDateTime *time.Time `type:"timestamp"`
7585
7586	// The date and time when the instance was ready to perform tasks.
7587	ReadyDateTime *time.Time `type:"timestamp"`
7588}
7589
7590// String returns the string representation
7591func (s InstanceTimeline) String() string {
7592	return awsutil.Prettify(s)
7593}
7594
7595// GoString returns the string representation
7596func (s InstanceTimeline) GoString() string {
7597	return s.String()
7598}
7599
7600// SetCreationDateTime sets the CreationDateTime field's value.
7601func (s *InstanceTimeline) SetCreationDateTime(v time.Time) *InstanceTimeline {
7602	s.CreationDateTime = &v
7603	return s
7604}
7605
7606// SetEndDateTime sets the EndDateTime field's value.
7607func (s *InstanceTimeline) SetEndDateTime(v time.Time) *InstanceTimeline {
7608	s.EndDateTime = &v
7609	return s
7610}
7611
7612// SetReadyDateTime sets the ReadyDateTime field's value.
7613func (s *InstanceTimeline) SetReadyDateTime(v time.Time) *InstanceTimeline {
7614	s.ReadyDateTime = &v
7615	return s
7616}
7617
7618// An instance type configuration for each instance type in an instance fleet,
7619// which determines the EC2 instances Amazon EMR attempts to provision to fulfill
7620// On-Demand and Spot target capacities. There can be a maximum of 5 instance
7621// type configurations in a fleet.
7622//
7623// The instance fleet configuration is available only in Amazon EMR versions
7624// 4.8.0 and later, excluding 5.0.x versions.
7625type InstanceTypeConfig struct {
7626	_ struct{} `type:"structure"`
7627
7628	// The bid price for each EC2 Spot instance type as defined by InstanceType.
7629	// Expressed in USD. If neither BidPrice nor BidPriceAsPercentageOfOnDemandPrice
7630	// is provided, BidPriceAsPercentageOfOnDemandPrice defaults to 100%.
7631	BidPrice *string `type:"string"`
7632
7633	// The bid price, as a percentage of On-Demand price, for each EC2 Spot instance
7634	// as defined by InstanceType. Expressed as a number (for example, 20 specifies
7635	// 20%). If neither BidPrice nor BidPriceAsPercentageOfOnDemandPrice is provided,
7636	// BidPriceAsPercentageOfOnDemandPrice defaults to 100%.
7637	BidPriceAsPercentageOfOnDemandPrice *float64 `type:"double"`
7638
7639	// A configuration classification that applies when provisioning cluster instances,
7640	// which can include configurations for applications and software that run on
7641	// the cluster.
7642	Configurations []*Configuration `type:"list"`
7643
7644	// The configuration of Amazon Elastic Block Storage (EBS) attached to each
7645	// instance as defined by InstanceType.
7646	EbsConfiguration *EbsConfiguration `type:"structure"`
7647
7648	// An EC2 instance type, such as m3.xlarge.
7649	//
7650	// InstanceType is a required field
7651	InstanceType *string `min:"1" type:"string" required:"true"`
7652
7653	// The number of units that a provisioned instance of this type provides toward
7654	// fulfilling the target capacities defined in InstanceFleetConfig. This value
7655	// is 1 for a master instance fleet, and must be 1 or greater for core and task
7656	// instance fleets. Defaults to 1 if not specified.
7657	WeightedCapacity *int64 `type:"integer"`
7658}
7659
7660// String returns the string representation
7661func (s InstanceTypeConfig) String() string {
7662	return awsutil.Prettify(s)
7663}
7664
7665// GoString returns the string representation
7666func (s InstanceTypeConfig) GoString() string {
7667	return s.String()
7668}
7669
7670// Validate inspects the fields of the type to determine if they are valid.
7671func (s *InstanceTypeConfig) Validate() error {
7672	invalidParams := request.ErrInvalidParams{Context: "InstanceTypeConfig"}
7673	if s.InstanceType == nil {
7674		invalidParams.Add(request.NewErrParamRequired("InstanceType"))
7675	}
7676	if s.InstanceType != nil && len(*s.InstanceType) < 1 {
7677		invalidParams.Add(request.NewErrParamMinLen("InstanceType", 1))
7678	}
7679	if s.EbsConfiguration != nil {
7680		if err := s.EbsConfiguration.Validate(); err != nil {
7681			invalidParams.AddNested("EbsConfiguration", err.(request.ErrInvalidParams))
7682		}
7683	}
7684
7685	if invalidParams.Len() > 0 {
7686		return invalidParams
7687	}
7688	return nil
7689}
7690
7691// SetBidPrice sets the BidPrice field's value.
7692func (s *InstanceTypeConfig) SetBidPrice(v string) *InstanceTypeConfig {
7693	s.BidPrice = &v
7694	return s
7695}
7696
7697// SetBidPriceAsPercentageOfOnDemandPrice sets the BidPriceAsPercentageOfOnDemandPrice field's value.
7698func (s *InstanceTypeConfig) SetBidPriceAsPercentageOfOnDemandPrice(v float64) *InstanceTypeConfig {
7699	s.BidPriceAsPercentageOfOnDemandPrice = &v
7700	return s
7701}
7702
7703// SetConfigurations sets the Configurations field's value.
7704func (s *InstanceTypeConfig) SetConfigurations(v []*Configuration) *InstanceTypeConfig {
7705	s.Configurations = v
7706	return s
7707}
7708
7709// SetEbsConfiguration sets the EbsConfiguration field's value.
7710func (s *InstanceTypeConfig) SetEbsConfiguration(v *EbsConfiguration) *InstanceTypeConfig {
7711	s.EbsConfiguration = v
7712	return s
7713}
7714
7715// SetInstanceType sets the InstanceType field's value.
7716func (s *InstanceTypeConfig) SetInstanceType(v string) *InstanceTypeConfig {
7717	s.InstanceType = &v
7718	return s
7719}
7720
7721// SetWeightedCapacity sets the WeightedCapacity field's value.
7722func (s *InstanceTypeConfig) SetWeightedCapacity(v int64) *InstanceTypeConfig {
7723	s.WeightedCapacity = &v
7724	return s
7725}
7726
7727// The configuration specification for each instance type in an instance fleet.
7728//
7729// The instance fleet configuration is available only in Amazon EMR versions
7730// 4.8.0 and later, excluding 5.0.x versions.
7731type InstanceTypeSpecification struct {
7732	_ struct{} `type:"structure"`
7733
7734	// The bid price for each EC2 Spot instance type as defined by InstanceType.
7735	// Expressed in USD.
7736	BidPrice *string `type:"string"`
7737
7738	// The bid price, as a percentage of On-Demand price, for each EC2 Spot instance
7739	// as defined by InstanceType. Expressed as a number (for example, 20 specifies
7740	// 20%).
7741	BidPriceAsPercentageOfOnDemandPrice *float64 `type:"double"`
7742
7743	// A configuration classification that applies when provisioning cluster instances,
7744	// which can include configurations for applications and software bundled with
7745	// Amazon EMR.
7746	Configurations []*Configuration `type:"list"`
7747
7748	// The configuration of Amazon Elastic Block Storage (EBS) attached to each
7749	// instance as defined by InstanceType.
7750	EbsBlockDevices []*EbsBlockDevice `type:"list"`
7751
7752	// Evaluates to TRUE when the specified InstanceType is EBS-optimized.
7753	EbsOptimized *bool `type:"boolean"`
7754
7755	// The EC2 instance type, for example m3.xlarge.
7756	InstanceType *string `min:"1" type:"string"`
7757
7758	// The number of units that a provisioned instance of this type provides toward
7759	// fulfilling the target capacities defined in InstanceFleetConfig. Capacity
7760	// values represent performance characteristics such as vCPUs, memory, or I/O.
7761	// If not specified, the default value is 1.
7762	WeightedCapacity *int64 `type:"integer"`
7763}
7764
7765// String returns the string representation
7766func (s InstanceTypeSpecification) String() string {
7767	return awsutil.Prettify(s)
7768}
7769
7770// GoString returns the string representation
7771func (s InstanceTypeSpecification) GoString() string {
7772	return s.String()
7773}
7774
7775// SetBidPrice sets the BidPrice field's value.
7776func (s *InstanceTypeSpecification) SetBidPrice(v string) *InstanceTypeSpecification {
7777	s.BidPrice = &v
7778	return s
7779}
7780
7781// SetBidPriceAsPercentageOfOnDemandPrice sets the BidPriceAsPercentageOfOnDemandPrice field's value.
7782func (s *InstanceTypeSpecification) SetBidPriceAsPercentageOfOnDemandPrice(v float64) *InstanceTypeSpecification {
7783	s.BidPriceAsPercentageOfOnDemandPrice = &v
7784	return s
7785}
7786
7787// SetConfigurations sets the Configurations field's value.
7788func (s *InstanceTypeSpecification) SetConfigurations(v []*Configuration) *InstanceTypeSpecification {
7789	s.Configurations = v
7790	return s
7791}
7792
7793// SetEbsBlockDevices sets the EbsBlockDevices field's value.
7794func (s *InstanceTypeSpecification) SetEbsBlockDevices(v []*EbsBlockDevice) *InstanceTypeSpecification {
7795	s.EbsBlockDevices = v
7796	return s
7797}
7798
7799// SetEbsOptimized sets the EbsOptimized field's value.
7800func (s *InstanceTypeSpecification) SetEbsOptimized(v bool) *InstanceTypeSpecification {
7801	s.EbsOptimized = &v
7802	return s
7803}
7804
7805// SetInstanceType sets the InstanceType field's value.
7806func (s *InstanceTypeSpecification) SetInstanceType(v string) *InstanceTypeSpecification {
7807	s.InstanceType = &v
7808	return s
7809}
7810
7811// SetWeightedCapacity sets the WeightedCapacity field's value.
7812func (s *InstanceTypeSpecification) SetWeightedCapacity(v int64) *InstanceTypeSpecification {
7813	s.WeightedCapacity = &v
7814	return s
7815}
7816
7817// Indicates that an error occurred while processing the request and that the
7818// request was not completed.
7819type InternalServerError struct {
7820	_            struct{}                  `type:"structure"`
7821	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
7822
7823	Message_ *string `locationName:"message" type:"string"`
7824}
7825
7826// String returns the string representation
7827func (s InternalServerError) String() string {
7828	return awsutil.Prettify(s)
7829}
7830
7831// GoString returns the string representation
7832func (s InternalServerError) GoString() string {
7833	return s.String()
7834}
7835
7836func newErrorInternalServerError(v protocol.ResponseMetadata) error {
7837	return &InternalServerError{
7838		RespMetadata: v,
7839	}
7840}
7841
7842// Code returns the exception type name.
7843func (s *InternalServerError) Code() string {
7844	return "InternalServerError"
7845}
7846
7847// Message returns the exception's message.
7848func (s *InternalServerError) Message() string {
7849	if s.Message_ != nil {
7850		return *s.Message_
7851	}
7852	return ""
7853}
7854
7855// OrigErr always returns nil, satisfies awserr.Error interface.
7856func (s *InternalServerError) OrigErr() error {
7857	return nil
7858}
7859
7860func (s *InternalServerError) Error() string {
7861	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
7862}
7863
7864// Status code returns the HTTP status code for the request's response error.
7865func (s *InternalServerError) StatusCode() int {
7866	return s.RespMetadata.StatusCode
7867}
7868
7869// RequestID returns the service's response RequestID for request.
7870func (s *InternalServerError) RequestID() string {
7871	return s.RespMetadata.RequestID
7872}
7873
7874// This exception occurs when there is an internal failure in the EMR service.
7875type InternalServerException struct {
7876	_            struct{}                  `type:"structure"`
7877	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
7878
7879	// The message associated with the exception.
7880	Message_ *string `locationName:"Message" type:"string"`
7881}
7882
7883// String returns the string representation
7884func (s InternalServerException) String() string {
7885	return awsutil.Prettify(s)
7886}
7887
7888// GoString returns the string representation
7889func (s InternalServerException) GoString() string {
7890	return s.String()
7891}
7892
7893func newErrorInternalServerException(v protocol.ResponseMetadata) error {
7894	return &InternalServerException{
7895		RespMetadata: v,
7896	}
7897}
7898
7899// Code returns the exception type name.
7900func (s *InternalServerException) Code() string {
7901	return "InternalServerException"
7902}
7903
7904// Message returns the exception's message.
7905func (s *InternalServerException) Message() string {
7906	if s.Message_ != nil {
7907		return *s.Message_
7908	}
7909	return ""
7910}
7911
7912// OrigErr always returns nil, satisfies awserr.Error interface.
7913func (s *InternalServerException) OrigErr() error {
7914	return nil
7915}
7916
7917func (s *InternalServerException) Error() string {
7918	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
7919}
7920
7921// Status code returns the HTTP status code for the request's response error.
7922func (s *InternalServerException) StatusCode() int {
7923	return s.RespMetadata.StatusCode
7924}
7925
7926// RequestID returns the service's response RequestID for request.
7927func (s *InternalServerException) RequestID() string {
7928	return s.RespMetadata.RequestID
7929}
7930
7931// This exception occurs when there is something wrong with user input.
7932type InvalidRequestException struct {
7933	_            struct{}                  `type:"structure"`
7934	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
7935
7936	// The error code associated with the exception.
7937	ErrorCode *string `min:"1" type:"string"`
7938
7939	// The message associated with the exception.
7940	Message_ *string `locationName:"Message" type:"string"`
7941}
7942
7943// String returns the string representation
7944func (s InvalidRequestException) String() string {
7945	return awsutil.Prettify(s)
7946}
7947
7948// GoString returns the string representation
7949func (s InvalidRequestException) GoString() string {
7950	return s.String()
7951}
7952
7953func newErrorInvalidRequestException(v protocol.ResponseMetadata) error {
7954	return &InvalidRequestException{
7955		RespMetadata: v,
7956	}
7957}
7958
7959// Code returns the exception type name.
7960func (s *InvalidRequestException) Code() string {
7961	return "InvalidRequestException"
7962}
7963
7964// Message returns the exception's message.
7965func (s *InvalidRequestException) Message() string {
7966	if s.Message_ != nil {
7967		return *s.Message_
7968	}
7969	return ""
7970}
7971
7972// OrigErr always returns nil, satisfies awserr.Error interface.
7973func (s *InvalidRequestException) OrigErr() error {
7974	return nil
7975}
7976
7977func (s *InvalidRequestException) Error() string {
7978	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
7979}
7980
7981// Status code returns the HTTP status code for the request's response error.
7982func (s *InvalidRequestException) StatusCode() int {
7983	return s.RespMetadata.StatusCode
7984}
7985
7986// RequestID returns the service's response RequestID for request.
7987func (s *InvalidRequestException) RequestID() string {
7988	return s.RespMetadata.RequestID
7989}
7990
7991// A description of a cluster (job flow).
7992type JobFlowDetail struct {
7993	_ struct{} `type:"structure"`
7994
7995	// Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases
7996	// 4.0 and later, ReleaseLabel is used. To specify a custom AMI, use CustomAmiID.
7997	AmiVersion *string `type:"string"`
7998
7999	// An IAM role for automatic scaling policies. The default role is EMR_AutoScaling_DefaultRole.
8000	// The IAM role provides a way for the automatic scaling feature to get the
8001	// required permissions it needs to launch and terminate EC2 instances in an
8002	// instance group.
8003	AutoScalingRole *string `type:"string"`
8004
8005	// A list of the bootstrap actions run by the job flow.
8006	BootstrapActions []*BootstrapActionDetail `type:"list"`
8007
8008	// Describes the execution status of the job flow.
8009	//
8010	// ExecutionStatusDetail is a required field
8011	ExecutionStatusDetail *JobFlowExecutionStatusDetail `type:"structure" required:"true"`
8012
8013	// Describes the Amazon EC2 instances of the job flow.
8014	//
8015	// Instances is a required field
8016	Instances *JobFlowInstancesDetail `type:"structure" required:"true"`
8017
8018	// The job flow identifier.
8019	//
8020	// JobFlowId is a required field
8021	JobFlowId *string `type:"string" required:"true"`
8022
8023	// The IAM role that was specified when the job flow was launched. The EC2 instances
8024	// of the job flow assume this role.
8025	JobFlowRole *string `type:"string"`
8026
8027	// The AWS KMS customer master key (CMK) used for encrypting log files. This
8028	// attribute is only available with EMR version 5.30.0 and later, excluding
8029	// EMR 6.0.0.
8030	LogEncryptionKmsKeyId *string `type:"string"`
8031
8032	// The location in Amazon S3 where log files for the job are stored.
8033	LogUri *string `type:"string"`
8034
8035	// The name of the job flow.
8036	//
8037	// Name is a required field
8038	Name *string `type:"string" required:"true"`
8039
8040	// The way that individual Amazon EC2 instances terminate when an automatic
8041	// scale-in activity occurs or an instance group is resized. TERMINATE_AT_INSTANCE_HOUR
8042	// indicates that Amazon EMR terminates nodes at the instance-hour boundary,
8043	// regardless of when the request to terminate the instance was submitted. This
8044	// option is only available with Amazon EMR 5.1.0 and later and is the default
8045	// for clusters created using that version. TERMINATE_AT_TASK_COMPLETION indicates
8046	// that Amazon EMR blacklists and drains tasks from nodes before terminating
8047	// the Amazon EC2 instances, regardless of the instance-hour boundary. With
8048	// either behavior, Amazon EMR removes the least active nodes first and blocks
8049	// instance termination if it could lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION
8050	// available only in Amazon EMR version 4.1.0 and later, and is the default
8051	// for versions of Amazon EMR earlier than 5.1.0.
8052	ScaleDownBehavior *string `type:"string" enum:"ScaleDownBehavior"`
8053
8054	// The IAM role that will be assumed by the Amazon EMR service to access AWS
8055	// resources on your behalf.
8056	ServiceRole *string `type:"string"`
8057
8058	// A list of steps run by the job flow.
8059	Steps []*StepDetail `type:"list"`
8060
8061	// A list of strings set by third party software when the job flow is launched.
8062	// If you are not using third party software to manage the job flow this value
8063	// is empty.
8064	SupportedProducts []*string `type:"list"`
8065
8066	// Indicates whether the cluster is visible to all IAM users of the AWS account
8067	// associated with the cluster. The default value, true, indicates that all
8068	// IAM users in the AWS account can perform cluster actions if they have the
8069	// proper IAM policy permissions. If this value is false, only the IAM user
8070	// that created the cluster can perform actions. This value can be changed on
8071	// a running cluster by using the SetVisibleToAllUsers action. You can override
8072	// the default value of true when you create a cluster by using the VisibleToAllUsers
8073	// parameter of the RunJobFlow action.
8074	VisibleToAllUsers *bool `type:"boolean"`
8075}
8076
8077// String returns the string representation
8078func (s JobFlowDetail) String() string {
8079	return awsutil.Prettify(s)
8080}
8081
8082// GoString returns the string representation
8083func (s JobFlowDetail) GoString() string {
8084	return s.String()
8085}
8086
8087// SetAmiVersion sets the AmiVersion field's value.
8088func (s *JobFlowDetail) SetAmiVersion(v string) *JobFlowDetail {
8089	s.AmiVersion = &v
8090	return s
8091}
8092
8093// SetAutoScalingRole sets the AutoScalingRole field's value.
8094func (s *JobFlowDetail) SetAutoScalingRole(v string) *JobFlowDetail {
8095	s.AutoScalingRole = &v
8096	return s
8097}
8098
8099// SetBootstrapActions sets the BootstrapActions field's value.
8100func (s *JobFlowDetail) SetBootstrapActions(v []*BootstrapActionDetail) *JobFlowDetail {
8101	s.BootstrapActions = v
8102	return s
8103}
8104
8105// SetExecutionStatusDetail sets the ExecutionStatusDetail field's value.
8106func (s *JobFlowDetail) SetExecutionStatusDetail(v *JobFlowExecutionStatusDetail) *JobFlowDetail {
8107	s.ExecutionStatusDetail = v
8108	return s
8109}
8110
8111// SetInstances sets the Instances field's value.
8112func (s *JobFlowDetail) SetInstances(v *JobFlowInstancesDetail) *JobFlowDetail {
8113	s.Instances = v
8114	return s
8115}
8116
8117// SetJobFlowId sets the JobFlowId field's value.
8118func (s *JobFlowDetail) SetJobFlowId(v string) *JobFlowDetail {
8119	s.JobFlowId = &v
8120	return s
8121}
8122
8123// SetJobFlowRole sets the JobFlowRole field's value.
8124func (s *JobFlowDetail) SetJobFlowRole(v string) *JobFlowDetail {
8125	s.JobFlowRole = &v
8126	return s
8127}
8128
8129// SetLogEncryptionKmsKeyId sets the LogEncryptionKmsKeyId field's value.
8130func (s *JobFlowDetail) SetLogEncryptionKmsKeyId(v string) *JobFlowDetail {
8131	s.LogEncryptionKmsKeyId = &v
8132	return s
8133}
8134
8135// SetLogUri sets the LogUri field's value.
8136func (s *JobFlowDetail) SetLogUri(v string) *JobFlowDetail {
8137	s.LogUri = &v
8138	return s
8139}
8140
8141// SetName sets the Name field's value.
8142func (s *JobFlowDetail) SetName(v string) *JobFlowDetail {
8143	s.Name = &v
8144	return s
8145}
8146
8147// SetScaleDownBehavior sets the ScaleDownBehavior field's value.
8148func (s *JobFlowDetail) SetScaleDownBehavior(v string) *JobFlowDetail {
8149	s.ScaleDownBehavior = &v
8150	return s
8151}
8152
8153// SetServiceRole sets the ServiceRole field's value.
8154func (s *JobFlowDetail) SetServiceRole(v string) *JobFlowDetail {
8155	s.ServiceRole = &v
8156	return s
8157}
8158
8159// SetSteps sets the Steps field's value.
8160func (s *JobFlowDetail) SetSteps(v []*StepDetail) *JobFlowDetail {
8161	s.Steps = v
8162	return s
8163}
8164
8165// SetSupportedProducts sets the SupportedProducts field's value.
8166func (s *JobFlowDetail) SetSupportedProducts(v []*string) *JobFlowDetail {
8167	s.SupportedProducts = v
8168	return s
8169}
8170
8171// SetVisibleToAllUsers sets the VisibleToAllUsers field's value.
8172func (s *JobFlowDetail) SetVisibleToAllUsers(v bool) *JobFlowDetail {
8173	s.VisibleToAllUsers = &v
8174	return s
8175}
8176
8177// Describes the status of the cluster (job flow).
8178type JobFlowExecutionStatusDetail struct {
8179	_ struct{} `type:"structure"`
8180
8181	// The creation date and time of the job flow.
8182	//
8183	// CreationDateTime is a required field
8184	CreationDateTime *time.Time `type:"timestamp" required:"true"`
8185
8186	// The completion date and time of the job flow.
8187	EndDateTime *time.Time `type:"timestamp"`
8188
8189	// Description of the job flow last changed state.
8190	LastStateChangeReason *string `type:"string"`
8191
8192	// The date and time when the job flow was ready to start running bootstrap
8193	// actions.
8194	ReadyDateTime *time.Time `type:"timestamp"`
8195
8196	// The start date and time of the job flow.
8197	StartDateTime *time.Time `type:"timestamp"`
8198
8199	// The state of the job flow.
8200	//
8201	// State is a required field
8202	State *string `type:"string" required:"true" enum:"JobFlowExecutionState"`
8203}
8204
8205// String returns the string representation
8206func (s JobFlowExecutionStatusDetail) String() string {
8207	return awsutil.Prettify(s)
8208}
8209
8210// GoString returns the string representation
8211func (s JobFlowExecutionStatusDetail) GoString() string {
8212	return s.String()
8213}
8214
8215// SetCreationDateTime sets the CreationDateTime field's value.
8216func (s *JobFlowExecutionStatusDetail) SetCreationDateTime(v time.Time) *JobFlowExecutionStatusDetail {
8217	s.CreationDateTime = &v
8218	return s
8219}
8220
8221// SetEndDateTime sets the EndDateTime field's value.
8222func (s *JobFlowExecutionStatusDetail) SetEndDateTime(v time.Time) *JobFlowExecutionStatusDetail {
8223	s.EndDateTime = &v
8224	return s
8225}
8226
8227// SetLastStateChangeReason sets the LastStateChangeReason field's value.
8228func (s *JobFlowExecutionStatusDetail) SetLastStateChangeReason(v string) *JobFlowExecutionStatusDetail {
8229	s.LastStateChangeReason = &v
8230	return s
8231}
8232
8233// SetReadyDateTime sets the ReadyDateTime field's value.
8234func (s *JobFlowExecutionStatusDetail) SetReadyDateTime(v time.Time) *JobFlowExecutionStatusDetail {
8235	s.ReadyDateTime = &v
8236	return s
8237}
8238
8239// SetStartDateTime sets the StartDateTime field's value.
8240func (s *JobFlowExecutionStatusDetail) SetStartDateTime(v time.Time) *JobFlowExecutionStatusDetail {
8241	s.StartDateTime = &v
8242	return s
8243}
8244
8245// SetState sets the State field's value.
8246func (s *JobFlowExecutionStatusDetail) SetState(v string) *JobFlowExecutionStatusDetail {
8247	s.State = &v
8248	return s
8249}
8250
8251// A description of the Amazon EC2 instance on which the cluster (job flow)
8252// runs. A valid JobFlowInstancesConfig must contain either InstanceGroups or
8253// InstanceFleets, which is the recommended configuration. They cannot be used
8254// together. You may also have MasterInstanceType, SlaveInstanceType, and InstanceCount
8255// (all three must be present), but we don't recommend this configuration.
8256type JobFlowInstancesConfig struct {
8257	_ struct{} `type:"structure"`
8258
8259	// A list of additional Amazon EC2 security group IDs for the master node.
8260	AdditionalMasterSecurityGroups []*string `type:"list"`
8261
8262	// A list of additional Amazon EC2 security group IDs for the core and task
8263	// nodes.
8264	AdditionalSlaveSecurityGroups []*string `type:"list"`
8265
8266	// The name of the EC2 key pair that can be used to ssh to the master node as
8267	// the user called "hadoop."
8268	Ec2KeyName *string `type:"string"`
8269
8270	// Applies to clusters that use the uniform instance group configuration. To
8271	// launch the cluster in Amazon Virtual Private Cloud (Amazon VPC), set this
8272	// parameter to the identifier of the Amazon VPC subnet where you want the cluster
8273	// to launch. If you do not specify this value and your account supports EC2-Classic,
8274	// the cluster launches in EC2-Classic.
8275	Ec2SubnetId *string `type:"string"`
8276
8277	// Applies to clusters that use the instance fleet configuration. When multiple
8278	// EC2 subnet IDs are specified, Amazon EMR evaluates them and launches instances
8279	// in the optimal subnet.
8280	//
8281	// The instance fleet configuration is available only in Amazon EMR versions
8282	// 4.8.0 and later, excluding 5.0.x versions.
8283	Ec2SubnetIds []*string `type:"list"`
8284
8285	// The identifier of the Amazon EC2 security group for the master node.
8286	EmrManagedMasterSecurityGroup *string `type:"string"`
8287
8288	// The identifier of the Amazon EC2 security group for the core and task nodes.
8289	EmrManagedSlaveSecurityGroup *string `type:"string"`
8290
8291	// Applies only to Amazon EMR release versions earlier than 4.0. The Hadoop
8292	// version for the cluster. Valid inputs are "0.18" (deprecated), "0.20" (deprecated),
8293	// "0.20.205" (deprecated), "1.0.3", "2.2.0", or "2.4.0". If you do not set
8294	// this value, the default of 0.18 is used, unless the AmiVersion parameter
8295	// is set in the RunJobFlow call, in which case the default version of Hadoop
8296	// for that AMI version is used.
8297	HadoopVersion *string `type:"string"`
8298
8299	// The number of EC2 instances in the cluster.
8300	InstanceCount *int64 `type:"integer"`
8301
8302	//
8303	// The instance fleet configuration is available only in Amazon EMR versions
8304	// 4.8.0 and later, excluding 5.0.x versions.
8305	//
8306	// Describes the EC2 instances and instance configurations for clusters that
8307	// use the instance fleet configuration.
8308	InstanceFleets []*InstanceFleetConfig `type:"list"`
8309
8310	// Configuration for the instance groups in a cluster.
8311	InstanceGroups []*InstanceGroupConfig `type:"list"`
8312
8313	// Specifies whether the cluster should remain available after completing all
8314	// steps.
8315	KeepJobFlowAliveWhenNoSteps *bool `type:"boolean"`
8316
8317	// The EC2 instance type of the master node.
8318	MasterInstanceType *string `min:"1" type:"string"`
8319
8320	// The Availability Zone in which the cluster runs.
8321	Placement *PlacementType `type:"structure"`
8322
8323	// The identifier of the Amazon EC2 security group for the Amazon EMR service
8324	// to access clusters in VPC private subnets.
8325	ServiceAccessSecurityGroup *string `type:"string"`
8326
8327	// The EC2 instance type of the core and task nodes.
8328	SlaveInstanceType *string `min:"1" type:"string"`
8329
8330	// Specifies whether to lock the cluster to prevent the Amazon EC2 instances
8331	// from being terminated by API call, user intervention, or in the event of
8332	// a job-flow error.
8333	TerminationProtected *bool `type:"boolean"`
8334}
8335
8336// String returns the string representation
8337func (s JobFlowInstancesConfig) String() string {
8338	return awsutil.Prettify(s)
8339}
8340
8341// GoString returns the string representation
8342func (s JobFlowInstancesConfig) GoString() string {
8343	return s.String()
8344}
8345
8346// Validate inspects the fields of the type to determine if they are valid.
8347func (s *JobFlowInstancesConfig) Validate() error {
8348	invalidParams := request.ErrInvalidParams{Context: "JobFlowInstancesConfig"}
8349	if s.MasterInstanceType != nil && len(*s.MasterInstanceType) < 1 {
8350		invalidParams.Add(request.NewErrParamMinLen("MasterInstanceType", 1))
8351	}
8352	if s.SlaveInstanceType != nil && len(*s.SlaveInstanceType) < 1 {
8353		invalidParams.Add(request.NewErrParamMinLen("SlaveInstanceType", 1))
8354	}
8355	if s.InstanceFleets != nil {
8356		for i, v := range s.InstanceFleets {
8357			if v == nil {
8358				continue
8359			}
8360			if err := v.Validate(); err != nil {
8361				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "InstanceFleets", i), err.(request.ErrInvalidParams))
8362			}
8363		}
8364	}
8365	if s.InstanceGroups != nil {
8366		for i, v := range s.InstanceGroups {
8367			if v == nil {
8368				continue
8369			}
8370			if err := v.Validate(); err != nil {
8371				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "InstanceGroups", i), err.(request.ErrInvalidParams))
8372			}
8373		}
8374	}
8375
8376	if invalidParams.Len() > 0 {
8377		return invalidParams
8378	}
8379	return nil
8380}
8381
8382// SetAdditionalMasterSecurityGroups sets the AdditionalMasterSecurityGroups field's value.
8383func (s *JobFlowInstancesConfig) SetAdditionalMasterSecurityGroups(v []*string) *JobFlowInstancesConfig {
8384	s.AdditionalMasterSecurityGroups = v
8385	return s
8386}
8387
8388// SetAdditionalSlaveSecurityGroups sets the AdditionalSlaveSecurityGroups field's value.
8389func (s *JobFlowInstancesConfig) SetAdditionalSlaveSecurityGroups(v []*string) *JobFlowInstancesConfig {
8390	s.AdditionalSlaveSecurityGroups = v
8391	return s
8392}
8393
8394// SetEc2KeyName sets the Ec2KeyName field's value.
8395func (s *JobFlowInstancesConfig) SetEc2KeyName(v string) *JobFlowInstancesConfig {
8396	s.Ec2KeyName = &v
8397	return s
8398}
8399
8400// SetEc2SubnetId sets the Ec2SubnetId field's value.
8401func (s *JobFlowInstancesConfig) SetEc2SubnetId(v string) *JobFlowInstancesConfig {
8402	s.Ec2SubnetId = &v
8403	return s
8404}
8405
8406// SetEc2SubnetIds sets the Ec2SubnetIds field's value.
8407func (s *JobFlowInstancesConfig) SetEc2SubnetIds(v []*string) *JobFlowInstancesConfig {
8408	s.Ec2SubnetIds = v
8409	return s
8410}
8411
8412// SetEmrManagedMasterSecurityGroup sets the EmrManagedMasterSecurityGroup field's value.
8413func (s *JobFlowInstancesConfig) SetEmrManagedMasterSecurityGroup(v string) *JobFlowInstancesConfig {
8414	s.EmrManagedMasterSecurityGroup = &v
8415	return s
8416}
8417
8418// SetEmrManagedSlaveSecurityGroup sets the EmrManagedSlaveSecurityGroup field's value.
8419func (s *JobFlowInstancesConfig) SetEmrManagedSlaveSecurityGroup(v string) *JobFlowInstancesConfig {
8420	s.EmrManagedSlaveSecurityGroup = &v
8421	return s
8422}
8423
8424// SetHadoopVersion sets the HadoopVersion field's value.
8425func (s *JobFlowInstancesConfig) SetHadoopVersion(v string) *JobFlowInstancesConfig {
8426	s.HadoopVersion = &v
8427	return s
8428}
8429
8430// SetInstanceCount sets the InstanceCount field's value.
8431func (s *JobFlowInstancesConfig) SetInstanceCount(v int64) *JobFlowInstancesConfig {
8432	s.InstanceCount = &v
8433	return s
8434}
8435
8436// SetInstanceFleets sets the InstanceFleets field's value.
8437func (s *JobFlowInstancesConfig) SetInstanceFleets(v []*InstanceFleetConfig) *JobFlowInstancesConfig {
8438	s.InstanceFleets = v
8439	return s
8440}
8441
8442// SetInstanceGroups sets the InstanceGroups field's value.
8443func (s *JobFlowInstancesConfig) SetInstanceGroups(v []*InstanceGroupConfig) *JobFlowInstancesConfig {
8444	s.InstanceGroups = v
8445	return s
8446}
8447
8448// SetKeepJobFlowAliveWhenNoSteps sets the KeepJobFlowAliveWhenNoSteps field's value.
8449func (s *JobFlowInstancesConfig) SetKeepJobFlowAliveWhenNoSteps(v bool) *JobFlowInstancesConfig {
8450	s.KeepJobFlowAliveWhenNoSteps = &v
8451	return s
8452}
8453
8454// SetMasterInstanceType sets the MasterInstanceType field's value.
8455func (s *JobFlowInstancesConfig) SetMasterInstanceType(v string) *JobFlowInstancesConfig {
8456	s.MasterInstanceType = &v
8457	return s
8458}
8459
8460// SetPlacement sets the Placement field's value.
8461func (s *JobFlowInstancesConfig) SetPlacement(v *PlacementType) *JobFlowInstancesConfig {
8462	s.Placement = v
8463	return s
8464}
8465
8466// SetServiceAccessSecurityGroup sets the ServiceAccessSecurityGroup field's value.
8467func (s *JobFlowInstancesConfig) SetServiceAccessSecurityGroup(v string) *JobFlowInstancesConfig {
8468	s.ServiceAccessSecurityGroup = &v
8469	return s
8470}
8471
8472// SetSlaveInstanceType sets the SlaveInstanceType field's value.
8473func (s *JobFlowInstancesConfig) SetSlaveInstanceType(v string) *JobFlowInstancesConfig {
8474	s.SlaveInstanceType = &v
8475	return s
8476}
8477
8478// SetTerminationProtected sets the TerminationProtected field's value.
8479func (s *JobFlowInstancesConfig) SetTerminationProtected(v bool) *JobFlowInstancesConfig {
8480	s.TerminationProtected = &v
8481	return s
8482}
8483
8484// Specify the type of Amazon EC2 instances that the cluster (job flow) runs
8485// on.
8486type JobFlowInstancesDetail struct {
8487	_ struct{} `type:"structure"`
8488
8489	// The name of an Amazon EC2 key pair that can be used to ssh to the master
8490	// node.
8491	Ec2KeyName *string `type:"string"`
8492
8493	// For clusters launched within Amazon Virtual Private Cloud, this is the identifier
8494	// of the subnet where the cluster was launched.
8495	Ec2SubnetId *string `type:"string"`
8496
8497	// The Hadoop version for the cluster.
8498	HadoopVersion *string `type:"string"`
8499
8500	// The number of Amazon EC2 instances in the cluster. If the value is 1, the
8501	// same instance serves as both the master and core and task node. If the value
8502	// is greater than 1, one instance is the master node and all others are core
8503	// and task nodes.
8504	//
8505	// InstanceCount is a required field
8506	InstanceCount *int64 `type:"integer" required:"true"`
8507
8508	// Details about the instance groups in a cluster.
8509	InstanceGroups []*InstanceGroupDetail `type:"list"`
8510
8511	// Specifies whether the cluster should remain available after completing all
8512	// steps.
8513	KeepJobFlowAliveWhenNoSteps *bool `type:"boolean"`
8514
8515	// The Amazon EC2 instance identifier of the master node.
8516	MasterInstanceId *string `type:"string"`
8517
8518	// The Amazon EC2 master node instance type.
8519	//
8520	// MasterInstanceType is a required field
8521	MasterInstanceType *string `min:"1" type:"string" required:"true"`
8522
8523	// The DNS name of the master node. If the cluster is on a private subnet, this
8524	// is the private DNS name. On a public subnet, this is the public DNS name.
8525	MasterPublicDnsName *string `type:"string"`
8526
8527	// An approximation of the cost of the cluster, represented in m1.small/hours.
8528	// This value is incremented one time for every hour that an m1.small runs.
8529	// Larger instances are weighted more, so an Amazon EC2 instance that is roughly
8530	// four times more expensive would result in the normalized instance hours being
8531	// incremented by four. This result is only an approximation and does not reflect
8532	// the actual billing rate.
8533	NormalizedInstanceHours *int64 `type:"integer"`
8534
8535	// The Amazon EC2 Availability Zone for the cluster.
8536	Placement *PlacementType `type:"structure"`
8537
8538	// The Amazon EC2 core and task node instance type.
8539	//
8540	// SlaveInstanceType is a required field
8541	SlaveInstanceType *string `min:"1" type:"string" required:"true"`
8542
8543	// Specifies whether the Amazon EC2 instances in the cluster are protected from
8544	// termination by API calls, user intervention, or in the event of a job-flow
8545	// error.
8546	TerminationProtected *bool `type:"boolean"`
8547}
8548
8549// String returns the string representation
8550func (s JobFlowInstancesDetail) String() string {
8551	return awsutil.Prettify(s)
8552}
8553
8554// GoString returns the string representation
8555func (s JobFlowInstancesDetail) GoString() string {
8556	return s.String()
8557}
8558
8559// SetEc2KeyName sets the Ec2KeyName field's value.
8560func (s *JobFlowInstancesDetail) SetEc2KeyName(v string) *JobFlowInstancesDetail {
8561	s.Ec2KeyName = &v
8562	return s
8563}
8564
8565// SetEc2SubnetId sets the Ec2SubnetId field's value.
8566func (s *JobFlowInstancesDetail) SetEc2SubnetId(v string) *JobFlowInstancesDetail {
8567	s.Ec2SubnetId = &v
8568	return s
8569}
8570
8571// SetHadoopVersion sets the HadoopVersion field's value.
8572func (s *JobFlowInstancesDetail) SetHadoopVersion(v string) *JobFlowInstancesDetail {
8573	s.HadoopVersion = &v
8574	return s
8575}
8576
8577// SetInstanceCount sets the InstanceCount field's value.
8578func (s *JobFlowInstancesDetail) SetInstanceCount(v int64) *JobFlowInstancesDetail {
8579	s.InstanceCount = &v
8580	return s
8581}
8582
8583// SetInstanceGroups sets the InstanceGroups field's value.
8584func (s *JobFlowInstancesDetail) SetInstanceGroups(v []*InstanceGroupDetail) *JobFlowInstancesDetail {
8585	s.InstanceGroups = v
8586	return s
8587}
8588
8589// SetKeepJobFlowAliveWhenNoSteps sets the KeepJobFlowAliveWhenNoSteps field's value.
8590func (s *JobFlowInstancesDetail) SetKeepJobFlowAliveWhenNoSteps(v bool) *JobFlowInstancesDetail {
8591	s.KeepJobFlowAliveWhenNoSteps = &v
8592	return s
8593}
8594
8595// SetMasterInstanceId sets the MasterInstanceId field's value.
8596func (s *JobFlowInstancesDetail) SetMasterInstanceId(v string) *JobFlowInstancesDetail {
8597	s.MasterInstanceId = &v
8598	return s
8599}
8600
8601// SetMasterInstanceType sets the MasterInstanceType field's value.
8602func (s *JobFlowInstancesDetail) SetMasterInstanceType(v string) *JobFlowInstancesDetail {
8603	s.MasterInstanceType = &v
8604	return s
8605}
8606
8607// SetMasterPublicDnsName sets the MasterPublicDnsName field's value.
8608func (s *JobFlowInstancesDetail) SetMasterPublicDnsName(v string) *JobFlowInstancesDetail {
8609	s.MasterPublicDnsName = &v
8610	return s
8611}
8612
8613// SetNormalizedInstanceHours sets the NormalizedInstanceHours field's value.
8614func (s *JobFlowInstancesDetail) SetNormalizedInstanceHours(v int64) *JobFlowInstancesDetail {
8615	s.NormalizedInstanceHours = &v
8616	return s
8617}
8618
8619// SetPlacement sets the Placement field's value.
8620func (s *JobFlowInstancesDetail) SetPlacement(v *PlacementType) *JobFlowInstancesDetail {
8621	s.Placement = v
8622	return s
8623}
8624
8625// SetSlaveInstanceType sets the SlaveInstanceType field's value.
8626func (s *JobFlowInstancesDetail) SetSlaveInstanceType(v string) *JobFlowInstancesDetail {
8627	s.SlaveInstanceType = &v
8628	return s
8629}
8630
8631// SetTerminationProtected sets the TerminationProtected field's value.
8632func (s *JobFlowInstancesDetail) SetTerminationProtected(v bool) *JobFlowInstancesDetail {
8633	s.TerminationProtected = &v
8634	return s
8635}
8636
8637// Attributes for Kerberos configuration when Kerberos authentication is enabled
8638// using a security configuration. For more information see Use Kerberos Authentication
8639// (https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-kerberos.html)
8640// in the EMR Management Guide.
8641type KerberosAttributes struct {
8642	_ struct{} `type:"structure"`
8643
8644	// The Active Directory password for ADDomainJoinUser.
8645	ADDomainJoinPassword *string `type:"string"`
8646
8647	// Required only when establishing a cross-realm trust with an Active Directory
8648	// domain. A user with sufficient privileges to join resources to the domain.
8649	ADDomainJoinUser *string `type:"string"`
8650
8651	// Required only when establishing a cross-realm trust with a KDC in a different
8652	// realm. The cross-realm principal password, which must be identical across
8653	// realms.
8654	CrossRealmTrustPrincipalPassword *string `type:"string"`
8655
8656	// The password used within the cluster for the kadmin service on the cluster-dedicated
8657	// KDC, which maintains Kerberos principals, password policies, and keytabs
8658	// for the cluster.
8659	//
8660	// KdcAdminPassword is a required field
8661	KdcAdminPassword *string `type:"string" required:"true"`
8662
8663	// The name of the Kerberos realm to which all nodes in a cluster belong. For
8664	// example, EC2.INTERNAL.
8665	//
8666	// Realm is a required field
8667	Realm *string `type:"string" required:"true"`
8668}
8669
8670// String returns the string representation
8671func (s KerberosAttributes) String() string {
8672	return awsutil.Prettify(s)
8673}
8674
8675// GoString returns the string representation
8676func (s KerberosAttributes) GoString() string {
8677	return s.String()
8678}
8679
8680// Validate inspects the fields of the type to determine if they are valid.
8681func (s *KerberosAttributes) Validate() error {
8682	invalidParams := request.ErrInvalidParams{Context: "KerberosAttributes"}
8683	if s.KdcAdminPassword == nil {
8684		invalidParams.Add(request.NewErrParamRequired("KdcAdminPassword"))
8685	}
8686	if s.Realm == nil {
8687		invalidParams.Add(request.NewErrParamRequired("Realm"))
8688	}
8689
8690	if invalidParams.Len() > 0 {
8691		return invalidParams
8692	}
8693	return nil
8694}
8695
8696// SetADDomainJoinPassword sets the ADDomainJoinPassword field's value.
8697func (s *KerberosAttributes) SetADDomainJoinPassword(v string) *KerberosAttributes {
8698	s.ADDomainJoinPassword = &v
8699	return s
8700}
8701
8702// SetADDomainJoinUser sets the ADDomainJoinUser field's value.
8703func (s *KerberosAttributes) SetADDomainJoinUser(v string) *KerberosAttributes {
8704	s.ADDomainJoinUser = &v
8705	return s
8706}
8707
8708// SetCrossRealmTrustPrincipalPassword sets the CrossRealmTrustPrincipalPassword field's value.
8709func (s *KerberosAttributes) SetCrossRealmTrustPrincipalPassword(v string) *KerberosAttributes {
8710	s.CrossRealmTrustPrincipalPassword = &v
8711	return s
8712}
8713
8714// SetKdcAdminPassword sets the KdcAdminPassword field's value.
8715func (s *KerberosAttributes) SetKdcAdminPassword(v string) *KerberosAttributes {
8716	s.KdcAdminPassword = &v
8717	return s
8718}
8719
8720// SetRealm sets the Realm field's value.
8721func (s *KerberosAttributes) SetRealm(v string) *KerberosAttributes {
8722	s.Realm = &v
8723	return s
8724}
8725
8726// A key value pair.
8727type KeyValue struct {
8728	_ struct{} `type:"structure"`
8729
8730	// The unique identifier of a key value pair.
8731	Key *string `type:"string"`
8732
8733	// The value part of the identified key.
8734	Value *string `type:"string"`
8735}
8736
8737// String returns the string representation
8738func (s KeyValue) String() string {
8739	return awsutil.Prettify(s)
8740}
8741
8742// GoString returns the string representation
8743func (s KeyValue) GoString() string {
8744	return s.String()
8745}
8746
8747// SetKey sets the Key field's value.
8748func (s *KeyValue) SetKey(v string) *KeyValue {
8749	s.Key = &v
8750	return s
8751}
8752
8753// SetValue sets the Value field's value.
8754func (s *KeyValue) SetValue(v string) *KeyValue {
8755	s.Value = &v
8756	return s
8757}
8758
8759// This input determines which bootstrap actions to retrieve.
8760type ListBootstrapActionsInput struct {
8761	_ struct{} `type:"structure"`
8762
8763	// The cluster identifier for the bootstrap actions to list.
8764	//
8765	// ClusterId is a required field
8766	ClusterId *string `type:"string" required:"true"`
8767
8768	// The pagination token that indicates the next set of results to retrieve.
8769	Marker *string `type:"string"`
8770}
8771
8772// String returns the string representation
8773func (s ListBootstrapActionsInput) String() string {
8774	return awsutil.Prettify(s)
8775}
8776
8777// GoString returns the string representation
8778func (s ListBootstrapActionsInput) GoString() string {
8779	return s.String()
8780}
8781
8782// Validate inspects the fields of the type to determine if they are valid.
8783func (s *ListBootstrapActionsInput) Validate() error {
8784	invalidParams := request.ErrInvalidParams{Context: "ListBootstrapActionsInput"}
8785	if s.ClusterId == nil {
8786		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
8787	}
8788
8789	if invalidParams.Len() > 0 {
8790		return invalidParams
8791	}
8792	return nil
8793}
8794
8795// SetClusterId sets the ClusterId field's value.
8796func (s *ListBootstrapActionsInput) SetClusterId(v string) *ListBootstrapActionsInput {
8797	s.ClusterId = &v
8798	return s
8799}
8800
8801// SetMarker sets the Marker field's value.
8802func (s *ListBootstrapActionsInput) SetMarker(v string) *ListBootstrapActionsInput {
8803	s.Marker = &v
8804	return s
8805}
8806
8807// This output contains the bootstrap actions detail.
8808type ListBootstrapActionsOutput struct {
8809	_ struct{} `type:"structure"`
8810
8811	// The bootstrap actions associated with the cluster.
8812	BootstrapActions []*Command `type:"list"`
8813
8814	// The pagination token that indicates the next set of results to retrieve.
8815	Marker *string `type:"string"`
8816}
8817
8818// String returns the string representation
8819func (s ListBootstrapActionsOutput) String() string {
8820	return awsutil.Prettify(s)
8821}
8822
8823// GoString returns the string representation
8824func (s ListBootstrapActionsOutput) GoString() string {
8825	return s.String()
8826}
8827
8828// SetBootstrapActions sets the BootstrapActions field's value.
8829func (s *ListBootstrapActionsOutput) SetBootstrapActions(v []*Command) *ListBootstrapActionsOutput {
8830	s.BootstrapActions = v
8831	return s
8832}
8833
8834// SetMarker sets the Marker field's value.
8835func (s *ListBootstrapActionsOutput) SetMarker(v string) *ListBootstrapActionsOutput {
8836	s.Marker = &v
8837	return s
8838}
8839
8840// This input determines how the ListClusters action filters the list of clusters
8841// that it returns.
8842type ListClustersInput struct {
8843	_ struct{} `type:"structure"`
8844
8845	// The cluster state filters to apply when listing clusters.
8846	ClusterStates []*string `type:"list"`
8847
8848	// The creation date and time beginning value filter for listing clusters.
8849	CreatedAfter *time.Time `type:"timestamp"`
8850
8851	// The creation date and time end value filter for listing clusters.
8852	CreatedBefore *time.Time `type:"timestamp"`
8853
8854	// The pagination token that indicates the next set of results to retrieve.
8855	Marker *string `type:"string"`
8856}
8857
8858// String returns the string representation
8859func (s ListClustersInput) String() string {
8860	return awsutil.Prettify(s)
8861}
8862
8863// GoString returns the string representation
8864func (s ListClustersInput) GoString() string {
8865	return s.String()
8866}
8867
8868// SetClusterStates sets the ClusterStates field's value.
8869func (s *ListClustersInput) SetClusterStates(v []*string) *ListClustersInput {
8870	s.ClusterStates = v
8871	return s
8872}
8873
8874// SetCreatedAfter sets the CreatedAfter field's value.
8875func (s *ListClustersInput) SetCreatedAfter(v time.Time) *ListClustersInput {
8876	s.CreatedAfter = &v
8877	return s
8878}
8879
8880// SetCreatedBefore sets the CreatedBefore field's value.
8881func (s *ListClustersInput) SetCreatedBefore(v time.Time) *ListClustersInput {
8882	s.CreatedBefore = &v
8883	return s
8884}
8885
8886// SetMarker sets the Marker field's value.
8887func (s *ListClustersInput) SetMarker(v string) *ListClustersInput {
8888	s.Marker = &v
8889	return s
8890}
8891
8892// This contains a ClusterSummaryList with the cluster details; for example,
8893// the cluster IDs, names, and status.
8894type ListClustersOutput struct {
8895	_ struct{} `type:"structure"`
8896
8897	// The list of clusters for the account based on the given filters.
8898	Clusters []*ClusterSummary `type:"list"`
8899
8900	// The pagination token that indicates the next set of results to retrieve.
8901	Marker *string `type:"string"`
8902}
8903
8904// String returns the string representation
8905func (s ListClustersOutput) String() string {
8906	return awsutil.Prettify(s)
8907}
8908
8909// GoString returns the string representation
8910func (s ListClustersOutput) GoString() string {
8911	return s.String()
8912}
8913
8914// SetClusters sets the Clusters field's value.
8915func (s *ListClustersOutput) SetClusters(v []*ClusterSummary) *ListClustersOutput {
8916	s.Clusters = v
8917	return s
8918}
8919
8920// SetMarker sets the Marker field's value.
8921func (s *ListClustersOutput) SetMarker(v string) *ListClustersOutput {
8922	s.Marker = &v
8923	return s
8924}
8925
8926type ListInstanceFleetsInput struct {
8927	_ struct{} `type:"structure"`
8928
8929	// The unique identifier of the cluster.
8930	//
8931	// ClusterId is a required field
8932	ClusterId *string `type:"string" required:"true"`
8933
8934	// The pagination token that indicates the next set of results to retrieve.
8935	Marker *string `type:"string"`
8936}
8937
8938// String returns the string representation
8939func (s ListInstanceFleetsInput) String() string {
8940	return awsutil.Prettify(s)
8941}
8942
8943// GoString returns the string representation
8944func (s ListInstanceFleetsInput) GoString() string {
8945	return s.String()
8946}
8947
8948// Validate inspects the fields of the type to determine if they are valid.
8949func (s *ListInstanceFleetsInput) Validate() error {
8950	invalidParams := request.ErrInvalidParams{Context: "ListInstanceFleetsInput"}
8951	if s.ClusterId == nil {
8952		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
8953	}
8954
8955	if invalidParams.Len() > 0 {
8956		return invalidParams
8957	}
8958	return nil
8959}
8960
8961// SetClusterId sets the ClusterId field's value.
8962func (s *ListInstanceFleetsInput) SetClusterId(v string) *ListInstanceFleetsInput {
8963	s.ClusterId = &v
8964	return s
8965}
8966
8967// SetMarker sets the Marker field's value.
8968func (s *ListInstanceFleetsInput) SetMarker(v string) *ListInstanceFleetsInput {
8969	s.Marker = &v
8970	return s
8971}
8972
8973type ListInstanceFleetsOutput struct {
8974	_ struct{} `type:"structure"`
8975
8976	// The list of instance fleets for the cluster and given filters.
8977	InstanceFleets []*InstanceFleet `type:"list"`
8978
8979	// The pagination token that indicates the next set of results to retrieve.
8980	Marker *string `type:"string"`
8981}
8982
8983// String returns the string representation
8984func (s ListInstanceFleetsOutput) String() string {
8985	return awsutil.Prettify(s)
8986}
8987
8988// GoString returns the string representation
8989func (s ListInstanceFleetsOutput) GoString() string {
8990	return s.String()
8991}
8992
8993// SetInstanceFleets sets the InstanceFleets field's value.
8994func (s *ListInstanceFleetsOutput) SetInstanceFleets(v []*InstanceFleet) *ListInstanceFleetsOutput {
8995	s.InstanceFleets = v
8996	return s
8997}
8998
8999// SetMarker sets the Marker field's value.
9000func (s *ListInstanceFleetsOutput) SetMarker(v string) *ListInstanceFleetsOutput {
9001	s.Marker = &v
9002	return s
9003}
9004
9005// This input determines which instance groups to retrieve.
9006type ListInstanceGroupsInput struct {
9007	_ struct{} `type:"structure"`
9008
9009	// The identifier of the cluster for which to list the instance groups.
9010	//
9011	// ClusterId is a required field
9012	ClusterId *string `type:"string" required:"true"`
9013
9014	// The pagination token that indicates the next set of results to retrieve.
9015	Marker *string `type:"string"`
9016}
9017
9018// String returns the string representation
9019func (s ListInstanceGroupsInput) String() string {
9020	return awsutil.Prettify(s)
9021}
9022
9023// GoString returns the string representation
9024func (s ListInstanceGroupsInput) GoString() string {
9025	return s.String()
9026}
9027
9028// Validate inspects the fields of the type to determine if they are valid.
9029func (s *ListInstanceGroupsInput) Validate() error {
9030	invalidParams := request.ErrInvalidParams{Context: "ListInstanceGroupsInput"}
9031	if s.ClusterId == nil {
9032		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
9033	}
9034
9035	if invalidParams.Len() > 0 {
9036		return invalidParams
9037	}
9038	return nil
9039}
9040
9041// SetClusterId sets the ClusterId field's value.
9042func (s *ListInstanceGroupsInput) SetClusterId(v string) *ListInstanceGroupsInput {
9043	s.ClusterId = &v
9044	return s
9045}
9046
9047// SetMarker sets the Marker field's value.
9048func (s *ListInstanceGroupsInput) SetMarker(v string) *ListInstanceGroupsInput {
9049	s.Marker = &v
9050	return s
9051}
9052
9053// This input determines which instance groups to retrieve.
9054type ListInstanceGroupsOutput struct {
9055	_ struct{} `type:"structure"`
9056
9057	// The list of instance groups for the cluster and given filters.
9058	InstanceGroups []*InstanceGroup `type:"list"`
9059
9060	// The pagination token that indicates the next set of results to retrieve.
9061	Marker *string `type:"string"`
9062}
9063
9064// String returns the string representation
9065func (s ListInstanceGroupsOutput) String() string {
9066	return awsutil.Prettify(s)
9067}
9068
9069// GoString returns the string representation
9070func (s ListInstanceGroupsOutput) GoString() string {
9071	return s.String()
9072}
9073
9074// SetInstanceGroups sets the InstanceGroups field's value.
9075func (s *ListInstanceGroupsOutput) SetInstanceGroups(v []*InstanceGroup) *ListInstanceGroupsOutput {
9076	s.InstanceGroups = v
9077	return s
9078}
9079
9080// SetMarker sets the Marker field's value.
9081func (s *ListInstanceGroupsOutput) SetMarker(v string) *ListInstanceGroupsOutput {
9082	s.Marker = &v
9083	return s
9084}
9085
9086// This input determines which instances to list.
9087type ListInstancesInput struct {
9088	_ struct{} `type:"structure"`
9089
9090	// The identifier of the cluster for which to list the instances.
9091	//
9092	// ClusterId is a required field
9093	ClusterId *string `type:"string" required:"true"`
9094
9095	// The unique identifier of the instance fleet.
9096	InstanceFleetId *string `type:"string"`
9097
9098	// The node type of the instance fleet. For example MASTER, CORE, or TASK.
9099	InstanceFleetType *string `type:"string" enum:"InstanceFleetType"`
9100
9101	// The identifier of the instance group for which to list the instances.
9102	InstanceGroupId *string `type:"string"`
9103
9104	// The type of instance group for which to list the instances.
9105	InstanceGroupTypes []*string `type:"list"`
9106
9107	// A list of instance states that will filter the instances returned with this
9108	// request.
9109	InstanceStates []*string `type:"list"`
9110
9111	// The pagination token that indicates the next set of results to retrieve.
9112	Marker *string `type:"string"`
9113}
9114
9115// String returns the string representation
9116func (s ListInstancesInput) String() string {
9117	return awsutil.Prettify(s)
9118}
9119
9120// GoString returns the string representation
9121func (s ListInstancesInput) GoString() string {
9122	return s.String()
9123}
9124
9125// Validate inspects the fields of the type to determine if they are valid.
9126func (s *ListInstancesInput) Validate() error {
9127	invalidParams := request.ErrInvalidParams{Context: "ListInstancesInput"}
9128	if s.ClusterId == nil {
9129		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
9130	}
9131
9132	if invalidParams.Len() > 0 {
9133		return invalidParams
9134	}
9135	return nil
9136}
9137
9138// SetClusterId sets the ClusterId field's value.
9139func (s *ListInstancesInput) SetClusterId(v string) *ListInstancesInput {
9140	s.ClusterId = &v
9141	return s
9142}
9143
9144// SetInstanceFleetId sets the InstanceFleetId field's value.
9145func (s *ListInstancesInput) SetInstanceFleetId(v string) *ListInstancesInput {
9146	s.InstanceFleetId = &v
9147	return s
9148}
9149
9150// SetInstanceFleetType sets the InstanceFleetType field's value.
9151func (s *ListInstancesInput) SetInstanceFleetType(v string) *ListInstancesInput {
9152	s.InstanceFleetType = &v
9153	return s
9154}
9155
9156// SetInstanceGroupId sets the InstanceGroupId field's value.
9157func (s *ListInstancesInput) SetInstanceGroupId(v string) *ListInstancesInput {
9158	s.InstanceGroupId = &v
9159	return s
9160}
9161
9162// SetInstanceGroupTypes sets the InstanceGroupTypes field's value.
9163func (s *ListInstancesInput) SetInstanceGroupTypes(v []*string) *ListInstancesInput {
9164	s.InstanceGroupTypes = v
9165	return s
9166}
9167
9168// SetInstanceStates sets the InstanceStates field's value.
9169func (s *ListInstancesInput) SetInstanceStates(v []*string) *ListInstancesInput {
9170	s.InstanceStates = v
9171	return s
9172}
9173
9174// SetMarker sets the Marker field's value.
9175func (s *ListInstancesInput) SetMarker(v string) *ListInstancesInput {
9176	s.Marker = &v
9177	return s
9178}
9179
9180// This output contains the list of instances.
9181type ListInstancesOutput struct {
9182	_ struct{} `type:"structure"`
9183
9184	// The list of instances for the cluster and given filters.
9185	Instances []*Instance `type:"list"`
9186
9187	// The pagination token that indicates the next set of results to retrieve.
9188	Marker *string `type:"string"`
9189}
9190
9191// String returns the string representation
9192func (s ListInstancesOutput) String() string {
9193	return awsutil.Prettify(s)
9194}
9195
9196// GoString returns the string representation
9197func (s ListInstancesOutput) GoString() string {
9198	return s.String()
9199}
9200
9201// SetInstances sets the Instances field's value.
9202func (s *ListInstancesOutput) SetInstances(v []*Instance) *ListInstancesOutput {
9203	s.Instances = v
9204	return s
9205}
9206
9207// SetMarker sets the Marker field's value.
9208func (s *ListInstancesOutput) SetMarker(v string) *ListInstancesOutput {
9209	s.Marker = &v
9210	return s
9211}
9212
9213type ListSecurityConfigurationsInput struct {
9214	_ struct{} `type:"structure"`
9215
9216	// The pagination token that indicates the set of results to retrieve.
9217	Marker *string `type:"string"`
9218}
9219
9220// String returns the string representation
9221func (s ListSecurityConfigurationsInput) String() string {
9222	return awsutil.Prettify(s)
9223}
9224
9225// GoString returns the string representation
9226func (s ListSecurityConfigurationsInput) GoString() string {
9227	return s.String()
9228}
9229
9230// SetMarker sets the Marker field's value.
9231func (s *ListSecurityConfigurationsInput) SetMarker(v string) *ListSecurityConfigurationsInput {
9232	s.Marker = &v
9233	return s
9234}
9235
9236type ListSecurityConfigurationsOutput struct {
9237	_ struct{} `type:"structure"`
9238
9239	// A pagination token that indicates the next set of results to retrieve. Include
9240	// the marker in the next ListSecurityConfiguration call to retrieve the next
9241	// page of results, if required.
9242	Marker *string `type:"string"`
9243
9244	// The creation date and time, and name, of each security configuration.
9245	SecurityConfigurations []*SecurityConfigurationSummary `type:"list"`
9246}
9247
9248// String returns the string representation
9249func (s ListSecurityConfigurationsOutput) String() string {
9250	return awsutil.Prettify(s)
9251}
9252
9253// GoString returns the string representation
9254func (s ListSecurityConfigurationsOutput) GoString() string {
9255	return s.String()
9256}
9257
9258// SetMarker sets the Marker field's value.
9259func (s *ListSecurityConfigurationsOutput) SetMarker(v string) *ListSecurityConfigurationsOutput {
9260	s.Marker = &v
9261	return s
9262}
9263
9264// SetSecurityConfigurations sets the SecurityConfigurations field's value.
9265func (s *ListSecurityConfigurationsOutput) SetSecurityConfigurations(v []*SecurityConfigurationSummary) *ListSecurityConfigurationsOutput {
9266	s.SecurityConfigurations = v
9267	return s
9268}
9269
9270// This input determines which steps to list.
9271type ListStepsInput struct {
9272	_ struct{} `type:"structure"`
9273
9274	// The identifier of the cluster for which to list the steps.
9275	//
9276	// ClusterId is a required field
9277	ClusterId *string `type:"string" required:"true"`
9278
9279	// The pagination token that indicates the next set of results to retrieve.
9280	Marker *string `type:"string"`
9281
9282	// The filter to limit the step list based on the identifier of the steps. You
9283	// can specify a maximum of ten Step IDs. The character constraint applies to
9284	// the overall length of the array.
9285	StepIds []*string `type:"list"`
9286
9287	// The filter to limit the step list based on certain states.
9288	StepStates []*string `type:"list"`
9289}
9290
9291// String returns the string representation
9292func (s ListStepsInput) String() string {
9293	return awsutil.Prettify(s)
9294}
9295
9296// GoString returns the string representation
9297func (s ListStepsInput) GoString() string {
9298	return s.String()
9299}
9300
9301// Validate inspects the fields of the type to determine if they are valid.
9302func (s *ListStepsInput) Validate() error {
9303	invalidParams := request.ErrInvalidParams{Context: "ListStepsInput"}
9304	if s.ClusterId == nil {
9305		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
9306	}
9307
9308	if invalidParams.Len() > 0 {
9309		return invalidParams
9310	}
9311	return nil
9312}
9313
9314// SetClusterId sets the ClusterId field's value.
9315func (s *ListStepsInput) SetClusterId(v string) *ListStepsInput {
9316	s.ClusterId = &v
9317	return s
9318}
9319
9320// SetMarker sets the Marker field's value.
9321func (s *ListStepsInput) SetMarker(v string) *ListStepsInput {
9322	s.Marker = &v
9323	return s
9324}
9325
9326// SetStepIds sets the StepIds field's value.
9327func (s *ListStepsInput) SetStepIds(v []*string) *ListStepsInput {
9328	s.StepIds = v
9329	return s
9330}
9331
9332// SetStepStates sets the StepStates field's value.
9333func (s *ListStepsInput) SetStepStates(v []*string) *ListStepsInput {
9334	s.StepStates = v
9335	return s
9336}
9337
9338// This output contains the list of steps returned in reverse order. This means
9339// that the last step is the first element in the list.
9340type ListStepsOutput struct {
9341	_ struct{} `type:"structure"`
9342
9343	// The pagination token that indicates the next set of results to retrieve.
9344	Marker *string `type:"string"`
9345
9346	// The filtered list of steps for the cluster.
9347	Steps []*StepSummary `type:"list"`
9348}
9349
9350// String returns the string representation
9351func (s ListStepsOutput) String() string {
9352	return awsutil.Prettify(s)
9353}
9354
9355// GoString returns the string representation
9356func (s ListStepsOutput) GoString() string {
9357	return s.String()
9358}
9359
9360// SetMarker sets the Marker field's value.
9361func (s *ListStepsOutput) SetMarker(v string) *ListStepsOutput {
9362	s.Marker = &v
9363	return s
9364}
9365
9366// SetSteps sets the Steps field's value.
9367func (s *ListStepsOutput) SetSteps(v []*StepSummary) *ListStepsOutput {
9368	s.Steps = v
9369	return s
9370}
9371
9372// Managed scaling policy for an Amazon EMR cluster. The policy specifies the
9373// limits for resources that can be added or terminated from a cluster. The
9374// policy only applies to the core and task nodes. The master node cannot be
9375// scaled after initial configuration.
9376type ManagedScalingPolicy struct {
9377	_ struct{} `type:"structure"`
9378
9379	// The EC2 unit limits for a managed scaling policy. The managed scaling activity
9380	// of a cluster is not allowed to go above or below these limits. The limit
9381	// only applies to the core and task nodes. The master node cannot be scaled
9382	// after initial configuration.
9383	ComputeLimits *ComputeLimits `type:"structure"`
9384}
9385
9386// String returns the string representation
9387func (s ManagedScalingPolicy) String() string {
9388	return awsutil.Prettify(s)
9389}
9390
9391// GoString returns the string representation
9392func (s ManagedScalingPolicy) GoString() string {
9393	return s.String()
9394}
9395
9396// Validate inspects the fields of the type to determine if they are valid.
9397func (s *ManagedScalingPolicy) Validate() error {
9398	invalidParams := request.ErrInvalidParams{Context: "ManagedScalingPolicy"}
9399	if s.ComputeLimits != nil {
9400		if err := s.ComputeLimits.Validate(); err != nil {
9401			invalidParams.AddNested("ComputeLimits", err.(request.ErrInvalidParams))
9402		}
9403	}
9404
9405	if invalidParams.Len() > 0 {
9406		return invalidParams
9407	}
9408	return nil
9409}
9410
9411// SetComputeLimits sets the ComputeLimits field's value.
9412func (s *ManagedScalingPolicy) SetComputeLimits(v *ComputeLimits) *ManagedScalingPolicy {
9413	s.ComputeLimits = v
9414	return s
9415}
9416
9417// A CloudWatch dimension, which is specified using a Key (known as a Name in
9418// CloudWatch), Value pair. By default, Amazon EMR uses one dimension whose
9419// Key is JobFlowID and Value is a variable representing the cluster ID, which
9420// is ${emr.clusterId}. This enables the rule to bootstrap when the cluster
9421// ID becomes available.
9422type MetricDimension struct {
9423	_ struct{} `type:"structure"`
9424
9425	// The dimension name.
9426	Key *string `type:"string"`
9427
9428	// The dimension value.
9429	Value *string `type:"string"`
9430}
9431
9432// String returns the string representation
9433func (s MetricDimension) String() string {
9434	return awsutil.Prettify(s)
9435}
9436
9437// GoString returns the string representation
9438func (s MetricDimension) GoString() string {
9439	return s.String()
9440}
9441
9442// SetKey sets the Key field's value.
9443func (s *MetricDimension) SetKey(v string) *MetricDimension {
9444	s.Key = &v
9445	return s
9446}
9447
9448// SetValue sets the Value field's value.
9449func (s *MetricDimension) SetValue(v string) *MetricDimension {
9450	s.Value = &v
9451	return s
9452}
9453
9454type ModifyClusterInput struct {
9455	_ struct{} `type:"structure"`
9456
9457	// The unique identifier of the cluster.
9458	//
9459	// ClusterId is a required field
9460	ClusterId *string `type:"string" required:"true"`
9461
9462	// The number of steps that can be executed concurrently. You can specify a
9463	// maximum of 256 steps.
9464	StepConcurrencyLevel *int64 `type:"integer"`
9465}
9466
9467// String returns the string representation
9468func (s ModifyClusterInput) String() string {
9469	return awsutil.Prettify(s)
9470}
9471
9472// GoString returns the string representation
9473func (s ModifyClusterInput) GoString() string {
9474	return s.String()
9475}
9476
9477// Validate inspects the fields of the type to determine if they are valid.
9478func (s *ModifyClusterInput) Validate() error {
9479	invalidParams := request.ErrInvalidParams{Context: "ModifyClusterInput"}
9480	if s.ClusterId == nil {
9481		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
9482	}
9483
9484	if invalidParams.Len() > 0 {
9485		return invalidParams
9486	}
9487	return nil
9488}
9489
9490// SetClusterId sets the ClusterId field's value.
9491func (s *ModifyClusterInput) SetClusterId(v string) *ModifyClusterInput {
9492	s.ClusterId = &v
9493	return s
9494}
9495
9496// SetStepConcurrencyLevel sets the StepConcurrencyLevel field's value.
9497func (s *ModifyClusterInput) SetStepConcurrencyLevel(v int64) *ModifyClusterInput {
9498	s.StepConcurrencyLevel = &v
9499	return s
9500}
9501
9502type ModifyClusterOutput struct {
9503	_ struct{} `type:"structure"`
9504
9505	// The number of steps that can be executed concurrently.
9506	StepConcurrencyLevel *int64 `type:"integer"`
9507}
9508
9509// String returns the string representation
9510func (s ModifyClusterOutput) String() string {
9511	return awsutil.Prettify(s)
9512}
9513
9514// GoString returns the string representation
9515func (s ModifyClusterOutput) GoString() string {
9516	return s.String()
9517}
9518
9519// SetStepConcurrencyLevel sets the StepConcurrencyLevel field's value.
9520func (s *ModifyClusterOutput) SetStepConcurrencyLevel(v int64) *ModifyClusterOutput {
9521	s.StepConcurrencyLevel = &v
9522	return s
9523}
9524
9525type ModifyInstanceFleetInput struct {
9526	_ struct{} `type:"structure"`
9527
9528	// The unique identifier of the cluster.
9529	//
9530	// ClusterId is a required field
9531	ClusterId *string `type:"string" required:"true"`
9532
9533	// The unique identifier of the instance fleet.
9534	//
9535	// InstanceFleet is a required field
9536	InstanceFleet *InstanceFleetModifyConfig `type:"structure" required:"true"`
9537}
9538
9539// String returns the string representation
9540func (s ModifyInstanceFleetInput) String() string {
9541	return awsutil.Prettify(s)
9542}
9543
9544// GoString returns the string representation
9545func (s ModifyInstanceFleetInput) GoString() string {
9546	return s.String()
9547}
9548
9549// Validate inspects the fields of the type to determine if they are valid.
9550func (s *ModifyInstanceFleetInput) Validate() error {
9551	invalidParams := request.ErrInvalidParams{Context: "ModifyInstanceFleetInput"}
9552	if s.ClusterId == nil {
9553		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
9554	}
9555	if s.InstanceFleet == nil {
9556		invalidParams.Add(request.NewErrParamRequired("InstanceFleet"))
9557	}
9558	if s.InstanceFleet != nil {
9559		if err := s.InstanceFleet.Validate(); err != nil {
9560			invalidParams.AddNested("InstanceFleet", err.(request.ErrInvalidParams))
9561		}
9562	}
9563
9564	if invalidParams.Len() > 0 {
9565		return invalidParams
9566	}
9567	return nil
9568}
9569
9570// SetClusterId sets the ClusterId field's value.
9571func (s *ModifyInstanceFleetInput) SetClusterId(v string) *ModifyInstanceFleetInput {
9572	s.ClusterId = &v
9573	return s
9574}
9575
9576// SetInstanceFleet sets the InstanceFleet field's value.
9577func (s *ModifyInstanceFleetInput) SetInstanceFleet(v *InstanceFleetModifyConfig) *ModifyInstanceFleetInput {
9578	s.InstanceFleet = v
9579	return s
9580}
9581
9582type ModifyInstanceFleetOutput struct {
9583	_ struct{} `type:"structure"`
9584}
9585
9586// String returns the string representation
9587func (s ModifyInstanceFleetOutput) String() string {
9588	return awsutil.Prettify(s)
9589}
9590
9591// GoString returns the string representation
9592func (s ModifyInstanceFleetOutput) GoString() string {
9593	return s.String()
9594}
9595
9596// Change the size of some instance groups.
9597type ModifyInstanceGroupsInput struct {
9598	_ struct{} `type:"structure"`
9599
9600	// The ID of the cluster to which the instance group belongs.
9601	ClusterId *string `type:"string"`
9602
9603	// Instance groups to change.
9604	InstanceGroups []*InstanceGroupModifyConfig `type:"list"`
9605}
9606
9607// String returns the string representation
9608func (s ModifyInstanceGroupsInput) String() string {
9609	return awsutil.Prettify(s)
9610}
9611
9612// GoString returns the string representation
9613func (s ModifyInstanceGroupsInput) GoString() string {
9614	return s.String()
9615}
9616
9617// Validate inspects the fields of the type to determine if they are valid.
9618func (s *ModifyInstanceGroupsInput) Validate() error {
9619	invalidParams := request.ErrInvalidParams{Context: "ModifyInstanceGroupsInput"}
9620	if s.InstanceGroups != nil {
9621		for i, v := range s.InstanceGroups {
9622			if v == nil {
9623				continue
9624			}
9625			if err := v.Validate(); err != nil {
9626				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "InstanceGroups", i), err.(request.ErrInvalidParams))
9627			}
9628		}
9629	}
9630
9631	if invalidParams.Len() > 0 {
9632		return invalidParams
9633	}
9634	return nil
9635}
9636
9637// SetClusterId sets the ClusterId field's value.
9638func (s *ModifyInstanceGroupsInput) SetClusterId(v string) *ModifyInstanceGroupsInput {
9639	s.ClusterId = &v
9640	return s
9641}
9642
9643// SetInstanceGroups sets the InstanceGroups field's value.
9644func (s *ModifyInstanceGroupsInput) SetInstanceGroups(v []*InstanceGroupModifyConfig) *ModifyInstanceGroupsInput {
9645	s.InstanceGroups = v
9646	return s
9647}
9648
9649type ModifyInstanceGroupsOutput struct {
9650	_ struct{} `type:"structure"`
9651}
9652
9653// String returns the string representation
9654func (s ModifyInstanceGroupsOutput) String() string {
9655	return awsutil.Prettify(s)
9656}
9657
9658// GoString returns the string representation
9659func (s ModifyInstanceGroupsOutput) GoString() string {
9660	return s.String()
9661}
9662
9663// The launch specification for On-Demand instances in the instance fleet, which
9664// determines the allocation strategy.
9665//
9666// The instance fleet configuration is available only in Amazon EMR versions
9667// 4.8.0 and later, excluding 5.0.x versions. On-Demand instances allocation
9668// strategy is available in Amazon EMR version 5.12.1 and later.
9669type OnDemandProvisioningSpecification struct {
9670	_ struct{} `type:"structure"`
9671
9672	// Specifies the strategy to use in launching On-Demand instance fleets. Currently,
9673	// the only option is lowest-price (the default), which launches the lowest
9674	// price first.
9675	//
9676	// AllocationStrategy is a required field
9677	AllocationStrategy *string `type:"string" required:"true" enum:"OnDemandProvisioningAllocationStrategy"`
9678}
9679
9680// String returns the string representation
9681func (s OnDemandProvisioningSpecification) String() string {
9682	return awsutil.Prettify(s)
9683}
9684
9685// GoString returns the string representation
9686func (s OnDemandProvisioningSpecification) GoString() string {
9687	return s.String()
9688}
9689
9690// Validate inspects the fields of the type to determine if they are valid.
9691func (s *OnDemandProvisioningSpecification) Validate() error {
9692	invalidParams := request.ErrInvalidParams{Context: "OnDemandProvisioningSpecification"}
9693	if s.AllocationStrategy == nil {
9694		invalidParams.Add(request.NewErrParamRequired("AllocationStrategy"))
9695	}
9696
9697	if invalidParams.Len() > 0 {
9698		return invalidParams
9699	}
9700	return nil
9701}
9702
9703// SetAllocationStrategy sets the AllocationStrategy field's value.
9704func (s *OnDemandProvisioningSpecification) SetAllocationStrategy(v string) *OnDemandProvisioningSpecification {
9705	s.AllocationStrategy = &v
9706	return s
9707}
9708
9709// The Amazon EC2 Availability Zone configuration of the cluster (job flow).
9710type PlacementType struct {
9711	_ struct{} `type:"structure"`
9712
9713	// The Amazon EC2 Availability Zone for the cluster. AvailabilityZone is used
9714	// for uniform instance groups, while AvailabilityZones (plural) is used for
9715	// instance fleets.
9716	AvailabilityZone *string `type:"string"`
9717
9718	// When multiple Availability Zones are specified, Amazon EMR evaluates them
9719	// and launches instances in the optimal Availability Zone. AvailabilityZones
9720	// is used for instance fleets, while AvailabilityZone (singular) is used for
9721	// uniform instance groups.
9722	//
9723	// The instance fleet configuration is available only in Amazon EMR versions
9724	// 4.8.0 and later, excluding 5.0.x versions.
9725	AvailabilityZones []*string `type:"list"`
9726}
9727
9728// String returns the string representation
9729func (s PlacementType) String() string {
9730	return awsutil.Prettify(s)
9731}
9732
9733// GoString returns the string representation
9734func (s PlacementType) GoString() string {
9735	return s.String()
9736}
9737
9738// SetAvailabilityZone sets the AvailabilityZone field's value.
9739func (s *PlacementType) SetAvailabilityZone(v string) *PlacementType {
9740	s.AvailabilityZone = &v
9741	return s
9742}
9743
9744// SetAvailabilityZones sets the AvailabilityZones field's value.
9745func (s *PlacementType) SetAvailabilityZones(v []*string) *PlacementType {
9746	s.AvailabilityZones = v
9747	return s
9748}
9749
9750// A list of port ranges that are permitted to allow inbound traffic from all
9751// public IP addresses. To specify a single port, use the same value for MinRange
9752// and MaxRange.
9753type PortRange struct {
9754	_ struct{} `type:"structure"`
9755
9756	// The smallest port number in a specified range of port numbers.
9757	MaxRange *int64 `type:"integer"`
9758
9759	// The smallest port number in a specified range of port numbers.
9760	//
9761	// MinRange is a required field
9762	MinRange *int64 `type:"integer" required:"true"`
9763}
9764
9765// String returns the string representation
9766func (s PortRange) String() string {
9767	return awsutil.Prettify(s)
9768}
9769
9770// GoString returns the string representation
9771func (s PortRange) GoString() string {
9772	return s.String()
9773}
9774
9775// Validate inspects the fields of the type to determine if they are valid.
9776func (s *PortRange) Validate() error {
9777	invalidParams := request.ErrInvalidParams{Context: "PortRange"}
9778	if s.MinRange == nil {
9779		invalidParams.Add(request.NewErrParamRequired("MinRange"))
9780	}
9781
9782	if invalidParams.Len() > 0 {
9783		return invalidParams
9784	}
9785	return nil
9786}
9787
9788// SetMaxRange sets the MaxRange field's value.
9789func (s *PortRange) SetMaxRange(v int64) *PortRange {
9790	s.MaxRange = &v
9791	return s
9792}
9793
9794// SetMinRange sets the MinRange field's value.
9795func (s *PortRange) SetMinRange(v int64) *PortRange {
9796	s.MinRange = &v
9797	return s
9798}
9799
9800type PutAutoScalingPolicyInput struct {
9801	_ struct{} `type:"structure"`
9802
9803	// Specifies the definition of the automatic scaling policy.
9804	//
9805	// AutoScalingPolicy is a required field
9806	AutoScalingPolicy *AutoScalingPolicy `type:"structure" required:"true"`
9807
9808	// Specifies the ID of a cluster. The instance group to which the automatic
9809	// scaling policy is applied is within this cluster.
9810	//
9811	// ClusterId is a required field
9812	ClusterId *string `type:"string" required:"true"`
9813
9814	// Specifies the ID of the instance group to which the automatic scaling policy
9815	// is applied.
9816	//
9817	// InstanceGroupId is a required field
9818	InstanceGroupId *string `type:"string" required:"true"`
9819}
9820
9821// String returns the string representation
9822func (s PutAutoScalingPolicyInput) String() string {
9823	return awsutil.Prettify(s)
9824}
9825
9826// GoString returns the string representation
9827func (s PutAutoScalingPolicyInput) GoString() string {
9828	return s.String()
9829}
9830
9831// Validate inspects the fields of the type to determine if they are valid.
9832func (s *PutAutoScalingPolicyInput) Validate() error {
9833	invalidParams := request.ErrInvalidParams{Context: "PutAutoScalingPolicyInput"}
9834	if s.AutoScalingPolicy == nil {
9835		invalidParams.Add(request.NewErrParamRequired("AutoScalingPolicy"))
9836	}
9837	if s.ClusterId == nil {
9838		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
9839	}
9840	if s.InstanceGroupId == nil {
9841		invalidParams.Add(request.NewErrParamRequired("InstanceGroupId"))
9842	}
9843	if s.AutoScalingPolicy != nil {
9844		if err := s.AutoScalingPolicy.Validate(); err != nil {
9845			invalidParams.AddNested("AutoScalingPolicy", err.(request.ErrInvalidParams))
9846		}
9847	}
9848
9849	if invalidParams.Len() > 0 {
9850		return invalidParams
9851	}
9852	return nil
9853}
9854
9855// SetAutoScalingPolicy sets the AutoScalingPolicy field's value.
9856func (s *PutAutoScalingPolicyInput) SetAutoScalingPolicy(v *AutoScalingPolicy) *PutAutoScalingPolicyInput {
9857	s.AutoScalingPolicy = v
9858	return s
9859}
9860
9861// SetClusterId sets the ClusterId field's value.
9862func (s *PutAutoScalingPolicyInput) SetClusterId(v string) *PutAutoScalingPolicyInput {
9863	s.ClusterId = &v
9864	return s
9865}
9866
9867// SetInstanceGroupId sets the InstanceGroupId field's value.
9868func (s *PutAutoScalingPolicyInput) SetInstanceGroupId(v string) *PutAutoScalingPolicyInput {
9869	s.InstanceGroupId = &v
9870	return s
9871}
9872
9873type PutAutoScalingPolicyOutput struct {
9874	_ struct{} `type:"structure"`
9875
9876	// The automatic scaling policy definition.
9877	AutoScalingPolicy *AutoScalingPolicyDescription `type:"structure"`
9878
9879	// The Amazon Resource Name of the cluster.
9880	ClusterArn *string `min:"20" type:"string"`
9881
9882	// Specifies the ID of a cluster. The instance group to which the automatic
9883	// scaling policy is applied is within this cluster.
9884	ClusterId *string `type:"string"`
9885
9886	// Specifies the ID of the instance group to which the scaling policy is applied.
9887	InstanceGroupId *string `type:"string"`
9888}
9889
9890// String returns the string representation
9891func (s PutAutoScalingPolicyOutput) String() string {
9892	return awsutil.Prettify(s)
9893}
9894
9895// GoString returns the string representation
9896func (s PutAutoScalingPolicyOutput) GoString() string {
9897	return s.String()
9898}
9899
9900// SetAutoScalingPolicy sets the AutoScalingPolicy field's value.
9901func (s *PutAutoScalingPolicyOutput) SetAutoScalingPolicy(v *AutoScalingPolicyDescription) *PutAutoScalingPolicyOutput {
9902	s.AutoScalingPolicy = v
9903	return s
9904}
9905
9906// SetClusterArn sets the ClusterArn field's value.
9907func (s *PutAutoScalingPolicyOutput) SetClusterArn(v string) *PutAutoScalingPolicyOutput {
9908	s.ClusterArn = &v
9909	return s
9910}
9911
9912// SetClusterId sets the ClusterId field's value.
9913func (s *PutAutoScalingPolicyOutput) SetClusterId(v string) *PutAutoScalingPolicyOutput {
9914	s.ClusterId = &v
9915	return s
9916}
9917
9918// SetInstanceGroupId sets the InstanceGroupId field's value.
9919func (s *PutAutoScalingPolicyOutput) SetInstanceGroupId(v string) *PutAutoScalingPolicyOutput {
9920	s.InstanceGroupId = &v
9921	return s
9922}
9923
9924type PutBlockPublicAccessConfigurationInput struct {
9925	_ struct{} `type:"structure"`
9926
9927	// A configuration for Amazon EMR block public access. The configuration applies
9928	// to all clusters created in your account for the current Region. The configuration
9929	// specifies whether block public access is enabled. If block public access
9930	// is enabled, security groups associated with the cluster cannot have rules
9931	// that allow inbound traffic from 0.0.0.0/0 or ::/0 on a port, unless the port
9932	// is specified as an exception using PermittedPublicSecurityGroupRuleRanges
9933	// in the BlockPublicAccessConfiguration. By default, Port 22 (SSH) is an exception,
9934	// and public access is allowed on this port. You can change this by updating
9935	// BlockPublicSecurityGroupRules to remove the exception.
9936	//
9937	// For accounts that created clusters in a Region before November 25, 2019,
9938	// block public access is disabled by default in that Region. To use this feature,
9939	// you must manually enable and configure it. For accounts that did not create
9940	// an EMR cluster in a Region before this date, block public access is enabled
9941	// by default in that Region.
9942	//
9943	// BlockPublicAccessConfiguration is a required field
9944	BlockPublicAccessConfiguration *BlockPublicAccessConfiguration `type:"structure" required:"true"`
9945}
9946
9947// String returns the string representation
9948func (s PutBlockPublicAccessConfigurationInput) String() string {
9949	return awsutil.Prettify(s)
9950}
9951
9952// GoString returns the string representation
9953func (s PutBlockPublicAccessConfigurationInput) GoString() string {
9954	return s.String()
9955}
9956
9957// Validate inspects the fields of the type to determine if they are valid.
9958func (s *PutBlockPublicAccessConfigurationInput) Validate() error {
9959	invalidParams := request.ErrInvalidParams{Context: "PutBlockPublicAccessConfigurationInput"}
9960	if s.BlockPublicAccessConfiguration == nil {
9961		invalidParams.Add(request.NewErrParamRequired("BlockPublicAccessConfiguration"))
9962	}
9963	if s.BlockPublicAccessConfiguration != nil {
9964		if err := s.BlockPublicAccessConfiguration.Validate(); err != nil {
9965			invalidParams.AddNested("BlockPublicAccessConfiguration", err.(request.ErrInvalidParams))
9966		}
9967	}
9968
9969	if invalidParams.Len() > 0 {
9970		return invalidParams
9971	}
9972	return nil
9973}
9974
9975// SetBlockPublicAccessConfiguration sets the BlockPublicAccessConfiguration field's value.
9976func (s *PutBlockPublicAccessConfigurationInput) SetBlockPublicAccessConfiguration(v *BlockPublicAccessConfiguration) *PutBlockPublicAccessConfigurationInput {
9977	s.BlockPublicAccessConfiguration = v
9978	return s
9979}
9980
9981type PutBlockPublicAccessConfigurationOutput struct {
9982	_ struct{} `type:"structure"`
9983}
9984
9985// String returns the string representation
9986func (s PutBlockPublicAccessConfigurationOutput) String() string {
9987	return awsutil.Prettify(s)
9988}
9989
9990// GoString returns the string representation
9991func (s PutBlockPublicAccessConfigurationOutput) GoString() string {
9992	return s.String()
9993}
9994
9995type PutManagedScalingPolicyInput struct {
9996	_ struct{} `type:"structure"`
9997
9998	// Specifies the ID of an EMR cluster where the managed scaling policy is attached.
9999	//
10000	// ClusterId is a required field
10001	ClusterId *string `type:"string" required:"true"`
10002
10003	// Specifies the constraints for the managed scaling policy.
10004	//
10005	// ManagedScalingPolicy is a required field
10006	ManagedScalingPolicy *ManagedScalingPolicy `type:"structure" required:"true"`
10007}
10008
10009// String returns the string representation
10010func (s PutManagedScalingPolicyInput) String() string {
10011	return awsutil.Prettify(s)
10012}
10013
10014// GoString returns the string representation
10015func (s PutManagedScalingPolicyInput) GoString() string {
10016	return s.String()
10017}
10018
10019// Validate inspects the fields of the type to determine if they are valid.
10020func (s *PutManagedScalingPolicyInput) Validate() error {
10021	invalidParams := request.ErrInvalidParams{Context: "PutManagedScalingPolicyInput"}
10022	if s.ClusterId == nil {
10023		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
10024	}
10025	if s.ManagedScalingPolicy == nil {
10026		invalidParams.Add(request.NewErrParamRequired("ManagedScalingPolicy"))
10027	}
10028	if s.ManagedScalingPolicy != nil {
10029		if err := s.ManagedScalingPolicy.Validate(); err != nil {
10030			invalidParams.AddNested("ManagedScalingPolicy", err.(request.ErrInvalidParams))
10031		}
10032	}
10033
10034	if invalidParams.Len() > 0 {
10035		return invalidParams
10036	}
10037	return nil
10038}
10039
10040// SetClusterId sets the ClusterId field's value.
10041func (s *PutManagedScalingPolicyInput) SetClusterId(v string) *PutManagedScalingPolicyInput {
10042	s.ClusterId = &v
10043	return s
10044}
10045
10046// SetManagedScalingPolicy sets the ManagedScalingPolicy field's value.
10047func (s *PutManagedScalingPolicyInput) SetManagedScalingPolicy(v *ManagedScalingPolicy) *PutManagedScalingPolicyInput {
10048	s.ManagedScalingPolicy = v
10049	return s
10050}
10051
10052type PutManagedScalingPolicyOutput struct {
10053	_ struct{} `type:"structure"`
10054}
10055
10056// String returns the string representation
10057func (s PutManagedScalingPolicyOutput) String() string {
10058	return awsutil.Prettify(s)
10059}
10060
10061// GoString returns the string representation
10062func (s PutManagedScalingPolicyOutput) GoString() string {
10063	return s.String()
10064}
10065
10066type RemoveAutoScalingPolicyInput struct {
10067	_ struct{} `type:"structure"`
10068
10069	// Specifies the ID of a cluster. The instance group to which the automatic
10070	// scaling policy is applied is within this cluster.
10071	//
10072	// ClusterId is a required field
10073	ClusterId *string `type:"string" required:"true"`
10074
10075	// Specifies the ID of the instance group to which the scaling policy is applied.
10076	//
10077	// InstanceGroupId is a required field
10078	InstanceGroupId *string `type:"string" required:"true"`
10079}
10080
10081// String returns the string representation
10082func (s RemoveAutoScalingPolicyInput) String() string {
10083	return awsutil.Prettify(s)
10084}
10085
10086// GoString returns the string representation
10087func (s RemoveAutoScalingPolicyInput) GoString() string {
10088	return s.String()
10089}
10090
10091// Validate inspects the fields of the type to determine if they are valid.
10092func (s *RemoveAutoScalingPolicyInput) Validate() error {
10093	invalidParams := request.ErrInvalidParams{Context: "RemoveAutoScalingPolicyInput"}
10094	if s.ClusterId == nil {
10095		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
10096	}
10097	if s.InstanceGroupId == nil {
10098		invalidParams.Add(request.NewErrParamRequired("InstanceGroupId"))
10099	}
10100
10101	if invalidParams.Len() > 0 {
10102		return invalidParams
10103	}
10104	return nil
10105}
10106
10107// SetClusterId sets the ClusterId field's value.
10108func (s *RemoveAutoScalingPolicyInput) SetClusterId(v string) *RemoveAutoScalingPolicyInput {
10109	s.ClusterId = &v
10110	return s
10111}
10112
10113// SetInstanceGroupId sets the InstanceGroupId field's value.
10114func (s *RemoveAutoScalingPolicyInput) SetInstanceGroupId(v string) *RemoveAutoScalingPolicyInput {
10115	s.InstanceGroupId = &v
10116	return s
10117}
10118
10119type RemoveAutoScalingPolicyOutput struct {
10120	_ struct{} `type:"structure"`
10121}
10122
10123// String returns the string representation
10124func (s RemoveAutoScalingPolicyOutput) String() string {
10125	return awsutil.Prettify(s)
10126}
10127
10128// GoString returns the string representation
10129func (s RemoveAutoScalingPolicyOutput) GoString() string {
10130	return s.String()
10131}
10132
10133type RemoveManagedScalingPolicyInput struct {
10134	_ struct{} `type:"structure"`
10135
10136	// Specifies the ID of the cluster from which the managed scaling policy will
10137	// be removed.
10138	//
10139	// ClusterId is a required field
10140	ClusterId *string `type:"string" required:"true"`
10141}
10142
10143// String returns the string representation
10144func (s RemoveManagedScalingPolicyInput) String() string {
10145	return awsutil.Prettify(s)
10146}
10147
10148// GoString returns the string representation
10149func (s RemoveManagedScalingPolicyInput) GoString() string {
10150	return s.String()
10151}
10152
10153// Validate inspects the fields of the type to determine if they are valid.
10154func (s *RemoveManagedScalingPolicyInput) Validate() error {
10155	invalidParams := request.ErrInvalidParams{Context: "RemoveManagedScalingPolicyInput"}
10156	if s.ClusterId == nil {
10157		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
10158	}
10159
10160	if invalidParams.Len() > 0 {
10161		return invalidParams
10162	}
10163	return nil
10164}
10165
10166// SetClusterId sets the ClusterId field's value.
10167func (s *RemoveManagedScalingPolicyInput) SetClusterId(v string) *RemoveManagedScalingPolicyInput {
10168	s.ClusterId = &v
10169	return s
10170}
10171
10172type RemoveManagedScalingPolicyOutput struct {
10173	_ struct{} `type:"structure"`
10174}
10175
10176// String returns the string representation
10177func (s RemoveManagedScalingPolicyOutput) String() string {
10178	return awsutil.Prettify(s)
10179}
10180
10181// GoString returns the string representation
10182func (s RemoveManagedScalingPolicyOutput) GoString() string {
10183	return s.String()
10184}
10185
10186// This input identifies a cluster and a list of tags to remove.
10187type RemoveTagsInput struct {
10188	_ struct{} `type:"structure"`
10189
10190	// The Amazon EMR resource identifier from which tags will be removed. This
10191	// value must be a cluster identifier.
10192	//
10193	// ResourceId is a required field
10194	ResourceId *string `type:"string" required:"true"`
10195
10196	// A list of tag keys to remove from a resource.
10197	//
10198	// TagKeys is a required field
10199	TagKeys []*string `type:"list" required:"true"`
10200}
10201
10202// String returns the string representation
10203func (s RemoveTagsInput) String() string {
10204	return awsutil.Prettify(s)
10205}
10206
10207// GoString returns the string representation
10208func (s RemoveTagsInput) GoString() string {
10209	return s.String()
10210}
10211
10212// Validate inspects the fields of the type to determine if they are valid.
10213func (s *RemoveTagsInput) Validate() error {
10214	invalidParams := request.ErrInvalidParams{Context: "RemoveTagsInput"}
10215	if s.ResourceId == nil {
10216		invalidParams.Add(request.NewErrParamRequired("ResourceId"))
10217	}
10218	if s.TagKeys == nil {
10219		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
10220	}
10221
10222	if invalidParams.Len() > 0 {
10223		return invalidParams
10224	}
10225	return nil
10226}
10227
10228// SetResourceId sets the ResourceId field's value.
10229func (s *RemoveTagsInput) SetResourceId(v string) *RemoveTagsInput {
10230	s.ResourceId = &v
10231	return s
10232}
10233
10234// SetTagKeys sets the TagKeys field's value.
10235func (s *RemoveTagsInput) SetTagKeys(v []*string) *RemoveTagsInput {
10236	s.TagKeys = v
10237	return s
10238}
10239
10240// This output indicates the result of removing tags from a resource.
10241type RemoveTagsOutput struct {
10242	_ struct{} `type:"structure"`
10243}
10244
10245// String returns the string representation
10246func (s RemoveTagsOutput) String() string {
10247	return awsutil.Prettify(s)
10248}
10249
10250// GoString returns the string representation
10251func (s RemoveTagsOutput) GoString() string {
10252	return s.String()
10253}
10254
10255// Input to the RunJobFlow operation.
10256type RunJobFlowInput struct {
10257	_ struct{} `type:"structure"`
10258
10259	// A JSON string for selecting additional features.
10260	AdditionalInfo *string `type:"string"`
10261
10262	// Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases
10263	// 4.0 and later, ReleaseLabel is used. To specify a custom AMI, use CustomAmiID.
10264	AmiVersion *string `type:"string"`
10265
10266	// Applies to Amazon EMR releases 4.0 and later. A case-insensitive list of
10267	// applications for Amazon EMR to install and configure when launching the cluster.
10268	// For a list of applications available for each Amazon EMR release version,
10269	// see the Amazon EMR Release Guide (https://docs.aws.amazon.com/emr/latest/ReleaseGuide/).
10270	Applications []*Application `type:"list"`
10271
10272	// An IAM role for automatic scaling policies. The default role is EMR_AutoScaling_DefaultRole.
10273	// The IAM role provides permissions that the automatic scaling feature requires
10274	// to launch and terminate EC2 instances in an instance group.
10275	AutoScalingRole *string `type:"string"`
10276
10277	// A list of bootstrap actions to run before Hadoop starts on the cluster nodes.
10278	BootstrapActions []*BootstrapActionConfig `type:"list"`
10279
10280	// For Amazon EMR releases 4.0 and later. The list of configurations supplied
10281	// for the EMR cluster you are creating.
10282	Configurations []*Configuration `type:"list"`
10283
10284	// Available only in Amazon EMR version 5.7.0 and later. The ID of a custom
10285	// Amazon EBS-backed Linux AMI. If specified, Amazon EMR uses this AMI when
10286	// it launches cluster EC2 instances. For more information about custom AMIs
10287	// in Amazon EMR, see Using a Custom AMI (https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-custom-ami.html)
10288	// in the Amazon EMR Management Guide. If omitted, the cluster uses the base
10289	// Linux AMI for the ReleaseLabel specified. For Amazon EMR versions 2.x and
10290	// 3.x, use AmiVersion instead.
10291	//
10292	// For information about creating a custom AMI, see Creating an Amazon EBS-Backed
10293	// Linux AMI (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html)
10294	// in the Amazon Elastic Compute Cloud User Guide for Linux Instances. For information
10295	// about finding an AMI ID, see Finding a Linux AMI (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html).
10296	CustomAmiId *string `type:"string"`
10297
10298	// The size, in GiB, of the EBS root device volume of the Linux AMI that is
10299	// used for each EC2 instance. Available in Amazon EMR version 4.x and later.
10300	EbsRootVolumeSize *int64 `type:"integer"`
10301
10302	// A specification of the number and type of Amazon EC2 instances.
10303	//
10304	// Instances is a required field
10305	Instances *JobFlowInstancesConfig `type:"structure" required:"true"`
10306
10307	// Also called instance profile and EC2 role. An IAM role for an EMR cluster.
10308	// The EC2 instances of the cluster assume this role. The default role is EMR_EC2_DefaultRole.
10309	// In order to use the default role, you must have already created it using
10310	// the CLI or console.
10311	JobFlowRole *string `type:"string"`
10312
10313	// Attributes for Kerberos configuration when Kerberos authentication is enabled
10314	// using a security configuration. For more information see Use Kerberos Authentication
10315	// (https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-kerberos.html)
10316	// in the EMR Management Guide.
10317	KerberosAttributes *KerberosAttributes `type:"structure"`
10318
10319	// The AWS KMS customer master key (CMK) used for encrypting log files. If a
10320	// value is not provided, the logs will remain encrypted by AES-256. This attribute
10321	// is only available with EMR version 5.30.0 and later, excluding EMR 6.0.0.
10322	LogEncryptionKmsKeyId *string `type:"string"`
10323
10324	// The location in Amazon S3 to write the log files of the job flow. If a value
10325	// is not provided, logs are not created.
10326	LogUri *string `type:"string"`
10327
10328	// The specified managed scaling policy for an Amazon EMR cluster.
10329	ManagedScalingPolicy *ManagedScalingPolicy `type:"structure"`
10330
10331	// The name of the job flow.
10332	//
10333	// Name is a required field
10334	Name *string `type:"string" required:"true"`
10335
10336	//
10337	// For Amazon EMR releases 3.x and 2.x. For Amazon EMR releases 4.x and later,
10338	// use Applications.
10339	//
10340	// A list of strings that indicates third-party software to use with the job
10341	// flow that accepts a user argument list. EMR accepts and forwards the argument
10342	// list to the corresponding installation script as bootstrap action arguments.
10343	// For more information, see "Launch a Job Flow on the MapR Distribution for
10344	// Hadoop" in the Amazon EMR Developer Guide (https://docs.aws.amazon.com/emr/latest/DeveloperGuide/emr-dg.pdf).
10345	// Supported values are:
10346	//
10347	//    * "mapr-m3" - launch the cluster using MapR M3 Edition.
10348	//
10349	//    * "mapr-m5" - launch the cluster using MapR M5 Edition.
10350	//
10351	//    * "mapr" with the user arguments specifying "--edition,m3" or "--edition,m5"
10352	//    - launch the job flow using MapR M3 or M5 Edition respectively.
10353	//
10354	//    * "mapr-m7" - launch the cluster using MapR M7 Edition.
10355	//
10356	//    * "hunk" - launch the cluster with the Hunk Big Data Analtics Platform.
10357	//
10358	//    * "hue"- launch the cluster with Hue installed.
10359	//
10360	//    * "spark" - launch the cluster with Apache Spark installed.
10361	//
10362	//    * "ganglia" - launch the cluster with the Ganglia Monitoring System installed.
10363	NewSupportedProducts []*SupportedProductConfig `type:"list"`
10364
10365	// The Amazon EMR release label, which determines the version of open-source
10366	// application packages installed on the cluster. Release labels are in the
10367	// form emr-x.x.x, where x.x.x is an Amazon EMR release version such as emr-5.14.0.
10368	// For more information about Amazon EMR release versions and included application
10369	// versions and features, see https://docs.aws.amazon.com/emr/latest/ReleaseGuide/
10370	// (https://docs.aws.amazon.com/emr/latest/ReleaseGuide/). The release label
10371	// applies only to Amazon EMR releases version 4.0 and later. Earlier versions
10372	// use AmiVersion.
10373	ReleaseLabel *string `type:"string"`
10374
10375	// Applies only when CustomAmiID is used. Specifies which updates from the Amazon
10376	// Linux AMI package repositories to apply automatically when the instance boots
10377	// using the AMI. If omitted, the default is SECURITY, which indicates that
10378	// only security updates are applied. If NONE is specified, no updates are applied,
10379	// and all updates must be applied manually.
10380	RepoUpgradeOnBoot *string `type:"string" enum:"RepoUpgradeOnBoot"`
10381
10382	// Specifies the way that individual Amazon EC2 instances terminate when an
10383	// automatic scale-in activity occurs or an instance group is resized. TERMINATE_AT_INSTANCE_HOUR
10384	// indicates that Amazon EMR terminates nodes at the instance-hour boundary,
10385	// regardless of when the request to terminate the instance was submitted. This
10386	// option is only available with Amazon EMR 5.1.0 and later and is the default
10387	// for clusters created using that version. TERMINATE_AT_TASK_COMPLETION indicates
10388	// that Amazon EMR blacklists and drains tasks from nodes before terminating
10389	// the Amazon EC2 instances, regardless of the instance-hour boundary. With
10390	// either behavior, Amazon EMR removes the least active nodes first and blocks
10391	// instance termination if it could lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION
10392	// available only in Amazon EMR version 4.1.0 and later, and is the default
10393	// for versions of Amazon EMR earlier than 5.1.0.
10394	ScaleDownBehavior *string `type:"string" enum:"ScaleDownBehavior"`
10395
10396	// The name of a security configuration to apply to the cluster.
10397	SecurityConfiguration *string `type:"string"`
10398
10399	// The IAM role that will be assumed by the Amazon EMR service to access AWS
10400	// resources on your behalf.
10401	ServiceRole *string `type:"string"`
10402
10403	// Specifies the number of steps that can be executed concurrently. The default
10404	// value is 1. The maximum value is 256.
10405	StepConcurrencyLevel *int64 `type:"integer"`
10406
10407	// A list of steps to run.
10408	Steps []*StepConfig `type:"list"`
10409
10410	//
10411	// For Amazon EMR releases 3.x and 2.x. For Amazon EMR releases 4.x and later,
10412	// use Applications.
10413	//
10414	// A list of strings that indicates third-party software to use. For more information,
10415	// see the Amazon EMR Developer Guide (https://docs.aws.amazon.com/emr/latest/DeveloperGuide/emr-dg.pdf).
10416	// Currently supported values are:
10417	//
10418	//    * "mapr-m3" - launch the job flow using MapR M3 Edition.
10419	//
10420	//    * "mapr-m5" - launch the job flow using MapR M5 Edition.
10421	SupportedProducts []*string `type:"list"`
10422
10423	// A list of tags to associate with a cluster and propagate to Amazon EC2 instances.
10424	Tags []*Tag `type:"list"`
10425
10426	// A value of true indicates that all IAM users in the AWS account can perform
10427	// cluster actions if they have the proper IAM policy permissions. This is the
10428	// default. A value of false indicates that only the IAM user who created the
10429	// cluster can perform actions.
10430	VisibleToAllUsers *bool `type:"boolean"`
10431}
10432
10433// String returns the string representation
10434func (s RunJobFlowInput) String() string {
10435	return awsutil.Prettify(s)
10436}
10437
10438// GoString returns the string representation
10439func (s RunJobFlowInput) GoString() string {
10440	return s.String()
10441}
10442
10443// Validate inspects the fields of the type to determine if they are valid.
10444func (s *RunJobFlowInput) Validate() error {
10445	invalidParams := request.ErrInvalidParams{Context: "RunJobFlowInput"}
10446	if s.Instances == nil {
10447		invalidParams.Add(request.NewErrParamRequired("Instances"))
10448	}
10449	if s.Name == nil {
10450		invalidParams.Add(request.NewErrParamRequired("Name"))
10451	}
10452	if s.BootstrapActions != nil {
10453		for i, v := range s.BootstrapActions {
10454			if v == nil {
10455				continue
10456			}
10457			if err := v.Validate(); err != nil {
10458				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "BootstrapActions", i), err.(request.ErrInvalidParams))
10459			}
10460		}
10461	}
10462	if s.Instances != nil {
10463		if err := s.Instances.Validate(); err != nil {
10464			invalidParams.AddNested("Instances", err.(request.ErrInvalidParams))
10465		}
10466	}
10467	if s.KerberosAttributes != nil {
10468		if err := s.KerberosAttributes.Validate(); err != nil {
10469			invalidParams.AddNested("KerberosAttributes", err.(request.ErrInvalidParams))
10470		}
10471	}
10472	if s.ManagedScalingPolicy != nil {
10473		if err := s.ManagedScalingPolicy.Validate(); err != nil {
10474			invalidParams.AddNested("ManagedScalingPolicy", err.(request.ErrInvalidParams))
10475		}
10476	}
10477	if s.Steps != nil {
10478		for i, v := range s.Steps {
10479			if v == nil {
10480				continue
10481			}
10482			if err := v.Validate(); err != nil {
10483				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Steps", i), err.(request.ErrInvalidParams))
10484			}
10485		}
10486	}
10487
10488	if invalidParams.Len() > 0 {
10489		return invalidParams
10490	}
10491	return nil
10492}
10493
10494// SetAdditionalInfo sets the AdditionalInfo field's value.
10495func (s *RunJobFlowInput) SetAdditionalInfo(v string) *RunJobFlowInput {
10496	s.AdditionalInfo = &v
10497	return s
10498}
10499
10500// SetAmiVersion sets the AmiVersion field's value.
10501func (s *RunJobFlowInput) SetAmiVersion(v string) *RunJobFlowInput {
10502	s.AmiVersion = &v
10503	return s
10504}
10505
10506// SetApplications sets the Applications field's value.
10507func (s *RunJobFlowInput) SetApplications(v []*Application) *RunJobFlowInput {
10508	s.Applications = v
10509	return s
10510}
10511
10512// SetAutoScalingRole sets the AutoScalingRole field's value.
10513func (s *RunJobFlowInput) SetAutoScalingRole(v string) *RunJobFlowInput {
10514	s.AutoScalingRole = &v
10515	return s
10516}
10517
10518// SetBootstrapActions sets the BootstrapActions field's value.
10519func (s *RunJobFlowInput) SetBootstrapActions(v []*BootstrapActionConfig) *RunJobFlowInput {
10520	s.BootstrapActions = v
10521	return s
10522}
10523
10524// SetConfigurations sets the Configurations field's value.
10525func (s *RunJobFlowInput) SetConfigurations(v []*Configuration) *RunJobFlowInput {
10526	s.Configurations = v
10527	return s
10528}
10529
10530// SetCustomAmiId sets the CustomAmiId field's value.
10531func (s *RunJobFlowInput) SetCustomAmiId(v string) *RunJobFlowInput {
10532	s.CustomAmiId = &v
10533	return s
10534}
10535
10536// SetEbsRootVolumeSize sets the EbsRootVolumeSize field's value.
10537func (s *RunJobFlowInput) SetEbsRootVolumeSize(v int64) *RunJobFlowInput {
10538	s.EbsRootVolumeSize = &v
10539	return s
10540}
10541
10542// SetInstances sets the Instances field's value.
10543func (s *RunJobFlowInput) SetInstances(v *JobFlowInstancesConfig) *RunJobFlowInput {
10544	s.Instances = v
10545	return s
10546}
10547
10548// SetJobFlowRole sets the JobFlowRole field's value.
10549func (s *RunJobFlowInput) SetJobFlowRole(v string) *RunJobFlowInput {
10550	s.JobFlowRole = &v
10551	return s
10552}
10553
10554// SetKerberosAttributes sets the KerberosAttributes field's value.
10555func (s *RunJobFlowInput) SetKerberosAttributes(v *KerberosAttributes) *RunJobFlowInput {
10556	s.KerberosAttributes = v
10557	return s
10558}
10559
10560// SetLogEncryptionKmsKeyId sets the LogEncryptionKmsKeyId field's value.
10561func (s *RunJobFlowInput) SetLogEncryptionKmsKeyId(v string) *RunJobFlowInput {
10562	s.LogEncryptionKmsKeyId = &v
10563	return s
10564}
10565
10566// SetLogUri sets the LogUri field's value.
10567func (s *RunJobFlowInput) SetLogUri(v string) *RunJobFlowInput {
10568	s.LogUri = &v
10569	return s
10570}
10571
10572// SetManagedScalingPolicy sets the ManagedScalingPolicy field's value.
10573func (s *RunJobFlowInput) SetManagedScalingPolicy(v *ManagedScalingPolicy) *RunJobFlowInput {
10574	s.ManagedScalingPolicy = v
10575	return s
10576}
10577
10578// SetName sets the Name field's value.
10579func (s *RunJobFlowInput) SetName(v string) *RunJobFlowInput {
10580	s.Name = &v
10581	return s
10582}
10583
10584// SetNewSupportedProducts sets the NewSupportedProducts field's value.
10585func (s *RunJobFlowInput) SetNewSupportedProducts(v []*SupportedProductConfig) *RunJobFlowInput {
10586	s.NewSupportedProducts = v
10587	return s
10588}
10589
10590// SetReleaseLabel sets the ReleaseLabel field's value.
10591func (s *RunJobFlowInput) SetReleaseLabel(v string) *RunJobFlowInput {
10592	s.ReleaseLabel = &v
10593	return s
10594}
10595
10596// SetRepoUpgradeOnBoot sets the RepoUpgradeOnBoot field's value.
10597func (s *RunJobFlowInput) SetRepoUpgradeOnBoot(v string) *RunJobFlowInput {
10598	s.RepoUpgradeOnBoot = &v
10599	return s
10600}
10601
10602// SetScaleDownBehavior sets the ScaleDownBehavior field's value.
10603func (s *RunJobFlowInput) SetScaleDownBehavior(v string) *RunJobFlowInput {
10604	s.ScaleDownBehavior = &v
10605	return s
10606}
10607
10608// SetSecurityConfiguration sets the SecurityConfiguration field's value.
10609func (s *RunJobFlowInput) SetSecurityConfiguration(v string) *RunJobFlowInput {
10610	s.SecurityConfiguration = &v
10611	return s
10612}
10613
10614// SetServiceRole sets the ServiceRole field's value.
10615func (s *RunJobFlowInput) SetServiceRole(v string) *RunJobFlowInput {
10616	s.ServiceRole = &v
10617	return s
10618}
10619
10620// SetStepConcurrencyLevel sets the StepConcurrencyLevel field's value.
10621func (s *RunJobFlowInput) SetStepConcurrencyLevel(v int64) *RunJobFlowInput {
10622	s.StepConcurrencyLevel = &v
10623	return s
10624}
10625
10626// SetSteps sets the Steps field's value.
10627func (s *RunJobFlowInput) SetSteps(v []*StepConfig) *RunJobFlowInput {
10628	s.Steps = v
10629	return s
10630}
10631
10632// SetSupportedProducts sets the SupportedProducts field's value.
10633func (s *RunJobFlowInput) SetSupportedProducts(v []*string) *RunJobFlowInput {
10634	s.SupportedProducts = v
10635	return s
10636}
10637
10638// SetTags sets the Tags field's value.
10639func (s *RunJobFlowInput) SetTags(v []*Tag) *RunJobFlowInput {
10640	s.Tags = v
10641	return s
10642}
10643
10644// SetVisibleToAllUsers sets the VisibleToAllUsers field's value.
10645func (s *RunJobFlowInput) SetVisibleToAllUsers(v bool) *RunJobFlowInput {
10646	s.VisibleToAllUsers = &v
10647	return s
10648}
10649
10650// The result of the RunJobFlow operation.
10651type RunJobFlowOutput struct {
10652	_ struct{} `type:"structure"`
10653
10654	// The Amazon Resource Name of the cluster.
10655	ClusterArn *string `min:"20" type:"string"`
10656
10657	// An unique identifier for the job flow.
10658	JobFlowId *string `type:"string"`
10659}
10660
10661// String returns the string representation
10662func (s RunJobFlowOutput) String() string {
10663	return awsutil.Prettify(s)
10664}
10665
10666// GoString returns the string representation
10667func (s RunJobFlowOutput) GoString() string {
10668	return s.String()
10669}
10670
10671// SetClusterArn sets the ClusterArn field's value.
10672func (s *RunJobFlowOutput) SetClusterArn(v string) *RunJobFlowOutput {
10673	s.ClusterArn = &v
10674	return s
10675}
10676
10677// SetJobFlowId sets the JobFlowId field's value.
10678func (s *RunJobFlowOutput) SetJobFlowId(v string) *RunJobFlowOutput {
10679	s.JobFlowId = &v
10680	return s
10681}
10682
10683// The type of adjustment the automatic scaling activity makes when triggered,
10684// and the periodicity of the adjustment.
10685type ScalingAction struct {
10686	_ struct{} `type:"structure"`
10687
10688	// Not available for instance groups. Instance groups use the market type specified
10689	// for the group.
10690	Market *string `type:"string" enum:"MarketType"`
10691
10692	// The type of adjustment the automatic scaling activity makes when triggered,
10693	// and the periodicity of the adjustment.
10694	//
10695	// SimpleScalingPolicyConfiguration is a required field
10696	SimpleScalingPolicyConfiguration *SimpleScalingPolicyConfiguration `type:"structure" required:"true"`
10697}
10698
10699// String returns the string representation
10700func (s ScalingAction) String() string {
10701	return awsutil.Prettify(s)
10702}
10703
10704// GoString returns the string representation
10705func (s ScalingAction) GoString() string {
10706	return s.String()
10707}
10708
10709// Validate inspects the fields of the type to determine if they are valid.
10710func (s *ScalingAction) Validate() error {
10711	invalidParams := request.ErrInvalidParams{Context: "ScalingAction"}
10712	if s.SimpleScalingPolicyConfiguration == nil {
10713		invalidParams.Add(request.NewErrParamRequired("SimpleScalingPolicyConfiguration"))
10714	}
10715	if s.SimpleScalingPolicyConfiguration != nil {
10716		if err := s.SimpleScalingPolicyConfiguration.Validate(); err != nil {
10717			invalidParams.AddNested("SimpleScalingPolicyConfiguration", err.(request.ErrInvalidParams))
10718		}
10719	}
10720
10721	if invalidParams.Len() > 0 {
10722		return invalidParams
10723	}
10724	return nil
10725}
10726
10727// SetMarket sets the Market field's value.
10728func (s *ScalingAction) SetMarket(v string) *ScalingAction {
10729	s.Market = &v
10730	return s
10731}
10732
10733// SetSimpleScalingPolicyConfiguration sets the SimpleScalingPolicyConfiguration field's value.
10734func (s *ScalingAction) SetSimpleScalingPolicyConfiguration(v *SimpleScalingPolicyConfiguration) *ScalingAction {
10735	s.SimpleScalingPolicyConfiguration = v
10736	return s
10737}
10738
10739// The upper and lower EC2 instance limits for an automatic scaling policy.
10740// Automatic scaling activities triggered by automatic scaling rules will not
10741// cause an instance group to grow above or below these limits.
10742type ScalingConstraints struct {
10743	_ struct{} `type:"structure"`
10744
10745	// The upper boundary of EC2 instances in an instance group beyond which scaling
10746	// activities are not allowed to grow. Scale-out activities will not add instances
10747	// beyond this boundary.
10748	//
10749	// MaxCapacity is a required field
10750	MaxCapacity *int64 `type:"integer" required:"true"`
10751
10752	// The lower boundary of EC2 instances in an instance group below which scaling
10753	// activities are not allowed to shrink. Scale-in activities will not terminate
10754	// instances below this boundary.
10755	//
10756	// MinCapacity is a required field
10757	MinCapacity *int64 `type:"integer" required:"true"`
10758}
10759
10760// String returns the string representation
10761func (s ScalingConstraints) String() string {
10762	return awsutil.Prettify(s)
10763}
10764
10765// GoString returns the string representation
10766func (s ScalingConstraints) GoString() string {
10767	return s.String()
10768}
10769
10770// Validate inspects the fields of the type to determine if they are valid.
10771func (s *ScalingConstraints) Validate() error {
10772	invalidParams := request.ErrInvalidParams{Context: "ScalingConstraints"}
10773	if s.MaxCapacity == nil {
10774		invalidParams.Add(request.NewErrParamRequired("MaxCapacity"))
10775	}
10776	if s.MinCapacity == nil {
10777		invalidParams.Add(request.NewErrParamRequired("MinCapacity"))
10778	}
10779
10780	if invalidParams.Len() > 0 {
10781		return invalidParams
10782	}
10783	return nil
10784}
10785
10786// SetMaxCapacity sets the MaxCapacity field's value.
10787func (s *ScalingConstraints) SetMaxCapacity(v int64) *ScalingConstraints {
10788	s.MaxCapacity = &v
10789	return s
10790}
10791
10792// SetMinCapacity sets the MinCapacity field's value.
10793func (s *ScalingConstraints) SetMinCapacity(v int64) *ScalingConstraints {
10794	s.MinCapacity = &v
10795	return s
10796}
10797
10798// A scale-in or scale-out rule that defines scaling activity, including the
10799// CloudWatch metric alarm that triggers activity, how EC2 instances are added
10800// or removed, and the periodicity of adjustments. The automatic scaling policy
10801// for an instance group can comprise one or more automatic scaling rules.
10802type ScalingRule struct {
10803	_ struct{} `type:"structure"`
10804
10805	// The conditions that trigger an automatic scaling activity.
10806	//
10807	// Action is a required field
10808	Action *ScalingAction `type:"structure" required:"true"`
10809
10810	// A friendly, more verbose description of the automatic scaling rule.
10811	Description *string `type:"string"`
10812
10813	// The name used to identify an automatic scaling rule. Rule names must be unique
10814	// within a scaling policy.
10815	//
10816	// Name is a required field
10817	Name *string `type:"string" required:"true"`
10818
10819	// The CloudWatch alarm definition that determines when automatic scaling activity
10820	// is triggered.
10821	//
10822	// Trigger is a required field
10823	Trigger *ScalingTrigger `type:"structure" required:"true"`
10824}
10825
10826// String returns the string representation
10827func (s ScalingRule) String() string {
10828	return awsutil.Prettify(s)
10829}
10830
10831// GoString returns the string representation
10832func (s ScalingRule) GoString() string {
10833	return s.String()
10834}
10835
10836// Validate inspects the fields of the type to determine if they are valid.
10837func (s *ScalingRule) Validate() error {
10838	invalidParams := request.ErrInvalidParams{Context: "ScalingRule"}
10839	if s.Action == nil {
10840		invalidParams.Add(request.NewErrParamRequired("Action"))
10841	}
10842	if s.Name == nil {
10843		invalidParams.Add(request.NewErrParamRequired("Name"))
10844	}
10845	if s.Trigger == nil {
10846		invalidParams.Add(request.NewErrParamRequired("Trigger"))
10847	}
10848	if s.Action != nil {
10849		if err := s.Action.Validate(); err != nil {
10850			invalidParams.AddNested("Action", err.(request.ErrInvalidParams))
10851		}
10852	}
10853	if s.Trigger != nil {
10854		if err := s.Trigger.Validate(); err != nil {
10855			invalidParams.AddNested("Trigger", err.(request.ErrInvalidParams))
10856		}
10857	}
10858
10859	if invalidParams.Len() > 0 {
10860		return invalidParams
10861	}
10862	return nil
10863}
10864
10865// SetAction sets the Action field's value.
10866func (s *ScalingRule) SetAction(v *ScalingAction) *ScalingRule {
10867	s.Action = v
10868	return s
10869}
10870
10871// SetDescription sets the Description field's value.
10872func (s *ScalingRule) SetDescription(v string) *ScalingRule {
10873	s.Description = &v
10874	return s
10875}
10876
10877// SetName sets the Name field's value.
10878func (s *ScalingRule) SetName(v string) *ScalingRule {
10879	s.Name = &v
10880	return s
10881}
10882
10883// SetTrigger sets the Trigger field's value.
10884func (s *ScalingRule) SetTrigger(v *ScalingTrigger) *ScalingRule {
10885	s.Trigger = v
10886	return s
10887}
10888
10889// The conditions that trigger an automatic scaling activity.
10890type ScalingTrigger struct {
10891	_ struct{} `type:"structure"`
10892
10893	// The definition of a CloudWatch metric alarm. When the defined alarm conditions
10894	// are met along with other trigger parameters, scaling activity begins.
10895	//
10896	// CloudWatchAlarmDefinition is a required field
10897	CloudWatchAlarmDefinition *CloudWatchAlarmDefinition `type:"structure" required:"true"`
10898}
10899
10900// String returns the string representation
10901func (s ScalingTrigger) String() string {
10902	return awsutil.Prettify(s)
10903}
10904
10905// GoString returns the string representation
10906func (s ScalingTrigger) GoString() string {
10907	return s.String()
10908}
10909
10910// Validate inspects the fields of the type to determine if they are valid.
10911func (s *ScalingTrigger) Validate() error {
10912	invalidParams := request.ErrInvalidParams{Context: "ScalingTrigger"}
10913	if s.CloudWatchAlarmDefinition == nil {
10914		invalidParams.Add(request.NewErrParamRequired("CloudWatchAlarmDefinition"))
10915	}
10916	if s.CloudWatchAlarmDefinition != nil {
10917		if err := s.CloudWatchAlarmDefinition.Validate(); err != nil {
10918			invalidParams.AddNested("CloudWatchAlarmDefinition", err.(request.ErrInvalidParams))
10919		}
10920	}
10921
10922	if invalidParams.Len() > 0 {
10923		return invalidParams
10924	}
10925	return nil
10926}
10927
10928// SetCloudWatchAlarmDefinition sets the CloudWatchAlarmDefinition field's value.
10929func (s *ScalingTrigger) SetCloudWatchAlarmDefinition(v *CloudWatchAlarmDefinition) *ScalingTrigger {
10930	s.CloudWatchAlarmDefinition = v
10931	return s
10932}
10933
10934// Configuration of the script to run during a bootstrap action.
10935type ScriptBootstrapActionConfig struct {
10936	_ struct{} `type:"structure"`
10937
10938	// A list of command line arguments to pass to the bootstrap action script.
10939	Args []*string `type:"list"`
10940
10941	// Location of the script to run during a bootstrap action. Can be either a
10942	// location in Amazon S3 or on a local file system.
10943	//
10944	// Path is a required field
10945	Path *string `type:"string" required:"true"`
10946}
10947
10948// String returns the string representation
10949func (s ScriptBootstrapActionConfig) String() string {
10950	return awsutil.Prettify(s)
10951}
10952
10953// GoString returns the string representation
10954func (s ScriptBootstrapActionConfig) GoString() string {
10955	return s.String()
10956}
10957
10958// Validate inspects the fields of the type to determine if they are valid.
10959func (s *ScriptBootstrapActionConfig) Validate() error {
10960	invalidParams := request.ErrInvalidParams{Context: "ScriptBootstrapActionConfig"}
10961	if s.Path == nil {
10962		invalidParams.Add(request.NewErrParamRequired("Path"))
10963	}
10964
10965	if invalidParams.Len() > 0 {
10966		return invalidParams
10967	}
10968	return nil
10969}
10970
10971// SetArgs sets the Args field's value.
10972func (s *ScriptBootstrapActionConfig) SetArgs(v []*string) *ScriptBootstrapActionConfig {
10973	s.Args = v
10974	return s
10975}
10976
10977// SetPath sets the Path field's value.
10978func (s *ScriptBootstrapActionConfig) SetPath(v string) *ScriptBootstrapActionConfig {
10979	s.Path = &v
10980	return s
10981}
10982
10983// The creation date and time, and name, of a security configuration.
10984type SecurityConfigurationSummary struct {
10985	_ struct{} `type:"structure"`
10986
10987	// The date and time the security configuration was created.
10988	CreationDateTime *time.Time `type:"timestamp"`
10989
10990	// The name of the security configuration.
10991	Name *string `type:"string"`
10992}
10993
10994// String returns the string representation
10995func (s SecurityConfigurationSummary) String() string {
10996	return awsutil.Prettify(s)
10997}
10998
10999// GoString returns the string representation
11000func (s SecurityConfigurationSummary) GoString() string {
11001	return s.String()
11002}
11003
11004// SetCreationDateTime sets the CreationDateTime field's value.
11005func (s *SecurityConfigurationSummary) SetCreationDateTime(v time.Time) *SecurityConfigurationSummary {
11006	s.CreationDateTime = &v
11007	return s
11008}
11009
11010// SetName sets the Name field's value.
11011func (s *SecurityConfigurationSummary) SetName(v string) *SecurityConfigurationSummary {
11012	s.Name = &v
11013	return s
11014}
11015
11016// The input argument to the TerminationProtection operation.
11017type SetTerminationProtectionInput struct {
11018	_ struct{} `type:"structure"`
11019
11020	// A list of strings that uniquely identify the clusters to protect. This identifier
11021	// is returned by RunJobFlow and can also be obtained from DescribeJobFlows .
11022	//
11023	// JobFlowIds is a required field
11024	JobFlowIds []*string `type:"list" required:"true"`
11025
11026	// A Boolean that indicates whether to protect the cluster and prevent the Amazon
11027	// EC2 instances in the cluster from shutting down due to API calls, user intervention,
11028	// or job-flow error.
11029	//
11030	// TerminationProtected is a required field
11031	TerminationProtected *bool `type:"boolean" required:"true"`
11032}
11033
11034// String returns the string representation
11035func (s SetTerminationProtectionInput) String() string {
11036	return awsutil.Prettify(s)
11037}
11038
11039// GoString returns the string representation
11040func (s SetTerminationProtectionInput) GoString() string {
11041	return s.String()
11042}
11043
11044// Validate inspects the fields of the type to determine if they are valid.
11045func (s *SetTerminationProtectionInput) Validate() error {
11046	invalidParams := request.ErrInvalidParams{Context: "SetTerminationProtectionInput"}
11047	if s.JobFlowIds == nil {
11048		invalidParams.Add(request.NewErrParamRequired("JobFlowIds"))
11049	}
11050	if s.TerminationProtected == nil {
11051		invalidParams.Add(request.NewErrParamRequired("TerminationProtected"))
11052	}
11053
11054	if invalidParams.Len() > 0 {
11055		return invalidParams
11056	}
11057	return nil
11058}
11059
11060// SetJobFlowIds sets the JobFlowIds field's value.
11061func (s *SetTerminationProtectionInput) SetJobFlowIds(v []*string) *SetTerminationProtectionInput {
11062	s.JobFlowIds = v
11063	return s
11064}
11065
11066// SetTerminationProtected sets the TerminationProtected field's value.
11067func (s *SetTerminationProtectionInput) SetTerminationProtected(v bool) *SetTerminationProtectionInput {
11068	s.TerminationProtected = &v
11069	return s
11070}
11071
11072type SetTerminationProtectionOutput struct {
11073	_ struct{} `type:"structure"`
11074}
11075
11076// String returns the string representation
11077func (s SetTerminationProtectionOutput) String() string {
11078	return awsutil.Prettify(s)
11079}
11080
11081// GoString returns the string representation
11082func (s SetTerminationProtectionOutput) GoString() string {
11083	return s.String()
11084}
11085
11086// The input to the SetVisibleToAllUsers action.
11087type SetVisibleToAllUsersInput struct {
11088	_ struct{} `type:"structure"`
11089
11090	// The unique identifier of the job flow (cluster).
11091	//
11092	// JobFlowIds is a required field
11093	JobFlowIds []*string `type:"list" required:"true"`
11094
11095	// A value of true indicates that all IAM users in the AWS account can perform
11096	// cluster actions if they have the proper IAM policy permissions. This is the
11097	// default. A value of false indicates that only the IAM user who created the
11098	// cluster can perform actions.
11099	//
11100	// VisibleToAllUsers is a required field
11101	VisibleToAllUsers *bool `type:"boolean" required:"true"`
11102}
11103
11104// String returns the string representation
11105func (s SetVisibleToAllUsersInput) String() string {
11106	return awsutil.Prettify(s)
11107}
11108
11109// GoString returns the string representation
11110func (s SetVisibleToAllUsersInput) GoString() string {
11111	return s.String()
11112}
11113
11114// Validate inspects the fields of the type to determine if they are valid.
11115func (s *SetVisibleToAllUsersInput) Validate() error {
11116	invalidParams := request.ErrInvalidParams{Context: "SetVisibleToAllUsersInput"}
11117	if s.JobFlowIds == nil {
11118		invalidParams.Add(request.NewErrParamRequired("JobFlowIds"))
11119	}
11120	if s.VisibleToAllUsers == nil {
11121		invalidParams.Add(request.NewErrParamRequired("VisibleToAllUsers"))
11122	}
11123
11124	if invalidParams.Len() > 0 {
11125		return invalidParams
11126	}
11127	return nil
11128}
11129
11130// SetJobFlowIds sets the JobFlowIds field's value.
11131func (s *SetVisibleToAllUsersInput) SetJobFlowIds(v []*string) *SetVisibleToAllUsersInput {
11132	s.JobFlowIds = v
11133	return s
11134}
11135
11136// SetVisibleToAllUsers sets the VisibleToAllUsers field's value.
11137func (s *SetVisibleToAllUsersInput) SetVisibleToAllUsers(v bool) *SetVisibleToAllUsersInput {
11138	s.VisibleToAllUsers = &v
11139	return s
11140}
11141
11142type SetVisibleToAllUsersOutput struct {
11143	_ struct{} `type:"structure"`
11144}
11145
11146// String returns the string representation
11147func (s SetVisibleToAllUsersOutput) String() string {
11148	return awsutil.Prettify(s)
11149}
11150
11151// GoString returns the string representation
11152func (s SetVisibleToAllUsersOutput) GoString() string {
11153	return s.String()
11154}
11155
11156// Policy for customizing shrink operations. Allows configuration of decommissioning
11157// timeout and targeted instance shrinking.
11158type ShrinkPolicy struct {
11159	_ struct{} `type:"structure"`
11160
11161	// The desired timeout for decommissioning an instance. Overrides the default
11162	// YARN decommissioning timeout.
11163	DecommissionTimeout *int64 `type:"integer"`
11164
11165	// Custom policy for requesting termination protection or termination of specific
11166	// instances when shrinking an instance group.
11167	InstanceResizePolicy *InstanceResizePolicy `type:"structure"`
11168}
11169
11170// String returns the string representation
11171func (s ShrinkPolicy) String() string {
11172	return awsutil.Prettify(s)
11173}
11174
11175// GoString returns the string representation
11176func (s ShrinkPolicy) GoString() string {
11177	return s.String()
11178}
11179
11180// SetDecommissionTimeout sets the DecommissionTimeout field's value.
11181func (s *ShrinkPolicy) SetDecommissionTimeout(v int64) *ShrinkPolicy {
11182	s.DecommissionTimeout = &v
11183	return s
11184}
11185
11186// SetInstanceResizePolicy sets the InstanceResizePolicy field's value.
11187func (s *ShrinkPolicy) SetInstanceResizePolicy(v *InstanceResizePolicy) *ShrinkPolicy {
11188	s.InstanceResizePolicy = v
11189	return s
11190}
11191
11192// An automatic scaling configuration, which describes how the policy adds or
11193// removes instances, the cooldown period, and the number of EC2 instances that
11194// will be added each time the CloudWatch metric alarm condition is satisfied.
11195type SimpleScalingPolicyConfiguration struct {
11196	_ struct{} `type:"structure"`
11197
11198	// The way in which EC2 instances are added (if ScalingAdjustment is a positive
11199	// number) or terminated (if ScalingAdjustment is a negative number) each time
11200	// the scaling activity is triggered. CHANGE_IN_CAPACITY is the default. CHANGE_IN_CAPACITY
11201	// indicates that the EC2 instance count increments or decrements by ScalingAdjustment,
11202	// which should be expressed as an integer. PERCENT_CHANGE_IN_CAPACITY indicates
11203	// the instance count increments or decrements by the percentage specified by
11204	// ScalingAdjustment, which should be expressed as an integer. For example,
11205	// 20 indicates an increase in 20% increments of cluster capacity. EXACT_CAPACITY
11206	// indicates the scaling activity results in an instance group with the number
11207	// of EC2 instances specified by ScalingAdjustment, which should be expressed
11208	// as a positive integer.
11209	AdjustmentType *string `type:"string" enum:"AdjustmentType"`
11210
11211	// The amount of time, in seconds, after a scaling activity completes before
11212	// any further trigger-related scaling activities can start. The default value
11213	// is 0.
11214	CoolDown *int64 `type:"integer"`
11215
11216	// The amount by which to scale in or scale out, based on the specified AdjustmentType.
11217	// A positive value adds to the instance group's EC2 instance count while a
11218	// negative number removes instances. If AdjustmentType is set to EXACT_CAPACITY,
11219	// the number should only be a positive integer. If AdjustmentType is set to
11220	// PERCENT_CHANGE_IN_CAPACITY, the value should express the percentage as an
11221	// integer. For example, -20 indicates a decrease in 20% increments of cluster
11222	// capacity.
11223	//
11224	// ScalingAdjustment is a required field
11225	ScalingAdjustment *int64 `type:"integer" required:"true"`
11226}
11227
11228// String returns the string representation
11229func (s SimpleScalingPolicyConfiguration) String() string {
11230	return awsutil.Prettify(s)
11231}
11232
11233// GoString returns the string representation
11234func (s SimpleScalingPolicyConfiguration) GoString() string {
11235	return s.String()
11236}
11237
11238// Validate inspects the fields of the type to determine if they are valid.
11239func (s *SimpleScalingPolicyConfiguration) Validate() error {
11240	invalidParams := request.ErrInvalidParams{Context: "SimpleScalingPolicyConfiguration"}
11241	if s.ScalingAdjustment == nil {
11242		invalidParams.Add(request.NewErrParamRequired("ScalingAdjustment"))
11243	}
11244
11245	if invalidParams.Len() > 0 {
11246		return invalidParams
11247	}
11248	return nil
11249}
11250
11251// SetAdjustmentType sets the AdjustmentType field's value.
11252func (s *SimpleScalingPolicyConfiguration) SetAdjustmentType(v string) *SimpleScalingPolicyConfiguration {
11253	s.AdjustmentType = &v
11254	return s
11255}
11256
11257// SetCoolDown sets the CoolDown field's value.
11258func (s *SimpleScalingPolicyConfiguration) SetCoolDown(v int64) *SimpleScalingPolicyConfiguration {
11259	s.CoolDown = &v
11260	return s
11261}
11262
11263// SetScalingAdjustment sets the ScalingAdjustment field's value.
11264func (s *SimpleScalingPolicyConfiguration) SetScalingAdjustment(v int64) *SimpleScalingPolicyConfiguration {
11265	s.ScalingAdjustment = &v
11266	return s
11267}
11268
11269// The launch specification for Spot instances in the instance fleet, which
11270// determines the defined duration, provisioning timeout behavior, and allocation
11271// strategy.
11272//
11273// The instance fleet configuration is available only in Amazon EMR versions
11274// 4.8.0 and later, excluding 5.0.x versions. Spot instance allocation strategy
11275// is available in Amazon EMR version 5.12.1 and later.
11276type SpotProvisioningSpecification struct {
11277	_ struct{} `type:"structure"`
11278
11279	// Specifies the strategy to use in launching Spot instance fleets. Currently,
11280	// the only option is capacity-optimized (the default), which launches instances
11281	// from Spot instance pools with optimal capacity for the number of instances
11282	// that are launching.
11283	AllocationStrategy *string `type:"string" enum:"SpotProvisioningAllocationStrategy"`
11284
11285	// The defined duration for Spot instances (also known as Spot blocks) in minutes.
11286	// When specified, the Spot instance does not terminate before the defined duration
11287	// expires, and defined duration pricing for Spot instances applies. Valid values
11288	// are 60, 120, 180, 240, 300, or 360. The duration period starts as soon as
11289	// a Spot instance receives its instance ID. At the end of the duration, Amazon
11290	// EC2 marks the Spot instance for termination and provides a Spot instance
11291	// termination notice, which gives the instance a two-minute warning before
11292	// it terminates.
11293	BlockDurationMinutes *int64 `type:"integer"`
11294
11295	// The action to take when TargetSpotCapacity has not been fulfilled when the
11296	// TimeoutDurationMinutes has expired; that is, when all Spot instances could
11297	// not be provisioned within the Spot provisioning timeout. Valid values are
11298	// TERMINATE_CLUSTER and SWITCH_TO_ON_DEMAND. SWITCH_TO_ON_DEMAND specifies
11299	// that if no Spot instances are available, On-Demand Instances should be provisioned
11300	// to fulfill any remaining Spot capacity.
11301	//
11302	// TimeoutAction is a required field
11303	TimeoutAction *string `type:"string" required:"true" enum:"SpotProvisioningTimeoutAction"`
11304
11305	// The spot provisioning timeout period in minutes. If Spot instances are not
11306	// provisioned within this time period, the TimeOutAction is taken. Minimum
11307	// value is 5 and maximum value is 1440. The timeout applies only during initial
11308	// provisioning, when the cluster is first created.
11309	//
11310	// TimeoutDurationMinutes is a required field
11311	TimeoutDurationMinutes *int64 `type:"integer" required:"true"`
11312}
11313
11314// String returns the string representation
11315func (s SpotProvisioningSpecification) String() string {
11316	return awsutil.Prettify(s)
11317}
11318
11319// GoString returns the string representation
11320func (s SpotProvisioningSpecification) GoString() string {
11321	return s.String()
11322}
11323
11324// Validate inspects the fields of the type to determine if they are valid.
11325func (s *SpotProvisioningSpecification) Validate() error {
11326	invalidParams := request.ErrInvalidParams{Context: "SpotProvisioningSpecification"}
11327	if s.TimeoutAction == nil {
11328		invalidParams.Add(request.NewErrParamRequired("TimeoutAction"))
11329	}
11330	if s.TimeoutDurationMinutes == nil {
11331		invalidParams.Add(request.NewErrParamRequired("TimeoutDurationMinutes"))
11332	}
11333
11334	if invalidParams.Len() > 0 {
11335		return invalidParams
11336	}
11337	return nil
11338}
11339
11340// SetAllocationStrategy sets the AllocationStrategy field's value.
11341func (s *SpotProvisioningSpecification) SetAllocationStrategy(v string) *SpotProvisioningSpecification {
11342	s.AllocationStrategy = &v
11343	return s
11344}
11345
11346// SetBlockDurationMinutes sets the BlockDurationMinutes field's value.
11347func (s *SpotProvisioningSpecification) SetBlockDurationMinutes(v int64) *SpotProvisioningSpecification {
11348	s.BlockDurationMinutes = &v
11349	return s
11350}
11351
11352// SetTimeoutAction sets the TimeoutAction field's value.
11353func (s *SpotProvisioningSpecification) SetTimeoutAction(v string) *SpotProvisioningSpecification {
11354	s.TimeoutAction = &v
11355	return s
11356}
11357
11358// SetTimeoutDurationMinutes sets the TimeoutDurationMinutes field's value.
11359func (s *SpotProvisioningSpecification) SetTimeoutDurationMinutes(v int64) *SpotProvisioningSpecification {
11360	s.TimeoutDurationMinutes = &v
11361	return s
11362}
11363
11364// This represents a step in a cluster.
11365type Step struct {
11366	_ struct{} `type:"structure"`
11367
11368	// The action to take when the cluster step fails. Possible values are TERMINATE_CLUSTER,
11369	// CANCEL_AND_WAIT, and CONTINUE. TERMINATE_JOB_FLOW is provided for backward
11370	// compatibility. We recommend using TERMINATE_CLUSTER instead.
11371	ActionOnFailure *string `type:"string" enum:"ActionOnFailure"`
11372
11373	// The Hadoop job configuration of the cluster step.
11374	Config *HadoopStepConfig `type:"structure"`
11375
11376	// The identifier of the cluster step.
11377	Id *string `type:"string"`
11378
11379	// The name of the cluster step.
11380	Name *string `type:"string"`
11381
11382	// The current execution status details of the cluster step.
11383	Status *StepStatus `type:"structure"`
11384}
11385
11386// String returns the string representation
11387func (s Step) String() string {
11388	return awsutil.Prettify(s)
11389}
11390
11391// GoString returns the string representation
11392func (s Step) GoString() string {
11393	return s.String()
11394}
11395
11396// SetActionOnFailure sets the ActionOnFailure field's value.
11397func (s *Step) SetActionOnFailure(v string) *Step {
11398	s.ActionOnFailure = &v
11399	return s
11400}
11401
11402// SetConfig sets the Config field's value.
11403func (s *Step) SetConfig(v *HadoopStepConfig) *Step {
11404	s.Config = v
11405	return s
11406}
11407
11408// SetId sets the Id field's value.
11409func (s *Step) SetId(v string) *Step {
11410	s.Id = &v
11411	return s
11412}
11413
11414// SetName sets the Name field's value.
11415func (s *Step) SetName(v string) *Step {
11416	s.Name = &v
11417	return s
11418}
11419
11420// SetStatus sets the Status field's value.
11421func (s *Step) SetStatus(v *StepStatus) *Step {
11422	s.Status = v
11423	return s
11424}
11425
11426// Specification of a cluster (job flow) step.
11427type StepConfig struct {
11428	_ struct{} `type:"structure"`
11429
11430	// The action to take when the cluster step fails. Possible values are TERMINATE_CLUSTER,
11431	// CANCEL_AND_WAIT, and CONTINUE. TERMINATE_JOB_FLOW is provided for backward
11432	// compatibility. We recommend using TERMINATE_CLUSTER instead.
11433	ActionOnFailure *string `type:"string" enum:"ActionOnFailure"`
11434
11435	// The JAR file used for the step.
11436	//
11437	// HadoopJarStep is a required field
11438	HadoopJarStep *HadoopJarStepConfig `type:"structure" required:"true"`
11439
11440	// The name of the step.
11441	//
11442	// Name is a required field
11443	Name *string `type:"string" required:"true"`
11444}
11445
11446// String returns the string representation
11447func (s StepConfig) String() string {
11448	return awsutil.Prettify(s)
11449}
11450
11451// GoString returns the string representation
11452func (s StepConfig) GoString() string {
11453	return s.String()
11454}
11455
11456// Validate inspects the fields of the type to determine if they are valid.
11457func (s *StepConfig) Validate() error {
11458	invalidParams := request.ErrInvalidParams{Context: "StepConfig"}
11459	if s.HadoopJarStep == nil {
11460		invalidParams.Add(request.NewErrParamRequired("HadoopJarStep"))
11461	}
11462	if s.Name == nil {
11463		invalidParams.Add(request.NewErrParamRequired("Name"))
11464	}
11465	if s.HadoopJarStep != nil {
11466		if err := s.HadoopJarStep.Validate(); err != nil {
11467			invalidParams.AddNested("HadoopJarStep", err.(request.ErrInvalidParams))
11468		}
11469	}
11470
11471	if invalidParams.Len() > 0 {
11472		return invalidParams
11473	}
11474	return nil
11475}
11476
11477// SetActionOnFailure sets the ActionOnFailure field's value.
11478func (s *StepConfig) SetActionOnFailure(v string) *StepConfig {
11479	s.ActionOnFailure = &v
11480	return s
11481}
11482
11483// SetHadoopJarStep sets the HadoopJarStep field's value.
11484func (s *StepConfig) SetHadoopJarStep(v *HadoopJarStepConfig) *StepConfig {
11485	s.HadoopJarStep = v
11486	return s
11487}
11488
11489// SetName sets the Name field's value.
11490func (s *StepConfig) SetName(v string) *StepConfig {
11491	s.Name = &v
11492	return s
11493}
11494
11495// Combines the execution state and configuration of a step.
11496type StepDetail struct {
11497	_ struct{} `type:"structure"`
11498
11499	// The description of the step status.
11500	//
11501	// ExecutionStatusDetail is a required field
11502	ExecutionStatusDetail *StepExecutionStatusDetail `type:"structure" required:"true"`
11503
11504	// The step configuration.
11505	//
11506	// StepConfig is a required field
11507	StepConfig *StepConfig `type:"structure" required:"true"`
11508}
11509
11510// String returns the string representation
11511func (s StepDetail) String() string {
11512	return awsutil.Prettify(s)
11513}
11514
11515// GoString returns the string representation
11516func (s StepDetail) GoString() string {
11517	return s.String()
11518}
11519
11520// SetExecutionStatusDetail sets the ExecutionStatusDetail field's value.
11521func (s *StepDetail) SetExecutionStatusDetail(v *StepExecutionStatusDetail) *StepDetail {
11522	s.ExecutionStatusDetail = v
11523	return s
11524}
11525
11526// SetStepConfig sets the StepConfig field's value.
11527func (s *StepDetail) SetStepConfig(v *StepConfig) *StepDetail {
11528	s.StepConfig = v
11529	return s
11530}
11531
11532// The execution state of a step.
11533type StepExecutionStatusDetail struct {
11534	_ struct{} `type:"structure"`
11535
11536	// The creation date and time of the step.
11537	//
11538	// CreationDateTime is a required field
11539	CreationDateTime *time.Time `type:"timestamp" required:"true"`
11540
11541	// The completion date and time of the step.
11542	EndDateTime *time.Time `type:"timestamp"`
11543
11544	// A description of the step's current state.
11545	LastStateChangeReason *string `type:"string"`
11546
11547	// The start date and time of the step.
11548	StartDateTime *time.Time `type:"timestamp"`
11549
11550	// The state of the step.
11551	//
11552	// State is a required field
11553	State *string `type:"string" required:"true" enum:"StepExecutionState"`
11554}
11555
11556// String returns the string representation
11557func (s StepExecutionStatusDetail) String() string {
11558	return awsutil.Prettify(s)
11559}
11560
11561// GoString returns the string representation
11562func (s StepExecutionStatusDetail) GoString() string {
11563	return s.String()
11564}
11565
11566// SetCreationDateTime sets the CreationDateTime field's value.
11567func (s *StepExecutionStatusDetail) SetCreationDateTime(v time.Time) *StepExecutionStatusDetail {
11568	s.CreationDateTime = &v
11569	return s
11570}
11571
11572// SetEndDateTime sets the EndDateTime field's value.
11573func (s *StepExecutionStatusDetail) SetEndDateTime(v time.Time) *StepExecutionStatusDetail {
11574	s.EndDateTime = &v
11575	return s
11576}
11577
11578// SetLastStateChangeReason sets the LastStateChangeReason field's value.
11579func (s *StepExecutionStatusDetail) SetLastStateChangeReason(v string) *StepExecutionStatusDetail {
11580	s.LastStateChangeReason = &v
11581	return s
11582}
11583
11584// SetStartDateTime sets the StartDateTime field's value.
11585func (s *StepExecutionStatusDetail) SetStartDateTime(v time.Time) *StepExecutionStatusDetail {
11586	s.StartDateTime = &v
11587	return s
11588}
11589
11590// SetState sets the State field's value.
11591func (s *StepExecutionStatusDetail) SetState(v string) *StepExecutionStatusDetail {
11592	s.State = &v
11593	return s
11594}
11595
11596// The details of the step state change reason.
11597type StepStateChangeReason struct {
11598	_ struct{} `type:"structure"`
11599
11600	// The programmable code for the state change reason. Note: Currently, the service
11601	// provides no code for the state change.
11602	Code *string `type:"string" enum:"StepStateChangeReasonCode"`
11603
11604	// The descriptive message for the state change reason.
11605	Message *string `type:"string"`
11606}
11607
11608// String returns the string representation
11609func (s StepStateChangeReason) String() string {
11610	return awsutil.Prettify(s)
11611}
11612
11613// GoString returns the string representation
11614func (s StepStateChangeReason) GoString() string {
11615	return s.String()
11616}
11617
11618// SetCode sets the Code field's value.
11619func (s *StepStateChangeReason) SetCode(v string) *StepStateChangeReason {
11620	s.Code = &v
11621	return s
11622}
11623
11624// SetMessage sets the Message field's value.
11625func (s *StepStateChangeReason) SetMessage(v string) *StepStateChangeReason {
11626	s.Message = &v
11627	return s
11628}
11629
11630// The execution status details of the cluster step.
11631type StepStatus struct {
11632	_ struct{} `type:"structure"`
11633
11634	// The details for the step failure including reason, message, and log file
11635	// path where the root cause was identified.
11636	FailureDetails *FailureDetails `type:"structure"`
11637
11638	// The execution state of the cluster step.
11639	State *string `type:"string" enum:"StepState"`
11640
11641	// The reason for the step execution status change.
11642	StateChangeReason *StepStateChangeReason `type:"structure"`
11643
11644	// The timeline of the cluster step status over time.
11645	Timeline *StepTimeline `type:"structure"`
11646}
11647
11648// String returns the string representation
11649func (s StepStatus) String() string {
11650	return awsutil.Prettify(s)
11651}
11652
11653// GoString returns the string representation
11654func (s StepStatus) GoString() string {
11655	return s.String()
11656}
11657
11658// SetFailureDetails sets the FailureDetails field's value.
11659func (s *StepStatus) SetFailureDetails(v *FailureDetails) *StepStatus {
11660	s.FailureDetails = v
11661	return s
11662}
11663
11664// SetState sets the State field's value.
11665func (s *StepStatus) SetState(v string) *StepStatus {
11666	s.State = &v
11667	return s
11668}
11669
11670// SetStateChangeReason sets the StateChangeReason field's value.
11671func (s *StepStatus) SetStateChangeReason(v *StepStateChangeReason) *StepStatus {
11672	s.StateChangeReason = v
11673	return s
11674}
11675
11676// SetTimeline sets the Timeline field's value.
11677func (s *StepStatus) SetTimeline(v *StepTimeline) *StepStatus {
11678	s.Timeline = v
11679	return s
11680}
11681
11682// The summary of the cluster step.
11683type StepSummary struct {
11684	_ struct{} `type:"structure"`
11685
11686	// The action to take when the cluster step fails. Possible values are TERMINATE_CLUSTER,
11687	// CANCEL_AND_WAIT, and CONTINUE. TERMINATE_JOB_FLOW is available for backward
11688	// compatibility. We recommend using TERMINATE_CLUSTER instead.
11689	ActionOnFailure *string `type:"string" enum:"ActionOnFailure"`
11690
11691	// The Hadoop job configuration of the cluster step.
11692	Config *HadoopStepConfig `type:"structure"`
11693
11694	// The identifier of the cluster step.
11695	Id *string `type:"string"`
11696
11697	// The name of the cluster step.
11698	Name *string `type:"string"`
11699
11700	// The current execution status details of the cluster step.
11701	Status *StepStatus `type:"structure"`
11702}
11703
11704// String returns the string representation
11705func (s StepSummary) String() string {
11706	return awsutil.Prettify(s)
11707}
11708
11709// GoString returns the string representation
11710func (s StepSummary) GoString() string {
11711	return s.String()
11712}
11713
11714// SetActionOnFailure sets the ActionOnFailure field's value.
11715func (s *StepSummary) SetActionOnFailure(v string) *StepSummary {
11716	s.ActionOnFailure = &v
11717	return s
11718}
11719
11720// SetConfig sets the Config field's value.
11721func (s *StepSummary) SetConfig(v *HadoopStepConfig) *StepSummary {
11722	s.Config = v
11723	return s
11724}
11725
11726// SetId sets the Id field's value.
11727func (s *StepSummary) SetId(v string) *StepSummary {
11728	s.Id = &v
11729	return s
11730}
11731
11732// SetName sets the Name field's value.
11733func (s *StepSummary) SetName(v string) *StepSummary {
11734	s.Name = &v
11735	return s
11736}
11737
11738// SetStatus sets the Status field's value.
11739func (s *StepSummary) SetStatus(v *StepStatus) *StepSummary {
11740	s.Status = v
11741	return s
11742}
11743
11744// The timeline of the cluster step lifecycle.
11745type StepTimeline struct {
11746	_ struct{} `type:"structure"`
11747
11748	// The date and time when the cluster step was created.
11749	CreationDateTime *time.Time `type:"timestamp"`
11750
11751	// The date and time when the cluster step execution completed or failed.
11752	EndDateTime *time.Time `type:"timestamp"`
11753
11754	// The date and time when the cluster step execution started.
11755	StartDateTime *time.Time `type:"timestamp"`
11756}
11757
11758// String returns the string representation
11759func (s StepTimeline) String() string {
11760	return awsutil.Prettify(s)
11761}
11762
11763// GoString returns the string representation
11764func (s StepTimeline) GoString() string {
11765	return s.String()
11766}
11767
11768// SetCreationDateTime sets the CreationDateTime field's value.
11769func (s *StepTimeline) SetCreationDateTime(v time.Time) *StepTimeline {
11770	s.CreationDateTime = &v
11771	return s
11772}
11773
11774// SetEndDateTime sets the EndDateTime field's value.
11775func (s *StepTimeline) SetEndDateTime(v time.Time) *StepTimeline {
11776	s.EndDateTime = &v
11777	return s
11778}
11779
11780// SetStartDateTime sets the StartDateTime field's value.
11781func (s *StepTimeline) SetStartDateTime(v time.Time) *StepTimeline {
11782	s.StartDateTime = &v
11783	return s
11784}
11785
11786// The list of supported product configurations which allow user-supplied arguments.
11787// EMR accepts these arguments and forwards them to the corresponding installation
11788// script as bootstrap action arguments.
11789type SupportedProductConfig struct {
11790	_ struct{} `type:"structure"`
11791
11792	// The list of user-supplied arguments.
11793	Args []*string `type:"list"`
11794
11795	// The name of the product configuration.
11796	Name *string `type:"string"`
11797}
11798
11799// String returns the string representation
11800func (s SupportedProductConfig) String() string {
11801	return awsutil.Prettify(s)
11802}
11803
11804// GoString returns the string representation
11805func (s SupportedProductConfig) GoString() string {
11806	return s.String()
11807}
11808
11809// SetArgs sets the Args field's value.
11810func (s *SupportedProductConfig) SetArgs(v []*string) *SupportedProductConfig {
11811	s.Args = v
11812	return s
11813}
11814
11815// SetName sets the Name field's value.
11816func (s *SupportedProductConfig) SetName(v string) *SupportedProductConfig {
11817	s.Name = &v
11818	return s
11819}
11820
11821// A key/value pair containing user-defined metadata that you can associate
11822// with an Amazon EMR resource. Tags make it easier to associate clusters in
11823// various ways, such as grouping clusters to track your Amazon EMR resource
11824// allocation costs. For more information, see Tag Clusters (https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html).
11825type Tag struct {
11826	_ struct{} `type:"structure"`
11827
11828	// A user-defined key, which is the minimum required information for a valid
11829	// tag. For more information, see Tag (https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html).
11830	Key *string `type:"string"`
11831
11832	// A user-defined value, which is optional in a tag. For more information, see
11833	// Tag Clusters (https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html).
11834	Value *string `type:"string"`
11835}
11836
11837// String returns the string representation
11838func (s Tag) String() string {
11839	return awsutil.Prettify(s)
11840}
11841
11842// GoString returns the string representation
11843func (s Tag) GoString() string {
11844	return s.String()
11845}
11846
11847// SetKey sets the Key field's value.
11848func (s *Tag) SetKey(v string) *Tag {
11849	s.Key = &v
11850	return s
11851}
11852
11853// SetValue sets the Value field's value.
11854func (s *Tag) SetValue(v string) *Tag {
11855	s.Value = &v
11856	return s
11857}
11858
11859// Input to the TerminateJobFlows operation.
11860type TerminateJobFlowsInput struct {
11861	_ struct{} `type:"structure"`
11862
11863	// A list of job flows to be shutdown.
11864	//
11865	// JobFlowIds is a required field
11866	JobFlowIds []*string `type:"list" required:"true"`
11867}
11868
11869// String returns the string representation
11870func (s TerminateJobFlowsInput) String() string {
11871	return awsutil.Prettify(s)
11872}
11873
11874// GoString returns the string representation
11875func (s TerminateJobFlowsInput) GoString() string {
11876	return s.String()
11877}
11878
11879// Validate inspects the fields of the type to determine if they are valid.
11880func (s *TerminateJobFlowsInput) Validate() error {
11881	invalidParams := request.ErrInvalidParams{Context: "TerminateJobFlowsInput"}
11882	if s.JobFlowIds == nil {
11883		invalidParams.Add(request.NewErrParamRequired("JobFlowIds"))
11884	}
11885
11886	if invalidParams.Len() > 0 {
11887		return invalidParams
11888	}
11889	return nil
11890}
11891
11892// SetJobFlowIds sets the JobFlowIds field's value.
11893func (s *TerminateJobFlowsInput) SetJobFlowIds(v []*string) *TerminateJobFlowsInput {
11894	s.JobFlowIds = v
11895	return s
11896}
11897
11898type TerminateJobFlowsOutput struct {
11899	_ struct{} `type:"structure"`
11900}
11901
11902// String returns the string representation
11903func (s TerminateJobFlowsOutput) String() string {
11904	return awsutil.Prettify(s)
11905}
11906
11907// GoString returns the string representation
11908func (s TerminateJobFlowsOutput) GoString() string {
11909	return s.String()
11910}
11911
11912// EBS volume specifications such as volume type, IOPS, and size (GiB) that
11913// will be requested for the EBS volume attached to an EC2 instance in the cluster.
11914type VolumeSpecification struct {
11915	_ struct{} `type:"structure"`
11916
11917	// The number of I/O operations per second (IOPS) that the volume supports.
11918	Iops *int64 `type:"integer"`
11919
11920	// The volume size, in gibibytes (GiB). This can be a number from 1 - 1024.
11921	// If the volume type is EBS-optimized, the minimum value is 10.
11922	//
11923	// SizeInGB is a required field
11924	SizeInGB *int64 `type:"integer" required:"true"`
11925
11926	// The volume type. Volume types supported are gp2, io1, standard.
11927	//
11928	// VolumeType is a required field
11929	VolumeType *string `type:"string" required:"true"`
11930}
11931
11932// String returns the string representation
11933func (s VolumeSpecification) String() string {
11934	return awsutil.Prettify(s)
11935}
11936
11937// GoString returns the string representation
11938func (s VolumeSpecification) GoString() string {
11939	return s.String()
11940}
11941
11942// Validate inspects the fields of the type to determine if they are valid.
11943func (s *VolumeSpecification) Validate() error {
11944	invalidParams := request.ErrInvalidParams{Context: "VolumeSpecification"}
11945	if s.SizeInGB == nil {
11946		invalidParams.Add(request.NewErrParamRequired("SizeInGB"))
11947	}
11948	if s.VolumeType == nil {
11949		invalidParams.Add(request.NewErrParamRequired("VolumeType"))
11950	}
11951
11952	if invalidParams.Len() > 0 {
11953		return invalidParams
11954	}
11955	return nil
11956}
11957
11958// SetIops sets the Iops field's value.
11959func (s *VolumeSpecification) SetIops(v int64) *VolumeSpecification {
11960	s.Iops = &v
11961	return s
11962}
11963
11964// SetSizeInGB sets the SizeInGB field's value.
11965func (s *VolumeSpecification) SetSizeInGB(v int64) *VolumeSpecification {
11966	s.SizeInGB = &v
11967	return s
11968}
11969
11970// SetVolumeType sets the VolumeType field's value.
11971func (s *VolumeSpecification) SetVolumeType(v string) *VolumeSpecification {
11972	s.VolumeType = &v
11973	return s
11974}
11975
11976const (
11977	// ActionOnFailureTerminateJobFlow is a ActionOnFailure enum value
11978	ActionOnFailureTerminateJobFlow = "TERMINATE_JOB_FLOW"
11979
11980	// ActionOnFailureTerminateCluster is a ActionOnFailure enum value
11981	ActionOnFailureTerminateCluster = "TERMINATE_CLUSTER"
11982
11983	// ActionOnFailureCancelAndWait is a ActionOnFailure enum value
11984	ActionOnFailureCancelAndWait = "CANCEL_AND_WAIT"
11985
11986	// ActionOnFailureContinue is a ActionOnFailure enum value
11987	ActionOnFailureContinue = "CONTINUE"
11988)
11989
11990const (
11991	// AdjustmentTypeChangeInCapacity is a AdjustmentType enum value
11992	AdjustmentTypeChangeInCapacity = "CHANGE_IN_CAPACITY"
11993
11994	// AdjustmentTypePercentChangeInCapacity is a AdjustmentType enum value
11995	AdjustmentTypePercentChangeInCapacity = "PERCENT_CHANGE_IN_CAPACITY"
11996
11997	// AdjustmentTypeExactCapacity is a AdjustmentType enum value
11998	AdjustmentTypeExactCapacity = "EXACT_CAPACITY"
11999)
12000
12001const (
12002	// AutoScalingPolicyStatePending is a AutoScalingPolicyState enum value
12003	AutoScalingPolicyStatePending = "PENDING"
12004
12005	// AutoScalingPolicyStateAttaching is a AutoScalingPolicyState enum value
12006	AutoScalingPolicyStateAttaching = "ATTACHING"
12007
12008	// AutoScalingPolicyStateAttached is a AutoScalingPolicyState enum value
12009	AutoScalingPolicyStateAttached = "ATTACHED"
12010
12011	// AutoScalingPolicyStateDetaching is a AutoScalingPolicyState enum value
12012	AutoScalingPolicyStateDetaching = "DETACHING"
12013
12014	// AutoScalingPolicyStateDetached is a AutoScalingPolicyState enum value
12015	AutoScalingPolicyStateDetached = "DETACHED"
12016
12017	// AutoScalingPolicyStateFailed is a AutoScalingPolicyState enum value
12018	AutoScalingPolicyStateFailed = "FAILED"
12019)
12020
12021const (
12022	// AutoScalingPolicyStateChangeReasonCodeUserRequest is a AutoScalingPolicyStateChangeReasonCode enum value
12023	AutoScalingPolicyStateChangeReasonCodeUserRequest = "USER_REQUEST"
12024
12025	// AutoScalingPolicyStateChangeReasonCodeProvisionFailure is a AutoScalingPolicyStateChangeReasonCode enum value
12026	AutoScalingPolicyStateChangeReasonCodeProvisionFailure = "PROVISION_FAILURE"
12027
12028	// AutoScalingPolicyStateChangeReasonCodeCleanupFailure is a AutoScalingPolicyStateChangeReasonCode enum value
12029	AutoScalingPolicyStateChangeReasonCodeCleanupFailure = "CLEANUP_FAILURE"
12030)
12031
12032const (
12033	// CancelStepsRequestStatusSubmitted is a CancelStepsRequestStatus enum value
12034	CancelStepsRequestStatusSubmitted = "SUBMITTED"
12035
12036	// CancelStepsRequestStatusFailed is a CancelStepsRequestStatus enum value
12037	CancelStepsRequestStatusFailed = "FAILED"
12038)
12039
12040const (
12041	// ClusterStateStarting is a ClusterState enum value
12042	ClusterStateStarting = "STARTING"
12043
12044	// ClusterStateBootstrapping is a ClusterState enum value
12045	ClusterStateBootstrapping = "BOOTSTRAPPING"
12046
12047	// ClusterStateRunning is a ClusterState enum value
12048	ClusterStateRunning = "RUNNING"
12049
12050	// ClusterStateWaiting is a ClusterState enum value
12051	ClusterStateWaiting = "WAITING"
12052
12053	// ClusterStateTerminating is a ClusterState enum value
12054	ClusterStateTerminating = "TERMINATING"
12055
12056	// ClusterStateTerminated is a ClusterState enum value
12057	ClusterStateTerminated = "TERMINATED"
12058
12059	// ClusterStateTerminatedWithErrors is a ClusterState enum value
12060	ClusterStateTerminatedWithErrors = "TERMINATED_WITH_ERRORS"
12061)
12062
12063const (
12064	// ClusterStateChangeReasonCodeInternalError is a ClusterStateChangeReasonCode enum value
12065	ClusterStateChangeReasonCodeInternalError = "INTERNAL_ERROR"
12066
12067	// ClusterStateChangeReasonCodeValidationError is a ClusterStateChangeReasonCode enum value
12068	ClusterStateChangeReasonCodeValidationError = "VALIDATION_ERROR"
12069
12070	// ClusterStateChangeReasonCodeInstanceFailure is a ClusterStateChangeReasonCode enum value
12071	ClusterStateChangeReasonCodeInstanceFailure = "INSTANCE_FAILURE"
12072
12073	// ClusterStateChangeReasonCodeInstanceFleetTimeout is a ClusterStateChangeReasonCode enum value
12074	ClusterStateChangeReasonCodeInstanceFleetTimeout = "INSTANCE_FLEET_TIMEOUT"
12075
12076	// ClusterStateChangeReasonCodeBootstrapFailure is a ClusterStateChangeReasonCode enum value
12077	ClusterStateChangeReasonCodeBootstrapFailure = "BOOTSTRAP_FAILURE"
12078
12079	// ClusterStateChangeReasonCodeUserRequest is a ClusterStateChangeReasonCode enum value
12080	ClusterStateChangeReasonCodeUserRequest = "USER_REQUEST"
12081
12082	// ClusterStateChangeReasonCodeStepFailure is a ClusterStateChangeReasonCode enum value
12083	ClusterStateChangeReasonCodeStepFailure = "STEP_FAILURE"
12084
12085	// ClusterStateChangeReasonCodeAllStepsCompleted is a ClusterStateChangeReasonCode enum value
12086	ClusterStateChangeReasonCodeAllStepsCompleted = "ALL_STEPS_COMPLETED"
12087)
12088
12089const (
12090	// ComparisonOperatorGreaterThanOrEqual is a ComparisonOperator enum value
12091	ComparisonOperatorGreaterThanOrEqual = "GREATER_THAN_OR_EQUAL"
12092
12093	// ComparisonOperatorGreaterThan is a ComparisonOperator enum value
12094	ComparisonOperatorGreaterThan = "GREATER_THAN"
12095
12096	// ComparisonOperatorLessThan is a ComparisonOperator enum value
12097	ComparisonOperatorLessThan = "LESS_THAN"
12098
12099	// ComparisonOperatorLessThanOrEqual is a ComparisonOperator enum value
12100	ComparisonOperatorLessThanOrEqual = "LESS_THAN_OR_EQUAL"
12101)
12102
12103const (
12104	// ComputeLimitsUnitTypeInstanceFleetUnits is a ComputeLimitsUnitType enum value
12105	ComputeLimitsUnitTypeInstanceFleetUnits = "InstanceFleetUnits"
12106
12107	// ComputeLimitsUnitTypeInstances is a ComputeLimitsUnitType enum value
12108	ComputeLimitsUnitTypeInstances = "Instances"
12109
12110	// ComputeLimitsUnitTypeVcpu is a ComputeLimitsUnitType enum value
12111	ComputeLimitsUnitTypeVcpu = "VCPU"
12112)
12113
12114const (
12115	// InstanceCollectionTypeInstanceFleet is a InstanceCollectionType enum value
12116	InstanceCollectionTypeInstanceFleet = "INSTANCE_FLEET"
12117
12118	// InstanceCollectionTypeInstanceGroup is a InstanceCollectionType enum value
12119	InstanceCollectionTypeInstanceGroup = "INSTANCE_GROUP"
12120)
12121
12122const (
12123	// InstanceFleetStateProvisioning is a InstanceFleetState enum value
12124	InstanceFleetStateProvisioning = "PROVISIONING"
12125
12126	// InstanceFleetStateBootstrapping is a InstanceFleetState enum value
12127	InstanceFleetStateBootstrapping = "BOOTSTRAPPING"
12128
12129	// InstanceFleetStateRunning is a InstanceFleetState enum value
12130	InstanceFleetStateRunning = "RUNNING"
12131
12132	// InstanceFleetStateResizing is a InstanceFleetState enum value
12133	InstanceFleetStateResizing = "RESIZING"
12134
12135	// InstanceFleetStateSuspended is a InstanceFleetState enum value
12136	InstanceFleetStateSuspended = "SUSPENDED"
12137
12138	// InstanceFleetStateTerminating is a InstanceFleetState enum value
12139	InstanceFleetStateTerminating = "TERMINATING"
12140
12141	// InstanceFleetStateTerminated is a InstanceFleetState enum value
12142	InstanceFleetStateTerminated = "TERMINATED"
12143)
12144
12145const (
12146	// InstanceFleetStateChangeReasonCodeInternalError is a InstanceFleetStateChangeReasonCode enum value
12147	InstanceFleetStateChangeReasonCodeInternalError = "INTERNAL_ERROR"
12148
12149	// InstanceFleetStateChangeReasonCodeValidationError is a InstanceFleetStateChangeReasonCode enum value
12150	InstanceFleetStateChangeReasonCodeValidationError = "VALIDATION_ERROR"
12151
12152	// InstanceFleetStateChangeReasonCodeInstanceFailure is a InstanceFleetStateChangeReasonCode enum value
12153	InstanceFleetStateChangeReasonCodeInstanceFailure = "INSTANCE_FAILURE"
12154
12155	// InstanceFleetStateChangeReasonCodeClusterTerminated is a InstanceFleetStateChangeReasonCode enum value
12156	InstanceFleetStateChangeReasonCodeClusterTerminated = "CLUSTER_TERMINATED"
12157)
12158
12159const (
12160	// InstanceFleetTypeMaster is a InstanceFleetType enum value
12161	InstanceFleetTypeMaster = "MASTER"
12162
12163	// InstanceFleetTypeCore is a InstanceFleetType enum value
12164	InstanceFleetTypeCore = "CORE"
12165
12166	// InstanceFleetTypeTask is a InstanceFleetType enum value
12167	InstanceFleetTypeTask = "TASK"
12168)
12169
12170const (
12171	// InstanceGroupStateProvisioning is a InstanceGroupState enum value
12172	InstanceGroupStateProvisioning = "PROVISIONING"
12173
12174	// InstanceGroupStateBootstrapping is a InstanceGroupState enum value
12175	InstanceGroupStateBootstrapping = "BOOTSTRAPPING"
12176
12177	// InstanceGroupStateRunning is a InstanceGroupState enum value
12178	InstanceGroupStateRunning = "RUNNING"
12179
12180	// InstanceGroupStateReconfiguring is a InstanceGroupState enum value
12181	InstanceGroupStateReconfiguring = "RECONFIGURING"
12182
12183	// InstanceGroupStateResizing is a InstanceGroupState enum value
12184	InstanceGroupStateResizing = "RESIZING"
12185
12186	// InstanceGroupStateSuspended is a InstanceGroupState enum value
12187	InstanceGroupStateSuspended = "SUSPENDED"
12188
12189	// InstanceGroupStateTerminating is a InstanceGroupState enum value
12190	InstanceGroupStateTerminating = "TERMINATING"
12191
12192	// InstanceGroupStateTerminated is a InstanceGroupState enum value
12193	InstanceGroupStateTerminated = "TERMINATED"
12194
12195	// InstanceGroupStateArrested is a InstanceGroupState enum value
12196	InstanceGroupStateArrested = "ARRESTED"
12197
12198	// InstanceGroupStateShuttingDown is a InstanceGroupState enum value
12199	InstanceGroupStateShuttingDown = "SHUTTING_DOWN"
12200
12201	// InstanceGroupStateEnded is a InstanceGroupState enum value
12202	InstanceGroupStateEnded = "ENDED"
12203)
12204
12205const (
12206	// InstanceGroupStateChangeReasonCodeInternalError is a InstanceGroupStateChangeReasonCode enum value
12207	InstanceGroupStateChangeReasonCodeInternalError = "INTERNAL_ERROR"
12208
12209	// InstanceGroupStateChangeReasonCodeValidationError is a InstanceGroupStateChangeReasonCode enum value
12210	InstanceGroupStateChangeReasonCodeValidationError = "VALIDATION_ERROR"
12211
12212	// InstanceGroupStateChangeReasonCodeInstanceFailure is a InstanceGroupStateChangeReasonCode enum value
12213	InstanceGroupStateChangeReasonCodeInstanceFailure = "INSTANCE_FAILURE"
12214
12215	// InstanceGroupStateChangeReasonCodeClusterTerminated is a InstanceGroupStateChangeReasonCode enum value
12216	InstanceGroupStateChangeReasonCodeClusterTerminated = "CLUSTER_TERMINATED"
12217)
12218
12219const (
12220	// InstanceGroupTypeMaster is a InstanceGroupType enum value
12221	InstanceGroupTypeMaster = "MASTER"
12222
12223	// InstanceGroupTypeCore is a InstanceGroupType enum value
12224	InstanceGroupTypeCore = "CORE"
12225
12226	// InstanceGroupTypeTask is a InstanceGroupType enum value
12227	InstanceGroupTypeTask = "TASK"
12228)
12229
12230const (
12231	// InstanceRoleTypeMaster is a InstanceRoleType enum value
12232	InstanceRoleTypeMaster = "MASTER"
12233
12234	// InstanceRoleTypeCore is a InstanceRoleType enum value
12235	InstanceRoleTypeCore = "CORE"
12236
12237	// InstanceRoleTypeTask is a InstanceRoleType enum value
12238	InstanceRoleTypeTask = "TASK"
12239)
12240
12241const (
12242	// InstanceStateAwaitingFulfillment is a InstanceState enum value
12243	InstanceStateAwaitingFulfillment = "AWAITING_FULFILLMENT"
12244
12245	// InstanceStateProvisioning is a InstanceState enum value
12246	InstanceStateProvisioning = "PROVISIONING"
12247
12248	// InstanceStateBootstrapping is a InstanceState enum value
12249	InstanceStateBootstrapping = "BOOTSTRAPPING"
12250
12251	// InstanceStateRunning is a InstanceState enum value
12252	InstanceStateRunning = "RUNNING"
12253
12254	// InstanceStateTerminated is a InstanceState enum value
12255	InstanceStateTerminated = "TERMINATED"
12256)
12257
12258const (
12259	// InstanceStateChangeReasonCodeInternalError is a InstanceStateChangeReasonCode enum value
12260	InstanceStateChangeReasonCodeInternalError = "INTERNAL_ERROR"
12261
12262	// InstanceStateChangeReasonCodeValidationError is a InstanceStateChangeReasonCode enum value
12263	InstanceStateChangeReasonCodeValidationError = "VALIDATION_ERROR"
12264
12265	// InstanceStateChangeReasonCodeInstanceFailure is a InstanceStateChangeReasonCode enum value
12266	InstanceStateChangeReasonCodeInstanceFailure = "INSTANCE_FAILURE"
12267
12268	// InstanceStateChangeReasonCodeBootstrapFailure is a InstanceStateChangeReasonCode enum value
12269	InstanceStateChangeReasonCodeBootstrapFailure = "BOOTSTRAP_FAILURE"
12270
12271	// InstanceStateChangeReasonCodeClusterTerminated is a InstanceStateChangeReasonCode enum value
12272	InstanceStateChangeReasonCodeClusterTerminated = "CLUSTER_TERMINATED"
12273)
12274
12275// The type of instance.
12276const (
12277	// JobFlowExecutionStateStarting is a JobFlowExecutionState enum value
12278	JobFlowExecutionStateStarting = "STARTING"
12279
12280	// JobFlowExecutionStateBootstrapping is a JobFlowExecutionState enum value
12281	JobFlowExecutionStateBootstrapping = "BOOTSTRAPPING"
12282
12283	// JobFlowExecutionStateRunning is a JobFlowExecutionState enum value
12284	JobFlowExecutionStateRunning = "RUNNING"
12285
12286	// JobFlowExecutionStateWaiting is a JobFlowExecutionState enum value
12287	JobFlowExecutionStateWaiting = "WAITING"
12288
12289	// JobFlowExecutionStateShuttingDown is a JobFlowExecutionState enum value
12290	JobFlowExecutionStateShuttingDown = "SHUTTING_DOWN"
12291
12292	// JobFlowExecutionStateTerminated is a JobFlowExecutionState enum value
12293	JobFlowExecutionStateTerminated = "TERMINATED"
12294
12295	// JobFlowExecutionStateCompleted is a JobFlowExecutionState enum value
12296	JobFlowExecutionStateCompleted = "COMPLETED"
12297
12298	// JobFlowExecutionStateFailed is a JobFlowExecutionState enum value
12299	JobFlowExecutionStateFailed = "FAILED"
12300)
12301
12302const (
12303	// MarketTypeOnDemand is a MarketType enum value
12304	MarketTypeOnDemand = "ON_DEMAND"
12305
12306	// MarketTypeSpot is a MarketType enum value
12307	MarketTypeSpot = "SPOT"
12308)
12309
12310const (
12311	// OnDemandProvisioningAllocationStrategyLowestPrice is a OnDemandProvisioningAllocationStrategy enum value
12312	OnDemandProvisioningAllocationStrategyLowestPrice = "lowest-price"
12313)
12314
12315const (
12316	// RepoUpgradeOnBootSecurity is a RepoUpgradeOnBoot enum value
12317	RepoUpgradeOnBootSecurity = "SECURITY"
12318
12319	// RepoUpgradeOnBootNone is a RepoUpgradeOnBoot enum value
12320	RepoUpgradeOnBootNone = "NONE"
12321)
12322
12323const (
12324	// ScaleDownBehaviorTerminateAtInstanceHour is a ScaleDownBehavior enum value
12325	ScaleDownBehaviorTerminateAtInstanceHour = "TERMINATE_AT_INSTANCE_HOUR"
12326
12327	// ScaleDownBehaviorTerminateAtTaskCompletion is a ScaleDownBehavior enum value
12328	ScaleDownBehaviorTerminateAtTaskCompletion = "TERMINATE_AT_TASK_COMPLETION"
12329)
12330
12331const (
12332	// SpotProvisioningAllocationStrategyCapacityOptimized is a SpotProvisioningAllocationStrategy enum value
12333	SpotProvisioningAllocationStrategyCapacityOptimized = "capacity-optimized"
12334)
12335
12336const (
12337	// SpotProvisioningTimeoutActionSwitchToOnDemand is a SpotProvisioningTimeoutAction enum value
12338	SpotProvisioningTimeoutActionSwitchToOnDemand = "SWITCH_TO_ON_DEMAND"
12339
12340	// SpotProvisioningTimeoutActionTerminateCluster is a SpotProvisioningTimeoutAction enum value
12341	SpotProvisioningTimeoutActionTerminateCluster = "TERMINATE_CLUSTER"
12342)
12343
12344const (
12345	// StatisticSampleCount is a Statistic enum value
12346	StatisticSampleCount = "SAMPLE_COUNT"
12347
12348	// StatisticAverage is a Statistic enum value
12349	StatisticAverage = "AVERAGE"
12350
12351	// StatisticSum is a Statistic enum value
12352	StatisticSum = "SUM"
12353
12354	// StatisticMinimum is a Statistic enum value
12355	StatisticMinimum = "MINIMUM"
12356
12357	// StatisticMaximum is a Statistic enum value
12358	StatisticMaximum = "MAXIMUM"
12359)
12360
12361const (
12362	// StepCancellationOptionSendInterrupt is a StepCancellationOption enum value
12363	StepCancellationOptionSendInterrupt = "SEND_INTERRUPT"
12364
12365	// StepCancellationOptionTerminateProcess is a StepCancellationOption enum value
12366	StepCancellationOptionTerminateProcess = "TERMINATE_PROCESS"
12367)
12368
12369const (
12370	// StepExecutionStatePending is a StepExecutionState enum value
12371	StepExecutionStatePending = "PENDING"
12372
12373	// StepExecutionStateRunning is a StepExecutionState enum value
12374	StepExecutionStateRunning = "RUNNING"
12375
12376	// StepExecutionStateContinue is a StepExecutionState enum value
12377	StepExecutionStateContinue = "CONTINUE"
12378
12379	// StepExecutionStateCompleted is a StepExecutionState enum value
12380	StepExecutionStateCompleted = "COMPLETED"
12381
12382	// StepExecutionStateCancelled is a StepExecutionState enum value
12383	StepExecutionStateCancelled = "CANCELLED"
12384
12385	// StepExecutionStateFailed is a StepExecutionState enum value
12386	StepExecutionStateFailed = "FAILED"
12387
12388	// StepExecutionStateInterrupted is a StepExecutionState enum value
12389	StepExecutionStateInterrupted = "INTERRUPTED"
12390)
12391
12392const (
12393	// StepStatePending is a StepState enum value
12394	StepStatePending = "PENDING"
12395
12396	// StepStateCancelPending is a StepState enum value
12397	StepStateCancelPending = "CANCEL_PENDING"
12398
12399	// StepStateRunning is a StepState enum value
12400	StepStateRunning = "RUNNING"
12401
12402	// StepStateCompleted is a StepState enum value
12403	StepStateCompleted = "COMPLETED"
12404
12405	// StepStateCancelled is a StepState enum value
12406	StepStateCancelled = "CANCELLED"
12407
12408	// StepStateFailed is a StepState enum value
12409	StepStateFailed = "FAILED"
12410
12411	// StepStateInterrupted is a StepState enum value
12412	StepStateInterrupted = "INTERRUPTED"
12413)
12414
12415const (
12416	// StepStateChangeReasonCodeNone is a StepStateChangeReasonCode enum value
12417	StepStateChangeReasonCodeNone = "NONE"
12418)
12419
12420const (
12421	// UnitNone is a Unit enum value
12422	UnitNone = "NONE"
12423
12424	// UnitSeconds is a Unit enum value
12425	UnitSeconds = "SECONDS"
12426
12427	// UnitMicroSeconds is a Unit enum value
12428	UnitMicroSeconds = "MICRO_SECONDS"
12429
12430	// UnitMilliSeconds is a Unit enum value
12431	UnitMilliSeconds = "MILLI_SECONDS"
12432
12433	// UnitBytes is a Unit enum value
12434	UnitBytes = "BYTES"
12435
12436	// UnitKiloBytes is a Unit enum value
12437	UnitKiloBytes = "KILO_BYTES"
12438
12439	// UnitMegaBytes is a Unit enum value
12440	UnitMegaBytes = "MEGA_BYTES"
12441
12442	// UnitGigaBytes is a Unit enum value
12443	UnitGigaBytes = "GIGA_BYTES"
12444
12445	// UnitTeraBytes is a Unit enum value
12446	UnitTeraBytes = "TERA_BYTES"
12447
12448	// UnitBits is a Unit enum value
12449	UnitBits = "BITS"
12450
12451	// UnitKiloBits is a Unit enum value
12452	UnitKiloBits = "KILO_BITS"
12453
12454	// UnitMegaBits is a Unit enum value
12455	UnitMegaBits = "MEGA_BITS"
12456
12457	// UnitGigaBits is a Unit enum value
12458	UnitGigaBits = "GIGA_BITS"
12459
12460	// UnitTeraBits is a Unit enum value
12461	UnitTeraBits = "TERA_BITS"
12462
12463	// UnitPercent is a Unit enum value
12464	UnitPercent = "PERCENT"
12465
12466	// UnitCount is a Unit enum value
12467	UnitCount = "COUNT"
12468
12469	// UnitBytesPerSecond is a Unit enum value
12470	UnitBytesPerSecond = "BYTES_PER_SECOND"
12471
12472	// UnitKiloBytesPerSecond is a Unit enum value
12473	UnitKiloBytesPerSecond = "KILO_BYTES_PER_SECOND"
12474
12475	// UnitMegaBytesPerSecond is a Unit enum value
12476	UnitMegaBytesPerSecond = "MEGA_BYTES_PER_SECOND"
12477
12478	// UnitGigaBytesPerSecond is a Unit enum value
12479	UnitGigaBytesPerSecond = "GIGA_BYTES_PER_SECOND"
12480
12481	// UnitTeraBytesPerSecond is a Unit enum value
12482	UnitTeraBytesPerSecond = "TERA_BYTES_PER_SECOND"
12483
12484	// UnitBitsPerSecond is a Unit enum value
12485	UnitBitsPerSecond = "BITS_PER_SECOND"
12486
12487	// UnitKiloBitsPerSecond is a Unit enum value
12488	UnitKiloBitsPerSecond = "KILO_BITS_PER_SECOND"
12489
12490	// UnitMegaBitsPerSecond is a Unit enum value
12491	UnitMegaBitsPerSecond = "MEGA_BITS_PER_SECOND"
12492
12493	// UnitGigaBitsPerSecond is a Unit enum value
12494	UnitGigaBitsPerSecond = "GIGA_BITS_PER_SECOND"
12495
12496	// UnitTeraBitsPerSecond is a Unit enum value
12497	UnitTeraBitsPerSecond = "TERA_BITS_PER_SECOND"
12498
12499	// UnitCountPerSecond is a Unit enum value
12500	UnitCountPerSecond = "COUNT_PER_SECOND"
12501)
12502